1. changed doubleclick events sequence to 'down,up,double,up' (turned out to be MGL's native one)
2. wxWindow::GetPosition() returns value relative to parent's client area origin now git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
a014c34488
commit
ea98f686a6
@ -185,35 +185,8 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e)
|
||||
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 synthetize the second one. First
|
||||
// generate wxEVT_?_DOWN:
|
||||
event.SetEventType(type);
|
||||
win->GetEventHandler()->ProcessEvent(event);
|
||||
|
||||
// ...followed by wxEVT_?_UP:
|
||||
if ( e->message & EVT_LEFTBMASK )
|
||||
type = wxEVT_LEFT_UP;
|
||||
else if ( e->message & EVT_MIDDLEBMASK )
|
||||
type = wxEVT_MIDDLE_UP;
|
||||
else if ( e->message & EVT_RIGHTBMASK )
|
||||
type = wxEVT_RIGHT_UP;
|
||||
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 )
|
||||
@ -221,6 +194,15 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e)
|
||||
else if ( e->message & EVT_RIGHTBMASK )
|
||||
type = wxEVT_RIGHT_DCLICK;
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@ -933,7 +915,7 @@ void wxWindowMGL::DragAcceptFiles(bool accept)
|
||||
// Get total size
|
||||
void wxWindowMGL::DoGetSize(int *x, int *y) const
|
||||
{
|
||||
wxASSERT_MSG( m_wnd, wxT("invalid window") )
|
||||
wxASSERT_MSG( m_wnd, wxT("invalid window") );
|
||||
|
||||
if (x) *x = m_wnd->width;
|
||||
if (y) *y = m_wnd->height;
|
||||
@ -941,10 +923,13 @@ void wxWindowMGL::DoGetSize(int *x, int *y) const
|
||||
|
||||
void wxWindowMGL::DoGetPosition(int *x, int *y) const
|
||||
{
|
||||
wxASSERT_MSG( m_wnd, wxT("invalid window") )
|
||||
wxASSERT_MSG( m_wnd, wxT("invalid window") );
|
||||
|
||||
if (x) *x = m_wnd->x;
|
||||
if (y) *y = m_wnd->y;
|
||||
int pX = 0, pY = 0;
|
||||
AdjustForParentClientOrigin(pX, pY, 0);
|
||||
|
||||
if (x) *x = m_wnd->x - pX;
|
||||
if (y) *y = m_wnd->y - pY;
|
||||
}
|
||||
|
||||
void wxWindowMGL::DoScreenToClient(int *x, int *y) const
|
||||
|
Loading…
Reference in New Issue
Block a user