Author: fabien Date: 2008-12-16 08:30:26 -0800 (Tue, 16 Dec 2008) New Revision: 6584 Log: patch from STR2026 for testing
Modified: branches/branch-1.3/src/Fl_Button.cxx Modified: branches/branch-1.3/src/Fl_Button.cxx =================================================================== --- branches/branch-1.3/src/Fl_Button.cxx 2008-12-13 19:40:26 UTC (rev 6583) +++ branches/branch-1.3/src/Fl_Button.cxx 2008-12-16 16:30:26 UTC (rev 6584) @@ -135,6 +135,13 @@ value(!value()); set_changed(); if (when() & FL_WHEN_CHANGED) do_callback(); + } else if ( (type() == FL_NORMAL_BUTTON) && when()&FL_WHEN_CHANGED) { + // Not already active by GUI push + if ( !value_ ) { + value_ = !oldval; + set_changed(); + do_callback(); + } } else if (when() & FL_WHEN_RELEASE) do_callback(); return 1; case FL_FOCUS : @@ -164,6 +171,36 @@ if (when() & FL_WHEN_RELEASE) do_callback(); return 1; } + return 0; + + case FL_KEYUP : + if ( (type() == FL_NORMAL_BUTTON) && when()&FL_WHEN_CHANGED) { + + int key = Fl::event_key(); + + // Check for a shortcut that includes state keys(FL_SHIFT, FL_CTRL or FL_ALT) and + // the state key is released + if ( (shortcut()&FL_SHIFT && ((key == FL_Shift_L) || (key == FL_Shift_R))) || + (shortcut()&FL_CTRL && ((key == FL_Control_L) || (key == FL_Control_R))) || + (shortcut()&FL_ALT && ((key == FL_Alt_L) || (key == FL_Alt_R))) ) { + value(oldval); + set_changed(); + do_callback(); + return 0; // In case multiple shortcut keys are pressed that use state keys + } + // shortcut key alone + else if ( !(shortcut() ? Fl::test_shortcut(shortcut()) : test_shortcut())) { + return 0; + } + // disable button + else if ( value_ ) { + value(oldval); + set_changed(); + do_callback(); + return 1; + } + } + default: return 0; } _______________________________________________ fltk-commit mailing list fltk-commit@easysw.com http://lists.easysw.com/mailman/listinfo/fltk-commit