diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 8 | ||||
-rw-r--r-- | Swift/QtUI/QtTabbable.cpp | 12 | ||||
-rw-r--r-- | Swift/QtUI/QtTabbable.h | 2 | ||||
-rw-r--r-- | Swift/QtUI/Swift.pro | 1 |
4 files changed, 19 insertions, 4 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index e6e0100..6328156 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -106,7 +106,7 @@ void QtChatWindow::convertToMUC() { void QtChatWindow::qAppFocusChanged(QWidget *old, QWidget *now) { Q_UNUSED(old); - if (now == this || now == messageLog_ || now == input_) { + if (isWidgetSelected()) { onAllMessagesRead(); } @@ -133,7 +133,7 @@ void QtChatWindow::updateTitleWithUnreadCount() { } void QtChatWindow::addMessage(const String &message, const String &senderName, bool senderIsSelf, const boost::optional<SecurityLabel>& label, const String& avatarPath) { - if (isActiveWindow()) { + if (isWidgetSelected()) { onAllMessagesRead(); } @@ -156,7 +156,7 @@ void QtChatWindow::addMessage(const String &message, const String &senderName, b } void QtChatWindow::addErrorMessage(const String& errorMessage) { - if (isActiveWindow()) { + if (isWidgetSelected()) { onAllMessagesRead(); } @@ -169,7 +169,7 @@ void QtChatWindow::addErrorMessage(const String& errorMessage) { } void QtChatWindow::addSystemMessage(const String& message) { - if (isActiveWindow()) { + if (isWidgetSelected()) { onAllMessagesRead(); } diff --git a/Swift/QtUI/QtTabbable.cpp b/Swift/QtUI/QtTabbable.cpp new file mode 100644 index 0000000..8473529 --- /dev/null +++ b/Swift/QtUI/QtTabbable.cpp @@ -0,0 +1,12 @@ +#include "QtTabbable.h" + +#include <QApplication> + +namespace Swift { + +bool QtTabbable::isWidgetSelected() { + /*isActiveWindow() shouldn't be necessary, but I don't trust it as far as I can throw it*/ + return isActiveWindow() && isAncestorOf(QApplication::focusWidget()); +} + +} diff --git a/Swift/QtUI/QtTabbable.h b/Swift/QtUI/QtTabbable.h index 96348b3..ebd495e 100644 --- a/Swift/QtUI/QtTabbable.h +++ b/Swift/QtUI/QtTabbable.h @@ -6,6 +6,8 @@ namespace Swift { class QtTabbable : public QWidget { Q_OBJECT + public: + bool isWidgetSelected(); protected: QtTabbable() : QWidget() {}; diff --git a/Swift/QtUI/Swift.pro b/Swift/QtUI/Swift.pro index da5f4e8..0af8216 100644 --- a/Swift/QtUI/Swift.pro +++ b/Swift/QtUI/Swift.pro @@ -84,6 +84,7 @@ SOURCES += \ QtChatTabs.cpp \ QtSoundPlayer.cpp \ QtSystemTray.cpp \ + QtTabbable.cpp \ ChatSnippet.cpp \ MessageSnippet.cpp \ SystemMessageSnippet.cpp |