]> icculus.org git repositories - mikachu/openbox.git/blob - openbox/slit.h
add anotehr stacking_add function.
[mikachu/openbox.git] / openbox / slit.h
1 #ifndef __slit_h
2 #define __slit_h
3
4 #include "timer.h"
5 #include "render/render.h"
6 #include "window.h"
7 #include "stacking.h"
8
9 #include <glib.h>
10 #include <X11/Xlib.h>
11 #include <X11/Xutil.h>
12
13 typedef enum {
14     SlitPos_Floating,
15     SlitPos_TopLeft,
16     SlitPos_Top,
17     SlitPos_TopRight,
18     SlitPos_Right,
19     SlitPos_BottomRight,
20     SlitPos_Bottom,
21     SlitPos_BottomLeft,
22     SlitPos_Left
23 } SlitPosition;
24
25 typedef struct Slit {
26     ObWindow obwin;
27
28     Window frame;
29     StackLayer layer;
30
31     /* user-requested position stuff */
32     SlitPosition pos;
33     int gravity;
34     int user_x, user_y;
35
36     /* actual position (when not auto-hidden) */
37     int x, y;
38     int w, h;
39
40     gboolean horz;
41     gboolean hide;
42     gboolean hidden;
43
44     Appearance *a_frame;
45
46     Timer *hide_timer;
47
48     GList *slit_apps;
49 } Slit;
50
51 typedef struct SlitApp {
52     int ignore_unmaps;
53
54     Slit *slit;
55     Window icon_win;
56     Window win;
57     int x;
58     int y;
59     int w;
60     int h;
61 } SlitApp;
62
63 extern GHashTable *slit_map;
64 extern GHashTable *slit_app_map;
65
66 void slit_startup();
67 void slit_shutdown();
68
69 void slit_configure_all();
70 void slit_hide(Slit *self, gboolean hide);
71
72 void slit_add(Window win, XWMHints *wmhints);
73
74 void slit_remove_all();
75 void slit_remove(SlitApp *app, gboolean reparent);
76
77 void slit_app_drag(SlitApp *app, XMotionEvent *e);
78 void slit_app_configure(SlitApp *app, int w, int h);
79
80 #endif