summary refs log tree commit diff
path: root/src/RoomList.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-07 20:09:34 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-07 20:51:35 +0300
commitbc4b47a5e30386df46f5d4d51a5be33b6a9d4c2f (patch)
tree42bd697afd1b4ce3d7b88bfefe11aa71dbdafae7 /src/RoomList.cc
parentUpdate from Weblate. (#38) (diff)
downloadnheko-bc4b47a5e30386df46f5d4d51a5be33b6a9d4c2f.tar.xz
Use shared pointer for the modals
Diffstat (limited to 'src/RoomList.cc')
-rw-r--r--src/RoomList.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/RoomList.cc b/src/RoomList.cc

index 0383be6e..90d8b83c 100644 --- a/src/RoomList.cc +++ b/src/RoomList.cc
@@ -168,16 +168,23 @@ RoomList::setInitialRooms(const QMap<QString, QSharedPointer<RoomSettings>> &set void RoomList::openLeaveRoomDialog(const QString &room_id) { - leaveRoomDialog_ = new LeaveRoomDialog(this); - connect(leaveRoomDialog_, &LeaveRoomDialog::closing, this, [=](bool leaving) { - closeLeaveRoomDialog(leaving, room_id); - }); + if (leaveRoomDialog_.isNull()) { + leaveRoomDialog_ = QSharedPointer<LeaveRoomDialog>(new LeaveRoomDialog(this)); - leaveRoomModal = new OverlayModal(MainWindow::instance(), leaveRoomDialog_); - leaveRoomModal->setDuration(0); - leaveRoomModal->setColor(QColor(55, 55, 55, 170)); + connect(leaveRoomDialog_.data(), + &LeaveRoomDialog::closing, + this, + [=](bool leaving) { closeLeaveRoomDialog(leaving, room_id); }); + } + + if (leaveRoomModal_.isNull()) { + leaveRoomModal_ = QSharedPointer<OverlayModal>( + new OverlayModal(MainWindow::instance(), leaveRoomDialog_.data())); + leaveRoomModal_->setDuration(0); + leaveRoomModal_->setColor(QColor(30, 30, 30, 170)); + } - leaveRoomModal->fadeIn(); + leaveRoomModal_->fadeIn(); } void @@ -266,7 +273,7 @@ RoomList::closeJoinRoomDialog(bool isJoining, QString roomAlias) void RoomList::closeLeaveRoomDialog(bool leaving, const QString &room_id) { - leaveRoomModal->fadeOut(); + leaveRoomModal_->fadeOut(); if (leaving) { client_->leaveRoom(room_id);