From: Christophe CURIS <[email protected]>
---
src/WindowMaker.h | 14 ++++++++++++++
src/appmenu.c | 6 ++----
src/client.c | 4 +---
src/event.c | 7 ++-----
src/main.c | 12 ------------
src/properties.c | 20 +++++++-------------
src/screen.c | 7 ++-----
src/startup.c | 26 ++++++++------------------
src/window.c | 16 ++++++----------
9 files changed, 42 insertions(+), 70 deletions(-)
diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index 94b8402..76d455d 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -507,6 +507,20 @@ extern struct wmaker_global_variables {
Atom titlebar_state;
} gnustep;
+ /* WindowMaker specific */
+ struct {
+ Atom menu;
+ Atom wm_protocols;
+ Atom state;
+
+ Atom wm_function;
+ Atom noticeboard;
+ Atom command;
+
+ Atom icon_size;
+ Atom icon_tile;
+ } wmaker;
+
} atom;
} w_global;
diff --git a/src/appmenu.c b/src/appmenu.c
index ceb6c9a..276194a 100644
--- a/src/appmenu.c
+++ b/src/appmenu.c
@@ -36,8 +36,6 @@
#include "appmenu.h"
#include "framewin.h"
-/******** Global Variables **********/
-extern Atom _XA_WINDOWMAKER_MENU;
typedef struct {
short code;
@@ -62,7 +60,7 @@ static void sendMessage(Window window, int what, int tag)
XEvent event;
event.xclient.type = ClientMessage;
- event.xclient.message_type = _XA_WINDOWMAKER_MENU;
+ event.xclient.message_type = w_global.atom.wmaker.menu;
event.xclient.format = 32;
event.xclient.display = dpy;
event.xclient.window = window;
@@ -206,7 +204,7 @@ WMenu *wAppMenuGet(WScreen * scr, Window window)
char **slist;
WMenu *menu;
- if (!XGetTextProperty(dpy, window, &text_prop, _XA_WINDOWMAKER_MENU)) {
+ if (!XGetTextProperty(dpy, window, &text_prop,
w_global.atom.wmaker.menu)) {
return NULL;
}
if (!XTextPropertyToStringList(&text_prop, &slist, &count) || count <
1) {
diff --git a/src/client.c b/src/client.c
index be0fa61..2b04b6a 100644
--- a/src/client.c
+++ b/src/client.c
@@ -49,8 +49,6 @@
/* contexts */
extern XContext wWinContext;
-extern Atom _XA_WINDOWMAKER_MENU;
-
#ifdef SHAPE
extern Bool wShapeSupported;
#endif
@@ -560,7 +558,7 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent *
event)
GetColormapWindows(wwin);
wColormapInstallForWindow(wwin->screen_ptr, wwin);
- } else if (event->atom == _XA_WINDOWMAKER_MENU) {
+ } else if (event->atom == w_global.atom.wmaker.menu) {
WApplication *wapp;
wapp = wApplicationOf(wwin->main_window);
diff --git a/src/event.c b/src/event.c
index b38d630..bd84810 100644
--- a/src/event.c
+++ b/src/event.c
@@ -85,9 +85,6 @@ extern int wScreenCount;
#define MOD_MASK wPreferences.modifier_mask
-extern Atom _XA_WINDOWMAKER_WM_FUNCTION;
-extern Atom _XA_WINDOWMAKER_COMMAND;
-
#ifdef SHAPE
extern Bool wShapeSupported;
extern int wShapeEventBase;
@@ -941,7 +938,7 @@ static void handleClientMessage(XEvent * event)
} else { /* stopping */
wColormapAllowClientInstallation(scr, False);
}
- } else if (event->xclient.message_type == _XA_WINDOWMAKER_COMMAND) {
+ } else if (event->xclient.message_type == w_global.atom.wmaker.command)
{
char *command;
size_t len;
@@ -959,7 +956,7 @@ static void handleClientMessage(XEvent * event)
wfree(command);
- } else if (event->xclient.message_type == _XA_WINDOWMAKER_WM_FUNCTION) {
+ } else if (event->xclient.message_type ==
w_global.atom.wmaker.wm_function) {
WApplication *wapp;
int done = 0;
wapp = wApplicationOf(event->xclient.window);
diff --git a/src/main.c b/src/main.c
index 7575baa..81917ef 100644
--- a/src/main.c
+++ b/src/main.c
@@ -96,18 +96,6 @@ XContext wAppWinContext;
XContext wStackContext;
XContext wVEdgeContext;
-/* Atoms */
-Atom _XA_WINDOWMAKER_MENU;
-Atom _XA_WINDOWMAKER_WM_PROTOCOLS;
-Atom _XA_WINDOWMAKER_STATE;
-
-Atom _XA_WINDOWMAKER_WM_FUNCTION;
-Atom _XA_WINDOWMAKER_NOTICEBOARD;
-Atom _XA_WINDOWMAKER_COMMAND;
-
-Atom _XA_WINDOWMAKER_ICON_SIZE;
-Atom _XA_WINDOWMAKER_ICON_TILE;
-
#ifdef SHAPE
Bool wShapeSupported;
int wShapeEventBase;
diff --git a/src/properties.c b/src/properties.c
index ba8b162..6751306 100644
--- a/src/properties.c
+++ b/src/properties.c
@@ -31,12 +31,6 @@
#include "GNUstep.h"
#include "properties.h"
-/* atoms */
-extern Atom _XA_WINDOWMAKER_WM_FUNCTION;
-extern Atom _XA_WINDOWMAKER_MENU;
-extern Atom _XA_WINDOWMAKER_WM_PROTOCOLS;
-extern Atom _XA_WINDOWMAKER_NOTICEBOARD;
-extern Atom _XA_WINDOWMAKER_ICON_TILE;
int PropGetNormalHints(Window window, XSizeHints * size_hints, int *pre_iccm)
{
@@ -164,11 +158,11 @@ void PropSetWMakerProtocols(Window root)
Atom protocols[3];
int count = 0;
- protocols[count++] = _XA_WINDOWMAKER_MENU;
- protocols[count++] = _XA_WINDOWMAKER_WM_FUNCTION;
- protocols[count++] = _XA_WINDOWMAKER_NOTICEBOARD;
+ protocols[count++] = w_global.atom.wmaker.menu;
+ protocols[count++] = w_global.atom.wmaker.wm_function;
+ protocols[count++] = w_global.atom.wmaker.noticeboard;
- XChangeProperty(dpy, root, _XA_WINDOWMAKER_WM_PROTOCOLS, XA_ATOM,
+ XChangeProperty(dpy, root, w_global.atom.wmaker.wm_protocols, XA_ATOM,
32, PropModeReplace, (unsigned char *)protocols, count);
}
@@ -216,7 +210,7 @@ void PropSetIconTileHint(WScreen * scr, RImage * image)
}
}
- XChangeProperty(dpy, scr->info_window, _XA_WINDOWMAKER_ICON_TILE,
+ XChangeProperty(dpy, scr->info_window, w_global.atom.wmaker.icon_tile,
imageAtom, 8, PropModeReplace, tmp, image->width *
image->height * 4 + 4);
wfree(tmp);
@@ -257,7 +251,7 @@ int PropGetWindowState(Window window)
void PropCleanUp(Window root)
{
- XDeleteProperty(dpy, root, _XA_WINDOWMAKER_WM_PROTOCOLS);
- XDeleteProperty(dpy, root, _XA_WINDOWMAKER_NOTICEBOARD);
+ XDeleteProperty(dpy, root, w_global.atom.wmaker.wm_protocols);
+ XDeleteProperty(dpy, root, w_global.atom.wmaker.noticeboard);
XDeleteProperty(dpy, root, XA_WM_ICON_SIZE);
}
diff --git a/src/screen.c b/src/screen.c
index 721680e..723ba0e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -70,9 +70,6 @@
|KeyPressMask|KeyReleaseMask)
/**** Global variables ****/
-extern Atom _XA_WINDOWMAKER_STATE;
-extern Atom _XA_WINDOWMAKER_NOTICEBOARD;
-
extern int wScreenCount;
#ifdef KEEP_XKB_LOCK_STATUS
@@ -666,9 +663,9 @@ WScreen *wScreenInit(int screen_number)
PropSetWMakerProtocols(scr->root_win);
/* setup our noticeboard */
- XChangeProperty(dpy, scr->info_window, _XA_WINDOWMAKER_NOTICEBOARD,
+ XChangeProperty(dpy, scr->info_window, w_global.atom.wmaker.noticeboard,
XA_WINDOW, 32, PropModeReplace, (unsigned char
*)&scr->info_window, 1);
- XChangeProperty(dpy, scr->root_win, _XA_WINDOWMAKER_NOTICEBOARD,
+ XChangeProperty(dpy, scr->root_win, w_global.atom.wmaker.noticeboard,
XA_WINDOW, 32, PropModeReplace, (unsigned char
*)&scr->info_window, 1);
#ifdef BALLOON_TEXT
diff --git a/src/startup.c b/src/startup.c
index 68bc526..aade6d6 100644
--- a/src/startup.c
+++ b/src/startup.c
@@ -107,16 +107,6 @@ extern XContext wAppWinContext;
extern XContext wStackContext;
extern XContext wVEdgeContext;
-/* atoms */
-extern Atom _XA_WINDOWMAKER_MENU;
-extern Atom _XA_WINDOWMAKER_WM_PROTOCOLS;
-extern Atom _XA_WINDOWMAKER_STATE;
-extern Atom _XA_WINDOWMAKER_WM_FUNCTION;
-extern Atom _XA_WINDOWMAKER_NOTICEBOARD;
-extern Atom _XA_WINDOWMAKER_COMMAND;
-extern Atom _XA_WINDOWMAKER_ICON_SIZE;
-extern Atom _XA_WINDOWMAKER_ICON_TILE;
-
#ifndef HAVE_INOTIFY
/* special flags */
extern char WDelayedActionSet;
@@ -510,14 +500,14 @@ void StartUp(Bool defaultScreenOnly)
w_global.atom.wm.colormap_windows = atom[7];
w_global.atom.wm.colormap_notify = atom[8];
- _XA_WINDOWMAKER_MENU = atom[9];
- _XA_WINDOWMAKER_STATE = atom[10];
- _XA_WINDOWMAKER_WM_PROTOCOLS = atom[11];
- _XA_WINDOWMAKER_WM_FUNCTION = atom[12];
- _XA_WINDOWMAKER_NOTICEBOARD = atom[13];
- _XA_WINDOWMAKER_COMMAND = atom[14];
- _XA_WINDOWMAKER_ICON_SIZE = atom[15];
- _XA_WINDOWMAKER_ICON_TILE = atom[16];
+ w_global.atom.wmaker.menu = atom[9];
+ w_global.atom.wmaker.state = atom[10];
+ w_global.atom.wmaker.wm_protocols = atom[11];
+ w_global.atom.wmaker.wm_function = atom[12];
+ w_global.atom.wmaker.noticeboard = atom[13];
+ w_global.atom.wmaker.command = atom[14];
+ w_global.atom.wmaker.icon_size = atom[15];
+ w_global.atom.wmaker.icon_tile = atom[16];
w_global.atom.gnustep.wm_attr = atom[17];
w_global.atom.gnustep.wm_miniaturize_window = atom[18];
diff --git a/src/window.c b/src/window.c
index 62786d3..789159a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -82,9 +82,6 @@ extern Bool wShapeSupported;
/* contexts */
extern XContext wWinContext;
-/* protocol atoms */
-extern Atom _XA_WINDOWMAKER_STATE;
-
/***** Local Stuff *****/
static WWindowState *windowState = NULL;
static FocusMode getFocusMode(WWindow *wwin);
@@ -739,10 +736,9 @@ WWindow *wManageWindow(WScreen *scr, Window window)
WSETUFLAG(wwin, shared_appicon, 0);
if (wwin->main_window) {
- extern Atom _XA_WINDOWMAKER_MENU;
XTextProperty text_prop;
- if (XGetTextProperty(dpy, wwin->main_window, &text_prop,
_XA_WINDOWMAKER_MENU))
+ if (XGetTextProperty(dpy, wwin->main_window, &text_prop,
w_global.atom.wmaker.menu))
WSETUFLAG(wwin, shared_appicon, 0);
}
@@ -2307,8 +2303,8 @@ void wWindowSaveState(WWindow * wwin)
WMCountInArray(wwin->screen_ptr->shortcutWindows[i], wwin))
data[9] |= 1 << i;
}
- XChangeProperty(dpy, wwin->client_win, _XA_WINDOWMAKER_STATE,
- _XA_WINDOWMAKER_STATE, 32, PropModeReplace, (unsigned
char *)data, 10);
+ XChangeProperty(dpy, wwin->client_win, w_global.atom.wmaker.state,
+ w_global.atom.wmaker.state, 32, PropModeReplace,
(unsigned char *)data, 10);
}
static int getSavedState(Window window, WSavedState ** state)
@@ -2319,8 +2315,8 @@ static int getSavedState(Window window, WSavedState **
state)
unsigned long bytes_after_ret;
long *data;
- if (XGetWindowProperty(dpy, window, _XA_WINDOWMAKER_STATE, 0, 10,
- True, _XA_WINDOWMAKER_STATE,
+ if (XGetWindowProperty(dpy, window, w_global.atom.wmaker.state, 0, 10,
+ True, w_global.atom.wmaker.state,
&type_ret, &fmt_ret, &nitems_ret,
&bytes_after_ret,
(unsigned char **)&data) != Success || !data ||
nitems_ret < 10)
return 0;
@@ -2340,7 +2336,7 @@ static int getSavedState(Window window, WSavedState **
state)
XFree(data);
- if (*state && type_ret == _XA_WINDOWMAKER_STATE)
+ if (*state && type_ret == w_global.atom.wmaker.state)
return 1;
else
return 0;
--
1.8.4.rc3
--
To unsubscribe, send mail to [email protected].