Kaydet (Commit) ca1ed645 authored tarafından Caolán McNamara's avatar Caolán McNamara

use digit width instead of char width

its the same across backends

Change-Id: I37c83cbf1139babcd014c7cfdee06a13bea845c7
Reviewed-on: https://gerrit.libreoffice.org/51423Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst d416fa9a
......@@ -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));
......
......@@ -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,
......
......@@ -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;
......
......@@ -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);
......
......@@ -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));
......
......@@ -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);
......
......@@ -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);
......
......@@ -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
......
......@@ -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
......
......@@ -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 )
......
......@@ -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);
}
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment