diff options
Diffstat (limited to 'chart2/source/controller/dialogs/tp_Scale.cxx')
-rw-r--r-- | chart2/source/controller/dialogs/tp_Scale.cxx | 91 |
1 files changed, 50 insertions, 41 deletions
diff --git a/chart2/source/controller/dialogs/tp_Scale.cxx b/chart2/source/controller/dialogs/tp_Scale.cxx index d799fd31b89d..a2c3694a8469 100644 --- a/chart2/source/controller/dialogs/tp_Scale.cxx +++ b/chart2/source/controller/dialogs/tp_Scale.cxx @@ -137,47 +137,6 @@ ScaleTabPage::ScaleTabPage(Window* pWindow,const SfxItemSet& rInAttrs) : FreeResource(); SetExchangeSupport(); - //optimize position of the controls - { - long nLabelWidth = ::std::max( aTxtMin.CalcMinimumSize().Width(), aTxtMax.CalcMinimumSize().Width() ); - nLabelWidth = ::std::max( aTxtMain.CalcMinimumSize().Width(), nLabelWidth ); - nLabelWidth = ::std::max( aTxtHelp.CalcMinimumSize().Width(), nLabelWidth ); - nLabelWidth = ::std::max( aTxtOrigin.CalcMinimumSize().Width(), nLabelWidth ); - nLabelWidth+=1; - - long nLabelDistance = aTxtMin.LogicToPixel( Size(RSC_SP_CTRL_DESC_X, 0), MapMode(MAP_APPFONT) ).Width(); - long nNewXPos = aTxtMin.GetPosPixel().X() + nLabelWidth + nLabelDistance; - - //ensure that the auto checkboxes are wide enough and have correct size for calculation - aCbxAutoMin.SetSizePixel( aCbxAutoMin.CalcMinimumSize() ); - aCbxAutoMax.SetSizePixel( aCbxAutoMax.CalcMinimumSize() ); - aCbxAutoStepMain.SetSizePixel( aCbxAutoStepMain.CalcMinimumSize() ); - aCbxAutoStepHelp.SetSizePixel( aCbxAutoStepHelp.CalcMinimumSize() ); - aCbxAutoOrigin.SetSizePixel( aCbxAutoOrigin.CalcMinimumSize() ); - - //ensure new pos is ok - long nWidthOfOtherControls = aCbxAutoMin.GetPosPixel().X() + aCbxAutoMin.GetSizePixel().Width() - aFmtFldMin.GetPosPixel().X(); - long nDialogWidth = GetSizePixel().Width(); - - long nLeftSpace = nDialogWidth - nNewXPos - nWidthOfOtherControls; - if(nLeftSpace>=0) - { - Size aSize( aTxtMin.GetSizePixel() ); - aSize.Width() = nLabelWidth; - aTxtMin.SetSizePixel(aSize); - aTxtMax.SetSizePixel(aSize); - aTxtMain.SetSizePixel(aSize); - aTxtHelp.SetSizePixel(aSize); - aTxtOrigin.SetSizePixel(aSize); - - lcl_shiftControls( aFmtFldMin, aCbxAutoMin, nNewXPos ); - lcl_shiftControls( aFmtFldMax, aCbxAutoMax, nNewXPos ); - lcl_shiftControls( aFmtFldStepMain, aCbxAutoStepMain, nNewXPos ); - lcl_shiftControls( aMtStepHelp, aCbxAutoStepHelp, nNewXPos ); - lcl_shiftControls( aFmtFldOrigin, aCbxAutoOrigin, nNewXPos ); - } - } - aCbxAutoMin.SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl)); aCbxAutoMax.SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl)); aCbxAutoStepMain.SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl)); @@ -185,6 +144,56 @@ ScaleTabPage::ScaleTabPage(Window* pWindow,const SfxItemSet& rInAttrs) : aCbxAutoOrigin.SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl)); } +void ScaleTabPage::StateChanged( StateChangedType nType ) +{ + TabPage::StateChanged( nType ); + + if( nType == STATE_CHANGE_INITSHOW ) + AdjustControlPositions(); +} + +void ScaleTabPage::AdjustControlPositions() +{ + //optimize position of the controls + long nLabelWidth = ::std::max( aTxtMin.CalcMinimumSize().Width(), aTxtMax.CalcMinimumSize().Width() ); + nLabelWidth = ::std::max( aTxtMain.CalcMinimumSize().Width(), nLabelWidth ); + nLabelWidth = ::std::max( aTxtHelp.CalcMinimumSize().Width(), nLabelWidth ); + nLabelWidth = ::std::max( aTxtOrigin.CalcMinimumSize().Width(), nLabelWidth ); + nLabelWidth+=1; + + long nLabelDistance = aTxtMin.LogicToPixel( Size(RSC_SP_CTRL_DESC_X, 0), MapMode(MAP_APPFONT) ).Width(); + long nNewXPos = aTxtMin.GetPosPixel().X() + nLabelWidth + nLabelDistance; + + //ensure that the auto checkboxes are wide enough and have correct size for calculation + aCbxAutoMin.SetSizePixel( aCbxAutoMin.CalcMinimumSize() ); + aCbxAutoMax.SetSizePixel( aCbxAutoMax.CalcMinimumSize() ); + aCbxAutoStepMain.SetSizePixel( aCbxAutoStepMain.CalcMinimumSize() ); + aCbxAutoStepHelp.SetSizePixel( aCbxAutoStepHelp.CalcMinimumSize() ); + aCbxAutoOrigin.SetSizePixel( aCbxAutoOrigin.CalcMinimumSize() ); + + //ensure new pos is ok + long nWidthOfOtherControls = aCbxAutoMin.GetPosPixel().X() + aCbxAutoMin.GetSizePixel().Width() - aFmtFldMin.GetPosPixel().X(); + long nDialogWidth = GetSizePixel().Width(); + + long nLeftSpace = nDialogWidth - nNewXPos - nWidthOfOtherControls; + if(nLeftSpace>=0) + { + Size aSize( aTxtMin.GetSizePixel() ); + aSize.Width() = nLabelWidth; + aTxtMin.SetSizePixel(aSize); + aTxtMax.SetSizePixel(aSize); + aTxtMain.SetSizePixel(aSize); + aTxtHelp.SetSizePixel(aSize); + aTxtOrigin.SetSizePixel(aSize); + + lcl_shiftControls( aFmtFldMin, aCbxAutoMin, nNewXPos ); + lcl_shiftControls( aFmtFldMax, aCbxAutoMax, nNewXPos ); + lcl_shiftControls( aFmtFldStepMain, aCbxAutoStepMain, nNewXPos ); + lcl_shiftControls( aMtStepHelp, aCbxAutoStepHelp, nNewXPos ); + lcl_shiftControls( aFmtFldOrigin, aCbxAutoOrigin, nNewXPos ); + } +} + void ScaleTabPage::EnableControls() { bool bEnableForValueOrPercentAxis = chart2::AxisType::REALNUMBER == nAxisType || chart2::AxisType::PERCENT == nAxisType; |