From 08577429ac64dff9e9500b6695227017bd577fa2 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sat, 30 Dec 2023 22:02:32 +0800 Subject: [PATCH] Fix preview legend window size (#3363) Fix issue that the legend window expands to all available horizontal space if scrollbar is displayed (cherry picked from commit a8ade1554fe882d7fb0d94edabcacbce57bb047e) --- src/slic3r/GUI/GCodeViewer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index cd751b8c479..96e2963229d 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4504,16 +4504,17 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; - auto calculate_offsets = [max_width, window_padding](const std::vector>>& title_columns, float extra_size = 0.0f) { + auto calculate_offsets = [&imgui, max_width, window_padding](const std::vector>>& title_columns, float extra_size = 0.0f) { const ImGuiStyle& style = ImGui::GetStyle(); std::vector offsets; offsets.push_back(max_width(title_columns[0].second, title_columns[0].first, extra_size) + 3.0f * style.ItemSpacing.x); for (size_t i = 1; i < title_columns.size() - 1; i++) offsets.push_back(offsets.back() + max_width(title_columns[i].second, title_columns[i].first) + style.ItemSpacing.x); if (title_columns.back().first == _u8L("Display")) { - const auto preferred_offset = ImGui::GetWindowWidth() - ImGui::CalcTextSize(_u8L("Display").c_str()).x - ImGui::GetFrameHeight() / 2 - 2 * window_padding; + const auto preferred_offset = ImGui::GetWindowWidth() - ImGui::CalcTextSize(_u8L("Display").c_str()).x - ImGui::GetFrameHeight() / 2 - 2 * window_padding - ImGui::GetStyle().ScrollbarSize; if (preferred_offset > offsets.back()) { offsets.back() = preferred_offset; + imgui.set_requires_extra_frame(); } }