[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: [calligra/calligra/2.9] krita: Add snap-single checkbox under assistant snapping.
From:       Raghavendra Kamath <raghu () raghukamath ! com>
Date:       2015-08-25 15:57:08
Message-ID: 55DC8D84.2070007 () raghukamath ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Thanks Wolthera,
this was some hindrance in using assistants.
thank you for the options :)

On Tuesday 25 August 2015 07:49 PM, Wolthera van Hovell wrote:
> Git commit 750f3c9c5d048e08db36520c0ba2509e7a013962 by Wolthera van Hovell.
> Committed on 25/08/2015 at 14:18.
> Pushed by woltherav into branch 'calligra/2.9'.
> 
> Add snap-single checkbox under assistant snapping.
> 
> This adds a checkbox to assistant snapping that will make the snapping happen
> to only the first snapped-to-assistant. This removes snapping issues on
> infinite assistants while keeping the ability to snap to chained assistants
> while the checkbox is unticked.
> 
> BUG: 331788
> CCMAIL:kimageshop@kde.org
> 
> M  +9    -1    krita/plugins/tools/defaulttools/kis_tool_brush.cc
> M  +1    -0    krita/plugins/tools/defaulttools/kis_tool_brush.h
> M  +42   -9    krita/ui/kis_painting_assistants_decoration.cpp
> M  +2    -0    krita/ui/kis_painting_assistants_decoration.h
> M  +7    -0    krita/ui/tool/kis_tool_freehand.cc
> M  +2    -0    krita/ui/tool/kis_tool_freehand.h
> 
> http://commits.kde.org/calligra/750f3c9c5d048e08db36520c0ba2509e7a013962
> 
> diff --git a/krita/plugins/tools/defaulttools/kis_tool_brush.cc \
> b/krita/plugins/tools/defaulttools/kis_tool_brush.cc index 85ff008..87b9183 100644
> --- a/krita/plugins/tools/defaulttools/kis_tool_brush.cc
> +++ b/krita/plugins/tools/defaulttools/kis_tool_brush.cc
> @@ -421,6 +421,7 @@ QWidget * KisToolBrush::createOptionWidget()
> assistantWidget->setToolTip(i18n("You need to add Ruler Assistants before this tool \
> will work.")); connect(m_chkAssistant, SIGNAL(toggled(bool)), this, \
> SLOT(setAssistant(bool))); assistantLayout->addWidget(m_chkAssistant);
> +
> m_sliderMagnetism = new KisSliderSpinBox(optionsWidget);
> m_sliderMagnetism->setToolTip(i18n("Assistant Magnetism"));
> m_sliderMagnetism->setRange(0, MAXIMUM_MAGNETISM);
> @@ -428,13 +429,20 @@ QWidget * KisToolBrush::createOptionWidget()
> connect(m_chkAssistant, SIGNAL(toggled(bool)), m_sliderMagnetism, \
> SLOT(setEnabled(bool))); m_sliderMagnetism->setValue(m_magnetism * \
> MAXIMUM_MAGNETISM); connect(m_sliderMagnetism, SIGNAL(valueChanged(int)), \
>                 SLOT(slotSetMagnetism(int)));
> -
> +
> KAction *toggleaction = new KAction(i18n("Toggle Assistant"), this);
> addAction("toggle_assistant", toggleaction);
> toggleaction->setShortcut(KShortcut(Qt::ControlModifier + Qt::ShiftModifier + \
> Qt::Key_L)); connect(toggleaction, SIGNAL(triggered(bool)), m_chkAssistant, \
> SLOT(toggle())); 
> addOptionWidgetOption(m_sliderMagnetism, assistantWidget);
> +
> +    m_chkOnlyOneAssistant = new QCheckBox(optionsWidget);
> +    m_chkOnlyOneAssistant->setToolTip(i18nc("@info:tooltip","Make it only snap to \
> a single assistant, prevents snapping mess while using the infinite assistants.")); \
> +    m_chkOnlyOneAssistant->setCheckState(Qt::Checked);//turn on by default. +    \
> connect(m_chkOnlyOneAssistant, SIGNAL(toggled(bool)), this, \
> SLOT(setOnlyOneAssistantSnap(bool))); +    \
> addOptionWidgetOption(m_chkOnlyOneAssistant, new QLabel(i18n("Snap single:"))); +
> 
> //load settings from configuration kritarc file
> slotSetSmoothingType((int)m_configGroup.readEntry("smoothingType", 0));
> diff --git a/krita/plugins/tools/defaulttools/kis_tool_brush.h \
> b/krita/plugins/tools/defaulttools/kis_tool_brush.h index c30c0cd..c0d5ff7 100644
> --- a/krita/plugins/tools/defaulttools/kis_tool_brush.h
> +++ b/krita/plugins/tools/defaulttools/kis_tool_brush.h
> @@ -120,6 +120,7 @@ private:
> 
> QCheckBox *m_chkAssistant;
> KisSliderSpinBox *m_sliderMagnetism;
> +    QCheckBox *m_chkOnlyOneAssistant;
> KisDoubleSliderSpinBox *m_sliderSmoothnessDistance;
> KisDoubleSliderSpinBox *m_sliderTailAggressiveness;
> QCheckBox *m_chkSmoothPressure;
> diff --git a/krita/ui/kis_painting_assistants_decoration.cpp \
> b/krita/ui/kis_painting_assistants_decoration.cpp index bcd1e1b..545f412 100644
> --- a/krita/ui/kis_painting_assistants_decoration.cpp
> +++ b/krita/ui/kis_painting_assistants_decoration.cpp
> @@ -34,6 +34,9 @@ struct KisPaintingAssistantsDecoration::Private {
> QList<KisPaintingAssistant*> assistants;
> bool assistantVisible;
> bool outlineVisible;
> +    bool snapOnlyOneAssistant;
> +    KisPaintingAssistant* firstAssistant;
> +    bool aFirstStroke;
> };
> 
> KisPaintingAssistantsDecoration::KisPaintingAssistantsDecoration(QPointer<KisView> \
> parent) : @@ -42,6 +45,7 @@ \
> KisPaintingAssistantsDecoration::KisPaintingAssistantsDecoration(QPointer<KisVie {
> setAssistantVisible(true);
> setOutlineVisible(true);
> +    d->snapOnlyOneAssistant=true;//turn on by default.
> }
> 
> KisPaintingAssistantsDecoration::~KisPaintingAssistantsDecoration()
> @@ -87,22 +91,46 @@ QPointF KisPaintingAssistantsDecoration::adjustPosition(const \
> QPointF& point, co QPointF best = point;
> double distance = DBL_MAX;
> //the following tries to find the closest point to stroke-begin. It checks all \
>                 assistants for the closest point//
> -    foreach(KisPaintingAssistant* assistant, d->assistants) {
> -        if(assistant->snapping()==true){//this checks if the assistant in question \
>                 has it's snapping boolean turned on//
> -            QPointF pt = assistant->adjustPosition(point, strokeBegin);
> -            if (pt.x() != pt.x()) continue;
> -            double d = qAbs(pt.x() - point.x()) + qAbs(pt.y() - point.y());
> -            if (d < distance) {
> -                best = pt;
> -                distance = d;
> +    if(!d->snapOnlyOneAssistant){
> +        foreach(KisPaintingAssistant* assistant, d->assistants) {
> +            if(assistant->snapping()==true){//this checks if the assistant in \
> question has it's snapping boolean turned on// +                QPointF pt = \
> assistant->adjustPosition(point, strokeBegin); +                if (pt.x() != \
> pt.x()) continue; +                double dist = qAbs(pt.x() - point.x()) + \
> qAbs(pt.y() - point.y()); +                if (dist < distance) {
> +                    best = pt;
> +                    distance = dist;
> +                }
> +            }
> +        }
> +    } else if (d->aFirstStroke==false) {
> +        foreach(KisPaintingAssistant* assistant, d->assistants) {
> +            if(assistant->snapping()==true){//this checks if the assistant in \
> question has it's snapping boolean turned on// +                QPointF pt = \
> assistant->adjustPosition(point, strokeBegin); +                if (pt.x() != \
> pt.x()) continue; +                double dist = qAbs(pt.x() - point.x()) + \
> qAbs(pt.y() - point.y()); +                if (dist < distance) {
> +                    best = pt;
> +                    distance = dist;
> +                    d->firstAssistant = assistant;
> +                }
> }
> }
> +    } else {
> +        best = d->firstAssistant->adjustPosition(point, strokeBegin);
> }
> +    //this is here to be compatible with the movement in the perspective tool.
> +    qreal dx = point.x() - strokeBegin.x(), dy = point.y() - strokeBegin.y();
> +        if (dx * dx + dy * dy >= 4.0) {
> +            // allow some movement before snapping
> +            d->aFirstStroke=true;
> +        }
> return best;
> }
> 
> void KisPaintingAssistantsDecoration::endStroke()
> {
> +    d->aFirstStroke=false;
> foreach(KisPaintingAssistant* assistant, d->assistants) {
> assistant->endStroke();
> }
> @@ -153,6 +181,12 @@ void KisPaintingAssistantsDecoration::setOutlineVisible(bool \
> set) {
> d->outlineVisible=set;
> }
> +
> +void KisPaintingAssistantsDecoration::setOnlyOneAssistantSnap(bool assistant)
> +{
> +    d->snapOnlyOneAssistant = assistant;
> +}
> +
> bool KisPaintingAssistantsDecoration::assistantVisibility()
> {
> return d->assistantVisible;
> @@ -161,7 +195,6 @@ bool KisPaintingAssistantsDecoration::outlineVisibility()
> {
> return d->outlineVisible;
> }
> -
> void KisPaintingAssistantsDecoration::uncache()
> {
> foreach(KisPaintingAssistant* assistant, d->assistants) {
> diff --git a/krita/ui/kis_painting_assistants_decoration.h \
> b/krita/ui/kis_painting_assistants_decoration.h index 78ebfed..0138c0f 100644
> --- a/krita/ui/kis_painting_assistants_decoration.h
> +++ b/krita/ui/kis_painting_assistants_decoration.h
> @@ -48,6 +48,8 @@ public:
> void setAssistantVisible(bool set);
> /*sets whether the preview is visible*/
> void setOutlineVisible(bool set);
> +    /*sets whether we snap to only one assistant*/
> +    void setOnlyOneAssistantSnap(bool assistant);
> /*returns assistant visibility*/
> bool assistantVisibility();
> /*returns preview visibility*/
> diff --git a/krita/ui/tool/kis_tool_freehand.cc \
> b/krita/ui/tool/kis_tool_freehand.cc index 6f5b7b9..bdfd9f1 100644
> --- a/krita/ui/tool/kis_tool_freehand.cc
> +++ b/krita/ui/tool/kis_tool_freehand.cc
> @@ -62,6 +62,7 @@ KisToolFreehand::KisToolFreehand(KoCanvasBase * canvas, const \
> QCursor & cursor, {
> m_assistant = false;
> m_magnetism = 1.0;
> +    m_only_one_assistant = true;
> 
> setSupportOutline(true);
> 
> @@ -359,9 +360,15 @@ void KisToolFreehand::setAssistant(bool assistant)
> m_assistant = assistant;
> }
> 
> +void KisToolFreehand::setOnlyOneAssistantSnap(bool assistant)
> +{
> +    m_only_one_assistant = assistant;
> +}
> +
> QPointF KisToolFreehand::adjustPosition(const QPointF& point, const QPointF& \
> strokeBegin) {
> if (m_assistant && \
> static_cast<KisCanvas2*>(canvas())->paintingAssistantsDecoration()) { +        \
> static_cast<KisCanvas2*>(canvas())->paintingAssistantsDecoration()->setOnlyOneAssistantSnap(m_only_one_assistant);
>  QPointF ap = static_cast<KisCanvas2*>(canvas())->paintingAssistantsDecoration()->adjustPosition(point, \
> strokeBegin); return (1.0 - m_magnetism) * point + m_magnetism * ap;
> }
> diff --git a/krita/ui/tool/kis_tool_freehand.h b/krita/ui/tool/kis_tool_freehand.h
> index d4a189e..36a1578 100644
> --- a/krita/ui/tool/kis_tool_freehand.h
> +++ b/krita/ui/tool/kis_tool_freehand.h
> @@ -91,6 +91,7 @@ protected Q_SLOTS:
> void explicitUpdateOutline();
> virtual void resetCursorStyle();
> void setAssistant(bool assistant);
> +    void setOnlyOneAssistantSnap(bool assistant);
> 
> private:
> friend class KisToolFreehandPaintingInformationBuilder;
> @@ -114,6 +115,7 @@ protected:
> KisSmoothingOptionsSP smoothingOptions() const;
> bool m_assistant;
> double m_magnetism;
> +    bool m_only_one_assistant;
> 
> private:
> KisPaintingInformationBuilder *m_infoBuilder;
> _______________________________________________
> Krita mailing list
> kimageshop@kde.org
> https://mail.kde.org/mailman/listinfo/kimageshop

-- 
/*Raghavendra Kamath*
/ /Illustration & Design
m: +91 9867272640 <tel:9867272640> /
/w: raghukamath.com <http://www.raghukamath.com/>/


[Attachment #5 (text/html)]

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Thanks Wolthera,<br>
    this was some hindrance in using assistants. <br>
    thank you for the options :)<br>
    <br>
    <div class="moz-cite-prefix">On Tuesday 25 August 2015 07:49 PM,
      Wolthera van Hovell wrote:<br>
    </div>
    <blockquote cite="mid:E1ZUF41-0007ZP-R9@scm.kde.org" type="cite">
      <pre wrap="">Git commit 750f3c9c5d048e08db36520c0ba2509e7a013962 by Wolthera \
van Hovell. Committed on 25/08/2015 at 14:18.
Pushed by woltherav into branch 'calligra/2.9'.

Add snap-single checkbox under assistant snapping.

This adds a checkbox to assistant snapping that will make the snapping happen
to only the first snapped-to-assistant. This removes snapping issues on
infinite assistants while keeping the ability to snap to chained assistants
while the checkbox is unticked.

BUG: 331788
<a class="moz-txt-link-abbreviated" \
href="mailto:CCMAIL:kimageshop@kde.org">CCMAIL:kimageshop@kde.org</a>

M  +9    -1    krita/plugins/tools/defaulttools/kis_tool_brush.cc
M  +1    -0    krita/plugins/tools/defaulttools/kis_tool_brush.h
M  +42   -9    krita/ui/kis_painting_assistants_decoration.cpp
M  +2    -0    krita/ui/kis_painting_assistants_decoration.h
M  +7    -0    krita/ui/tool/kis_tool_freehand.cc
M  +2    -0    krita/ui/tool/kis_tool_freehand.h

<a class="moz-txt-link-freetext" \
href="http://commits.kde.org/calligra/750f3c9c5d048e08db36520c0ba2509e7a013962">http://commits.kde.org/calligra/750f3c9c5d048e08db36520c0ba2509e7a013962</a>


diff --git a/krita/plugins/tools/defaulttools/kis_tool_brush.cc \
b/krita/plugins/tools/defaulttools/kis_tool_brush.cc index 85ff008..87b9183 100644
--- a/krita/plugins/tools/defaulttools/kis_tool_brush.cc
+++ b/krita/plugins/tools/defaulttools/kis_tool_brush.cc
@@ -421,6 +421,7 @@ QWidget * KisToolBrush::createOptionWidget()
     assistantWidget-&gt;setToolTip(i18n("You need to add Ruler Assistants before \
                this tool will work."));
     connect(m_chkAssistant, SIGNAL(toggled(bool)), this, SLOT(setAssistant(bool)));
     assistantLayout-&gt;addWidget(m_chkAssistant);
+
     m_sliderMagnetism = new KisSliderSpinBox(optionsWidget);
     m_sliderMagnetism-&gt;setToolTip(i18n("Assistant Magnetism"));
     m_sliderMagnetism-&gt;setRange(0, MAXIMUM_MAGNETISM);
@@ -428,13 +429,20 @@ QWidget * KisToolBrush::createOptionWidget()
     connect(m_chkAssistant, SIGNAL(toggled(bool)), m_sliderMagnetism, \
SLOT(setEnabled(bool)));  m_sliderMagnetism-&gt;setValue(m_magnetism * \
                MAXIMUM_MAGNETISM);
     connect(m_sliderMagnetism, SIGNAL(valueChanged(int)), \
                SLOT(slotSetMagnetism(int)));
-
+    
     KAction *toggleaction = new KAction(i18n("Toggle Assistant"), this);
     addAction("toggle_assistant", toggleaction);
     toggleaction-&gt;setShortcut(KShortcut(Qt::ControlModifier + Qt::ShiftModifier + \
                Qt::Key_L));
     connect(toggleaction, SIGNAL(triggered(bool)), m_chkAssistant, SLOT(toggle()));
 
     addOptionWidgetOption(m_sliderMagnetism, assistantWidget);
+    
+    m_chkOnlyOneAssistant = new QCheckBox(optionsWidget);
+    m_chkOnlyOneAssistant-&gt;setToolTip(i18nc("@<a class="moz-txt-link-freetext" \
href="info:tooltip">info:tooltip</a>","Make it only snap to a single assistant, \
prevents snapping mess while using the infinite assistants.")); +    \
m_chkOnlyOneAssistant-&gt;setCheckState(Qt::Checked);//turn on by default. +    \
connect(m_chkOnlyOneAssistant, SIGNAL(toggled(bool)), this, \
SLOT(setOnlyOneAssistantSnap(bool))); +    \
addOptionWidgetOption(m_chkOnlyOneAssistant, new QLabel(i18n("Snap single:"))); +
 
     //load settings from configuration kritarc file
     slotSetSmoothingType((int)m_configGroup.readEntry("smoothingType", 0));
diff --git a/krita/plugins/tools/defaulttools/kis_tool_brush.h \
b/krita/plugins/tools/defaulttools/kis_tool_brush.h index c30c0cd..c0d5ff7 100644
--- a/krita/plugins/tools/defaulttools/kis_tool_brush.h
+++ b/krita/plugins/tools/defaulttools/kis_tool_brush.h
@@ -120,6 +120,7 @@ private:
 
     QCheckBox *m_chkAssistant;
     KisSliderSpinBox *m_sliderMagnetism;
+    QCheckBox *m_chkOnlyOneAssistant;
     KisDoubleSliderSpinBox *m_sliderSmoothnessDistance;
     KisDoubleSliderSpinBox *m_sliderTailAggressiveness;
     QCheckBox *m_chkSmoothPressure;
diff --git a/krita/ui/kis_painting_assistants_decoration.cpp \
b/krita/ui/kis_painting_assistants_decoration.cpp index bcd1e1b..545f412 100644
--- a/krita/ui/kis_painting_assistants_decoration.cpp
+++ b/krita/ui/kis_painting_assistants_decoration.cpp
@@ -34,6 +34,9 @@ struct KisPaintingAssistantsDecoration::Private {
     QList&lt;KisPaintingAssistant*&gt; assistants;
     bool assistantVisible;
     bool outlineVisible;
+    bool snapOnlyOneAssistant;
+    KisPaintingAssistant* firstAssistant;
+    bool aFirstStroke;
 };
 
 KisPaintingAssistantsDecoration::KisPaintingAssistantsDecoration(QPointer&lt;KisView&gt; \
parent) : @@ -42,6 +45,7 @@ \
KisPaintingAssistantsDecoration::KisPaintingAssistantsDecoration(QPointer&lt;KisVie  \
{  setAssistantVisible(true);
     setOutlineVisible(true);
+    d-&gt;snapOnlyOneAssistant=true;//turn on by default.
 }
 
 KisPaintingAssistantsDecoration::~KisPaintingAssistantsDecoration()
@@ -87,22 +91,46 @@ QPointF KisPaintingAssistantsDecoration::adjustPosition(const \
QPointF&amp; point, co  QPointF best = point;
     double distance = DBL_MAX;
     //the following tries to find the closest point to stroke-begin. It checks all \
                assistants for the closest point//
-    foreach(KisPaintingAssistant* assistant, d-&gt;assistants) {
-        if(assistant-&gt;snapping()==true){//this checks if the assistant in \
                question has it's snapping boolean turned on//
-            QPointF pt = assistant-&gt;adjustPosition(point, strokeBegin);
-            if (pt.x() != pt.x()) continue;
-            double d = qAbs(pt.x() - point.x()) + qAbs(pt.y() - point.y());
-            if (d &lt; distance) {
-                best = pt;
-                distance = d;
+    if(!d-&gt;snapOnlyOneAssistant){
+        foreach(KisPaintingAssistant* assistant, d-&gt;assistants) {
+            if(assistant-&gt;snapping()==true){//this checks if the assistant in \
question has it's snapping boolean turned on// +                QPointF pt = \
assistant-&gt;adjustPosition(point, strokeBegin); +                if (pt.x() != \
pt.x()) continue; +                double dist = qAbs(pt.x() - point.x()) + \
qAbs(pt.y() - point.y()); +                if (dist &lt; distance) {
+                    best = pt;
+                    distance = dist;
+                }
+            }
+        }
+    } else if (d-&gt;aFirstStroke==false) {
+        foreach(KisPaintingAssistant* assistant, d-&gt;assistants) {
+            if(assistant-&gt;snapping()==true){//this checks if the assistant in \
question has it's snapping boolean turned on// +                QPointF pt = \
assistant-&gt;adjustPosition(point, strokeBegin); +                if (pt.x() != \
pt.x()) continue; +                double dist = qAbs(pt.x() - point.x()) + \
qAbs(pt.y() - point.y()); +                if (dist &lt; distance) {
+                    best = pt;
+                    distance = dist;
+                    d-&gt;firstAssistant = assistant;
+                }
             }
         }
+    } else {
+        best = d-&gt;firstAssistant-&gt;adjustPosition(point, strokeBegin);
     }
+    //this is here to be compatible with the movement in the perspective tool.
+    qreal dx = point.x() - strokeBegin.x(), dy = point.y() - strokeBegin.y();
+        if (dx * dx + dy * dy &gt;= 4.0) {
+            // allow some movement before snapping
+            d-&gt;aFirstStroke=true;
+        }
     return best;
 }
 
 void KisPaintingAssistantsDecoration::endStroke()
 {
+    d-&gt;aFirstStroke=false;
     foreach(KisPaintingAssistant* assistant, d-&gt;assistants) {
         assistant-&gt;endStroke();
     }
@@ -153,6 +181,12 @@ void KisPaintingAssistantsDecoration::setOutlineVisible(bool \
set)  {
     d-&gt;outlineVisible=set;
 }
+
+void KisPaintingAssistantsDecoration::setOnlyOneAssistantSnap(bool assistant)
+{
+    d-&gt;snapOnlyOneAssistant = assistant;
+}
+
 bool KisPaintingAssistantsDecoration::assistantVisibility()
 {
     return d-&gt;assistantVisible;
@@ -161,7 +195,6 @@ bool KisPaintingAssistantsDecoration::outlineVisibility()
 {
     return d-&gt;outlineVisible;
 }
-
 void KisPaintingAssistantsDecoration::uncache()
 {
      foreach(KisPaintingAssistant* assistant, d-&gt;assistants) {
diff --git a/krita/ui/kis_painting_assistants_decoration.h \
b/krita/ui/kis_painting_assistants_decoration.h index 78ebfed..0138c0f 100644
--- a/krita/ui/kis_painting_assistants_decoration.h
+++ b/krita/ui/kis_painting_assistants_decoration.h
@@ -48,6 +48,8 @@ public:
     void setAssistantVisible(bool set);
     /*sets whether the preview is visible*/
     void setOutlineVisible(bool set);
+    /*sets whether we snap to only one assistant*/
+    void setOnlyOneAssistantSnap(bool assistant);
     /*returns assistant visibility*/
     bool assistantVisibility();
     /*returns preview visibility*/
diff --git a/krita/ui/tool/kis_tool_freehand.cc b/krita/ui/tool/kis_tool_freehand.cc
index 6f5b7b9..bdfd9f1 100644
--- a/krita/ui/tool/kis_tool_freehand.cc
+++ b/krita/ui/tool/kis_tool_freehand.cc
@@ -62,6 +62,7 @@ KisToolFreehand::KisToolFreehand(KoCanvasBase * canvas, const \
QCursor &amp; cursor,  {
     m_assistant = false;
     m_magnetism = 1.0;
+    m_only_one_assistant = true;
 
     setSupportOutline(true);
 
@@ -359,9 +360,15 @@ void KisToolFreehand::setAssistant(bool assistant)
     m_assistant = assistant;
 }
 
+void KisToolFreehand::setOnlyOneAssistantSnap(bool assistant)
+{
+    m_only_one_assistant = assistant;
+}
+
 QPointF KisToolFreehand::adjustPosition(const QPointF&amp; point, const QPointF&amp; \
strokeBegin)  {
     if (m_assistant &amp;&amp; \
static_cast&lt;KisCanvas2*&gt;(canvas())-&gt;paintingAssistantsDecoration()) { +      \
static_cast&lt;KisCanvas2*&gt;(canvas())-&gt;paintingAssistantsDecoration()-&gt;setOnlyOneAssistantSnap(m_only_one_assistant);
                
         QPointF ap = \
static_cast&lt;KisCanvas2*&gt;(canvas())-&gt;paintingAssistantsDecoration()-&gt;adjustPosition(point, \
strokeBegin);  return (1.0 - m_magnetism) * point + m_magnetism * ap;
     }
diff --git a/krita/ui/tool/kis_tool_freehand.h b/krita/ui/tool/kis_tool_freehand.h
index d4a189e..36a1578 100644
--- a/krita/ui/tool/kis_tool_freehand.h
+++ b/krita/ui/tool/kis_tool_freehand.h
@@ -91,6 +91,7 @@ protected Q_SLOTS:
     void explicitUpdateOutline();
     virtual void resetCursorStyle();
     void setAssistant(bool assistant);
+    void setOnlyOneAssistantSnap(bool assistant);
 
 private:
     friend class KisToolFreehandPaintingInformationBuilder;
@@ -114,6 +115,7 @@ protected:
     KisSmoothingOptionsSP smoothingOptions() const;
     bool m_assistant;
     double m_magnetism;
+    bool m_only_one_assistant;
 
 private:
     KisPaintingInformationBuilder *m_infoBuilder;
_______________________________________________
Krita mailing list
<a class="moz-txt-link-abbreviated" \
href="mailto:kimageshop@kde.org">kimageshop@kde.org</a> <a \
class="moz-txt-link-freetext" \
href="https://mail.kde.org/mailman/listinfo/kimageshop">https://mail.kde.org/mailman/listinfo/kimageshop</a>
 </pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      <em><b><font face="Georgia" size="-1" color="#333333">Raghavendra
            Kamath</font></b><br>
      </em>
      <font face="Georgia" size="-1" color="#333">
        <em>
          Illustration &amp; Design<br>
          m: <a style="text-decoration:none; color:#333"
            href="tel:9867272640">+91 9867272640</a>
        </em>
        <div><em>w: <a style="text-decoration:none; color:#333"
              href="http://www.raghukamath.com/" \
target="_blank">raghukamath.com</a></em></div>  </font>
    </div>
  </body>
</html>


[Attachment #6 (text/plain)]

_______________________________________________
Krita mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic