From 914a2ac44373f3988aa37c1ba777b8b89f82964f Mon Sep 17 00:00:00 2001 From: "xun.zhang" Date: Wed, 26 Feb 2025 12:16:42 +0800 Subject: [PATCH] ENH: prevent dialog exceeds screen size jira: NONE Signed-off-by: xun.zhang Change-Id: I1e52efff3d89e4fe13bc6d79c11a6328e391e431 (cherry picked from commit 45580a9d7511e35316151653666eee481265fce6) --- src/slic3r/GUI/WipeTowerDialog.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 46b382b939..8e0c5f09f2 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -298,12 +298,17 @@ WipingDialog::WipingDialog(wxWindow* parent, const std::vector> wxSize max_scroll_size = { FromDIP(1000),FromDIP(500) }; wxSize estimate_size = { (int)(filament_count + 1) * FromDIP(60),(int)(filament_count + 1) * FromDIP(30)+FromDIP(2)}; wxSize scroll_size ={ std::min(max_scroll_size.x,estimate_size.x),std::min(max_scroll_size.y,estimate_size.y) }; + wxSize applied_size = scroll_size + extra_size; - wxSize appied_size = scroll_size + extra_size; + wxSize scaled_screen_size = wxGetDisplaySize(); + double scale_factor = wxDisplay().GetScaleFactor(); + scaled_screen_size = { (int)(scaled_screen_size.x / scale_factor),(int)(scaled_screen_size.y / scale_factor) }; + + applied_size = { std::min(applied_size.x,scaled_screen_size.x),std::min(applied_size.y,scaled_screen_size.y) }; m_webview = wxWebView::New(this, wxID_ANY, wxEmptyString, wxDefaultPosition, - appied_size, + applied_size, wxWebViewBackendDefault, wxNO_BORDER);