[graphics/krita/krita/6.0] libs/flake/tools: Add segment deselection
Dmitry Kazakov <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 1ccf3b9d150d6a5d3cf164c153c1a4751330df08 by Dmitry Kazakov, on behalf of Luna Lovecraft.
Committed on 27/07/2026 at 11:46.
Pushed by dkazakov into branch 'krita/6.0'.
Add segment deselection
Now the user can Shift click a selected segment and it will be
deselected
M +12 -3 libs/flake/tools/KoPathTool.cpp
https://invent.kde.org/graphics/krita/-/commit/1ccf3b9d150d6a5d3cf164c153c1a4751330df08
diff --git a/libs/flake/tools/KoPathTool.cpp b/libs/flake/tools/KoPathTool.cpp
index 759e3fbdc85..3ab4822eaef 100644
--- a/libs/flake/tools/KoPathTool.cpp
+++ b/libs/flake/tools/KoPathTool.cpp
@@ -570,6 +570,8 @@ void KoPathTool::mousePressEvent(KoPointerEvent *event)
if (event->button() & Qt::LeftButton) {
+ bool shift_pressed = (event->modifiers() & Qt::ShiftModifier);
+
// check if we hit a path segment
if (m_activeSegment && m_activeSegment->isValid()) {
@@ -577,8 +579,15 @@ void KoPathTool::mousePressEvent(KoPointerEvent *event)
KoPathPointIndex index = shape->pathPointIndex(m_activeSegment->segmentStart);
KoPathSegment segment = shape->segmentByIndex(index);
- m_pointSelection.add(segment.first(), !(event->modifiers() & Qt::ShiftModifier));
- m_pointSelection.add(segment.second(), false);
+ // The segment is selected so now need to deselect it
+ if (m_pointSelection.contains(segment.first()) && m_pointSelection.contains(segment.second())
+ && shift_pressed) {
+ m_pointSelection.remove(segment.first());
+ m_pointSelection.remove(segment.second());
+ } else {
+ m_pointSelection.add(segment.first(), !shift_pressed);
+ m_pointSelection.add(segment.second(), false);
+ }
KoPathPointData data(shape, index);
m_currentStrategy.reset(new KoPathSegmentChangeStrategy(this, event->point, data, m_activeSegment->positionOnSegment));
@@ -590,7 +599,7 @@ void KoPathTool::mousePressEvent(KoPointerEvent *event)
if (shape && !selection->isSelected(shape)) {
- if (!(event->modifiers() & Qt::ShiftModifier)) {
+ if (!shift_pressed) {
selection->deselectAll();
}