<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">> +    undo_polygon_selection-></span><span style="font-family:arial,sans-serif;font-size:13px">setShortcut(QKeySequence(Qt::</span><span style="font-family:arial,sans-serif;font-size:13px">ShiftModifier + Qt::Key_Z));</span><br>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">I suppose this is not needed, standard system Undo shortcut will undo some operation</span></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/10/30 Salil Kapur <span dir="ltr"><<a href="mailto:salilkapur93@gmail.com" target="_blank">salilkapur93@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Git commit fd128ac2c97f2016575a0424c0476d08e633fb33 by Salil Kapur.<br>
Committed on 30/10/2013 at 10:12.<br>
Pushed by salilkapur into branch 'master'.<br>
<br>
BUG: 324170<br>
Add shortcut to undo last polygonal selection point(s)<br>
<br>
M  +28   -0    krita/ui/tool/kis_tool_polyline_base.cpp<br>
M  +3    -0    krita/ui/tool/kis_tool_polyline_base.h<br>
<br>
<a href="http://commits.kde.org/calligra/fd128ac2c97f2016575a0424c0476d08e633fb33" target="_blank">http://commits.kde.org/calligra/fd128ac2c97f2016575a0424c0476d08e633fb33</a><br>
<br>
diff --git a/krita/ui/tool/kis_tool_polyline_base.cpp b/krita/ui/tool/kis_tool_polyline_base.cpp<br>
index 771783b..8b9389c 100644<br>
--- a/krita/ui/tool/kis_tool_polyline_base.cpp<br>
+++ b/krita/ui/tool/kis_tool_polyline_base.cpp<br>
@@ -27,6 +27,10 @@<br>
 #include <KoViewConverter.h><br>
<br>
 #include "kis_tool_polyline_base.h"<br>
+#include "kis_canvas2.h"<br>
+#include <kis_view2.h><br>
+#include <kis_action.h><br>
+#include <kactioncollection.h><br>
<br>
 #define SNAPPING_THRESHOLD 10<br>
 #define SNAPPING_HANDLE_RADIUS 8<br>
@@ -38,6 +42,12 @@ KisToolPolylineBase::KisToolPolylineBase(KoCanvasBase * canvas,  KisToolPolyline<br>
       m_type(type),<br>
       m_closeSnappingActivated(false)<br>
 {<br>
+<br>
+    KisCanvas2 * kiscanvas = static_cast<KisCanvas2*>(this->canvas());<br>
+    KAction *undo_polygon_selection = new KAction("Undo Polygon Selection Points",this);<br>
+    undo_polygon_selection->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_Z));<br>
+    kiscanvas->view()->actionCollection()->addAction("undo_polygon_selection", undo_polygon_selection);<br>
+    connect(undo_polygon_selection, SIGNAL(triggered()), SLOT(undoSelection()));<br>
 }<br>
<br>
 void KisToolPolylineBase::deactivate()<br>
@@ -137,6 +147,24 @@ void KisToolPolylineBase::mouseDoubleClickEvent(KoPointerEvent *event)<br>
     }<br>
 }<br>
<br>
+void KisToolPolylineBase::undoSelection()<br>
+{<br>
+    if(m_dragging) {<br>
+        //Update canvas for drag before undo<br>
+        QRectF updateRect = dragBoundingRect();<br>
+        updateRect |= dragBoundingRect();<br>
+        updateCanvasViewRect(updateRect);<br>
+<br>
+        //Update canvas for last segment<br>
+        QRectF rect = pixelToView(QRectF(m_points.last(), <a href="http://m_points.at" target="_blank">m_points.at</a>(m_points.size()-2)).normalized());<br>
+        rect.adjust(-PREVIEW_LINE_WIDTH, -PREVIEW_LINE_WIDTH, PREVIEW_LINE_WIDTH, PREVIEW_LINE_WIDTH);<br>
+        rect |= rect;<br>
+        updateCanvasViewRect(rect);<br>
+        m_points.pop_back();<br>
+        m_dragStart = m_points.last();<br>
+    }<br>
+}<br>
+<br>
 void KisToolPolylineBase::paint(QPainter& gc, const KoViewConverter &converter)<br>
 {<br>
     Q_UNUSED(converter);<br>
diff --git a/krita/ui/tool/kis_tool_polyline_base.h b/krita/ui/tool/kis_tool_polyline_base.h<br>
index 7d38d24..dc91daa 100644<br>
--- a/krita/ui/tool/kis_tool_polyline_base.h<br>
+++ b/krita/ui/tool/kis_tool_polyline_base.h<br>
@@ -53,6 +53,9 @@ private:<br>
     void updateArea();<br>
     QRectF dragBoundingRect();<br>
<br>
+private slots:<br>
+    virtual void undoSelection();<br>
+<br>
 private:<br>
<br>
     QPointF m_dragStart;<br>
</blockquote></div><br></div>