summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-11-13 03:11:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-11-13 03:11:32 +0000
commite8a2bf9b49db0e5052abc4e572dbb8a8e89603c9 (patch)
tree5b61af4661d9e9ee46486c2b3b65c09c52c9f81b
parent2dafaad193f12d282076610ed1ebf1f1bf235ced (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.cc33
-rw-r--r--libs/pbd/whitespace.cc13
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) {