From 69027b53fd8689ec2c9c7352e8580cd3fea76adf Mon Sep 17 00:00:00 2001
From: Lukas Matena <lukasmatena@seznam.cz>
Date: Wed, 3 Apr 2019 14:44:15 +0200
Subject: [PATCH] SLA gizmo now allows to deselect a point

---
 src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp | 21 ++++++++++++++++++--
 src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp |  1 +
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
index 5be7f9100..2264c541e 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
@@ -330,8 +330,12 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous
                 m_canvas_width = m_parent.get_canvas_size().get_width();
                 m_canvas_height = m_parent.get_canvas_size().get_height();
             }
-            else
-                select_point(m_hover_id);
+            else {
+                if (m_editing_mode_cache[m_hover_id].selected)
+                    unselect_point(m_hover_id);
+                else
+                    select_point(m_hover_id);
+            }
 
             return true;
         }
@@ -791,6 +795,19 @@ void GLGizmoSlaSupports::select_point(int i)
 }
 
 
+void GLGizmoSlaSupports::unselect_point(int i)
+{
+    m_editing_mode_cache[i].selected = false;
+    m_selection_empty = true;
+    for (const CacheEntry& ce : m_editing_mode_cache) {
+        if (ce.selected) {
+            m_selection_empty = false;
+            break;
+        }
+    }
+}
+
+
 
 void GLGizmoSlaSupports::editing_mode_discard_changes()
 {
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
index 7e8113774..bb3cf06ce 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
@@ -93,6 +93,7 @@ private:
         NoPoints,
     };
     void select_point(int i);
+    void unselect_point(int i);
     void editing_mode_apply_changes();
     void editing_mode_discard_changes();
     void editing_mode_reload_cache();