workaround for incorrect find control results because of our non-embedding group boxing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -372,12 +372,13 @@ ControlRef wxMacFindSubControl( Point location , ControlRef superControl , Contr
|
|||||||
ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart )
|
ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart )
|
||||||
{
|
{
|
||||||
#if TARGET_API_MAC_OSX
|
#if TARGET_API_MAC_OSX
|
||||||
|
if ( UMAGetSystemVersion() >= 1030 )
|
||||||
return FindControlUnderMouse( location , window , outPart ) ;
|
return FindControlUnderMouse( location , window , outPart ) ;
|
||||||
#else
|
#endif
|
||||||
ControlRef rootControl = NULL ;
|
ControlRef rootControl = NULL ;
|
||||||
verify_noerr( GetRootControl( window , &rootControl ) ) ;
|
verify_noerr( GetRootControl( window , &rootControl ) ) ;
|
||||||
return wxMacFindSubControl( location , rootControl , outPart ) ;
|
return wxMacFindSubControl( location , rootControl , outPart ) ;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
|
pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
|
||||||
{
|
{
|
||||||
@@ -496,6 +497,22 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev
|
|||||||
#endif // wxUSE_TOOLTIPS
|
#endif // wxUSE_TOOLTIPS
|
||||||
if ( currentMouseWindow->GetEventHandler()->ProcessEvent(wxevent) )
|
if ( currentMouseWindow->GetEventHandler()->ProcessEvent(wxevent) )
|
||||||
result = noErr;
|
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 )
|
if ( cEvent.GetKind() == kEventMouseUp && wxTheApp->s_captureWindow )
|
||||||
{
|
{
|
||||||
wxTheApp->s_captureWindow = NULL ;
|
wxTheApp->s_captureWindow = NULL ;
|
||||||
|
Reference in New Issue
Block a user