diff --git a/krita/pics/tools/SVG/16/dark_tool_magnetic_selection.svg b/krita/pics/tools/SVG/16/dark_tool_magnetic_selection.svg
new file mode 100644
index 0000000000..cb6ebd8897
--- /dev/null
+++ b/krita/pics/tools/SVG/16/dark_tool_magnetic_selection.svg
@@ -0,0 +1,232 @@
+
+
+
+
diff --git a/krita/pics/tools/SVG/16/light_tool_magnetic_selection.svg b/krita/pics/tools/SVG/16/light_tool_magnetic_selection.svg
new file mode 100644
index 0000000000..426c2647d5
--- /dev/null
+++ b/krita/pics/tools/SVG/16/light_tool_magnetic_selection.svg
@@ -0,0 +1,150 @@
+
+
+
+
diff --git a/krita/pics/tools/SVG/16/tools-svg-16-icons.qrc b/krita/pics/tools/SVG/16/tools-svg-16-icons.qrc
index d760fb0128..eafca030a8 100644
--- a/krita/pics/tools/SVG/16/tools-svg-16-icons.qrc
+++ b/krita/pics/tools/SVG/16/tools-svg-16-icons.qrc
@@ -1,82 +1,84 @@
dark_calligraphy.svgdark_draw-text.svgdark_format-fill-color.svgdark_krita_draw_path.svgdark_krita_tool_color_fill.svgdark_krita_tool_color_picker.svgdark_krita_tool_dyna.svgdark_krita_tool_ellipse.svgdark_krita_tool_freehand.svgdark_krita_tool_freehandvector.svgdark_krita_tool_gradient.svgdark_krita_tool_grid.svgdark_krita_tool_line.svgdark_krita_tool_measure.svgdark_krita_tool_move.svgdark_krita_tool_multihand.svgdark_krita_tool_polygon.svgdark_krita_tool_rectangle.svgdark_krita_tool_transform.svgdark_pattern.svgdark_polyline.svgdark_select.svgdark_tool_contiguous_selection.svgdark_tool_crop.svgdark_tool_elliptical_selection.svgdark_tool_outline_selection.svgdark_tool_pan.svgdark_tool_path_selection.svg
+ dark_tool_magnetic_selection.svgdark_tool_perspectivegrid.svgdark_tool_polygonal_selection.svgdark_tool_rect_selection.svgdark_tool_similar_selection.svgdark_tool_zoom.svglight_calligraphy.svglight_draw-text.svglight_format-fill-color.svglight_krita_draw_path.svglight_krita_tool_color_fill.svglight_krita_tool_color_picker.svglight_krita_tool_dyna.svglight_krita_tool_ellipse.svglight_krita_tool_freehand.svglight_krita_tool_freehandvector.svglight_krita_tool_gradient.svglight_krita_tool_grid.svglight_krita_tool_line.svglight_krita_tool_measure.svglight_krita_tool_move.svglight_krita_tool_multihand.svglight_krita_tool_polygon.svglight_krita_tool_rectangle.svglight_krita_tool_transform.svglight_pattern.svglight_polyline.svglight_select.svglight_tool_contiguous_selection.svglight_tool_crop.svglight_tool_elliptical_selection.svglight_tool_outline_selection.svglight_tool_pan.svglight_tool_path_selection.svg
+ light_tool_magnetic_selection.svglight_tool_perspectivegrid.svglight_tool_polygonal_selection.svglight_tool_rect_selection.svglight_tool_similar_selection.svglight_tool_zoom.svgdark_shape_handling.svgdark_artistic_text.svglight_artistic_text.svglight_shape_handling.svgdark_krita_tool_lazybrush.svglight_krita_tool_lazybrush.svgdark_krita_tool_smart_patch.svglight_krita_tool_smart_patch.svglight_krita_tool_assistant.svgdark_krita_tool_assistant.svgdark_krita_tool_reference_images.svglight_krita_tool_reference_images.svg
diff --git a/plugins/tools/selectiontools/kis_tool_select_magnetic.h b/plugins/tools/selectiontools/kis_tool_select_magnetic.h
index 78ecc603c1..54075634d3 100644
--- a/plugins/tools/selectiontools/kis_tool_select_magnetic.h
+++ b/plugins/tools/selectiontools/kis_tool_select_magnetic.h
@@ -1,113 +1,115 @@
/*
* Copyright (c) 2007 Sven Langkamp
* Copyright (c) 2015 Michael Abrahams
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef KIS_TOOL_SELECT_MAGNETIC_H_
#define KIS_TOOL_SELECT_MAGNETIC_H_
#include
#include
#include "kis_tool_select_base.h"
#include "kis_delegated_tool.h"
#include
class KoCanvasBase;
class KisToolSelectMagnetic;
class __KisToolSelectMagneticLocalTool : public KoCreatePathTool {
public:
__KisToolSelectMagneticLocalTool(KoCanvasBase * canvas, KisToolSelectMagnetic* parentTool);
void paintPath(KoPathShape &path, QPainter &painter, const KoViewConverter &converter) override;
void addPathShape(KoPathShape* pathShape) override;
+ friend class KisToolSelectMagnetic;
+
using KoCreatePathTool::createOptionWidgets;
using KoCreatePathTool::endPathWithoutLastPoint;
using KoCreatePathTool::endPath;
using KoCreatePathTool::cancelPath;
using KoCreatePathTool::removeLastPoint;
protected:
void paintOutline(QPainter *painter, const QPainterPath &path, qreal width);
private:
KisToolSelectMagnetic* const m_selectionTool;
};
typedef KisDelegatedTool DelegatedSelectMagneticTool;
struct KisDelegatedSelectMagneticWrapper : public DelegatedSelectMagneticTool {
KisDelegatedSelectMagneticWrapper(KoCanvasBase *canvas,
const QCursor &cursor,
KisTool* delegateTool)
: DelegatedSelectMagneticTool(canvas, cursor, dynamic_cast<__KisToolSelectMagneticLocalTool*>(delegateTool))
{
}
// If an event is explicitly forwarded only as an action (e.g. shift-click is captured by "change size")
// we will receive a primary action but no mousePressEvent. Thus these events must be explicitly forwarded.
void beginPrimaryAction(KoPointerEvent *event) override;
void continuePrimaryAction(KoPointerEvent *event) override;
void endPrimaryAction(KoPointerEvent *event) override;
bool hasUserInteractionRunning() const;
};
class KisToolSelectMagnetic : public KisToolSelectBase
{
Q_OBJECT
public:
KisToolSelectMagnetic(KoCanvasBase * canvas);
void mousePressEvent(KoPointerEvent* event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
void resetCursorStyle() override;
protected:
void requestStrokeCancellation() override;
void requestStrokeEnd() override;
friend class __KisToolSelectMagneticLocalTool;
QList > createOptionWidgets() override;
};
class KisToolSelectMagneticFactory : public KisSelectionToolFactoryBase
{
public:
KisToolSelectMagneticFactory()
: KisSelectionToolFactoryBase("KisToolSelectMagnetic") {
setToolTip(i18n("Magnetic Selection Tool"));
setSection(TOOL_TYPE_SELECTION);
setActivationShapeId(KRITA_TOOL_ACTIVATION_ID);
- setIconName(koIconNameCStr("tool_path_selection"));
+ setIconName(koIconNameCStr("tool_magnetic_selection"));
setPriority(6);
}
~KisToolSelectMagneticFactory() override {}
KoToolBase * createTool(KoCanvasBase *canvas) override {
return new KisToolSelectMagnetic(canvas);
}
};
#endif // KIS_TOOL_SELECT_MAGNETIC_H_