From e46f0cace526d5b772ebd768c952ca34796691c5 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Tue, 7 Nov 2023 15:57:02 +0800 Subject: [PATCH] FIX: dailytips window and gcodeviwer legend window size issue reset to original logic of dailytips and legend window size jira: new Change-Id: Iacb016bb222ba3f87317cfbe1f2b003802d773a5 --- src/slic3r/GUI/GCodeViewer.cpp | 2 +- .../GUI/SlicingProgressNotification.cpp | 30 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index b9c73d553..d72017b85 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4420,7 +4420,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabHovered, ImVec4(0.93f, 0.93f, 0.93f, 1.00f)); ImGui::PushStyleColor(ImGuiCol_ScrollbarGrabActive, ImVec4(0.93f, 0.93f, 0.93f, 1.00f)); ImGui::SetNextWindowBgAlpha(0.8f); - const float max_height = 0.45f * static_cast(cnv_size.get_height()); + const float max_height = 0.75f * static_cast(cnv_size.get_height()); const float child_height = 0.3333f * max_height; ImGui::SetNextWindowSizeConstraints({ 0.0f, 0.0f }, { -1.0f, max_height }); imgui.begin(std::string("Legend"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove); diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index ce4e1f099..4d95445c3 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -17,7 +17,7 @@ namespace { } } -static constexpr int BEFORE_COMPLETE_DURATION = 3000; //ms +static constexpr int BEFORE_COMPLETE_DURATION = 4000; //ms static constexpr int REFRESH_TIMEOUT = 100; //ms void NotificationManager::SlicingProgressNotification::on_change_color_mode(bool is_dark) @@ -259,7 +259,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas const float progress_panel_height = (58.0f * scale); const float dailytips_panel_width = (m_window_width - 2 * dailytips_child_window_padding.x); const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); - const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); + //const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); + const float dailytips_panel_height = 380.0f * scale; float right_gap = right_margin + (move_from_overlay ? overlay_width + m_line_height * 5 : 0); m_window_pos = ImVec2((float)cnv_size.get_width() - right_gap - m_window_width, (float)cnv_size.get_height() - m_top_y); @@ -384,21 +385,28 @@ void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_text( m_before_complete_start = GLCanvas3D::timestamp_now(); } else { + // timer to close + int64_t now = GLCanvas3D::timestamp_now(); + int64_t duration_time = now - m_before_complete_start; + if (duration_time < 1000) { + imgui.push_bold_font(); + ImGui::SetCursorScreenPos(ImVec2(pos.x + icon_size.x + ImGui::CalcTextSize(" ").x, pos.y + (icon_size.y - m_line_height) / 2)); + imgui.text(m_text1.substr(0, m_endlines[0]).c_str()); + imgui.pop_bold_font(); + return; + } + if (duration_time > BEFORE_COMPLETE_DURATION) { + set_progress_state(SlicingProgressState::SP_COMPLETED); + return; + } // complete text imgui.push_bold_font(); ImGui::SetCursorScreenPos(ImVec2(pos.x + icon_size.x + ImGui::CalcTextSize(" ").x, pos.y)); imgui.text(m_text1.substr(0, m_endlines[0]).c_str()); imgui.pop_bold_font(); - - // timer to close - int64_t now = GLCanvas3D::timestamp_now(); - int64_t duration_time = now - m_before_complete_start; - if (duration_time > BEFORE_COMPLETE_DURATION) { - set_progress_state(SlicingProgressState::SP_COMPLETED); - return; - } + // closing text boost::format fmt(_u8L("Closing in %ds")); - fmt % (3 - duration_time / 1000); + fmt % (4 - duration_time / 1000); ImGui::PushStyleColor(ImGuiCol_Text, ImColor(144, 144, 144).Value); ImGui::SetCursorScreenPos(ImVec2(pos.x + icon_size.x + ImGui::CalcTextSize(" ").x, pos.y + m_line_height + m_line_height / 2)); imgui.text(fmt.str());