summaryrefslogtreecommitdiff
blob: 192ba9dcf67f10420b3bdd952257025c3ba8a3db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From 6eaefba5001445fa7e198e4caa0bde738240d66f Mon Sep 17 00:00:00 2001
From: Arjen Hiemstra <ahiemstra@heimr.nl>
Date: Wed, 9 Sep 2020 13:00:59 +0200
Subject: [PATCH] Remove actions and delegates from ToolBarLayout when they get
 destroyed

Otherwise we're keeping around stale entries that no longer point to
valid stuff.

BUG: 425670
---
 src/toolbarlayout.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/toolbarlayout.cpp b/src/toolbarlayout.cpp
index cbf31062..c2df5998 100644
--- a/src/toolbarlayout.cpp
+++ b/src/toolbarlayout.cpp
@@ -112,6 +112,18 @@ void ToolBarLayout::addAction(QObject* action)
     d->actions.append(action);
     d->actionsChanged = true;
 
+    connect(action, &QObject::destroyed, this, [this](QObject *action) {
+        auto itr = d->delegates.find(action);
+        if (itr != d->delegates.end()) {
+            d->delegates.erase(itr);
+        }
+
+        d->actions.removeOne(action);
+        d->actionsChanged = true;
+
+        relayout();
+    });
+
     relayout();
 }
 
-- 
GitLab