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 def50e1678..d02baf8686 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 1ab1c7ffa1..f803fb8f81 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 dbeae55689..aa78bb895b 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; }