diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2007-02-21 15:49:38 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2007-02-21 15:49:38 +0000 |
| commit | f178a4c577f5ab386ed14832ea0691c72bc39510 (patch) | |
| tree | 08e1658c059d734ec7d9fae9c04f64607c8e0d4e /test | |
| parent | 00c66abc0e3bf9b5dbe64b8a05ba19eaea0f8357 (diff) | |
Stopped test/keyboard consuming 100% cpu.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5702 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'test')
| -rw-r--r-- | test/keyboard.cxx | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/test/keyboard.cxx b/test/keyboard.cxx index e345f0c2b..511bc616f 100644 --- a/test/keyboard.cxx +++ b/test/keyboard.cxx @@ -42,6 +42,9 @@ #include "keyboard_ui.h" +#include <string.h> + + // these are used to identify which buttons are which: void key_cb(Fl_Button*, void*) {} void shift_cb(Fl_Button*, void*) {} @@ -100,6 +103,7 @@ int main(int argc, char** argv) { Fl_Window *window = make_window(); window->show(argc,argv); while (Fl::wait()) { + const char *str; // update all the buttons with the current key and shift state: for (int i = 0; i < window->children(); i++) { @@ -107,10 +111,16 @@ int main(int argc, char** argv) { if (b->callback() == (Fl_Callback*)key_cb) { int i = (long)b->user_data(); if (!i) i = b->label()[0]; - ((Fl_Button*)b)->value(Fl::event_key(i)); + Fl_Button *btn = ((Fl_Button*)b); + int state = Fl::event_key(i); + if (btn->value()!=state) + btn->value(state); } else if (b->callback() == (Fl_Callback*)shift_cb) { int i = (long)b->user_data(); - ((Fl_Button*)b)->value(Fl::event_state(i)); + Fl_Button *btn = ((Fl_Button*)b); + int state = Fl::event_state(i); + if (btn->value()!=state) + btn->value(state); } } @@ -133,9 +143,12 @@ int main(int argc, char** argv) { for (int i = 0; i < int(sizeof(table)/sizeof(*table)); i++) if (table[i].n == k) {keyname = table[i].text; break;} } - key_output->value(keyname); + if (strcmp(key_output->value(), keyname)) + key_output->value(keyname); - text_output->value(Fl::event_text()); + str = Fl::event_text(); + if (strcmp(text_output->value(), str)) + text_output->value(str); } return 0; } |
