diff options
| author | Dana Jansens <danakj@orodu.net> | 2008-01-20 02:56:12 -0500 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2008-01-31 12:25:30 -0500 |
| commit | 29637976e6aecf45bae84ba9ce3ecb26635012f7 (patch) | |
| tree | e1fc7cf42223214e6465f9f0d96dc645bb30cf70 /openbox/dock.c | |
| parent | ea481338b5f16fd81a7b33e036ead39b918a51af (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.c | 25 |
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; +} |
