2 * ion/ioncore/clientwin.h
4 * Copyright (c) Tuomo Valkonen 1999-2007.
6 * Ion is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
12 #ifndef ION_IONCORE_CLIENTWIN_H
13 #define ION_IONCORE_CLIENTWIN_H
15 #include <libextl/extl.h>
16 #include <libtu/ptrlist.h>
17 #include <libmainloop/hooks.h>
21 #include "rectangle.h"
25 #include "sizepolicy.h"
28 #define CLIENTWIN_P_WM_DELETE 0x00001
29 #define CLIENTWIN_P_WM_TAKE_FOCUS 0x00002
30 #define CLIENTWIN_PROP_ACROBATIC 0x00010
31 #define CLIENTWIN_PROP_TRANSPARENT 0x00020
32 #define CLIENTWIN_PROP_IGNORE_CFGRQ 0x00040
33 #define CLIENTWIN_PROP_MINSIZE 0x00100
34 #define CLIENTWIN_PROP_MAXSIZE 0x00200
35 #define CLIENTWIN_PROP_ASPECT 0x00400
36 #define CLIENTWIN_PROP_RSZINC 0x00800
37 #define CLIENTWIN_PROP_I_MINSIZE 0x01000
38 #define CLIENTWIN_PROP_I_MAXSIZE 0x02000
39 #define CLIENTWIN_PROP_I_ASPECT 0x04000
40 #define CLIENTWIN_PROP_I_RSZINC 0x08000
41 #define CLIENTWIN_USE_NET_WM_NAME 0x10000
42 #define CLIENTWIN_FS_RQ 0x20000
43 #define CLIENTWIN_UNMAP_RQ 0x40000
44 #define CLIENTWIN_NEED_CFGNTFY 0x80000
47 DECLCLASS(WClientWin){
64 XSizeHints size_hints;
70 extern void clientwin_get_protocols(WClientWin *cwin);
71 extern void clientwin_get_size_hints(WClientWin *cwin);
72 extern void clientwin_unmapped(WClientWin *cwin);
73 extern void clientwin_destroyed(WClientWin *cwin);
74 extern void clientwin_kill(WClientWin *cwin);
75 extern void clientwin_rqclose(WClientWin *cwin, bool relocate_ignored);
77 extern void clientwin_tfor_changed(WClientWin *cwin);
79 extern void clientwin_get_set_name(WClientWin *cwin);
81 extern void clientwin_handle_configure_request(WClientWin *cwin,
82 XConfigureRequestEvent *ev);
84 extern void clientwin_broken_app_resize_kludge(WClientWin *cwin);
86 extern WRegion *clientwin_load(WWindow *par, const WFitParams *fp,
89 /* Some standard winprops */
92 TRANSIENT_MODE_NORMAL,
93 TRANSIENT_MODE_CURRENT,
97 extern bool clientwin_get_switchto(const WClientWin *cwin);
98 extern int clientwin_get_transient_mode(const WClientWin *cwin);
99 extern WClientWin *clientwin_get_transient_for(const WClientWin *cwin);
103 /* This hook has parameters (WClientWin*, WManageParams*). */
104 extern WHook *clientwin_do_manage_alt;
105 /* This hook has just WClientWin* as parameter. */
106 extern WHook *clientwin_mapped_hook;
107 /* This hook has an X Window id as parameter. */
108 extern WHook *clientwin_unmapped_hook;
109 /* This hook has (WClientWin*, const XPropertyEvent *) as parameters on
110 * C side, and (WClientWin*, int atom) on Lua side.
112 extern WHook *clientwin_property_change_hook;
116 extern WClientWin *ioncore_manage_clientwin(Window win, bool maprq);
118 #endif /* ION_IONCORE_CLIENTWIN_H */