]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Reuse existing proxy style
authorFelix Ernst <fe.a.ernst@gmail.com>
Tue, 18 Apr 2023 22:10:54 +0000 (00:10 +0200)
committerFelix Ernst <felixernst@kde.org>
Thu, 20 Apr 2023 14:42:04 +0000 (14:42 +0000)
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

index 4ccb4a2e35a0143efe2aefcf27ff9b6bf269e319..288b3ac5d0e5f05a0626b4718e8e3724423f9e63 100644 (file)
@@ -299,7 +299,9 @@ DolphinView::Mode DolphinView::viewMode() const
 void DolphinView::setSelectionModeEnabled(const bool enabled)
 {
     if (enabled) {
-        m_proxyStyle = std::make_unique<SelectionMode::SingleClickSelectionProxyStyle>();
+        if (!m_proxyStyle) {
+            m_proxyStyle = std::make_unique<SelectionMode::SingleClickSelectionProxyStyle>();
+        }
         setStyle(m_proxyStyle.get());
         m_view->setStyle(m_proxyStyle.get());
         m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::False);