From: Christophe CURIS <[email protected]>
---
src/WindowMaker.h | 7 +++++++
src/appicon.c | 3 +--
src/application.c | 12 ++++--------
src/client.c | 5 +----
src/dock.c | 5 +----
src/event.c | 13 ++++++-------
src/main.c | 3 ---
src/menu.c | 7 ++-----
src/stacking.c | 8 +++-----
src/startup.c | 9 +++------
src/wcore.c | 8 +++-----
src/window.c | 11 ++++-------
12 files changed, 35 insertions(+), 56 deletions(-)
diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index 76d455d..7dec559 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -523,6 +523,13 @@ extern struct wmaker_global_variables {
} atom;
+ /* X Contexts */
+ struct {
+ XContext client_win;
+ XContext app_win;
+ XContext stack;
+ } context;
+
} w_global;
extern unsigned int ValidModMask;
diff --git a/src/appicon.c b/src/appicon.c
index 6300559..e78ea73 100644
--- a/src/appicon.c
+++ b/src/appicon.c
@@ -62,7 +62,6 @@
/**** Global variables ****/
extern WDDomain *WDWindowAttributes;
-extern XContext wWinContext;
#define MOD_MASK wPreferences.modifier_mask
#define ICON_SIZE wPreferences.icon_size
@@ -1221,7 +1220,7 @@ WAppIcon *wAppIconFor(Window window)
if (window == None)
return NULL;
- if (XFindContext(dpy, window, wWinContext, (XPointer *) & desc) ==
XCNOENT)
+ if (XFindContext(dpy, window, w_global.context.client_win, (XPointer *)
& desc) == XCNOENT)
return NULL;
if (desc->parent_type == WCLASS_APPICON || desc->parent_type ==
WCLASS_DOCK_ICON)
diff --git a/src/application.c b/src/application.c
index 1bb0890..a5063ba 100644
--- a/src/application.c
+++ b/src/application.c
@@ -37,10 +37,6 @@
#include "dock.h"
#include "defaults.h"
-/******** Global variables ********/
-
-extern XContext wAppWinContext;
-extern XContext wWinContext;
/******** Local variables ********/
@@ -73,7 +69,7 @@ WApplication *wApplicationOf(Window window)
if (window == None)
return NULL;
- if (XFindContext(dpy, window, wAppWinContext, (XPointer *) & wapp) !=
XCSUCCESS)
+ if (XFindContext(dpy, window, w_global.context.app_win, (XPointer *) &
wapp) != XCSUCCESS)
return NULL;
return wapp;
}
@@ -140,7 +136,7 @@ WApplication *wApplicationCreate(WWindow * wwin)
wapp->flags.emulated = WFLAGP(wapp->main_window_desc, emulate_appicon);
/* application descriptor */
- XSaveContext(dpy, main_window, wAppWinContext, (XPointer) wapp);
+ XSaveContext(dpy, main_window, w_global.context.app_win, (XPointer)
wapp);
create_appicon_for_application(wapp, wwin);
@@ -183,7 +179,7 @@ void wApplicationDestroy(WApplication * wapp)
wapp->prev->next = wapp->next;
}
- XDeleteContext(dpy, wapp->main_window, wAppWinContext);
+ XDeleteContext(dpy, wapp->main_window, w_global.context.app_win);
wAppMenuDestroy(wapp->menu);
/* Remove application icon */
@@ -195,7 +191,7 @@ void wApplicationDestroy(WApplication * wapp)
if (wwin) {
/* undelete client window context that was deleted in
* wWindowDestroy */
- XSaveContext(dpy, wwin->client_win, wWinContext, (XPointer) &
wwin->client_descriptor);
+ XSaveContext(dpy, wwin->client_win,
w_global.context.client_win, (XPointer) & wwin->client_descriptor);
}
wfree(wapp);
}
diff --git a/src/client.c b/src/client.c
index 2b04b6a..6ec7458 100644
--- a/src/client.c
+++ b/src/client.c
@@ -46,9 +46,6 @@
/****** Global Variables ******/
-/* contexts */
-extern XContext wWinContext;
-
#ifdef SHAPE
extern Bool wShapeSupported;
#endif
@@ -191,7 +188,7 @@ void wClientConfigure(WWindow * wwin,
XConfigureRequestEvent * xcre)
WWindow *sibling;
if ((xcre->value_mask & CWSibling) &&
- (XFindContext(dpy, xcre->above, wWinContext, (XPointer *) &
desc) == XCSUCCESS)
+ (XFindContext(dpy, xcre->above,
w_global.context.client_win, (XPointer *) & desc) == XCSUCCESS)
&& (desc->parent_type == WCLASS_WINDOW)) {
sibling = desc->parent;
xwc.sibling = sibling->frame->core->window;
diff --git a/src/dock.c b/src/dock.c
index fae31be..f1ee032 100644
--- a/src/dock.c
+++ b/src/dock.c
@@ -65,9 +65,6 @@
#define CLIP_IDLE 0
#define CLIP_FORWARD 2
-/**** Global variables ****/
-extern XContext wWinContext;
-
#define MOD_MASK wPreferences.modifier_mask
#define ICON_SIZE wPreferences.icon_size
@@ -4050,7 +4047,7 @@ static void clipLeave(WDock *dock)
return;
if (XCheckTypedEvent(dpy, EnterNotify, &event) != False) {
- if (XFindContext(dpy, event.xcrossing.window, wWinContext,
+ if (XFindContext(dpy, event.xcrossing.window,
w_global.context.client_win,
(XPointer *) & desc) != XCNOENT
&& desc && desc->parent_type == WCLASS_DOCK_ICON
&& ((WAppIcon *) desc->parent)->dock == dock) {
diff --git a/src/event.c b/src/event.c
index bd84810..c4e8a8a 100644
--- a/src/event.c
+++ b/src/event.c
@@ -77,7 +77,6 @@
#include "switchmenu.h"
/******** Global Variables **********/
-extern XContext wWinContext;
extern XContext wVEdgeContext;
extern WShortKey wKeyBindings[WKBD_LAST];
@@ -702,7 +701,7 @@ static void handleExpose(XEvent * event)
while (XCheckTypedWindowEvent(dpy, event->xexpose.window, Expose, &ev))
;
- if (XFindContext(dpy, event->xexpose.window, wWinContext, (XPointer *)
& desc) == XCNOENT) {
+ if (XFindContext(dpy, event->xexpose.window,
w_global.context.client_win, (XPointer *) & desc) == XCNOENT) {
return;
}
@@ -769,8 +768,8 @@ static void handleButtonPress(XEvent * event)
}
desc = NULL;
- if (XFindContext(dpy, event->xbutton.subwindow, wWinContext, (XPointer
*) & desc) == XCNOENT) {
- if (XFindContext(dpy, event->xbutton.window, wWinContext,
(XPointer *) & desc) == XCNOENT) {
+ if (XFindContext(dpy, event->xbutton.subwindow,
w_global.context.client_win, (XPointer *) & desc) == XCNOENT) {
+ if (XFindContext(dpy, event->xbutton.window,
w_global.context.client_win, (XPointer *) & desc) == XCNOENT) {
return;
}
}
@@ -1034,7 +1033,7 @@ static void handleClientMessage(XEvent * event)
* For when the icon frame gets a ClientMessage
* that should have gone to the icon_window.
*/
- if (XFindContext(dpy, event->xbutton.window, wWinContext,
(XPointer *) & desc) != XCNOENT) {
+ if (XFindContext(dpy, event->xbutton.window,
w_global.context.client_win, (XPointer *) & desc) != XCNOENT) {
struct WIcon *icon = NULL;
if (desc->parent_type == WCLASS_MINIWINDOW) {
@@ -1084,7 +1083,7 @@ static void handleEnterNotify(XEvent * event)
}
}
- if (XFindContext(dpy, event->xcrossing.window, wWinContext, (XPointer
*) & desc) != XCNOENT) {
+ if (XFindContext(dpy, event->xcrossing.window,
w_global.context.client_win, (XPointer *) & desc) != XCNOENT) {
if (desc->handle_enternotify)
(*desc->handle_enternotify) (desc, event);
}
@@ -1148,7 +1147,7 @@ static void handleLeaveNotify(XEvent * event)
{
WObjDescriptor *desc = NULL;
- if (XFindContext(dpy, event->xcrossing.window, wWinContext, (XPointer
*) & desc) != XCNOENT) {
+ if (XFindContext(dpy, event->xcrossing.window,
w_global.context.client_win, (XPointer *) & desc) != XCNOENT) {
if (desc->handle_leavenotify)
(*desc->handle_leavenotify) (desc, event);
}
diff --git a/src/main.c b/src/main.c
index 81917ef..28536ea 100644
--- a/src/main.c
+++ b/src/main.c
@@ -91,9 +91,6 @@ WDDomain *WDWindowAttributes = NULL;
WDDomain *WDRootMenu = NULL;
/* XContexts */
-XContext wWinContext;
-XContext wAppWinContext;
-XContext wStackContext;
XContext wVEdgeContext;
#ifdef SHAPE
diff --git a/src/menu.c b/src/menu.c
index a3f177d..de1630b 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -45,9 +45,6 @@
#include "rootmenu.h"
#include "switchmenu.h"
-/****** Global Variables ******/
-
-extern XContext wWinContext;
#define MOD_MASK wPreferences.modifier_mask
@@ -1276,7 +1273,7 @@ static WMenu *findMenu(WScreen * scr, int *x_ret, int
*y_ret)
if (win == None)
return NULL;
- if (XFindContext(dpy, win, wWinContext, (XPointer *) & desc) == XCNOENT)
+ if (XFindContext(dpy, win, w_global.context.client_win, (XPointer *) &
desc) == XCNOENT)
return NULL;
if (desc->parent_type == WCLASS_MENU) {
@@ -1398,7 +1395,7 @@ WMenu *wMenuUnderPointer(WScreen * screen)
if (win == None)
return NULL;
- if (XFindContext(dpy, win, wWinContext, (XPointer *) & desc) == XCNOENT)
+ if (XFindContext(dpy, win, w_global.context.client_win, (XPointer *) &
desc) == XCNOENT)
return NULL;
if (desc->parent_type == WCLASS_MENU)
diff --git a/src/stacking.c b/src/stacking.c
index 4a77340..d7daf17 100644
--- a/src/stacking.c
+++ b/src/stacking.c
@@ -35,8 +35,6 @@
#include "stacking.h"
#include "workspace.h"
-/*** Global Variables ***/
-extern XContext wStackContext;
static void notifyStackChange(WCoreWindow * frame, char *detail)
{
@@ -77,7 +75,7 @@ void RemakeStackList(WScreen * scr)
/* verify list integrity */
c = 0;
for (i = 0; i < nwindows; i++) {
- if (XFindContext(dpy, windows[i], wStackContext,
(XPointer *) & frame)
+ if (XFindContext(dpy, windows[i],
w_global.context.stack, (XPointer *) & frame)
== XCNOENT) {
continue;
}
@@ -404,7 +402,7 @@ void AddToStackList(WCoreWindow * frame)
WCoreWindow *trans = NULL;
frame->screen_ptr->window_count++;
- XSaveContext(dpy, frame->window, wStackContext, (XPointer) frame);
+ XSaveContext(dpy, frame->window, w_global.context.stack, (XPointer)
frame);
curtop = WMGetFromBag(scr->stacking_list, index);
/* first window in this level */
@@ -560,7 +558,7 @@ void RemoveFromStackList(WCoreWindow * frame)
{
int index = frame->stacking->window_level;
- if (XDeleteContext(dpy, frame->window, wStackContext) == XCNOENT) {
+ if (XDeleteContext(dpy, frame->window, w_global.context.stack) ==
XCNOENT) {
wwarning("RemoveFromStackingList(): window not in list ");
return;
}
diff --git a/src/startup.c b/src/startup.c
index aade6d6..56213e1 100644
--- a/src/startup.c
+++ b/src/startup.c
@@ -102,9 +102,6 @@ extern int wXkbEventBase;
#endif
/* contexts */
-extern XContext wWinContext;
-extern XContext wAppWinContext;
-extern XContext wStackContext;
extern XContext wVEdgeContext;
#ifndef HAVE_INOTIFY
@@ -472,9 +469,9 @@ void StartUp(Bool defaultScreenOnly)
memset(&wKeyBindings, 0, sizeof(wKeyBindings));
- wWinContext = XUniqueContext();
- wAppWinContext = XUniqueContext();
- wStackContext = XUniqueContext();
+ w_global.context.client_win = XUniqueContext();
+ w_global.context.app_win = XUniqueContext();
+ w_global.context.stack = XUniqueContext();
wVEdgeContext = XUniqueContext();
/* _XA_VERSION = XInternAtom(dpy, "VERSION", False); */
diff --git a/src/wcore.c b/src/wcore.c
index 37cf59a..e62b0fe 100644
--- a/src/wcore.c
+++ b/src/wcore.c
@@ -29,8 +29,6 @@
#include "WindowMaker.h"
#include "wcore.h"
-/****** Global Variables ******/
-extern XContext wWinContext;
/*----------------------------------------------------------------------
* wCoreCreateTopLevel--
@@ -72,7 +70,7 @@ WCoreWindow *wCoreCreateTopLevel(WScreen *screen, int x, int
y, int width, int h
core->descriptor.self = core;
XClearWindow(dpy, core->window);
- XSaveContext(dpy, core->window, wWinContext, (XPointer) &
core->descriptor);
+ XSaveContext(dpy, core->window, w_global.context.client_win, (XPointer)
& core->descriptor);
return core;
}
@@ -116,7 +114,7 @@ WCoreWindow *wCoreCreate(WCoreWindow *parent, int x, int y,
int width, int heigh
core->screen_ptr = parent->screen_ptr;
core->descriptor.self = core;
- XSaveContext(dpy, core->window, wWinContext, (XPointer) &
core->descriptor);
+ XSaveContext(dpy, core->window, w_global.context.client_win, (XPointer)
& core->descriptor);
return core;
}
@@ -125,7 +123,7 @@ void wCoreDestroy(WCoreWindow * core)
if (core->stacking)
wfree(core->stacking);
- XDeleteContext(dpy, core->window, wWinContext);
+ XDeleteContext(dpy, core->window, w_global.context.client_win);
XDestroyWindow(dpy, core->window);
wfree(core);
}
diff --git a/src/window.c b/src/window.c
index 789159a..2063a5c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -79,9 +79,6 @@ extern WShortKey wKeyBindings[WKBD_LAST];
extern Bool wShapeSupported;
#endif
-/* contexts */
-extern XContext wWinContext;
-
/***** Local Stuff *****/
static WWindowState *windowState = NULL;
static FocusMode getFocusMode(WWindow *wwin);
@@ -146,7 +143,7 @@ WWindow *wWindowFor(Window window)
if (window == None)
return NULL;
- if (XFindContext(dpy, window, wWinContext, (XPointer *) & desc) ==
XCNOENT)
+ if (XFindContext(dpy, window, w_global.context.client_win, (XPointer *)
& desc) == XCNOENT)
return NULL;
if (desc->parent_type == WCLASS_WINDOW)
@@ -226,7 +223,7 @@ void wWindowDestroy(WWindow *wwin)
if (wwin->cmap_windows)
XFree(wwin->cmap_windows);
- XDeleteContext(dpy, wwin->client_win, wWinContext);
+ XDeleteContext(dpy, wwin->client_win, w_global.context.client_win);
if (wwin->frame)
wFrameWindowDestroy(wwin->frame);
@@ -621,7 +618,7 @@ WWindow *wManageWindow(WScreen *scr, Window window)
else if (!wFetchName(dpy, window, &title))
title = NULL;
- XSaveContext(dpy, window, wWinContext, (XPointer) &
wwin->client_descriptor);
+ XSaveContext(dpy, window, w_global.context.client_win, (XPointer) &
wwin->client_descriptor);
#ifdef SHAPE
if (wShapeSupported) {
@@ -1360,7 +1357,7 @@ WWindow *wManageInternalWindow(WScreen *scr, Window
window, Window owner,
scr->resizebar_texture,
scr->window_title_color, &scr->title_font,
scr->w_depth, scr->w_visual,
scr->w_colormap);
- XSaveContext(dpy, window, wWinContext, (XPointer) &
wwin->client_descriptor);
+ XSaveContext(dpy, window, w_global.context.client_win, (XPointer) &
wwin->client_descriptor);
wwin->frame->flags.is_client_window_frame = 1;
wwin->frame->flags.justification = wPreferences.title_justification;
--
1.8.4.rc3
--
To unsubscribe, send mail to [email protected].