diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-11-18 10:00:51 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-11-18 15:07:22 +0100 |
commit | 7f5a87c501ba1291a93bf330cc1a1de19ea1d89c (patch) | |
tree | 88cfd3e6f33c8685087e8851180271b80caeb462 /vcl/source/app | |
parent | 2a9e6792b85bd7f747f74da62d575720469485f3 (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/source/app')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 24 |
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, |