summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/client.cc b/src/client.cc
index 2bb15780..a6990a8d 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -264,9 +264,10 @@ void OBClient::getState()
if (state[i] == property->atom(otk::OBProperty::net_wm_state_modal))
_modal = true;
else if (state[i] ==
- property->atom(otk::OBProperty::net_wm_state_shaded))
+ property->atom(otk::OBProperty::net_wm_state_shaded)) {
_shaded = true;
- else if (state[i] ==
+ _wmstate = IconicState;
+ } else if (state[i] ==
property->atom(otk::OBProperty::net_wm_state_skip_taskbar))
_skip_taskbar = true;
else if (state[i] ==
@@ -1120,13 +1121,13 @@ void OBClient::configureRequestHandler(const XConfigureRequestEvent &e)
switch (e.detail) {
case Below:
case BottomIf:
- // XXX: lower the window
+ Openbox::instance->screen(_screen)->restack(false, this); // lower
break;
case Above:
case TopIf:
default:
- // XXX: raise the window
+ Openbox::instance->screen(_screen)->restack(true, this); // raise
break;
}
}
@@ -1186,4 +1187,17 @@ void OBClient::reparentHandler(const XReparentEvent &e)
Openbox::instance->screen(_screen)->unmanageWindow(this);
}
+
+void OBClient::mapRequestHandler(const XMapRequestEvent &e)
+{
+ printf("\nMAP REQUEST\n\n");
+
+ otk::OtkEventHandler::mapRequestHandler(e);
+
+ if (_shaded)
+ shade(false);
+ // XXX: uniconify the window
+ focus();
+}
+
}