ButtonMotionMask)
static ObDock *dock;
+static guint show_timeout_id;
+static guint hide_timeout_id;
StrutPartial dock_strut;
STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
- dock = g_new0(ObDock, 1);
+ dock = g_slice_new0(ObDock);
dock->obwin.type = OB_WINDOW_CLASS_DOCK;
dock->hidden = TRUE;
RrAppearanceFree(dock->a_frame);
window_remove(dock->frame);
stacking_remove(dock);
+ g_slice_free(ObDock, dock);
+ dock = NULL;
}
void dock_manage(Window icon_win, Window name_win)
XWindowAttributes attrib;
gchar **data;
- app = g_new0(ObDockApp, 1);
+ app = g_slice_new0(ObDockApp);
app->name_win = name_win;
app->icon_win = icon_win;
g_free(app->name);
g_free(app->class);
- g_free(app);
+ g_slice_free(ObDockApp, app);
}
void dock_configure(void)
gint gravity;
gint l, r, t, b;
gint strw, strh;
- Rect *a;
+ const Rect *a;
gint hidesize;
RrMargins(dock->a_frame, &l, &t, &r, &b);
}
screen_update_areas();
-
- g_free(a);
}
void dock_app_configure(ObDockApp *app, gint w, gint h)
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 */
}
{
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;
}
}
}