Author: jsc
Date: Fri Jun 20 12:05:03 2014
New Revision: 1604149
URL: http://svn.apache.org/r1604149
Log:
#121627# merge fix from aoo410 branch that fixes the geometry calculations for
scroll bars
Modified:
openoffice/trunk/main/vcl/source/control/scrbar.cxx
openoffice/trunk/main/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
Modified: openoffice/trunk/main/vcl/source/control/scrbar.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/source/control/scrbar.cxx?rev=1604149&r1=1604148&r2=1604149&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/source/control/scrbar.cxx (original)
+++ openoffice/trunk/main/vcl/source/control/scrbar.cxx Fri Jun 20 12:05:03 2014
@@ -354,18 +354,33 @@ void ScrollBar::ImplCalc( sal_Bool bUpda
}
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 bUpda
}
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();
Modified: openoffice/trunk/main/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx?rev=1604149&r1=1604148&r2=1604149&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx (original)
+++ openoffice/trunk/main/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx Fri Jun 20
12:05:03 2014
@@ -981,8 +981,11 @@ sal_Bool GtkSalGraphics::getNativeContro
{
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) )
{