// Event calls void GUI::penDown(u8 x, u8 y) { Widget *w = getWidgetAt(x,y); if(w!=0) { activeWidget = w; w->penDown(x, y); } }
void WorldEditor::mousePressed(gcn::MouseEvent& mouseEvent) { if (mouseEvent.getSource() != this) { return; } if (mDrawingNewRoom) { mDrawingNewRoom = false; return; } if (mouseEvent.getButton() == gcn::MouseEvent::RIGHT) { if (mWorldPieces.find(mRoomSelector->getSelectedRoom()) == mWorldPieces.end()) { WorldPiece* worldPiece = new WorldPiece(mRoomSelector->getSelectedRoom()); mWorldPieces[mRoomSelector->getSelectedRoom()] = worldPiece; worldPiece->setPosition(mouseEvent.getX() - mouseEvent.getX() % 20, mouseEvent.getY() - mouseEvent.getY() % 15); worldPiece->addActionListener(this); add(worldPiece); } } else if (mouseEvent.getButton() == gcn::MouseEvent::LEFT) { if (!mNewRoomDialogWindow->isVisible() && getWidgetAt(mouseEvent.getX(), mouseEvent.getY()) == NULL) { mDrawingNewRoom = true; if (mouseEvent.getX() % 20 < 10) { mNewRoomX = mouseEvent.getX() - mouseEvent.getX() % 20; } else { mNewRoomX = mouseEvent.getX() - mouseEvent.getX() % 20 + 20; } if (mouseEvent.getY() % 15 < 8) { mNewRoomY = mouseEvent.getY() - mouseEvent.getY() % 15; } else { mNewRoomY = mouseEvent.getY() - mouseEvent.getY() % 15 + 15; } mNewRoomWidth = 0; mNewRoomHeight = 0; } } }
bool QGraphicsViewAdapter::sendKeyEvent(int key, bool keyDown) { QPoint pos(_previousQtMouseX, _previousQtMouseY); if (getWidgetAt(pos) != NULL) { QCoreApplication::postEvent(this, new MyQKeyEvent(key,keyDown)); return true; } return false; }
Widget* Gui::getMouseEventSource(int x, int y) { Widget* widget = getWidgetAt(x, y); if (mFocusHandler->getModalMouseInputFocused() != NULL && !widget->isModalMouseInputFocused()) { return mFocusHandler->getModalMouseInputFocused(); } return widget; }
void GUI::mouseDown(const Events::Event &event) { if ((event.button.button != SDL_BUTTON_LMASK) && (event.button.button != SDL_BUTTON_WHEELUP) && (event.button.button != SDL_BUTTON_WHEELDOWN)) // We only care about left mouse button presses, and the wheel return; Widget *widget = getWidgetAt(event.button.x, event.button.y); if (widget != _currentWidget) changedWidget(widget); mouseDown(_currentWidget, event); }
void GUI::mouseMove(const Events::Event &event) { Widget *widget = getWidgetAt(event.motion.x, event.motion.y); if (event.motion.state != 0) { // Moves with a mouse button pressed sends move events to the current widget mouseMove(_currentWidget, event); checkWidgetActive(_currentWidget); } else // Moves without a mouse button can change the current widget if (widget != _currentWidget) changedWidget(widget); }
void GUI::mouseUp(const Events::Event &event) { if (event.button.button != SDL_BUTTON_LMASK) // We only care about left mouse button presses return; Widget *widget = getWidgetAt(event.button.x, event.button.y); if (widget != _currentWidget) { changedWidget(widget); return; } mouseUp(_currentWidget, event); checkWidgetActive(_currentWidget); updateMouse(); }
bool QGraphicsViewAdapter::sendPointerEvent(int x, int y, int buttonMask) { _previousQtMouseX = x; _previousQtMouseY = _graphicsView->size().height() - y; QPoint pos(_previousQtMouseX, _previousQtMouseY); if (getWidgetAt(pos) != NULL || (_previousSentEvent && buttonMask != 0)) { QCoreApplication::postEvent(this, new MyQPointerEvent(x,y,buttonMask)); OSG_INFO<<"sendPointerEvent("<<x<<", "<<y<<") sent"<<std::endl; _previousSentEvent = true; return true; } OSG_INFO<<"sendPointerEvent("<<x<<", "<<y<<") not sent"<<std::endl; _previousSentEvent = false; return false; }
bool QGraphicsViewAdapter::handlePointerEvent(int x, int y, int buttonMask) { OSG_INFO<<"dispatchPointerEvent("<<x<<", "<<y<<", "<<buttonMask<<")"<<std::endl; y = _graphicsView->size().height()-y; bool leftButtonPressed = (buttonMask & osgGA::GUIEventAdapter::LEFT_MOUSE_BUTTON)!=0; bool middleButtonPressed = (buttonMask & osgGA::GUIEventAdapter::MIDDLE_MOUSE_BUTTON)!=0; bool rightButtonPressed = (buttonMask & osgGA::GUIEventAdapter::RIGHT_MOUSE_BUTTON)!=0; bool prev_leftButtonPressed = (_previousButtonMask & osgGA::GUIEventAdapter::LEFT_MOUSE_BUTTON)!=0; bool prev_middleButtonPressed = (_previousButtonMask & osgGA::GUIEventAdapter::MIDDLE_MOUSE_BUTTON)!=0; bool prev_rightButtonPressed = (_previousButtonMask & osgGA::GUIEventAdapter::RIGHT_MOUSE_BUTTON)!=0; OSG_INFO<<"leftButtonPressed "<<leftButtonPressed<<std::endl; OSG_INFO<<"middleButtonPressed "<<middleButtonPressed<<std::endl; OSG_INFO<<"rightButtonPressed "<<rightButtonPressed<<std::endl; Qt::MouseButtons qtMouseButtons = (leftButtonPressed ? Qt::LeftButton : Qt::NoButton) | (middleButtonPressed ? Qt::MidButton : Qt::NoButton) | (rightButtonPressed ? Qt::RightButton : Qt::NoButton); const QRect viewportGeometry = _graphicsView->viewport()->geometry(); const QPoint globalPos(x, y); if (buttonMask != _previousButtonMask) { Qt::MouseButton qtButton = Qt::NoButton; QEvent::Type eventType = QEvent::None; if (leftButtonPressed != prev_leftButtonPressed) { qtButton = Qt::LeftButton; eventType = leftButtonPressed ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease ; } else if (middleButtonPressed != prev_middleButtonPressed) { qtButton = Qt::MidButton; eventType = middleButtonPressed ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease ; } else if (rightButtonPressed != prev_rightButtonPressed) { qtButton = Qt::RightButton; eventType = rightButtonPressed ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease ; if(!rightButtonPressed) { QWidget* targetWidget = getWidgetAt(globalPos); if(targetWidget) { QPoint localPos = targetWidget->mapFromGlobal(globalPos); QContextMenuEvent* cme = new QContextMenuEvent(QContextMenuEvent::Mouse, localPos, globalPos); QCoreApplication::postEvent(targetWidget, cme); } } } if (eventType==QEvent::MouseButtonPress) { _image->sendFocusHint(true); } QMouseEvent event(eventType, globalPos, qtButton, qtMouseButtons, 0); QCoreApplication::sendEvent(_graphicsView->viewport(), &event ); _previousButtonMask = buttonMask; } else if (x != _previousMouseX || y != _previousMouseY) { QMouseEvent event(QEvent::MouseMove, globalPos, Qt::NoButton, qtMouseButtons, 0); QCoreApplication::sendEvent(_graphicsView->viewport(), &event); _previousMouseX = x; _previousMouseY = y; } return true; }