summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2022-01-13 04:16:11 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2022-01-26 21:44:13 +0100
commitaaae72a4f2936df84dbb94052c0d303a1fcc33a9 (patch)
tree8dfe774cf267beab74a0d6edd3de033cb8d49ded /src/timeline
parentInitial qml root window (diff)
downloadnheko-aaae72a4f2936df84dbb94052c0d303a1fcc33a9.tar.xz
Fix focus and qml parenting with qml root
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/TimelineModel.cpp2
-rw-r--r--src/timeline/TimelineViewManager.cpp11
-rw-r--r--src/timeline/TimelineViewManager.h11
3 files changed, 14 insertions, 10 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp

index e769fa40..6b380f79 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp
@@ -1031,7 +1031,7 @@ TimelineModel::setCurrentIndex(int index) if (index != oldIndex) emit currentIndexChanged(index); - if (!MainWindow::instance()->isActive()) + if (MainWindow::instance() != QGuiApplication::focusWindow()) return; if (!currentId.startsWith('m')) { diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 5d2a4443..0abd102b 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp
@@ -5,6 +5,7 @@ #include "TimelineViewManager.h" +#include <QApplication> #include <QDropEvent> #include <QFileDialog> #include <QMetaType> @@ -157,6 +158,16 @@ TimelineViewManager::TimelineViewManager(CallManager *, ChatPage *parent) isInitialSync_ = true; emit initialSyncChanged(true); }); + connect(qobject_cast<QApplication *>(QApplication::instance()), + &QApplication::focusWindowChanged, + this, + &TimelineViewManager::focusChanged); +} + +bool +TimelineViewManager::isWindowFocused() const +{ + return MainWindow::instance() == QApplication::focusWindow(); } void diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 424d78d6..9419f224 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h
@@ -41,8 +41,7 @@ class TimelineViewManager : public QObject Q_PROPERTY( bool isInitialSync MEMBER isInitialSync_ READ isInitialSync NOTIFY initialSyncChanged) - Q_PROPERTY( - bool isWindowFocused MEMBER isWindowFocused_ READ isWindowFocused NOTIFY focusChanged) + Q_PROPERTY(bool isWindowFocused READ isWindowFocused NOTIFY focusChanged) public: TimelineViewManager(CallManager *callManager, ChatPage *parent = nullptr); @@ -54,7 +53,7 @@ public: void clearAll() { rooms_->clear(); } Q_INVOKABLE bool isInitialSync() const { return isInitialSync_; } - bool isWindowFocused() const { return isWindowFocused_; } + bool isWindowFocused() const; Q_INVOKABLE void openImageOverlay(TimelineModel *room, QString mxcUrl, QString eventId); Q_INVOKABLE void openImagePackSettings(QString roomid); Q_INVOKABLE void saveMedia(QString mxcUrl); @@ -93,11 +92,6 @@ public slots: void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids); void receivedSessionKey(const std::string &room_id, const std::string &session_id); void initializeRoomlist(); - void chatFocusChanged(bool focused) - { - isWindowFocused_ = focused; - emit focusChanged(); - } void showEvent(const QString &room_id, const QString &event_id); @@ -117,7 +111,6 @@ public slots: private: bool isInitialSync_ = true; - bool isWindowFocused_ = false; RoomlistModel *rooms_ = nullptr; CommunitiesModel *communities_ = nullptr;