X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5706de1cf469f1ca53be7c402365d47e12a616cf..65334b43feca0ed670f67de59266b575b2b86684:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index 34db5c2604..d79e546eb8 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -111,7 +111,6 @@ static pascal OSStatus TextInputEventHandler( EventHandlerCallRef handler , Even UInt32 keyCode ; UInt32 modifiers ; Point point ; - UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ; EventRef rawEvent ; @@ -123,16 +122,32 @@ static pascal OSStatus TextInputEventHandler( EventHandlerCallRef handler , Even GetEventParameter( rawEvent, kEventParamMouseLocation, typeQDPoint, NULL, sizeof( Point ), NULL, &point ); - UInt32 message = (keyCode << 8) + charCode; - switch ( GetEventKind( event ) ) { case kEventTextInputUnicodeForKeyEvent : + // this is only called when no default handler has jumped in, eg a wxControl on a floater window does not + // get its own kEventTextInputUnicodeForKeyEvent, so we route back the + wxControl* control = wxDynamicCast( focus , wxControl ) ; + if ( control ) + { + ControlHandle macControl = (ControlHandle) control->GetMacControl() ; + if ( macControl ) + { + ::HandleControlKey( macControl , keyCode , charCode , modifiers ) ; + result = noErr ; + } + } + /* + // this may lead to double events sent to a window in case all handlers have skipped the key down event + UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ; + UInt32 message = (keyCode << 8) + charCode; + if ( (focus != NULL) && wxTheApp->MacSendKeyDownEvent( focus , message , modifiers , when , point.h , point.v ) ) { result = noErr ; } + */ break ; } @@ -844,7 +859,7 @@ void wxTopLevelWindowMac::MacFireMouseEvent( if ( kind == mouseDown ) { - if ( timestamp - gs_lastWhen <= GetDblTime() ) + if ( timestamp - gs_lastWhen <= (long) GetDblTime() ) { if ( abs( localwhere.h - gs_lastWhere.h ) < 3 && abs( localwhere.v - gs_lastWhere.v ) < 3 ) {