From 8c2dfe5de45babd0fbc12b69cdfe30a54cf873a2 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 27 Dec 2002 09:18:54 +0000 Subject: [PATCH] deal with when nothing has focus anymore --- otk/eventdispatcher.cc | 11 ++++++----- scripts/clientmotion.py | 4 +++- src/client.cc | 5 +++++ 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); + } } -- 2.45.2