1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 21:08: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_WM_ATTR_NAME "_GNUSTEP_WM_ATTR"
#define GNUSTEP_TITLEBAR_STATE "_GNUSTEP_TITLEBAR_STATE"
enum {
WMTitleBarKey = 0,
WMTitleBarNormal = 1,
WMTitleBarMain = 2
};
#ifndef _WINGS_H_ #ifndef _WINGS_H_
/* window stacking level */ /* 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_CHANGE_STATE;
extern Atom _XA_WM_DELETE_WINDOW; extern Atom _XA_WM_DELETE_WINDOW;
extern Atom _XA_GNUSTEP_WM_ATTR;
extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW; extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
extern Atom _XA_GNUSTEP_TITLEBAR_STATE;
extern Atom _XA_WINDOWMAKER_WM_FUNCTION; extern Atom _XA_WINDOWMAKER_WM_FUNCTION;
extern Atom _XA_WINDOWMAKER_COMMAND; 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 #ifdef GNOME_STUFF
} else if (wGNOMEProcessClientMessage(&event->xclient)) { } else if (wGNOMEProcessClientMessage(&event->xclient)) {
/* do nothing */ /* do nothing */

View File

@@ -101,6 +101,7 @@ Atom _XA_WM_COLORMAP_NOTIFY;
Atom _XA_GNUSTEP_WM_ATTR; Atom _XA_GNUSTEP_WM_ATTR;
Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW; Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
Atom _XA_GNUSTEP_WM_RESIZEBAR; Atom _XA_GNUSTEP_WM_RESIZEBAR;
Atom _XA_GNUSTEP_TITLEBAR_STATE;
Atom _XA_WINDOWMAKER_MENU; Atom _XA_WINDOWMAKER_MENU;
Atom _XA_WINDOWMAKER_WM_PROTOCOLS; 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_WINDOWMAKER_ICON_TILE;
extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW; extern Atom _XA_GNUSTEP_WM_MINIATURIZE_WINDOW;
extern Atom _XA_GNUSTEP_TITLEBAR_STATE;
#ifdef OFFIX_DND #ifdef OFFIX_DND
extern Atom _XA_DND_PROTOCOL; extern Atom _XA_DND_PROTOCOL;
@@ -648,6 +649,7 @@ static char *atomNames[] = {
"_WINDOWMAKER_COMMAND", "_WINDOWMAKER_COMMAND",
"_WINDOWMAKER_ICON_SIZE", "_WINDOWMAKER_ICON_SIZE",
"_WINDOWMAKER_ICON_TILE" "_WINDOWMAKER_ICON_TILE"
GNUSTEP_TITLEBAR_STATE,
}; };
@@ -720,6 +722,8 @@ StartUp(Bool defaultScreenOnly)
_XA_WINDOWMAKER_ICON_SIZE = atom[17]; _XA_WINDOWMAKER_ICON_SIZE = atom[17];
_XA_WINDOWMAKER_ICON_TILE = atom[18]; _XA_WINDOWMAKER_ICON_TILE = atom[18];
_XA_GNUSTEP_TITLEBAR_STATE = atom[99];
#ifdef OFFIX_DND #ifdef OFFIX_DND
_XA_DND_SELECTION = XInternAtom(dpy, "DndSelection", False); _XA_DND_SELECTION = XInternAtom(dpy, "DndSelection", False);
_XA_DND_PROTOCOL = XInternAtom(dpy, "DndProtocol", False); _XA_DND_PROTOCOL = XInternAtom(dpy, "DndProtocol", False);