1 /*
2  * pwm/clientwin.h
3  *
4  * Copyright (c) Tuomo Valkonen 1999-2001.
5  *
6  * You may distribute and modify this program under the terms of either
7  * the Clarified Artistic License or the GNU GPL, version 2 or later.
8  */
9 
10 #ifndef INCLUDED_CLIENTWIN_H
11 #define INCLUDED_CLIENTWIN_H
12 
13 #include "common.h"
14 #include "thing.h"
15 
16 #define CWIN_DRAG 				0x0001
17 #define CWIN_TAGGED				0x0002
18 #define CWIN_URGENT				0x0004
19 #define CWIN_WILD				0x0008
20 #define CWIN_P_WM_DELETE 		0x0100
21 #define CWIN_P_WM_TAKE_FOCUS 	0x0200
22 
23 #define CWIN_IS_SELECTED(CWIN)	((CWIN)->flags&CWIN_SELECTED)
24 #define CWIN_IS_WILD(CWIN) 		((CWIN)->flags&CWIN_WILD)
25 
26 #define MANAGE_RESPECT_POS		0x0001
27 #define MANAGE_INITIAL			0x0002
28 
29 struct _WFrame;
30 
31 typedef struct _WClientWin{
32 	INHERIT_WTHING;
33 
34 	int state;
35 	long event_mask;
36 	int dockpos;
37 
38 	Window client_win;
39 	int client_h, client_w;
40 	int orig_bw;
41 
42 	Window transient_for;
43 	XSizeHints size_hints;
44 
45 	Colormap cmap;
46 	Colormap *cmaps;
47 	Window *cmapwins;
48 	int n_cmapwins;
49 
50 	char *name;
51 	char *icon_name;
52 	char *label;
53 	int label_inst;
54 	struct _WClientWin *label_next, *label_prev;
55 	int label_width;
56 
57 	struct _WClientWin *s_cwin_next;
58 	struct _WClientWin *s_cwin_prev;
59 } WClientWin;
60 
61 
62 #define CWIN_FRAME(CWIN) ((WFrame*)((CWIN)->t_parent))
63 #define CWIN_HAS_FRAME(CWIN) clientwin_has_frame(CWIN)
64 
65 
66 extern WClientWin *manage_clientwin(Window win, int mflags);
67 extern WClientWin* create_clientwin(Window win, int flags, int initial_state,
68 									const XWindowAttributes *attr);
69 
70 extern void unmap_clientwin(WClientWin *cwin);
71 extern void unmanage_clientwin(WClientWin *cwin);
72 extern void destroy_clientwin(WClientWin *cwin);
73 extern void iconify_clientwin(WClientWin *cwin);
74 extern void kill_clientwin(WClientWin *cwin);
75 extern void close_clientwin(WClientWin *cwin);
76 
77 extern void hide_clientwin(WClientWin *cwin);
78 extern void show_clientwin(WClientWin *cwin);
79 
80 extern void get_clientwin_size_hints(WClientWin *cwin);
81 extern void set_clientwin_size(WClientWin *cwin, int w, int h);
82 extern void clientwin_reconf_at(WClientWin *cwin, int rootx, int rooty);
83 extern void send_clientmsg(Window win, Atom a);
84 
85 extern void clientwin_toggle_tagged(WClientWin *cwin);
86 
87 extern bool clientwin_has_frame(WClientWin *cwin);
88 extern void clientwin_detach(WClientWin *cwin);
89 
90 extern void attachdetach_clientwin(struct _WFrame *frame, WClientWin *cwin,
91 								   bool coords, int x, int y);
92 
93 extern void install_cmap(Colormap cmap);
94 extern void install_cwin_cmap(WClientWin *cwin);
95 
96 extern void clientwin_use_label(WClientWin *cwin);
97 extern void clientwin_unuse_label(WClientWin *cwin);
98 extern void clientwin_make_label(WClientWin *cwin, int maxw);
99 extern char *clientwin_full_label(WClientWin *cwin);
100 
101 #endif /* INCLUDED_CLIENTWIN_H */
102