]> git.decadent.org.uk Git - ion3.git/blob - ioncore/clientwin.h
Update cfg_kludge_flash for Flash 10
[ion3.git] / ioncore / clientwin.h
1 /*
2  * ion/ioncore/clientwin.h
3  *
4  * Copyright (c) Tuomo Valkonen 1999-2009. 
5  *
6  * See the included file LICENSE for details.
7  */
8
9 #ifndef ION_IONCORE_CLIENTWIN_H
10 #define ION_IONCORE_CLIENTWIN_H
11
12 #include <libextl/extl.h>
13 #include <libtu/ptrlist.h>
14 #include <libmainloop/hooks.h>
15 #include "common.h"
16 #include "region.h"
17 #include "window.h"
18 #include "rectangle.h"
19 #include "attach.h"
20 #include "manage.h"
21 #include "pholder.h"
22 #include "sizepolicy.h"
23
24
25 #define CLIENTWIN_P_WM_DELETE        0x00001
26 #define CLIENTWIN_P_WM_TAKE_FOCUS    0x00002
27 #define CLIENTWIN_PROP_ACROBATIC     0x00010
28 #define CLIENTWIN_PROP_TRANSPARENT   0x00020
29 #define CLIENTWIN_PROP_IGNORE_CFGRQ  0x00040
30 #define CLIENTWIN_PROP_MINSIZE       0x00100
31 #define CLIENTWIN_PROP_MAXSIZE       0x00200
32 #define CLIENTWIN_PROP_ASPECT        0x00400
33 #define CLIENTWIN_PROP_RSZINC        0x00800
34 #define CLIENTWIN_PROP_I_MINSIZE     0x01000
35 #define CLIENTWIN_PROP_I_MAXSIZE     0x02000
36 #define CLIENTWIN_PROP_I_ASPECT      0x04000
37 #define CLIENTWIN_PROP_I_RSZINC      0x08000
38 #define CLIENTWIN_USE_NET_WM_NAME    0x10000
39 #define CLIENTWIN_FS_RQ              0x20000
40 #define CLIENTWIN_UNMAP_RQ           0x40000
41 #define CLIENTWIN_NEED_CFGNTFY       0x80000
42 #define CLIENTWIN_PROP_O_VERT       0x100000
43 #define CLIENTWIN_PROP_O_HORIZ      0x200000
44
45 DECLCLASS(WClientWin){
46     WRegion region;
47     
48     int flags;
49     int state;
50     int event_mask;
51     Window win;
52     
53     int orig_bw;
54
55     Colormap cmap;
56     Colormap *cmaps;
57     Window *cmapwins;
58     int n_cmapwins;
59
60     XSizeHints size_hints;
61     
62     ExtlTab proptab;
63 };
64
65
66 extern void clientwin_get_protocols(WClientWin *cwin);
67 extern void clientwin_get_size_hints(WClientWin *cwin);
68 extern void clientwin_unmapped(WClientWin *cwin);
69 extern void clientwin_destroyed(WClientWin *cwin);
70 extern void clientwin_kill(WClientWin *cwin);
71 extern void clientwin_rqclose(WClientWin *cwin, bool relocate_ignored);
72
73 extern void clientwin_tfor_changed(WClientWin *cwin);
74
75 extern void clientwin_get_set_name(WClientWin *cwin);
76
77 extern void clientwin_handle_configure_request(WClientWin *cwin,
78                                                XConfigureRequestEvent *ev);
79
80 extern void clientwin_broken_app_resize_kludge(WClientWin *cwin);
81
82 extern WRegion *clientwin_load(WWindow *par, const WFitParams *fp,
83                                ExtlTab tab);
84
85 /* Some standard winprops */
86
87 enum{
88     TRANSIENT_MODE_NORMAL,
89     TRANSIENT_MODE_CURRENT,
90     TRANSIENT_MODE_OFF
91 };
92
93 extern bool clientwin_get_switchto(const WClientWin *cwin);
94 extern int clientwin_get_transient_mode(const WClientWin *cwin);
95 extern WClientWin *clientwin_get_transient_for(const WClientWin *cwin);
96
97 /* Hooks */
98
99 /* This hook has parameters (WClientWin*, WManageParams*). */
100 extern WHook *clientwin_do_manage_alt;
101 /* This hook has just WClientWin* as parameter. */
102 extern WHook *clientwin_mapped_hook;
103 /* This hook has an X Window id as parameter. */
104 extern WHook *clientwin_unmapped_hook;
105 /* This hook has (WClientWin*, const XPropertyEvent *) as parameters on
106  * C side, and (WClientWin*, int atom) on Lua side.
107  */
108 extern WHook *clientwin_property_change_hook;
109
110 /* Manage */
111
112 extern WClientWin *ioncore_manage_clientwin(Window win, bool maprq);
113
114 #endif /* ION_IONCORE_CLIENTWIN_H */