diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index 5129620e1..8392e1b61 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -534,28 +534,33 @@ void ThumbBrowserBase::configScrollBars () GThreadLock tLock; // Acquire the GUI if (inW > 0 && inH > 0) { - - int iw = internal.get_width (); - int ih = internal.get_height (); - - hscroll.get_adjustment()->set_upper (inW); - vscroll.get_adjustment()->set_upper (inH); - hscroll.get_adjustment()->set_lower (0); - vscroll.get_adjustment()->set_lower (0); - hscroll.get_adjustment()->set_step_increment (!fd.empty() ? fd[0]->getEffectiveWidth() : 0); - vscroll.get_adjustment()->set_step_increment (!fd.empty() ? fd[0]->getEffectiveHeight() : 0); - hscroll.get_adjustment()->set_page_increment (iw); - vscroll.get_adjustment()->set_page_increment (ih); - hscroll.get_adjustment()->set_page_size (iw); - vscroll.get_adjustment()->set_page_size (ih); - - if(iw >= inW) { - hscroll.hide(); + int ih = internal.get_height(); + if (arrangement == TB_Horizontal) { + auto ha = hscroll.get_adjustment(); + int iw = internal.get_width(); + ha->set_upper(inW); + ha->set_lower(0); + ha->set_step_increment(!fd.empty() ? fd[0]->getEffectiveWidth() : 0); + ha->set_page_increment(iw); + ha->set_page_size(iw); + if (iw >= inW) { + hscroll.hide(); + } else { + hscroll.show(); + } } else { - hscroll.show(); + hscroll.hide(); } - if(ih >= inH) { + auto va = vscroll.get_adjustment(); + va->set_upper(inH); + va->set_lower(0); + const auto height = !fd.empty() ? fd[0]->getEffectiveHeight() : 0; + va->set_step_increment(height); + va->set_page_increment(height == 0 ? ih : (ih / height) * height); + va->set_page_size(ih); + + if (ih >= inH) { vscroll.hide(); } else { vscroll.show();