1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 12:58:08 +01:00

Added support for client message to set window levels and added partial

support for client message to set window titlebar decoration.
This commit is contained in:
richard
2000-03-02 07:36:02 +00:00
parent f7fe1b2e94
commit 0af2448349
4 changed files with 40 additions and 0 deletions

View File

@@ -46,6 +46,12 @@
#define GNUSTEP_WM_ATTR_NAME "_GNUSTEP_WM_ATTR"
#define GNUSTEP_TITLEBAR_STATE "_GNUSTEP_TITLEBAR_STATE"
enum {
WMTitleBarKey = 0,
WMTitleBarNormal = 1,
WMTitleBarMain = 2
};
#ifndef _WINGS_H_
/* window stacking level */

View File

@@ -85,7 +85,9 @@ extern Atom _XA_WM_COLORMAP_NOTIFY;
extern Atom _XA_WM_CHANGE_STATE;
extern Atom _XA_WM_DELETE_WINDOW;
extern Atom _XA_GNUSTEP_WM_ATTR;
extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
extern Atom _XA_GNUSTEP_TITLEBAR_STATE;
extern Atom _XA_WINDOWMAKER_WM_FUNCTION;
extern Atom _XA_WINDOWMAKER_COMMAND;
@@ -888,6 +890,33 @@ handleClientMessage(XEvent *event)
}
}
}
} else if (event->xclient.message_type == _XA_GNUSTEP_WM_ATTR) {
wwin = wWindowFor(event->xclient.window);
if (!wwin) return;
switch (event->xclient.data.l[0]) {
case GSWindowLevelAttr:
{
int level = (int)event->xclient.data.l[0];
if (WINDOW_LEVEL(wwin) != level) {
ChangeStackingLevel(wwin->frame->core, level);
}
}
break;
}
} else if (event->xclient.message_type == _XA_GNUSTEP_TITLEBAR_STATE) {
wwin = wWindowFor(event->xclient.window);
if (!wwin) return;
switch (event->xclient.data.l[0]) {
case WMTitleBarNormal:
wFrameWindowChangeState(wwin->frame, WS_UNFOCUSED);
break;
case WMTitleBarMain:
wFrameWindowChangeState(wwin->frame, WS_PFOCUSED);
break;
case WMTitleBarKey:
wFrameWindowChangeState(wwin->frame, WS_FOCUSED);
break;
}
#ifdef GNOME_STUFF
} else if (wGNOMEProcessClientMessage(&event->xclient)) {
/* do nothing */

View File

@@ -101,6 +101,7 @@ Atom _XA_WM_COLORMAP_NOTIFY;
Atom _XA_GNUSTEP_WM_ATTR;
Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
Atom _XA_GNUSTEP_WM_RESIZEBAR;
Atom _XA_GNUSTEP_TITLEBAR_STATE;
Atom _XA_WINDOWMAKER_MENU;
Atom _XA_WINDOWMAKER_WM_PROTOCOLS;

View File

@@ -130,6 +130,7 @@ extern Atom _XA_WINDOWMAKER_ICON_SIZE;
extern Atom _XA_WINDOWMAKER_ICON_TILE;
extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
extern Atom _XA_GNUSTEP_TITLEBAR_STATE;
#ifdef OFFIX_DND
extern Atom _XA_DND_PROTOCOL;
@@ -648,6 +649,7 @@ static char *atomNames[] = {
"_WINDOWMAKER_COMMAND",
"_WINDOWMAKER_ICON_SIZE",
"_WINDOWMAKER_ICON_TILE"
GNUSTEP_TITLEBAR_STATE,
};
@@ -720,6 +722,8 @@ StartUp(Bool defaultScreenOnly)
_XA_WINDOWMAKER_ICON_SIZE = atom[17];
_XA_WINDOWMAKER_ICON_TILE = atom[18];
_XA_GNUSTEP_TITLEBAR_STATE = atom[99];
#ifdef OFFIX_DND
_XA_DND_SELECTION = XInternAtom(dpy, "DndSelection", False);
_XA_DND_PROTOCOL = XInternAtom(dpy, "DndProtocol", False);