Since r6711, puzzles built with Gtk 1.2 would take double actions when a menu
[sgt/puzzles] / gtk.c
diff --git a/gtk.c b/gtk.c
index c801b80..99cc4cb 100644 (file)
--- 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)
@@ -672,6 +682,8 @@ static gint configure_area(GtkWidget *widget,
     gc = gdk_gc_new(fe->area->window);
     gdk_gc_set_foreground(gc, &fe->colours[0]);
     gdk_draw_rectangle(fe->pixmap, gc, 1, 0, 0, fe->pw, fe->ph);
+    gdk_draw_rectangle(widget->window, gc, 1, 0, 0,
+                      event->width, event->height);
     gdk_gc_unref(gc);
 
     midend_force_redraw(fe->me);
@@ -1493,11 +1505,7 @@ static frontend *new_window(char *arg, char **error)
 
     fe->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_window_set_title(GTK_WINDOW(fe->window), thegame.name);
-#if 0
-    gtk_window_set_resizable(GTK_WINDOW(fe->window), FALSE);
-#else
-    gtk_window_set_policy(GTK_WINDOW(fe->window), FALSE, FALSE, TRUE);
-#endif
+
     vbox = GTK_BOX(gtk_vbox_new(FALSE, 0));
     gtk_container_add(GTK_CONTAINER(fe->window), GTK_WIDGET(vbox));
     gtk_widget_show(GTK_WIDGET(vbox));