diff options
author | Teo Mrnjavac <teo@kde.org> | 2013-09-11 17:22:45 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-13 11:47:06 +0200 |
commit | 060b862b614285aae88540895736a57eb8563102 (patch) | |
tree | 40d564877eb856e8f7d840d992552b00b8a1cd0c /src/gui | |
parent | f4ebb061899da67aa26c08516fa7ee8c7b11dcbf (diff) |
Bring back Qt4 X11 session management functionality.
Added QXcbSessionManager to the Xcb plugin.
QXcbSessionManager inherits from QPlatformSessionManager, it's a port of
QSessionManager as it is in Qt 4.8.
Minor changes also in QPlatformSessionManager and QGuiApplication to
hook it up.
Task-number: QTBUG-28228
Task-number: QTBUG-30011
Task-number: QTBUG-33033
Change-Id: I50b33d05a1e32c5278dea339f693713acc870a70
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qplatformsessionmanager.cpp | 23 | ||||
-rw-r--r-- | src/gui/kernel/qplatformsessionmanager.h | 15 | ||||
-rw-r--r-- | src/gui/kernel/qsessionmanager.cpp | 3 |
5 files changed, 42 insertions, 4 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 882eefb60e..7f258331d3 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1162,9 +1162,9 @@ void QGuiApplicationPrivate::init() init_plugins(pluginList); QWindowSystemInterface::flushWindowSystemEvents(); +#ifndef QT_NO_SESSIONMANAGER Q_Q(QGuiApplication); -#ifndef QT_NO_SESSIONMANAGER // connect to the session manager session_manager = new QSessionManager(q, session_id, session_key); #endif diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h index a0aef83eed..bd42f18418 100644 --- a/src/gui/kernel/qguiapplication.h +++ b/src/gui/kernel/qguiapplication.h @@ -184,6 +184,9 @@ private: #endif friend class QFontDatabasePrivate; friend class QPlatformIntegration; +#ifndef QT_NO_SESSIONMANAGER + friend class QPlatformSessionManager; +#endif }; QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformsessionmanager.cpp b/src/gui/kernel/qplatformsessionmanager.cpp index 6eb88a9450..97c40d863c 100644 --- a/src/gui/kernel/qplatformsessionmanager.cpp +++ b/src/gui/kernel/qplatformsessionmanager.cpp @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch> +** Copyright (C) 2013 Teo Mrnjavac <teo@kde.org> ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** @@ -42,6 +43,10 @@ #include "qplatformsessionmanager.h" +#include "qguiapplication_p.h" + +#ifndef QT_NO_SESSIONMANAGER + QT_BEGIN_NAMESPACE QPlatformSessionManager::QPlatformSessionManager(const QString &id, const QString &key) @@ -113,6 +118,12 @@ QStringList QPlatformSessionManager::discardCommand() const return m_discardCommand; } +void QPlatformSessionManager::setManagerProperty(const QString &name, const QString &value) +{ + Q_UNUSED(name) + Q_UNUSED(value) +} + void QPlatformSessionManager::setManagerProperty(const QString &name, const QStringList &value) { Q_UNUSED(name) @@ -128,4 +139,16 @@ void QPlatformSessionManager::requestPhase2() { } +void QPlatformSessionManager::appCommitData() +{ + qGuiApp->d_func()->commitData(); +} + +void QPlatformSessionManager::appSaveState() +{ + qGuiApp->d_func()->saveState(); +} + QT_END_NAMESPACE + +#endif // QT_NO_SESSIONMANAGER diff --git a/src/gui/kernel/qplatformsessionmanager.h b/src/gui/kernel/qplatformsessionmanager.h index 0389a7b076..23b7a62436 100644 --- a/src/gui/kernel/qplatformsessionmanager.h +++ b/src/gui/kernel/qplatformsessionmanager.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch> +** Copyright (C) 2013 Teo Mrnjavac <teo@kde.org> ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** @@ -57,6 +58,8 @@ #include <QtGui/qsessionmanager.h> +#ifndef QT_NO_SESSIONMANAGER + QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QPlatformSessionManager @@ -82,16 +85,22 @@ public: virtual void setDiscardCommand(const QStringList &command); virtual QStringList discardCommand() const; + virtual void setManagerProperty(const QString &name, const QString &value); virtual void setManagerProperty(const QString &name, const QStringList &value); virtual bool isPhase2() const; virtual void requestPhase2(); +protected: + virtual void appCommitData(); + virtual void appSaveState(); + + QString m_sessionId; + QString m_sessionKey; + private: QStringList m_restartCommand; QStringList m_discardCommand; - const QString m_sessionId; - const QString m_sessionKey; QSessionManager::RestartHint m_restartHint; Q_DISABLE_COPY(QPlatformSessionManager) @@ -99,4 +108,6 @@ private: QT_END_NAMESPACE +#endif // QT_NO_SESSIONMANAGER + #endif // QPLATFORMSESSIONMANAGER_H diff --git a/src/gui/kernel/qsessionmanager.cpp b/src/gui/kernel/qsessionmanager.cpp index 8ac3c24a8f..8cc8d3d961 100644 --- a/src/gui/kernel/qsessionmanager.cpp +++ b/src/gui/kernel/qsessionmanager.cpp @@ -365,7 +365,8 @@ QStringList QSessionManager::discardCommand() const void QSessionManager::setManagerProperty(const QString &name, const QString &value) { - setManagerProperty(name, QStringList(value)); + Q_D(QSessionManager); + d->platformSessionManager->setManagerProperty(name, value); } /*! |