From 49ea43e24fede0dd001c594db9f35935facebba8 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Wed, 19 Apr 2023 00:10:54 +0200 Subject: [PATCH] Reuse existing proxy style Before this commit, a new QProxyStyle was created every time the selection mode was enabled. The previously used one was automatically deleted in the process because of the std::unique_ptr re-assignment. This isn't really a problem in itself, but I strongly assume that the sudden deletion of the old style shortly before setting a new style might be the cause of the crash/bug 468548. This commit simply re-uses the previously created proxy style which doesn't seem to cause any behaviour change even when the application style has been changed in the time since the proxy style was created. Another potential solution might be to simply use deleteLater() on the old proxy style instead of letting std::unique_ptr delete the old proxy style instantly while it is still in use. That seems more involved than simply re-using the old style though. BUG: 468548 FIXED-IN: 23.08 --- src/views/dolphinview.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 4ccb4a2e3..288b3ac5d 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -299,7 +299,9 @@ DolphinView::Mode DolphinView::viewMode() const void DolphinView::setSelectionModeEnabled(const bool enabled) { if (enabled) { - m_proxyStyle = std::make_unique(); + if (!m_proxyStyle) { + m_proxyStyle = std::make_unique(); + } setStyle(m_proxyStyle.get()); m_view->setStyle(m_proxyStyle.get()); m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::False); -- 2.47.3