deal with when nothing has focus anymore

This commit is contained in:
Dana Jansens 2002-12-27 09:18:54 +00:00
parent 30e4651787
commit 8c2dfe5de4
3 changed files with 14 additions and 6 deletions

View file

@ -127,17 +127,18 @@ void OtkEventDispatcher::dispatchEvents(void)
} else if (focus != None) { } else if (focus != None) {
// the last focus event was a FocusIn, so unfocus what used to be focus and // the last focus event was a FocusIn, so unfocus what used to be focus and
// focus this new target // 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) { if (_focus != None) {
// printf("UNFOCUSING: %lx\n", _focus); // printf("UNFOCUSING: %lx\n", _focus);
_focus_e.xfocus.type = FocusOut; _focus_e.xfocus.type = FocusOut;
_focus_e.xfocus.window = _focus; _focus_e.xfocus.window = _focus;
dispatch(_focus_e); dispatch(_focus_e);
} }
// printf("FOCUSING: %lx\n", focus);
_focus_e.xfocus.type = FocusIn;
_focus_e.xfocus.window = focus;
dispatch(_focus_e);
_focus = focus; _focus = focus;
} }

View file

@ -26,7 +26,9 @@ def def_motion_release(action, win, type, modifiers, button, xroot, yroot,
global posqueue global posqueue
for i in posqueue: for i in posqueue:
if i[0] == button: if i[0] == button:
delete_Rect(i[3]) client = Openbox_findClient(openbox, win)
if client:
delete_Rect(i[3])
posqueue.remove(i) posqueue.remove(i)
break break

View file

@ -907,6 +907,11 @@ void OBClient::unfocusHandler(const XFocusChangeEvent &e)
frame->unfocus(); frame->unfocus();
_focused = false; _focused = false;
if (Openbox::instance->focusedClient() == this) {
printf("UNFOCUSED!\n");
Openbox::instance->setFocusedClient(this);
}
} }