watch for case where we think one button is pressed but it isnt anymore, making Click events get missed
This commit is contained in:
parent
ccb58d37ee
commit
a1a606d4f8
1 changed files with 17 additions and 1 deletions
|
@ -86,6 +86,22 @@ void Actions::buttonPressHandler(const XButtonEvent &e)
|
||||||
else
|
else
|
||||||
return; // not a valid mouse context
|
return; // not a valid mouse context
|
||||||
|
|
||||||
|
if (_button) {
|
||||||
|
unsigned int mask;
|
||||||
|
switch(_button) {
|
||||||
|
case Button1: mask = Button1Mask; break;
|
||||||
|
case Button2: mask = Button2Mask; break;
|
||||||
|
case Button3: mask = Button3Mask; break;
|
||||||
|
case Button4: mask = Button4Mask; break;
|
||||||
|
case Button5: mask = Button5Mask; break;
|
||||||
|
default: assert(false); return; // unhandled button
|
||||||
|
}
|
||||||
|
// was the button released but we didnt get the event? (pointergrabs cause
|
||||||
|
// this)
|
||||||
|
if (!(e.state & mask))
|
||||||
|
_button = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// run the PRESS python hook
|
// run the PRESS python hook
|
||||||
// kill off the Button1Mask etc, only want the modifiers
|
// kill off the Button1Mask etc, only want the modifiers
|
||||||
unsigned int state = e.state & (ControlMask | ShiftMask | Mod1Mask |
|
unsigned int state = e.state & (ControlMask | ShiftMask | Mod1Mask |
|
||||||
|
@ -120,7 +136,7 @@ void Actions::buttonPressHandler(const XButtonEvent &e)
|
||||||
void Actions::buttonReleaseHandler(const XButtonEvent &e)
|
void Actions::buttonReleaseHandler(const XButtonEvent &e)
|
||||||
{
|
{
|
||||||
otk::EventHandler::buttonReleaseHandler(e);
|
otk::EventHandler::buttonReleaseHandler(e);
|
||||||
removePress(e);
|
//removePress(e);
|
||||||
|
|
||||||
MouseContext::MC context;
|
MouseContext::MC context;
|
||||||
EventHandler *h = openbox->findHandler(e.window);
|
EventHandler *h = openbox->findHandler(e.window);
|
||||||
|
|
Loading…
Reference in a new issue