]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/toplevel.cpp
only use tool window style for floating windows, no modal dialog class (layer problems)
[wxWidgets.git] / src / mac / carbon / toplevel.cpp
index 8db3f7e902143b929de3273c07e21413c9e0cef5..a9acd84e2cd0acc0de9874549c89bf909319e4bc 100644 (file)
 // ----------------------------------------------------------------------------
 
 // 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
@@ -233,7 +241,7 @@ void  wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
     WindowClass wclass = 0;
     WindowAttributes attr = kWindowNoAttributes ;
     
-    if ( HasFlag( wxFRAME_TOOL_WINDOW) || 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) )
@@ -254,7 +262,7 @@ void  wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
     }
     else
     {
-        wclass = kModalWindowClass ;
+        wclass = kDocumentWindowClass ;
     }
     
     if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) )
@@ -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;