diff --git a/panel/panel-window.c b/panel/panel-window.c index c3f1347..b91c9fc 100644 --- a/panel/panel-window.c +++ b/panel/panel-window.c @@ -260,6 +260,8 @@ struct _PanelWindow guint span_monitors : 1; gchar *output_name; + guint idle_show; + /* allocated position of the panel */ GdkRectangle alloc; @@ -1770,6 +1772,18 @@ panel_window_display_layout_debug (GtkWidget *widget) +static gboolean +panel_window_show (gpointer data) +{ + gtk_widget_show (GTK_WIDGET (data)); + + PANEL_WINDOW (data)->idle_show = 0; + + return FALSE; +} + + + static void panel_window_screen_layout_changed (GdkScreen *screen, PanelWindow *window) @@ -1999,8 +2013,9 @@ panel_window_screen_layout_changed (GdkScreen *screen, if (force_struts_update) panel_window_screen_struts_set (window); - if (!GTK_WIDGET_VISIBLE (window)) - gtk_widget_show (GTK_WIDGET (window)); + if (!GTK_WIDGET_VISIBLE (window) + && window->idle_show == 0) + window->idle_show = g_idle_add_full (G_PRIORITY_LOW, panel_window_show, window, NULL); }