Author: manolo
Date: 2012-12-15 06:19:42 -0800 (Sat, 15 Dec 2012)
New Revision: 9755
Log:
Mac OS: fixed [FLView keyDown:] for OS 10.3

Modified:
   branches/branch-1.3/src/Fl_cocoa.mm

Modified: branches/branch-1.3/src/Fl_cocoa.mm
===================================================================
--- branches/branch-1.3/src/Fl_cocoa.mm 2012-12-14 23:36:59 UTC (rev 9754)
+++ branches/branch-1.3/src/Fl_cocoa.mm 2012-12-15 14:19:42 UTC (rev 9755)
@@ -897,6 +897,7 @@
 // this subclass is needed under OS X <= 10.5 but not under >= 10.6 where the 
base class is enough
 {
 }
+- (void)interpretKeyEvents:(NSArray *)eventArray;
 @end
 @implementation FLTextView
 - (void)insertText:(id)aString
@@ -907,6 +908,24 @@
 {
   [[[NSApp keyWindow] contentView] doCommandBySelector:aSelector];
 }
+- (void)interpretKeyEvents:(NSArray *)eventArray
+{
+  if (Fl::e_keysym == FL_BackSpace || Fl::e_keysym == FL_KP_Enter ||
+   Fl::e_keysym == FL_Enter || Fl::e_keysym == FL_Escape || Fl::e_keysym == 
FL_Tab ) {
+    NSEvent *theEvent = (NSEvent*)[eventArray objectAtIndex:0];
+    // interpretKeyEvents doesn't output anything for these 5 keys under 10.5 
or below
+    NSString *s = [theEvent characters];
+    if ([s length] >= 1) {
+      static char utf[2] = {0, 0};
+      utf[0] = [s UTF8String][0];
+      Fl::e_text = utf;
+      Fl::e_length = 1;
+      }
+    Fl_Window *window = [(FLWindow*)[theEvent window] getFl_Window];
+    Fl::handle(FL_KEYBOARD, window);
+  }
+  else [super interpretKeyEvents:eventArray];
+}
 @end
 
 /*
@@ -1745,20 +1764,11 @@
 
   // First let's process the raw key press
   cocoaKeyboardHandler(theEvent);
-  
-  if (fl_mac_os_version < 100600 && (Fl::e_keysym == FL_BackSpace ||
-      Fl::e_keysym == FL_Enter || Fl::e_keysym == FL_Escape || Fl::e_keysym == 
FL_Tab) ) {
-    // interpretKeyEvents doesn't output anything for these 4 keys under 10.5 
or below
-    NSString *s = [theEvent characters];
-    if ([s length] >= 1) [FLView prepareEtext:s];
-    Fl::handle(FL_KEYBOARD, window);
-  }
-  else {
-    NSText *edit = [[theEvent window]  fieldEditor:YES forObject:nil];
-    in_key_event = YES;
-    [edit interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
-    in_key_event = NO;
-  }
+
+  NSText *edit = [[theEvent window]  fieldEditor:YES forObject:nil];
+  in_key_event = YES;
+  [edit interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
+  in_key_event = NO;
   fl_unlock_function();
 }
 - (void)keyUp:(NSEvent *)theEvent {

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to