void WzMainWindow::mouseReleaseEvent(QMouseEvent *event) { mouseXPos = event->x(); mouseYPos = event->y(); MOUSE_KEY_CODE idx = buttonToIdx(event->button()); if (idx == MOUSE_BAD) { return; // not recognized mouse button } MousePress mousePress; mousePress.action = MousePress::Release; mousePress.key = idx; mousePress.pos = Vector2i(mouseXPos, mouseYPos); mousePresses.push_back(mousePress); aMouseState[idx].releasePos.x = mouseXPos; aMouseState[idx].releasePos.y = mouseYPos; if (aMouseState[idx].state == KEY_PRESSED) { aMouseState[idx].state = KEY_PRESSRELEASE; } else if (aMouseState[idx].state == KEY_DOWN || aMouseState[idx].state == KEY_DRAG || aMouseState[idx].state == KEY_DOUBLECLICK) { aMouseState[idx].state = KEY_RELEASED; } }
void WzMainWindow::mouseReleaseEvent(QMouseEvent *event) { mouseXPos = event->x(); mouseYPos = event->y(); MOUSE_KEY_CODE idx = buttonToIdx(event->button()); if (idx == MOUSE_BAD) { return; // not recognized mouse button } aMouseState[idx].releasePos.x = mouseXPos; aMouseState[idx].releasePos.y = mouseYPos; if (aMouseState[idx].state == KEY_PRESSED) { aMouseState[idx].state = KEY_PRESSRELEASE; } else if (aMouseState[idx].state == KEY_DOWN || aMouseState[idx].state == KEY_DRAG || aMouseState[idx].state == KEY_DOUBLECLICK) { aMouseState[idx].state = KEY_RELEASED; } }
// TODO consider using QWidget::mouseDoubleClickEvent() for double-click void WzMainWindow::mousePressEvent(QMouseEvent *event) { mouseXPos = event->x(); mouseYPos = event->y(); Qt::MouseButtons presses = event->buttons(); // full state info for all buttons MOUSE_KEY_CODE idx = buttonToIdx(event->button()); // index of button that caused event if (idx == MOUSE_BAD) { debug(LOG_ERROR, "bad mouse idx"); // FIXME remove return; // not recognized mouse button } MousePress mousePress; mousePress.action = MousePress::Press; mousePress.key = idx; mousePress.pos = Vector2i(mouseXPos, mouseYPos); mousePresses.push_back(mousePress); aMouseState[idx].pressPos.x = mouseXPos; aMouseState[idx].pressPos.y = mouseYPos; if (aMouseState[idx].state == KEY_UP || aMouseState[idx].state == KEY_RELEASED || aMouseState[idx].state == KEY_PRESSRELEASE) { if (!presses.testFlag(Qt::MidButton)) //skip doubleclick check for wheel { // whether double click or not if (realTime - aMouseState[idx].lastdown < DOUBLE_CLICK_INTERVAL) { aMouseState[idx].state = KEY_DOUBLECLICK; aMouseState[idx].lastdown = 0; } else { aMouseState[idx].state = KEY_PRESSED; aMouseState[idx].lastdown = realTime; } } else //mouse wheel up/down was used, so notify. FIXME. { aMouseState[idx].state = KEY_PRESSED; aMouseState[idx].lastdown = 0; } if (idx == MOUSE_LMB || idx == MOUSE_RMB || idx == MOUSE_MMB) { dragKey = idx; dragX = mouseX(); dragY = mouseY(); } } }