summaryrefslogtreecommitdiff
path: root/svtools/source
diff options
context:
space:
mode:
authorIvan Timofeev <timofeev.i.s@gmail.com>2012-08-08 16:46:19 +0400
committerIvan Timofeev <timofeev.i.s@gmail.com>2012-08-08 17:26:58 +0400
commit84d5e639b08a1f96b41b7b5b6af51c703b0cd620 (patch)
treeb28e1759ab8c2bf92fb7e3bdfc96c6a43599ee13 /svtools/source
parent78c1ea15df28e93e754c6f62bc7cc06888ba58ef (diff)
fdo#50654: update virtual device width on modifying WB_EXTRAFIELD flag
Writer sets this flag dynamically via Ruler::SetStyle depending on the text direction, the flag is set by default and gets unset for the vertical ruler, because the initial text direction is horizontal, see SwView::StateTabWin. Ruler::SetStyle calls Ruler::ImplInitExtraField, which modifies mnVirOff, however mnVirWidth depends on mnVirOff, but gets updated only in Resize. This patch copies the code from Resize to ImplInitExtraField, we cannot just call Resize from ImplInitExtraField due to possible infinite recursion. Change-Id: Ic7bb897059295aebe86c11977c37419017b55787
Diffstat (limited to 'svtools/source')
-rw-r--r--svtools/source/control/ruler.cxx16
1 files changed, 15 insertions, 1 deletions
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index a422eb568f7a..d7f4e79ff8c2 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -1204,6 +1204,8 @@ void Ruler::ImplFormat()
void Ruler::ImplInitExtraField( sal_Bool bUpdate )
{
+ Size aWinSize = GetOutputSizePixel();
+
// Extra-Field beruecksichtigen
if ( mnWinStyle & WB_EXTRAFIELD )
{
@@ -1213,7 +1215,6 @@ void Ruler::ImplInitExtraField( sal_Bool bUpdate )
maExtraRect.Bottom() = RULER_OFF+mnVirHeight-1;
if(mpData->bTextRTL)
{
- Size aWinSize = GetOutputSizePixel();
if(mnWinStyle & WB_HORZ)
maExtraRect.Move(aWinSize.Width() - maExtraRect.GetWidth() - maExtraRect.Left(), 0);
else
@@ -1230,6 +1231,19 @@ void Ruler::ImplInitExtraField( sal_Bool bUpdate )
mnVirOff = 0;
}
+ // mnVirWidth depends on mnVirOff
+ if ( (mnVirWidth > RULER_MIN_SIZE) ||
+ ((aWinSize.Width() > RULER_MIN_SIZE) && (aWinSize.Height() > RULER_MIN_SIZE)) )
+ {
+ if ( mnWinStyle & WB_HORZ )
+ mnVirWidth = aWinSize.Width()-mnVirOff;
+ else
+ mnVirWidth = aWinSize.Height()-mnVirOff;
+
+ if ( mnVirWidth < RULER_MIN_SIZE )
+ mnVirWidth = 0;
+ }
+
if ( bUpdate )
{
mbCalc = sal_True;