extensions/uiconfig/spropctrlr/ui/combobox.ui | 8 ++++---- extensions/uiconfig/spropctrlr/ui/listbox.ui | 4 ++-- extensions/uiconfig/spropctrlr/ui/numericfield.ui | 8 ++++---- extensions/uiconfig/spropctrlr/ui/textfield.ui | 6 +++--- extensions/uiconfig/spropctrlr/ui/urlcontrol.ui | 8 ++++---- include/vcl/weld/TreeView.hxx | 2 +- vcl/inc/qt5/QtInstanceTreeView.hxx | 1 - vcl/qt5/QtInstanceBuilder.cxx | 9 +++++++++ vcl/qt5/QtInstanceTreeView.cxx | 6 ------ vcl/source/weld/TreeView.cxx | 21 +++++++++++++++++++++ 10 files changed, 48 insertions(+), 25 deletions(-)
New commits: commit 4591ca6f9ab6f0b3af7f4e196141d81db864ce26 Author: Michael Weghorn <[email protected]> AuthorDate: Tue Jan 20 19:04:59 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Jan 22 11:15:47 2026 +0100 tdf#130857: weld:: Add default TreeView::iter_compare impl Add a default implementation of weld::TreeView::iter_compare right in the base class, as weld::TreeView and weld::TreeIter provide the API required to implement the method. For now, use that implementation in QtInstanceTreeView, i.e. drop the override that would only trigger an assert. If it turns out to be necessary to have a more efficient implementation at some point, an override can still be added again later (that can then make direct use of relevant Qt API). Change-Id: Id098f85608f4f747c8f0bd4dd2eef01f0aba358d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197686 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/vcl/weld/TreeView.hxx b/include/vcl/weld/TreeView.hxx index 847142e95221..ebc32ffbef57 100644 --- a/include/vcl/weld/TreeView.hxx +++ b/include/vcl/weld/TreeView.hxx @@ -342,7 +342,7 @@ public: If b appears before a , then 1 is returned. If the two nodes are equal, then 0 is returned. */ - virtual int iter_compare(const TreeIter& a, const TreeIter& b) const = 0; + virtual int iter_compare(const TreeIter& rIterA, const TreeIter& rIterB) const; bool iter_has_child(const TreeIter& rIter) const; // returns the number of direct children rIter has virtual int iter_n_children(const TreeIter& rIter) const = 0; diff --git a/vcl/inc/qt5/QtInstanceTreeView.hxx b/vcl/inc/qt5/QtInstanceTreeView.hxx index b1606d884126..be22c9096286 100644 --- a/vcl/inc/qt5/QtInstanceTreeView.hxx +++ b/vcl/inc/qt5/QtInstanceTreeView.hxx @@ -66,7 +66,6 @@ public: virtual bool iter_parent(weld::TreeIter& rIter) const override; virtual int get_iter_depth(const weld::TreeIter& rIter) const override; - virtual int iter_compare(const weld::TreeIter& a, const weld::TreeIter& b) const override; virtual int iter_n_children(const weld::TreeIter& rIter) const override; virtual void set_extra_row_indent(const weld::TreeIter& rIter, int nIndentLevel) override; virtual void set_text(const weld::TreeIter& rIter, const OUString& rStr, diff --git a/vcl/qt5/QtInstanceTreeView.cxx b/vcl/qt5/QtInstanceTreeView.cxx index 98d765cdbc84..26372c298ccd 100644 --- a/vcl/qt5/QtInstanceTreeView.cxx +++ b/vcl/qt5/QtInstanceTreeView.cxx @@ -241,12 +241,6 @@ int QtInstanceTreeView::get_iter_depth(const weld::TreeIter& rIter) const return nDepth; } -int QtInstanceTreeView::iter_compare(const weld::TreeIter&, const weld::TreeIter&) const -{ - assert(false && "Not implemented yet"); - return 0; -} - int QtInstanceTreeView::iter_n_children(const weld::TreeIter& rIter) const { const QtInstanceTreeIter& rQtIter = static_cast<const QtInstanceTreeIter&>(rIter); diff --git a/vcl/source/weld/TreeView.cxx b/vcl/source/weld/TreeView.cxx index 944c5a97d9f0..0904abe4c4db 100644 --- a/vcl/source/weld/TreeView.cxx +++ b/vcl/source/weld/TreeView.cxx @@ -177,6 +177,27 @@ bool weld::TreeView::iter_children(TreeIter& rIter) const return do_iter_children(rIter); } +int weld::TreeView::iter_compare(const TreeIter& rIterA, const TreeIter& rIterB) const +{ + if (rIterA.equal(rIterB)) + return 0; + + std::unique_ptr<weld::TreeIter> pIter = make_iterator(); + bool bValid = get_iter_first(*pIter); + while (bValid) + { + if (pIter->equal(rIterA)) + return -1; + if (pIter->equal(rIterB)) + return 1; + + bValid = iter_next(*pIter); + } + + assert(false && "None of the entries found in the tree"); + return 0; +} + bool weld::TreeView::iter_has_child(const TreeIter& rIter) const { std::unique_ptr<weld::TreeIter> pIter = make_iterator(&rIter); commit 2d5f23fd8c97fa5a4a93687beb50b5af2ae31ed9 Author: Michael Weghorn <[email protected]> AuthorDate: Tue Jan 20 18:19:13 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Jan 22 11:15:39 2026 +0100 tdf#130857 qt weld: Support "Form Properties" dialog This means that native Qt widgets are used for that dialog now when using the qt5 or qt6 VCL plugin and starting LO with environment variable SAL_VCL_QT_USE_WELDED_WIDGETS=1 set. The dialog can be triggered like this: * start Writer * "Form" -> "Form Navigator" * right-click on "Forms" to open the context menu * activate menu entry "New" -> "Form" and confirm the default name by pressing Enter * right-click on "Form" to open the context menu * activate the "Properties" menu entry Currently, alignment of some of the widgets isn't ideal, most likely because they are not yet evaluated in QtBuilder when processing the .ui file, but the dialog seems functional in a quick test. Change-Id: Ibf9638088124967e06df78d44903b64c87c0c875 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197685 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx index b50050bec6a7..7a1fd50e17c1 100644 --- a/vcl/qt5/QtInstanceBuilder.cxx +++ b/vcl/qt5/QtInstanceBuilder.cxx @@ -237,6 +237,7 @@ bool QtInstanceBuilder::IsUIFileSupported(const OUString& rUIFile, const weld::W u"svx/ui/deletefooterdialog.ui"_ustr, u"svx/ui/deleteheaderdialog.ui"_ustr, u"svx/ui/fileexporteddialog.ui"_ustr, + u"svx/ui/formpropertydialog.ui"_ustr, u"svx/ui/gotopagedialog.ui"_ustr, u"svx/ui/passwd.ui"_ustr, u"svx/ui/querydeletethemedialog.ui"_ustr, @@ -297,6 +298,14 @@ bool QtInstanceBuilder::IsUIFileSupported(const OUString& rUIFile, const weld::W u"modules/simpress/ui/annotationtagmenu.ui"_ustr, u"modules/simpress/ui/impressprinteroptions.ui"_ustr, u"modules/smath/ui/printeroptions.ui"_ustr, + u"modules/spropctrlr/ui/browserline.ui"_ustr, + u"modules/spropctrlr/ui/browserpage.ui"_ustr, + u"modules/spropctrlr/ui/combobox.ui"_ustr, + u"modules/spropctrlr/ui/formproperties.ui"_ustr, + u"modules/spropctrlr/ui/listbox.ui"_ustr, + u"modules/spropctrlr/ui/numericfield.ui"_ustr, + u"modules/spropctrlr/ui/textfield.ui"_ustr, + u"modules/spropctrlr/ui/urlcontrol.ui"_ustr, u"modules/swriter/ui/bibliofragment.ui"_ustr, u"modules/swriter/ui/columnpage.ui"_ustr, u"modules/swriter/ui/flddbpage.ui"_ustr, commit ce1a575b48e4fd8a391676d7a62a53cbf21ff019 Author: Michael Weghorn <[email protected]> AuthorDate: Tue Jan 20 18:17:32 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Jan 22 11:15:31 2026 +0100 propctrlr: Resave .ui files used in "Form Properties" dlg with glade 3.40 These are used for the "Form Properties" dialog that can be triggered like this: * start Writer * "Form" -> "Form Navigator" * right-click on "Forms" to open the context menu * activate menu entry "New" -> "Form" and confirm the default name by pressing Enter * right-click on "Form" to open the context menu * activate the "Properties" menu entry Change-Id: Iefdf94e7b5c72f02a7a74b7d0c7c8bf6ae9ff5e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197684 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/extensions/uiconfig/spropctrlr/ui/combobox.ui b/extensions/uiconfig/spropctrlr/ui/combobox.ui index ff220dcdcbef..b830b6c7e6fa 100644 --- a/extensions/uiconfig/spropctrlr/ui/combobox.ui +++ b/extensions/uiconfig/spropctrlr/ui/combobox.ui @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> <object class="GtkComboBoxText" id="combobox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> - <property name="has_entry">True</property> + <property name="has-entry">True</property> <child internal-child="entry"> <object class="GtkEntry"> + <property name="can-focus">True</property> <property name="truncate-multiline">True</property> - <property name="can_focus">True</property> </object> </child> </object> diff --git a/extensions/uiconfig/spropctrlr/ui/listbox.ui b/extensions/uiconfig/spropctrlr/ui/listbox.ui index b44862a53828..f5bba201ad08 100644 --- a/extensions/uiconfig/spropctrlr/ui/listbox.ui +++ b/extensions/uiconfig/spropctrlr/ui/listbox.ui @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> <object class="GtkComboBoxText" id="listbox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> </object> </interface> diff --git a/extensions/uiconfig/spropctrlr/ui/numericfield.ui b/extensions/uiconfig/spropctrlr/ui/numericfield.ui index 132b05b495bc..69b3ae92a4ed 100644 --- a/extensions/uiconfig/spropctrlr/ui/numericfield.ui +++ b/extensions/uiconfig/spropctrlr/ui/numericfield.ui @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> <object class="GtkAdjustment" id="adjustment1"> <property name="upper">100</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> + <property name="step-increment">1</property> + <property name="page-increment">10</property> </object> <object class="GtkSpinButton" id="numericfield"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> <property name="hexpand">True</property> <property name="truncate-multiline">True</property> <property name="adjustment">adjustment1</property> diff --git a/extensions/uiconfig/spropctrlr/ui/textfield.ui b/extensions/uiconfig/spropctrlr/ui/textfield.ui index 358bbe2d082d..dd32f8a14da2 100644 --- a/extensions/uiconfig/spropctrlr/ui/textfield.ui +++ b/extensions/uiconfig/spropctrlr/ui/textfield.ui @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> <object class="GtkEntry" id="textfield"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="truncate-multiline">True</property> + <property name="can-focus">True</property> <property name="hexpand">True</property> + <property name="truncate-multiline">True</property> </object> </interface> diff --git a/extensions/uiconfig/spropctrlr/ui/urlcontrol.ui b/extensions/uiconfig/spropctrlr/ui/urlcontrol.ui index 83bdffe58c85..05a882e7b012 100644 --- a/extensions/uiconfig/spropctrlr/ui/urlcontrol.ui +++ b/extensions/uiconfig/spropctrlr/ui/urlcontrol.ui @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> <object class="GtkComboBoxText" id="urlcontrol"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> - <property name="has_entry">True</property> + <property name="has-entry">True</property> <child internal-child="entry"> <object class="GtkEntry"> + <property name="can-focus">True</property> <property name="truncate-multiline">True</property> - <property name="can_focus">True</property> </object> </child> </object>
