]> icculus.org git repositories - dana/openbox.git/blob - openbox/window.h
Clients Menus and Slits are all 'ObWindow's now.
[dana/openbox.git] / openbox / window.h
1 #ifndef __window_h
2 #define __window_h
3
4 #include <X11/Xlib.h>
5
6 typedef enum {
7     Window_Menu,
8     Window_Slit,
9     Window_Client
10 } Window_InternalType;
11
12 typedef struct ObWindow {
13     Window_InternalType type;
14 } ObWindow;
15
16 #define WINDOW_IS_MENU(win) (((ObWindow*)win)->type == Window_Menu)
17 #define WINDOW_IS_SLIT(win) (((ObWindow*)win)->type == Window_Slit)
18 #define WINDOW_IS_CLIENT(win) (((ObWindow*)win)->type == Window_Client)
19
20 struct Menu;
21 struct Slit;
22 struct Client;
23
24 #define WINDOW_AS_MENU(win) ((struct Menu*)win)
25 #define WINDOW_AS_SLIT(win) ((struct Slit*)win)
26 #define WINDOW_AS_CLIENT(win) ((struct Client*)win)
27
28 #define MENU_AS_WINDOW(menu) ((ObWindow*)menu)
29 #define SLIT_AS_WINDOW(slit) ((ObWindow*)slit)
30 #define CLIENT_AS_WINDOW(client) ((ObWindow*)client)
31
32 Window window_top(ObWindow *self);
33 Window window_layer(ObWindow *self);
34
35 #endif