1 /* GNUstep.h-- stuff for compatibility with GNUstep applications
2  *
3  *  Window Maker window manager
4  *
5  *  Copyright (c) 1997-2003 Alfredo K. Kojima
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License along
18  *  with this program; if not, write to the Free Software Foundation, Inc.,
19  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21 
22 
23 #ifndef WMGNUSTEP_H_
24 #define WMGNUSTEP_H_
25 
26 #include <X11/Xproto.h>
27 
28 
29 #define GNUSTEP_WM_MINIATURIZE_WINDOW "_GNUSTEP_WM_MINIATURIZE_WINDOW"
30 
31 #define GNUSTEP_WM_ATTR_NAME  "_GNUSTEP_WM_ATTR"
32 
33 #define	GNUSTEP_TITLEBAR_STATE 	"_GNUSTEP_TITLEBAR_STATE"
34 enum {
35     WMTitleBarKey = 0,
36     WMTitleBarNormal = 1,
37     WMTitleBarMain = 2
38 };
39 
40 #ifndef _DEFINED_GNUSTEP_WINDOW_INFO
41 #define	_DEFINED_GNUSTEP_WINDOW_INFO
42 /*
43  * Window levels are taken from GNUstep (gui/AppKit/NSWindow.h)
44  * NSDesktopWindowLevel intended to be the level at which things
45  * on the desktop sit ... so you should be able
46  * to put a desktop background just below it.
47  *
48  * Applications are actually permitted to use any value in the
49  * range INT_MIN+1 to INT_MAX
50  */
51 enum {
52     WMDesktopWindowLevel = -1000, /* GNUstep addition     */
53     WMNormalWindowLevel = 0,
54     WMFloatingWindowLevel = 3,
55     WMSubmenuWindowLevel = 3,
56     WMTornOffMenuWindowLevel = 3,
57     WMMainMenuWindowLevel = 20,
58     WMDockWindowLevel = 21,       /* Deprecated - use NSStatusWindowLevel */
59     WMStatusWindowLevel = 21,
60     WMModalPanelWindowLevel = 100,
61     WMPopUpMenuWindowLevel = 101,
62     WMScreenSaverWindowLevel = 1000
63 };
64 
65 
66 /* window attributes */
67 enum {
68     WMBorderlessWindowMask = 0,
69     WMTitledWindowMask = 1,
70     WMClosableWindowMask = 2,
71     WMMiniaturizableWindowMask = 4,
72     WMResizableWindowMask = 8,
73     WMIconWindowMask = 64,
74     WMMiniWindowMask = 128
75 };
76 #endif
77 
78 /* window manager -> appkit notifications */
79 #define GNUSTEP_WM_NOTIFICATION		"GNUSTEP_WM_NOTIFICATION"
80 
81 
82 typedef struct {
83     CARD32 flags;
84     CARD32 window_style;
85     CARD32 window_level;
86     CARD32 reserved;
87     Pixmap miniaturize_pixmap;	       /* pixmap for miniaturize button */
88     Pixmap close_pixmap;	       /* pixmap for close button */
89     Pixmap miniaturize_mask;	       /* miniaturize pixmap mask */
90     Pixmap close_mask;		       /* close pixmap mask */
91     CARD32 extra_flags;
92 } GNUstepWMAttributes;
93 
94 #define GSWindowStyleAttr 	(1<<0)
95 #define GSWindowLevelAttr 	(1<<1)
96 #define GSMiniaturizePixmapAttr	(1<<3)
97 #define GSClosePixmapAttr	(1<<4)
98 #define GSMiniaturizeMaskAttr	(1<<5)
99 #define GSCloseMaskAttr		(1<<6)
100 #define GSExtraFlagsAttr	(1<<7)
101 
102 /* extra flags */
103 #define GSDocumentEditedFlag	(1<<0)
104 
105 #define GSNoApplicationIconFlag	(1<<5)
106 
107 
108 #define WMFHideOtherApplications	10
109 #define WMFHideApplication		12
110 
111 #endif
112 
113