summary refs log tree commit diff
path: root/resources/qml/Root.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/Root.qml')
-rw-r--r--resources/qml/Root.qml23
1 files changed, 23 insertions, 0 deletions
diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml
index 88d3e7c6..f9da6b7b 100644
--- a/resources/qml/Root.qml
+++ b/resources/qml/Root.qml
@@ -29,6 +29,13 @@ Pane {
         id: fontMetrics
     }
 
+    //Timer {
+    //    onTriggered: gc()
+    //    interval: 1000
+    //    running: true
+    //    repeat: true
+    //}
+
     EmojiPicker {
         id: emojiPopup
 
@@ -166,6 +173,7 @@ Pane {
         onActivated: {
             var quickSwitch = quickSwitcherComponent.createObject(timelineRoot);
             quickSwitch.open();
+            destroyOnClose(quickSwitch);
         }
     }
 
@@ -189,11 +197,13 @@ Pane {
         function onOpenLogoutDialog() {
             var dialog = logoutDialog.createObject(timelineRoot);
             dialog.open();
+            destroyOnClose(dialog);
         }
 
         function onOpenJoinRoomDialog() {
             var dialog = joinRoomDialog.createObject(timelineRoot);
             dialog.show();
+            destroyOnClose(dialog);
         }
 
         target: Nheko
@@ -205,17 +215,23 @@ Pane {
                 "flow": flow
             });
             dialog.show();
+            destroyOnClose(dialog);
         }
 
         target: VerificationManager
     }
 
+    function destroyOnClose(obj) {
+        obj.closing.connect(() => obj.destroy());
+    }
+
     Connections {
         function onOpenProfile(profile) {
             var userProfile = userProfileComponent.createObject(timelineRoot, {
                 "profile": profile
             });
             userProfile.show();
+            destroyOnClose(userProfile);
         }
 
         function onShowImagePackSettings(room, packlist) {
@@ -224,6 +240,7 @@ Pane {
                 "packlist": packlist
             });
             packSet.show();
+            destroyOnClose(packSet);
         }
 
         function onOpenRoomMembersDialog(members, room) {
@@ -232,6 +249,7 @@ Pane {
                 "room": room
             });
             membersDialog.show();
+            destroyOnClose(membersDialog);
         }
 
         function onOpenRoomSettingsDialog(settings) {
@@ -239,6 +257,7 @@ Pane {
                 "roomSettings": settings
             });
             roomSettings.show();
+            destroyOnClose(roomSettings);
         }
 
         function onOpenInviteUsersDialog(invitees) {
@@ -248,6 +267,7 @@ Pane {
                 "invitees": invitees
             });
             dialog.show();
+            destroyOnClose(dialog);
         }
 
         function onOpenLeaveRoomDialog(roomid) {
@@ -255,6 +275,7 @@ Pane {
                 "roomId": roomid
             });
             dialog.open();
+            destroyOnClose(dialog);
         }
 
         function onShowImageOverlay(room, eventId, url, proportionalHeight, originalWidth) {
@@ -264,6 +285,7 @@ Pane {
                 "url": url
             });
             dialog.showFullScreen();
+            destroyOnClose(dialog);
         }
 
         target: TimelineManager
@@ -274,6 +296,7 @@ Pane {
             if (CallManager.haveCallInvite && Settings.mobileMode) {
                 var dialog = mobileCallInviteDialog.createObject(msgView);
                 dialog.open();
+                destroyOnClose(dialog);
             }
         }