]> git.saurik.com Git - wxWidgets.git/commitdiff
avoiding crash for pure modifier events
authorStefan Csomor <csomor@advancedconcepts.ch>
Thu, 25 Sep 2008 06:37:09 +0000 (06:37 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Thu, 25 Sep 2008 06:37:09 +0000 (06:37 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/cocoa/window.mm

index 561270d96a63feb0cc1af0f32e97565bdc78274b..cc9a21066a621143d78e0f20cebe011ae4d09f27 100644 (file)
@@ -112,6 +112,7 @@ long wxOSXTranslateCocoaKey(unsigned short code, int unichar )
 void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent )
 {
     UInt32 modifiers = [nsEvent modifierFlags] ;
+    int eventType = [nsEvent type];
 
     wxevent.m_shiftDown = modifiers & NSShiftKeyMask;
     wxevent.m_controlDown = modifiers & NSControlKeyMask;
@@ -119,11 +120,14 @@ void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent )
     wxevent.m_metaDown = modifiers & NSCommandKeyMask;
 
     wxString chars;
-    NSString* nschars = [nsEvent characters];
-    if ( nschars )
+    if ( eventType != NSFlagsChanged )
     {
-        wxCFStringRef cfchars((CFStringRef)[nschars retain]);
-        chars = cfchars.AsString();
+        NSString* nschars = [nsEvent characters];
+        if ( nschars )
+        {
+            wxCFStringRef cfchars((CFStringRef)[nschars retain]);
+            chars = cfchars.AsString();
+        }
     }
     
     int unichar = chars.Length() > 0 ? chars[0] : 0;
@@ -136,7 +140,6 @@ void SetupKeyEvent( wxKeyEvent &wxevent , NSEvent * nsEvent )
     wxevent.m_rawFlags = modifiers;
     
     wxevent.SetTimestamp( [nsEvent timestamp] * 1000.0 ) ;
-    int eventType = [nsEvent type];
     switch (eventType)
     {
         case NSKeyDown :