Skip to content

Commit edc20c4

Browse files
WickedSmokephkahler
authored andcommitted
Qt: Fix mouse & key event modifiers.
1 parent e92e98e commit edc20c4

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

src/platform/guiqt.cpp

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -589,21 +589,26 @@ void SSView::paintGL() {
589589
receiver->onRender();
590590
}
591591

592+
static inline void setMouseKeyModifiers(MouseEvent& me, const QInputEvent* qe)
593+
{
594+
Qt::KeyboardModifiers mod = qe->modifiers();
595+
me.shiftDown = mod & Qt::ShiftModifier ? true : false;
596+
me.controlDown = mod & Qt::ControlModifier ? true : false;
597+
}
598+
592599
void SSView::wheelEvent(QWheelEvent* event)
593600
{
594601
const double wheelDelta=120.0;
595602
slvMouseEvent.button = MouseEvent::Button::NONE;
596603
slvMouseEvent.type = MouseEvent::Type::SCROLL_VERT;
597604
slvMouseEvent.scrollDelta = (double)event->angleDelta().y() / wheelDelta;
605+
setMouseKeyModifiers(slvMouseEvent, event);
598606

599607
receiver->onMouseEvent(slvMouseEvent);
600608
}
601609

602610
void SSView::updateSlvSpaceMouseEvent(QMouseEvent* event)
603611
{
604-
slvMouseEvent.shiftDown = false;
605-
slvMouseEvent.controlDown = false;
606-
607612
switch (event->type())
608613
{
609614
case QEvent::MouseMove:
@@ -658,30 +663,19 @@ void SSView::updateSlvSpaceMouseEvent(QMouseEvent* event)
658663
slvMouseEvent.x = double(event->x());
659664
slvMouseEvent.y = double(event->y());
660665
#endif
661-
Qt::KeyboardModifiers keyModifier = QGuiApplication::keyboardModifiers();
662666

663-
switch (keyModifier)
664-
{
665-
case Qt::ShiftModifier:
666-
slvMouseEvent.shiftDown = true;
667-
break;
668-
case Qt::ControlModifier:
669-
slvMouseEvent.controlDown = true;
670-
break;
671-
}
667+
setMouseKeyModifiers(slvMouseEvent, event);
672668

673669
receiver->onMouseEvent(slvMouseEvent);
674670
}
675671

676672
void SSView::updateSlvSpaceKeyEvent(QKeyEvent* event)
677673
{
678674
slvKeyEvent.key = KeyboardEvent::Key(-1);
679-
slvKeyEvent.shiftDown = false;
680-
slvKeyEvent.controlDown = false;
681-
if (event->modifiers() == Qt::ShiftModifier)
682-
slvKeyEvent.shiftDown = true;
683-
if (event->modifiers() == Qt::ControlModifier)
684-
slvKeyEvent.controlDown = true;
675+
676+
Qt::KeyboardModifiers mod = event->modifiers();
677+
slvKeyEvent.shiftDown = mod & Qt::ShiftModifier ? true : false;
678+
slvKeyEvent.controlDown = mod & Qt::ControlModifier ? true : false;
685679

686680
if (event->key() >= Qt::Key_F1 && event->key() <= Qt::Key_F35) {
687681
slvKeyEvent.key = KeyboardEvent::Key::FUNCTION;

0 commit comments

Comments
 (0)