summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-08 06:45:01 +0000
committerDana Jansens <danakj@orodu.net>2003-01-08 06:45:01 +0000
commitf2fa99b33efe9262b2c3cd7bc9c913bf6bcef2ca (patch)
treeb7a5106897ebe59350237636b4486387b5079593 /src/client.cc
parent889df8a74da733c849cb52c3a76ae59956755882 (diff)
make some funcs const, and don't try focus a client if it is not visible
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/client.cc b/src/client.cc
index 026f4f2f..2c6ec5e5 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -1082,9 +1082,12 @@ void OBClient::shade(bool shade)
}
-bool OBClient::focus()
+bool OBClient::focus() const
{
- if (!(_can_focus || _focus_notify)) return false;
+ // won't try focus if the client doesn't want it, or if the window isn't
+ // visible on the screen
+ if (!(frame->isVisible() && (_can_focus || _focus_notify))) return false;
+
if (_focused) return true;
if (_can_focus)
@@ -1112,7 +1115,7 @@ bool OBClient::focus()
}
-void OBClient::unfocus()
+void OBClient::unfocus() const
{
if (!_focused) return;
@@ -1269,8 +1272,14 @@ void OBClient::reparentHandler(const XReparentEvent &e)
to an already unmapped window.
*/
+ // we don't want the reparent event, put it back on the stack for the X
+ // server to deal with after we unmanage the window
+ XEvent ev;
+ ev.xreparent = e;
+ XPutBackEvent(otk::OBDisplay::display, &ev);
+
// this deletes us etc
- Openbox::instance->screen(_screen)->unmanageWindow(this, true);
+ Openbox::instance->screen(_screen)->unmanageWindow(this);
}
}