basctl/uiconfig/basicide/ui/colorscheme.ui | 110 ++++++++++++----------------- vcl/inc/qt5/QtInstanceRadioButton.hxx | 3 vcl/qt5/QtInstanceBuilder.cxx | 1 vcl/qt5/QtInstanceRadioButton.cxx | 8 +- 4 files changed, 60 insertions(+), 62 deletions(-)
New commits: commit 85713bd7b3388267407898d0b95109f63d8d743d Author: Michael Weghorn <[email protected]> AuthorDate: Thu Feb 19 15:16:48 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Feb 20 10:06:23 2026 +0100 tdf#130857 qt weld: Support BasicIDE "Color Scheme" 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 * "Tools" -> "Macros" -> "Edit Macros..." * "View" -> "Color Scheme..." Change-Id: I04df4443229fa762a987cffa42725f45403898f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199730 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx index 244d4389a27a..3940455dfaf2 100644 --- a/vcl/qt5/QtInstanceBuilder.cxx +++ b/vcl/qt5/QtInstanceBuilder.cxx @@ -134,6 +134,7 @@ constexpr auto SUPPORTED_UI_FILES = frozen::make_unordered_set<std::u16string_vi u"filter/ui/xmlfiltersettings.ui", u"filter/ui/xsltfilterdialog.ui", u"fps/ui/foldernamedialog.ui", + u"modules/BasicIDE/ui/colorscheme.ui", u"modules/BasicIDE/ui/exportdialog.ui", u"modules/BasicIDE/ui/gotolinedialog.ui", u"modules/BasicIDE/ui/newlibdialog.ui", commit f6249013216f2d6ce71a6792b0713f9504247ec2 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Feb 19 15:17:58 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Feb 20 10:06:16 2026 +0100 tdf#130857 qt weld: Hold SolarMutex when calling RadioButton toggle hdl This e.g. avoids a corresponding assert from getting triggered in the BasicIDE "Color Scheme" dialog with upcoming commit Change-Id: I04df4443229fa762a987cffa42725f45403898f0 Author: Michael Weghorn <[email protected]> Date: Thu Feb 19 15:16:48 2026 +0100 tdf#130857 qt weld: Support BasicIDE "Color Scheme" dialog in place when doing this: * start Writer * "Tools" -> "Macros" -> "Edit Macros..." * "View" -> "Color Scheme..." * enable the "Choose Color Scheme" radio button Backtrace of the assert otherwise: 1 __pthread_kill_implementation pthread_kill.c 44 0x7f92ee8a13dc 2 __pthread_kill_internal pthread_kill.c 89 0x7f92ee8a149f 3 __GI_raise raise.c 26 0x7f92ee84a942 4 __GI_abort abort.c 77 0x7f92ee8324ac 5 __assert_fail_base assert.c 118 0x7f92ee832420 6 ImplDbgTestSolarMutex dbggui.cxx 36 0x7f92e543239c 7 DbgTestSolarMutex debug.cxx 54 0x7f92ecb253c4 8 OutputDevice::InitFont font.cxx 646 0x7f92e50605ae 9 OutputDevice::ImplLayout text.cxx 1141 0x7f92e50716e8 10 OutputDevice::GetPartialTextArray text.cxx 795 0x7f92e50733e7 11 OutputDevice::GetTextArray text.cxx 764 0x7f92e50724de 12 OutputDevice::GetTextWidthDouble text.cxx 636 0x7f92e5072451 13 OutputDevice::GetTextWidth text.cxx 628 0x7f92e50723e9 14 TextEngine::SetFont texteng.cxx 196 0x7f92e4feddab 15 basctl::EditorWindow::ChangeFontColor baside2b.cxx 1305 0x7f92a61d6c99 16 basctl::ModulWindowLayout::SyntaxColors::ApplyColorScheme baside2.cxx 1645 0x7f92a6211d78 17 basctl::ModulWindowLayout::ApplyColorSchemeToCurrentWindow baside2.cxx 1596 0x7f92a6212fb4 18 basctl::ColorSchemeDialog::OptionHdl ColorSchemeDialog.cxx 127 0x7f92a6320901 19 basctl::ColorSchemeDialog::LinkStubOptionHdl ColorSchemeDialog.cxx 110 0x7f92a632063d 20 Link<weld::Toggleable&, void>::Call link.hxx 105 0x7f92dc89cc41 21 weld::Toggleable::signal_toggled weld.hxx 605 0x7f92dc89c788 22 QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0::operator()() const QtInstanceRadioButton.cxx 20 0x7f92dc90723f 23 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0>::call(QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0&, void * *)::{lambda()#1}::operator()() const qobjectdefs_impl.h 116 0x7f92dc907218 24 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0>::call(QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0&, void * *)::{lambda()#1}>(void * *, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0>::call(QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0&, void * *)::{lambda()#1}&&) qobjectdefs_impl.h 65 0x7f92dc9071f9 25 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0>::call(QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0&, void * *) qobjectdefs_impl.h 115 0x7f92dc9071c2 26 QtPrivate::FunctorCallable<QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0>::call<QtPrivate::List<>, void>(QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0&, void *, void * *) qobjectdefs_impl.h 337 0x7f92dc907171 27 QtPrivate::QCallableObject<QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton *)::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void * *, bool *) qobjectdefs_impl.h 547 0x7f92dc907118 28 QtPrivate::QSlotObjectBase::call qobjectdefs_impl.h 461 0x7f92db6ec5f2 [...] Change-Id: Ic1c7eaed6c7ee0e2658b29e64199493aac79d42e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199729 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/inc/qt5/QtInstanceRadioButton.hxx b/vcl/inc/qt5/QtInstanceRadioButton.hxx index 334dd8a2c588..6373a9dfcdc1 100644 --- a/vcl/inc/qt5/QtInstanceRadioButton.hxx +++ b/vcl/inc/qt5/QtInstanceRadioButton.hxx @@ -31,6 +31,9 @@ public: virtual void set_label(const OUString& rText) override; virtual OUString get_label() const override; virtual void set_label_wrap(bool bWrap) override; + +private Q_SLOTS: + void handleToggled(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/qt5/QtInstanceRadioButton.cxx b/vcl/qt5/QtInstanceRadioButton.cxx index 8f9de312c6d4..f2e3878bab64 100644 --- a/vcl/qt5/QtInstanceRadioButton.cxx +++ b/vcl/qt5/QtInstanceRadioButton.cxx @@ -17,7 +17,7 @@ QtInstanceRadioButton::QtInstanceRadioButton(QRadioButton* pRadioButton) , m_pRadioButton(pRadioButton) { assert(m_pRadioButton); - connect(m_pRadioButton, &QRadioButton::toggled, this, [&] { signal_toggled(); }); + connect(m_pRadioButton, &QRadioButton::toggled, this, &QtInstanceRadioButton::handleToggled); } void QtInstanceRadioButton::do_set_active(bool bActive) @@ -55,4 +55,10 @@ void QtInstanceRadioButton::QtInstanceRadioButton::set_label_wrap(bool /*bWrap*/ SAL_WARN("vcl.qt", "Qt doesn't support word wrap in radio buttons (see QTBUG-5370)"); } +void QtInstanceRadioButton::handleToggled() +{ + SolarMutexGuard g; + signal_toggled(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ commit 7b2605df06a7a04f34a656614d1d6ee6a56a1b51 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Feb 19 15:06:57 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Fri Feb 20 10:06:09 2026 +0100 tdf#130857 basctl: Stop using deprecated GtkAlignment GtkAlignment was deprecated in GTK 3.14 [1]. Drop it. Instead, set the margins directly on the child widget. See also commit 3a4b929aeba8d5a9849d468c3d8dc314923c6104 Author: Michael Weghorn <[email protected]> Date: Tue Feb 17 12:45:56 2026 +0100 tdf#130857 sw: Drop deprecated GtkAlignment in indexentry.ui for some more background. (`git show --ignore-space-change` can be used to see the "actual changes" more easily.) [1] https://docs.gtk.org/gtk3/class.Alignment.html Change-Id: I7aeb5230273287572e75268b97acb0a5c1baece2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199728 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/basctl/uiconfig/basicide/ui/colorscheme.ui b/basctl/uiconfig/basicide/ui/colorscheme.ui index 57244abe9e69..f473468881b9 100644 --- a/basctl/uiconfig/basicide/ui/colorscheme.ui +++ b/basctl/uiconfig/basicide/ui/colorscheme.ui @@ -81,46 +81,40 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <object class="GtkAlignment"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="left-padding">12</property> + <property name="margin-start">12</property> + <property name="orientation">vertical</property> <child> - <object class="GtkBox"> + <object class="GtkRadioButton" id="opt_appcolors"> + <property name="label" translatable="yes" context="colorscheme|opt_appcolors">Use Application Colors</property> <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkRadioButton" id="opt_appcolors"> - <property name="label" translatable="yes" context="colorscheme|opt_appcolors">Use Application Colors</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="active">True</property> - <property name="draw-indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkRadioButton" id="opt_usescheme"> - <property name="label" translatable="yes" context="colorscheme|opt_usescheme">Choose Color Scheme</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="draw-indicator">True</property> - <property name="group">opt_appcolors</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="active">True</property> + <property name="draw-indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="opt_usescheme"> + <property name="label" translatable="yes" context="colorscheme|opt_usescheme">Choose Color Scheme</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="draw-indicator">True</property> + <property name="group">opt_appcolors</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> </object> </child> @@ -149,40 +143,34 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <object class="GtkAlignment"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="left-padding">12</property> + <property name="can-focus">True</property> + <property name="margin-start">12</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="shadow-type">in</property> <child> - <object class="GtkScrolledWindow"> + <object class="GtkTreeView" id="schemelist"> <property name="visible">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="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> + <child internal-child="selection"> + <object class="GtkTreeSelection"/> + </child> <child> - <object class="GtkTreeView" id="schemelist"> - <property name="visible">True</property> - <property name="can-focus">True</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> - <child internal-child="selection"> - <object class="GtkTreeSelection"/> - </child> + <object class="GtkTreeViewColumn"> <child> - <object class="GtkTreeViewColumn"> - <child> - <object class="GtkCellRendererText" id="rendertext"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> + <object class="GtkCellRendererText" id="rendertext"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> </child> </object> </child>
