summaryrefslogtreecommitdiff
path: root/openbox/dock.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-01-20 02:56:12 -0500
committerDana Jansens <danakj@orodu.net>2008-01-31 12:25:30 -0500
commit29637976e6aecf45bae84ba9ce3ecb26635012f7 (patch)
treee1fc7cf42223214e6465f9f0d96dc645bb30cf70 /openbox/dock.c
parentea481338b5f16fd81a7b33e036ead39b918a51af (diff)
make the window.h interface more consistent with the rest of openbox, hide the window_map behind some functions, and make obdockapps not obwindows anymore
Diffstat (limited to 'openbox/dock.c')
-rw-r--r--openbox/dock.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/openbox/dock.c b/openbox/dock.c
index dba74f68..291cd1d0 100644
--- a/openbox/dock.c
+++ b/openbox/dock.c
@@ -78,7 +78,7 @@ void dock_startup(gboolean reconfig)
0, 0, 0, 0, 0, 0, 0, 0);
dock = g_new0(ObDock, 1);
- dock->obwin.type = Window_Dock;
+ dock->obwin.type = OB_WINDOW_CLASS_DOCK;
dock->hidden = TRUE;
@@ -102,7 +102,7 @@ void dock_startup(gboolean reconfig)
OBT_PROP_SET32(dock->frame, NET_WM_WINDOW_TYPE, ATOM,
OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_DOCK));
- g_hash_table_insert(window_map, &dock->frame, dock);
+ window_add(&dock->frame, DOCK_AS_WINDOW(dock));
stacking_add(DOCK_AS_WINDOW(dock));
}
@@ -120,7 +120,7 @@ void dock_shutdown(gboolean reconfig)
XDestroyWindow(obt_display, dock->frame);
RrAppearanceFree(dock->a_frame);
- g_hash_table_remove(window_map, &dock->frame);
+ window_remove(dock->frame);
stacking_remove(dock);
}
@@ -131,7 +131,6 @@ void dock_add(Window win, XWMHints *wmhints)
gchar **data;
app = g_new0(ObDockApp, 1);
- app->obwin.type = Window_DockApp;
app->win = win;
app->icon_win = (wmhints->flags & IconWindowHint) ?
wmhints->icon_window : win;
@@ -184,8 +183,6 @@ void dock_add(Window win, XWMHints *wmhints)
dock_app_grab_button(app, TRUE);
- g_hash_table_insert(window_map, &app->icon_win, app);
-
ob_debug("Managed Dock App: 0x%lx (%s)\n", app->icon_win, app->class);
}
@@ -203,8 +200,6 @@ void dock_remove(ObDockApp *app, gboolean reparent)
XChangeSaveSet(obt_display, app->icon_win, SetModeDelete);
XSync(obt_display, False);
- g_hash_table_remove(window_map, &app->icon_win);
-
if (reparent)
XReparentWindow(obt_display, app->icon_win,
RootWindow(obt_display, ob_screen), app->x, app->y);
@@ -654,3 +649,17 @@ void dock_get_area(Rect *a)
RECT_SET(*a, dock->area.x, dock->area.y,
dock->area.width, dock->area.height);
}
+
+ObDockApp* dock_find_dockapp(Window xwin)
+{
+ g_assert(xwin != None);
+ GList *it;
+ /* there are never that many dock apps, so we can use a list here instead
+ of a hash table */
+ for (it = dock->dock_apps; it; it = g_list_next(it)) {
+ ObDockApp *app = it->data;
+ if (app->icon_win == xwin)
+ return app;
+ }
+ return NULL;
+}