include/vcl/weld.hxx | 29 ++++++++++++++++++++++++++--- vcl/inc/jsdialog/jsdialogbuilder.hxx | 8 ++++---- vcl/inc/qt5/QtInstanceEntry.hxx | 2 +- vcl/inc/qt5/QtInstanceTextView.hxx | 4 ++-- vcl/inc/salvtables.hxx | 8 ++++---- vcl/jsdialog/jsdialogbuilder.cxx | 16 ++++++++-------- vcl/qt5/QtInstanceEntry.cxx | 2 +- vcl/qt5/QtInstanceTextView.cxx | 4 ++-- vcl/source/app/salvtables.cxx | 22 ++++------------------ vcl/unx/gtk3/gtkinst.cxx | 10 +++++----- 10 files changed, 57 insertions(+), 48 deletions(-)
New commits: commit 606cf07086b8c3ae008f9a41f44fffbef2fb19c6 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Oct 17 22:22:00 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon Oct 20 17:06:22 2025 +0200 tdf#130857 weld: Move signal blocking to Entry::set_text Apply the changes as described in Change-Id: If5fba408cc6638441e9856238b19659fed6d7e01 Author: Michael Weghorn <[email protected]> Date: Fri Oct 17 22:11:02 2025 +0200 tdf#130857 weld: Move signal blocking to TextView::select_region for this method as well. See the above-mentioned commit for more details/background. Change-Id: I17bf17b08050b9c3dc660e12c1b1ff4d560ad071 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192613 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index f2b654b499d1..4b65b3e2304e 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1849,8 +1849,16 @@ protected: m_aCursorPositionHdl.Call(*this); } + virtual void do_set_text(const OUString& rText) = 0; + public: - virtual void set_text(const OUString& rText) = 0; + void set_text(const OUString& rText) + { + disable_notify_events(); + do_set_text(rText); + enable_notify_events(); + } + virtual OUString get_text() const = 0; virtual void set_width_chars(int nChars) = 0; virtual int get_width_chars() const = 0; diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 6cd95016b5ac..20c86f4a6783 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -515,7 +515,7 @@ class JSEntry final : public JSWidget<SalInstanceEntry, ::Edit> public: JSEntry(JSDialogSender* pSender, ::Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; void set_text_without_notify(const OUString& rText); virtual void replace_selection(const OUString& rText) override; }; @@ -589,7 +589,7 @@ public: JSFormattedSpinButton(JSDialogSender* pSender, ::FormattedField* pSpin, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; void set_text_without_notify(const OUString& rText); }; diff --git a/vcl/inc/qt5/QtInstanceEntry.hxx b/vcl/inc/qt5/QtInstanceEntry.hxx index 32baf0c4ef6e..87a105c9b973 100644 --- a/vcl/inc/qt5/QtInstanceEntry.hxx +++ b/vcl/inc/qt5/QtInstanceEntry.hxx @@ -22,7 +22,7 @@ class QtInstanceEntry : public QtInstanceWidget, public virtual weld::Entry public: QtInstanceEntry(QLineEdit* pLineEdit); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; virtual OUString get_text() const override; virtual void set_width_chars(int nChars) override; virtual int get_width_chars() const override; diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 3ae2f4ab957a..8ea31f07b02f 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -608,7 +608,7 @@ private: public: SalInstanceEntry(::Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; virtual OUString get_text() const override; @@ -2244,7 +2244,7 @@ public: SalInstanceFormattedSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; virtual void connect_changed(const Link<weld::Entry&, void>& rLink) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 2f8ccd1e89a6..87f3bcf87f1a 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1222,9 +1222,9 @@ JSEntry::JSEntry(JSDialogSender* pSender, ::Edit* pEntry, SalInstanceBuilder* pB { } -void JSEntry::set_text(const OUString& rText) +void JSEntry::do_set_text(const OUString& rText) { - SalInstanceEntry::set_text(rText); + SalInstanceEntry::do_set_text(rText); sendUpdate(); } @@ -1415,9 +1415,9 @@ JSFormattedSpinButton::JSFormattedSpinButton(JSDialogSender* pSender, ::Formatte { } -void JSFormattedSpinButton::set_text(const OUString& rText) +void JSFormattedSpinButton::do_set_text(const OUString& rText) { - SalInstanceFormattedSpinButton::set_text(rText); + SalInstanceFormattedSpinButton::do_set_text(rText); sendUpdate(); } diff --git a/vcl/qt5/QtInstanceEntry.cxx b/vcl/qt5/QtInstanceEntry.cxx index 1ddfdd3ec3c4..50086730e872 100644 --- a/vcl/qt5/QtInstanceEntry.cxx +++ b/vcl/qt5/QtInstanceEntry.cxx @@ -26,7 +26,7 @@ QtInstanceEntry::QtInstanceEntry(QLineEdit* pLineEdit) &QtInstanceEntry::handleTextChanged); } -void QtInstanceEntry::set_text(const OUString& rText) +void QtInstanceEntry::do_set_text(const OUString& rText) { SolarMutexGuard g; GetQtInstance().RunInMainThread([&] { m_pLineEdit->setText(toQString(rText)); }); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 9241657a04e4..fd6741ad2cb1 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3308,12 +3308,7 @@ SalInstanceEntry::SalInstanceEntry(Edit* pEntry, SalInstanceBuilder* pBuilder, b m_xEntry->SetTextFilter(&m_aTextFilter); } -void SalInstanceEntry::set_text(const OUString& rText) -{ - disable_notify_events(); - m_xEntry->SetText(rText); - enable_notify_events(); -} +void SalInstanceEntry::do_set_text(const OUString& rText) { m_xEntry->SetText(rText); } OUString SalInstanceEntry::get_text() const { return m_xEntry->GetText(); } @@ -5819,11 +5814,9 @@ SalInstanceFormattedSpinButton::SalInstanceFormattedSpinButton(FormattedField* p m_xButton->SetLoseFocusHdl(LINK(this, SalInstanceFormattedSpinButton, LoseFocusHdl)); } -void SalInstanceFormattedSpinButton::set_text(const OUString& rText) +void SalInstanceFormattedSpinButton::do_set_text(const OUString& rText) { - disable_notify_events(); m_xButton->SpinField::SetText(rText); - enable_notify_events(); } void SalInstanceFormattedSpinButton::connect_changed(const Link<weld::Entry&, void>& rLink) diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index a0b60e21ecd3..f01596895441 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -13122,7 +13122,7 @@ public: { } - virtual void set_text(const OUString& rText) override + virtual void do_set_text(const OUString& rText) override { disable_notify_events(); #if GTK_CHECK_VERSION(4, 0, 0) @@ -17490,7 +17490,7 @@ public: enable_notify_events(); } - virtual void set_text(const OUString& rText) override + virtual void do_set_text(const OUString& rText) override { disable_notify_events(); // tdf#122786 if we're just formatting a value, then we're done, @@ -17666,7 +17666,7 @@ public: { } - virtual void set_text(const OUString& rText) override + virtual void do_set_text(const OUString& rText) override { GtkInstanceEditable::set_text(rText); Formatter& rFormatter = GetFormatter(); commit a202e06cc28b12b65b38f188092a9ed67ccda225 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Oct 17 22:16:28 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon Oct 20 17:06:16 2025 +0200 tdf#130857 weld: Move signal blocking to TextView::set_text Apply the changes as described in Change-Id: If5fba408cc6638441e9856238b19659fed6d7e01 Author: Michael Weghorn <[email protected]> Date: Fri Oct 17 22:11:02 2025 +0200 tdf#130857 weld: Move signal blocking to TextView::select_region for this method as well. See the above-mentioned commit for more details/background. Change-Id: I9908daff25c706844810a2b1a6b826602901f9f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192612 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index da985164b55f..f2b654b499d1 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -2498,11 +2498,18 @@ protected: void signal_vadjustment_value_changed() { m_aVValueChangeHdl.Call(*this); } + virtual void do_set_text(const OUString& rText) = 0; virtual void do_select_region(int nStartPos, int nEndPos) = 0; virtual void do_replace_selection(const OUString& rText) = 0; public: - virtual void set_text(const OUString& rText) = 0; + void set_text(const OUString& rText) + { + disable_notify_events(); + do_set_text(rText); + enable_notify_events(); + } + virtual OUString get_text() const = 0; // if nStartPos or nEndPos is -1 the max available text pos will be used diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 3a261b15a595..6cd95016b5ac 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -671,7 +671,7 @@ class JSTextView final : public JSWidget<SalInstanceTextView, ::VclMultiLineEdit public: JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; void set_text_without_notify(const OUString& rText); virtual void do_replace_selection(const OUString& rText) override; }; diff --git a/vcl/inc/qt5/QtInstanceTextView.hxx b/vcl/inc/qt5/QtInstanceTextView.hxx index 168c8a3c454c..458a41304c1c 100644 --- a/vcl/inc/qt5/QtInstanceTextView.hxx +++ b/vcl/inc/qt5/QtInstanceTextView.hxx @@ -22,7 +22,7 @@ class QtInstanceTextView : public QtInstanceWidget, public virtual weld::TextVie public: QtInstanceTextView(QPlainTextEdit* pTextEdit); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; virtual OUString get_text() const override; virtual void do_select_region(int nStartPos, int nEndPos) override; virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) override; diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 7d524a7399d9..3ae2f4ab957a 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1420,7 +1420,7 @@ public: SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership); - virtual void set_text(const OUString& rText) override; + virtual void do_set_text(const OUString& rText) override; virtual void do_replace_selection(const OUString& rText) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index a2cc45e8427d..2f8ccd1e89a6 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1663,9 +1663,9 @@ JSTextView::JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView, { } -void JSTextView::set_text(const OUString& rText) +void JSTextView::do_set_text(const OUString& rText) { - SalInstanceTextView::set_text(rText); + SalInstanceTextView::do_set_text(rText); sendUpdate(); } diff --git a/vcl/qt5/QtInstanceTextView.cxx b/vcl/qt5/QtInstanceTextView.cxx index 9a23836fcf84..3a446d7b59f1 100644 --- a/vcl/qt5/QtInstanceTextView.cxx +++ b/vcl/qt5/QtInstanceTextView.cxx @@ -31,7 +31,7 @@ QtInstanceTextView::QtInstanceTextView(QPlainTextEdit* pTextEdit) &QtInstanceTextView::handleVerticalScrollValueChanged); } -void QtInstanceTextView::set_text(const OUString& rText) +void QtInstanceTextView::do_set_text(const OUString& rText) { SolarMutexGuard g; GetQtInstance().RunInMainThread([&] { m_pTextEdit->setPlainText(toQString(rText)); }); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index befdf910ed30..9241657a04e4 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -5949,12 +5949,7 @@ SalInstanceTextView::SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanc rVertScrollBar.SetScrollHdl(LINK(this, SalInstanceTextView, VscrollHdl)); } -void SalInstanceTextView::set_text(const OUString& rText) -{ - disable_notify_events(); - m_xTextView->SetText(rText); - enable_notify_events(); -} +void SalInstanceTextView::do_set_text(const OUString& rText) { m_xTextView->SetText(rText); } void SalInstanceTextView::do_replace_selection(const OUString& rText) { diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 0b2c085050d3..a0b60e21ecd3 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -18040,7 +18040,7 @@ public: gtk_widget_set_size_request(m_pWidget, nWidth, nHeight); } - virtual void set_text(const OUString& rText) override + virtual void do_set_text(const OUString& rText) override { disable_notify_events(); OString sText(OUStringToOString(rText, RTL_TEXTENCODING_UTF8)); commit 1626dd9cbb2e12f921bccc8d4601e7fe884c32d9 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Oct 17 22:14:01 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon Oct 20 17:06:09 2025 +0200 tdf#130857 weld: Move signal blocking to TextView::replace_selection Apply the changes as described in Change-Id: If5fba408cc6638441e9856238b19659fed6d7e01 Author: Michael Weghorn <[email protected]> Date: Fri Oct 17 22:11:02 2025 +0200 tdf#130857 weld: Move signal blocking to TextView::select_region for this method as well. See the above-mentioned commit for more details/background. Change-Id: I1c8137347d0eb040e13d5697eb92366a2250d529 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192611 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index cd53b344d012..da985164b55f 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -2499,6 +2499,7 @@ protected: void signal_vadjustment_value_changed() { m_aVValueChangeHdl.Call(*this); } virtual void do_select_region(int nStartPos, int nEndPos) = 0; + virtual void do_replace_selection(const OUString& rText) = 0; public: virtual void set_text(const OUString& rText) = 0; @@ -2514,7 +2515,14 @@ public: // returns true if the selection has nonzero length virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) = 0; - virtual void replace_selection(const OUString& rText) = 0; + + void replace_selection(const OUString& rText) + { + disable_notify_events(); + do_replace_selection(rText); + enable_notify_events(); + } + virtual void set_editable(bool bEditable) = 0; virtual bool get_editable() const = 0; virtual void set_monospace(bool bMonospace) = 0; diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 102b11668b72..3a261b15a595 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -673,7 +673,7 @@ public: bool bTakeOwnership); virtual void set_text(const OUString& rText) override; void set_text_without_notify(const OUString& rText); - virtual void replace_selection(const OUString& rText) override; + virtual void do_replace_selection(const OUString& rText) override; }; class JSTreeView final : public JSWidget<SalInstanceTreeView, ::SvTabListBox> diff --git a/vcl/inc/qt5/QtInstanceTextView.hxx b/vcl/inc/qt5/QtInstanceTextView.hxx index 2167bc7f4ebb..168c8a3c454c 100644 --- a/vcl/inc/qt5/QtInstanceTextView.hxx +++ b/vcl/inc/qt5/QtInstanceTextView.hxx @@ -26,7 +26,7 @@ public: virtual OUString get_text() const override; virtual void do_select_region(int nStartPos, int nEndPos) override; virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) override; - virtual void replace_selection(const OUString& rText) override; + virtual void do_replace_selection(const OUString& rText) override; virtual void set_editable(bool bEditable) override; virtual bool get_editable() const override; virtual void set_monospace(bool bMonospace) override; diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 2a41cedd786d..7d524a7399d9 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1422,7 +1422,7 @@ public: virtual void set_text(const OUString& rText) override; - virtual void replace_selection(const OUString& rText) override; + virtual void do_replace_selection(const OUString& rText) override; virtual OUString get_text() const override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index d9c75cd016df..a2cc45e8427d 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1674,9 +1674,9 @@ void JSTextView::set_text_without_notify(const OUString& rText) SalInstanceTextView::set_text(rText); } -void JSTextView::replace_selection(const OUString& rText) +void JSTextView::do_replace_selection(const OUString& rText) { - SalInstanceTextView::replace_selection(rText); + SalInstanceTextView::do_replace_selection(rText); sendUpdate(); } diff --git a/vcl/qt5/QtInstanceTextView.cxx b/vcl/qt5/QtInstanceTextView.cxx index 6392b7d34bdf..9a23836fcf84 100644 --- a/vcl/qt5/QtInstanceTextView.cxx +++ b/vcl/qt5/QtInstanceTextView.cxx @@ -75,7 +75,7 @@ bool QtInstanceTextView::get_selection_bounds(int& rStartPos, int& rEndPos) return bHasSelection; } -void QtInstanceTextView::replace_selection(const OUString& rText) +void QtInstanceTextView::do_replace_selection(const OUString& rText) { SolarMutexGuard g; GetQtInstance().RunInMainThread([&] { m_pTextEdit->insertPlainText(toQString(rText)); }); diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index d14767c744ba..befdf910ed30 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -5956,11 +5956,9 @@ void SalInstanceTextView::set_text(const OUString& rText) enable_notify_events(); } -void SalInstanceTextView::replace_selection(const OUString& rText) +void SalInstanceTextView::do_replace_selection(const OUString& rText) { - disable_notify_events(); m_xTextView->ReplaceSelected(rText); - enable_notify_events(); } OUString SalInstanceTextView::get_text() const { return m_xTextView->GetText(); } diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index af1de02707e7..0b2c085050d3 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -18058,7 +18058,7 @@ public: return sRet; } - virtual void replace_selection(const OUString& rText) override + virtual void do_replace_selection(const OUString& rText) override { disable_notify_events(); gtk_text_buffer_delete_selection(m_pTextBuffer, false, gtk_text_view_get_editable(m_pTextView));
