From 6059eb2691b16e9733c0838c73e9cd7647ae24e7 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 | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c index a5231c4..97afacc 100644 --- a/mousepad/mousepad-window.c +++ b/mousepad/mousepad-window.c @@ -107,6 +107,8 @@ 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_fullscreen_bars_timer_destroy (gpointer user_data); static void mousepad_window_update_main_widgets (MousepadWindow *window); /* notebook signals */ @@ -394,6 +396,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 +992,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 +1111,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); } @@ -5000,6 +5010,26 @@ mousepad_window_update_main_widgets (MousepadWindow *window) +static gboolean +mousepad_window_fullscreen_bars_timer (gpointer user_data) +{ + MousepadWindow *window = MOUSEPAD_WINDOW (user_data); + + mousepad_window_update_main_widgets (window); + + return FALSE; +} + + + +static void +mousepad_window_fullscreen_bars_timer_destroy (gpointer user_data) +{ + MOUSEPAD_WINDOW (user_data)->fullscreen_bars_timer_id = 0; +} + + + static void mousepad_window_action_fullscreen (GtkToggleAction *action, MousepadWindow *window) @@ -5026,8 +5056,13 @@ mousepad_window_action_fullscreen (GtkToggleAction *action, gtk_action_set_tooltip (GTK_ACTION (action), _("Make the window fullscreen")); } + /* drop any previous timer source */ + if (G_UNLIKELY (window->fullscreen_bars_timer_id != 0)) + g_source_remove (window->fullscreen_bars_timer_id); + /* update the widgets based on whether in fullscreen mode or not */ - mousepad_window_update_main_widgets (window); + window->fullscreen_bars_timer_id = g_timeout_add_full (G_PRIORITY_DEFAULT, 200, mousepad_window_fullscreen_bars_timer, + window, mousepad_window_fullscreen_bars_timer_destroy); } -- 2.20.1