diff --git a/include/ui/OverlayModal.h b/include/ui/OverlayModal.h index 2ac5eb6..0fd9639 100644 --- a/include/ui/OverlayModal.h +++ b/include/ui/OverlayModal.h @@ -28,14 +28,18 @@ class OverlayModal : public OverlayWidget { public: - explicit OverlayModal(QWidget *parent, QWidget *content); + OverlayModal(QWidget *parent, QWidget *content); void fadeIn(); void fadeOut(); -public: - inline void setDuration(int duration); - inline void setColor(QColor color); + void setDuration(int duration) + { + duration_ = duration; + animation_->setDuration(duration_); + }; + void setColor(QColor color) { color_ = color; } + void setDismissible(bool state) { isDismissible_ = state; } protected: void paintEvent(QPaintEvent *event) override; @@ -48,19 +52,9 @@ private: int duration_; QColor color_; + //! Decides whether or not the modal can be removed by clicking into it. + bool isDismissible_ = true; + QGraphicsOpacityEffect *opacity_; QPropertyAnimation *animation_; }; - -inline void -OverlayModal::setDuration(int duration) -{ - duration_ = duration; - animation_->setDuration(duration_); -} - -inline void -OverlayModal::setColor(QColor color) -{ - color_ = color; -} diff --git a/src/MainWindow.cc b/src/MainWindow.cc index 228c900..9437b40 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -213,6 +213,7 @@ MainWindow::showChatPage(QString userid, QString homeserver, QString token) progressModal_ = QSharedPointer(new OverlayModal(this, spinner_.data()), [=](OverlayModal *modal) { modal->deleteLater(); }); + progressModal_->setDismissible(false); progressModal_->fadeIn(); progressModal_->setDuration(modalOpacityDuration); } diff --git a/src/ui/OverlayModal.cc b/src/ui/OverlayModal.cc index 62d31f2..87703af 100644 --- a/src/ui/OverlayModal.cc +++ b/src/ui/OverlayModal.cc @@ -64,7 +64,7 @@ OverlayModal::paintEvent(QPaintEvent *event) void OverlayModal::mousePressEvent(QMouseEvent *e) { - if (content_ && !content_->geometry().contains(e->pos())) + if (isDismissible_ && content_ && !content_->geometry().contains(e->pos())) fadeOut(); }