blob: 7c9442f9e78c01b7c6b0909b86aaf985e6cf6fd1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
// Copyright (C) 2011 - 2013 BlackBerry Limited. All rights reserved.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QQNXWINDOW_H
#define QQNXWINDOW_H
#include <qpa/qplatformwindow.h>
#include "qqnxabstractcover.h"
#include <QtCore/QScopedPointer>
#include <QtCore/QLoggingCategory>
#if !defined(QT_NO_OPENGL)
#include <EGL/egl.h>
#endif
#include <screen/screen.h>
QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(lcQpaWindow);
// all surfaces double buffered
#define MAX_BUFFER_COUNT 2
class QQnxScreen;
class QSurfaceFormat;
class QQnxWindow : public QPlatformWindow
{
friend class QQnxScreen;
public:
explicit QQnxWindow(QWindow *window, screen_context_t context, bool needRootWindow);
explicit QQnxWindow(QWindow *window, screen_context_t context, screen_window_t screenWindow);
virtual ~QQnxWindow();
void setGeometry(const QRect &rect) override;
void setVisible(bool visible) override;
void setOpacity(qreal level) override;
bool isExposed() const override;
WId winId() const override { return (WId)m_window; }
screen_window_t nativeHandle() const { return m_window; }
void setBufferSize(const QSize &size);
QSize bufferSize() const { return m_bufferSize; }
void setScreen(QQnxScreen *platformScreen);
void setParent(const QPlatformWindow *window) override;
void raise() override;
void lower() override;
void requestActivateWindow() override;
void setWindowState(Qt::WindowStates state) override;
void setExposed(bool exposed);
void propagateSizeHints() override;
QPlatformScreen *screen() const override;
const QList<QQnxWindow*>& children() const { return m_childWindows; }
QQnxWindow *findWindow(screen_window_t windowHandle);
void minimize();
void setRotation(int rotation);
QByteArray groupName() const { return m_windowGroupName; }
void joinWindowGroup(const QByteArray &groupName);
bool shouldMakeFullScreen() const;
void windowPosted();
void handleActivationEvent();
void setWindowTitle(const QString &title);
protected:
virtual int pixelFormat() const = 0;
virtual void resetBuffers() = 0;
void initWindow();
screen_context_t m_screenContext;
private:
void collectWindowGroup();
void createWindowGroup();
void setGeometryHelper(const QRect &rect);
void removeFromParent();
void updateVisibility(bool parentVisible);
void updateZorder(int &topZorder);
void updateZorder(screen_window_t window, int &zOrder);
void applyWindowState();
void setFocus(screen_window_t newFocusWindow);
bool showWithoutActivating() const;
bool focusable() const;
void notifyManager(const QString &msg);
void addContextPermission();
void removeContextPermission();
screen_window_t m_window;
QSize m_bufferSize;
QQnxScreen *m_screen;
QQnxWindow *m_parentWindow;
QList<QQnxWindow*> m_childWindows;
QScopedPointer<QQnxAbstractCover> m_cover;
bool m_visible;
bool m_exposed;
bool m_foreign;
QRect m_unmaximizedGeometry;
Qt::WindowStates m_windowState;
// Group name of window group headed by this window
QByteArray m_windowGroupName;
// Group name that we have joined or "" if we've not joined any group.
QByteArray m_parentGroupName;
bool m_isTopLevel;
bool m_firstActivateHandled;
int m_desktopNotify;
enum {
DesktopNotifyTitle = 0x1,
DesktopNotifyPosition = 0x2,
DesktopNotifyVisible = 0x2
};
};
QT_END_NAMESPACE
#endif // QQNXWINDOW_H
|