From dfc364af3cb3ad650c99f4a8616b4ddf795843b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xoan=20Sampai=C3=B1o?= Date: Wed, 3 May 2017 21:28:53 +0200 Subject: [PATCH] Enhance scrolling by using font point size as scroll rate In wxWidgets documentation there are three ways to set the size of the scrolling area. The most automatic (and newest) way is by using SetScrollRate: * http://docs.wxwidgets.org/trunk/classwx_scrolled.html#details --- lib/Slic3r/GUI.pm | 4 ++++ lib/Slic3r/GUI/Plater/OverrideSettingsPanel.pm | 4 +++- lib/Slic3r/GUI/PresetEditor.pm | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index def50e167..d02baf868 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -101,6 +101,10 @@ our $medium_font = Wx::SystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); $medium_font->SetPointSize(12); our $grey = Wx::Colour->new(200,200,200); +# to use in ScrolledWindow::SetScrollRate(xstep, ystep) +# step related to system font point size +our $scroll_step = Wx::SystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)->GetPointSize; + our $VERSION_CHECK_EVENT : shared = Wx::NewEventType; our $DLP_projection_screen; diff --git a/lib/Slic3r/GUI/Plater/OverrideSettingsPanel.pm b/lib/Slic3r/GUI/Plater/OverrideSettingsPanel.pm index 1ab1c7ffa..f803fb8f8 100644 --- a/lib/Slic3r/GUI/Plater/OverrideSettingsPanel.pm +++ b/lib/Slic3r/GUI/Plater/OverrideSettingsPanel.pm @@ -89,7 +89,9 @@ sub new { } $self->SetSizer($self->{sizer}); - $self->SetScrollbars(0, 1, 0, 1); + + # http://docs.wxwidgets.org/3.0/classwx_scrolled.html#details + $self->SetScrollRate(0, $Slic3r::GUI::scroll_step); $self->set_opt_keys($params{opt_keys}) if $params{opt_keys}; $self->update_optgroup; diff --git a/lib/Slic3r/GUI/PresetEditor.pm b/lib/Slic3r/GUI/PresetEditor.pm index dbeae5568..aa78bb895 100644 --- a/lib/Slic3r/GUI/PresetEditor.pm +++ b/lib/Slic3r/GUI/PresetEditor.pm @@ -1602,11 +1602,12 @@ sub new { $self->{title} = $title; $self->{iconID} = $iconID; - $self->SetScrollbars(1, 1, 1, 1); - $self->{vsizer} = Wx::BoxSizer->new(wxVERTICAL); $self->SetSizer($self->{vsizer}); + # http://docs.wxwidgets.org/3.0/classwx_scrolled.html#details + $self->SetScrollRate($Slic3r::GUI::scroll_step, $Slic3r::GUI::scroll_step); + return $self; }