Don't leak dialogs

It seems that you need to manually destroy created objects... Great...

fixes #898
This commit is contained in:
Nicolas Werner 2022-02-21 05:01:01 +01:00
parent 609cd82dc0
commit ff4334d59e
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
10 changed files with 52 additions and 5 deletions

View file

@ -183,28 +183,31 @@ TimelineViewManager::openRoomMembers(TimelineModel *room)
{
if (!room)
return;
MemberList *memberList = new MemberList(room->roomId(), this);
MemberList *memberList = new MemberList(room->roomId());
QQmlEngine::setObjectOwnership(memberList, QQmlEngine::JavaScriptOwnership);
emit openRoomMembersDialog(memberList, room);
}
void
TimelineViewManager::openRoomSettings(QString room_id)
{
RoomSettings *settings = new RoomSettings(room_id, this);
RoomSettings *settings = new RoomSettings(room_id);
connect(rooms_->getRoomById(room_id).data(),
&TimelineModel::roomAvatarUrlChanged,
settings,
&RoomSettings::avatarChanged);
QQmlEngine::setObjectOwnership(settings, QQmlEngine::JavaScriptOwnership);
emit openRoomSettingsDialog(settings);
}
void
TimelineViewManager::openInviteUsers(QString roomId)
{
InviteesModel *model = new InviteesModel{this};
InviteesModel *model = new InviteesModel{};
connect(model, &InviteesModel::accept, this, [this, model, roomId]() {
emit inviteUsers(roomId, model->mxids());
});
QQmlEngine::setObjectOwnership(model, QQmlEngine::JavaScriptOwnership);
emit openInviteUsersDialog(model);
}
@ -212,6 +215,7 @@ void
TimelineViewManager::openGlobalUserProfile(QString userId)
{
UserProfile *profile = new UserProfile{QString{}, userId, this};
QQmlEngine::setObjectOwnership(profile, QQmlEngine::JavaScriptOwnership);
emit openProfile(profile);
}
@ -269,8 +273,10 @@ TimelineViewManager::openImageOverlay(TimelineModel *room, QString mxcUrl, QStri
void
TimelineViewManager::openImagePackSettings(QString roomid)
{
auto room = rooms_->getRoomById(roomid).get();
emit showImagePackSettings(room, new ImagePackListModel(roomid.toStdString(), this));
auto room = rooms_->getRoomById(roomid).get();
auto model = new ImagePackListModel(roomid.toStdString());
QQmlEngine::setObjectOwnership(model, QQmlEngine::JavaScriptOwnership);
emit showImagePackSettings(room, model);
}
void