summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/mirclient/qmirclientwindow.h
diff options
context:
space:
mode:
authorGerry Boland <gerry.boland@canonical.com>2016-11-02 16:46:53 +0000
committerMatti Paaso <matti.paaso@qt.io>2017-01-24 05:52:52 +0000
commitc28fde3fdac19fd5a5f614bb7983080031c924b3 (patch)
tree441d2d4ea4e1e17db49ed3b12c7c724cbc6db894 /src/plugins/platforms/mirclient/qmirclientwindow.h
parent4b507e8257243e36f40089d57099c2d668c5884d (diff)
Mirclient: update based on upstream development in lp:qtubuntu
This is based on revision 360 of lp:qtubuntu. Main features/bugs fixed: - fix QQuickWidget-based app rendering - wire up Qt window types to Mir to enable desktop-based applications to function with a window manager - use QEGLPlatformContext and QEGLPBuffer instead of custom code - correctly populate and update list of QScreens - support for switching keyboard layouts - improve window resizing to fix visual glitching Change-Id: If816a858eb10b6356275d4b80c89a72562b3c29f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Matti Paaso <matti.paaso@qt.io>
Diffstat (limited to 'src/plugins/platforms/mirclient/qmirclientwindow.h')
-rw-r--r--src/plugins/platforms/mirclient/qmirclientwindow.h50
1 files changed, 40 insertions, 10 deletions
diff --git a/src/plugins/platforms/mirclient/qmirclientwindow.h b/src/plugins/platforms/mirclient/qmirclientwindow.h
index 025976c130..324e7691ff 100644
--- a/src/plugins/platforms/mirclient/qmirclientwindow.h
+++ b/src/plugins/platforms/mirclient/qmirclientwindow.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2014-2015 Canonical, Ltd.
+** Copyright (C) 2014-2016 Canonical, Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
@@ -45,44 +45,74 @@
#include <QSharedPointer>
#include <QMutex>
+#include <mir_toolkit/common.h> // needed only for MirFormFactor enum
+
#include <memory>
-class QMirClientClipboard;
+#include <EGL/egl.h>
+
+class QMirClientAppStateController;
+class QMirClientDebugExtension;
+class QMirClientNativeInterface;
class QMirClientInput;
class QMirClientScreen;
-class QMirClientSurface;
-struct MirConnection;
+class UbuntuSurface;
struct MirSurface;
+class MirConnection;
class QMirClientWindow : public QObject, public QPlatformWindow
{
Q_OBJECT
public:
- QMirClientWindow(QWindow *w, const QSharedPointer<QMirClientClipboard> &clipboard, QMirClientScreen *screen,
- QMirClientInput *input, MirConnection *mirConnection);
+ QMirClientWindow(QWindow *w, QMirClientInput *input, QMirClientNativeInterface* native,
+ QMirClientAppStateController *appState, EGLDisplay eglDisplay,
+ MirConnection *mirConnection, QMirClientDebugExtension *debugExt);
virtual ~QMirClientWindow();
// QPlatformWindow methods.
WId winId() const override;
+ QRect geometry() const override;
void setGeometry(const QRect&) override;
void setWindowState(Qt::WindowState state) override;
+ void setWindowFlags(Qt::WindowFlags flags) override;
void setVisible(bool visible) override;
void setWindowTitle(const QString &title) override;
void propagateSizeHints() override;
+ bool isExposed() const override;
+
+ QPoint mapToGlobal(const QPoint &pos) const override;
+ QSurfaceFormat format() const override;
+
+ // Additional Window properties exposed by NativeInterface
+ MirFormFactor formFactor() const { return mFormFactor; }
+ float scale() const { return mScale; }
// New methods.
void *eglSurface() const;
MirSurface *mirSurface() const;
void handleSurfaceResized(int width, int height);
- void handleSurfaceFocused();
+ void handleSurfaceExposeChange(bool exposed);
+ void handleSurfaceFocusChanged(bool focused);
+ void handleSurfaceVisibilityChanged(bool visible);
+ void handleSurfaceStateChanged(Qt::WindowState state);
void onSwapBuffersDone();
+ void handleScreenPropertiesChange(MirFormFactor formFactor, float scale);
+ QString persistentSurfaceId();
private:
- void updatePanelHeightHack(Qt::WindowState);
+ void updateSurfaceState();
mutable QMutex mMutex;
const WId mId;
- const QSharedPointer<QMirClientClipboard> mClipboard;
- std::unique_ptr<QMirClientSurface> mSurface;
+ Qt::WindowState mWindowState;
+ Qt::WindowFlags mWindowFlags;
+ bool mWindowVisible;
+ bool mWindowExposed;
+ QMirClientAppStateController *mAppStateController;
+ QMirClientDebugExtension *mDebugExtention;
+ QMirClientNativeInterface *mNativeInterface;
+ std::unique_ptr<UbuntuSurface> mSurface;
+ float mScale;
+ MirFormFactor mFormFactor;
};
#endif // QMIRCLIENTWINDOW_H