From 38da475197b5059225f732d11963f10f1d58ad6b Mon Sep 17 00:00:00 2001 From: "jun.zhang" Date: Thu, 6 Mar 2025 15:00:27 +0800 Subject: [PATCH] FIX: position of LayersEditing dialog jira: STUDIO-10706 Change-Id: Ibadeef751ad500f61b9ab20cb7f030c461869399 --- src/slic3r/GUI/GLCanvas3D.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index dbc41df20..cde5e72bb 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -275,7 +275,19 @@ void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(const GLCanv const Size& cnv_size = canvas.get_canvas_size(); float zoom = (float)wxGetApp().plater()->get_camera().get_zoom(); float left_pos = canvas.m_main_toolbar.get_item("layersediting")->render_left_pos; - const float x = 0.5 * cnv_size.get_width() + left_pos * zoom; + float x = 0.5 * cnv_size.get_width() + left_pos * zoom; + + const auto canvas_width = cnv_size.get_width(); + if (abs(GLCanvas3D::LayersEditing::s_overlay_window_width) > 0.01f) { + if (x + GLCanvas3D::LayersEditing::s_overlay_window_width > canvas_width) { + if (GLCanvas3D::LayersEditing::s_overlay_window_width > canvas_width) + x = 0; + else + x = canvas_width - GLCanvas3D::LayersEditing::s_overlay_window_width; + } + } + x = std::max(x, 0.0f); + imgui.set_next_window_pos(x, canvas.m_main_toolbar.get_height(), ImGuiCond_Always, 0.0f, 0.0f); imgui.push_toolbar_style(canvas.get_scale());