summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2012-03-27 12:32:05 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-02 07:18:49 +0200
commit05d6bb3aed80d0284bdeaf4177c9883aa60ea169 (patch)
treefccb8185d66a5d27b5382f730b2e15dc149323a5
parentDisable cairo canvas on Windows fdo#46901 fdo#46532 (diff)
downloadcore-05d6bb3aed80d0284bdeaf4177c9883aa60ea169.tar.gz
core-05d6bb3aed80d0284bdeaf4177c9883aa60ea169.zip
fix vertical align when switching mode in multibar fdo#44140
switching between SumAssign & OkCancel mode in the multibar results in a slight 'jumping' of the toolbar items when end up out of allignment with the other toolbar items. Signed-off-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--vcl/source/window/toolbox.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 2a0a0893054a..0ae1ccb5a765 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -2722,7 +2722,19 @@ void ToolBox::ImplFormat( sal_Bool bResize )
// if special TBX_LAYOUT_LOCKVERT lock vertical position
// don't recalulate the vertical position of the item
if ( meLayoutMode == TBX_LAYOUT_LOCKVERT && mnLines == 1 )
- it->maCalcRect.Top() = it->maRect.Top();
+ {
+ // Somewhat of a hack here, calc deletes and re-adds
+ // the sum/assign & ok/cancel items dynamically.
+ // Because TBX_LAYOUT_LOCKVERT effectively prevents
+ // recalculation of the vertical pos of an item the
+ // it->maRect.Top() for those newly added items is
+ // 0. The hack here is that we want to effectively
+ // recalculate the vertical pos for those added
+ // items here. ( Note: assume mnMaxItemHeight is
+ // equal to the LineSize when multibar has a single
+ // line size )
+ it->maCalcRect.Top() = it->maRect.Top() ? it->maRect.Top() : ( nY + ( mnMaxItemHeight-aCurrentItemSize.Height())/2 );
+ }
else
it->maCalcRect.Top() = nY+(nLineSize-aCurrentItemSize.Height())/2;
it->maCalcRect.Right() = nX+aCurrentItemSize.Width()-1;