From 3a4f91b53700093f6f577c309a746ede44652e4f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 27 Dec 2002 08:33:57 +0000 Subject: [PATCH] enter/leave and focus events are working beautifully --- otk/eventdispatcher.cc | 10 +++++----- src/client.cc | 20 ++++++++++++++++++-- src/frame.cc | 1 + 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/otk/eventdispatcher.cc b/otk/eventdispatcher.cc index d28a7426..1d4a4ec0 100644 --- a/otk/eventdispatcher.cc +++ b/otk/eventdispatcher.cc @@ -94,7 +94,7 @@ void OtkEventDispatcher::dispatchEvents(void) focus = None; printf("FocusOut focus=%lx unfocus=%lx\n", focus, unfocus); } -/* // madly compress all crossing events + // madly compress all crossing events } else if (e.type == EnterNotify) { // any other types are not ones we're interested in if (e.xcrossing.mode == NotifyNormal) { @@ -109,7 +109,7 @@ void OtkEventDispatcher::dispatchEvents(void) leave = e.xcrossing.window; leave_root = e.xcrossing.root; printf("Leave enter=%lx leave=%lx\n", enter, leave); - }*/ + } } else { // normal events dispatch(e); @@ -118,7 +118,7 @@ void OtkEventDispatcher::dispatchEvents(void) if (unfocus != None) { // 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.window = unfocus; 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 // focus this new target if (_focus != None) { - printf("UNFOCUSING: %lx\n", _focus); +// printf("UNFOCUSING: %lx\n", _focus); _focus_e.xfocus.type = FocusOut; _focus_e.xfocus.window = _focus; dispatch(_focus_e); } - printf("FOCUSING: %lx\n", focus); +// printf("FOCUSING: %lx\n", focus); _focus_e.xfocus.type = FocusIn; _focus_e.xfocus.window = focus; dispatch(_focus_e); diff --git a/src/client.cc b/src/client.cc index df9ad8a6..38364432 100644 --- a/src/client.cc +++ b/src/client.cc @@ -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(); _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(); _focused = false; } @@ -900,6 +912,10 @@ void OBClient::unfocusHandler(const XFocusChangeEvent &) void OBClient::configureRequestHandler(const XConfigureRequestEvent &e) { +#ifdef DEBUG + printf("ConfigureRequest for 0x%lx\n", e.window); +#endif // DEBUG + OtkEventHandler::configureRequestHandler(e); // XXX: if we are iconic (or shaded? (fvwm does that)) ignore the event diff --git a/src/frame.cc b/src/frame.cc index fed6132e..3d290bc9 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -103,6 +103,7 @@ void OBFrame::focus() { otk::OtkWidget::focus(); update(); + _handle.update(); } -- 2.39.2