59 :
public QObjectPrivate
60 ,
public QSafeQuickItemChangeListener<QQuickPopupPrivate>
61 ,
public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate>
64 Q_DECLARE_PUBLIC(QQuickPopup)
68 static QQuickPopupPrivate *get(QQuickPopup *popup)
70 return popup->d_func();
73 QQmlListProperty<QObject> contentData();
74 QQmlListProperty<QQuickItem> contentChildren();
78 bool tryClose(
const QPointF &pos, QQuickPopup::ClosePolicy flags);
80 bool contains(
const QPointF &scenePos)
const;
82#if QT_CONFIG(quicktemplates2_multitouch)
83 virtual bool acceptTouch(
const QTouchEvent::TouchPoint &point);
85 virtual bool blockInput(QQuickItem *item,
const QPointF &point)
const;
87 virtual bool handlePress(QQuickItem* item,
const QPointF &point, ulong timestamp);
88 virtual bool handleMove(QQuickItem* item,
const QPointF &point, ulong timestamp);
89 virtual bool handleRelease(QQuickItem* item,
const QPointF &point, ulong timestamp);
90 virtual bool handleReleaseWithoutGrab(
const QEventPoint &) {
return false; }
91 virtual void handleUngrab();
93 bool handleMouseEvent(QQuickItem *item, QMouseEvent *event);
94 bool handleHoverEvent(QQuickItem *item, QHoverEvent *event);
95#if QT_CONFIG(quicktemplates2_multitouch)
96 bool handleTouchEvent(QQuickItem *item, QTouchEvent *event);
99 QMarginsF windowInsets()
const;
100 QPointF windowInsetsTopLeft()
const;
101 void setEffectivePosFromWindowPos(
const QPointF &windowPos);
104 bool usePopupWindow()
const;
105 void adjustPopupItemParentAndWindow();
106 void createOverlay();
107 QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent)
const;
108 void destroyDimmer();
109 void toggleOverlay();
110 void updateContentPalettes(
const QPalette& parentPalette);
112 virtual QQuickPopup::PopupType resolvedPopupType()
const;
114 virtual void showDimmer();
115 virtual void hideDimmer();
116 virtual void resizeDimmer();
118 virtual bool prepareEnterTransition();
119 virtual bool prepareExitTransition();
120 virtual void finalizeEnterTransition();
121 virtual void finalizeExitTransition();
123 virtual void opened();
125 Qt::WindowFlags popupWindowFlags()
const;
126 void setPopupWindowFlags(Qt::WindowFlags flags);
128 QMarginsF getMargins()
const;
130 void setTopMargin(qreal value,
bool reset =
false);
131 void setLeftMargin(qreal value,
bool reset =
false);
132 void setRightMargin(qreal value,
bool reset =
false);
133 void setBottomMargin(qreal value,
bool reset =
false);
135 QQuickPopupAnchors *getAnchors();
136 virtual QQuickPopupPositioner *getPositioner();
138 void setWindow(QQuickWindow *window);
139 void itemDestroyed(QQuickItem *item) override;
141 QPalette defaultPalette()
const override;
143 void updateChildrenPalettes(
const QPalette &parentPalette) override;
145 enum TransitionState {
146 NoTransition, EnterTransition, ExitTransition
149 static const QQuickPopup::ClosePolicy DefaultClosePolicy;
155 bool visible =
false;
156 bool complete =
true;
157 bool positioning =
false;
158 bool hasWidth =
false;
159 bool hasHeight =
false;
160 bool hasTopMargin =
false;
161 bool hasLeftMargin =
false;
162 bool hasRightMargin =
false;
163 bool hasBottomMargin =
false;
165 bool allowVerticalFlip =
false;
166 bool allowHorizontalFlip =
false;
167 bool allowVerticalMove =
true;
168 bool allowHorizontalMove =
true;
169 bool allowVerticalResize =
true;
170 bool allowHorizontalResize =
true;
171 bool hadActiveFocusBeforeExitTransition =
false;
172 bool interactive =
true;
173 bool hasClosePolicy =
false;
174 bool outsidePressed =
false;
175 bool outsideParentPressed =
false;
176 bool inDestructor =
false;
177 bool relaxEdgeConstraint =
false;
178 bool popupWindowDirty =
false;
179 QPointer<QQuickItem> lastActiveFocusItem;
183 QPointF effectivePos;
186 qreal leftMargin = 0;
187 qreal rightMargin = 0;
188 qreal bottomMargin = 0;
190 TransitionState transitionState = NoTransition;
191 QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy;
192 QQuickItem *parentItem =
nullptr;
193 QQuickItem *dimmer =
nullptr;
194 QPointer<QQuickWindow> window;
195 QQuickTransition *enter =
nullptr;
196 QQuickTransition *exit =
nullptr;
197 QQuickPopupItem *popupItem =
nullptr;
198 QQuickPopupWindow *popupWindow =
nullptr;
199 QQuickPopupPositioner *positioner =
nullptr;
200 QList<QQuickStateAction> enterActions;
201 QList<QQuickStateAction> exitActions;
202 QQuickPopupTransitionManager transitionManager;
203 QQuickPopupAnchors *anchors =
nullptr;
204 qreal explicitDimmerOpacity = 0;
205 qreal prevOpacity = 0;
208 QQuickPopup::PopupType popupType = QQuickPopup::Item;
209 Qt::WindowModality popupWndModality = Qt::NonModal;
210 Qt::WindowFlags windowFlags = Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint;
211#if QT_CONFIG(wayland)
213 QNativeInterface::Private::QWaylandWindow::WindowType extendedWindowType = QNativeInterface::Private::QWaylandWindow::Default;
216 friend class QQuickPopupTransitionManager;