diff options
author | Ivan Timofeev <timofeev.i.s@gmail.com> | 2012-08-08 16:46:19 +0400 |
---|---|---|
committer | Ivan Timofeev <timofeev.i.s@gmail.com> | 2012-08-08 17:26:58 +0400 |
commit | 84d5e639b08a1f96b41b7b5b6af51c703b0cd620 (patch) | |
tree | b28e1759ab8c2bf92fb7e3bdfc96c6a43599ee13 /svtools/source | |
parent | 78c1ea15df28e93e754c6f62bc7cc06888ba58ef (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.cxx | 16 |
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; |