void QQnxWindow::setGeometry(const QRect &rect) { const QRect oldGeometry = setGeometryHelper(rect); #if !defined(QT_NO_OPENGL) // If this is an OpenGL window we need to request that the GL context updates // the EGLsurface on which it is rendering. The surface will be recreated the // next time QQnxGLContext::makeCurrent() is called. { // We want the setting of the atomic bool in the GL context to be atomic with // setting m_requestedBufferSize and therefore extended the scope to include // that test. const QMutexLocker locker(&m_mutex); m_requestedBufferSize = rect.size(); if (m_platformOpenGLContext != 0 && bufferSize() != rect.size()) m_platformOpenGLContext->requestSurfaceChange(); } #endif // Send a geometry change event to Qt (triggers resizeEvent() in QWindow/QWidget). // Calling flushWindowSystemEvents() here would flush input events which // could result in re-entering QQnxWindow::setGeometry() again. QWindowSystemInterface::setSynchronousWindowsSystemEvents(true); QWindowSystemInterface::handleGeometryChange(window(), rect); QWindowSystemInterface::setSynchronousWindowsSystemEvents(false); // Now move all children. if (!oldGeometry.isEmpty()) { const QPoint offset = rect.topLeft() - oldGeometry.topLeft(); Q_FOREACH (QQnxWindow *childWindow, m_childWindows) childWindow->setOffset(offset); } }
void QQnxWindow::setGeometry(const QRect &rect) { QRect newGeometry = rect; if (shouldMakeFullScreen()) newGeometry = screen()->geometry(); if (window()->type() != Qt::Desktop) setGeometryHelper(newGeometry); if (isExposed()) QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), newGeometry.size())); }
void QDesignerSettings::setGeometryFor(QWidget *w, const QRect &fallBack) const { Q_ASSERT(w && !w->objectName().isEmpty()); setGeometryHelper(w, w->objectName(), fallBack.isNull() ? QRect(QPoint(0, 0), w->sizeHint()) : fallBack); }
QT_BEGIN_NAMESPACE QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context) : QPlatformWindow(window), m_screenContext(context), m_window(0), m_currentBufferIndex(-1), m_previousBufferIndex(-1), #if !defined(QT_NO_OPENGL) m_platformOpenGLContext(0), #endif m_screen(0), m_parentWindow(0), m_visible(true), m_windowState(Qt::WindowNoState), m_requestedBufferSize(window->geometry().size()) { qWindowDebug() << Q_FUNC_INFO << "window =" << window << ", size =" << window->size(); int result; // Create child QNX window errno = 0; result = screen_create_window_type(&m_window, m_screenContext, SCREEN_CHILD_WINDOW); if (result != 0) qFatal("QQnxWindow: failed to create window, errno=%d", errno); // Set window buffer usage based on rendering API int val; QSurface::SurfaceType surfaceType = window->surfaceType(); switch (surfaceType) { case QSurface::RasterSurface: val = SCREEN_USAGE_NATIVE | SCREEN_USAGE_READ | SCREEN_USAGE_WRITE; break; case QSurface::OpenGLSurface: val = SCREEN_USAGE_OPENGL_ES2; break; default: qFatal("QQnxWindow: unsupported window API"); break; } errno = 0; result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_USAGE, &val); if (result != 0) qFatal("QQnxWindow: failed to set window buffer usage, errno=%d", errno); // Alpha channel is always pre-multiplied if present errno = 0; val = SCREEN_PRE_MULTIPLIED_ALPHA; result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_ALPHA_MODE, &val); if (result != 0) qFatal("QQnxWindow: failed to set window alpha mode, errno=%d", errno); // Make the window opaque errno = 0; val = SCREEN_TRANSPARENCY_NONE; result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_TRANSPARENCY, &val); if (result != 0) qFatal("QQnxWindow: failed to set window transparency, errno=%d", errno); // Set the window swap interval errno = 0; val = 1; result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SWAP_INTERVAL, &val); if (result != 0) qFatal("QQnxWindow: failed to set window swap interval, errno=%d", errno); if (window->flags() && Qt::WindowDoesNotAcceptFocus) { errno = 0; val = SCREEN_SENSITIVITY_NO_FOCUS; result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_SENSITIVITY, &val); if (result != 0) qFatal("QQnxWindow: failed to set window sensitivity, errno=%d", errno); } setScreen(static_cast<QQnxScreen *>(window->screen()->handle())); // Add window to plugin's window mapper QQnxIntegration::addWindow(m_window, window); // Qt never calls these setters after creating the window, so we need to do that ourselves here setWindowState(window->windowState()); if (window->parent() && window->parent()->handle()) setParent(window->parent()->handle()); setGeometryHelper(window->geometry()); setVisible(window->isVisible()); }