enter/leave and focus events are working beautifully
This commit is contained in:
parent
51f8b875b3
commit
3a4f91b537
3 changed files with 24 additions and 7 deletions
|
@ -94,7 +94,7 @@ void OtkEventDispatcher::dispatchEvents(void)
|
||||||
focus = None;
|
focus = None;
|
||||||
printf("FocusOut focus=%lx unfocus=%lx\n", focus, unfocus);
|
printf("FocusOut focus=%lx unfocus=%lx\n", focus, unfocus);
|
||||||
}
|
}
|
||||||
/* // madly compress all crossing events
|
// madly compress all crossing events
|
||||||
} else if (e.type == EnterNotify) {
|
} else if (e.type == EnterNotify) {
|
||||||
// any other types are not ones we're interested in
|
// any other types are not ones we're interested in
|
||||||
if (e.xcrossing.mode == NotifyNormal) {
|
if (e.xcrossing.mode == NotifyNormal) {
|
||||||
|
@ -109,7 +109,7 @@ void OtkEventDispatcher::dispatchEvents(void)
|
||||||
leave = e.xcrossing.window;
|
leave = e.xcrossing.window;
|
||||||
leave_root = e.xcrossing.root;
|
leave_root = e.xcrossing.root;
|
||||||
printf("Leave enter=%lx leave=%lx\n", enter, leave);
|
printf("Leave enter=%lx leave=%lx\n", enter, leave);
|
||||||
}*/
|
}
|
||||||
} else {
|
} else {
|
||||||
// normal events
|
// normal events
|
||||||
dispatch(e);
|
dispatch(e);
|
||||||
|
@ -118,7 +118,7 @@ void OtkEventDispatcher::dispatchEvents(void)
|
||||||
|
|
||||||
if (unfocus != None) {
|
if (unfocus != None) {
|
||||||
// the last focus event was an FocusOut, so where the hell is the focus at?
|
// the last focus event was an FocusOut, so where the hell is the focus at?
|
||||||
printf("UNFOCUSING: %lx\n", unfocus);
|
// printf("UNFOCUSING: %lx\n", unfocus);
|
||||||
_focus_e.xfocus.type = FocusOut;
|
_focus_e.xfocus.type = FocusOut;
|
||||||
_focus_e.xfocus.window = unfocus;
|
_focus_e.xfocus.window = unfocus;
|
||||||
dispatch(_focus_e);
|
dispatch(_focus_e);
|
||||||
|
@ -128,12 +128,12 @@ void OtkEventDispatcher::dispatchEvents(void)
|
||||||
// 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
|
||||||
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);
|
// printf("FOCUSING: %lx\n", focus);
|
||||||
_focus_e.xfocus.type = FocusIn;
|
_focus_e.xfocus.type = FocusIn;
|
||||||
_focus_e.xfocus.window = focus;
|
_focus_e.xfocus.window = focus;
|
||||||
dispatch(_focus_e);
|
dispatch(_focus_e);
|
||||||
|
|
|
@ -882,8 +882,14 @@ void OBClient::unfocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OBClient::focusHandler(const XFocusChangeEvent &)
|
void OBClient::focusHandler(const XFocusChangeEvent &e)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("FocusIn for 0x%lx\n", e.window);
|
||||||
|
#endif // DEBUG
|
||||||
|
|
||||||
|
OtkEventHandler::focusHandler(e);
|
||||||
|
|
||||||
frame->focus();
|
frame->focus();
|
||||||
_focused = true;
|
_focused = true;
|
||||||
|
|
||||||
|
@ -891,8 +897,14 @@ void OBClient::focusHandler(const XFocusChangeEvent &)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OBClient::unfocusHandler(const XFocusChangeEvent &)
|
void OBClient::unfocusHandler(const XFocusChangeEvent &e)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("FocusOut for 0x%lx\n", e.window);
|
||||||
|
#endif // DEBUG
|
||||||
|
|
||||||
|
OtkEventHandler::unfocusHandler(e);
|
||||||
|
|
||||||
frame->unfocus();
|
frame->unfocus();
|
||||||
_focused = false;
|
_focused = false;
|
||||||
}
|
}
|
||||||
|
@ -900,6 +912,10 @@ void OBClient::unfocusHandler(const XFocusChangeEvent &)
|
||||||
|
|
||||||
void OBClient::configureRequestHandler(const XConfigureRequestEvent &e)
|
void OBClient::configureRequestHandler(const XConfigureRequestEvent &e)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("ConfigureRequest for 0x%lx\n", e.window);
|
||||||
|
#endif // DEBUG
|
||||||
|
|
||||||
OtkEventHandler::configureRequestHandler(e);
|
OtkEventHandler::configureRequestHandler(e);
|
||||||
|
|
||||||
// XXX: if we are iconic (or shaded? (fvwm does that)) ignore the event
|
// XXX: if we are iconic (or shaded? (fvwm does that)) ignore the event
|
||||||
|
|
|
@ -103,6 +103,7 @@ void OBFrame::focus()
|
||||||
{
|
{
|
||||||
otk::OtkWidget::focus();
|
otk::OtkWidget::focus();
|
||||||
update();
|
update();
|
||||||
|
_handle.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue