65 Q_DECLARE_PUBLIC(QApplication)
67 QApplicationPrivate(
int &argc,
char **argv);
68 ~QApplicationPrivate();
70 virtual void notifyLayoutDirectionChange() override;
71 virtual void notifyActiveWindowChange(QWindow *) override;
73 static bool autoSipEnabled;
74 static QString desktopStyleKey();
76 void createEventDispatcher() override;
77 static void dispatchEnterLeave(QWidget *enter, QWidget *leave,
const QPointF &globalPosF);
78 static QWidget *desktop();
79 void notifyWindowIconChanged() override;
80 bool compressEvent(QEvent *event, QObject *receiver, QPostEventList *postedEvents) final;
83 QActionPrivate *createActionPrivate()
const override;
86 QShortcutPrivate *createShortcutPrivate()
const override;
90 Qt::WindowModality defaultModality()
const override;
91 bool windowNeverBlocked(QWindow *window)
const override;
92 static bool isBlockedByModal(QWidget *widget);
93 static bool modalState();
94 static bool tryModalHelper(QWidget *widget, QWidget **rettop =
nullptr);
96 bool notify_helper(QObject *receiver, QEvent * e);
100 void process_cmdline();
102 static void setActiveWindow(QWidget* act);
104 static bool inPopupMode();
105 void closePopup(QWidget *popup);
106 void openPopup(QWidget *popup);
107 static bool replayMousePress;
109 static void setFocusWidget(QWidget *focus, Qt::FocusReason reason);
110 static QWidget *focusNextPrevChild_helper(QWidget *toplevel,
bool next,
111 bool *wrappingOccurred =
nullptr);
113#if QT_CONFIG(graphicsview)
116 QList<QGraphicsScene *> scene_list;
119 QBasicTimer toolTipWakeUp, toolTipFallAsleep;
120 QPoint toolTipPos, toolTipGlobalPos;
121 QPointer<QWidget> toolTipWidget;
123 static QSize app_strut;
124 static QWidgetList *popupWidgets;
125 static QStyle *app_style;
128 void handleThemeChanged() override;
130 QPalette basePalette()
const override;
131 void handlePaletteChanged(
const char *className =
nullptr) override;
133#if QT_CONFIG(draganddrop)
134 void notifyDragStarted(
const QDrag *) override;
138 static QFont *sys_font;
139 static QFont *set_font;
140 static QWidget *main_widget;
141 static QWidget *focus_widget;
142 static QWidget *hidden_focus_widget;
143#if QT_CONFIG(wheelevent)
144 static QPointer<QWidget> wheel_widget;
147 static int enabledAnimations;
148 static bool widgetCount;
150 static void initializeWidgetPalettesFromTheme();
151 static void initializeWidgetFontHash();
152 static void setSystemFont(
const QFont &font);
154 using PaletteHash = QHash<QByteArray, QPalette>;
155 static PaletteHash widgetPalettes;
157 static QApplicationPrivate *instance() {
return self; }
159#ifndef QT_NO_STYLE_STYLESHEET
160 static QString styleSheet;
162 static QPointer<QWidget> leaveAfterRelease;
163 static QWidget *pickMouseReceiver(QWidget *candidate,
const QPointF &windowPos, QPointF *pos,
164 QEvent::Type type, Qt::MouseButtons buttons,
165 QWidget *buttonDown, QWidget *alienWidget);
166 static bool sendMouseEvent(QWidget *receiver, QMouseEvent *event, QWidget *alienWidget,
167 QWidget *native, QWidget **buttonDown, QPointer<QWidget> &lastMouseReceiver,
168 bool spontaneous =
true,
bool onlyDispatchEnterLeave =
false);
169 void sendSyntheticEnterLeave(QWidget *widget);
171 static QWindow *windowForWidget(
const QWidget *widget)
173 if (QWindow *window = widget->windowHandle())
175 if (
const QWidget *nativeParent = widget->nativeParentWidget())
176 return nativeParent->windowHandle();
181 static HWND getHWNDForWidget(
const QWidget *widget)
183 if (QWindow *window = windowForWidget(widget))
184 if (
auto *windowInterface = window->nativeInterface<QNativeInterface::Private::QWindowsWindow>())
185 return windowInterface->handle();
190#ifndef QT_NO_GESTURES
191 QGestureManager *gestureManager;
192 QWidget *gestureWidget;
195 static bool updateTouchPointsForWidget(QWidget *widget, QTouchEvent *touchEvent);
196 void initializeMultitouch();
197 void initializeMultitouch_sys();
198 void cleanupMultitouch();
199 void cleanupMultitouch_sys();
200 QWidget *findClosestTouchPointTarget(
const QPointingDevice *device,
const QEventPoint &touchPoint);
201 void appendTouchPoint(
const QEventPoint &touchPoint);
202 void removeTouchPoint(
int touchPointId);
203 enum ImplicitTouchGrabMode { GrabAcceptedPoints, GrabAllPoints };
204 void activateImplicitTouchGrab(QWidget *widget, QTouchEvent *touchBeginEvent,
205 ImplicitTouchGrabMode grabMode = GrabAcceptedPoints);
206 static bool translateRawTouchEvent(QWidget *widget,
const QTouchEvent *touchEvent);
207 static void translateTouchCancel(
const QPointingDevice *device, ulong timestamp);
209 QPixmap applyQIconStyleHelper(QIcon::Mode mode,
const QPixmap& base)
const override;
212 static QApplicationPrivate *self;
213 static bool tryCloseAllWidgetWindows(QWindowList *processedWindows);
215 static void giveFocusAccordingToFocusPolicy(QWidget *w, QEvent *event, QPoint localPos);
216 static bool shouldSetFocus(QWidget *w, Qt::FocusPolicy policy);
218 static QWidget *active_window;
220 static bool isAlien(QWidget *);
Q_GLOBAL_STATIC(DefaultRoleNames, qDefaultRoleNames, { { Qt::DisplayRole, "display" }, { Qt::DecorationRole, "decoration" }, { Qt::EditRole, "edit" }, { Qt::ToolTipRole, "toolTip" }, { Qt::StatusTipRole, "statusTip" }, { Qt::WhatsThisRole, "whatsThis" }, }) const QHash< int