clicks on the client work as they should
This commit is contained in:
parent
ca3e463057
commit
1c8090fa67
3 changed files with 17 additions and 35 deletions
|
@ -45,7 +45,6 @@ void OBActions::insertPress(const XButtonEvent &e)
|
|||
|
||||
OBClient *c = Openbox::instance->findClient(e.window);
|
||||
if (c) a->clientarea = c->area();
|
||||
printf("press %d x:%d y:%d winx:%d winy:%d\n", e.button, e.x_root, e.y_root, c->area().x(), c->area().y());
|
||||
}
|
||||
|
||||
void OBActions::removePress(const XButtonEvent &e)
|
||||
|
@ -202,8 +201,6 @@ void OBActions::motionHandler(const XMotionEvent &e)
|
|||
unsigned int state = e.state & (ControlMask | ShiftMask | Mod1Mask |
|
||||
Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask);
|
||||
unsigned int button = _posqueue[0]->button;
|
||||
printf("motion %d x:%d y:%d winx:%d winy:%d\n", button, x_root, y_root,
|
||||
_posqueue[0]->clientarea.x(), _posqueue[0]->clientarea.y());
|
||||
MotionData *data = new_motion_data(e.window, e.time, state, button,
|
||||
w->mcontext(), MouseMotion,
|
||||
x_root, y_root, _posqueue[0]->pos,
|
||||
|
|
|
@ -114,7 +114,8 @@ void OBBackgroundWidget::grabButtons(bool grab)
|
|||
|
||||
void OBBackgroundWidget::buttonPressHandler(const XButtonEvent &e)
|
||||
{
|
||||
XAllowEvents(otk::OBDisplay::display, ReplayPointer, e.time);
|
||||
if (type() == OBWidget::Type_Plate)
|
||||
XAllowEvents(otk::OBDisplay::display, ReplayPointer, e.time);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -414,46 +414,30 @@ bool OBBindings::addButton(const std::string &but, MouseContext context,
|
|||
void OBBindings::grabButtons(bool grab, OBClient *client)
|
||||
{
|
||||
for (int i = 0; i < NUM_MOUSE_CONTEXT; ++i) {
|
||||
Window win[3] = {0, 0, 0}; // at most 2 windows
|
||||
Window win;
|
||||
int mode = GrabModeAsync;
|
||||
switch (i) {
|
||||
case MC_Frame:
|
||||
win[0] = client->frame->window();
|
||||
break;
|
||||
case MC_Titlebar:
|
||||
win[0] = client->frame->titlebar();
|
||||
win[1] = client->frame->label();
|
||||
win = client->frame->window();
|
||||
break;
|
||||
case MC_Window:
|
||||
win[0] = client->frame->plate();
|
||||
break;
|
||||
case MC_Handle:
|
||||
win[0] = client->frame->handle();
|
||||
break;
|
||||
case MC_MaximizeButton:
|
||||
case MC_CloseButton:
|
||||
case MC_IconifyButton:
|
||||
case MC_StickyButton:
|
||||
case MC_Grip:
|
||||
case MC_Root:
|
||||
case MC_MenuItem:
|
||||
win = client->frame->plate();
|
||||
mode = GrabModeSync; // this is handled in the plate's buttonPressHandler
|
||||
break;
|
||||
default:
|
||||
assert(false); // invalid mouse context
|
||||
continue;
|
||||
}
|
||||
ButtonBindingList::iterator it, end = _buttons[i].end();
|
||||
for (it = _buttons[i].begin(); it != end; ++it)
|
||||
for (Window *w = win; *w; ++w) {
|
||||
if (grab) {
|
||||
otk::OBDisplay::grabButton((*it)->binding.key,
|
||||
(*it)->binding.modifiers, *w, false,
|
||||
ButtonPressMask | ButtonMotionMask |
|
||||
ButtonReleaseMask, GrabModeAsync,
|
||||
GrabModeAsync, None, None, false);
|
||||
}
|
||||
else
|
||||
otk::OBDisplay::ungrabButton((*it)->binding.key,
|
||||
(*it)->binding.modifiers, *w);
|
||||
}
|
||||
if (grab)
|
||||
otk::OBDisplay::grabButton((*it)->binding.key,
|
||||
(*it)->binding.modifiers, win, false,
|
||||
ButtonPressMask | ButtonMotionMask |
|
||||
ButtonReleaseMask, mode, GrabModeAsync,
|
||||
None, None, false);
|
||||
else
|
||||
otk::OBDisplay::ungrabButton((*it)->binding.key,
|
||||
(*it)->binding.modifiers, win);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue