From 9f16429eb0ec2f6fdd547c1e07213a3603ef76c7 Mon Sep 17 00:00:00 2001 From: Theo Linkspfeifer Date: Mon, 27 May 2019 22:15:06 +0200 Subject: [PATCH 1/1] Change visibility of fullscreen bars after small delay --- mousepad/mousepad-window.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c index a5231c4..be4f27d 100644 --- a/mousepad/mousepad-window.c +++ b/mousepad/mousepad-window.c @@ -107,6 +107,7 @@ static GtkWidget *mousepad_window_provide_languages_menu (MousepadW MousepadStatusbar *statusbar); static void mousepad_window_create_statusbar (MousepadWindow *window); static gboolean mousepad_window_get_in_fullscreen (MousepadWindow *window); +static gboolean mousepad_window_fullscreen_bars_timer (gpointer user_data); static void mousepad_window_update_main_widgets (MousepadWindow *window); /* notebook signals */ @@ -394,6 +395,9 @@ struct _MousepadWindow /* support to remember window geometry */ guint save_geometry_timer_id; + /* fullscreen bars visibility switch */ + guint fullscreen_bars_timer_id; + /* idle update functions for the recent and go menu */ guint update_recent_menu_id; guint update_go_menu_id; @@ -987,6 +991,7 @@ mousepad_window_init (MousepadWindow *window) /* initialize stuff */ window->save_geometry_timer_id = 0; + window->fullscreen_bars_timer_id = 0; window->update_recent_menu_id = 0; window->update_go_menu_id = 0; window->gomenu_merge_id = 0; @@ -1105,6 +1110,10 @@ mousepad_window_dispose (GObject *object) if (G_UNLIKELY (window->save_geometry_timer_id != 0)) g_source_remove (window->save_geometry_timer_id); + /* destroy the fullscreen bars timer source */ + if (G_UNLIKELY (window->fullscreen_bars_timer_id != 0)) + g_source_remove (window->fullscreen_bars_timer_id); + (*G_OBJECT_CLASS (mousepad_window_parent_class)->dispose) (object); } @@ -4966,6 +4975,20 @@ mousepad_window_action_statusbar (GtkToggleAction *action, +static gboolean +mousepad_window_fullscreen_bars_timer (gpointer user_data) +{ + MousepadWindow *window = MOUSEPAD_WINDOW (user_data); + + mousepad_window_update_main_widgets (window); + + MOUSEPAD_WINDOW (user_data)->fullscreen_bars_timer_id = 0; + + return FALSE; +} + + + static void mousepad_window_update_main_widgets (MousepadWindow *window) { @@ -5026,8 +5049,13 @@ mousepad_window_action_fullscreen (GtkToggleAction *action, gtk_action_set_tooltip (GTK_ACTION (action), _("Make the window fullscreen")); } - /* update the widgets based on whether in fullscreen mode or not */ - mousepad_window_update_main_widgets (window); + if (window->fullscreen_bars_timer_id == 0) + { + /* update the widgets based on whether in fullscreen mode or not */ + window->fullscreen_bars_timer_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, 50, + mousepad_window_fullscreen_bars_timer, + window, NULL); + } } -- 2.20.1