keyboard accelerators for both front ends.
[xboard.git] / gtk / xoptions.c
index ecdbd30..5b4867c 100644 (file)
@@ -427,7 +427,15 @@ CreateMenuPopup (Option *opt, int n, int def)
            if(mb[i].handle == RADIO) gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(entry), True);
          } else
            entry = gtk_menu_item_new_with_label(msg);
-         gtk_signal_connect_object (GTK_OBJECT (entry), "activate", GTK_SIGNAL_FUNC(MenuSelect), (gpointer) (n<<16)+i);
+         gtk_signal_connect_object (GTK_OBJECT (entry), "activate", GTK_SIGNAL_FUNC(MenuSelect), (gpointer) (intptr_t) ((n<<16)+i));
+         if(mb[i].accel) {
+           guint accelerator_key;
+           GdkModifierType accelerator_mods;
+
+           gtk_accelerator_parse(mb[i].accel, &accelerator_key, &accelerator_mods);
+           gtk_widget_add_accelerator (GTK_WIDGET(entry), "activate",GtkAccelerators,
+                                       accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE);
+         };
          gtk_widget_show(entry);
        } else entry = gtk_separator_menu_item_new();
        gtk_menu_append(GTK_MENU (menu), entry);
@@ -515,7 +523,7 @@ ShiftKeys ()
 static gboolean
 GameListEvent(GtkWidget *widget, GdkEvent *event, gpointer gdata)
 {
-    int n = (int) gdata;
+    int n = (intptr_t) gdata;
 
     if(n == 4) {
        if(((GdkEventKey *) event)->keyval != GDK_Return) return FALSE;
@@ -555,7 +563,7 @@ MemoEvent(GtkWidget *widget, GdkEvent *event, gpointer gdata)
     GtkTextIter start, end;
     String val = NULL;
     gboolean res;
-    gint index, x, y;
+    gint index = 0, x, y;
 
     switch(event->type) { // figure out what's up
        case GDK_MOTION_NOTIFY:
@@ -612,7 +620,7 @@ AddHandler (Option *opt, DialogClass dlg, int nr)
       case 5: // game list
        g_signal_connect(opt->handle, "button-press-event", G_CALLBACK (GameListEvent), (gpointer) 0 );
       case 4: // game-list filter
-       g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (GameListEvent), (gpointer) nr );
+       g_signal_connect(opt->handle, "key-press-event", G_CALLBACK (GameListEvent), (gpointer) (intptr_t) nr );
        break;
       case 6: // engine output (uses generic textview callback)
        break;
@@ -786,7 +794,7 @@ GraphEventProc(GtkWidget *widget, GdkEvent *event, gpointer gdata)
            /* Get window size */
            gtk_widget_get_allocation(widget, &a);
            w = a.width; h = a.height;
-//printf("expose %dx%d @ (%d,%d)\n", w, h, a.x, a.y);
+//printf("expose %dx%d @ (%d,%d): %dx%d @(%d,%d)\n", w, h, a.x, a.y, eevent->area.width, eevent->area.height, eevent->area.x, eevent->area.y);
 #ifdef TODO_GTK
            j = 0;
            XtSetArg(args[j], XtNwidth, &w); j++;
@@ -1071,7 +1079,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
     GtkWidget *box;
     GtkWidget *checkbutton;
     GtkWidget *entry;
-    GtkWidget *oldHbox, *hbox = NULL;
+    GtkWidget *oldHbox = NULL, *hbox = NULL;
     GtkWidget *pane = NULL;
     GtkWidget *button;
     GtkWidget *table;
@@ -1086,10 +1094,10 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
     GtkWidget *list;
     GtkWidget *graph;
     GtkWidget *menuButton;
-    GtkWidget *menuBar;
+    GtkWidget *menuBar = NULL;
     GtkWidget *menu;
 
-    int i, j, arraysize, left, top, height=999, width=1, boxStart, breakType = 0, r;
+    int i, j, arraysize, left, top, height=999, width=1, boxStart=0, breakType = 0, r;
     char def[MSG_SIZ], *msg, engineDlg = (currentCps != NULL && dlgNr != BrowserDlg);
 
     if(dlgNr < PromoDlg && shellUp[dlgNr]) return 0; // already up
@@ -1384,7 +1392,7 @@ printf("n=%d, h=%d, w=%d\n",n,height,width);
                 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_OUT);
 
                 if(option[i].textValue) // generic callback for double-clicking listbox item
-                    g_signal_connect(list, "button-press-event", G_CALLBACK(ListCallback), (gpointer) (dlgNr<<16 | i) );
+                    g_signal_connect(list, "button-press-event", G_CALLBACK(ListCallback), (gpointer) (intptr_t) (dlgNr<<16 | i) );
 
                 /* never has label, so let listbox occupy all columns */
                 Pack(hbox, table, sw, left, left+r, top, GTK_EXPAND);