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;
83#if QT_CONFIG(quicktemplates2_multitouch)
84 virtual bool acceptTouch(
const QTouchEvent::TouchPoint &point);
86 virtual bool blockInput(QQuickItem *item,
const QPointF &point)
const;
88 virtual bool handlePress(QQuickItem* item,
const QPointF &point, ulong timestamp);
89 virtual bool handleMove(QQuickItem* item,
const QPointF &point, ulong timestamp);
90 virtual bool handleRelease(QQuickItem* item,
const QPointF &point, ulong timestamp);
91 virtual bool handleReleaseWithoutGrab(
const QEventPoint &) {
return false; }
92 virtual void handleUngrab();
94 bool handleMouseEvent(QQuickItem *item, QMouseEvent *event);
95 bool handleHoverEvent(QQuickItem *item, QHoverEvent *event);
96#if QT_CONFIG(quicktemplates2_multitouch)
97 bool handleTouchEvent(QQuickItem *item, QTouchEvent *event);
100 QMarginsF windowInsets()
const;
101 QPointF windowInsetsTopLeft()
const;
102 void setEffectivePosFromWindowPos(
const QPointF &windowPos);
105 bool usePopupWindow()
const;
106 void adjustPopupItemParentAndWindow();
107 void createOverlay();
108 QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent)
const;
109 void destroyDimmer();
110 void toggleOverlay();
111 void updateContentPalettes(
const QPalette& parentPalette);
113 virtual QQuickPopup::PopupType resolvedPopupType()
const;
115 virtual void showDimmer();
116 virtual void hideDimmer();
117 virtual void resizeDimmer();
119 virtual bool prepareEnterTransition();
120 virtual bool prepareExitTransition();
121 virtual void finalizeEnterTransition();
122 virtual void finalizeExitTransition();
124 virtual void opened();
126 Qt::WindowFlags popupWindowFlags()
const;
127 void setPopupWindowFlags(Qt::WindowFlags flags);
129 QMarginsF getMargins()
const;
131 void setTopMargin(qreal value,
bool reset =
false);
132 void setLeftMargin(qreal value,
bool reset =
false);
133 void setRightMargin(qreal value,
bool reset =
false);
134 void setBottomMargin(qreal value,
bool reset =
false);
136 QQuickPopupAnchors *getAnchors();
137 virtual QQuickPopupPositioner *getPositioner();
139 void setWindow(QQuickWindow *window);
140 void itemDestroyed(QQuickItem *item) override;
142 QPalette defaultPalette()
const override;
144 void updateChildrenPalettes(
const QPalette &parentPalette) override;
146 enum TransitionState {
147 NoTransition, EnterTransition, ExitTransition
150 static const QQuickPopup::ClosePolicy DefaultClosePolicy;
156 bool visible =
false;
157 bool complete =
true;
158 bool positioning =
false;
159 bool hasWidth =
false;
160 bool hasHeight =
false;
161 bool hasTopMargin =
false;
162 bool hasLeftMargin =
false;
163 bool hasRightMargin =
false;
164 bool hasBottomMargin =
false;
166 bool allowVerticalFlip =
false;
167 bool allowHorizontalFlip =
false;
168 bool allowVerticalMove =
true;
169 bool allowHorizontalMove =
true;
170 bool allowVerticalResize =
true;
171 bool allowHorizontalResize =
true;
172 bool hadActiveFocusBeforeExitTransition =
false;
173 bool interactive =
true;
174 bool hasClosePolicy =
false;
175 bool outsidePressed =
false;
176 bool outsideParentPressed =
false;
177 bool inDestructor =
false;
178 bool relaxEdgeConstraint =
false;
179 bool popupWindowDirty =
false;
180 QPointer<QQuickItem> lastActiveFocusItem;
184 QPointF effectivePos;
187 qreal leftMargin = 0;
188 qreal rightMargin = 0;
189 qreal bottomMargin = 0;
191 TransitionState transitionState = NoTransition;
192 QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy;
193 QQuickItem *parentItem =
nullptr;
194 QQuickItem *dimmer =
nullptr;
195 QPointer<QQuickWindow> window;
196 QQuickTransition *enter =
nullptr;
197 QQuickTransition *exit =
nullptr;
198 QQuickPopupItem *popupItem =
nullptr;
199 QQuickPopupWindow *popupWindow =
nullptr;
200 QQuickPopupPositioner *positioner =
nullptr;
201 QList<QQuickStateAction> enterActions;
202 QList<QQuickStateAction> exitActions;
203 QQuickPopupTransitionManager transitionManager;
204 QQuickPopupAnchors *anchors =
nullptr;
205 qreal explicitDimmerOpacity = 0;
206 qreal prevOpacity = 0;
209 QQuickPopup::PopupType popupType = QQuickPopup::Item;
210 Qt::WindowModality popupWndModality = Qt::NonModal;
211 Qt::WindowFlags windowFlags = Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint;
212#if QT_CONFIG(wayland)
214 QNativeInterface::Private::QWaylandWindow::WindowType extendedWindowType = QNativeInterface::Private::QWaylandWindow::Default;
218 QNativeInterface::Private::QXcbWindow::WindowTypes wmWindowType = QNativeInterface::Private::QXcbWindow::None;
221 friend class QQuickPopupTransitionManager;