summaryrefslogtreecommitdiff
path: root/src/Fl_Button.cxx
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2001-08-04 16:43:31 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2001-08-04 16:43:31 +0000
commit11cc024107b68a32bbe55b10b036fcfd27d47b9e (patch)
treefaadebbd49f8ebf7e3cd696650b0c2238b318890 /src/Fl_Button.cxx
parente4727142d4c48198e708ba2bd4068daf8062abaf (diff)
Keyboard navigation for buttons.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1551 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Button.cxx')
-rw-r--r--src/Fl_Button.cxx27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/Fl_Button.cxx b/src/Fl_Button.cxx
index 76eb8b5fd..1ad74240b 100644
--- a/src/Fl_Button.cxx
+++ b/src/Fl_Button.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Button.cxx,v 1.4.2.6.2.2 2001/08/02 15:31:59 easysw Exp $"
+// "$Id: Fl_Button.cxx,v 1.4.2.6.2.3 2001/08/04 16:43:31 easysw Exp $"
//
// Button widget for the Fast Light Tool Kit (FLTK).
//
@@ -26,6 +26,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
+#include <FL/fl_draw.H>
// There are a lot of subclasses, named Fl_*_Button. Some of
// them are implemented by setting the type() value and testing it
@@ -55,6 +56,12 @@ void Fl_Button::draw() {
//if (col == FL_GRAY && Fl::belowmouse()==this) col = FL_LIGHT1;
draw_box(value() ? (down_box()?down_box():down(box())) : box(), col);
draw_label();
+ if (Fl::focus() == this) {
+ fl_line_style(FL_DASH);
+ fl_rect(x() + Fl::box_dx(box()), y() + Fl::box_dy(box()),
+ w() - Fl::box_dw(box()) - 1, h() - Fl::box_dh(box()) - 1);
+ fl_line_style(FL_SOLID);
+ }
}
int Fl_Button::handle(int event) {
int newval;
@@ -103,6 +110,22 @@ int Fl_Button::handle(int event) {
}
if (when() & FL_WHEN_RELEASE) do_callback(); else set_changed();
return 1;
+ case FL_FOCUS :
+ case FL_UNFOCUS :
+ redraw();
+ return 1;
+ case FL_KEYBOARD :
+ if (Fl::focus() == this && Fl::event_key() == ' ') {
+ if (type() == FL_RADIO_BUTTON && !value_) {
+ setonly();
+ if (when() & FL_WHEN_CHANGED) do_callback();
+ } else if (type() == FL_TOGGLE_BUTTON) {
+ value(!value());
+ if (when() & FL_WHEN_CHANGED) do_callback();
+ }
+ if (when() & FL_WHEN_RELEASE) do_callback(); else set_changed();
+ return 1;
+ }
default:
return 0;
}
@@ -118,5 +141,5 @@ Fl_Button::Fl_Button(int x,int y,int w,int h, const char *l)
}
//
-// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.2 2001/08/02 15:31:59 easysw Exp $".
+// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.3 2001/08/04 16:43:31 easysw Exp $".
//