include/vcl/weld/IconView.hxx | 8 -------- include/vcl/weld/ItemView.hxx | 4 ++++ include/vcl/weld/TreeView.hxx | 10 ++-------- vcl/inc/qt5/QtInstanceIconView.hxx | 1 - vcl/inc/qt5/QtInstanceItemView.hxx | 2 ++ vcl/inc/qt5/QtInstanceTreeView.hxx | 2 +- vcl/inc/salvtables.hxx | 7 +++---- vcl/qt5/QtInstanceIconView.cxx | 9 --------- vcl/qt5/QtInstanceItemView.cxx | 7 +++++++ vcl/qt5/QtInstanceTreeView.cxx | 7 ------- vcl/source/app/salvtables.cxx | 18 ++++++------------ vcl/source/weld/ItemView.cxx | 7 +++++++ 12 files changed, 32 insertions(+), 50 deletions(-)
New commits: commit 0e4d50d73b65873ce61b6d3e864d042026c4f244 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Dec 19 23:57:01 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Dec 20 06:47:57 2025 +0100 vcl weld: Deduplicate ItemView::do_set_cursor impls The SalInstanceTreeView and SalInstanceIconView implementations are the same, so deduplicate them by moving to the common base class. Change-Id: I7d1194880b1650320eeb9060fe3ddc0fd5ed3ef0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195945 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 93a22e695ea3..3fc07ec50f5b 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1496,6 +1496,8 @@ protected: SalInstanceItemView(SvTreeListBox* pTreeListBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership); + virtual void do_set_cursor(const weld::TreeIter& rIter) override; + virtual void do_select(const weld::TreeIter& rIter) override; virtual void do_unselect(const weld::TreeIter& rIter) override; @@ -1651,6 +1653,7 @@ public: virtual int get_cursor_index() const override; + using SalInstanceItemView::do_set_cursor; virtual void do_set_cursor(int pos) override; virtual void do_scroll_to_row(int pos) override; @@ -1753,8 +1756,6 @@ public: virtual bool get_cursor(weld::TreeIter* pIter) const override; - virtual void do_set_cursor(const weld::TreeIter& rIter) override; - bool get_iter_abs_pos(weld::TreeIter& rIter, int nPos) const; virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override; @@ -1943,8 +1944,6 @@ public: virtual bool get_cursor(weld::TreeIter* pIter) const override; - virtual void do_set_cursor(const weld::TreeIter& rIter) override; - virtual void do_scroll_to_item(const weld::TreeIter& rIter) override; virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index c0eb1a29c592..f63b78b040dd 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3592,6 +3592,12 @@ int SalInstanceItemView::n_children() const return m_pTreeListBox->GetModel()->GetChildList(nullptr).size(); } +void SalInstanceItemView::do_set_cursor(const weld::TreeIter& rIter) +{ + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + m_pTreeListBox->SetCurEntry(rVclIter.iter); +} + void SalInstanceItemView::do_select(const weld::TreeIter& rIter) { assert(m_pTreeListBox->IsUpdateMode() @@ -4592,12 +4598,6 @@ bool SalInstanceTreeView::get_cursor(weld::TreeIter* pIter) const return pEntry != nullptr; } -void SalInstanceTreeView::do_set_cursor(const weld::TreeIter& rIter) -{ - const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); - m_xTreeView->SetCurEntry(rVclIter.iter); -} - bool SalInstanceTreeView::get_iter_abs_pos(weld::TreeIter& rIter, int nAbsPos) const { SalInstanceTreeIter& rVclIter = static_cast<SalInstanceTreeIter&>(rIter); @@ -5409,12 +5409,6 @@ bool SalInstanceIconView::get_cursor(weld::TreeIter* pIter) const return pEntry != nullptr; } -void SalInstanceIconView::do_set_cursor(const weld::TreeIter& rIter) -{ - const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); - m_xIconView->SetCurEntry(rVclIter.iter); -} - void SalInstanceIconView::do_scroll_to_item(const weld::TreeIter& rIter) { assert(m_xIconView->IsUpdateMode() commit 678baa804af050799a7f00fa9f83978a49d40918 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Dec 19 23:47:19 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Dec 20 06:47:50 2025 +0100 tdf#130857 qt weld: Move do_set_cursor impl to QtInstanceItemView Move the QtInstanceTreeView logic to the common base class and drop the overrides. The QtInstanceIconView implementation seems only to be different because it was originally the same as the QtInstanceTreeView one, but then not updated while the QtInstanceTreeView one was in commit 08c8f9483312b531d7184785633f8121821d9725 Author: Michael Weghorn <[email protected]> Date: Fri Feb 21 19:42:57 2025 +0100 tdf#130857 qt weld: Also select item in QtInstanceTreeView::set_cursor and commit 8ebcedc3562514bfe48a3bec19324503f619738b Author: Michael Weghorn <[email protected]> Date: Wed Aug 13 11:14:17 2025 +0200 tdf#130857 qt weld: Simplify QtInstanceTreeView::set_cursor Change-Id: Ib28af146382ee670c142de9765483568362cc5b9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195944 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtInstanceIconView.hxx b/vcl/inc/qt5/QtInstanceIconView.hxx index 675c8f458dcb..3d49a4689123 100644 --- a/vcl/inc/qt5/QtInstanceIconView.hxx +++ b/vcl/inc/qt5/QtInstanceIconView.hxx @@ -59,7 +59,6 @@ public: virtual bool get_selected(weld::TreeIter* pIter) const override; virtual bool get_cursor(weld::TreeIter* pIter) const override; - virtual void do_set_cursor(const weld::TreeIter& rIter) override; virtual OUString get_id(const weld::TreeIter& rIter) const override; virtual OUString get_text(const weld::TreeIter& rIter) const override; virtual void do_scroll_to_item(const weld::TreeIter& rIter) override; diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx b/vcl/inc/qt5/QtInstanceItemView.hxx index aad7eba1f839..1b0a7a24bb30 100644 --- a/vcl/inc/qt5/QtInstanceItemView.hxx +++ b/vcl/inc/qt5/QtInstanceItemView.hxx @@ -24,6 +24,8 @@ class QtInstanceItemView : public QtInstanceWidget, public virtual weld::ItemVie QAbstractItemModel& m_rModel; protected: + virtual void do_set_cursor(const weld::TreeIter& rIter) override; + virtual void do_select_all() override; virtual void do_unselect_all() override; diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx b/vcl/inc/qt5/QtInstanceTreeView.hxx index 3e9ee8dc5633..050ec3d77a0c 100644 --- a/vcl/inc/qt5/QtInstanceTreeView.hxx +++ b/vcl/inc/qt5/QtInstanceTreeView.hxx @@ -77,6 +77,7 @@ public: virtual void do_scroll_to_row(int nRow) override; virtual bool is_selected(int nPos) const override; virtual int get_cursor_index() const override; + using QtInstanceItemView::do_set_cursor; virtual void do_set_cursor(int pos) override; virtual int find_text(const OUString& rText) const override; @@ -86,7 +87,6 @@ public: virtual void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& rDest) const override; virtual bool get_selected(weld::TreeIter* pIter) const override; virtual bool get_cursor(weld::TreeIter* pIter) const override; - virtual void do_set_cursor(const weld::TreeIter& rIter) override; virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override; virtual bool iter_next(weld::TreeIter& rIter) const override; virtual bool iter_previous(weld::TreeIter& rIter) const override; diff --git a/vcl/qt5/QtInstanceIconView.cxx b/vcl/qt5/QtInstanceIconView.cxx index ee3ed59d94f8..faaefa89b343 100644 --- a/vcl/qt5/QtInstanceIconView.cxx +++ b/vcl/qt5/QtInstanceIconView.cxx @@ -219,15 +219,6 @@ bool QtInstanceIconView::get_cursor(weld::TreeIter*) const return false; } -void QtInstanceIconView::do_set_cursor(const weld::TreeIter& rIter) -{ - SolarMutexGuard g; - - GetQtInstance().RunInMainThread([&] { - m_pSelectionModel->setCurrentIndex(modelIndex(rIter), QItemSelectionModel::NoUpdate); - }); -} - OUString QtInstanceIconView::get_id(const weld::TreeIter& rIter) const { SolarMutexGuard g; diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx index 1971c310a473..9ec91e19244c 100644 --- a/vcl/qt5/QtInstanceItemView.cxx +++ b/vcl/qt5/QtInstanceItemView.cxx @@ -62,6 +62,13 @@ std::unique_ptr<weld::TreeIter> QtInstanceItemView::get_iterator(int nPos) const return {}; } +void QtInstanceItemView::do_set_cursor(const weld::TreeIter& rIter) +{ + SolarMutexGuard g; + + GetQtInstance().RunInMainThread([&] { getItemView().setCurrentIndex(modelIndex(rIter)); }); +} + void QtInstanceItemView::do_select_all() { SolarMutexGuard g; diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx index 3eee457463c5..ae3d982a08cb 100644 --- a/vcl/qt5/QtInstanceTreeView.cxx +++ b/vcl/qt5/QtInstanceTreeView.cxx @@ -370,13 +370,6 @@ bool QtInstanceTreeView::get_cursor(weld::TreeIter* pIter) const return bRet; } -void QtInstanceTreeView::do_set_cursor(const weld::TreeIter& rIter) -{ - SolarMutexGuard g; - - GetQtInstance().RunInMainThread([&] { m_pTreeView->setCurrentIndex(modelIndex(rIter)); }); -} - bool QtInstanceTreeView::iter_previous_sibling(weld::TreeIter& rIter) const { QtInstanceTreeIter& rQtIter = static_cast<QtInstanceTreeIter&>(rIter); commit 2c178721caa037951f8dab2b865856c8f2849d25 Author: Michael Weghorn <[email protected]> AuthorDate: Fri Dec 19 23:39:07 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Dec 20 06:47:43 2025 +0100 weld: Move iter-based set_cursor to weld::ItemView base Both, weld::TreeView and weld::ItemView have such a method. Move it to the base class. Change-Id: I54d462a0c45b2a4b3669e2c74cde60747ba84ec8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195943 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/vcl/weld/IconView.hxx b/include/vcl/weld/IconView.hxx index fadb1a1dd742..9647ab20756e 100644 --- a/include/vcl/weld/IconView.hxx +++ b/include/vcl/weld/IconView.hxx @@ -54,7 +54,6 @@ protected: TreeIter* pRet) = 0; virtual void do_remove(int pos) = 0; - virtual void do_set_cursor(const TreeIter& rIter) = 0; virtual void do_scroll_to_item(const TreeIter& rIter) = 0; public: @@ -138,13 +137,6 @@ public: std::unique_ptr<weld::TreeIter> get_item_at_pos(const Point& rPos); - void set_cursor(const TreeIter& rIter) - { - disable_notify_events(); - do_set_cursor(rIter); - enable_notify_events(); - } - virtual OUString get_id(const TreeIter& rIter) const = 0; virtual OUString get_text(const TreeIter& rIter) const = 0; diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx index 2ad2e7c81192..37f4db46ca65 100644 --- a/include/vcl/weld/ItemView.hxx +++ b/include/vcl/weld/ItemView.hxx @@ -20,6 +20,8 @@ class VCL_DLLPUBLIC ItemView : virtual public Widget OUString m_sSavedValue; protected: + virtual void do_set_cursor(const TreeIter& rIter) = 0; + virtual void do_select(const TreeIter& rIter) = 0; virtual void do_unselect(const TreeIter& rIter) = 0; @@ -43,7 +45,9 @@ public: virtual OUString get_selected_text() const = 0; virtual bool get_selected(TreeIter* pIter) const = 0; + virtual bool get_cursor(TreeIter* pIter) const = 0; + void set_cursor(const TreeIter& rIter); // Don't select when frozen, select after thaw. Note selection doesn't survive a freeze. void select(int pos); diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx index 572c06d69fd3..0fb38cc095ae 100644 --- a/include/vcl/weld/TreeView.hxx +++ b/include/vcl/weld/TreeView.hxx @@ -131,8 +131,8 @@ protected: virtual void do_insert_separator(int pos, const OUString& rId) = 0; virtual void do_remove(int pos) = 0; virtual void do_scroll_to_row(int row) = 0; + using weld::ItemView::do_set_cursor; virtual void do_set_cursor(int pos) = 0; - virtual void do_set_cursor(const TreeIter& rIter) = 0; virtual void do_remove(const TreeIter& rIter) = 0; virtual void do_scroll_to_row(const TreeIter& rIter) = 0; virtual void do_set_children_on_demand(const TreeIter& rIter, bool bChildrenOnDemand) = 0; @@ -272,6 +272,7 @@ public: virtual bool is_selected(int pos) const = 0; virtual int get_cursor_index() const = 0; + using weld::ItemView::set_cursor; void set_cursor(int pos) { disable_notify_events(); @@ -304,13 +305,6 @@ public: //via iter virtual void copy_iterator(const TreeIter& rSource, TreeIter& rDest) const = 0; - void set_cursor(const TreeIter& rIter) - { - disable_notify_events(); - do_set_cursor(rIter); - enable_notify_events(); - } - // set iter to point to previous node at the current level virtual bool iter_previous_sibling(TreeIter& rIter) const = 0; // set iter to point to next node, depth first, then sibling diff --git a/vcl/source/weld/ItemView.cxx b/vcl/source/weld/ItemView.cxx index 9c260b94078a..710e9dd20f05 100644 --- a/vcl/source/weld/ItemView.cxx +++ b/vcl/source/weld/ItemView.cxx @@ -11,6 +11,13 @@ namespace weld { +void ItemView::set_cursor(const TreeIter& rIter) +{ + disable_notify_events(); + do_set_cursor(rIter); + enable_notify_events(); +} + void ItemView::select(int pos) { if (pos == -1 || (pos == 0 && n_children() == 0))
