From f5a18f6248d0736ca1b4571a7b3966aa2deb0935 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sun, 18 Aug 2019 01:54:31 +0200 Subject: [PATCH 1/2] Hovered edit object wasn't dragged if inside a red crop's rectangle Fix issue #5415 --- rtgui/cropwindow.cc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 5839a5edb..41c626015 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -404,6 +404,26 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) action_y = 0; needRedraw = true; } + } else if (iarea->getToolMode () == TMHand + && editSubscriber + && cropgl + && cropgl->inImageArea(iarea->posImage.x, iarea->posImage.y) + && editSubscriber->getEditingType() == ET_OBJECTS + && iarea->getObject() >= 0 + ) + { + needRedraw = editSubscriber->button1Pressed(bstate); + if (editSubscriber->isDragging()) { + state = SEditDrag1; + } else if (editSubscriber->isPicking()) { + state = SEditPick1; + pickedObject = iarea->getObject(); + pickModifierKey = bstate; + } + press_x = x; + press_y = y; + action_x = 0; + action_y = 0; } else if (onArea (CropTopLeft, x, y)) { state = SResizeTL; press_x = x; @@ -477,7 +497,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) cropgl->cropInit (cropHandler.cropParams->x, cropHandler.cropParams->y, cropHandler.cropParams->w, cropHandler.cropParams->h); } else if (iarea->getToolMode () == TMHand) { if (editSubscriber) { - if ((cropgl && cropgl->inImageArea(iarea->posImage.x, iarea->posImage.y) && (editSubscriber->getEditingType() == ET_PIPETTE && (bstate & GDK_CONTROL_MASK))) || editSubscriber->getEditingType() == ET_OBJECTS) { + if ((cropgl && cropgl->inImageArea(iarea->posImage.x, iarea->posImage.y) && editSubscriber->getEditingType() == ET_PIPETTE && (bstate & GDK_CONTROL_MASK))) { needRedraw = editSubscriber->button1Pressed(bstate); if (editSubscriber->isDragging()) { state = SEditDrag1; @@ -492,7 +512,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) action_y = 0; } } - if (state != SEditDrag1) { + if (state != SEditDrag1 && state != SEditPick1) { state = SCropImgMove; press_x = x; press_y = y; From 8bb88073fa1fd59ec9723a521a7a890838520f75 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sun, 18 Aug 2019 17:12:37 +0200 Subject: [PATCH 2/2] Fixing object precedence in getCursor as well + resize of the "catching spot" of the Gradient widget (30 -> 12) --- rtgui/cropwindow.cc | 2 ++ rtgui/gradient.cc | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 41c626015..a170ec04d 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1276,6 +1276,8 @@ void CropWindow::updateCursor (int x, int y) newType = CSArrow; } else if (onArea (CropToolBar, x, y)) { newType = CSMove; + } else if (iarea->getObject() > -1 && editSubscriber && editSubscriber->getEditingType() == ET_OBJECTS) { + newType = editSubscriber->getCursor(iarea->getObject()); } else if (onArea (CropResize, x, y)) { newType = CSResizeDiagonal; } else if (tm == TMColorPicker && hoveredPicker) { diff --git a/rtgui/gradient.cc b/rtgui/gradient.cc index 3f13dfe4d..4f389e112 100644 --- a/rtgui/gradient.cc +++ b/rtgui/gradient.cc @@ -93,7 +93,7 @@ Gradient::Gradient () : FoldableToolPanel(this, "gradient", M("TP_GRADIENT_LABEL centerCircle = new Circle(); centerCircle->datum = Geometry::IMAGE; centerCircle->radiusInImageSpace = false; - centerCircle->radius = 30; + centerCircle->radius = 12; centerCircle->filled = true; EditSubscriber::mouseOverGeometry.push_back( hLine );