vcl/source/control/scrbar.cxx | 52 +++++++++++++++++++++++-------- vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 5 ++ 2 files changed, 44 insertions(+), 13 deletions(-)
New commits: commit a734be318f82ae1da793702cb8aee50864023b73 Author: Jürgen Schmidt <j...@apache.org> Date: Fri Jun 20 12:05:03 2014 +0000 #121627# merge fix from aoo410 branch that fixes the geometry calculations for scroll bars diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index 4f75b66..d2b7659 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -354,18 +354,33 @@ void ScrollBar::ImplCalc( sal_Bool bUpdate ) } else { - Size aBtnSize( aSize.Height(), aSize.Height() ); - maBtn2Rect.Top() = maBtn1Rect.Top(); - maBtn2Rect.Left() = aSize.Width()-aSize.Height(); - maBtn1Rect.SetSize( aBtnSize ); - maBtn2Rect.SetSize( aBtnSize ); + if (aBtn1Region.IsEmpty() && aBtn2Region.IsEmpty()) + { + Size aBtnSize( aSize.Height(), aSize.Height() ); + maBtn2Rect.Top() = maBtn1Rect.Top(); + maBtn2Rect.Left() = aSize.Width()-aSize.Height(); + maBtn1Rect.SetSize( aBtnSize ); + maBtn2Rect.SetSize( aBtnSize ); + } + else + { + maBtn1Rect.SetEmpty(); + maBtn2Rect.SetEmpty(); + } } if ( GetNativeControlRegion( CTRL_SCROLLBAR, PART_TRACK_HORZ_AREA, aControlRegion, 0, ImplControlValue(), rtl::OUString(), aBoundingRegion, aTrackRegion ) ) + { maTrackRect = aTrackRegion; + } else - maTrackRect = Rectangle( maBtn1Rect.TopRight(), maBtn2Rect.BottomLeft() ); + { + if ( ! maBtn1Rect.IsEmpty()) + maTrackRect = Rectangle( maBtn1Rect.TopRight(), maBtn2Rect.BottomLeft() ); + else + maTrackRect = aControlRegion; + } // Check if available space is big enough for thumb ( min thumb size = ScrBar width/height ) mnThumbPixRange = maTrackRect.Right() - maTrackRect.Left(); @@ -395,18 +410,31 @@ void ScrollBar::ImplCalc( sal_Bool bUpdate ) } else { - const Size aBtnSize( aSize.Width(), aSize.Width() ); - maBtn2Rect.Left() = maBtn1Rect.Left(); - maBtn2Rect.Top() = aSize.Height()-aSize.Width(); - maBtn1Rect.SetSize( aBtnSize ); - maBtn2Rect.SetSize( aBtnSize ); + if (aBtn1Region.IsEmpty() && aBtn2Region.IsEmpty()) + { + const Size aBtnSize( aSize.Width(), aSize.Width() ); + maBtn2Rect.Left() = maBtn1Rect.Left(); + maBtn2Rect.Top() = aSize.Height()-aSize.Width(); + maBtn1Rect.SetSize( aBtnSize ); + maBtn2Rect.SetSize( aBtnSize ); + } + else + { + maBtn1Rect.SetEmpty(); + maBtn2Rect.SetEmpty(); + } } if ( GetNativeControlRegion( CTRL_SCROLLBAR, PART_TRACK_VERT_AREA, aControlRegion, 0, ImplControlValue(), rtl::OUString(), aBoundingRegion, aTrackRegion ) ) maTrackRect = aTrackRegion; else - maTrackRect = Rectangle( maBtn1Rect.BottomLeft()+Point(0,1), maBtn2Rect.TopRight() ); + { + if ( ! maBtn1Rect.IsEmpty()) + maTrackRect = Rectangle( maBtn1Rect.BottomLeft()+Point(0,1), maBtn2Rect.TopRight() ); + else + maTrackRect = aControlRegion; + } // Check if available space is big enough for thumb mnThumbPixRange = maTrackRect.Bottom() - maTrackRect.Top(); diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index bf5065b..47b8bcd 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -982,7 +982,10 @@ sal_Bool GtkSalGraphics::getNativeControlRegion( ControlType nType, rNativeBoundingRegion = NWGetScrollButtonRect( m_nScreen, nPart, rControlRegion ); rNativeContentRegion = rNativeBoundingRegion; - returnVal = sal_True; + if (rNativeBoundingRegion.GetWidth()>0 && rNativeBoundingRegion.GetHeight()>0) + returnVal = sal_True; + else + returnVal = sal_False; } if( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL) ) {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits