summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--otk/eventdispatcher.cc10
-rw-r--r--src/client.cc20
-rw-r--r--src/frame.cc1
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();
}