Don't dismiss the loading overlay by clicking
3 files changed, 13 insertions, 18 deletions
diff --git a/include/ui/OverlayModal.h b/include/ui/OverlayModal.h
index 2ac5eb6d..0fd96390 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 228c900b..9437b401 100644
--- a/src/MainWindow.cc
+++ b/src/MainWindow.cc
@@ -213,6 +213,7 @@ MainWindow::showChatPage(QString userid, QString homeserver, QString token)
progressModal_ =
QSharedPointer<OverlayModal>(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 62d31f24..87703af8 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();
}
|