basctl/source/basicide/brkdlg.cxx | 4 - cui/source/dialogs/hangulhanjadlg.cxx | 6 - dbaccess/source/ui/dlg/paramdialog.cxx | 4 - dbaccess/source/ui/misc/WCopyTable.cxx | 4 - extensions/source/dbpilots/groupboxwiz.cxx | 4 - include/vcl/weld.hxx | 4 - sw/uiconfig/swriter/ui/numberingnamedialog.ui | 93 ++++++++++++-------------- vcl/inc/qt5/QtInstanceDialog.hxx | 4 - vcl/inc/salvtables.hxx | 4 - vcl/qt5/QtInstanceBuilder.cxx | 1 vcl/qt5/QtInstanceDialog.cxx | 4 - vcl/source/app/salvtables.cxx | 8 +- vcl/source/control/wizardmachine.cxx | 2 vcl/unx/gtk3/gtkinst.cxx | 4 - 14 files changed, 72 insertions(+), 74 deletions(-)
New commits: commit b09f14481f277a511109a523667a8076a6e9244b Author: Michael Weghorn <[email protected]> AuthorDate: Sat Jul 26 01:05:44 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Jul 29 05:21:10 2025 +0200 tdf#130857 qt weld: Support sw numbering name 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 as follows: * start Writer * "Tools" -> "Heading Numbering" * "Load/Save" -> "Save As..." Change-Id: I37af65c5cc94a3a04ab4d721391dbc6b0a97c73e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188382 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx index a6161964c5da..1d01b3e3cf18 100644 --- a/vcl/qt5/QtInstanceBuilder.cxx +++ b/vcl/qt5/QtInstanceBuilder.cxx @@ -135,6 +135,7 @@ bool QtInstanceBuilder::IsUIFileSupported(const OUString& rUIFile, const weld::W u"modules/swriter/ui/insertbreak.ui"_ustr, u"modules/swriter/ui/inserttable.ui"_ustr, u"modules/swriter/ui/linenumbering.ui"_ustr, + u"modules/swriter/ui/numberingnamedialog.ui"_ustr, u"modules/swriter/ui/printoptionspage.ui"_ustr, u"modules/swriter/ui/renameautotextdialog.ui"_ustr, u"modules/swriter/ui/renameobjectdialog.ui"_ustr, commit 25663b855e95278124027042c84cfacc3e0f1050 Author: Michael Weghorn <[email protected]> AuthorDate: Sat Jul 26 00:57:31 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Jul 29 05:21:03 2025 +0200 sw: Resave numberingnamedialog.ui with glade 3.40 The dialog can be triggered as follows: * start Writer * "Tools" -> "Heading Numbering" * "Load/Save" -> "Save As..." Change-Id: I602de26270c03f5277df5698dd5baf17503f5cb7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188381 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/sw/uiconfig/swriter/ui/numberingnamedialog.ui b/sw/uiconfig/swriter/ui/numberingnamedialog.ui index e39433854307..f47a601c50e7 100644 --- a/sw/uiconfig/swriter/ui/numberingnamedialog.ui +++ b/sw/uiconfig/swriter/ui/numberingnamedialog.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.36.0 --> +<!-- Generated with glade 3.40.0 --> <interface domain="sw"> <requires lib="gtk+" version="3.20"/> <object class="GtkTreeStore" id="liststore1"> @@ -11,36 +11,36 @@ </columns> </object> <object class="GtkDialog" id="NumberingNameDialog"> - <property name="can_focus">False</property> - <property name="border_width">6</property> + <property name="can-focus">False</property> + <property name="border-width">6</property> <property name="title" translatable="yes" context="numberingnamedialog|NumberingNameDialog">Save As</property> <property name="modal">True</property> - <property name="default_width">0</property> - <property name="default_height">0</property> - <property name="type_hint">dialog</property> + <property name="default-width">0</property> + <property name="default-height">0</property> + <property name="type-hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">12</property> <child internal-child="action_area"> <object class="GtkButtonBox" id="dialog-action_area1"> - <property name="can_focus">False</property> - <property name="layout_style">end</property> + <property name="can-focus">False</property> + <property name="layout-style">end</property> <child> <object class="GtkButton" id="ok"> <property name="label" translatable="yes" context="stock">_OK</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="has-default">True</property> + <property name="receives-default">True</property> <property name="use-underline">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">0</property> </packing> </child> @@ -48,14 +48,14 @@ <object class="GtkButton" id="cancel"> <property name="label" translatable="yes" context="stock">_Cancel</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="use-underline">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> @@ -63,8 +63,8 @@ <object class="GtkButton" id="help"> <property name="label" translatable="yes" context="stock">_Help</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="use-underline">True</property> </object> <packing> @@ -78,48 +78,48 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">0</property> </packing> </child> <child> <object class="GtkFrame" id="frame1"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> <child> - <!-- n-columns=1 n-rows=1 --> + <!-- n-columns=1 n-rows=2 --> <object class="GtkGrid" id="grid1"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> + <property name="can-focus">False</property> <property name="margin-start">12</property> <property name="margin-top">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row-spacing">6</property> + <property name="column-spacing">12</property> <child> <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="shadow_type">in</property> + <property name="shadow-type">in</property> <child> <object class="GtkTreeView" id="form"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> + <property name="tooltip-text" translatable="yes" context="numberingnamedialog|grid1">Names of saved formats.</property> <property name="hexpand">True</property> <property name="vexpand">True</property> <property name="model">liststore1</property> - <property name="headers_visible">False</property> - <property name="headers_clickable">False</property> - <property name="search_column">0</property> - <property name="show_expanders">False</property> - <property name="tooltip_text" translatable="yes" context="numberingnamedialog|grid1">Names of saved formats.</property> + <property name="headers-visible">False</property> + <property name="headers-clickable">False</property> + <property name="search-column">0</property> + <property name="show-expanders">False</property> <child internal-child="selection"> <object class="GtkTreeSelection" id="treeview-selection1"/> </child> @@ -142,17 +142,17 @@ </child> </object> <packing> - <property name="left_attach">0</property> - <property name="top_attach">1</property> + <property name="left-attach">0</property> + <property name="top-attach">1</property> </packing> </child> <child> <object class="GtkEntry" id="entry"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> + <property name="can-focus">True</property> + <property name="tooltip-text" translatable="yes" context="numberingnamedialog|entry">Enter name to identify the format to be saved.</property> + <property name="activates-default">True</property> <property name="truncate-multiline">True</property> - <property name="tooltip_text" translatable="yes" context="numberingnamedialog|entry">Enter name to identify the format to be saved.</property> <child internal-child="accessible"> <object class="AtkObject" id="entry-atkobject"> <property name="AtkObject::accessible-description" translatable="yes" context="numberingnamedialog|extended_tip|entry">Enter a name for the format being saved. Afterwards the name appears in the list shown by the Load/Save button.</property> @@ -160,8 +160,8 @@ </child> </object> <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> + <property name="left-attach">0</property> + <property name="top-attach">0</property> </packing> </child> </object> @@ -169,7 +169,7 @@ <child type="label"> <object class="GtkLabel" id="label1"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="label" translatable="yes" context="numberingnamedialog|label1">Format</property> <attributes> <attribute name="weight" value="bold"/> @@ -190,8 +190,5 @@ <action-widget response="-6">cancel</action-widget> <action-widget response="-11">help</action-widget> </action-widgets> - <child type="titlebar"> - <placeholder/> - </child> </object> </interface> commit aa67679df76ac39a177e683350356084f4974a21 Author: Michael Weghorn <[email protected]> AuthorDate: Sat Jul 26 00:44:21 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Jul 29 05:20:56 2025 +0200 tdf#130857 weld: Restrict default widget concept to buttons Only buttons are used as default widgets for dialogs, and that's also the only thing that Qt supports conceptually, see [1] and previous commit Change-Id: If5042dce9b10c9c4f3450a1aa1299bec81c16771 Author: Michael Weghorn <[email protected]> Date: Sat Jul 26 00:36:10 2025 +0200 tdf#130857 weld: Move methods to set default widget to Dialog Therefore, also adjust the weld API accordingly by switching the params from weld::Widget to weld::Button and renaming the methods accordingly. [1] https://doc.qt.io/qt-6/qdialog.html#default-button Change-Id: I6a2b162e1711fd49df852360510bf25f33f6c874 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188380 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/basctl/source/basicide/brkdlg.cxx b/basctl/source/basicide/brkdlg.cxx index aafe50aafcc8..ce2d677cef38 100644 --- a/basctl/source/basicide/brkdlg.cxx +++ b/basctl/source/basicide/brkdlg.cxx @@ -122,14 +122,14 @@ void BreakPointDialog::CheckButtons() m_xNewButton->set_sensitive(true); m_xOKButton->set_sensitive(false); m_xDelButton->set_sensitive(false); - m_xDialog->change_default_widget(m_xDelButton.get(), m_xNewButton.get()); + m_xDialog->change_default_button(m_xDelButton.get(), m_xNewButton.get()); } else { m_xNewButton->set_sensitive(false); m_xOKButton->set_sensitive(true); m_xDelButton->set_sensitive(true); - m_xDialog->change_default_widget(m_xNewButton.get(), m_xDelButton.get()); + m_xDialog->change_default_button(m_xNewButton.get(), m_xDelButton.get()); } } diff --git a/cui/source/dialogs/hangulhanjadlg.cxx b/cui/source/dialogs/hangulhanjadlg.cxx index 66a3643e3b01..e06aae5e1051 100644 --- a/cui/source/dialogs/hangulhanjadlg.cxx +++ b/cui/source/dialogs/hangulhanjadlg.cxx @@ -610,8 +610,8 @@ namespace svx if (bOldDocumentMode == m_bDocumentMode) return; - weld::Widget* pOldDefButton = nullptr; - weld::Widget* pNewDefButton = nullptr; + weld::Button* pOldDefButton = nullptr; + weld::Button* pNewDefButton = nullptr; if (m_bDocumentMode) { pOldDefButton = m_xFind.get(); @@ -623,7 +623,7 @@ namespace svx pNewDefButton = m_xFind.get(); } - m_xDialog->change_default_widget(pOldDefButton, pNewDefButton); + m_xDialog->change_default_button(pOldDefButton, pNewDefButton); } OUString HangulHanjaConversionDialog::GetCurrentSuggestion( ) const diff --git a/dbaccess/source/ui/dlg/paramdialog.cxx b/dbaccess/source/ui/dlg/paramdialog.cxx index 299ab8454594..783b41c4622e 100644 --- a/dbaccess/source/ui/dlg/paramdialog.cxx +++ b/dbaccess/source/ui/dlg/paramdialog.cxx @@ -126,7 +126,7 @@ namespace dbaui m_xTravelNext->set_sensitive(false); if (m_xAllParams->n_children() > 1) - m_xDialog->change_default_widget(m_xOKBtn.get(), m_xTravelNext.get()); + m_xDialog->change_default_button(m_xOKBtn.get(), m_xTravelNext.get()); } m_xParam->grab_focus(); @@ -316,7 +316,7 @@ namespace dbaui if (!bVisited) { // yes, there isn't another one -> change the "default button" - m_xDialog->change_default_widget(m_xTravelNext.get(), m_xOKBtn.get()); + m_xDialog->change_default_button(m_xTravelNext.get(), m_xOKBtn.get()); } } diff --git a/dbaccess/source/ui/misc/WCopyTable.cxx b/dbaccess/source/ui/misc/WCopyTable.cxx index 7825c1af26c8..361f3dd512ae 100644 --- a/dbaccess/source/ui/misc/WCopyTable.cxx +++ b/dbaccess/source/ui/misc/WCopyTable.cxx @@ -646,9 +646,9 @@ void OCopyTableWizard::construct() if (!m_vDestColumns.empty()) // source is a html or rtf table - m_xAssistant->change_default_widget(nullptr, m_xNextPage.get()); + m_xAssistant->change_default_button(nullptr, m_xNextPage.get()); else - m_xAssistant->change_default_widget(nullptr, m_xFinish.get()); + m_xAssistant->change_default_button(nullptr, m_xFinish.get()); m_pTypeInfo = std::make_shared<OTypeInfo>(); m_pTypeInfo->aUIName = m_sTypeNames.getToken(TYPE_OTHER, ';'); diff --git a/extensions/source/dbpilots/groupboxwiz.cxx b/extensions/source/dbpilots/groupboxwiz.cxx index 9ad3e234336f..1904099c5343 100644 --- a/extensions/source/dbpilots/groupboxwiz.cxx +++ b/extensions/source/dbpilots/groupboxwiz.cxx @@ -288,12 +288,12 @@ namespace dbp if (bUnfinishedInput) { - if (!pDialog->is_default_widget(m_xMoveRight.get())) + if (!pDialog->is_default_button(m_xMoveRight.get())) pDialogController->defaultButton(m_xMoveRight.get()); } else { - if (pDialog->is_default_widget(m_xMoveRight.get())) + if (pDialog->is_default_button(m_xMoveRight.get())) pDialogController->defaultButton(WizardButtonFlags::NEXT); } } diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 0ff0deb58c93..ae8decbde0a8 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -661,8 +661,8 @@ public: // with pOld of null, automatically find the old default widget and unset // it, otherwise use as hint to the old default - virtual void change_default_widget(weld::Widget* pOld, weld::Widget* pNew) = 0; - virtual bool is_default_widget(const weld::Widget* pCandidate) const = 0; + virtual void change_default_button(weld::Button* pOld, weld::Button* pNew) = 0; + virtual bool is_default_button(const weld::Button* pCandidate) const = 0; // shrink the dialog down to shown just these widgets virtual void collapse(weld::Widget* pEdit, weld::Widget* pButton) = 0; diff --git a/vcl/inc/qt5/QtInstanceDialog.hxx b/vcl/inc/qt5/QtInstanceDialog.hxx index 7d503ab4e893..cbae80b675d1 100644 --- a/vcl/inc/qt5/QtInstanceDialog.hxx +++ b/vcl/inc/qt5/QtInstanceDialog.hxx @@ -62,8 +62,8 @@ public: virtual std::unique_ptr<weld::Container> weld_content_area() override; - virtual void change_default_widget(weld::Widget*, weld::Widget*) override; - virtual bool is_default_widget(const weld::Widget*) const override; + virtual void change_default_button(weld::Button* pOld, weld::Button* pNew) override; + virtual bool is_default_button(const weld::Button* pCandidate) const override; static QDialogButtonBox* findButtonBox(const QDialog* pDialog); static void handleButtonClick(QDialog& rDialog, QAbstractButton& rButton); diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 4accdc655816..85e494965291 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -547,9 +547,9 @@ public: virtual std::unique_ptr<weld::Container> weld_content_area() override; - virtual void change_default_widget(weld::Widget* pOld, weld::Widget* pNew) override; + virtual void change_default_button(weld::Button* pOld, weld::Button* pNew) override; - virtual bool is_default_widget(const weld::Widget* pCandidate) const override; + virtual bool is_default_button(const weld::Button* pCandidate) const override; ::Dialog* getDialog() { return m_xDialog; } }; diff --git a/vcl/qt5/QtInstanceDialog.cxx b/vcl/qt5/QtInstanceDialog.cxx index 647b12c1e3da..9ddcb9cda1b1 100644 --- a/vcl/qt5/QtInstanceDialog.cxx +++ b/vcl/qt5/QtInstanceDialog.cxx @@ -190,12 +190,12 @@ std::unique_ptr<weld::Container> QtInstanceDialog::weld_content_area() return std::make_unique<QtInstanceContainer>(m_pContentArea); } -void QtInstanceDialog::change_default_widget(weld::Widget*, weld::Widget*) +void QtInstanceDialog::change_default_button(weld::Button*, weld::Button*) { assert(false && "Not implemented yet"); } -bool QtInstanceDialog::is_default_widget(const weld::Widget*) const +bool QtInstanceDialog::is_default_button(const weld::Button*) const { assert(false && "Not implemented yet"); return true; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 65665e0fced2..49c9536dffaa 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1956,11 +1956,11 @@ void SalInstanceDialog::implResetDefault(const vcl::Window* _pWindow) void SalInstanceDialog::recursively_unset_default_buttons() { implResetDefault(m_xDialog.get()); } -void SalInstanceDialog::change_default_widget(weld::Widget* pOld, weld::Widget* pNew) +void SalInstanceDialog::change_default_button(weld::Button* pOld, weld::Button* pNew) { - SalInstanceWidget* pVclNew = dynamic_cast<SalInstanceWidget*>(pNew); + SalInstanceButton* pVclNew = dynamic_cast<SalInstanceButton*>(pNew); vcl::Window* pWidgetNew = pVclNew ? pVclNew->getWidget() : nullptr; - SalInstanceWidget* pVclOld = dynamic_cast<SalInstanceWidget*>(pOld); + SalInstanceButton* pVclOld = dynamic_cast<SalInstanceButton*>(pOld); vcl::Window* pWidgetOld = pVclOld ? pVclOld->getWidget() : nullptr; if (pWidgetOld) pWidgetOld->set_property(u"has-default"_ustr, OUString::boolean(false)); @@ -1970,7 +1970,7 @@ void SalInstanceDialog::change_default_widget(weld::Widget* pOld, weld::Widget* pWidgetNew->set_property(u"has-default"_ustr, OUString::boolean(true)); } -bool SalInstanceDialog::is_default_widget(const weld::Widget* pCandidate) const +bool SalInstanceDialog::is_default_button(const weld::Button* pCandidate) const { const SalInstanceWidget* pVclCandidate = dynamic_cast<const SalInstanceWidget*>(pCandidate); vcl::Window* pWidget = pVclCandidate ? pVclCandidate->getWidget() : nullptr; diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx index bf303727fe1b..2490d7212937 100644 --- a/vcl/source/control/wizardmachine.cxx +++ b/vcl/source/control/wizardmachine.cxx @@ -240,7 +240,7 @@ namespace vcl // loop through all (direct and indirect) descendants which participate in our tabbing order, and // reset the WB_DEFBUTTON for every window which is a button and set _pNewDefButton as the new // WB_DEFBUTTON - m_xAssistant->change_default_widget(nullptr, _pNewDefButton); + m_xAssistant->change_default_button(nullptr, _pNewDefButton); } void WizardMachine::enableButtons(WizardButtonFlags _nWizardButtonFlags, bool _bEnable) diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 54b15c0d6f9b..65b2bfdd1798 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -7238,7 +7238,7 @@ public: #endif } - virtual void change_default_widget(weld::Widget* pOld, weld::Widget* pNew) override + virtual void change_default_button(weld::Button* pOld, weld::Button* pNew) override { GtkInstanceWidget* pGtkNew = dynamic_cast<GtkInstanceWidget*>(pNew); GtkWidget* pWidgetNew = pGtkNew ? pGtkNew->getWidget() : nullptr; @@ -7257,7 +7257,7 @@ public: #endif } - virtual bool is_default_widget(const weld::Widget* pCandidate) const override + virtual bool is_default_button(const weld::Button* pCandidate) const override { const GtkInstanceWidget* pGtkCandidate = dynamic_cast<const GtkInstanceWidget*>(pCandidate); GtkWidget* pWidget = pGtkCandidate ? pGtkCandidate->getWidget() : nullptr;
