#endif
#include "actions.hh"
-#include "widget.hh"
+#include "widgetbase.hh"
#include "openbox.hh"
#include "client.hh"
#include "screen.hh"
screen = c->screen();
else
screen = otk::OBDisplay::findScreen(e.root)->screen();
- ButtonData data(screen, c, e.time, state, e.button, w->mcontext(),
- MousePress);
+ MouseData data(screen, c, e.time, state, e.button, w->mcontext(),
+ MousePress);
Openbox::instance->bindings()->fireButton(&data);
if (_button) return; // won't count toward CLICK events
_button = e.button;
+
+ if (w->mcontext() == MC_Window) {
+ /*
+ Because of how events are grabbed on the client window, we can't get
+ ButtonRelease events, so instead we simply manufacture them here, so that
+ clicks/doubleclicks etc still work.
+ */
+ //XButtonEvent ev = e;
+ //ev.type = ButtonRelease;
+ buttonReleaseHandler(e);
+ }
}
screen = c->screen();
else
screen = otk::OBDisplay::findScreen(e.root)->screen();
- ButtonData data(screen, c, e.time, state, e.button, w->mcontext(),
- MouseClick);
+ MouseData data(screen, c, e.time, state, e.button, w->mcontext(),
+ MouseClick);
Openbox::instance->bindings()->fireButton(&data);
screen = c->screen();
else
screen = otk::OBDisplay::findScreen(e.root)->screen();
- MotionData data(screen, c, e.time, state, button, w->mcontext(), MouseMotion,
- x_root, y_root, _posqueue[0]->pos, _posqueue[0]->clientarea);
- Openbox::instance->bindings()->fireButton((ButtonData*)&data);
+ MouseData data(screen, c, e.time, state, button, w->mcontext(), MouseMotion,
+ x_root, y_root, _posqueue[0]->pos, _posqueue[0]->clientarea);
+ Openbox::instance->bindings()->fireButton(&data);
}
void OBActions::mapRequestHandler(const XMapRequestEvent &e)