Skip to content

Commit bcb051d

Browse files
committed
fix #32106: CTRL+click no longer de-selects
1 parent c829409 commit bcb051d

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

mscore/scoreview.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -467,9 +467,7 @@ class DeSelectTransition : public QMouseEventTransition
467467
virtual bool eventTest(QEvent* event) {
468468
if (!QMouseEventTransition::eventTest(event))
469469
return false;
470-
QStateMachine::WrappedEvent* we = static_cast<QStateMachine::WrappedEvent*>(event);
471-
QMouseEvent* me = static_cast<QMouseEvent*>(we->event());
472-
return canvas->mousePress(me);
470+
return canvas->getCurElement() != 0;
473471
}
474472
virtual void onTransition(QEvent* e) {
475473
QStateMachine::WrappedEvent* we = static_cast<QStateMachine::WrappedEvent*>(e);
@@ -598,7 +596,7 @@ bool ScoreViewDragTransition::eventTest(QEvent* event)
598596
return false;
599597
QStateMachine::WrappedEvent* we = static_cast<QStateMachine::WrappedEvent*>(event);
600598
QMouseEvent* me = static_cast<QMouseEvent*>(we->event());
601-
if (me->modifiers() & Qt::ShiftModifier)
599+
if ((me->modifiers() & Qt::ShiftModifier) || (me->modifiers() & Qt::ControlModifier))
602600
return false;
603601
return !canvas->mousePress(me);
604602
}
@@ -610,7 +608,7 @@ ScoreViewDragTransition::ScoreViewDragTransition(ScoreView* c, QState* target)
610608
}
611609

612610
//---------------------------------------------------------
613-
// onTransition
611+
// DragTransition
614612
//---------------------------------------------------------
615613

616614
void DragTransition::onTransition(QEvent* e)
@@ -705,8 +703,8 @@ ScoreView::ScoreView(QWidget* parent)
705703
s->addTransition(et);
706704
s->addTransition(new SelectTransition(this)); // select
707705
connect(s, SIGNAL(entered()), mscore, SLOT(setNormalState()));
708-
// s->addTransition(new DeSelectTransition(this)); // deselect
709-
// connect(s, SIGNAL(entered()), mscore, SLOT(setNormalState()));
706+
s->addTransition(new DeSelectTransition(this)); // deselect
707+
connect(s, SIGNAL(entered()), mscore, SLOT(setNormalState()));
710708
s->addTransition(new ScoreViewDragTransition(this, states[DRAG])); // ->stateDrag
711709
s->addTransition(new ScoreViewLassoTransition(this, states[LASSO])); // ->stateLasso
712710
s->addTransition(new ElementDragTransition(this, states[DRAG_OBJECT])); // ->stateDragObject
@@ -3260,9 +3258,16 @@ void ScoreView::select(QMouseEvent* ev)
32603258
else if (keyState & Qt::ShiftModifier)
32613259
st = SelectType::RANGE;
32623260
else if (keyState & Qt::ControlModifier) {
3263-
if (curElement->selected() && (ev->type() == QEvent::MouseButtonPress)) {
3264-
// do not deselect on ButtonPress, only on ButtonRelease
3265-
addSelect = false;
3261+
if (curElement->selected()) {
3262+
if (ev->type() == QEvent::MouseButtonPress) {
3263+
// do not deselect on ButtonPress, only on ButtonRelease
3264+
addSelect = false;
3265+
}
3266+
else if (ev->type() == QEvent::MouseButtonRelease) {
3267+
score()->deselect(curElement);
3268+
_score->setUpdateAll(true); //DEBUG
3269+
mscore->endCmd();
3270+
}
32663271
return;
32673272
}
32683273
addSelect = true;

0 commit comments

Comments
 (0)