X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6a17ca35f7c65522cfd7e918653fe0c908417f2a..f2af4afb8269a5ca583278a7d7139bb8f1321535:/src/mac/toplevel.cpp diff --git a/src/mac/toplevel.cpp b/src/mac/toplevel.cpp index 12f077a7cd..06ed406854 100644 --- a/src/mac/toplevel.cpp +++ b/src/mac/toplevel.cpp @@ -52,7 +52,15 @@ // ---------------------------------------------------------------------------- // list of all frames and modeless dialogs -wxWindowList wxModelessWindows; +wxWindowList wxModelessWindows; + +// double click testing +static Point gs_lastWhere; +static long gs_lastWhen = 0; + +// cursor stuff +extern int wxBusyCursorCount; + // ============================================================================ // wxTopLevelWindowMac implementation @@ -179,7 +187,7 @@ void wxTopLevelWindowMac::Iconize(bool iconize) bool wxTopLevelWindowMac::IsIconized() const { - // mac dialogs cannot be iconized + // mac dialogs cannot be iconized return FALSE; } @@ -233,7 +241,7 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, WindowClass wclass = 0; WindowAttributes attr = kWindowNoAttributes ; - if ( HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT) ) + if ( HasFlag( wxFRAME_TOOL_WINDOW) || HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT) ) { wclass = kFloatingWindowClass ; if ( HasFlag(wxTINY_CAPTION_VERT) ) @@ -245,7 +253,7 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, { if ( HasFlag( wxDIALOG_MODAL ) ) { - wclass = kMovableModalWindowClass ; + wclass = kDocumentWindowClass ; // kMovableModalWindowClass ; } else { @@ -347,10 +355,6 @@ void wxTopLevelWindowMac::Lower() ::SendBehind( (WindowRef)m_macWindow , NULL ) ; } -Point lastWhere ; -long lastWhen = 0 ; -extern int wxBusyCursorCount ; - void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) { EventRecord *ev = (EventRecord*) evr ; @@ -397,22 +401,25 @@ void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) if ( ev->what == mouseDown ) { - if ( ev->when - lastWhen <= GetDblTime() ) + if ( ev->when - gs_lastWhen <= GetDblTime() ) { - if ( abs( localwhere.h - lastWhere.h ) < 3 || abs( localwhere.v - lastWhere.v ) < 3 ) + if ( abs( localwhere.h - gs_lastWhere.h ) < 3 && abs( localwhere.v - gs_lastWhere.v ) < 3 ) { + // This is not right if the second mouse down + // event occured in a differen window. We + // correct this in MacDispatchMouseEvent. if ( controlDown ) event.SetEventType(wxEVT_RIGHT_DCLICK ) ; else event.SetEventType(wxEVT_LEFT_DCLICK ) ; } - lastWhen = 0 ; + gs_lastWhen = 0 ; } else { - lastWhen = ev->when ; + gs_lastWhen = ev->when ; } - lastWhere = localwhere ; + gs_lastWhere = localwhere ; } event.m_x = localwhere.h; @@ -420,13 +427,6 @@ void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) event.m_x += m_x; event.m_y += m_y; -/* - wxPoint origin = GetClientAreaOrigin() ; - - event.m_x += origin.x ; - event.m_y += origin.y ; -*/ - event.m_timeStamp = ev->when; event.SetEventObject(this); if ( wxTheApp->s_captureWindow ) @@ -436,7 +436,9 @@ void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr ) wxTheApp->s_captureWindow->ScreenToClient( &x , &y ) ; event.m_x = x ; event.m_y = y ; + event.SetEventObject( wxTheApp->s_captureWindow ) ; wxTheApp->s_captureWindow->GetEventHandler()->ProcessEvent( event ) ; + if ( ev->what == mouseUp ) { wxTheApp->s_captureWindow = NULL ;