X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Factions.cc;h=6043ad0e6921a2f8ddf086eda167ebd9f25a9d8a;hb=90ae66cc44a93ab1419821944c258e72d1e4b559;hp=6750cc58e7dd02469753eafdff70adf2777c12be;hpb=56d7b547ae156e17c8e03ada3b80468f5a0b2605;p=chaz%2Fopenbox diff --git a/src/actions.cc b/src/actions.cc index 6750cc58..6043ad0e 100644 --- a/src/actions.cc +++ b/src/actions.cc @@ -15,8 +15,6 @@ const unsigned int OBActions::DOUBLECLICKDELAY = 300; OBActions::OBActions() : _button(0), _enter_win(0) { - _presses[0] = new MousePressAction(); - _presses[1] = new MousePressAction(); // XXX: load a configuration out of somewhere @@ -28,17 +26,6 @@ OBActions::~OBActions() } -void OBActions::insertPress(Window win, unsigned int button, Time time) -{ - MousePressAction *a = _presses[1]; - _presses[1] = _presses[0]; - _presses[0] = a; - a->win = win; - a->button = button; - a->time = time; -} - - void OBActions::buttonPressHandler(const XButtonEvent &e) { // XXX: run the PRESS guile hook @@ -48,8 +35,6 @@ void OBActions::buttonPressHandler(const XButtonEvent &e) if (_button) return; // won't count toward CLICK events _button = e.button; - - insertPress(e.window, e.button, e.time); } @@ -60,7 +45,7 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e) (long)e.window, e.state, e.button, e.time); // not for the button we're watching? - if (_button && _button != e.button) return; + if (_button != e.button) return; _button = 0; @@ -77,14 +62,22 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e) printf("GUILE: CLICK: win %lx modifiers %u button %u time %lx\n", (long)e.window, e.state, e.button, e.time); - if (_presses[0]->win == _presses[1]->win && - _presses[0]->button == _presses[1]->button && - e.time - _presses[1]->time < DOUBLECLICKDELAY) { + if (e.time - _release.time < DOUBLECLICKDELAY && + _release.win == e.window && _release.button == e.button) { // XXX: run the DOUBLECLICK guile hook printf("GUILE: DOUBLECLICK: win %lx modifiers %u button %u time %lx\n", (long)e.window, e.state, e.button, e.time); + // reset so you cant triple click for 2 doubleclicks + _release.win = 0; + _release.button = 0; + _release.time = 0; + } else { + // save the button release, might be part of a double click + _release.win = e.window; + _release.button = e.button; + _release.time = e.time; } }