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
This commit is contained in:
Felix Ernst 2023-04-19 00:10:54 +02:00 committed by Felix Ernst
parent b99f6f50ee
commit 49ea43e24f

View 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);