]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/evtloop.mm
Fix wrong tab order in wxAuiNotebook after dragging.
[wxWidgets.git] / src / osx / cocoa / evtloop.mm
index 3a8568b33dce0ab4a0442b546093cc6dd33fcbb0..135f936de528e28f269bde091b4aecbbfeeb0846 100644 (file)
@@ -109,6 +109,7 @@ wxGUIEventLoop::wxGUIEventLoop()
     m_dummyWindow = nil;
     m_modalNestedLevel = 0;
     m_modalWindow = NULL;
+    m_osxLowLevelWakeUp = false;
 }
 
 wxGUIEventLoop::~wxGUIEventLoop()
@@ -143,6 +144,7 @@ bool wxGUIEventLoop::Pending() const
 #endif
 }
 
+
 bool wxGUIEventLoop::Dispatch()
 {
     if ( !wxTheApp )
@@ -254,15 +256,28 @@ void wxGUIEventLoop::DoStop()
 
 void wxGUIEventLoop::WakeUp()
 {
-    wxMacAutoreleasePool autoreleasepool;
-    NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined 
+    // NSEvent* cevent = [NSApp currentEvent];
+    // NSString* mode = [[NSRunLoop mainRunLoop] currentMode];
+    
+    // when already in a mouse event handler, don't add higher level event
+    // if ( cevent != nil && [cevent type] <= NSMouseMoved && )
+    if ( m_osxLowLevelWakeUp /* [NSEventTrackingRunLoopMode isEqualToString:mode] */ )
+    {
+        // NSLog(@"event for wakeup %@ in mode %@",cevent,mode);
+        wxCFEventLoop::WakeUp();        
+    }
+    else
+    {
+        wxMacAutoreleasePool autoreleasepool;
+        NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined 
                                         location:NSMakePoint(0.0, 0.0) 
                                    modifierFlags:0 
                                        timestamp:0 
                                     windowNumber:0 
                                          context:nil
                                          subtype:0 data1:0 data2:0]; 
-    [NSApp postEvent:event atStart:FALSE];
+        [NSApp postEvent:event atStart:FALSE];
+    }
 }
 
 CFRunLoopRef wxGUIEventLoop::CFGetCurrentRunLoop() const
@@ -311,7 +326,7 @@ void wxModalEventLoop::DoRun()
 
 void wxModalEventLoop::DoStop()
 {
-    [NSApp stopModal];
+    [NSApp abortModal];
 }
 
 void wxGUIEventLoop::BeginModalSession( wxWindow* modalWindow )
@@ -445,5 +460,4 @@ wxWindowDisabler::~wxWindowDisabler()
     }
     
     delete m_winDisabled;
-}
-
+}
\ No newline at end of file