summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-12-27 09:18:54 +0000
committerDana Jansens <danakj@orodu.net>2002-12-27 09:18:54 +0000
commit8c2dfe5de45babd0fbc12b69cdfe30a54cf873a2 (patch)
tree602fb4a3723afa0b2f3a7fda515e36991ee7870f
parent30e4651787ca6f7161109591c229fcaf76cb901e (diff)
deal with when nothing has focus anymore
-rw-r--r--otk/eventdispatcher.cc11
-rw-r--r--scripts/clientmotion.py4
-rw-r--r--src/client.cc5
3 files changed, 14 insertions, 6 deletions
diff --git a/otk/eventdispatcher.cc b/otk/eventdispatcher.cc
index 1d4a4ec0..cca49f82 100644
--- a/otk/eventdispatcher.cc
+++ b/otk/eventdispatcher.cc
@@ -127,17 +127,18 @@ void OtkEventDispatcher::dispatchEvents(void)
} else if (focus != None) {
// the last focus event was a FocusIn, so unfocus what used to be focus and
// focus this new target
+// printf("FOCUSING: %lx\n", focus);
+ _focus_e.xfocus.type = FocusIn;
+ _focus_e.xfocus.window = focus;
+ dispatch(_focus_e);
+
if (_focus != None) {
// printf("UNFOCUSING: %lx\n", _focus);
_focus_e.xfocus.type = FocusOut;
_focus_e.xfocus.window = _focus;
dispatch(_focus_e);
}
-// printf("FOCUSING: %lx\n", focus);
- _focus_e.xfocus.type = FocusIn;
- _focus_e.xfocus.window = focus;
- dispatch(_focus_e);
-
+
_focus = focus;
}
diff --git a/scripts/clientmotion.py b/scripts/clientmotion.py
index a8f4c306..60de370b 100644
--- a/scripts/clientmotion.py
+++ b/scripts/clientmotion.py
@@ -26,7 +26,9 @@ def def_motion_release(action, win, type, modifiers, button, xroot, yroot,
global posqueue
for i in posqueue:
if i[0] == button:
- delete_Rect(i[3])
+ client = Openbox_findClient(openbox, win)
+ if client:
+ delete_Rect(i[3])
posqueue.remove(i)
break
diff --git a/src/client.cc b/src/client.cc
index 2461eff9..243390a8 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -907,6 +907,11 @@ void OBClient::unfocusHandler(const XFocusChangeEvent &e)
frame->unfocus();
_focused = false;
+
+ if (Openbox::instance->focusedClient() == this) {
+ printf("UNFOCUSED!\n");
+ Openbox::instance->setFocusedClient(this);
+ }
}