Let GTK dialogs open with actual-size Graph widgets
authorH.G.Muller <hgm@hgm-xboard.(none)>
Tue, 21 Oct 2014 09:35:21 +0000 (11:35 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Tue, 21 Oct 2014 18:54:32 +0000 (20:54 +0200)
The Graph Option size values are now uses as size_request, to give
proper dialog sizing at popup. But the size_request is then reset
so that free sizing by the user becomes possible.

gtk/xboard.c
gtk/xoptions.c

index 88550f7..f02762e 100644 (file)
@@ -650,9 +650,11 @@ ResizeBoardWindow (int w, int h, int inhibit)
     gtk_widget_get_allocation(shellWidget, &a);
     marginW = a.width - bw;
     gtk_widget_get_allocation(optList[W_WHITE].handle, &a);
+    gtk_widget_set_size_request(optList[W_BOARD].handle, w, h);   // protect board widget
     w += marginW + 1; // [HGM] not sure why the +1 is (sometimes) needed...
     h += marginH + a.height + 1;
     gtk_window_resize(GTK_WINDOW(shellWidget), w, h);
+    gtk_widget_set_size_request(optList[W_BOARD].handle, -1, -1); // liberate board again
 }
 
 int
index 0d36830..29be641 100644 (file)
@@ -1529,7 +1529,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
            break;
          case Graph:
            option[i].handle = (void*) (graph = gtk_drawing_area_new());
-//            gtk_widget_set_size_request(graph, option[i].max, option[i].value);
+            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);
@@ -1666,6 +1666,9 @@ 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)
+       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)
 }