[Libreoffice-commits] core.git: vcl/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Thu Aug 26 15:57:52 UTC 2021
vcl/source/control/edit.cxx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
New commits:
commit f72013ca65c7a33991d5fb124b919fe7cde269e2
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 26 15:24:25 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Aug 26 17:57:16 2021 +0200
use max of avg digit or 'average char' width to measure Edit space
instead of the x-width
this is similar to what gtk does
Change-Id: I2806939a09b275a3060ddf693e2763238a4e075f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121118
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index c2329c45dc78..958b26e54dde 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -2668,8 +2668,8 @@ Size Edit::CalcSize(sal_Int32 nChars) const
{
// width for N characters, independent from content.
// works only correct for fixed fonts, average otherwise
- Size aSz( GetTextWidth( "x" ), GetTextHeight() );
- aSz.setWidth( aSz.Width() * nChars );
+ float fUnitWidth = std::max(approximate_char_width(), approximate_digit_width());
+ Size aSz(fUnitWidth * nChars, GetTextHeight());
aSz.AdjustWidth(ImplGetExtraXOffset() * 2 );
aSz = CalcWindowSize( aSz );
return aSz;
@@ -2679,8 +2679,8 @@ sal_Int32 Edit::GetMaxVisChars() const
{
const vcl::Window* pW = mpSubEdit ? mpSubEdit : this;
sal_Int32 nOutWidth = pW->GetOutputSizePixel().Width();
- sal_Int32 nCharWidth = GetTextWidth( "x" );
- return nCharWidth ? nOutWidth/nCharWidth : 0;
+ float fUnitWidth = std::max(approximate_char_width(), approximate_digit_width());
+ return nOutWidth / fUnitWidth;
}
namespace vcl
More information about the Libreoffice-commits
mailing list