summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/mirclient/qmirclientwindow.h
diff options
context:
space:
mode:
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