From 47db82ee1e1fad9911b986f76767afe6c8e34676 Mon Sep 17 00:00:00 2001 From: Kunlong Ma Date: Wed, 2 Aug 2023 09:10:34 +0800 Subject: [PATCH] FIX:Preference page scrolling issue Change-Id: Ia885b083a7467f3558a940b808f071d9ca80e531 --- src/slic3r/GUI/Preferences.cpp | 14 +++++++++++++- src/slic3r/GUI/Preferences.hpp | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 24ceb2ee1..66e8a1ad9 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -29,6 +29,18 @@ WX_DEFINE_LIST(RadioSelectorList); wxDEFINE_EVENT(EVT_PREFERENCES_SELECT_TAB, wxCommandEvent); +class MyscrolledWindow : public wxScrolledWindow { +public: + MyscrolledWindow(wxWindow* parent, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxVSCROLL) : wxScrolledWindow(parent, id, pos, size, style) {} + + bool ShouldScrollToChildOnFocus(wxWindow* child) override { return false; } +}; + + wxBoxSizer *PreferencesDialog::create_item_title(wxString title, wxWindow *parent, wxString tooltip) { wxBoxSizer *m_sizer_title = new wxBoxSizer(wxHORIZONTAL); @@ -836,7 +848,7 @@ void PreferencesDialog::create() auto main_sizer = new wxBoxSizer(wxVERTICAL); - m_scrolledWindow = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); + m_scrolledWindow = new MyscrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); m_scrolledWindow->SetScrollRate(5, 5); m_sizer_body = new wxBoxSizer(wxVERTICAL); diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index e3370d02d..a417d47de 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -41,6 +41,7 @@ public: RadioBox *m_radiobox; bool m_selected = false; }; + WX_DECLARE_LIST(RadioSelector, RadioSelectorList); class CheckBox; class TextInput; @@ -61,7 +62,7 @@ private: protected: wxBoxSizer * m_sizer_body; - wxScrolledWindow *m_scrolledWindow; + wxScrolledWindow* m_scrolledWindow; // bool m_settings_layout_changed {false}; bool m_seq_top_layer_only_changed{false};