X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fdock.c;fp=openbox%2Fdock.c;h=fa088c6b5bd8b5daffc78f639c74b9d714154088;hb=fd77a0a7b3f892925f203287b8b46c6ec9be94ea;hp=3a58344e1a423397cf75a7a0243339d0890976a5;hpb=2e94af28e4c12166cb74233526bb79f50877903c;p=chaz%2Fopenbox diff --git a/openbox/dock.c b/openbox/dock.c index 3a58344e..fa088c6b 100644 --- a/openbox/dock.c +++ b/openbox/dock.c @@ -33,6 +33,8 @@ ButtonMotionMask) static ObDock *dock; +static guint show_timeout_id; +static guint hide_timeout_id; StrutPartial dock_strut; @@ -628,15 +630,19 @@ static gboolean hide_timeout(gpointer data) dock->hidden = TRUE; dock_configure(); + hide_timeout_id = 0; + return FALSE; /* don't repeat */ } static gboolean show_timeout(gpointer data) { - /* hide */ + /* show */ dock->hidden = FALSE; dock_configure(); + show_timeout_id = 0; + return FALSE; /* don't repeat */ } @@ -644,21 +650,21 @@ void dock_hide(gboolean hide) { if (!hide) { if (dock->hidden && config_dock_hide) { - obt_main_loop_timeout_add(ob_main_loop, - config_dock_show_delay * 1000, - show_timeout, NULL, - g_direct_equal, NULL); - } else if (!dock->hidden && config_dock_hide) { - obt_main_loop_timeout_remove(ob_main_loop, hide_timeout); + show_timeout_id = g_timeout_add_full(G_PRIORITY_DEFAULT, + config_dock_show_delay, + show_timeout, NULL, NULL); + } else if (!dock->hidden && config_dock_hide && hide_timeout_id) { + if (hide_timeout_id) g_source_remove(hide_timeout_id); + hide_timeout_id = 0; } } else { if (!dock->hidden && config_dock_hide) { - obt_main_loop_timeout_add(ob_main_loop, - config_dock_hide_delay * 1000, - hide_timeout, NULL, - g_direct_equal, NULL); - } else if (dock->hidden && config_dock_hide) { - obt_main_loop_timeout_remove(ob_main_loop, show_timeout); + hide_timeout_id = g_timeout_add_full(G_PRIORITY_DEFAULT, + config_dock_show_delay, + hide_timeout, NULL, NULL); + } else if (dock->hidden && config_dock_hide && show_timeout_id) { + if (show_timeout_id) g_source_remove(show_timeout_id); + show_timeout_id = 0; } } }