diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-11-13 03:11:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-11-13 03:11:32 +0000 |
commit | e8a2bf9b49db0e5052abc4e572dbb8a8e89603c9 (patch) | |
tree | 5b61af4661d9e9ee46486c2b3b65c09c52c9f81b | |
parent | 2dafaad193f12d282076610ed1ebf1f1bf235ced (diff) |
fix egregious programming sloppiness in strip_whitespace_edges
git-svn-id: svn://localhost/ardour2/trunk@1121 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/utils.cc | 33 | ||||
-rw-r--r-- | libs/pbd/whitespace.cc | 13 |
2 files changed, 46 insertions, 0 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 433fdd647a..4d7c133770 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -359,12 +359,25 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) GtkWidget* focus = gtk_window_get_focus (win); bool special_handling_of_unmodified_accelerators = false; +#undef DEBUG_ACCELERATOR_HANDLING +#ifdef DEBUG_ACCELERATOR_HANDLING + bool debug = (getenv ("ARDOUR_DEBUG_ACCELERATOR_HANDLING") != 0); +#endif + if (focus) { if (GTK_IS_ENTRY(focus)) { special_handling_of_unmodified_accelerators = true; } } +#ifdef DEBUG_ACCELERATOR_HANDLING + if (debug) { + cerr << "Key event: code = " << ev->keyval << " state = " << hex << ev->state << dec << " focus is an entry ? " + << special_handling_of_unmodified_accelerators + << endl; + } +#endif + /* This exists to allow us to override the way GTK handles key events. The normal sequence is: @@ -441,20 +454,40 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) /* no special handling or modifiers in effect: accelerate first */ +#ifdef DEBUG_ACCELERATOR_HANDLING + if (debug) { + cerr << "\tactivate, then propagate\n"; + } +#endif if (!gtk_window_activate_key (win, ev)) { return gtk_window_propagate_key_event (win, ev); } else { +#ifdef DEBUG_ACCELERATOR_HANDLING + if (debug) { + cerr << "\tnot handled\n"; + } +#endif return true; } } /* no modifiers, propagate first */ +#ifdef DEBUG_ACCELERATOR_HANDLING + if (debug) { + cerr << "\tactivate, then propagate\n"; + } +#endif if (!gtk_window_propagate_key_event (win, ev)) { return gtk_window_activate_key (win, ev); } +#ifdef DEBUG_ACCELERATOR_HANDLING + if (debug) { + cerr << "\tnot handled\n"; + } +#endif return true; } diff --git a/libs/pbd/whitespace.cc b/libs/pbd/whitespace.cc index e35a8a8c0e..53616133ad 100644 --- a/libs/pbd/whitespace.cc +++ b/libs/pbd/whitespace.cc @@ -11,6 +11,10 @@ strip_whitespace_edges (string& str) len = str.length(); + if (len == 1) { + return; + } + /* strip front */ for (i = 0; i < len; ++i) { @@ -19,12 +23,21 @@ strip_whitespace_edges (string& str) } } + if (i == len) { + /* its all whitespace, not much we can do */ + return; + } + /* strip back */ if (len > 1) { s = i; i = len - 1; + + if (s == i) { + return; + } do { if (isgraph (str[i]) || i == 0) { |