diff options
Diffstat (limited to 'Swift/QtUI')
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 19 | ||||
-rw-r--r-- | Swift/QtUI/QtChatWindow.h | 3 |
2 files changed, 21 insertions, 1 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 1f8e7a7..e0881d5 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -719,7 +719,17 @@ void QtChatWindow::handleEmojiClicked(QString emoji) { void QtChatWindow::handleTextInputReceivedFocus() { lastLineTracker_.setHasFocus(true); input_->setFocus(); - onAllMessagesRead(); + if (focusTimer_) { + focusTimer_->stop(); + } + else { + focusTimer_ = std::make_unique<QTimer>(this); + focusTimer_->setSingleShot(true); + focusTimer_->setTimerType(Qt::CoarseTimer); + connect(focusTimer_.get(), &QTimer::timeout, this, &QtChatWindow::handleFocusTimerTick); + } + focusTimer_->setInterval(1000); + focusTimer_->start(); } void QtChatWindow::handleTextInputLostFocus() { @@ -1029,4 +1039,11 @@ void QtChatWindow::removeChatSecurityMarking() { securityMarkingLayout_ = nullptr; } +void QtChatWindow::handleFocusTimerTick() { + if (hasFocus()) { + onAllMessagesRead(); + } + focusTimer_.reset(); +} + } diff --git a/Swift/QtUI/QtChatWindow.h b/Swift/QtUI/QtChatWindow.h index 4e10053..1269165 100644 --- a/Swift/QtUI/QtChatWindow.h +++ b/Swift/QtUI/QtChatWindow.h @@ -34,6 +34,7 @@ class QComboBox; class QLabel; class QSplitter; class QPushButton; +class QTimer; namespace Swift { class QtChatView; @@ -196,6 +197,7 @@ namespace Swift { void setChatSecurityMarking(const std::string& markingValue, const std::string& markingForegroundColorValue, const std::string& markingBackgroundColorValue); void removeChatSecurityMarking(); + void handleFocusTimerTick(); private: int unreadCount_; @@ -246,5 +248,6 @@ namespace Swift { QTimer* dayChangeTimer = nullptr; QHBoxLayout* securityMarkingLayout_ = nullptr; QLabel* securityMarkingDisplay_ = nullptr; + std::unique_ptr<QTimer> focusTimer_; }; } |