From 87df72a67f5276f1b08264654fb4236db6d1dd14 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 27 Mar 2023 14:46:11 +0800 Subject: [PATCH] ENH: modify zoom interaction Change-Id: I7a888a8980b5b10e5d2c515158c9c4cdf8654b7c --- src/libslic3r/AppConfig.cpp | 3 +++ src/slic3r/GUI/GLCanvas3D.cpp | 3 ++- src/slic3r/GUI/Preferences.cpp | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index e4ab1134f4..c54429fc75 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -170,6 +170,9 @@ void AppConfig::set_defaults() set_bool("reverse_mouse_wheel_zoom", false); #endif + if (get("zoom_to_mouse").empty()) + set_bool("zoom_to_mouse", false); + //#ifdef SUPPORT_SHOW_HINTS if (get("show_hints").empty()) set_bool("show_hints", true); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index c31ca9bc69..f7dc0f4b4e 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3596,7 +3596,8 @@ void GLCanvas3D::on_mouse_wheel(wxMouseEvent& evt) double direction_factor = 1.0; #endif auto delta = direction_factor * (double)evt.GetWheelRotation() / (double)evt.GetWheelDelta(); - if (evt.CmdDown()) { + bool zoom_to_mouse = wxGetApp().app_config->get("zoom_to_mouse") == "true"; + if (!zoom_to_mouse) {// zoom to center _update_camera_zoom(delta); } else { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 10aaca05de..dd7ab427e6 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -914,6 +914,8 @@ wxWindow* PreferencesDialog::create_general_page() std::vector Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"}; auto item_currency = create_item_combobox(_L("Units"), page, _L("Units"), "use_inches", Units); + auto item_mouse_zoom_settings = create_item_checkbox(_L("Zoom to mouse position"), page, _L("Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center."), 50, "zoom_to_mouse"); + auto item_hints = create_item_checkbox(_L("Show \"Tip of the day\" notification after start"), page, _L("If enabled, useful hints are displayed at startup."), 50, "show_hints"); auto title_presets = create_item_title(_L("Presets"), page, _L("Presets")); @@ -968,6 +970,7 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_language, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_region, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_currency, 0, wxTOP, FromDIP(3)); + sizer_page->Add(item_mouse_zoom_settings, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3)); sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20)); sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3));