summaryrefslogtreecommitdiff
path: root/openbox/window.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/window.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/window.c')
-rw-r--r--openbox/window.c54
1 files changed, 32 insertions, 22 deletions
diff --git a/openbox/window.c b/openbox/window.c
index c5e6a4ea..32f1ea52 100644
--- a/openbox/window.c
+++ b/openbox/window.c
@@ -23,7 +23,7 @@
#include "client.h"
#include "frame.h"
-GHashTable *window_map;
+static GHashTable *window_map;
static guint window_hash(Window *w) { return *w; }
static gboolean window_comp(Window *w1, Window *w2) { return *w1 == *w2; }
@@ -46,18 +46,14 @@ void window_shutdown(gboolean reconfig)
Window window_top(ObWindow *self)
{
switch (self->type) {
- case Window_Menu:
- return ((ObMenuFrame*)self)->window;
- case Window_Dock:
- return ((ObDock*)self)->frame;
- case Window_DockApp:
- /* not to be used for stacking */
- g_assert_not_reached();
- break;
- case Window_Client:
- return ((ObClient*)self)->frame->window;
- case Window_Internal:
- return ((InternalWindow*)self)->win;
+ case OB_WINDOW_CLASS_MENUFRAME:
+ return WINDOW_AS_MENUFRAME(self)->window;
+ case OB_WINDOW_CLASS_DOCK:
+ return WINDOW_AS_DOCK(self)->frame;
+ case OB_WINDOW_CLASS_CLIENT:
+ return WINDOW_AS_CLIENT(self)->frame->window;
+ case OB_WINDOW_CLASS_INTERNALWINDOW:
+ return WINDOW_AS_INTERNALWINDOW(self)->window;
}
g_assert_not_reached();
return None;
@@ -66,19 +62,33 @@ Window window_top(ObWindow *self)
ObStackingLayer window_layer(ObWindow *self)
{
switch (self->type) {
- case Window_Menu:
- return OB_STACKING_LAYER_INTERNAL;
- case Window_Dock:
+ case OB_WINDOW_CLASS_DOCK:
return config_dock_layer;
- case Window_DockApp:
- /* not to be used for stacking */
- g_assert_not_reached();
- break;
- case Window_Client:
+ case OB_WINDOW_CLASS_CLIENT:
return ((ObClient*)self)->layer;
- case Window_Internal:
+ case OB_WINDOW_CLASS_MENUFRAME:
+ case OB_WINDOW_CLASS_INTERNALWINDOW:
return OB_STACKING_LAYER_INTERNAL;
}
g_assert_not_reached();
return None;
}
+
+ObWindow* window_find(Window xwin)
+{
+ g_assert(xwin != None);
+ return g_hash_table_lookup(window_map, &xwin);
+}
+
+void window_add(Window *xwin, ObWindow *win)
+{
+ g_assert(xwin != NULL);
+ g_assert(win != NULL);
+ g_hash_table_insert(window_map, xwin, win);
+}
+
+void window_remove(Window xwin)
+{
+ g_assert(xwin != None);
+ g_hash_table_remove(window_map, &xwin);
+}