Skip to content

Commit

Permalink
Little rearrangement for readibility
Browse files Browse the repository at this point in the history
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6758 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
  • Loading branch information
Matthias Melcher committed Apr 13, 2009
1 parent ead9c2c commit c2e3704
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 27 deletions.
2 changes: 2 additions & 0 deletions CHANGES
@@ -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
Expand Down
6 changes: 4 additions & 2 deletions src/Fl_File_Input.cxx
Expand Up @@ -197,8 +197,10 @@ Fl_File_Input::handle(int event) // I - Event
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;
Expand Down
72 changes: 54 additions & 18 deletions src/Fl_Input.cxx
Expand Up @@ -150,21 +150,57 @@ int Fl_Input::handle_key() {
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);
Expand Down Expand Up @@ -212,33 +248,33 @@ int Fl_Input::handle_key() {

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();
return 1;
}
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;
}
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;
Expand All @@ -248,7 +284,7 @@ int Fl_Input::handle_key() {
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--) {
Expand All @@ -258,7 +294,7 @@ int Fl_Input::handle_key() {
}
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--) {
Expand All @@ -268,36 +304,36 @@ int Fl_Input::handle_key() {
}
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();
return 1;
}
Fl::paste(*this, 1);
return 1;
case ctrl('X'):
case ctrl('X'): // cut the selected text
case ctrl('W'):
if (readonly()) {
fl_beep();
return 1;
}
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'):
Expand Down
13 changes: 6 additions & 7 deletions src/Fl_mac.cxx
Expand Up @@ -1304,7 +1304,7 @@ pascal OSStatus carbonKeyboardHandler(
// 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;
Expand All @@ -1313,8 +1313,8 @@ pascal OSStatus carbonKeyboardHandler(
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:
Expand Down Expand Up @@ -1345,14 +1345,13 @@ pascal OSStatus carbonKeyboardHandler(
}
// 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;
Expand Down

0 comments on commit c2e3704

Please sign in to comment.