diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-16 12:03:58 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-03-16 21:29:45 +0100 |
commit | ca1ed645036cab9ba5e94a9d2e22ef8110e852e0 (patch) | |
tree | 4f5978e837111a395f7f974ee65e73ea270b78a2 | |
parent | d416fa9a212e0421a7c925507ddee07132f3cab3 (diff) |
use digit width instead of char width
its the same across backends
Change-Id: I37c83cbf1139babcd014c7cfdee06a13bea845c7
Reviewed-on: https://gerrit.libreoffice.org/51423
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | cui/source/dialogs/colorpicker.cxx | 6 | ||||
-rw-r--r-- | include/vcl/outdev.hxx | 1 | ||||
-rw-r--r-- | include/vcl/weld.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/new.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/saveastemplatedlg.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/table/instable.cxx | 2 | ||||
-rw-r--r-- | sw/source/ui/table/tautofmt.cxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/dialog/SignatureLineDialog.cxx | 2 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 4 | ||||
-rw-r--r-- | vcl/source/outdev/text.cxx | 8 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 2 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 5 |
12 files changed, 23 insertions, 15 deletions
diff --git a/cui/source/dialogs/colorpicker.cxx b/cui/source/dialogs/colorpicker.cxx index 70a059a29014..87605abe22d5 100644 --- a/cui/source/dialogs/colorpicker.cxx +++ b/cui/source/dialogs/colorpicker.cxx @@ -166,7 +166,7 @@ public: { m_xDrawingArea->connect_size_allocate(LINK(this, ColorPreviewControl, DoResize)); m_xDrawingArea->connect_draw(LINK(this, ColorPreviewControl, DoPaint)); - m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_char_width() * 10, + m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_digit_width() * 10, m_xDrawingArea->get_text_height() * 2); } @@ -212,7 +212,7 @@ public: , mdX( -1.0 ) , mdY( -1.0 ) { - m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_char_width() * 40, + m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_digit_width() * 40, m_xDrawingArea->get_text_height() * 10); m_xDrawingArea->connect_size_allocate(LINK(this, ColorFieldControl, DoResize)); m_xDrawingArea->connect_draw(LINK(this, ColorFieldControl, DoPaint)); @@ -559,7 +559,7 @@ ColorSliderControl::ColorSliderControl(weld::DrawingArea* pDrawingArea) , mnLevel( 0 ) , mdValue( -1.0 ) { - m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_char_width() * 3, -1); + m_xDrawingArea->set_size_request(m_xDrawingArea->get_approximate_digit_width() * 3, -1); m_xDrawingArea->connect_size_allocate(LINK(this, ColorSliderControl, DoResize)); m_xDrawingArea->connect_draw(LINK(this, ColorSliderControl, DoPaint)); m_xDrawingArea->connect_mouse_press(LINK(this, ColorSliderControl, DoButtonDown)); diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index e2cec1c195dd..4b766ccd797a 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -1138,6 +1138,7 @@ public: */ long GetTextHeight() const; float approximate_char_width() const; + float approximate_digit_width() const; void DrawTextArray( const Point& rStartPt, const OUString& rStr, const long* pDXAry, diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 98c53f882e2f..eb1f8501cf04 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -42,7 +42,7 @@ public: } virtual void set_size_request(int nWidth, int nHeight) = 0; virtual Size get_preferred_size() const = 0; - virtual float get_approximate_char_width() const = 0; + virtual float get_approximate_digit_width() const = 0; virtual int get_text_height() const = 0; virtual Size get_pixel_size(const OUString& rText) const = 0; virtual OString get_buildable_name() const = 0; diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx index be99751c9a05..ef6fbf939a93 100644 --- a/sfx2/source/doc/new.cxx +++ b/sfx2/source/doc/new.cxx @@ -253,7 +253,7 @@ SfxNewFileDialog::SfxNewFileDialog(weld::Window *pParent, SfxNewFileDialogMode n , m_sLoadTemplate(m_xAltTitleFt->get_label()) , m_nFlags(nFlags) { - const int nWidth = m_xRegionLb->get_approximate_char_width() * 32; + const int nWidth = m_xRegionLb->get_approximate_digit_width() * 32; const int nHeight = m_xRegionLb->get_height_rows(8); m_xRegionLb->set_size_request(nWidth, nHeight); m_xTemplateLb->set_size_request(nWidth, nHeight); diff --git a/sfx2/source/doc/saveastemplatedlg.cxx b/sfx2/source/doc/saveastemplatedlg.cxx index e1f8101fa78d..76a647e94fa6 100644 --- a/sfx2/source/doc/saveastemplatedlg.cxx +++ b/sfx2/source/doc/saveastemplatedlg.cxx @@ -49,7 +49,7 @@ SfxSaveAsTemplateDialog::SfxSaveAsTemplateDialog(weld::Window* pParent, const un m_xTemplateNameEdit->connect_changed(LINK(this, SfxSaveAsTemplateDialog, TemplateNameEditHdl)); m_xLBCategory->connect_changed(LINK(this, SfxSaveAsTemplateDialog, SelectCategoryHdl)); - m_xLBCategory->set_size_request(m_xLBCategory->get_approximate_char_width() * 32, + m_xLBCategory->set_size_request(m_xLBCategory->get_approximate_digit_width() * 32, m_xLBCategory->get_height_rows(8)); m_xOKButton->connect_clicked(LINK(this, SfxSaveAsTemplateDialog, OkClickHdl)); diff --git a/sw/source/ui/table/instable.cxx b/sw/source/ui/table/instable.cxx index 535ba075a15c..1b1f46f52be5 100644 --- a/sw/source/ui/table/instable.cxx +++ b/sw/source/ui/table/instable.cxx @@ -77,7 +77,7 @@ SwInsTableDlg::SwInsTableDlg(SwView& rView) , pTAutoFormat(nullptr) , nEnteredValRepeatHeaderNF(-1) { - const int nWidth = m_xLbFormat->get_approximate_char_width() * 32; + const int nWidth = m_xLbFormat->get_approximate_digit_width() * 32; const int nHeight = m_xLbFormat->get_height_rows(8); m_xLbFormat->set_size_request(nWidth, nHeight); m_xWndPreview->set_size_request(nWidth, nHeight); diff --git a/sw/source/ui/table/tautofmt.cxx b/sw/source/ui/table/tautofmt.cxx index 97034075c537..68e5ba5b46c5 100644 --- a/sw/source/ui/table/tautofmt.cxx +++ b/sw/source/ui/table/tautofmt.cxx @@ -83,7 +83,7 @@ SwAutoFormatDlg::SwAutoFormatDlg(weld::Window* pParent, SwWrtShell* pWrtShell, m_xWndPreview->DetectRTL(pWrtShell); m_xTableTable->Load(); - const int nWidth = m_xLbFormat->get_approximate_char_width() * 32; + const int nWidth = m_xLbFormat->get_approximate_digit_width() * 32; const int nHeight = m_xLbFormat->get_height_rows(8); m_xLbFormat->set_size_request(nWidth, nHeight); m_xWndPreview->set_size_request(nWidth, nHeight); diff --git a/sw/source/uibase/dialog/SignatureLineDialog.cxx b/sw/source/uibase/dialog/SignatureLineDialog.cxx index 815636d86ab9..2b0f48a42703 100644 --- a/sw/source/uibase/dialog/SignatureLineDialog.cxx +++ b/sw/source/uibase/dialog/SignatureLineDialog.cxx @@ -47,7 +47,7 @@ SignatureLineDialog::SignatureLineDialog(weld::Window* pParent, SwView& rView) , m_xCheckboxShowSignDate(m_xBuilder->weld_check_button("checkbox_show_sign_date")) , mrView(rView) { - m_xEditInstructions->set_size_request(m_xEditInstructions->get_approximate_char_width() * 24, + m_xEditInstructions->set_size_request(m_xEditInstructions->get_approximate_digit_width() * 48, m_xEditInstructions->get_text_height() * 5); // No signature line selected - start with empty dialog and generate a new one diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index ffcb468a458e..ed2f3b2d08cf 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -238,9 +238,9 @@ public: return m_xWidget->get_preferred_size(); } - virtual float get_approximate_char_width() const override + virtual float get_approximate_digit_width() const override { - return m_xWidget->approximate_char_width(); + return m_xWidget->approximate_digit_width(); } virtual int get_text_height() const override diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index f51dbabc558c..204feccc9da6 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -935,9 +935,17 @@ long OutputDevice::GetTextHeight() const float OutputDevice::approximate_char_width() const { + //note pango uses "The quick brown fox jumps over the lazy dog." for english + //and has a bunch of per-language strings which corresponds somewhat with + //makeRepresentativeText in include/svtools/sampletext.hxx return GetTextWidth("aemnnxEM") / 8.0; } +float OutputDevice::approximate_digit_width() const +{ + return GetTextWidth("0123456789") / 10.0; +} + void OutputDevice::DrawTextArray( const Point& rStartPt, const OUString& rStr, const long* pDXAry, sal_Int32 nIndex, sal_Int32 nLen, SalLayoutFlags flags ) diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 064c91a825f8..1c1f63e7cdf6 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -173,7 +173,7 @@ namespace weld m_xSpinButton->get_range(min, max); auto width = std::max(m_xSpinButton->get_pixel_size(format_number(min)).Width(), m_xSpinButton->get_pixel_size(format_number(max)).Width()); - int chars = ceil(width / m_xSpinButton->get_approximate_char_width()); + int chars = ceil(width / m_xSpinButton->get_approximate_digit_width()); m_xSpinButton->set_width_chars(chars); } diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 3b54fbbb3415..e249a21dc5aa 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -1238,17 +1238,16 @@ public: return Size(size.width, size.height); } - virtual float get_approximate_char_width() const override + virtual float get_approximate_digit_width() const override { PangoContext* pContext = gtk_widget_get_pango_context(m_pWidget); PangoFontMetrics* pMetrics = pango_context_get_metrics(pContext, pango_context_get_font_description(pContext), pango_context_get_language(pContext)); - float nCharWidth = pango_font_metrics_get_approximate_char_width(pMetrics); float nDigitWidth = pango_font_metrics_get_approximate_digit_width(pMetrics); pango_font_metrics_unref(pMetrics); - return std::max(nCharWidth, nDigitWidth) / PANGO_SCALE; + return nDigitWidth / PANGO_SCALE; } virtual int get_text_height() const override |