summaryrefslogtreecommitdiffstats
path: root/kdecore/netwm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdecore/netwm.cpp')
-rw-r--r--kdecore/netwm.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/kdecore/netwm.cpp b/kdecore/netwm.cpp
index e0685abc7..9e7d4580e 100644
--- a/kdecore/netwm.cpp
+++ b/kdecore/netwm.cpp
@@ -145,6 +145,9 @@ static Atom net_wm_state_stays_on_top = 0;
// used to determine whether application window is managed or not
static Atom xa_wm_state = 0;
+// ability flags
+static Atom net_wm_full_placement = 0;
+
static Bool netwm_atoms_created = False;
const unsigned long netwm_sendevent_mask = (SubstructureRedirectMask|
SubstructureNotifyMask);
@@ -236,7 +239,7 @@ static int wcmp(const void *a, const void *b) {
}
-static const int netAtomCount = 84;
+static const int netAtomCount = 85;
static void create_atoms(Display *d) {
static const char * const names[netAtomCount] =
{
@@ -330,7 +333,9 @@ static void create_atoms(Display *d) {
"_KDE_NET_WM_TEMPORARY_RULES",
"WM_STATE",
- "WM_PROTOCOLS"
+ "WM_PROTOCOLS",
+
+ "_NET_WM_FULL_PLACEMENT"
};
Atom atoms[netAtomCount], *atomsp[netAtomCount] =
@@ -425,7 +430,9 @@ static void create_atoms(Display *d) {
&kde_net_wm_temporary_rules,
&xa_wm_state,
- &wm_protocols
+ &wm_protocols,
+
+ &net_wm_full_placement
};
assert( !netwm_atoms_created );
@@ -1355,6 +1362,8 @@ void NETRootInfo::setSupported() {
if (p->properties[ PROTOCOLS2 ] & WM2KDETemporaryRules)
atoms[pnum++] = kde_net_wm_temporary_rules;
+ if (p->properties[ PROTOCOLS2 ] & WM2FullPlacement)
+ atoms[pnum++] = net_wm_full_placement;
XChangeProperty(p->display, p->root, net_supported, XA_ATOM, 32,
PropModeReplace, (unsigned char *) atoms, pnum);
@@ -1587,6 +1596,8 @@ void NETRootInfo::updateSupportedProperties( Atom atom )
else if( atom == kde_net_wm_temporary_rules )
p->properties[ PROTOCOLS2 ] |= WM2KDETemporaryRules;
+ else if( atom == net_wm_full_placement )
+ p->properties[ PROTOCOLS2 ] |= WM2FullPlacement;
}
extern Time qt_x_user_time;