]> git.saurik.com Git - wxWidgets.git/commitdiff
workaround for incorrect find control results because of our non-embedding group...
authorStefan Csomor <csomor@advancedconcepts.ch>
Thu, 29 Apr 2004 04:26:17 +0000 (04:26 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Thu, 29 Apr 2004 04:26:17 +0000 (04:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/toplevel.cpp

index c7f7fd7c0fa304a1ee6514cf61c88b5bc39ef21a..5a126f299b7bf4d3ec3fe06ba81f71aa8335091a 100644 (file)
@@ -372,12 +372,13 @@ ControlRef wxMacFindSubControl( Point location , ControlRef superControl , Contr
 ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart )
 {
 #if TARGET_API_MAC_OSX
-    return FindControlUnderMouse( location , window , outPart ) ;
-#else
+    if ( UMAGetSystemVersion() >= 1030 )
+        return FindControlUnderMouse( location , window , outPart ) ;
+#endif
     ControlRef rootControl = NULL ;
     verify_noerr( GetRootControl( window , &rootControl ) ) ;
     return wxMacFindSubControl( location , rootControl , outPart ) ;
-#endif
+
 }
 pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
 {
@@ -496,6 +497,22 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev
     #endif // wxUSE_TOOLTIPS                
         if ( currentMouseWindow->GetEventHandler()->ProcessEvent(wxevent) )
             result = noErr;
+        else
+        {
+            ControlPartCode dummyPart ;
+            // if built-in find control is finding the wrong control (ie static box instead of overlaid
+            // button, we cannot let the standard handler do its job, but must handle manually
+
+            if ( ( cEvent.GetKind() == kEventMouseDown ) && 
+                (FindControlUnderMouse(windowMouseLocation , window , &dummyPart) != 
+                wxMacFindControlUnderMouse( windowMouseLocation , window , &dummyPart ) ) )
+            {
+                EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
+                HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , windowMouseLocation ,
+                    modifiers , (ControlActionUPP ) -1 ) ;
+                result = noErr ;
+            }
+        }
         if ( cEvent.GetKind() == kEventMouseUp && wxTheApp->s_captureWindow )
         {
             wxTheApp->s_captureWindow = NULL ;