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