60 :
public QObjectPrivate
61 ,
public QSafeQuickItemChangeListener<QQuickPopupPrivate>
62 ,
public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate>
65 Q_DECLARE_PUBLIC(QQuickPopup)
69 static QQuickPopupPrivate *get(QQuickPopup *popup)
71 return popup->d_func();
74 QQmlListProperty<QObject> contentData();
75 QQmlListProperty<QQuickItem> contentChildren();
79 bool tryClose(
const QPointF &pos, QQuickPopup::ClosePolicy flags);
81 bool contains(
const QPointF &scenePos)
const;
82 bool belongsToOverlayChildAbove(QQuickItem *item)
const;
84#if QT_CONFIG(quicktemplates2_multitouch)
85 virtual bool acceptTouch(
const QTouchEvent::TouchPoint &point);
87 virtual bool blockInput(QQuickItem *item,
const QPointF &point)
const;
89 virtual bool handlePress(QQuickItem* item,
const QPointF &point, ulong timestamp);
90 virtual bool handleMove(QQuickItem* item,
const QPointF &point, ulong timestamp);
91 virtual bool handleRelease(QQuickItem* item,
const QEventPoint &point);
92 virtual bool handleReleaseWithoutGrab(
const QEventPoint &) {
return false; }
93 virtual void handleUngrab();
95 bool handleMouseEvent(QQuickItem *item, QMouseEvent *event);
96 bool handleHoverEvent(QQuickItem *item, QHoverEvent *event);
97#if QT_CONFIG(quicktemplates2_multitouch)
98 bool handleTouchEvent(QQuickItem *item, QTouchEvent *event);
101 QMarginsF windowInsets()
const;
102 QPointF windowInsetsTopLeft()
const;
103 void setEffectivePosFromWindowPos(
const QPointF &windowPos);
106 bool usePopupWindow()
const;
107 void adjustPopupItemParentAndWindow();
108 void createOverlay();
109 QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent)
const;
110 void destroyDimmer();
111 void toggleOverlay();
112 void updateContentPalettes(
const QPalette& parentPalette);
114 virtual QQuickPopup::PopupType resolvedPopupType()
const;
116 virtual void showDimmer();
117 virtual void hideDimmer();
118 virtual void resizeDimmer();
120 virtual bool prepareEnterTransition();
121 virtual bool prepareExitTransition();
122 virtual void finalizeEnterTransition();
123 virtual void finalizeExitTransition();
125 virtual void opened();
127 Qt::WindowFlags popupWindowFlags()
const;
128 void setPopupWindowFlags(Qt::WindowFlags flags);
130 QMarginsF getMargins()
const;
132 void setTopMargin(qreal value,
bool reset =
false);
133 void setLeftMargin(qreal value,
bool reset =
false);
134 void setRightMargin(qreal value,
bool reset =
false);
135 void setBottomMargin(qreal value,
bool reset =
false);
137 QQuickPopupAnchors *getAnchors();
138 virtual QQuickPopupPositioner *getPositioner();
140 void setWindow(QQuickWindow *window);
141 void itemDestroyed(QQuickItem *item) override;
143 QPalette defaultPalette()
const override;
145 void updateChildrenPalettes(
const QPalette &parentPalette) override;
147 enum TransitionState {
148 NoTransition, EnterTransition, ExitTransition
151 static const QQuickPopup::ClosePolicy DefaultClosePolicy;
157 bool visible =
false;
158 bool complete =
true;
159 bool positioning =
false;
160 bool hasWidth =
false;
161 bool hasHeight =
false;
162 bool hasTopMargin =
false;
163 bool hasLeftMargin =
false;
164 bool hasRightMargin =
false;
165 bool hasBottomMargin =
false;
167 bool allowVerticalFlip =
false;
168 bool allowHorizontalFlip =
false;
169 bool allowVerticalMove =
true;
170 bool allowHorizontalMove =
true;
171 bool allowVerticalResize =
true;
172 bool allowHorizontalResize =
true;
173 bool hadActiveFocusBeforeExitTransition =
false;
174 bool interactive =
true;
175 bool hasClosePolicy =
false;
176 bool outsidePressed =
false;
177 bool outsideParentPressed =
false;
178 bool inDestructor =
false;
179 bool relaxEdgeConstraint =
false;
180 bool popupWindowDirty =
false;
181 QPointer<QQuickItem> lastActiveFocusItem;
185 QPointF effectivePos;
188 qreal leftMargin = 0;
189 qreal rightMargin = 0;
190 qreal bottomMargin = 0;
192 TransitionState transitionState = NoTransition;
193 QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy;
194 QQuickItem *parentItem =
nullptr;
195 QQuickItem *dimmer =
nullptr;
196 QPointer<QQuickWindow> window;
197 QQuickTransition *enter =
nullptr;
198 QQuickTransition *exit =
nullptr;
199 QQuickPopupItem *popupItem =
nullptr;
200 QQuickPopupWindow *popupWindow =
nullptr;
201 QQuickPopupPositioner *positioner =
nullptr;
202 QList<QQuickStateAction> enterActions;
203 QList<QQuickStateAction> exitActions;
204 QQuickPopupTransitionManager transitionManager;
205 QQuickPopupAnchors *anchors =
nullptr;
206 qreal explicitDimmerOpacity = 0;
207 qreal prevOpacity = 0;
210 QQuickPopup::PopupType popupType = QQuickPopup::Item;
211 Qt::WindowModality popupWndModality = Qt::NonModal;
212 Qt::WindowFlags windowFlags = Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint;
213#if QT_CONFIG(wayland)
215 QNativeInterface::Private::QWaylandWindow::WindowType extendedWindowType = QNativeInterface::Private::QWaylandWindow::Default;
219 QNativeInterface::Private::QXcbWindow::WindowTypes wmWindowType = QNativeInterface::Private::QXcbWindow::None;
222 friend class QQuickPopupTransitionManager;