summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-11-18 10:00:51 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-11-18 15:07:22 +0100
commit7f5a87c501ba1291a93bf330cc1a1de19ea1d89c (patch)
tree88cfd3e6f33c8685087e8851180271b80caeb462 /vcl
parent2a9e6792b85bd7f747f74da62d575720469485f3 (diff)
tdf#138271 send value-changed on FormattedSpinButton losing focus
Change-Id: Iaa6882f41ee756b0645818694f6942d90243ba13 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106049 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/salvtables.cxx24
1 files changed, 23 insertions, 1 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index caf7a5f5fafd..e866997880b8 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -5486,6 +5486,10 @@ class SalInstanceFormattedSpinButton : public SalInstanceEntry,
private:
VclPtr<FormattedField> m_xButton;
weld::EntryFormatter* m_pFormatter;
+ Link<weld::Widget&, void> m_aLoseFocusHdl;
+
+ DECL_LINK(UpDownHdl, SpinField&, void);
+ DECL_LINK(LoseFocusHdl, Control&, void);
public:
SalInstanceFormattedSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder,
@@ -5494,6 +5498,9 @@ public:
, m_xButton(pButton)
, m_pFormatter(nullptr)
{
+ m_xButton->SetUpHdl(LINK(this, SalInstanceFormattedSpinButton, UpDownHdl));
+ m_xButton->SetDownHdl(LINK(this, SalInstanceFormattedSpinButton, UpDownHdl));
+ m_xButton->SetLoseFocusHdl(LINK(this, SalInstanceFormattedSpinButton, LoseFocusHdl));
}
virtual void set_text(const OUString& rText) override
@@ -5517,7 +5524,7 @@ public:
{
if (!m_pFormatter) // once a formatter is set, it takes over "focus-out"
{
- SalInstanceEntry::connect_focus_out(rLink);
+ m_aLoseFocusHdl = rLink;
return;
}
m_pFormatter->connect_focus_out(rLink);
@@ -5548,8 +5555,23 @@ public:
{
return m_xButton->GetFormatter();
}
+
+ virtual ~SalInstanceFormattedSpinButton() override
+ {
+ m_xButton->SetLoseFocusHdl(Link<Control&, void>());
+ m_xButton->SetDownHdl(Link<SpinField&, void>());
+ m_xButton->SetUpHdl(Link<SpinField&, void>());
+ }
};
+IMPL_LINK_NOARG(SalInstanceFormattedSpinButton, UpDownHdl, SpinField&, void) { signal_value_changed(); }
+
+IMPL_LINK_NOARG(SalInstanceFormattedSpinButton, LoseFocusHdl, Control&, void)
+{
+ signal_value_changed();
+ m_aLoseFocusHdl.Call(*this);
+}
+
}
SalInstanceLabel::SalInstanceLabel(Control* pLabel, SalInstanceBuilder* pBuilder,