diff options
author | Caolán McNamara <caolanm@redhat.com> | 2022-02-03 19:59:25 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2022-02-04 11:21:00 +0100 |
commit | ea771e85b2302829394df545bb82c02bff2750c2 (patch) | |
tree | 8ff097ea232a02968ee5e1312fb24b3d11507065 /vcl | |
parent | f2d62b11cd7d47925fd098b3947726313d6b296e (diff) |
Resolves: tdf#146997 use sal_Int64 instead of sal_Int32 for spinbutton values
for these cases where draw wants to massively scale the units
the underlying "metric conversion" are already using sal_Int64 anyway
Change-Id: I94e120d72644319548f75b2f68cfe60d4829a2e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129356
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/jsdialog/jsdialogbuilder.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/salvtables.hxx | 12 | ||||
-rw-r--r-- | vcl/jsdialog/jsdialogbuilder.cxx | 2 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 14 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 22 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtkinst.cxx | 12 |
6 files changed, 30 insertions, 34 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index e4f3227fd7ba..ca45a53c1e76 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -529,7 +529,7 @@ public: JSSpinButton(JSDialogSender* pSender, ::FormattedField* pSpin, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_value(int value) override; + virtual void set_value(sal_Int64 value) override; }; class JSMessageDialog final : public JSWidget<SalInstanceMessageDialog, ::MessageDialog> diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index b6573d2cf489..b4822d7c60e8 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -625,21 +625,21 @@ private: DECL_LINK(InputHdl, sal_Int64*, TriState); DECL_LINK(ActivateHdl, Edit&, bool); - double toField(int nValue) const; + double toField(sal_Int64 nValue) const; - int fromField(double fValue) const; + sal_Int64 fromField(double fValue) const; public: SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual int get_value() const override; + virtual sal_Int64 get_value() const override; - virtual void set_value(int value) override; + virtual void set_value(sal_Int64 value) override; - virtual void set_range(int min, int max) override; + virtual void set_range(sal_Int64 min, sal_Int64 max) override; - virtual void get_range(int& min, int& max) const override; + virtual void get_range(sal_Int64& min, sal_Int64& max) const override; virtual void set_increments(int step, int /*page*/) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index f527867c81b4..b6eac0bf126a 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1302,7 +1302,7 @@ JSSpinButton::JSSpinButton(JSDialogSender* pSender, ::FormattedField* pSpin, { } -void JSSpinButton::set_value(int value) +void JSSpinButton::set_value(sal_Int64 value) { SalInstanceSpinButton::set_value(value); sendUpdate(true); // if input is limited we can receive the same JSON diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 6c7c08600f3a..bf67487901e9 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -5486,14 +5486,14 @@ IMPL_LINK(SalInstanceIconView, CommandHdl, const CommandEvent&, rEvent, bool) return m_aCommandHdl.Call(rEvent); } -double SalInstanceSpinButton::toField(int nValue) const +double SalInstanceSpinButton::toField(sal_Int64 nValue) const { return static_cast<double>(nValue) / Power10(get_digits()); } -int SalInstanceSpinButton::fromField(double fValue) const +sal_Int64 SalInstanceSpinButton::fromField(double fValue) const { - return FRound(fValue * Power10(get_digits())); + return std::round(fValue * Power10(get_digits())); } SalInstanceSpinButton::SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, @@ -5514,17 +5514,17 @@ SalInstanceSpinButton::SalInstanceSpinButton(FormattedField* pButton, SalInstanc m_xButton->SetActivateHdl(LINK(this, SalInstanceSpinButton, ActivateHdl)); } -int SalInstanceSpinButton::get_value() const { return fromField(m_rFormatter.GetValue()); } +sal_Int64 SalInstanceSpinButton::get_value() const { return fromField(m_rFormatter.GetValue()); } -void SalInstanceSpinButton::set_value(int value) { m_rFormatter.SetValue(toField(value)); } +void SalInstanceSpinButton::set_value(sal_Int64 value) { m_rFormatter.SetValue(toField(value)); } -void SalInstanceSpinButton::set_range(int min, int max) +void SalInstanceSpinButton::set_range(sal_Int64 min, sal_Int64 max) { m_rFormatter.SetMinValue(toField(min)); m_rFormatter.SetMaxValue(toField(max)); } -void SalInstanceSpinButton::get_range(int& min, int& max) const +void SalInstanceSpinButton::get_range(sal_Int64& min, sal_Int64& max) const { min = fromField(m_rFormatter.GetMinValue()); max = fromField(m_rFormatter.GetMaxValue()); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 03620bc4a992..9a5b1271a6f8 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -254,7 +254,7 @@ namespace weld void MetricSpinButton::update_width_chars() { - int min, max; + sal_Int64 min, max; 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()); @@ -270,11 +270,12 @@ namespace weld return nValue; } - int SpinButton::denormalize(int nValue) const + sal_Int64 SpinButton::denormalize(sal_Int64 nValue) const { const int nFactor = Power10(get_digits()); - if ((nValue < (SAL_MIN_INT32 + nFactor)) || (nValue > (SAL_MAX_INT32 - nFactor))) + if ((nValue < (std::numeric_limits<sal_Int64>::min() + nFactor)) || + (nValue > (std::numeric_limits<sal_Int64>::max() - nFactor))) { return nValue / nFactor; } @@ -286,7 +287,7 @@ namespace weld return (nValue + nHalf) / nFactor; } - OUString MetricSpinButton::format_number(int nValue) const + OUString MetricSpinButton::format_number(sal_Int64 nValue) const { OUString aStr; @@ -334,7 +335,7 @@ namespace weld { int step, page; get_increments(step, page, m_eSrcUnit); - int value = get_value(m_eSrcUnit); + sal_Int64 value = get_value(m_eSrcUnit); m_xSpinButton->set_digits(digits); set_increments(step, page, m_eSrcUnit); set_value(value, m_eSrcUnit); @@ -347,7 +348,7 @@ namespace weld { int step, page; get_increments(step, page, m_eSrcUnit); - int value = get_value(m_eSrcUnit); + sal_Int64 value = get_value(m_eSrcUnit); m_eSrcUnit = eUnit; set_increments(step, page, m_eSrcUnit); set_value(value, m_eSrcUnit); @@ -356,14 +357,9 @@ namespace weld } } - int MetricSpinButton::ConvertValue(int nValue, FieldUnit eInUnit, FieldUnit eOutUnit) const + sal_Int64 MetricSpinButton::ConvertValue(sal_Int64 nValue, FieldUnit eInUnit, FieldUnit eOutUnit) const { - auto nRet = vcl::ConvertValue(nValue, 0, m_xSpinButton->get_digits(), eInUnit, eOutUnit); - if (nRet > SAL_MAX_INT32) - nRet = SAL_MAX_INT32; - else if (nRet < SAL_MIN_INT32) - nRet = SAL_MIN_INT32; - return nRet; + return vcl::ConvertValue(nValue, 0, m_xSpinButton->get_digits(), eInUnit, eOutUnit); } IMPL_LINK(MetricSpinButton, spin_button_input, int*, result, bool) diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 0201fb1cd273..fd6a66ea371e 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -16433,12 +16433,12 @@ private: GtkInstanceEditable::signal_activate(); } - double toGtk(int nValue) const + double toGtk(sal_Int64 nValue) const { return static_cast<double>(nValue) / Power10(get_digits()); } - int fromGtk(double fValue) const + sal_Int64 fromGtk(double fValue) const { return FRound(fValue * Power10(get_digits())); } @@ -16459,12 +16459,12 @@ public: #endif } - virtual int get_value() const override + virtual sal_Int64 get_value() const override { return fromGtk(gtk_spin_button_get_value(m_pButton)); } - virtual void set_value(int value) override + virtual void set_value(sal_Int64 value) override { disable_notify_events(); m_bBlank = false; @@ -16507,14 +16507,14 @@ public: enable_notify_events(); } - virtual void set_range(int min, int max) override + virtual void set_range(sal_Int64 min, sal_Int64 max) override { disable_notify_events(); gtk_spin_button_set_range(m_pButton, toGtk(min), toGtk(max)); enable_notify_events(); } - virtual void get_range(int& min, int& max) const override + virtual void get_range(sal_Int64& min, sal_Int64& max) const override { double gtkmin, gtkmax; gtk_spin_button_get_range(m_pButton, >kmin, >kmax); |