aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Nevins <jacobn@chiark.greenend.org.uk>2006-06-26 22:01:51 +0000
committerJacob Nevins <jacobn@chiark.greenend.org.uk>2006-06-26 22:01:51 +0000
commitcfcd8cf8c5dda9e3c14cd7df67a4e4f6caaaca3a (patch)
tree90a967a5835646963784621403acfd88ee24e8b1
parentd952a3b6ffb62e56f29760cfe843e5c0fc43c96a (diff)
downloadpuzzles-cfcd8cf8c5dda9e3c14cd7df67a4e4f6caaaca3a.zip
puzzles-cfcd8cf8c5dda9e3c14cd7df67a4e4f6caaaca3a.tar.gz
puzzles-cfcd8cf8c5dda9e3c14cd7df67a4e4f6caaaca3a.tar.bz2
puzzles-cfcd8cf8c5dda9e3c14cd7df67a4e4f6caaaca3a.tar.xz
Since r6711, puzzles built with Gtk 1.2 would take double actions when a menu
accelerator key (N/U/R/Q) was pressed -- once for the menu accelerator, and once more in key_event(). This workaround, while unlovely, should at least not break in future (since the things it relies on are unlikely to change). [originally from svn r6745] [r6711 == 077aa510c78f3273bd0d4ca4f1ca14780822ebf9]
-rw-r--r--gtk.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gtk.c b/gtk.c
index 7493853..99cc4cb 100644
--- a/gtk.c
+++ b/gtk.c
@@ -518,6 +518,16 @@ static gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
if (!fe->pixmap)
return TRUE;
+#if !GTK_CHECK_VERSION(2,0,0)
+ /* Gtk 1.2 passes a key event to this function even if it's also
+ * defined as an accelerator.
+ * Gtk 2 doesn't do this, and this function appears not to exist there. */
+ if (fe->accelgroup &&
+ gtk_accel_group_get_entry(fe->accelgroup,
+ event->keyval, event->state))
+ return TRUE;
+#endif
+
if (event->keyval == GDK_Up)
keyval = shift | ctrl | CURSOR_UP;
else if (event->keyval == GDK_KP_Up || event->keyval == GDK_KP_8)