Kaydet (Commit) 1d1d1c62 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

fdo#36772 Move the scrollbar and sheet tabs in a separate row.

Change-Id: I57d891d9f6e89dafb4840a577ba55baa734fdcc2
üst ae71b830
...@@ -39,8 +39,7 @@ ...@@ -39,8 +39,7 @@
ScTabControl::ScTabControl( Window* pParent, ScViewData* pData ) : ScTabControl::ScTabControl( Window* pParent, ScViewData* pData ) :
TabBar( pParent, TabBar( pParent,
WinBits(WB_BORDER | WB_3DLOOK | WB_SCROLL | WB_RANGESELECT | WinBits(WB_BORDER | WB_3DLOOK | WB_SCROLL | WB_RANGESELECT | WB_MULTISELECT | WB_DRAG ) ),
WB_MULTISELECT | WB_DRAG | WB_SIZEABLE) ),
DropTargetHelper( this ), DropTargetHelper( this ),
DragSourceHelper( this ), DragSourceHelper( this ),
pViewData( pData ), pViewData( pData ),
......
...@@ -57,9 +57,6 @@ ...@@ -57,9 +57,6 @@
#define SPLIT_HANDLE_SIZE 5 #define SPLIT_HANDLE_SIZE 5
#define SC_ICONSIZE 36 #define SC_ICONSIZE 36
#define SC_SCROLLBAR_MIN 30
#define SC_TABBAR_MIN 6
using namespace ::com::sun::star; using namespace ::com::sun::star;
// Corner-Button // Corner-Button
...@@ -341,7 +338,12 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -341,7 +338,12 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
aBorderPos = rOffset; aBorderPos = rOffset;
aFrameSize = rSize; aFrameSize = rSize;
const StyleSettings& rStyleSettings = pFrameWin->GetSettings().GetStyleSettings();
sal_Int32 nTabWidth = pFrameWin->GetFont().GetHeight() + 4;
if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE ) if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
{
if ( aViewData.GetHSplitPos() > nSizeX - SPLIT_MARGIN ) if ( aViewData.GetHSplitPos() > nSizeX - SPLIT_MARGIN )
{ {
aViewData.SetHSplitMode( SC_SPLIT_NONE ); aViewData.SetHSplitMode( SC_SPLIT_NONE );
...@@ -349,7 +351,9 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -349,7 +351,9 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
ActivatePart( SC_SPLIT_BOTTOMLEFT ); ActivatePart( SC_SPLIT_BOTTOMLEFT );
InvalidateSplit(); InvalidateSplit();
} }
}
if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE ) if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
{
if ( aViewData.GetVSplitPos() > nSizeY - SPLIT_MARGIN ) if ( aViewData.GetVSplitPos() > nSizeY - SPLIT_MARGIN )
{ {
aViewData.SetVSplitMode( SC_SPLIT_NONE ); aViewData.SetVSplitMode( SC_SPLIT_NONE );
...@@ -357,12 +361,13 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -357,12 +361,13 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
ActivatePart( SC_SPLIT_BOTTOMLEFT ); ActivatePart( SC_SPLIT_BOTTOMLEFT );
InvalidateSplit(); InvalidateSplit();
} }
}
UpdateShow(); UpdateShow();
if (bHScroll || bVScroll) // Scrollbars horizontal oder vertikal if (bHScroll || bVScroll) // Scrollbars horizontal oder vertikal
{ {
long nScrollBarSize = pFrameWin->GetSettings().GetStyleSettings().GetScrollBarSize(); long nScrollBarSize = rStyleSettings.GetScrollBarSize();
if (bVScroll) if (bVScroll)
{ {
nBarX = nScrollBarSize; nBarX = nScrollBarSize;
...@@ -370,7 +375,7 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -370,7 +375,7 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
} }
if (bHScroll) if (bHScroll)
{ {
nBarY = nScrollBarSize; nBarY = nScrollBarSize + nTabWidth;
nSizeY -= nBarY - nOverlap; nSizeY -= nBarY - nOverlap;
} }
...@@ -401,7 +406,6 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -401,7 +406,6 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
} }
nSizeRt = nSizeX - nSizeLt - nSizeSp; nSizeRt = nSizeX - nSizeLt - nSizeSp;
long nTabSize = 0;
if (bTabControl) if (bTabControl)
{ {
// pending relative tab bar width from extended document options // pending relative tab bar width from extended document options
...@@ -410,39 +414,30 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -410,39 +414,30 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
SetRelTabBarWidth( mfPendingTabBarWidth ); SetRelTabBarWidth( mfPendingTabBarWidth );
mfPendingTabBarWidth = -1.0; mfPendingTabBarWidth = -1.0;
} }
nTabSize = pTabControl->GetSizePixel().Width()-nOverlap;
if ( aViewData.GetHSplitMode() != SC_SPLIT_FIX ) // bei linkem Scrollbar
{
if (nTabSize > nSizeLt-SC_SCROLLBAR_MIN) nTabSize = nSizeLt-SC_SCROLLBAR_MIN;
if (nTabSize < SC_TABBAR_MIN) nTabSize = SC_TABBAR_MIN;
nSizeLt -= nTabSize;
}
else // bei rechtem Scrollbar
{
if (nTabSize > nSizeRt-SC_SCROLLBAR_MIN) nTabSize = nSizeRt-SC_SCROLLBAR_MIN;
if (nTabSize < SC_TABBAR_MIN) nTabSize = SC_TABBAR_MIN;
nSizeRt -= nTabSize;
}
} }
lcl_SetPosSize( *pTabControl, Point(nPosX-nOverlap, nPosY+nSizeY), Point aTabPoint(nPosX - nOverlap, nPosY + nSizeY + nScrollBarSize);
Size(nTabSize+nOverlap, nBarY), nTotalWidth, bLayoutRTL ); Size aTabSize(nSizeX, nBarY - nScrollBarSize);
lcl_SetPosSize( *pTabControl, aTabPoint, aTabSize, nTotalWidth, bLayoutRTL );
pTabControl->SetSheetLayoutRTL( bLayoutRTL ); pTabControl->SetSheetLayoutRTL( bLayoutRTL );
lcl_SetPosSize( aHScrollLeft, Point(nPosX+nTabSize-nOverlap, nPosY+nSizeY), Point aHScrollLeftPoint(nPosX - nOverlap, nPosY + nSizeY);
Size(nSizeLt+2*nOverlap, nBarY), nTotalWidth, bLayoutRTL ); Size aHScrollLeftSize(nSizeLt + 2 * nOverlap, nScrollBarSize);
lcl_SetPosSize( *pHSplitter, Point( nPosX+nTabSize+nSizeLt, nPosY+nSizeY ), lcl_SetPosSize( aHScrollLeft, aHScrollLeftPoint, aHScrollLeftSize, nTotalWidth, bLayoutRTL );
Size( nSizeSp, nBarY ), nTotalWidth, bLayoutRTL );
lcl_SetPosSize( aHScrollRight, Point(nPosX+nTabSize+nSizeLt+nSizeSp-nOverlap, Point aHSplitterPoint(nPosX + nSizeLt, nPosY + nSizeY);
nPosY+nSizeY), Size aHSplitterSize(nSizeSp, nScrollBarSize);
Size(nSizeRt+2*nOverlap, nBarY), nTotalWidth, bLayoutRTL ); lcl_SetPosSize( *pHSplitter, aHSplitterPoint, aHSplitterSize, nTotalWidth, bLayoutRTL );
Point aHScrollRightPoint(nPosX + nSizeLt + nSizeSp - nOverlap, nPosY + nSizeY);
Size aHScrollRightSize(nSizeRt + 2 * nOverlap, nScrollBarSize);
lcl_SetPosSize( aHScrollRight, aHScrollRightPoint, aHScrollRightSize, nTotalWidth, bLayoutRTL );
// SetDragRectPixel is done below // SetDragRectPixel is done below
} }
if (bVScroll) // Scrollbars vertikal if (bVScroll)
{ {
long nSizeUp = 0; // upper scroll bar long nSizeUp = 0; // upper scroll bar
long nSizeSp = 0; // splitter long nSizeSp = 0; // splitter
...@@ -560,7 +555,8 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner ) ...@@ -560,7 +555,8 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, bool bInner )
} }
nSplitPosX = aViewData.GetHSplitPos(); nSplitPosX = aViewData.GetHSplitPos();
lcl_SetPosSize( *pHSplitter, lcl_SetPosSize( *pHSplitter,
Point( nSplitPosX, nOutPosY ), Size( nSplitSizeX, nSplitHeight ), nTotalWidth, bLayoutRTL ); Point(nSplitPosX, nOutPosY),
Size( nSplitSizeX, nSplitHeight - nTabWidth ), nTotalWidth, bLayoutRTL );
nLeftSize = nSplitPosX - nPosX; nLeftSize = nSplitPosX - nPosX;
nSplitPosX += nSplitSizeX; nSplitPosX += nSplitSizeX;
nRightSize = nSizeX - nLeftSize - nSplitSizeX; nRightSize = nSizeX - nLeftSize - nSplitSizeX;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment