summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/gtk.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2017-01-01 14:57:30 -0500
committerFranklin Wei <git@fwei.tk>2017-01-01 15:00:09 -0500
commit6e5f287606a3039ee26eb4fc8c8f7a05deebe9f0 (patch)
treea5bb5bc9ec91b2fd8630c082f362952393f71bdb /apps/plugins/puzzles/gtk.c
parent985f6e6935357b13a43b6c30f0f1e99786b185b0 (diff)
downloadrockbox-6e5f287606a3039ee26eb4fc8c8f7a05deebe9f0.tar.gz
rockbox-6e5f287606a3039ee26eb4fc8c8f7a05deebe9f0.zip
Fixes and re-sync for puzzles
- Updates to latest upstream (7cae89fb4b22c305b3fd98b4e1be065ad527a9f7). - Also fixes a bug relating to updating parts of the display. - Adds some docs. Change-Id: Idfcce66e0cf3c59e467bab42eafc161df2e495bb
Diffstat (limited to 'apps/plugins/puzzles/gtk.c')
-rw-r--r--apps/plugins/puzzles/gtk.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/apps/plugins/puzzles/gtk.c b/apps/plugins/puzzles/gtk.c
index aa3ba06eed..e132c3db58 100644
--- a/apps/plugins/puzzles/gtk.c
+++ b/apps/plugins/puzzles/gtk.c
@@ -1935,6 +1935,24 @@ static gint configure_window(GtkWidget *widget,
1935 return FALSE; 1935 return FALSE;
1936} 1936}
1937 1937
1938#if GTK_CHECK_VERSION(3,0,0)
1939static int window_extra_height(frontend *fe)
1940{
1941 int ret = 0;
1942 if (fe->menubar) {
1943 GtkRequisition req;
1944 gtk_widget_get_preferred_size(fe->menubar, &req, NULL);
1945 ret += req.height;
1946 }
1947 if (fe->statusbar) {
1948 GtkRequisition req;
1949 gtk_widget_get_preferred_size(fe->statusbar, &req, NULL);
1950 ret += req.height;
1951 }
1952 return ret;
1953}
1954#endif
1955
1938static void resize_fe(frontend *fe) 1956static void resize_fe(frontend *fe)
1939{ 1957{
1940 int x, y; 1958 int x, y;
@@ -1942,7 +1960,7 @@ static void resize_fe(frontend *fe)
1942 get_size(fe, &x, &y); 1960 get_size(fe, &x, &y);
1943 1961
1944#if GTK_CHECK_VERSION(3,0,0) 1962#if GTK_CHECK_VERSION(3,0,0)
1945 gtk_window_resize_to_geometry(GTK_WINDOW(fe->window), x, y); 1963 gtk_window_resize(GTK_WINDOW(fe->window), x, y + window_extra_height(fe));
1946#else 1964#else
1947 fe->drawing_area_shrink_pending = FALSE; 1965 fe->drawing_area_shrink_pending = FALSE;
1948 gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y); 1966 gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y);
@@ -1970,6 +1988,7 @@ static void menu_preset_event(GtkMenuItem *menuitem, gpointer data)
1970 midend_new_game(fe->me); 1988 midend_new_game(fe->me);
1971 changed_preset(fe); 1989 changed_preset(fe);
1972 resize_fe(fe); 1990 resize_fe(fe);
1991 midend_redraw(fe->me);
1973} 1992}
1974 1993
1975GdkAtom compound_text_atom, utf8_string_atom; 1994GdkAtom compound_text_atom, utf8_string_atom;
@@ -2213,6 +2232,7 @@ static void menu_load_event(GtkMenuItem *menuitem, gpointer data)
2213 2232
2214 changed_preset(fe); 2233 changed_preset(fe);
2215 resize_fe(fe); 2234 resize_fe(fe);
2235 midend_redraw(fe->me);
2216 } 2236 }
2217} 2237}
2218 2238
@@ -2250,6 +2270,7 @@ static void menu_config_event(GtkMenuItem *menuitem, gpointer data)
2250 2270
2251 midend_new_game(fe->me); 2271 midend_new_game(fe->me);
2252 resize_fe(fe); 2272 resize_fe(fe);
2273 midend_redraw(fe->me);
2253} 2274}
2254 2275
2255static void menu_about_event(GtkMenuItem *menuitem, gpointer data) 2276static void menu_about_event(GtkMenuItem *menuitem, gpointer data)
@@ -2648,15 +2669,23 @@ static frontend *new_window(char *arg, int argtype, char **error)
2648#endif 2669#endif
2649 { 2670 {
2650 GdkGeometry geom; 2671 GdkGeometry geom;
2651 geom.base_width = geom.base_height = 0; 2672 geom.base_width = 0;
2673#if GTK_CHECK_VERSION(3,0,0)
2674 geom.base_height = window_extra_height(fe);
2675 gtk_window_set_geometry_hints(GTK_WINDOW(fe->window), NULL,
2676 &geom, GDK_HINT_BASE_SIZE);
2677#else
2678 geom.base_height = 0;
2652 gtk_window_set_geometry_hints(GTK_WINDOW(fe->window), fe->area, 2679 gtk_window_set_geometry_hints(GTK_WINDOW(fe->window), fe->area,
2653 &geom, GDK_HINT_BASE_SIZE); 2680 &geom, GDK_HINT_BASE_SIZE);
2681#endif
2654 } 2682 }
2655 fe->w = -1; 2683 fe->w = -1;
2656 fe->h = -1; 2684 fe->h = -1;
2657 get_size(fe, &x, &y); 2685 get_size(fe, &x, &y);
2658#if GTK_CHECK_VERSION(3,0,0) 2686#if GTK_CHECK_VERSION(3,0,0)
2659 gtk_window_set_default_geometry(GTK_WINDOW(fe->window), x, y); 2687 gtk_window_set_default_size(GTK_WINDOW(fe->window),
2688 x, y + window_extra_height(fe));
2660#else 2689#else
2661 fe->drawing_area_shrink_pending = FALSE; 2690 fe->drawing_area_shrink_pending = FALSE;
2662 gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y); 2691 gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y);