From f178a4c577f5ab386ed14832ea0691c72bc39510 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Wed, 21 Feb 2007 15:49:38 +0000 Subject: Stopped test/keyboard consuming 100% cpu. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5702 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- test/keyboard.cxx | 21 +++++++++++++++++---- 1 file 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 + + // 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; } -- cgit v1.2.3