summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow_p.h
blob: 3f57e6be11ecf0f3af5793f5dd6b26c7487ca586 (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QWINDOW_P_H#define QWINDOW_P_H//// W A R N I N G// -------------//// This file is not part of the Qt API. It exists purely as an// implementation detail. This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include <QtGui/private/qtguiglobal_p.h>#include <QtGui/qscreen.h>#include <QtGui/qwindow.h>#include <qpa/qplatformwindow.h>#include <QtCore/private/qobject_p.h>#include <QtCore/qelapsedtimer.h>#include <QtCore/qxpfunctional.h>#include <QtGui/qicon.h>#include <QtGui/qpalette.h>#include <QtCore/qpointer.h> QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QWindowPrivate :public QObjectPrivate {Q_DECLARE_PUBLIC(QWindow)public:enum PositionPolicy { WindowFrameInclusive, WindowFrameExclusive };QWindowPrivate(decltype(QObjectPrivateVersion) version = QObjectPrivateVersion);~QWindowPrivate() override;voidinit(QWindow *parent, QScreen *targetScreen =nullptr);#ifndef QT_NO_CURSORvoidsetCursor(const QCursor *c =nullptr);boolapplyCursor();#endif QPoint globalPosition()const; QWindow *topLevelWindow(QWindow::AncestorMode mode =QWindow::IncludeTransients)const;virtual QWindow *eventReceiver() {Q_Q(QWindow);return q; }virtual QPalette windowPalette()const{returnQPalette(); }virtualvoidsetVisible(bool visible);voidupdateVisibility();void_q_clearAlert();enum SiblingPosition { PositionTop, PositionBottom };voidupdateSiblingPosition(SiblingPosition);boolwindowRecreationRequired(QScreen *newScreen)const;voidcreate(bool recursive);voiddestroy();voidsetTopLevelScreen(QScreen *newScreen,bool recreate);voidconnectToScreen(QScreen *topLevelScreen);voiddisconnectFromScreen();voidemitScreenChangedRecursion(QScreen *newScreen); QScreen *screenForGeometry(const QRect &rect)const;voidsetTransientParent(QWindow *parent);virtualvoidclearFocusObject();enumclass FocusTarget { First, Last, Current, Next, Prev };virtualvoidsetFocusToTarget(FocusTarget,Qt::FocusReason) {}virtual QRectF closestAcceptableGeometry(const QRectF &rect)const;voidsetMinOrMaxSize(QSize *oldSizeMember,const QSize &size,qxp::function_ref<void()> funcWidthChanged,qxp::function_ref<void()> funcHeightChanged);virtualboolparticipatesInLastWindowClosed()const;virtualbooltreatAsVisible()const;virtualvoidmaybeSynthesizeContextMenuEvent(QMouseEvent *event);const QWindow *forwardToPopup(QEvent *event,const QWindow *activePopupOnPress);boolisPopup()const{return(windowFlags &Qt::WindowType_Mask) ==Qt::Popup; }voidsetAutomaticPositionAndResizeEnabled(bool a){ positionAutomatic = resizeAutomatic = a; }boolupdateDevicePixelRatio();static QWindowPrivate *get(QWindow *window) {return window->d_func(); }staticQt::WindowState effectiveState(Qt::WindowStates);QWindow::SurfaceType surfaceType =QWindow::RasterSurface;Qt::WindowFlags windowFlags =Qt::Window; QWindow *parentWindow =nullptr; QPlatformWindow *platformWindow =nullptr;bool visible=false;bool visibilityOnDestroy =false;bool exposed =false;bool inClose =false; QSurfaceFormat requestedFormat; QString windowTitle; QString windowFilePath; QIcon windowIcon; QRect geometry; qreal devicePixelRatio =1.0;Qt::WindowStates windowState =Qt::WindowNoState;QWindow::Visibility visibility =QWindow::Hidden;bool resizeEventPending =true;bool receivedExpose =false; PositionPolicy positionPolicy = WindowFrameExclusive;bool positionAutomatic =true;// resizeAutomatic suppresses resizing by QPlatformWindow::initialGeometry().// It also indicates that width/height=0 is acceptable (for example, for// the QRollEffect widget) and is thus not cleared in setGeometry().// An alternative approach might be using -1,-1 as a default size.bool resizeAutomatic =true;Qt::ScreenOrientation contentOrientation =Qt::PrimaryOrientation; qreal opacity=1; QRegion mask; QSize minimumSize = {0,0}; QSize maximumSize = {QWINDOWSIZE_MAX, QWINDOWSIZE_MAX}; QSize baseSize; QSize sizeIncrement;Qt::WindowModality modality =Qt::NonModal;bool blockedByModalWindow =false;bool updateRequestPending =false;bool transientParentPropertySet =false; QPointer<QWindow> transientParent; QPointer<QScreen> topLevelScreen;#ifndef QT_NO_CURSOR QCursor cursor = {Qt::ArrowCursor};bool hasCursor =false;#endif QElapsedTimer lastComposeTime;#if QT_CONFIG(vulkan) QVulkanInstance *vulkanInstance =nullptr;#endif}; QT_END_NAMESPACE #endif// QWINDOW_P_H
close