summaryrefslogtreecommitdiff
path: root/muse2/muse/widgets/canvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/widgets/canvas.cpp')
-rw-r--r--muse2/muse/widgets/canvas.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/muse2/muse/widgets/canvas.cpp b/muse2/muse/widgets/canvas.cpp
index 650b10b7..a74e8a8f 100644
--- a/muse2/muse/widgets/canvas.cpp
+++ b/muse2/muse/widgets/canvas.cpp
@@ -525,7 +525,6 @@ void Canvas::viewMousePressEvent(QMouseEvent* event)
//printf("viewMousePressEvent ignoring buttons:%x mods:%x button:%x\n", (int)event->buttons(), (int)keyState, event->button());
return;
}
- bool shift = keyState & Qt::ShiftModifier;
bool alt = keyState & Qt::AltModifier;
bool ctrl = keyState & Qt::ControlModifier;
start = event->pos();
@@ -624,15 +623,6 @@ void Canvas::viewMousePressEvent(QMouseEvent* event)
else if (alt) {
drag = DRAG_CLONE_START;
}
- else if (shift) { //Select all on the same pitch (e.g. same y-value)
- deselectAll();
- for (iCItem i = items.begin(); i != items.end(); ++i) {
- if (i->second->y() == curItem->y() )
- selectItem(i->second, true);
- }
- updateSelection();
- redraw();
- }
else
drag = DRAG_MOVE_START;
}
@@ -1088,6 +1078,7 @@ void Canvas::viewMouseReleaseEvent(QMouseEvent* event)
QPoint pos = event->pos();
bool ctrl = ((QInputEvent*)event)->modifiers() & Qt::ControlModifier;
+ bool shift = ((QInputEvent*)event)->modifiers() & Qt::ShiftModifier;
bool redrawFlag = false;
switch (drag) {
@@ -1096,7 +1087,17 @@ void Canvas::viewMouseReleaseEvent(QMouseEvent* event)
case DRAG_CLONE_START:
if (!ctrl)
deselectAll();
- selectItem(curItem, !(ctrl && curItem->isSelected()));
+
+ if (!shift) { //Select or deselect only the clicked item
+ selectItem(curItem, !(ctrl && curItem->isSelected()));
+ }
+ else { //Select or deselect all on the same pitch (e.g. same y-value)
+ bool selectionFlag = !(ctrl && curItem->isSelected());
+ for (iCItem i = items.begin(); i != items.end(); ++i)
+ if (i->second->y() == curItem->y() )
+ selectItem(i->second, selectionFlag);
+ }
+
updateSelection();
redrawFlag = true;
itemReleased(curItem, curItem->pos());
@@ -1131,7 +1132,7 @@ void Canvas::viewMouseReleaseEvent(QMouseEvent* event)
case DRAG_OFF:
break;
case DRAG_RESIZE:
- resizeItem(curItem, false);
+ resizeItem(curItem, false, ctrl);
break;
case DRAG_NEW:
newItem(curItem, false);