corrected double click events: wxMGL will now synthetize

second single click, so that events sequence is single-single-double as wxWindows
expects rather than single-double as MGL generates


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2002-02-15 00:55:27 +00:00
parent be90c029fd
commit 8f5e92dbe5

View File

@ -171,23 +171,40 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e)
event.m_leftDown = e->modifiers & EVT_LEFTBUT;
event.m_middleDown = e->modifiers & EVT_MIDDLEBUT;
event.m_rightDown = e->modifiers & EVT_RIGHTBUT;
switch (e->what)
{
case EVT_MOUSEDOWN:
if ( e->message & EVT_LEFTBMASK )
type = (e->message & EVT_DBLCLICK) ?
wxEVT_LEFT_DCLICK : wxEVT_LEFT_DOWN;
else if ( e->message & EVT_MIDDLEBMASK )
type = (e->message & EVT_DBLCLICK) ?
wxEVT_MIDDLE_DCLICK : wxEVT_MIDDLE_DOWN;
else if ( e->message & EVT_RIGHTBMASK )
type = (e->message & EVT_DBLCLICK) ?
wxEVT_RIGHT_DCLICK : wxEVT_RIGHT_DOWN;
// Change focus if the user clicks outside focused window:
if ( win->AcceptsFocus() && wxWindow::FindFocus() != win )
win->SetFocus();
if ( e->message & EVT_LEFTBMASK )
type = wxEVT_LEFT_DOWN;
else if ( e->message & EVT_MIDDLEBMASK )
type = wxEVT_MIDDLE_DOWN;
else if ( e->message & EVT_RIGHTBMASK )
type = wxEVT_RIGHT_DOWN;
if ( e->message & EVT_DBLCLICK )
{
// MGL doesn't generate two subsequent single clicks prior
// to a double click, but rather only fires one single click
// followed by one double click. wxWindows expects two single
// clicks, so we have to emulate the second one.
event.SetEventType(type);
win->GetEventHandler()->ProcessEvent(event);
// And change event type for the real double click event
// that will be generated later in this function:
if ( e->message & EVT_LEFTBMASK )
type = wxEVT_LEFT_DCLICK;
else if ( e->message & EVT_MIDDLEBMASK )
type = wxEVT_MIDDLE_DCLICK;
else if ( e->message & EVT_RIGHTBMASK )
type = wxEVT_RIGHT_DCLICK;
}
break;
case EVT_MOUSEUP: