Hi, Here is a small patch which makes the Calc options dialog "Default" able to have translated labels longer than the original English. For example in French the label on the second line (Nom de préfixe pour la nouvelle feuille de calcul / Prefix name for new worksheet) is truncated before the last word under Linux and before the last letter under MS-Windows.
The current code compare the length of the label and the length of the string it contains. If the string is longer, the size of the label is recalculated. It does that only for the first line of the option dialog. My patch extends this code to both lines of the dialog. Thank you to Arnaud for his kind advices. Best regards. JBF -- Seuls des formats ouverts peuvent assurer la pérennité de vos documents.
>From 164dafedd121460785e5c56ce4bc9ce7b1892940 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste FAURE <jbf.fa...@orange.fr> Date: Tue, 21 Aug 2012 22:15:32 +0200 Subject: [PATCH] The label size is computed from the length of the string it contains Change-Id: I586a31a5d563ea8a11282836ca1d54b0c8be1bf4 --- sc/source/ui/optdlg/tpdefaults.cxx | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sc/source/ui/optdlg/tpdefaults.cxx b/sc/source/ui/optdlg/tpdefaults.cxx index b67e87b..c0db2c1 100644 --- a/sc/source/ui/optdlg/tpdefaults.cxx +++ b/sc/source/ui/optdlg/tpdefaults.cxx @@ -48,16 +48,23 @@ ScTpDefaultsOptions::ScTpDefaultsOptions(Window *pParent, const SfxItemSet &rCor { FreeResource(); - long nTxtW = aFtNSheets.GetCtrlTextWidth( aFtNSheets.GetText() ); - long nCtrlW = aFtNSheets.GetSizePixel().Width(); - if ( nTxtW >= nCtrlW ) + // the following computation must be modified accordingly if a third line is added to this dialog + long nTxtW1 = aFtNSheets.GetCtrlTextWidth( aFtNSheets.GetText() ); + long nCtrlW1 = aFtNSheets.GetSizePixel().Width(); + long nTxtW2 = aFtSheetPrefix.GetCtrlTextWidth(aFtSheetPrefix.GetText() ); + long nCtrlW2 = aFtSheetPrefix.GetSizePixel().Width(); + if ( nTxtW1 >= nCtrlW1 || nTxtW2 >= nCtrlW2) { + long nTxtW = std::max(nTxtW1,nTxtW2); Size aNewSize = aFtNSheets.GetSizePixel(); - aNewSize.Width() += ( nTxtW - nCtrlW ); + aNewSize.Width() = nTxtW; aFtNSheets.SetSizePixel( aNewSize ); + aFtSheetPrefix.SetSizePixel( aNewSize ); Point aNewPoint = aEdNSheets.GetPosPixel(); - aNewPoint.X() += ( nTxtW - nCtrlW ); + aNewPoint.X() += (nTxtW - nCtrlW1); aEdNSheets.SetPosPixel( aNewPoint ); + aNewPoint.Y() = aEdSheetPrefix.GetPosPixel().Y(); + aEdSheetPrefix.SetPosPixel( aNewPoint ); } aEdNSheets.SetModifyHdl( LINK(this, ScTpDefaultsOptions, NumModifiedHdl) ); aEdSheetPrefix.SetModifyHdl( LINK(this, ScTpDefaultsOptions, PrefixModifiedHdl) ); -- 1.7.5.4
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice