Left Half / Right Half Maximize
[wmaker-crm.git] / src / window.h
Commit [+]AuthorDateLineData
9d2e6ef9 scottc1998-09-29 22:36:29 +00001/*
9af1c6c4 dan1998-10-21 14:43:47 +00002 * Window Maker window manager
6830b057 dan2004-10-12 21:28:27 +00003 *
4153e2fd dan2003-01-16 23:30:45 +00004 * Copyright (c) 1997-2003 Alfredo K. Kojima
9d2e6ef9 scottc1998-09-29 22:36:29 +00005 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
6830b057 dan2004-10-12 21:28:27 +000018 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
9d2e6ef9 scottc1998-09-29 22:36:29 +000019 * USA.
20 */
21
22#ifndef WMWINDOW_H_
23#define WMWINDOW_H_
24
25#include <wraster.h>
26
27#include "wconfig.h"
28#include "GNUstep.h"
9d2e6ef9 scottc1998-09-29 22:36:29 +000029#include "texture.h"
30#include "menu.h"
31#include "application.h"
32
33/* not defined in my X11 headers */
34#ifndef UrgencyHint
35#define UrgencyHint (1L << 8)
36#endif
37
38
39#define BORDER_TOP 1
40#define BORDER_BOTTOM 2
41#define BORDER_LEFT 4
42#define BORDER_RIGHT 8
43#define BORDER_ALL (1|2|4|8)
44
45
46#define CLIENT_EVENTS (StructureNotifyMask | PropertyChangeMask\
6830b057 dan2004-10-12 21:28:27 +000047 | EnterWindowMask | LeaveWindowMask | ColormapChangeMask \
48 | FocusChangeMask | VisibilityChangeMask)
9d2e6ef9 scottc1998-09-29 22:36:29 +000049
50typedef enum {
51 WFM_PASSIVE, WFM_NO_INPUT, WFM_LOCALLY_ACTIVE, WFM_GLOBALLY_ACTIVE
52} FocusMode;
53
54
55/*
56 * window attribute flags.
6830b057 dan2004-10-12 21:28:27 +000057 *
9d2e6ef9 scottc1998-09-29 22:36:29 +000058 * Note: attributes that should apply to the application as a
672c42cc dan2001-12-17 04:02:33 +000059 * whole should only access the flags from app->main_window_desc->window_flags
9d2e6ef9 scottc1998-09-29 22:36:29 +000060 * This is to make sure that the application doesn't have many different
6830b057 dan2004-10-12 21:28:27 +000061 * values for the same option. For example, imagine xfoo, which has
9d2e6ef9 scottc1998-09-29 22:36:29 +000062 * foo.bar as leader and it a child window named foo.baz. If you set
63 * StartHidden YES for foo.bar and NO for foo.baz we must *always* guarantee
64 * that the value that will be used will be that of the leader foo.bar.
65 * The attributes inspector must always save application wide options
66 * in the name of the leader window, not the child.
6830b057 dan2004-10-12 21:28:27 +000067 *
9d2e6ef9 scottc1998-09-29 22:36:29 +000068 */
69/*
70 * All flags must have their default values = 0
6830b057 dan2004-10-12 21:28:27 +000071 *
0261c326 dan1999-01-06 15:22:33 +000072 * New flag scheme:
6830b057 dan2004-10-12 21:28:27 +000073 *
0261c326 dan1999-01-06 15:22:33 +000074 * user_flags, defined_flags
75 * client_flags
6830b057 dan2004-10-12 21:28:27 +000076 *
0261c326 dan1999-01-06 15:22:33 +000077 * if defined window_flag then window_flag else client_flag
6830b057 dan2004-10-12 21:28:27 +000078 *
9d2e6ef9 scottc1998-09-29 22:36:29 +000079 */
0261c326 dan1999-01-06 15:22:33 +000080
81#define WFLAGP(wwin, FLAG) ((wwin)->defined_user_flags.FLAG \
6830b057 dan2004-10-12 21:28:27 +000082 ? (wwin)->user_flags.FLAG \
83 : (wwin)->client_flags.FLAG)
0261c326 dan1999-01-06 15:22:33 +000084
85#define WSETUFLAG(wwin, FLAG, VAL) (wwin)->user_flags.FLAG = (VAL),\
6830b057 dan2004-10-12 21:28:27 +000086 (wwin)->defined_user_flags.FLAG = 1
0261c326 dan1999-01-06 15:22:33 +000087
9d2e6ef9 scottc1998-09-29 22:36:29 +000088typedef struct {
89 /* OpenStep */
90 unsigned int no_titlebar:1; /* draw titlebar? */
91 unsigned int no_resizable:1;
92 unsigned int no_closable:1;
93 unsigned int no_miniaturizable:1;
f2de1c9d kojima2000-01-14 16:30:56 +000094 unsigned int no_border:1; /* 1 pixel border around window */
c28f3b2c id1999-05-20 23:30:53 +000095#ifdef XKB_BUTTON_HINT
b3112e2b id1999-05-22 21:30:35 +000096 unsigned int no_language_button:1;
c28f3b2c id1999-05-20 23:30:53 +000097#endif
9aca0d5f dan2004-10-12 01:34:32 +000098 unsigned int no_movable:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +000099
100 /* decorations */
101 unsigned int no_resizebar:1; /* draw the bottom handle? */
102 unsigned int no_close_button:1; /* draw a close button? */
103 unsigned int no_miniaturize_button:1; /* draw an iconify button? */
6830b057 dan2004-10-12 21:28:27 +0000104
9d2e6ef9 scottc1998-09-29 22:36:29 +0000105 unsigned int broken_close:1; /* is the close button broken? */
106
107 /* ours */
108 unsigned int kill_close:1; /* can't send WM_DELETE_WINDOW */
416e3a82 dan1999-01-25 19:06:50 +0000109
9d2e6ef9 scottc1998-09-29 22:36:29 +0000110 unsigned int no_shadeable:1;
111 unsigned int omnipresent:1;
112 unsigned int skip_window_list:1;
9007a657 dan1998-11-23 11:32:19 +0000113 unsigned int floating:1; /* put in WMFloatingLevel */
114 unsigned int sunken:1; /* put in WMSunkenLevel */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000115 unsigned int no_bind_keys:1; /* intercept wm kbd binds
6830b057 dan2004-10-12 21:28:27 +0000116 * while window is focused */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000117 unsigned int no_bind_mouse:1; /* intercept mouse events
6830b057 dan2004-10-12 21:28:27 +0000118 * on client area while window
119 * is focused */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000120 unsigned int no_hide_others:1; /* hide window when doing hideothers */
121 unsigned int no_appicon:1; /* make app icon */
d06532cb kojima2001-02-11 04:29:30 +0000122
672c42cc dan2001-12-17 04:02:33 +0000123 unsigned int shared_appicon:1;
d06532cb kojima2001-02-11 04:29:30 +0000124
dfe360e5 dan1999-09-17 23:52:59 +0000125 unsigned int dont_move_off:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000126
127 unsigned int no_focusable:1;
6d75291e
CM
Carlos R. Mafra2009-08-25 21:15:35 +0200128 unsigned int dont_focus_across_wksp:1; /* don't let wmaker switch workspace to follow
129 * a focus request */
6830b057 dan2004-10-12 21:28:27 +0000130
9d2e6ef9 scottc1998-09-29 22:36:29 +0000131 unsigned int always_user_icon:1; /* ignore client IconPixmap or
6830b057 dan2004-10-12 21:28:27 +0000132 * IconWindow */
0261c326 dan1999-01-06 15:22:33 +0000133
9d2e6ef9 scottc1998-09-29 22:36:29 +0000134 unsigned int start_miniaturized:1;
135 unsigned int start_hidden:1;
0261c326 dan1999-01-06 15:22:33 +0000136 unsigned int start_maximized:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000137 unsigned int dont_save_session:1; /* do not save app's state in session */
0261c326 dan1999-01-06 15:22:33 +0000138
088c0ac2 dan1999-03-09 14:58:01 +0000139 unsigned int full_maximize:1;
140
9aca0d5f dan2004-10-12 01:34:32 +0000141#ifdef VIRTUAL_DESKTOP
142 unsigned int virtual_stick:1;
143#endif
144
9d2e6ef9 scottc1998-09-29 22:36:29 +0000145 /*
146 * emulate_app_icon must be automatically disabled for apps that can
147 * generate their own appicons and for apps that have no_appicon=1
148 */
149 unsigned int emulate_appicon:1;
416e3a82 dan1999-01-25 19:06:50 +0000150
9d2e6ef9 scottc1998-09-29 22:36:29 +0000151} WWindowAttributes;
152
0261c326 dan1999-01-06 15:22:33 +0000153
154
9d2e6ef9 scottc1998-09-29 22:36:29 +0000155/*
156 * Window manager protocols that both the client as we understand.
157 */
158typedef struct {
159 unsigned int TAKE_FOCUS:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000160 unsigned int DELETE_WINDOW:1;
416e3a82 dan1999-01-25 19:06:50 +0000161 unsigned int SAVE_YOURSELF:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000162 /* WindowMaker specific */
163 unsigned int MINIATURIZE_WINDOW:1;
6830b057 dan2004-10-12 21:28:27 +0000164#ifdef MONITOR_HEARTBEAT
9af1c6c4 dan1998-10-21 14:43:47 +0000165 unsigned int HEARTBEAT:1;
166#endif
9d2e6ef9 scottc1998-09-29 22:36:29 +0000167} WProtocols;
168
169
170/*
672c42cc dan2001-12-17 04:02:33 +0000171 * Structure used for storing fake window group information
172 */
173typedef struct WFakeGroupLeader {
174 char *identifier;
90c77b1a dan2001-12-17 14:46:31 +0000175 Window leader;
176 Window origLeader;
672c42cc dan2001-12-17 04:02:33 +0000177 int retainCount;
178} WFakeGroupLeader;
179
180
181/*
9d2e6ef9 scottc1998-09-29 22:36:29 +0000182 * Stores client window information. Each client window has it's
183 * structure created when it's being first mapped.
184 */
185typedef struct WWindow {
186 struct WWindow *prev; /* window focus list */
187 struct WWindow *next;
188
189 WScreen *screen_ptr; /* pointer to the screen structure */
0261c326 dan1999-01-06 15:22:33 +0000190 WWindowAttributes user_flags; /* window attribute flags set by user */
191 WWindowAttributes defined_user_flags;/* mask for user_flags */
192 WWindowAttributes client_flags; /* window attribute flags set by app
6830b057 dan2004-10-12 21:28:27 +0000193 * initialized with global defaults */
0261c326 dan1999-01-06 15:22:33 +0000194
9d2e6ef9 scottc1998-09-29 22:36:29 +0000195 struct InspectorPanel *inspector; /* pointer to attribute editor panel */
196
197 struct WFrameWindow *frame; /* the frame window */
198 int frame_x, frame_y; /* position of the frame in root*/
199
200 struct {
6830b057 dan2004-10-12 21:28:27 +0000201 int x, y;
202 unsigned int width, height; /* original geometry of the window */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000203 } old_geometry; /* (before things like maximize) */
204
9aca0d5f dan2004-10-12 01:34:32 +0000205 struct {
6830b057 dan2004-10-12 21:28:27 +0000206 int x, y;
207 unsigned int width, height; /* original geometry of the window */
9aca0d5f dan2004-10-12 01:34:32 +0000208 } bfs_geometry; /* (before fullscreen) */
209
9d2e6ef9 scottc1998-09-29 22:36:29 +0000210 /* client window info */
211 short old_border_width; /* original border width of client_win*/
212 Window client_win; /* the window we're managing */
6830b057 dan2004-10-12 21:28:27 +0000213 WObjDescriptor client_descriptor; /* dummy descriptor for client */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000214 struct {
6830b057 dan2004-10-12 21:28:27 +0000215 int x, y; /* position of *client* relative
216 * to root */
217 unsigned int width, height; /* size of the client window */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000218 } client;
219
220 XSizeHints *normal_hints; /* WM_NORMAL_HINTS */
221 XWMHints *wm_hints; /* WM_HINTS (optional) */
222 char *wm_instance; /* instance of WM_CLASS */
223 char *wm_class; /* class of WM_CLASS */
224 GNUstepWMAttributes *wm_gnustep_attr;/* GNUstep window attributes */
225
226 int state; /* state as in ICCCM */
672c42cc dan2001-12-17 04:02:33 +0000227
9d2e6ef9 scottc1998-09-29 22:36:29 +0000228 Window transient_for; /* WM_TRANSIENT_FOR */
672c42cc dan2001-12-17 04:02:33 +0000229
230 WFakeGroupLeader *fake_group; /* Fake group leader for grouping into
231 a single appicon */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000232 Window group_id; /* the leader window of the group */
233 Window client_leader; /* WM_CLIENT_LEADER if not
6830b057 dan2004-10-12 21:28:27 +0000234 internal_window */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000235
236 Window main_window; /* main window for the application */
672c42cc dan2001-12-17 04:02:33 +0000237
a1a7ba76 dan2002-01-11 05:08:44 +0000238 Window orig_main_window; /* original main window of application.
239 used for the shared appicon thing */
240
9d2e6ef9 scottc1998-09-29 22:36:29 +0000241 int cmap_window_no;
242 Window *cmap_windows;
672c42cc dan2001-12-17 04:02:33 +0000243
9d2e6ef9 scottc1998-09-29 22:36:29 +0000244 /* protocols */
245 WProtocols protocols; /* accepted WM_PROTOCOLS */
672c42cc dan2001-12-17 04:02:33 +0000246
9d2e6ef9 scottc1998-09-29 22:36:29 +0000247 FocusMode focus_mode; /* type of keyboard input focus */
248
e7495baf dan1999-02-17 11:06:40 +0000249 long event_mask; /* the event mask thats selected */
250
9af1c6c4 dan1998-10-21 14:43:47 +0000251#ifdef MONITOR_HEARTBEAT
252 time_t last_beat;
253#endif
9d2e6ef9 scottc1998-09-29 22:36:29 +0000254 struct {
6830b057 dan2004-10-12 21:28:27 +0000255 /* state flags */
256 unsigned int mapped:1;
257 unsigned int focused:1;
258 unsigned int miniaturized:1;
259 unsigned int hidden:1;
260 unsigned int shaded:1;
69244548 Johann Haarhoff2009-08-28 21:31:26 +0200261 unsigned int maximized:4;
6830b057 dan2004-10-12 21:28:27 +0000262 unsigned int fullscreen:1;
263 unsigned int omnipresent:1;
264
265 unsigned int semi_focused:1;
266 /* window type flags */
267 unsigned int urgent:1; /* if wm_hints says this is urgent */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000268#ifdef SHAPE
6830b057 dan2004-10-12 21:28:27 +0000269 unsigned int shaped:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000270#endif
0261c326 dan1999-01-06 15:22:33 +0000271
6830b057 dan2004-10-12 21:28:27 +0000272 /* info flags */
273 unsigned int is_gnustep:1; /* 1 if the window belongs to a GNUstep
274 app */
275
276 unsigned int buttons_dont_fit:1;
277 unsigned int rebuild_texture:1; /* the window was resized and
278 * gradients should be re-rendered */
279 unsigned int needs_full_repaint:1;/* does a full repaint of the
280 * window next time it's painted */
281 unsigned int icon_moved:1; /* icon for this window was moved
282 * by the user */
283 unsigned int selected:1; /* multiple window selection */
284 unsigned int skip_next_animation:1;
285 unsigned int internal_window:1;
286 unsigned int changing_workspace:1;
9d2e6ef9 scottc1998-09-29 22:36:29 +0000287
288 unsigned int inspector_open:1; /* attrib inspector is already open */
e7495baf dan1999-02-17 11:06:40 +0000289
6830b057 dan2004-10-12 21:28:27 +0000290 unsigned int destroyed:1; /* window was already destroyed */
0261c326 dan1999-01-06 15:22:33 +0000291
6830b057 dan2004-10-12 21:28:27 +0000292 unsigned int menu_open_for_me:1; /* window commands menu */
0261c326 dan1999-01-06 15:22:33 +0000293
6830b057 dan2004-10-12 21:28:27 +0000294 unsigned int waiting_save_ack:1; /* waiting for SAVE_YOURSELF ack */
e7495baf dan1999-02-17 11:06:40 +0000295
6830b057 dan2004-10-12 21:28:27 +0000296 unsigned int obscured:1; /* window is obscured */
088c0ac2 dan1999-03-09 14:58:01 +0000297
6830b057 dan2004-10-12 21:28:27 +0000298 unsigned int dragged_while_fmaximized;
4a473b8a kojima1999-04-10 18:27:21 +0000299
6830b057 dan2004-10-12 21:28:27 +0000300 unsigned int user_changed_width:1;
301 unsigned int user_changed_height:1;
302 unsigned int wm_name_changed:1;
4a473b8a kojima1999-04-10 18:27:21 +0000303
9aca0d5f dan2004-10-12 01:34:32 +0000304#ifdef NETWM_HINTS
6830b057 dan2004-10-12 21:28:27 +0000305 unsigned int net_state_from_client:1; /* state hint was set by client */
306 unsigned int net_skip_pager:1;
307 unsigned int net_handle_icon:1;
308 unsigned int net_show_desktop:1;
70555308 kojima2004-10-16 22:05:04 +0000309 unsigned int net_has_title:1; /* use netwm version of WM_NAME */
310 unsigned int net_has_icon_title:1;
abc09951 kojima2001-09-12 21:43:42 +0000311#endif
9d2e6ef9 scottc1998-09-29 22:36:29 +0000312 } flags; /* state of the window */
313
9d2e6ef9 scottc1998-09-29 22:36:29 +0000314 struct WIcon *icon; /* icon info for the window */
315 int icon_x, icon_y; /* position of the icon */
9aca0d5f dan2004-10-12 01:34:32 +0000316#ifdef NETWM_HINTS
317 int icon_w, icon_h;
318 RImage *net_icon_image;
319 Atom type;
320#endif
9d2e6ef9 scottc1998-09-29 22:36:29 +0000321} WWindow;
322
323
9aca0d5f dan2004-10-12 01:34:32 +0000324#define HAS_TITLEBAR(w) (!(WFLAGP((w), no_titlebar) || (w)->flags.fullscreen))
325#define HAS_RESIZEBAR(w) (!(WFLAGP((w), no_resizebar) || (w)->flags.fullscreen))
326#define HAS_BORDER(w) (!(WFLAGP((w), no_border) || (w)->flags.fullscreen))
327#define IS_MOVABLE(w) (!(WFLAGP((w), no_movable) || (w)->flags.fullscreen))
328#define IS_RESIZABLE(w) (!(WFLAGP((w), no_resizable) || (w)->flags.fullscreen))
329
330#ifdef VIRTUAL_DESKTOP
331# define IS_VSTUCK(w) (WFLAGP((w), virtual_stick) || (w)->flags.fullscreen)
332#endif
333
334/* XXX: CHECK THIS,.. IT SEEMED WEIRD TO ME!!! */
335#define IS_OMNIPRESENT(w) ((w)->flags.omnipresent | WFLAGP(w, omnipresent))
0261c326 dan1999-01-06 15:22:33 +0000336
337#define WINDOW_LEVEL(w) ((w)->frame->core->stacking->window_level)
338
ad641c19 dan2005-07-02 19:23:41 +0000339#define IS_GNUSTEP_MENU(w) ((w)->wm_gnustep_attr && \
340 ((w)->wm_gnustep_attr->flags & GSWindowLevelAttr) && \
341 ((w)->wm_gnustep_attr->window_level==WMMainMenuWindowLevel || \
342 (w)->wm_gnustep_attr->window_level==WMSubmenuWindowLevel))
0261c326 dan1999-01-06 15:22:33 +0000343
344
9af1c6c4 dan1998-10-21 14:43:47 +0000345/*
346 * Changes to this must update wWindowSaveState/getSavedState
6830b057 dan2004-10-12 21:28:27 +0000347 *
9af1c6c4 dan1998-10-21 14:43:47 +0000348 */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000349typedef struct WSavedState {
350 int workspace;
351 int miniaturized;
352 int shaded;
353 int hidden;
1e351cb5 kojima2000-05-21 16:34:23 +0000354 int maximized;
355 int x; /* original geometry of the */
356 int y; /* window if it's maximized */
9af1c6c4 dan1998-10-21 14:43:47 +0000357 unsigned int w;
358 unsigned int h;
9a3d1fef kojima1999-03-18 04:26:47 +0000359 unsigned window_shortcuts; /* mask like 1<<shortcut_number */
9d2e6ef9 scottc1998-09-29 22:36:29 +0000360} WSavedState;
361
362
363typedef struct WWindowState {
364 char *instance;
365 char *class;
366 char *command;
367 pid_t pid;
368 WSavedState *state;
369 struct WWindowState *next;
370} WWindowState;
371
372
9af1c6c4 dan1998-10-21 14:43:47 +0000373typedef void* WMagicNumber;
374
375
376
9d2e6ef9 scottc1998-09-29 22:36:29 +0000377void wWindowDestroy(WWindow *wwin);
378WWindow *wWindowCreate();
379
380#ifdef SHAPE
381void wWindowSetShape(WWindow *wwin);
9af1c6c4 dan1998-10-21 14:43:47 +0000382void wWindowClearShape(WWindow *wwin);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000383#endif
384
385WWindow *wManageWindow(WScreen *scr, Window window);
386
416e3a82 dan1999-01-25 19:06:50 +0000387void wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000388
e7495baf dan1999-02-17 11:06:40 +0000389void wWindowFocus(WWindow *wwin, WWindow *owin);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000390void wWindowUnfocus(WWindow *wwin);
7a491db6 kojima2001-02-11 02:18:26 +0000391
392void wWindowUpdateName(WWindow *wwin, char *newTitle);
c0317dda dan2005-08-22 23:58:19 +0000393void wWindowConstrainSize(WWindow *wwin, unsigned int *nwidth, unsigned int *nheight);
394void wWindowCropSize(WWindow *wwin, unsigned int maxw, unsigned int maxh,
395 unsigned int *nwidth, unsigned int *nheight);
6830b057 dan2004-10-12 21:28:27 +0000396void wWindowConfigure(WWindow *wwin, int req_x, int req_y,
397 int req_width, int req_height);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000398
399void wWindowMove(WWindow *wwin, int req_x, int req_y);
400
401void wWindowSynthConfigureNotify(WWindow *wwin);
402
403WWindow *wWindowFor(Window window);
404
405
406void wWindowConfigureBorders(WWindow *wwin);
407
408void wWindowUpdateButtonImages(WWindow *wwin);
409
410void wWindowSaveState(WWindow *wwin);
411
412void wWindowChangeWorkspace(WWindow *wwin, int workspace);
413
414void wWindowSetKeyGrabs(WWindow *wwin);
415
416void wWindowResetMouseGrabs(WWindow *wwin);
417
418WWindow *wManageInternalWindow(WScreen *scr, Window window, Window owner,
6830b057 dan2004-10-12 21:28:27 +0000419 char *title, int x, int y,
420 int width, int height);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000421
0261c326 dan1999-01-06 15:22:33 +0000422void wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace);
9d2e6ef9 scottc1998-09-29 22:36:29 +0000423
424void wWindowUpdateGNUstepAttr(WWindow *wwin, GNUstepWMAttributes *attr);
425
426void wWindowMap(WWindow *wwin);
427
416e3a82 dan1999-01-25 19:06:50 +0000428void wWindowUnmap(WWindow *wwin);
429
9d2e6ef9 scottc1998-09-29 22:36:29 +0000430Bool wWindowCanReceiveFocus(WWindow *wwin);
431
9af1c6c4 dan1998-10-21 14:43:47 +0000432void wWindowDeleteSavedStatesForPID(pid_t pid);
433
434WMagicNumber wWindowAddSavedState(char *instance, char *class, char *command,
435 pid_t pid, WSavedState *state);
436
437WMagicNumber wWindowGetSavedState(Window win);
438
439void wWindowDeleteSavedState(WMagicNumber id);
440
0261c326 dan1999-01-06 15:22:33 +0000441Bool wWindowObscuresWindow(WWindow *wwin, WWindow *obscured);
9af1c6c4 dan1998-10-21 14:43:47 +0000442
5ef342d9 kojima2001-09-06 21:42:28 +0000443void wWindowSetOmnipresent(WWindow *wwin, Bool flag);
444
9d2e6ef9 scottc1998-09-29 22:36:29 +0000445#endif