diff --git a/lib/crop/croptool.cpp b/lib/crop/croptool.cpp --- a/lib/crop/croptool.cpp +++ b/lib/crop/croptool.cpp @@ -290,11 +290,19 @@ void CropTool::mousePressEvent(QGraphicsSceneMouseEvent* event) { - event->accept(); if (event->buttons() != Qt::LeftButton) { + event->ignore(); + return; + } + const CropHandle newMovingHandle = d->handleAt(event->pos()); + if (event->modifiers() & Qt::ControlModifier + && !(newMovingHandle & (CH_Top | CH_Left | CH_Right | CH_Bottom))) { + event->ignore(); return; } - d->mMovingHandle = d->handleAt(event->pos()); + + event->accept(); + d->mMovingHandle = newMovingHandle; d->updateCursor(d->mMovingHandle, true /* down */); if (d->mMovingHandle == CH_Content) { diff --git a/lib/redeyereduction/redeyereductiontool.cpp b/lib/redeyereduction/redeyereductiontool.cpp --- a/lib/redeyereduction/redeyereductiontool.cpp +++ b/lib/redeyereduction/redeyereductiontool.cpp @@ -133,10 +133,12 @@ void RedEyeReductionTool::mousePressEvent(QGraphicsSceneMouseEvent* event) { - event->accept(); - if (event->buttons() != Qt::LeftButton) { + if (event->buttons() != Qt::LeftButton + || event->modifiers() & Qt::ControlModifier) { + event->ignore(); return; } + event->accept(); if (d->mStatus == NotSet) { d->mToolWidget->diameterSpinBox->setValue(d->mDiameter); d->mToolWidget->showMainPage();