From 5d14f25620dbcd539479f7b391e8bbfc1c9efecb Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 10 May 2024 09:58:49 +0200 Subject: [PATCH] WIP to merge with previous commit --- src/slic3r/GUI/DoubleSliderForLayers.cpp | 4 +++- src/slic3r/GUI/ImGuiDoubleSlider.cpp | 14 +++++++++++--- src/slic3r/GUI/ImGuiDoubleSlider.hpp | 2 +- src/slic3r/GUI/TickCodesManager.hpp | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/DoubleSliderForLayers.cpp b/src/slic3r/GUI/DoubleSliderForLayers.cpp index 5fe73d3e77..e4dc8b866a 100644 --- a/src/slic3r/GUI/DoubleSliderForLayers.cpp +++ b/src/slic3r/GUI/DoubleSliderForLayers.cpp @@ -647,8 +647,10 @@ void DSForLayers::Render(const int canvas_width, const int canvas_height, float // discard all getters dialogs m_show_get_jump_value = false; } - else if (m_ctrl.IsLClickOnThumb()) + else if (m_ctrl.IsLClickOnThumb() && can_edit() && + !m_ticks.has_tick(m_ctrl.GetActivePos())) { add_code_as_tick(ColorChange); + } // draw action buttons diff --git a/src/slic3r/GUI/ImGuiDoubleSlider.cpp b/src/slic3r/GUI/ImGuiDoubleSlider.cpp index 34bdb35ce2..172d3616e1 100644 --- a/src/slic3r/GUI/ImGuiDoubleSlider.cpp +++ b/src/slic3r/GUI/ImGuiDoubleSlider.cpp @@ -257,6 +257,16 @@ ImRect ImGuiControl::GetActiveThumbRect() const return m_selection == ssLower ? m_regions.lower_thumb : m_regions.higher_thumb; } +bool ImGuiControl::IsLClickOnThumb() +{ + if (m_lclick_on_selected_thumb) { + // discard left mouse click at list its value is checked to avoud reuse it on next frame + m_lclick_on_selected_thumb = false; + return true; + } + return false; +} + void ImGuiControl::draw_scroll_line(const ImRect& scroll_line, const ImRect& slideable_region) { if (m_cb_draw_scroll_line) @@ -524,9 +534,7 @@ bool ImGuiControl::draw_slider( int* higher_pos, int* lower_pos, (m_active_thumb_center_on_lcklick.y == active_thumb_center.y) && (m_active_thumb_center_on_lcklick.x == active_thumb_center.x) ) m_lclick_on_selected_thumb = true; - } - else - m_lclick_on_selected_thumb = false; + } // render slider diff --git a/src/slic3r/GUI/ImGuiDoubleSlider.hpp b/src/slic3r/GUI/ImGuiDoubleSlider.hpp index 9c0096f9b9..058dbc9c80 100644 --- a/src/slic3r/GUI/ImGuiDoubleSlider.hpp +++ b/src/slic3r/GUI/ImGuiDoubleSlider.hpp @@ -84,7 +84,7 @@ public: ImRect GetActiveThumbRect() const; bool IsRClickOnThumb() const { return m_rclick_on_selected_thumb; } - bool IsLClickOnThumb() const { return m_lclick_on_selected_thumb; } + bool IsLClickOnThumb(); bool is_horizontal() const { return !(m_flags & ImGuiSliderFlags_Vertical); } bool render(); diff --git a/src/slic3r/GUI/TickCodesManager.hpp b/src/slic3r/GUI/TickCodesManager.hpp index d36dae989a..5c055472b7 100644 --- a/src/slic3r/GUI/TickCodesManager.hpp +++ b/src/slic3r/GUI/TickCodesManager.hpp @@ -113,7 +113,6 @@ class TickCodeManager ExtrudersSequence m_extruders_sequence; bool has_tick_with_code(Type type); - bool has_tick(int tick); std::string get_color_for_tick(TickCode tick, Type type, const int extruder); @@ -149,6 +148,7 @@ public: void set_ticks(const Info& custom_gcode_per_print_z); + bool has_tick(int tick); bool add_tick(const int tick, Type type, int extruder, double print_z); bool edit_tick(std::set::iterator it, double print_z); void switch_code(Type type_from, Type type_to);