From 50d4763f1710f6e45ac6af7112d1ce9effe93bc4 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 25 Feb 2012 18:30:04 +0000 Subject: [PATCH] adding a app-defined event seems to quit inner eventloops like eg the popup of the combobox, therefore use the cf api in this case git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/cocoa/evtloop.mm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/osx/cocoa/evtloop.mm b/src/osx/cocoa/evtloop.mm index 61de0c4ba4..0228697ebd 100644 --- a/src/osx/cocoa/evtloop.mm +++ b/src/osx/cocoa/evtloop.mm @@ -143,6 +143,7 @@ bool wxGUIEventLoop::Pending() const #endif } + bool wxGUIEventLoop::Dispatch() { if ( !wxTheApp ) @@ -254,15 +255,25 @@ void wxGUIEventLoop::DoStop() void wxGUIEventLoop::WakeUp() { - wxMacAutoreleasePool autoreleasepool; - NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined + NSEvent* cevent = [NSApp currentEvent]; + + // when already in a mouse event handler, don't add higher level event + if ( cevent != nil && [cevent type] < NSKeyDown ) + { + 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 -- 2.45.2