vcl/qt5/QtInstanceBuilder.cxx |    3 +++
 vcl/qt5/QtInstanceButton.cxx  |    6 +++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

New commits:
commit 5000c5bdfe4778e24759ee0aeb57ecb9fbb3c73a
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Sun Nov 10 19:19:02 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Nov 11 01:49:08 2024 +0100

    tdf#130857 qt weld: Hold SolarMutex in QtInstanceButton::buttonClicked
    
    Hold the SolarMutex when calling the button clicked
    handler.
    
    Otherwise, opening Writer's "Tools" -> "Footnote/Endnote Settings"
    dialog and closing with the "OK" button triggers an assert when
    using native Qt widgets (i.e. with env var
    SAL_VCL_QT_USE_WELDED_WIDGETS=1 set).
    
    Backtrace:
    
        1 __pthread_kill_implementation pthread_kill.c 44 0x7ffff789de5c
        2 __pthread_kill_internal pthread_kill.c 78 0x7ffff789debf
        3 __GI_raise raise.c 26 0x7ffff7849c82
        4 __GI_abort abort.c 79 0x7ffff78324f0
        5 __assert_fail_base assert.c 94 0x7ffff7832418
        6 __assert_fail assert.c 103 0x7ffff7842592
        7 ImplDbgTestSolarMutex dbggui.cxx 35 0x7fffeec2eb1e
        8 DbgTestSolarMutex debug.cxx 54 0x7ffff6d2bee0
        9 SwModify::Add calbck.cxx 174 0x7fffbe3b9f49
        10 SwClient::SwClient calbck.hxx 428 0x7fffbe3be8bb
        11 sw::ListenerEntry::ListenerEntry calbck.hxx 241 0x7fffbe3be845
        12 std::construct_at<sw::ListenerEntry, SwClient *, SwModify *&> 
stl_construct.h 97 0x7fffbe3be80f
        13 
std::allocator_traits<std::allocator<sw::ListenerEntry>>::construct<sw::ListenerEntry,
 SwClient *, SwModify *&> alloc_traits.h 571 0x7fffbe3be5ec
        14 
std::__cxx1998::vector<sw::ListenerEntry>::_M_realloc_append<SwClient *, 
SwModify *&> vector.tcc 634 0x7fffbe3be5ec
        15 std::__cxx1998::vector<sw::ListenerEntry>::emplace_back<SwClient *, 
SwModify *&> vector.tcc 123 0x7fffbe3be3ca
        16 std::vector<sw::ListenerEntry>::emplace_back<SwClient *, SwModify 
*&> vector 599 0x7fffbe3bd80a
        17 sw::WriterMultiListener::StartListening calbck.cxx 262 0x7fffbe3bb65d
        18 SwEndNoteInfo::GetCharFormat docftn.cxx 166 0x7fffbe6911c1
        19 (anonymous namespace)::lcl_ResetPoolIdForDocAndSync docftn.cxx 186 
0x7fffbe69130b
        20 SwEndNoteInfo::SetCharFormat docftn.cxx 193 0x7fffbe691223
        21 SwEndNoteOptionPage::FillItemSet docfnote.cxx 342 0x7fffa88bdb58
        22 SwFootNoteOptionDlg::OkHdl docfnote.cxx 60 0x7fffa88bb484
        23 SwFootNoteOptionDlg::LinkStubOkHdl docfnote.cxx 55 0x7fffa88bb19d
        24 Link<weld::Button&, void>::Call link.hxx 111 0x7fffe4732de1
        25 weld::Button::signal_clicked weld.hxx 1519 0x7fffe47323ac
        26 QtInstanceButton::buttonClicked QtInstanceButton.cxx 102 
0x7fffe473076c
        27 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, 
QtPrivate::List<>, void, void (QtInstanceButton:: *)()>::call(void 
(QtInstanceButton:: *)(), QtInstanceButton *, void * 
*)::{lambda()#1}::operator()() const qobjectdefs_impl.h 127 0x7fffe47332b1
        28 QtPrivate::FunctorCallBase::call_internal<void, 
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, 
void, void (QtInstanceButton:: *)()>::call(void (QtInstanceButton:: *)(), 
QtInstanceButton *, void * *)::{lambda()#1}>(void * *, 
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, 
void, void (QtInstanceButton:: *)()>::call(void (QtInstanceButton:: *)(), 
QtInstanceButton *, void * *)::{lambda()#1}&&) qobjectdefs_impl.h 65 
0x7fffe47331e9
        29 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, 
QtPrivate::List<>, void, void (QtInstanceButton:: *)()>::call(void 
(QtInstanceButton:: *)(), QtInstanceButton *, void * *) qobjectdefs_impl.h 126 
0x7fffe473311b
        30 QtPrivate::FunctionPointer<void (QtInstanceButton:: 
*)()>::call<QtPrivate::List<>, void>(void (QtInstanceButton:: *)(), 
QtInstanceButton *, void * *) qobjectdefs_impl.h 174 0x7fffe473309d
        31 QtPrivate::QCallableObject<void (QtInstanceButton:: *)(), 
QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, 
void * *, bool *) qobjectdefs_impl.h 545 0x7fffe4732fc6
        32 QtPrivate::QSlotObjectBase::call qobjectdefs_impl.h 461 
0x7fffe385ace2
        33 doActivate<false> qobject.cpp 4127 0x7fffe3919054
        34 QMetaObject::activate qobject.cpp 4187 0x7fffe390ecf3
        35 QAbstractButton::clicked moc_qabstractbutton.cpp 396 0x7fffe1a24d79
        36 QAbstractButtonPrivate::emitClicked qabstractbutton.cpp 381 
0x7fffe1a24c77
        37 QAbstractButtonPrivate::click qabstractbutton.cpp 374 0x7fffe1a24ad1
        38 QAbstractButton::mouseReleaseEvent qabstractbutton.cpp 976 
0x7fffe1a25fbf
        39 QWidget::event qwidget.cpp 8967 0x7fffe189d44d
        40 QAbstractButton::event qabstractbutton.cpp 933 0x7fffe1a25ddc
        41 QPushButton::event qpushbutton.cpp 684 0x7fffe1b9c251
        42 QApplicationPrivate::notify_helper qapplication.cpp 3296 
0x7fffe17e1989
        43 QApplication::notify qapplication.cpp 2774 0x7fffe17e366d
        44 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1124 
0x7fffe3843cca
        45 QCoreApplication::sendSpontaneousEvent qcoreapplication.cpp 1582 
0x7fffe3844c09
        46 QApplicationPrivate::sendMouseEvent qapplication.cpp 2355 
0x7fffe17e22a7
        47 QWidgetWindow::handleMouseEvent qwidgetwindow.cpp 667 0x7fffe18dc2ff
        48 QWidgetWindow::event qwidgetwindow.cpp 299 0x7fffe18daab5
        49 QApplicationPrivate::notify_helper qapplication.cpp 3296 
0x7fffe17e1989
        50 QApplication::notify qapplication.cpp 3247 0x7fffe17e58bd
        51 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1124 
0x7fffe3843cca
        52 QCoreApplication::sendSpontaneousEvent qcoreapplication.cpp 1582 
0x7fffe3844c09
        53 QGuiApplicationPrivate::processMouseEvent qguiapplication.cpp 2465 
0x7fffe267ee7a
        54 QGuiApplicationPrivate::processWindowSystemEvent qguiapplication.cpp 
2192 0x7fffe267e036
        55 QWindowSystemInterface::sendWindowSystemEvents 
qwindowsysteminterface.cpp 1113 0x7fffe27640ed
        56 QWindowSystemInterface::flushWindowSystemEvents 
qwindowsysteminterface.cpp 1082 0x7fffe2763f9e
        57 QtWaylandClient::QWaylandDisplay::flushRequests qwaylanddisplay.cpp 
511 0x7fffdfea8575
        58 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, 
QtPrivate::List<>, void, void (QtWaylandClient::QWaylandDisplay:: 
*)()>::call(void (QtWaylandClient::QWaylandDisplay:: *)(), 
QtWaylandClient::QWaylandDisplay *, void * *)::{lambda()#1}::operator()() const 
qobjectdefs_impl.h 127 0x7fffdfec3cf5
        59 QtPrivate::FunctorCallBase::call_internal<void, 
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, 
void, void (QtWaylandClient::QWaylandDisplay:: *)()>::call(void 
(QtWaylandClient::QWaylandDisplay:: *)(), QtWaylandClient::QWaylandDisplay *, 
void * *)::{lambda()#1}>(void * *, 
QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, 
void, void (QtWaylandClient::QWaylandDisplay:: *)()>::call(void 
(QtWaylandClient::QWaylandDisplay:: *)(), QtWaylandClient::QWaylandDisplay *, 
void * *)::{lambda()#1}&&) qobjectdefs_impl.h 65 0x7fffdfec3c1d
        60 QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, 
QtPrivate::List<>, void, void (QtWaylandClient::QWaylandDisplay:: 
*)()>::call(void (QtWaylandClient::QWaylandDisplay:: *)(), 
QtWaylandClient::QWaylandDisplay *, void * *) qobjectdefs_impl.h 126 
0x7fffdfec3b3f
        61 QtPrivate::FunctionPointer<void (QtWaylandClient::QWaylandDisplay:: 
*)()>::call<QtPrivate::List<>, void>(void (QtWaylandClient::QWaylandDisplay:: 
*)(), QtWaylandClient::QWaylandDisplay *, void * *) qobjectdefs_impl.h 174 
0x7fffdfec3ab1
        62 QtPrivate::QCallableObject<void (QtWaylandClient::QWaylandDisplay:: 
*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject 
*, void * *, bool *) qobjectdefs_impl.h 545 0x7fffdfec39db
        63 QtPrivate::QSlotObjectBase::call qobjectdefs_impl.h 461 
0x7fffe385ace2
        64 QMetaCallEvent::placeMetaCall qobject.cpp 621 0x7fffe390376c
        65 QObject::event qobject.cpp 1420 0x7fffe39055c0
        66 QApplicationPrivate::notify_helper qapplication.cpp 3296 
0x7fffe17e1989
        67 QApplication::notify qapplication.cpp 3247 0x7fffe17e58bd
        68 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1124 
0x7fffe3843cca
        69 QCoreApplication::sendEvent qcoreapplication.cpp 1568 0x7fffe3844b79
        70 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1923 
0x7fffe38464b4
        71 QCoreApplication::sendPostedEvents qcoreapplication.cpp 1755 
0x7fffe38449a1
        72 postEventSourceDispatch qeventdispatcher_glib.cpp 246 0x7fffe3e2e311
        73 ?? 0x7fffea30c7df
        74 ?? 0x7fffea30ea17
        75 g_main_context_iteration 0x7fffea30f180
        76 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 399 
0x7fffe3e2d50b
        77 QPAEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 89 
0x7fffe2f59238
        78 QtInstance::ImplYield QtInstance.cxx 464 0x7fffe4709672
        79 QtInstance::DoYield QtInstance.cxx 475 0x7fffe470c6f1
        80 ImplYield svapp.cxx 385 0x7fffeed0fed6
        81 Application::Yield svapp.cxx 473 0x7fffeed0f86f
        82 Application::Execute svapp.cxx 360 0x7fffeed0f650
        83 desktop::Desktop::Main app.cxx 1679 0x7ffff7b2696b
        84 ImplSVMain svmain.cxx 228 0x7fffeed30756
        85 SVMain svmain.cxx 246 0x7fffeed32349
        86 soffice_main sofficemain.cxx 121 0x7ffff7ba04ba
        87 sal_main main.c 51 0x555555555a6d
        88 main main.c 49 0x555555555a47
    
    Change-Id: I23aab31c981483830245130cbd06991c1732fc5c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176355
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/vcl/qt5/QtInstanceButton.cxx b/vcl/qt5/QtInstanceButton.cxx
index 6de1164e8d10..26d9c35663f7 100644
--- a/vcl/qt5/QtInstanceButton.cxx
+++ b/vcl/qt5/QtInstanceButton.cxx
@@ -99,6 +99,10 @@ bool 
QtInstanceButton::hasCustomClickHandler(QAbstractButton& rButton)
     return aProp.toBool();
 }
 
-void QtInstanceButton::buttonClicked() { signal_clicked(); }
+void QtInstanceButton::buttonClicked()
+{
+    SolarMutexGuard g;
+    signal_clicked();
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit a7a9acc2cef24c532279f4d5db3418af26292127
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Sun Nov 10 19:07:26 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Nov 11 01:48:52 2024 +0100

    tdf#130857 qt weld: Support "Footnote/Endnote Settings" dlg
    
    Declare support for the Writer "Tools" ->
    "Footnote/Endnote Settings" 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.
    
    This is the first supported dialog making use of "GtkNotebook"/
    QtInstanceNotebook, i.e. of what was implemented in previous commit
    
        Change-Id: I52e11ecf053a48940b88b7e6d1e6f9ba8778d9bb
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Sun Nov 10 18:54:28 2024 +0100
    
            tdf#130857 qt weld: Implement QtInstanceNotebook logic
    
    For such dialogs, support doesn't only need to be declared for
    the dialog's top-level .ui file ("modules/swriter/ui/footendnotedialog.ui"),
    but also for the .ui files of the single tab pages
    (s. SwEndNoteOptionPage::SwEndNoteOptionPage), otherwise
    the tab page content isn't shown.
    
    Change-Id: Icb8c05cf0616651ae811185095232716bea21bcf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176354
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx
index dc7632b78ec8..67f7795fef79 100644
--- a/vcl/qt5/QtInstanceBuilder.cxx
+++ b/vcl/qt5/QtInstanceBuilder.cxx
@@ -58,6 +58,9 @@ bool QtInstanceBuilder::IsUIFileSupported(const OUString& 
rUIFile)
         u"modules/scalc/ui/selectsource.ui"_ustr,
         u"modules/schart/ui/insertaxisdlg.ui"_ustr,
         u"modules/smath/ui/alignmentdialog.ui"_ustr,
+        u"modules/swriter/ui/endnotepage.ui"_ustr,
+        u"modules/swriter/ui/footendnotedialog.ui"_ustr,
+        u"modules/swriter/ui/footnotepage.ui"_ustr,
         u"modules/swriter/ui/inforeadonlydialog.ui"_ustr,
         u"modules/swriter/ui/renameobjectdialog.ui"_ustr,
         u"modules/swriter/ui/wordcount.ui"_ustr,

Reply via email to