all repos — openbox @ 3a4f91b53700093f6f577c309a746ede44652e4f

openbox fork - make it a bit more like ryudo

enter/leave and focus events are working beautifully
Dana Jansens danakj@orodu.net
commit

3a4f91b53700093f6f577c309a746ede44652e4f

parent

51f8b875b33be1db16e6167ca823acf23e450dd5

3 files changed, 24 insertions(+), 7 deletions(-)

jump to
M otk/eventdispatcher.ccotk/eventdispatcher.cc

@@ -94,7 +94,7 @@ unfocus = e.xfocus.window;

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 @@ if (e.xcrossing.mode == NotifyNormal) {

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 @@ }

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 @@ } else if (focus != None) {

// 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);
M src/client.ccsrc/client.cc

@@ -882,8 +882,14 @@ Openbox::instance->setFocusedClient(0);

} -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 @@ Openbox::instance->setFocusedClient(this);

} -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::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
M src/frame.ccsrc/frame.cc

@@ -103,6 +103,7 @@ void OBFrame::focus()

{ otk::OtkWidget::focus(); update(); + _handle.update(); }