Author: matt
Date: 2009-04-13 00:32:01 -0700 (Mon, 13 Apr 2009)
New Revision: 6758
Log:
Little rearrangement for readibility

Modified:
   branches/branch-1.3/CHANGES
   branches/branch-1.3/src/Fl_File_Input.cxx
   branches/branch-1.3/src/Fl_Input.cxx
   branches/branch-1.3/src/Fl_mac.cxx

Modified: branches/branch-1.3/CHANGES
===================================================================
--- branches/branch-1.3/CHANGES 2009-04-12 20:00:45 UTC (rev 6757)
+++ branches/branch-1.3/CHANGES 2009-04-13 07:32:01 UTC (rev 6758)
@@ -1,5 +1,7 @@
 CHANGES IN FLTK 1.3.0
 
+       - Added OS X cursor control to Fl_Input (STR #2169)
+       - Fixed control key keycodes with modifiers on OS X
        - Avoiding crashes for recursive common dialogs (this does not 
          fix the issue at hand yet) (STR #1986, 2150)
        - Added menu shortcut alignment for OS X

Modified: branches/branch-1.3/src/Fl_File_Input.cxx
===================================================================
--- branches/branch-1.3/src/Fl_File_Input.cxx   2009-04-12 20:00:45 UTC (rev 
6757)
+++ branches/branch-1.3/src/Fl_File_Input.cxx   2009-04-13 07:32:01 UTC (rev 
6758)
@@ -197,8 +197,10 @@
     case FL_MOVE :
     case FL_ENTER :
       if (active_r()) {
-       if (Fl::event_y() < (y() + DIR_HEIGHT)) 
window()->cursor(FL_CURSOR_DEFAULT);
-       else window()->cursor(FL_CURSOR_INSERT);
+       if (Fl::event_y() < (y() + DIR_HEIGHT)) 
+          window()->cursor(FL_CURSOR_DEFAULT);
+       else 
+          window()->cursor(FL_CURSOR_INSERT);
       }
 
       return 1;

Modified: branches/branch-1.3/src/Fl_Input.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Input.cxx        2009-04-12 20:00:45 UTC (rev 
6757)
+++ branches/branch-1.3/src/Fl_Input.cxx        2009-04-13 07:32:01 UTC (rev 
6758)
@@ -150,21 +150,57 @@
     else ascii = ctrl('D');
     break;    
   case FL_Left:
-    ascii = ctrl('B'); break;
+    ascii = ctrl('B'); 
+#ifdef __APPLE__
+    if (Fl::event_state() & (FL_META|FL_CTRL) ) ascii = ctrl('A');
+    // FIXME backward one word is missing (Alt-Left)
+#endif // __APPLE__
+    break;
   case FL_Right:
-    ascii = ctrl('F'); break;
+    ascii = ctrl('F'); 
+#ifdef __APPLE__
+    if (Fl::event_state() & (FL_META|FL_CTRL) ) ascii = ctrl('E');
+    // FIXME advance one word is missing (Alt-Right)
+#endif // __APPLE__
+    break;
   case FL_Page_Up:
     fl_font(textfont(),textsize()); //ensure current font is set to ours
     repeat_num=h()/fl_height(); // number of lines to scroll
     if (!repeat_num) repeat_num=1;
   case FL_Up:
-    ascii = ctrl('P'); break;
+    ascii = ctrl('P'); 
+#ifdef __APPLE__
+    if (Fl::event_state() & (FL_META) ) {
+      shift_position(0);
+      return 1;
+    }
+    if (Fl::event_state() & (FL_ALT) ) {
+      if (line_start(position())==position() && position()>0)
+        return shift_position(line_start(position()-1)) + NORMAL_INPUT_MOVE;
+      else
+        return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
+    }
+#endif // __APPLE__
+    break;
   case FL_Page_Down:
     fl_font(textfont(),textsize());
     repeat_num=h()/fl_height();
     if (!repeat_num) repeat_num=1;
   case FL_Down:
-    ascii = ctrl('N'); break;
+    ascii = ctrl('N'); 
+#ifdef __APPLE__
+    if (Fl::event_state() & (FL_META) ) {
+      shift_position(size());
+      return 1;
+    }
+    if (Fl::event_state() & (FL_ALT) ) {
+      if (line_end(position())==position() && position()<size())
+        return shift_position(line_end(position()+1)) + NORMAL_INPUT_MOVE;
+      else
+        return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
+    }
+#endif // __APPLE__
+    break;
   case FL_Home:
     if (Fl::event_state() & FL_CTRL) {
       shift_position(0);
@@ -212,13 +248,13 @@
 
   int i;
   switch (ascii) {
-  case ctrl('A'):
+  case ctrl('A'): // go to the beginning of the current line
     return shift_position(line_start(position())) + NORMAL_INPUT_MOVE;
-  case ctrl('B'):
+  case ctrl('B'): // go one character backward
     return shift_position(position()-1) + NORMAL_INPUT_MOVE;
   case ctrl('C'): // copy
     return copy(1);
-  case ctrl('D'):
+  case ctrl('D'): // cut the next character
   case ctrl('?'):
     if (readonly()) {
       fl_beep();
@@ -226,11 +262,11 @@
     }
     if (mark() != position()) return cut();
     else return cut(1);
-  case ctrl('E'):
+  case ctrl('E'): // go to the end of the line
     return shift_position(line_end(position())) + NORMAL_INPUT_MOVE;
-  case ctrl('F'):
+  case ctrl('F'): // go to the next character
     return shift_position(position()+1) + NORMAL_INPUT_MOVE;
-  case ctrl('H'):
+  case ctrl('H'): // cut the previous character
     if (readonly()) {
       fl_beep();
       return 1;
@@ -238,7 +274,7 @@
     if (mark() != position()) cut();
     else cut(-1);
     return 1;
-  case ctrl('K'):
+  case ctrl('K'): // cut to the end of the line
     if (readonly()) {
       fl_beep();
       return 1;
@@ -248,7 +284,7 @@
     if (i == position() && i < size()) i++;
     cut(position(), i);
     return copy_cuts();
-  case ctrl('N'):
+  case ctrl('N'): // go down one line
     i = position();
     if (line_end(i) >= size()) return NORMAL_INPUT_MOVE;
     while (repeat_num--) {  
@@ -258,7 +294,7 @@
     }
     shift_up_down_position(i);
     return 1;
-  case ctrl('P'):
+  case ctrl('P'): // go up one line
     i = position();
     if (!line_start(i)) return NORMAL_INPUT_MOVE;
     while(repeat_num--) {
@@ -268,13 +304,13 @@
     }
     shift_up_down_position(line_start(i));
     return 1;
-  case ctrl('U'):
+  case ctrl('U'): // clear the whole document? 
     if (readonly()) {
       fl_beep();
       return 1;
     }
     return cut(0, size());
-  case ctrl('V'):
+  case ctrl('V'): // paste text
   case ctrl('Y'):
     if (readonly()) {
       fl_beep();
@@ -282,7 +318,7 @@
     }
     Fl::paste(*this, 1);
     return 1;
-  case ctrl('X'):
+  case ctrl('X'): // cut the selected text
   case ctrl('W'):
     if (readonly()) {
       fl_beep();
@@ -290,14 +326,14 @@
     }
     copy(1);
     return cut();
-  case ctrl('Z'):
+  case ctrl('Z'): // undo
   case ctrl('_'):
     if (readonly()) {
       fl_beep();
       return 1;
     }
     return undo();
-  case ctrl('I'):
+  case ctrl('I'): // insert literal
   case ctrl('J'):
   case ctrl('L'):
   case ctrl('M'):

Modified: branches/branch-1.3/src/Fl_mac.cxx
===================================================================
--- branches/branch-1.3/src/Fl_mac.cxx  2009-04-12 20:00:45 UTC (rev 6757)
+++ branches/branch-1.3/src/Fl_mac.cxx  2009-04-13 07:32:01 UTC (rev 6758)
@@ -1304,7 +1304,7 @@
   // In this mode, there seem to be no key-down codes
 // printf("%08x %08x %08x\n", keyCode, mods, key);
   maskedKeyCode = keyCode & 0x7f;
-  /* output a human readable event identifier for debugging */
+  /* output a human readable event identifier for debugging 
   const char *ev = "";
   switch (kind) {
     case kEventRawKeyDown: ev = "kEventRawKeyDown"; break;
@@ -1313,8 +1313,8 @@
     case kEventRawKeyModifiersChanged: ev = "kEventRawKeyModifiersChanged"; 
break;
     default: ev = "unknown";
   }
-//  printf("%08x %08x %08x '%c' %s \n", mods, keyCode, key, key, ev);
-//  */
+  printf("%08x %08x %08x '%c' %s \n", mods, keyCode, key, key, ev);
+  */
   switch (kind)
   {
   case kEventRawKeyDown:
@@ -1345,14 +1345,13 @@
     }
     // if the user pressed alt/option, event_key should have the keycap, 
     // but event_text should generate the international symbol
+    sym = macKeyLookUp[maskedKeyCode];
     if ( isalpha(key) )
       sym = tolower(key);
-    else if ( Fl::e_state&FL_CTRL && key<32 )
+    else if ( Fl::e_state&FL_CTRL && key<32 && sym<0xff00)
       sym = key+96;
-    else if ( Fl::e_state&FL_ALT ) // find the keycap of this key
+    else if ( Fl::e_state&FL_ALT && sym<0xff00) // find the keycap of this key
       sym = keycode_to_sym( maskedKeyCode, 0, macKeyLookUp[ maskedKeyCode ] );
-    else
-      sym = macKeyLookUp[ maskedKeyCode ];
     Fl::e_keysym = Fl::e_original_keysym = sym;
     // Handle FL_KP_Enter on regular keyboards and on Powerbooks
     if ( maskedKeyCode==0x4c || maskedKeyCode==0x34) key=0x0d;    

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

Reply via email to