summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-02-03 19:59:25 +0000
committerCaolán McNamara <caolanm@redhat.com>2022-02-04 11:21:00 +0100
commitea771e85b2302829394df545bb82c02bff2750c2 (patch)
tree8ff097ea232a02968ee5e1312fb24b3d11507065 /vcl
parentf2d62b11cd7d47925fd098b3947726313d6b296e (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.hxx2
-rw-r--r--vcl/inc/salvtables.hxx12
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx2
-rw-r--r--vcl/source/app/salvtables.cxx14
-rw-r--r--vcl/source/window/builder.cxx22
-rw-r--r--vcl/unx/gtk3/gtkinst.cxx12
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, &gtkmin, &gtkmax);