summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svtools/source/control/ruler.cxx98
-rw-r--r--svx/source/dialog/svxruler.cxx22
2 files changed, 66 insertions, 54 deletions
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index 1ac385326d93..5654af027153 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -807,71 +807,79 @@ static void ImplDrawRulerTab( OutputDevice* pDevice,
sal_uInt16 nTabStyle = nStyle & RULER_TAB_STYLE;
bool bRTL = 0 != (nStyle & RULER_TAB_RTL);
- Rectangle aRect1, aRect2, aRect3;
+
+ Rectangle aRect1;
+ Rectangle aRect2;
+ Rectangle aRect3;
+
aRect3.SetEmpty();
if ( nTabStyle == RULER_TAB_DEFAULT )
{
- aRect1.Left() = rPos.X() - RULER_TAB_DWIDTH2 + 1 ;
- aRect1.Top() = rPos.Y() - RULER_TAB_DHEIGHT2 + 1 ;
- aRect1.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH ;
- aRect1.Bottom() = rPos.Y();
- aRect2.Left() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3;
- aRect2.Top() = rPos.Y() - RULER_TAB_DHEIGHT + 1;
- aRect2.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3 + RULER_TAB_DWIDTH4 - 1;
- aRect2.Bottom() = rPos.Y();
+ aRect1.Left() = rPos.X() - RULER_TAB_DWIDTH2 + 1;
+ aRect1.Top() = rPos.Y() - RULER_TAB_DHEIGHT2 + 1;
+ aRect1.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH;
+ aRect1.Bottom() = rPos.Y();
+
+ aRect2.Left() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3;
+ aRect2.Top() = rPos.Y() - RULER_TAB_DHEIGHT + 1;
+ aRect2.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3 + RULER_TAB_DWIDTH4 - 1;
+ aRect2.Bottom() = rPos.Y();
}
- else if ( (!bRTL && nTabStyle == RULER_TAB_LEFT) ||( bRTL && nTabStyle == RULER_TAB_RIGHT))
+ else if ( (!bRTL && nTabStyle == RULER_TAB_LEFT) || ( bRTL && nTabStyle == RULER_TAB_RIGHT))
{
- aRect1.Left() = rPos.X();
- aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
- aRect1.Right() = rPos.X() + RULER_TAB_WIDTH - 1;
- aRect1.Bottom() = rPos.Y();
- aRect2.Left() = rPos.X();
- aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
- aRect2.Right() = rPos.X() + RULER_TAB_WIDTH2 - 1;
- aRect2.Bottom() = rPos.Y();
+ aRect1.Left() = rPos.X();
+ aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
+ aRect1.Right() = rPos.X() + RULER_TAB_WIDTH - 1;
+ aRect1.Bottom() = rPos.Y();
+
+ aRect2.Left() = rPos.X();
+ aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
+ aRect2.Right() = rPos.X() + RULER_TAB_WIDTH2 - 1;
+ aRect2.Bottom() = rPos.Y();
}
else if ( (!bRTL && nTabStyle == RULER_TAB_RIGHT) ||( bRTL && nTabStyle == RULER_TAB_LEFT))
{
- aRect1.Left() = rPos.X() - RULER_TAB_WIDTH + 1;
- aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
- aRect1.Right() = rPos.X();
- aRect1.Bottom() = rPos.Y();
- aRect2.Left() = rPos.X() - RULER_TAB_WIDTH2 + 1;
- aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
- aRect2.Right() = rPos.X();
- aRect2.Bottom() = rPos.Y();
+ aRect1.Left() = rPos.X() - RULER_TAB_WIDTH + 1;
+ aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
+ aRect1.Right() = rPos.X();
+ aRect1.Bottom() = rPos.Y();
+
+ aRect2.Left() = rPos.X() - RULER_TAB_WIDTH2 + 1;
+ aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
+ aRect2.Right() = rPos.X();
+ aRect2.Bottom() = rPos.Y();
}
else
{
- aRect1.Left() = rPos.X() - RULER_TAB_CWIDTH2 + 1;
- aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
- aRect1.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH;
- aRect1.Bottom() = rPos.Y();
- aRect2.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3;
- aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
- aRect2.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3 + RULER_TAB_CWIDTH4 - 1;
- aRect2.Bottom() = rPos.Y();
+ aRect1.Left() = rPos.X() - RULER_TAB_CWIDTH2 + 1;
+ aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1;
+ aRect1.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH;
+ aRect1.Bottom() = rPos.Y();
+
+ aRect2.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3;
+ aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1;
+ aRect2.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3 + RULER_TAB_CWIDTH4 - 1;
+ aRect2.Bottom() = rPos.Y();
if ( nTabStyle == RULER_TAB_DECIMAL )
{
- aRect3.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH - 1;
- aRect3.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1 + 1;
+ aRect3.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH - 1;
+ aRect3.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1 + 1;
aRect3.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH;
aRect3.Bottom()= rPos.Y() - RULER_TAB_HEIGHT + 1 + 2 ;
}
}
- if( 0 == (nWinBits&WB_HORZ) )
+ if( 0 == (nWinBits & WB_HORZ) )
{
- bool bRightAligned = 0 != (nWinBits&WB_RIGHT_ALIGNED);
+ bool bRightAligned = 0 != (nWinBits & WB_RIGHT_ALIGNED);
lcl_RotateRect_Impl(aRect1, rPos.Y(), bRightAligned);
lcl_RotateRect_Impl(aRect2, rPos.Y(), bRightAligned);
lcl_RotateRect_Impl(aRect3, rPos.Y(), bRightAligned);
}
pDevice->DrawRect( aRect1 );
pDevice->DrawRect( aRect2 );
- if(!aRect2.IsEmpty())
+ if(!aRect3.IsEmpty())
pDevice->DrawRect( aRect3 );
}
@@ -903,12 +911,12 @@ void Ruler::ImplDrawTabs( long nMin, long nMax, long nVirTop, long nVirBottom )
if ( mpData->pTabs[i].nStyle & RULER_STYLE_INVISIBLE )
continue;
- long n;
- n = mpData->pTabs[i].nPos;
- n += +mpData->nNullVirOff;
- long nTopBottom = GetStyle() & WB_RIGHT_ALIGNED ? nVirTop : nVirBottom;
- if ( (n >= nMin) && (n <= nMax) )
- ImplDrawTab( &maVirDev, Point( n, nTopBottom ), mpData->pTabs[i].nStyle );
+ long aPosition;
+ aPosition = mpData->pTabs[i].nPos;
+ aPosition += +mpData->nNullVirOff;
+ long nTopBottom = (GetStyle() & WB_RIGHT_ALIGNED) ? nVirTop : nVirBottom;
+ if (nMin <= aPosition && aPosition <= nMax)
+ ImplDrawTab( &maVirDev, Point( aPosition, nTopBottom ), mpData->pTabs[i].nStyle );
}
}
diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx
index 3e1e943c8818..6918ebae6927 100644
--- a/svx/source/dialog/svxruler.cxx
+++ b/svx/source/dialog/svxruler.cxx
@@ -1003,15 +1003,19 @@ void SvxRuler::UpdateTabs()
// fill the rest with default Tabs
if(bRTL)
{
+ sal_Int32 aFirst = pTabs[nTabCount].nPos;
for(j = 0; j < nDefTabBuf; ++j)
{
pTabs[nTabCount + TAB_GAP].nPos =
- pTabs[nTabCount].nPos - nDefTabDist;
+ aFirst - ConvertHPosPixel(j * lDefTabDist);
if(j == 0 )
+ {
pTabs[nTabCount + TAB_GAP].nPos -=
((pTabs[nTabCount + TAB_GAP].nPos - lRightPixMargin)
% nDefTabDist );
+ }
+
if(pTabs[nTabCount+TAB_GAP].nPos <= lParaIndentPix)
break;
pTabs[nTabCount + TAB_GAP].nStyle = RULER_TAB_DEFAULT;
@@ -1020,6 +1024,7 @@ void SvxRuler::UpdateTabs()
}
else
{
+ sal_Int32 aFirst = 0;
for(j = 0; j < nDefTabBuf; ++j)
{
if( j == 0 )
@@ -1029,27 +1034,26 @@ void SvxRuler::UpdateTabs()
{
pTabs[nTabCount + TAB_GAP].nPos =
(pTabs[nTabCount].nPos + nDefTabDist);
+
pTabs[nTabCount + TAB_GAP].nPos -=
((pTabs[nTabCount + TAB_GAP].nPos - lParaIndentPix)
% nDefTabDist );
+ aFirst = pTabs[nTabCount + TAB_GAP].nPos;
}
else
{
if( pTabs[nTabCount].nPos < 0 )
- {
- pTabs[nTabCount + TAB_GAP].nPos = ( pTabs[nTabCount].nPos / nDefTabDist ) * nDefTabDist;
- }
+ aFirst = ( pTabs[nTabCount].nPos / nDefTabDist ) * nDefTabDist;
else
- {
- pTabs[nTabCount + TAB_GAP].nPos = ( pTabs[nTabCount].nPos / nDefTabDist + 1 ) * nDefTabDist;
- }
+ aFirst = ( pTabs[nTabCount].nPos / nDefTabDist + 1 ) * nDefTabDist;
+ pTabs[nTabCount + TAB_GAP].nPos = aFirst;
}
-
}
else
{
//simply add the default distance to the last position
- pTabs[nTabCount + TAB_GAP].nPos = pTabs[nTabCount].nPos + nDefTabDist;
+
+ pTabs[nTabCount + TAB_GAP].nPos = aFirst + ConvertHPosPixel(j * lDefTabDist);
}
if(pTabs[nTabCount + TAB_GAP].nPos >= lRightIndent)