58 :
public QObjectPrivate
59 ,
public QSafeQuickItemChangeListener<QQuickPopupPrivate>
60 ,
public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate>
63 Q_DECLARE_PUBLIC(QQuickPopup)
67 static QQuickPopupPrivate *get(QQuickPopup *popup)
69 return popup->d_func();
72 QQmlListProperty<QObject> contentData();
73 QQmlListProperty<QQuickItem> contentChildren();
77 bool tryClose(
const QPointF &pos, QQuickPopup::ClosePolicy flags);
79 bool contains(
const QPointF &scenePos)
const;
81#if QT_CONFIG(quicktemplates2_multitouch)
82 virtual bool acceptTouch(
const QTouchEvent::TouchPoint &point);
84 virtual bool blockInput(QQuickItem *item,
const QPointF &point)
const;
86 virtual bool handlePress(QQuickItem* item,
const QPointF &point, ulong timestamp);
87 virtual bool handleMove(QQuickItem* item,
const QPointF &point, ulong timestamp);
88 virtual bool handleRelease(QQuickItem* item,
const QPointF &point, ulong timestamp);
89 virtual bool handleReleaseWithoutGrab(
const QEventPoint &) {
return false; }
90 virtual void handleUngrab();
92 bool handleMouseEvent(QQuickItem *item, QMouseEvent *event);
93 bool handleHoverEvent(QQuickItem *item, QHoverEvent *event);
94#if QT_CONFIG(quicktemplates2_multitouch)
95 bool handleTouchEvent(QQuickItem *item, QTouchEvent *event);
98 QMarginsF windowInsets()
const;
99 QPointF windowInsetsTopLeft()
const;
100 void setEffectivePosFromWindowPos(
const QPointF &windowPos);
103 bool usePopupWindow()
const;
104 void adjustPopupItemParentAndWindow();
105 void createOverlay();
106 QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent)
const;
107 void destroyDimmer();
108 void toggleOverlay();
109 void updateContentPalettes(
const QPalette& parentPalette);
111 virtual QQuickPopup::PopupType resolvedPopupType()
const;
113 virtual void showDimmer();
114 virtual void hideDimmer();
115 virtual void resizeDimmer();
117 virtual bool prepareEnterTransition();
118 virtual bool prepareExitTransition();
119 virtual void finalizeEnterTransition();
120 virtual void finalizeExitTransition();
122 virtual void opened();
124 Qt::WindowFlags popupWindowFlags()
const;
125 void setPopupWindowFlags(Qt::WindowFlags flags);
127 QMarginsF getMargins()
const;
129 void setTopMargin(qreal value,
bool reset =
false);
130 void setLeftMargin(qreal value,
bool reset =
false);
131 void setRightMargin(qreal value,
bool reset =
false);
132 void setBottomMargin(qreal value,
bool reset =
false);
134 QQuickPopupAnchors *getAnchors();
135 virtual QQuickPopupPositioner *getPositioner();
137 void setWindow(QQuickWindow *window);
138 void itemDestroyed(QQuickItem *item) override;
140 QPalette defaultPalette()
const override;
142 void updateChildrenPalettes(
const QPalette &parentPalette) override;
144 enum TransitionState {
145 NoTransition, EnterTransition, ExitTransition
148 static const QQuickPopup::ClosePolicy DefaultClosePolicy;
154 bool visible =
false;
155 bool complete =
true;
156 bool positioning =
false;
157 bool hasWidth =
false;
158 bool hasHeight =
false;
159 bool hasTopMargin =
false;
160 bool hasLeftMargin =
false;
161 bool hasRightMargin =
false;
162 bool hasBottomMargin =
false;
164 bool allowVerticalFlip =
false;
165 bool allowHorizontalFlip =
false;
166 bool allowVerticalMove =
true;
167 bool allowHorizontalMove =
true;
168 bool allowVerticalResize =
true;
169 bool allowHorizontalResize =
true;
170 bool hadActiveFocusBeforeExitTransition =
false;
171 bool interactive =
true;
172 bool hasClosePolicy =
false;
173 bool outsidePressed =
false;
174 bool outsideParentPressed =
false;
175 bool inDestructor =
false;
176 bool relaxEdgeConstraint =
false;
177 bool popupWindowDirty =
false;
178 QPointer<QQuickItem> lastActiveFocusItem;
182 QPointF effectivePos;
185 qreal leftMargin = 0;
186 qreal rightMargin = 0;
187 qreal bottomMargin = 0;
189 TransitionState transitionState = NoTransition;
190 QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy;
191 QQuickItem *parentItem =
nullptr;
192 QQuickItem *dimmer =
nullptr;
193 QPointer<QQuickWindow> window;
194 QQuickTransition *enter =
nullptr;
195 QQuickTransition *exit =
nullptr;
196 QQuickPopupItem *popupItem =
nullptr;
197 QQuickPopupWindow *popupWindow =
nullptr;
198 QQuickPopupPositioner *positioner =
nullptr;
199 QList<QQuickStateAction> enterActions;
200 QList<QQuickStateAction> exitActions;
201 QQuickPopupTransitionManager transitionManager;
202 QQuickPopupAnchors *anchors =
nullptr;
203 qreal explicitDimmerOpacity = 0;
204 qreal prevOpacity = 0;
207 QQuickPopup::PopupType popupType = QQuickPopup::Item;
208 Qt::WindowModality popupWndModality = Qt::NonModal;
209 Qt::WindowFlags windowFlags = Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint;
211 friend class QQuickPopupTransitionManager;