summaryrefslogtreecommitdiff
path: root/src/gtkutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkutil.c')
-rw-r--r--src/gtkutil.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index f045deacd33..d6e4dcebcd3 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -983,7 +983,7 @@ xg_frame_set_char_size (FRAME_PTR f, int cols, int rows)
size as fast as possible.
For unmapped windows, we can set rows/cols. When
the frame is mapped again we will (hopefully) get the correct size. */
- if (f->async_visible)
+ if (FRAME_VISIBLE_P (f))
{
/* Must call this to flush out events */
(void)gtk_events_pending ();
@@ -1716,7 +1716,7 @@ xg_dialog_run (FRAME_PTR f, GtkWidget *w)
g_signal_connect (G_OBJECT (w), "delete-event", G_CALLBACK (gtk_true), NULL);
gtk_widget_show (w);
- record_unwind_protect (pop_down_dialog, make_save_value (&dd, 0));
+ record_unwind_protect (pop_down_dialog, make_save_pointer (&dd));
(void) xg_maybe_add_timer (&dd);
g_main_loop_run (dd.loop);
@@ -4353,6 +4353,21 @@ xg_pack_tool_bar (FRAME_PTR f, Lisp_Object pos)
x->toolbar_is_packed = true;
}
+static bool xg_update_tool_bar_sizes (FRAME_PTR f);
+
+static void
+tb_size_cb (GtkWidget *widget,
+ GdkRectangle *allocation,
+ gpointer user_data)
+{
+ /* When tool bar is created it has one preferred size. But when size is
+ allocated between widgets, it may get another. So we must update
+ size hints if tool bar size changes. Seen on Fedora 18 at least. */
+ FRAME_PTR f = (FRAME_PTR) user_data;
+ if (xg_update_tool_bar_sizes (f))
+ x_wm_set_size_hint (f, 0, 0);
+}
+
/* Create a tool bar for frame F. */
static void
@@ -4384,6 +4399,8 @@ xg_create_tool_bar (FRAME_PTR f)
gtk_toolbar_set_style (GTK_TOOLBAR (x->toolbar_widget), GTK_TOOLBAR_ICONS);
toolbar_set_orientation (x->toolbar_widget, GTK_ORIENTATION_HORIZONTAL);
+ g_signal_connect (x->toolbar_widget, "size-allocate",
+ G_CALLBACK (tb_size_cb), f);
#if GTK_CHECK_VERSION (3, 3, 6)
gsty = gtk_widget_get_style_context (x->toolbar_widget);
gtk_style_context_add_class (gsty, "primary-toolbar");