Unlock width requests in board window GTK
[xboard.git] / gtk / xoptions.c
index 8df9c44..a13ceff 100644 (file)
@@ -1025,6 +1025,7 @@ GraphEventProc(GtkWidget *widget, GdkEvent *event, gpointer gdata)
        case GDK_SCROLL:
            if(sevent->direction == GDK_SCROLL_UP) button = 4;
            if(sevent->direction == GDK_SCROLL_DOWN) button = 5;
+           w = h = 0; // to keep Clang happy
            break;
        case GDK_MOTION_NOTIFY:
            f = 0;
@@ -1523,12 +1524,12 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
             /* Left Justify */
             gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
             SetWidgetFont(label, option[i].font);
+            gtk_widget_set_size_request(label, option[i].max ? option[i].max : -1, -1);
            if(option[i].min & BORDER) {
                GtkWidget *frame = gtk_frame_new(NULL);
                 gtk_container_add(GTK_CONTAINER(frame), label);
                label = frame;
            }
-            gtk_widget_set_size_request(label, option[i].max ? option[i].max : -1, -1);
            if(option[i].target || dlgNr != ErrorDlg && option[i].name) { // allow user to specify event handler for button presses
                button = gtk_event_box_new();
                 gtk_container_add(GTK_CONTAINER(button), label);
@@ -1552,7 +1553,11 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
                 break;
             } else
             if(!strcmp(option[i].name, "D")) {
-                option[i].handle = (void *) (button = gtk_color_button_new());
+                GdkColor color;
+                char *name;
+               GetWidgetText(&option[i-5], &name);
+                gdk_color_parse(name, &color);
+                option[i].handle = (void *) (button = gtk_color_button_new_with_color(&color));
             } else
             button = gtk_button_new_with_label (_(option[i].name));
             SetWidgetFont(gtk_bin_get_child(GTK_BIN(button)), option[i].font);
@@ -1665,10 +1670,6 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
          case Graph:
            option[i].handle = (void*) (graph = gtk_drawing_area_new());
             gtk_widget_set_size_request(graph, option[i].max, option[i].value);
-           if(0){ GtkAllocation a;
-               a.x = 0; a.y = 0; a.width = option[i].max, a.height = option[i].value;
-               gtk_widget_set_allocation(graph, &a);
-           }
             g_signal_connect (graph, "expose-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
            gtk_widget_add_events(GTK_WIDGET(graph), GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK);
             g_signal_connect (graph, "button-press-event", G_CALLBACK (GraphEventProc), (gpointer) &option[i]);
@@ -1825,7 +1826,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
        gtk_window_resize(GTK_WINDOW(dialog), wp[dlgNr]->width, wp[dlgNr]->height);
     }
 
-    for(i=0; option[i].type != EndMark; i++) if(option[i].type == Graph)
+    for(i=0; option[i].type != EndMark; i++) if(option[i].type == Graph || dlgNr == BoardWindow && option[i].handle)
        gtk_widget_set_size_request(option[i].handle, -1, -1); // remove size requests after realization, so user can shrink
 
     return 1; // tells caller he must do initialization (e.g. add specific event handlers)