1 |
From 6e706731923ebe0dc38113a46c068d8527a7129b Mon Sep 17 00:00:00 2001 |
2 |
From: Tsu Jan <tsujan2000@gmail.com> |
3 |
Date: Wed, 30 Dec 2020 21:29:15 +0330 |
4 |
Subject: [PATCH] Added nullity check for proxy model when setting desktop |
5 |
folder |
6 |
|
7 |
Logically, it was needed. Apparently, its lack might cause a crash under very rare and special circumstances. |
8 |
|
9 |
Closes https://github.com/lxqt/pcmanfm-qt/issues/1273 |
10 |
--- |
11 |
pcmanfm/desktopwindow.cpp | 14 +++++++++++++- |
12 |
1 file changed, 13 insertions(+), 1 deletion(-) |
13 |
|
14 |
diff --git a/pcmanfm/desktopwindow.cpp b/pcmanfm/desktopwindow.cpp |
15 |
index 8e26b3f..b21523b 100644 |
16 |
--- a/pcmanfm/desktopwindow.cpp |
17 |
+++ b/pcmanfm/desktopwindow.cpp |
18 |
@@ -469,7 +469,9 @@ void DesktopWindow::setDesktopFolder() { |
19 |
// free the previous model and folder |
20 |
if(model_) { |
21 |
disconnect(model_, &Fm::FolderModel::filesAdded, this, &DesktopWindow::onFilesAdded); |
22 |
- proxyModel_->setSourceModel(nullptr); |
23 |
+ if(proxyModel_) { |
24 |
+ proxyModel_->setSourceModel(nullptr); |
25 |
+ } |
26 |
delete model_; |
27 |
model_ = nullptr; |
28 |
} |
29 |
@@ -484,7 +486,17 @@ void DesktopWindow::setDesktopFolder() { |
30 |
folder_ = model_->folder(); |
31 |
connect(folder_.get(), &Fm::Folder::startLoading, this, &DesktopWindow::onFolderStartLoading); |
32 |
connect(folder_.get(), &Fm::Folder::finishLoading, this, &DesktopWindow::onFolderFinishLoading); |
33 |
+ |
34 |
+ if(proxyModel_ == nullptr) { |
35 |
+ proxyModel_ = new Fm::ProxyFolderModel(); |
36 |
+ setModel(proxyModel_); |
37 |
+ connect(proxyModel_, &Fm::ProxyFolderModel::rowsInserted, this, &DesktopWindow::onRowsInserted); |
38 |
+ connect(proxyModel_, &Fm::ProxyFolderModel::rowsAboutToBeRemoved, this, &DesktopWindow::onRowsAboutToBeRemoved); |
39 |
+ connect(proxyModel_, &Fm::ProxyFolderModel::layoutChanged, this, &DesktopWindow::onLayoutChanged); |
40 |
+ connect(proxyModel_, &Fm::ProxyFolderModel::sortFilterChanged, this, &DesktopWindow::onModelSortFilterChanged); |
41 |
+ } |
42 |
proxyModel_->setSourceModel(model_); |
43 |
+ |
44 |
if(folder_->isLoaded()) { |
45 |
onFolderStartLoading(); |
46 |
onFolderFinishLoading(); |
47 |
-- |
48 |
2.30.0 |
49 |
|