vcl/inc/jsdialog/jsdialogbuilder.hxx | 1 + vcl/jsdialog/executor.cxx | 7 +++++-- vcl/jsdialog/jsdialogbuilder.cxx | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-)
New commits: commit 2c37c7f5cf27239d1084433e3592543e4905717d Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Mar 9 12:04:36 2023 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Fri Mar 10 12:59:07 2023 +0000 jsdialog: set text for textview on every key press for that we need to set text without sending back notification to not disturb user in typing we need to keep the selection at the same place Signed-off-by: Szymon Kłos <szymon.k...@collabora.com> Change-Id: Ib5c4a53e61dbc2cf28d450fb44fc5a2957ff57b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148533 diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 19458a938c02..0c6cbaa48080 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -666,6 +666,7 @@ public: JSTextView(JSDialogSender* pSender, ::VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, 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; }; diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index 017f2a8eb522..6eb92f105e72 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -361,12 +361,15 @@ bool ExecuteAction(const std::string& nWindowId, const OString& rWidget, StringM } } - auto pTextView = dynamic_cast<weld::TextView*>(pWidget); + auto pTextView = dynamic_cast<JSTextView*>(pWidget); if (pTextView) { if (sAction == "change") { - pTextView->set_text(rData["data"]); + int rStartPos, rEndPos; + pTextView->get_selection_bounds(rStartPos, rEndPos); + pTextView->set_text_without_notify(rData["data"]); + pTextView->select_region(rStartPos, rEndPos); LOKTrigger::trigger_changed(*pTextView); return true; } diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 2d73c26613da..3cfe67c3b56c 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1752,6 +1752,11 @@ void JSTextView::set_text(const OUString& rText) sendUpdate(); } +void JSTextView::set_text_without_notify(const OUString& rText) +{ + SalInstanceTextView::set_text(rText); +} + void JSTextView::replace_selection(const OUString& rText) { SalInstanceTextView::replace_selection(rText);