17#include <QtGui/QWindow>
18#include <qpa/qwindowsysteminterface.h>
20#include "private/qguiapplication_p.h"
21#include "private/qhighdpiscaling_p.h"
23#include <QtCore/QDebug>
31#define DECLARE_DEBUG_VAR(variable)
32 static bool debug_ ## variable()
33 { static bool value = qgetenv("QNX_SCREEN_DEBUG").contains(QT_STRINGIFY(variable)); return value; }
41#undef DECLARE_DEBUG_VAR
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
125 m_firstActivateHandled(
false),
128 qCDebug(lcQpaWindow) <<
"window =" << window <<
", size =" << window->size();
134 QVariant windowGroup = window->property(
"qnxInitialWindowGroup");
135 if (!windowGroup.isValid())
136 windowGroup = window->property(
"_q_platform_qnxParentGroup");
138 if (window->type() == Qt::CoverWindow) {
143 }
else if (parent() || windowGroup.isValid()) {
146 m_isTopLevel =
false;
153 QVariant type = window->property(
"_q_platform_qnxWindowType");
154 if (type.isValid() && type.canConvert<
int>()) {
156 screen_create_window_type(&m_window, m_screenContext, type.value<
int>()),
157 "Could not create window");
158 }
else if (m_isTopLevel) {
160 "Could not create top level window");
161 if (window->type() != Qt::CoverWindow) {
167 screen_create_window_type(&m_window, m_screenContext, SCREEN_CHILD_WINDOW),
168 "Could not create child window");
176 QVariant windowId = window->property(
"qnxWindowId");
177 if (!windowId.isValid())
178 windowId = window->property(
"_q_platform_qnxWindowId");
179 if (windowId.isValid() && windowId.canConvert<QByteArray>()) {
180 QByteArray id = windowId.toByteArray();
182 id.size(), id),
"Failed to set id");
187 if (windowGroup.isValid() && windowGroup.canConvert<QByteArray>())
188 joinWindowGroup(windowGroup.toByteArray());
190 QVariant pipelineValue = window->property(
"_q_platform_qnxPipeline");
191 if (pipelineValue.isValid()) {
193 int pipeline = pipelineValue.toInt(&ok);
195 qCDebug(lcQpaWindow) <<
"Set pipeline value to" << pipeline;
198 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_PIPELINE, &pipeline),
199 "Failed to set window pipeline");
201 qCDebug(lcQpaWindow) <<
"Invalid pipeline value:" << pipelineValue;
208 switch (window->type()) {
211 m_desktopNotify = DesktopNotifyPosition | DesktopNotifyVisible;
215 m_desktopNotify = DesktopNotifyTitle | DesktopNotifyVisible;
221 screen_manage_window(m_window,
222 (m_desktopNotify & DesktopNotifyTitle) ?
"Frame=Y" :
"Frame=N");
226 if (Q_UNLIKELY(debug_fps())) {
227 debug |= SCREEN_DEBUG_GRAPH_FPS;
229 if (Q_UNLIKELY(debug_posts())) {
230 debug |= SCREEN_DEBUG_GRAPH_POSTS;
232 if (Q_UNLIKELY(debug_blits())) {
233 debug |= SCREEN_DEBUG_GRAPH_BLITS;
235 if (Q_UNLIKELY(debug_updates())) {
236 debug |= SCREEN_DEBUG_GRAPH_UPDATES;
238 if (Q_UNLIKELY(debug_cpu_time())) {
239 debug |= SCREEN_DEBUG_GRAPH_CPU_TIME;
241 if (Q_UNLIKELY(debug_gpu_time())) {
242 debug |= SCREEN_DEBUG_GRAPH_GPU_TIME;
244 if (Q_UNLIKELY(debug_statistics())) {
245 debug = SCREEN_DEBUG_STATISTICS;
249 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(nativeHandle(), SCREEN_PROPERTY_DEBUG, &debug),
250 "Could not set SCREEN_PROPERTY_DEBUG");
251 qCDebug(lcQpaWindow) <<
"window SCREEN_PROPERTY_DEBUG= " << debug;
266 , m_isTopLevel(
false)
268 qCDebug(lcQpaWindow) <<
"window =" << window <<
", size =" << window->size();
270 collectWindowGroup();
272 screen_get_window_property_cv(m_window,
273 SCREEN_PROPERTY_PARENT,
274 m_parentGroupName.size(),
275 m_parentGroupName.data());
276 m_parentGroupName.resize(strlen(m_parentGroupName.constData()));
280 QVariant parentGroup = window->property(
"qnxInitialWindowGroup");
281 if (!parentGroup.isValid())
282 parentGroup = window->property(
"_q_platform_qnxParentGroup");
283 if (parentGroup.isValid() && parentGroup.canConvert<QByteArray>())
284 joinWindowGroup(parentGroup.toByteArray());
289 qCDebug(lcQpaWindow) <<
"window =" << window();
293 Q_ASSERT(m_childWindows.size() == 0);
297 if (m_postEventRegistered)
308 removeContextPermission();
310 screen_destroy_window(m_window);
315 QRect newGeometry = rect;
316 if (shouldMakeFullScreen())
317 newGeometry = screen()->geometry();
319 setGeometryHelper(newGeometry);
322 QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), newGeometry.size()));
325void QQnxWindow::setGeometryHelper(
const QRect &rect)
327 qCDebug(lcQpaWindow) <<
"window =" << window()
328 <<
", (" << rect.x() <<
"," << rect.y()
329 <<
"," << rect.width() <<
"," << rect.height() <<
")";
332 QPlatformWindow::setGeometry(rect);
337 if (m_desktopNotify & DesktopNotifyPosition) {
338 notifyManager(QString::asprintf(
"Pos=%d,%d", rect.x(), rect.y()));
342 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_POSITION, val),
343 "Failed to set window position");
346 val[0] = rect.width();
347 val[1] = rect.height();
349 "Failed to set window size");
352 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_SIZE, val),
353 "Failed to set window source size");
355 screen_flush_context(m_screenContext, 0);
357 QWindowSystemInterface::handleGeometryChange(window(), rect);
362 qCDebug(lcQpaWindow) <<
"window =" << window() <<
"visible =" << visible;
364 if (m_visible == visible)
368 if (m_parentGroupName.isNull() && !m_isTopLevel) {
369 joinWindowGroup(parent() ?
static_cast<QQnxWindow*>(parent())->groupName()
370 : QByteArray(m_screen->windowGroupName()));
376 while (root->m_parentWindow)
377 root = root->m_parentWindow;
379 root->updateVisibility(root->m_visible);
381 const QSize windowSize = QHighDpi::toNativePixels(window()->geometry().size(), window());
382 QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), windowSize));
390 if (m_isTopLevel && !showWithoutActivating())
393 if (showWithoutActivating() && focusable() && m_firstActivateHandled) {
394 m_firstActivateHandled =
false;
395 int val = SCREEN_SENSITIVITY_NO_FOCUS;
397 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SENSITIVITY, &val),
398 "Failed to set window sensitivity");
402 screen_flush_context(m_screenContext, 0);
406 if (m_isTopLevel && window() == QGuiApplication::focusWindow()) {
407 QWindow *nextFocus = QGuiApplication::modalWindow();
410 const auto windows = QGuiApplication::topLevelWindows();
411 for (
auto it = windows.rbegin(); it != windows.rend(); ++it) {
412 if (*it != window() && (*it)->isVisible() && (*it)->handle()) {
419 nextFocus->requestActivate();
421 QWindowSystemInterface::handleFocusWindowChanged(
nullptr);
426void QQnxWindow::updateVisibility(
bool parentVisible)
428 qCDebug(lcQpaWindow) <<
"parentVisible =" << parentVisible <<
"window =" << window();
430 int val = (m_visible && parentVisible) ? 1 : 0;
431 if (m_desktopNotify & DesktopNotifyVisible) {
432 notifyManager(QString(
"Visible=") + (val ?
"Y" :
"N"));
434 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &val),
435 "Failed to set window visibility");
438 Q_FOREACH (QQnxWindow *childWindow, m_childWindows)
439 childWindow->updateVisibility(m_visible && parentVisible);
444 qCDebug(lcQpaWindow) <<
"window =" << window() <<
"opacity =" << level;
446 int val = (
int)(level * 255);
447 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_GLOBAL_ALPHA, &val),
448 "Failed to set global alpha");
450 screen_flush_context(m_screenContext, 0);
455 qCDebug(lcQpaWindow) <<
"window =" << window() <<
"expose =" << exposed;
457 if (m_exposed != exposed) {
459 const QSize windowSize = QHighDpi::toNativePixels(window()->geometry().size(), window());
460 QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), windowSize));
466 return m_visible && m_exposed;
471 qCDebug(lcQpaWindow) <<
"window =" << window() <<
"size =" << size;
474 const QSize nonEmptySize = size.isEmpty() ? QSize(1, 1) : size;
477 if (nonEmptySize == m_bufferSize || format == -1)
481 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_FORMAT, &format),
482 "Failed to set window format");
484 int val[2] = { nonEmptySize.width(), nonEmptySize.height() };
485 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_BUFFER_SIZE, val),
486 "Failed to set window buffer size");
488 if (m_bufferSize.isValid()) {
489 m_bufferSize = nonEmptySize;
495 "Failed to create window buffers");
500 screen_get_window_property_iv(m_window, SCREEN_PROPERTY_RENDER_BUFFER_COUNT, &bufferCount),
501 "Failed to query render buffer count");
504 qFatal(
"QQnxWindow: invalid buffer count. Expected = %d, got = %d.",
511 if (size.isEmpty()) {
515 val[0] = SCREEN_TRANSPARENCY_DISCARD;
516 }
else if (window()->requestedFormat().alphaBufferSize() == 0) {
519 val[0] = SCREEN_TRANSPARENCY_NONE;
525 val[0] = SCREEN_TRANSPARENCY_SOURCE_OVER;
528 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_TRANSPARENCY, val),
529 "Failed to set window transparency");
532 m_bufferSize = nonEmptySize;
538 qCDebug(lcQpaWindow) <<
"window =" << window() <<
"platformScreen =" << platformScreen;
540 if (platformScreen == 0) {
542 Q_FOREACH (QQnxWindow *childWindow, m_childWindows) {
543 childWindow->setScreen(0);
548 if (m_screen == platformScreen)
552 qCDebug(lcQpaWindow) <<
"Moving window to different screen";
556 screen_leave_window_group(m_window);
560 m_screen = platformScreen;
561 if (!m_parentWindow) {
566 screen_display_t display = platformScreen->nativeDisplay();
568 screen_set_window_property_pv(m_window, SCREEN_PROPERTY_DISPLAY, (
void **)&display),
569 "Failed to set window display");
571 Q_FOREACH (QQnxWindow *childWindow, m_childWindows) {
573 if (window()->type() == Qt::SubWindow || window()->type() == Qt::ToolTip)
574 childWindow->setScreen(platformScreen);
583 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"window =" << window();
585 if (m_parentWindow) {
586 if (Q_UNLIKELY(!m_parentWindow->m_childWindows.removeAll(
this)))
587 qFatal(
"QQnxWindow: Window Hierarchy broken; window has parent, but parent hasn't got child.");
589 m_parentWindow =
nullptr;
590 }
else if (m_screen) {
597 qCDebug(lcQpaWindow) <<
"window =" <<
this->window() <<
"platformWindow =" << window;
601 if (newParent == m_parentWindow)
604 if (
static_cast<QQnxScreen *>(screen())->rootWindow() ==
this) {
605 qWarning(
"Application window cannot be reparented");
610 m_parentWindow = newParent;
613 if (m_parentWindow) {
614 if (m_parentWindow->m_screen != m_screen)
617 m_parentWindow->m_childWindows.push_back(
this);
618 joinWindowGroup(m_parentWindow->groupName());
621 joinWindowGroup(QByteArray());
629 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"window =" << window();
631 if (m_parentWindow) {
632 m_parentWindow->m_childWindows.removeAll(
this);
633 m_parentWindow->m_childWindows.push_back(
this);
643 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"window =" << window();
645 if (m_parentWindow) {
646 m_parentWindow->m_childWindows.removeAll(
this);
647 m_parentWindow->m_childWindows.push_front(
this);
658 if (QGuiApplication::focusWindow())
659 focusWindow =
static_cast<QQnxWindow*>(QGuiApplication::focusWindow()->handle());
661 if (focusWindow ==
this)
664 if (
static_cast<QQnxScreen *>(screen())->rootWindow() ==
this ||
665 (focusWindow && findWindow(focusWindow->nativeHandle()))) {
668 setFocus(nativeHandle());
673 QList<QQnxWindow*> windowList;
674 while (currentWindow) {
675 auto platformScreen =
static_cast<QQnxScreen *>(screen());
676 windowList.prepend(currentWindow);
678 if (currentWindow == focusWindow)
681 if (currentWindow->parent()){
682 currentWindow =
static_cast<
QQnxWindow*>(currentWindow->parent());
683 }
else if (platformScreen->rootWindow() &&
684 platformScreen->rootWindow()->m_windowGroupName == currentWindow->m_parentGroupName) {
685 currentWindow = platformScreen->rootWindow();
687 currentWindow =
nullptr;
692 for (
int i = 1; i < windowList.size(); ++i)
693 windowList.at(i-1)->setFocus(windowList.at(i)->nativeHandle());
695 windowList.last()->setFocus(windowList.constLast()->nativeHandle());
698 screen_flush_context(m_screenContext, 0);
704 QWindow *activateTarget = window();
705 QWindow *blockingWindow =
nullptr;
706 if (QGuiApplicationPrivate::instance()->isWindowBlocked(activateTarget, &blockingWindow)
708 activateTarget = blockingWindow;
710 QWindowSystemInterface::handleFocusWindowChanged(activateTarget, Qt::ActiveWindowFocusReason);
713void QQnxWindow::setFocus(screen_window_t newFocusWindow)
715 screen_window_t temporaryFocusWindow =
nullptr;
717 screen_group_t screenGroup = 0;
719 reinterpret_cast<
void **>(&screenGroup)),
720 "Failed to retrieve window group");
722 if (showWithoutActivating() && focusable() && !m_firstActivateHandled) {
723 m_firstActivateHandled =
true;
724 int val = SCREEN_SENSITIVITY_TEST;
726 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SENSITIVITY, &val),
727 "Failed to set window sensitivity");
734 screen_window_t oldFocusWindow =
nullptr;
737 reinterpret_cast<
void **>(&oldFocusWindow)),
738 "Failed to retrieve group focus");
739 if (newFocusWindow == oldFocusWindow) {
741 memset(groupName, 0,
sizeof(groupName));
743 sizeof(groupName) - 1, groupName),
744 "Failed to retrieve group name");
747 m_screenContext, SCREEN_CHILD_WINDOW),
748 "Failed to create temporary focus window");
750 "Temporary focus window failed to join window group");
753 reinterpret_cast<
void **>(&temporaryFocusWindow)),
754 "Temporary focus window failed to take focus");
755 screen_flush_context(m_screenContext, 0);
761 reinterpret_cast<
void **>(&newFocusWindow)),
762 "Failed to set group focus");
764 screen_destroy_window(temporaryFocusWindow);
769 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"state =" << state;
772 if (m_windowState == state)
775 m_windowState = state;
794 if (m_window == windowHandle)
797 Q_FOREACH (QQnxWindow *window, m_childWindows) {
798 QQnxWindow *
const result = window->findWindow(windowHandle);
808 qWarning(
"Qt::WindowMinimized is not supported by this OS version");
813 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"angle =" << rotation;
815 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_ROTATION, &rotation),
816 "Failed to set window rotation");
822 int val = SCREEN_PRE_MULTIPLIED_ALPHA;
823 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_ALPHA_MODE, &val),
824 "Failed to set alpha mode");
829 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SWAP_INTERVAL, &val),
830 "Failed to set swap interval");
832 if (showWithoutActivating() || !focusable()) {
837 val = SCREEN_SENSITIVITY_NO_FOCUS;
839 screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SENSITIVITY, &val),
840 "Failed to set window sensitivity");
846 if (window()->type() == Qt::CoverWindow)
851 m_postEventRegistered =
855 setWindowState(window()->windowState());
856 setOpacity(window()->opacity());
858 if (window()->parent() && window()->parent()->handle())
859 setParent(window()->parent()->handle());
861 setGeometryHelper(shouldMakeFullScreen()
862 ? screen()->geometry()
863 : QHighDpi::toNativePixels(window()->geometry(), window()));
868 QByteArray groupName(256, 0);
870 SCREEN_PROPERTY_GROUP,
873 "Failed to retrieve window group");
874 groupName.resize(strlen(groupName.constData()));
875 m_windowGroupName = groupName;
881 "Failed to create window group");
883 collectWindowGroup();
888 bool changed =
false;
890 qCDebug(lcQpaWindow) << Q_FUNC_INFO <<
"group:" << groupName;
900 if (m_foreign && !m_parentGroupName.isEmpty())
901 addContextPermission();
903 if (!groupName.isEmpty()) {
904 if (groupName != m_parentGroupName) {
905 screen_join_window_group(m_window, groupName);
906 m_parentGroupName = groupName;
910 if (!m_parentGroupName.isEmpty()) {
911 screen_leave_window_group(m_window);
918 m_parentGroupName =
"";
921 if (m_foreign && !groupName.isEmpty())
922 removeContextPermission();
925 screen_flush_context(m_screenContext, 0);
930 updateZorder(m_window, topZorder);
932 Q_FOREACH (QQnxWindow *childWindow, m_childWindows)
933 childWindow->updateZorder(topZorder);
936void QQnxWindow::updateZorder(screen_window_t window,
int &topZorder)
938 Q_SCREEN_CHECKERROR(screen_set_window_property_iv(window, SCREEN_PROPERTY_ZORDER, &topZorder),
939 "Failed to set window z-order");
945 if (m_windowState & Qt::WindowMinimized) {
948 if (m_unmaximizedGeometry.isValid())
949 setGeometry(m_unmaximizedGeometry);
951 setGeometry(m_screen->geometry());
952 }
else if (m_windowState & (Qt::WindowMaximized | Qt::WindowFullScreen)) {
953 m_unmaximizedGeometry = geometry();
954 setGeometry(m_windowState & Qt::WindowFullScreen ? m_screen->geometry()
955 : m_screen->availableGeometry());
956 }
else if (m_unmaximizedGeometry.isValid()) {
957 setGeometry(m_unmaximizedGeometry);
963 if (m_postEventRegistered) {
964 m_waitingForPost.storeRelease(1);
968 m_cover->updateCover();
984 return m_isTopLevel && window()->type() != Qt::CoverWindow;
990 if (showWithoutActivating() && focusable() && !m_firstActivateHandled)
996 return (window()->flags() & Qt::Popup) == Qt::Popup
997 || window()->property(
"_q_showWithoutActivating").toBool();
1002 return (window()->flags() & Qt::WindowDoesNotAcceptFocus) != Qt::WindowDoesNotAcceptFocus;
1007 QByteArray grantString(
"context:");
1009 grantString.append(
":rw-");
1010 screen_set_window_property_cv(m_window,
1011 SCREEN_PROPERTY_PERMISSIONS,
1012 grantString.length(),
1013 grantString.data());
1018 if (m_desktopNotify & DesktopNotifyTitle) {
1019 QString titleStr =
"Title=" + title;
1020 notifyManager(titleStr);
1026 Q_ASSERT(hasPendingUpdateRequest());
1028 if (!m_postEventRegistered) {
1029 qCDebug(lcQpaWindow) <<
"requestUpdate: post event not registered, using fallback timer" << window();
1030 QPlatformWindow::requestUpdate();
1034 if (m_waitingForPost.loadAcquire()) {
1035 qCDebug(lcQpaWindow) <<
"requestUpdate: frame in-flight, deferring" << window();
1039 if (m_fallbackQueued.testAndSetRelaxed(0, 1)) {
1040 QSharedPointer<
bool> alive = m_alive;
1041 QMetaObject::invokeMethod(window(), [
this, alive]() {
1044 m_fallbackQueued.storeRelaxed(0);
1045 if (m_waitingForPost.loadAcquire())
1047 if (hasPendingUpdateRequest())
1048 deliverUpdateRequest();
1049 }, Qt::QueuedConnection);
1055 if (!m_waitingForPost.testAndSetAcquire(1, 0)) {
1056 qCDebug(lcQpaWindow) <<
"handlePostEvent: duplicate/early pulse, ignoring" << window();
1060 qCDebug(lcQpaWindow) <<
"handlePostEvent: post pulse received" << window();
1063 qCDebug(lcQpaWindow) <<
"handlePostEvent: delivering update" << window();
1064 deliverUpdateRequest();
1068void QQnxWindow::notifyManager(
const QString &msg)
1071 screen_create_event(&ev);
1073 std::string str = msg.toStdString();
1074 screen_set_event_property_iv(ev, SCREEN_PROPERTY_TYPE,
1075 (
const int[]){ SCREEN_EVENT_MANAGER });
1076 screen_set_event_property_cv(ev, SCREEN_PROPERTY_USER_DATA, str.length(),
1078 screen_set_event_property_pv(ev, SCREEN_PROPERTY_WINDOW,
1079 reinterpret_cast<
void **>(&m_window));
1080 screen_set_event_property_pv(ev, SCREEN_PROPERTY_CONTEXT,
1081 reinterpret_cast<
void **>(&m_screenContext));
1084 "Failed to send a message to the window manager");
1089 QByteArray revokeString(
"context:");
1091 revokeString.append(
":---");
1092 screen_set_window_property_cv(m_window,
1093 SCREEN_PROPERTY_PERMISSIONS,
1094 revokeString.length(),
1095 revokeString.data());
static QQnxIntegration * instance()
void lowerWindow(QQnxWindow *window)
void raiseWindow(QQnxWindow *window)
void removeWindow(QQnxWindow *child)
void addWindow(QQnxWindow *child)
void setRootWindow(QQnxWindow *)
QQnxWindow * rootWindow() const
The QQnxWindow is the base class of the various classes used as instances of QPlatformWindow in the Q...
void setExposed(bool exposed)
void requestActivateWindow() override
Reimplement to let Qt be able to request activation/focus for a window.
virtual int pixelFormat() const =0
QQnxWindow(QWindow *window, screen_context_t context, screen_window_t screenWindow)
QQnxWindow * findWindow(screen_window_t windowHandle)
void setParent(const QPlatformWindow *window) override
This function is called to enable native child window in QPA.
bool shouldMakeFullScreen() const
void setVisible(bool visible) override
Reimplemented in subclasses to show the surface if visible is true, and hide it if visible is false.
virtual void resetBuffers()=0
bool isExposed() const override
Returns if this window is exposed in the windowing system.
void raise() override
Reimplement to be able to let Qt raise windows to the top of the desktop.
QQnxWindow(QWindow *window, screen_context_t context, bool needRootWindow)
void joinWindowGroup(const QByteArray &groupName)
void propagateSizeHints() override
Reimplement to propagate the size hints of the QWindow.
void setWindowTitle(const QString &title)
Reimplement to set the window title to title.
void setScreen(QQnxScreen *platformScreen)
void setBufferSize(const QSize &size)
void setWindowState(Qt::WindowStates state) override
Requests setting the window state of this surface to type.
QPlatformScreen * screen() const override
Returns the platform screen handle corresponding to this platform window, or null if the window is no...
void setRotation(int rotation)
void handleActivationEvent()
void requestUpdate() override
Requests an QEvent::UpdateRequest event.
void lower() override
Reimplement to be able to let Qt lower windows to the bottom of the desktop.
void setGeometry(const QRect &rect) override
This function is called by Qt whenever a window is moved or resized using the QWindow API.
void setOpacity(qreal level) override
Reimplement to be able to let Qt set the opacity level of a window.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
#define Q_SCREEN_CRITICALERROR(x, message)
#define Q_SCREEN_CHECKERROR(x, message)
void qqnxLgmonFramePosted(bool)
const int SCREEN_PROPERTY_FOCUS
#define _SCREEN_MAKE_VERSION(major, minor, patch)
#define DECLARE_DEBUG_VAR(variable)