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 virtual Qt::WindowFlags popupWindowType()
const;
126 QMarginsF getMargins()
const;
128 void setTopMargin(qreal value,
bool reset =
false);
129 void setLeftMargin(qreal value,
bool reset =
false);
130 void setRightMargin(qreal value,
bool reset =
false);
131 void setBottomMargin(qreal value,
bool reset =
false);
133 QQuickPopupAnchors *getAnchors();
134 virtual QQuickPopupPositioner *getPositioner();
136 void setWindow(QQuickWindow *window);
137 void itemDestroyed(QQuickItem *item) override;
139 QPalette defaultPalette()
const override;
141 void updateChildrenPalettes(
const QPalette &parentPalette) override;
143 enum TransitionState {
144 NoTransition, EnterTransition, ExitTransition
147 static const QQuickPopup::ClosePolicy DefaultClosePolicy;
153 bool visible =
false;
154 bool complete =
true;
155 bool positioning =
false;
156 bool hasWidth =
false;
157 bool hasHeight =
false;
158 bool hasTopMargin =
false;
159 bool hasLeftMargin =
false;
160 bool hasRightMargin =
false;
161 bool hasBottomMargin =
false;
163 bool allowVerticalFlip =
false;
164 bool allowHorizontalFlip =
false;
165 bool allowVerticalMove =
true;
166 bool allowHorizontalMove =
true;
167 bool allowVerticalResize =
true;
168 bool allowHorizontalResize =
true;
169 bool hadActiveFocusBeforeExitTransition =
false;
170 bool interactive =
true;
171 bool hasClosePolicy =
false;
172 bool outsidePressed =
false;
173 bool outsideParentPressed =
false;
174 bool inDestructor =
false;
175 bool relaxEdgeConstraint =
false;
176 bool popupWindowDirty =
false;
177 bool savedLastActiveFocusItem =
false;
181 QPointF effectivePos;
184 qreal leftMargin = 0;
185 qreal rightMargin = 0;
186 qreal bottomMargin = 0;
188 TransitionState transitionState = NoTransition;
189 QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy;
190 QQuickItem *parentItem =
nullptr;
191 QQuickItem *dimmer =
nullptr;
192 QPointer<QQuickWindow> window;
193 QQuickTransition *enter =
nullptr;
194 QQuickTransition *exit =
nullptr;
195 QQuickPopupItem *popupItem =
nullptr;
196 QQuickPopupWindow *popupWindow =
nullptr;
197 QQuickPopupPositioner *positioner =
nullptr;
198 QList<QQuickStateAction> enterActions;
199 QList<QQuickStateAction> exitActions;
200 QQuickPopupTransitionManager transitionManager;
201 QQuickPopupAnchors *anchors =
nullptr;
202 qreal explicitDimmerOpacity = 0;
203 qreal prevOpacity = 0;
206 QQuickPopup::PopupType popupType = QQuickPopup::Item;
207 Qt::WindowModality popupWndModality = Qt::NonModal;
209 friend class QQuickPopupTransitionManager;