mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +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:
@@ -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 */
|
||||
|
||||
29
src/event.c
29
src/event.c
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user