Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmenu_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QMENU_P_H
6#define QMENU_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include "QtWidgets/qmenu.h"
21#if QT_CONFIG(menubar)
22#include "QtWidgets/qmenubar.h"
23#endif
24#include "QtWidgets/qstyleoption.h"
25#include "QtCore/qdatetime.h"
26#include "QtCore/qmap.h"
27#include "QtCore/qhash.h"
28#include "QtCore/qbasictimer.h"
29#include "private/qwidget_p.h"
30
31#include <qpa/qplatformmenu.h>
32
33#include <QtCore/qpointer.h>
34
35#include <functional>
36
38
40
41static inline int pick(Qt::Orientation o, const QPoint &pos)
42{ return o == Qt::Horizontal ? pos.x() : pos.y(); }
43
44static inline int pick(Qt::Orientation o, const QSize &size)
45{ return o == Qt::Horizontal ? size.width() : size.height(); }
46
47static inline int &rpick(Qt::Orientation o, QPoint &pos)
48{ return o == Qt::Horizontal ? pos.rx() : pos.ry(); }
49
50static inline int &rpick(Qt::Orientation o, QSize &size)
51{ return o == Qt::Horizontal ? size.rwidth() : size.rheight(); }
52
53static inline QSizePolicy::Policy pick(Qt::Orientation o, const QSizePolicy &policy)
54{ return o == Qt::Horizontal ? policy.horizontalPolicy() : policy.verticalPolicy(); }
55
56static inline int perp(Qt::Orientation o, const QPoint &pos)
57{ return o == Qt::Vertical ? pos.x() : pos.y(); }
58
59static inline int perp(Qt::Orientation o, const QSize &size)
60{ return o == Qt::Vertical ? size.width() : size.height(); }
61
62static inline int &rperp(Qt::Orientation o, QPoint &pos)
63{ return o == Qt::Vertical ? pos.rx() : pos.ry(); }
64
65static inline int &rperp(Qt::Orientation o, QSize &size)
66{ return o == Qt::Vertical ? size.rwidth() : size.rheight(); }
67
68static inline int pick(Qt::Orientation o, const QMargins &m)
69{ return o == Qt::Horizontal ? (m.left() + m.right()) : (m.top() + m.bottom()); }
70
71static inline int perp(Qt::Orientation o, const QMargins &m)
72{ return o == Qt::Vertical ? (m.left() + m.right()) : (m.top() + m.bottom()); }
73
74class QTornOffMenu;
75class QEventLoop;
76
77template <typename T>
79{
80public:
81 QSetValueOnDestroy(T &toSet, T value)
82 : toSet(toSet)
83 , value(value)
84 { }
85
86 ~QSetValueOnDestroy() { toSet = value; }
87private:
88 T &toSet;
89 T value;
90};
91
93{
95public:
97 : m_enabled(false)
98 , m_uni_directional(false)
100 , m_use_reset_action(true)
101 { }
102
104
117
118 void reset();
119 bool enabled() const { return m_enabled; }
120
126
128 {
129 if (m_enabled)
130 m_time.start(m_timeout, m_menu);
131 }
132
134 {
135 if (!m_time.isActive())
137 }
138
140 {
141 m_time.stop();
142 }
143
144 void enter();
145 void childEnter();
146
147 void leave();
148 void childLeave();
149
150 static qreal slope(const QPointF &p1, const QPointF &p2)
151 {
152 const QPointF slope = p2 - p1;
153 if (qFuzzyIsNull(slope.x()))
154 return 9999;
155 return slope.y() / slope.x();
156 }
157
158 bool checkSlope(qreal oldS, qreal newS, bool wantSteeper)
159 {
160 if (wantSteeper)
161 return oldS <= newS;
162 return newS <= oldS;
163 }
164
165 MouseEventResult processMouseEvent(const QPointF &mousePos, QAction *resetAction, QAction *currentAction)
166 {
167 if (m_parent)
168 m_parent->stopTimer();
169
170 if (!m_enabled)
172
174
175 if (!m_sub_menu) {
176 reset();
178 }
179
180 QSetValueOnDestroy<bool> setFirstMouse(m_first_mouse, false);
181 QSetValueOnDestroy<QPointF> setPreviousPoint(m_previous_point, mousePos);
182
183 if (resetAction && resetAction->isSeparator()) {
184 m_reset_action = nullptr;
185 m_use_reset_action = true;
186 } else if (m_reset_action != resetAction) {
187 if (m_use_reset_action && resetAction) {
188 const QList<QAction *> actions = m_menu->actions();
189 const int resetIdx = actions.indexOf(resetAction);
190 const int originIdx = actions.indexOf(m_origin_action);
191 if (resetIdx > -1 && originIdx > -1 && qAbs(resetIdx - originIdx) > 1)
192 m_use_reset_action = false;
193 }
194 m_reset_action = resetAction;
195 }
196
197 if (m_action_rect.contains(mousePos)) {
199 return currentAction == m_menu->menuAction() ? EventIsProcessed : EventShouldBePropagated;
200 }
201
202 if (m_uni_directional && !m_first_mouse && resetAction != m_origin_action) {
203 bool left_to_right = m_menu->layoutDirection() == Qt::LeftToRight;
204 QRect sub_menu_rect = m_sub_menu->geometry();
205 QPoint sub_menu_top =
206 left_to_right? sub_menu_rect.topLeft() : sub_menu_rect.topRight();
207 QPoint sub_menu_bottom =
208 left_to_right? sub_menu_rect.bottomLeft() : sub_menu_rect.bottomRight();
209 qreal prev_slope_top = slope(m_previous_point, sub_menu_top);
210 qreal prev_slope_bottom = slope(m_previous_point, sub_menu_bottom);
211
212 qreal current_slope_top = slope(mousePos, sub_menu_top);
213 qreal current_slope_bottom = slope(mousePos, sub_menu_bottom);
214
215 bool slopeTop = checkSlope(prev_slope_top, current_slope_top, sub_menu_top.y() < mousePos.y());
216 bool slopeBottom = checkSlope(prev_slope_bottom, current_slope_bottom, sub_menu_bottom.y() > mousePos.y());
217 bool rightDirection = false;
218 int mouseDir = int(m_previous_point.y() - mousePos.y());
219 if (mouseDir >= 0) {
220 rightDirection = rightDirection || slopeTop;
221 }
222 if (mouseDir <= 0) {
223 rightDirection = rightDirection || slopeBottom;
224 }
225
226 if (m_uni_dir_discarded_count >= m_uni_dir_fail_at_count && !rightDirection) {
227 m_uni_dir_discarded_count = 0;
229 }
230
231 if (!rightDirection)
232 m_uni_dir_discarded_count++;
233 else
234 m_uni_dir_discarded_count = 0;
235
236 }
237
238 return m_select_other_actions ? EventShouldBePropagated : EventIsProcessed;
239 }
240
241 void setSubMenuPopup(const QRect &actionRect, QAction *resetAction, QMenu *subMenu);
242 bool hasParentActiveDelayTimer() const;
243 void timeout();
244 int timeForTimeout() const { return m_timeout; }
245
246 bool isTimerId(int timerId) const { return m_time.timerId() == timerId; }
247 QMenu *subMenu() const { return m_sub_menu; }
248
249private:
250 QMenu *m_menu = nullptr;
251 QAction *m_reset_action = nullptr;
252 QAction *m_origin_action = nullptr;
253 QRectF m_action_rect;
254 QPointF m_previous_point;
255 QPointer<QMenu> m_sub_menu;
256 QMenuSloppyState *m_parent = nullptr;
257 QBasicTimer m_time;
258 short m_uni_dir_discarded_count = 0;
259 short m_uni_dir_fail_at_count = 0;
260 short m_timeout = 0;
261 bool m_init_guard = false;
262 bool m_first_mouse = true;
263
264 bool m_enabled : 1;
265 bool m_uni_directional : 1;
266 bool m_select_other_actions : 1;
267 bool m_discard_state_when_entering_parent : 1;
268 bool m_dont_start_time_on_leave : 1;
269 bool m_use_reset_action : 1;
270};
271
273{
274 Q_DECLARE_PUBLIC(QMenu)
275public:
277
279 itemsDirty(false),
280 hasCheckableItems(false),
281 lastContextMenu(false),
283 toolTipsVisible(false),
284 delayedPopupGuard(false),
285 hasReceievedEnter(false),
286 hasHadMouse(false),
287 aboutToHide(false),
288 tearoff(false),
289 tornoff(false),
290 tearoffHighlighted(false),
291 doChildEffects(false)
292 { }
293
295 {
296 delete scroll;
297 if (!platformMenu.isNull() && !platformMenu->parent())
298 delete platformMenu.data();
299 }
300 void init();
302 void setPlatformMenu(QPlatformMenu *menu);
303 void syncPlatformMenu();
304 void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem *item);
305 QPlatformMenuItem *insertActionInPlatformMenu(const QAction *action, QPlatformMenuItem *beforeItem);
306
307#ifdef Q_OS_MACOS
309#endif
310
311 static QMenuPrivate *get(QMenu *m) { return m->d_func(); }
312 int scrollerHeight() const;
313
314 bool isContextMenu() const;
315
316 //item calculations
317 QRect actionRect(QAction *) const;
318
321 void updateActionRects() const;
322 void updateActionRects(const QRect &screen) const;
323 QRect popupGeometry(QScreen *screen = nullptr) const;
324 bool useFullScreenForPopup() const;
325 int getLastVisibleAction() const;
326 void popup(const QPoint &p, QAction *atAction, PositionFunction positionFunction = {});
327 QAction *exec(const QPoint &p, QAction *action, PositionFunction positionFunction = {});
328
329 //selection
330 static QMenu *mouseDown;
332
334#ifdef QT_KEYPAD_NAVIGATION
335 QAction *selectAction = nullptr;
336 QAction *cancelAction = nullptr;
337#endif
338 struct DelayState {
340 { }
341 void initialize(QMenu *parent)
342 {
343 this->parent = parent;
344 }
345
346 void start(int timeout, QAction *toStartAction)
347 {
348 if (timer.isActive() && toStartAction == action)
349 return;
350 action = toStartAction;
351 timer.start(timeout,parent);
352 }
353 void stop()
354 {
355 action = nullptr;
356 timer.stop();
357 }
358
359 QMenu *parent = nullptr;
360 QAction *action = nullptr;
362 } delayState;
371 };
372 QWidget *topCausedWidget() const;
373 QAction *actionAt(QPoint p) const;
375 void setCurrentAction(QAction *, int popup = -1, SelectionReason reason = SelectedFromElsewhere,
377 bool activateFirst = false);
378 void popupAction(QAction *, int, bool);
379 void setSyncAction();
380
381 //scrolling support
393 void scrollMenu(QMenuScroller::ScrollLocation location, bool active=false);
394 void scrollMenu(QMenuScroller::ScrollDirection direction, bool page=false, bool active=false);
395 void scrollMenu(QAction *action, QMenuScroller::ScrollLocation location, bool active=false);
396
397 //synchronous operation (ie exec())
398 QEventLoop *eventLoop = nullptr;
400
401 //search buffer
404
405 //passing of mouse events up the parent hierarchy
407 bool mouseEventTaken(QMouseEvent *);
408
409 //used to walk up the popup list
414 virtual QList<QPointer<QWidget>> calcCausedStack() const;
416 void hideUpToMenuBar();
417 void hideMenu(QMenu *menu);
419
420 //index mappings
421 inline QAction *actionAt(int i) const { return q_func()->actions().at(i); }
422 inline int indexOf(QAction *act) const { return q_func()->actions().indexOf(act); }
423
424 //tear off support
426
428
429 //default action
431
432 QAction *menuAction = nullptr;
434
435 void setOverrideMenuAction(QAction *);
437
438 //firing of events
439 void activateAction(QAction *, QAction::ActionEvent, bool self=true);
440 void activateCausedStack(const QList<QPointer<QWidget>> &, QAction *, QAction::ActionEvent,
441 bool);
442
443 void _q_actionTriggered();
444 void _q_actionHovered();
446
447 bool hasMouseMoved(const QPoint &globalPos);
448
450
452
454
456
458 public:
460 ScrollerTearOffItem(Type type, QMenuPrivate *mPrivate,
461 QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
462 void paintEvent(QPaintEvent *e) override;
463 void updateScrollerRects(const QRect &rect);
464
465 private:
466 QMenuPrivate *menuPrivate;
467 Type scrollType;
468 };
471
472 void drawScroller(QPainter *painter, ScrollerTearOffItem::Type type, const QRect &rect);
473 void drawTearOff(QPainter *painter, const QRect &rect);
474 QRect rect() const;
475
476 bool considerAction(const QAction *action) const
477 {
478 Q_Q(const QMenu);
479 if (!action || action->isSeparator())
480 return false;
481 if (action->isEnabled())
482 return true;
483 return q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q);
484 }
485
486 mutable uint maxIconWidth = 0;
487 mutable uint tabWidth = 0;
488 int motions = 0;
490
492
493 mutable quint8 ncols = 0; // "255cols ought to be enough for anybody."
494
495 // Contains the screen of the popup point during popup(QPoint).
496 // This is to make sure the screen is remembered,
497 // when the menu contains many items on multiple screens
499
500 mutable bool itemsDirty : 1;
501 mutable bool hasCheckableItems : 1;
507 // Selection
508 bool hasHadMouse : 1;
509 bool aboutToHide : 1;
510 // Tear-off menus
511 bool tearoff : 1;
512 bool tornoff : 1;
514 //menu fading/scrolling effects
516};
517
518QT_END_NAMESPACE
519
520#endif // QMENU_P_H
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-l...
Definition qdockwidget.h:21
\inmodule QtCore
Definition qhash.h:837
The QMainWindow class provides a main application window.
Definition qmainwindow.h:26
ScrollerTearOffItem(Type type, QMenuPrivate *mPrivate, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
Definition qmenu.cpp:1026
void updateScrollerRects(const QRect &rect)
Definition qmenu.cpp:1052
void paintEvent(QPaintEvent *e) override
This event handler can be reimplemented in a subclass to receive paint events passed in event.
Definition qmenu.cpp:1033
void updateLayoutDirection()
Definition qmenu.cpp:947
void init()
Definition qmenu.cpp:158
QPointer< QPlatformMenu > platformMenu
Definition qmenu_p.h:451
quint8 ncols
Definition qmenu_p.h:493
QEventLoop * eventLoop
Definition qmenu_p.h:398
QAction * menuAction
Definition qmenu_p.h:432
uint maxIconWidth
Definition qmenu_p.h:486
QList< QRect > actionRects
Definition qmenu_p.h:319
bool delayedPopupGuard
Definition qmenu_p.h:505
QPointer< QWidget > noReplayFor
Definition qmenu_p.h:455
void _q_actionTriggered()
Definition qmenu.cpp:1514
void hideUpToMenuBar()
Definition qmenu.cpp:518
@ SelectedFromElsewhere
Definition qmenu_p.h:366
@ SelectedFromKeyboard
Definition qmenu_p.h:364
@ SelectedFromAPI
Definition qmenu_p.h:365
void scrollMenu(QMenuScroller::ScrollLocation location, bool active=false)
Definition qmenu.cpp:1235
QString searchBuffer
Definition qmenu_p.h:402
int getLastVisibleAction() const
Definition qmenu.cpp:489
void popupAction(QAction *, int, bool)
Definition qmenu.cpp:648
void activateCausedStack(const QList< QPointer< QWidget > > &, QAction *, QAction::ActionEvent, bool)
Definition qmenu.cpp:1404
static QMenu * mouseDown
Definition qmenu_p.h:330
void popup(const QPoint &p, QAction *atAction, PositionFunction positionFunction={})
Definition qmenu.cpp:2309
void updateActionRects() const
Definition qmenu.cpp:333
bool tearoffHighlighted
Definition qmenu_p.h:513
QPointer< QTornOffMenu > tornPopup
Definition qmenu_p.h:425
void setSyncAction()
Definition qmenu.cpp:667
int indexOf(QAction *act) const
Definition qmenu_p.h:422
QPointer< QAction > syncAction
Definition qmenu_p.h:399
void syncPlatformMenu()
Definition qmenu.cpp:204
bool lastContextMenu
Definition qmenu_p.h:502
QPlatformMenuItem * insertActionInPlatformMenu(const QAction *action, QPlatformMenuItem *beforeItem)
Definition qmenu.cpp:265
bool hasHadMouse
Definition qmenu_p.h:508
int scrollerHeight() const
Definition qmenu.cpp:279
QPlatformMenu * createPlatformMenu()
Definition qmenu.cpp:183
bool hasCheckableItems
Definition qmenu_p.h:501
void setFirstActionActive()
Definition qmenu.cpp:685
void updateActionRects(const QRect &screen) const
Definition qmenu.cpp:338
void hideMenu(QMenu *menu)
Definition qmenu.cpp:546
QBasicTimer searchBufferTimer
Definition qmenu_p.h:403
void _q_overrideMenuActionDestroyed()
Definition qmenu.cpp:942
bool mouseEventTaken(QMouseEvent *)
Definition qmenu.cpp:1315
ScrollerTearOffItem * scrollDownItem
Definition qmenu_p.h:470
bool isContextMenu() const
Definition qmenu.cpp:324
void _q_platformMenuAboutToShow()
Definition qmenu.cpp:1554
QPointer< QAction > defaultAction
Definition qmenu_p.h:430
virtual QList< QPointer< QWidget > > calcCausedStack() const
Definition qmenu.cpp:309
void drawScroller(QPainter *painter, ScrollerTearOffItem::Type type, const QRect &rect)
Definition qmenu.cpp:963
QRect actionRect(QAction *) const
Definition qmenu.cpp:506
QRect rect() const
Definition qmenu.cpp:1013
bool useFullScreenForPopup() const
Definition qmenu.cpp:287
void activateAction(QAction *, QAction::ActionEvent, bool self=true)
Definition qmenu.cpp:1445
bool collapsibleSeparators
Definition qmenu_p.h:503
void copyActionToPlatformItem(const QAction *action, QPlatformMenuItem *item)
Definition qmenu.cpp:228
QMenuSloppyState sloppyState
Definition qmenu_p.h:427
QHash< QAction *, QWidget * > widgetItems
Definition qmenu_p.h:320
bool tearoff
Definition qmenu_p.h:511
bool itemsDirty
Definition qmenu_p.h:500
QPointer< QAction > actionAboutToTrigger
Definition qmenu_p.h:453
void scrollMenu(QAction *action, QMenuScroller::ScrollLocation location, bool active=false)
Definition qmenu.cpp:1121
void setOverrideMenuAction(QAction *)
Definition qmenu.cpp:930
bool activationRecursionGuard
Definition qmenu_p.h:491
QAction * actionAt(QPoint p) const
Definition qmenu.cpp:918
QWidget * topCausedWidget() const
Definition qmenu.cpp:910
static QMenuPrivate * get(QMenu *m)
Definition qmenu_p.h:311
QPointF mousePopupPos
Definition qmenu_p.h:331
bool aboutToHide
Definition qmenu_p.h:509
void scrollMenu(QMenuScroller::ScrollDirection direction, bool page=false, bool active=false)
Definition qmenu.cpp:1268
QPointer< QScreen > popupScreen
Definition qmenu_p.h:498
QWindow * transientParentWindow() const
Definition qmenu.cpp:625
void drawTearOff(QPainter *painter, const QRect &rect)
Definition qmenu.cpp:989
bool tornoff
Definition qmenu_p.h:512
bool toolTipsVisible
Definition qmenu_p.h:504
QPointer< QMenu > activeMenu
Definition qmenu_p.h:406
void setCurrentAction(QAction *, int popup=-1, SelectionReason reason=SelectedFromElsewhere, SelectionDirection direction=SelectionDirection::Down, bool activateFirst=false)
Definition qmenu.cpp:706
QAction * currentAction
Definition qmenu_p.h:333
QAction * exec(const QPoint &p, QAction *action, PositionFunction positionFunction={})
Definition qmenu.cpp:2680
uint tabWidth
Definition qmenu_p.h:487
void _q_actionHovered()
Definition qmenu.cpp:1546
QRect popupGeometry(QScreen *screen=nullptr) const
Definition qmenu.cpp:292
QMenuCaused causedPopup
Definition qmenu_p.h:415
bool doChildEffects
Definition qmenu_p.h:515
bool hasReceievedEnter
Definition qmenu_p.h:506
bool hasMouseMoved(const QPoint &globalPos)
Definition qmenu.cpp:1575
bool considerAction(const QAction *action) const
Definition qmenu_p.h:476
ScrollerTearOffItem * scrollUpTearOffItem
Definition qmenu_p.h:469
QAction * defaultMenuAction
Definition qmenu_p.h:433
void setPlatformMenu(QPlatformMenu *menu)
Definition qmenu.cpp:191
int mousePopupDelay
Definition qmenu_p.h:489
void childEnter()
Definition qmenu.cpp:809
bool hasParentActiveDelayTimer() const
Definition qmenu.cpp:849
QMenu * subMenu() const
Definition qmenu_p.h:247
bool checkSlope(qreal oldS, qreal newS, bool wantSteeper)
Definition qmenu_p.h:158
MouseEventResult processMouseEvent(const QPointF &mousePos, QAction *resetAction, QAction *currentAction)
Definition qmenu_p.h:165
bool isTimerId(int timerId) const
Definition qmenu_p.h:246
void startTimer()
Definition qmenu_p.h:127
void childLeave()
Definition qmenu.cpp:825
@ EventDiscardsSloppyState
Definition qmenu_p.h:124
@ EventShouldBePropagated
Definition qmenu_p.h:123
bool enabled() const
Definition qmenu_p.h:119
void setSubMenuPopup(const QRect &actionRect, QAction *resetAction, QMenu *subMenu)
Definition qmenu.cpp:834
static qreal slope(const QPointF &p1, const QPointF &p2)
Definition qmenu_p.h:150
void stopTimer()
Definition qmenu_p.h:139
int timeForTimeout() const
Definition qmenu_p.h:244
void startTimerIfNotRunning()
Definition qmenu_p.h:133
friend class QWidget
Definition qpainter.h:431
QSetValueOnDestroy(T &toSet, T value)
Definition qmenu_p.h:81
void animate(QWidget *widget, const QRect &final_geometry, bool animate)
void abort(QWidget *widget)
bool animating() const
Combined button and popup list for selecting options.
QT_REQUIRE_CONFIG(animation)
static int grow(QLayoutStruct &ls, int delta)
static QRect dockedGeometry(QWidget *widget)
static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos)
static int realMinSize(const QDockAreaLayoutInfo &info)
static int qMax(int i1, int i2, int i3)
static int shrink(QLayoutStruct &ls, int delta)
static const int zero
static int separatorMoveHelper(QList< QLayoutStruct > &list, int index, int delta, int sep)
static QInternal::DockPosition dockPosHelper(const QRect &rect, const QPoint &_pos, Qt::Orientation o, bool nestingEnabled, QDockAreaLayoutInfo::TabMode tabMode)
static void paintSep(QPainter *p, QWidget *w, const QRect &r, Qt::Orientation o, bool mouse_over)
static int realMaxSize(const QDockAreaLayoutInfo &info)
QMainWindowLayout * qt_mainwindow_layout(const QMainWindow *window)
@ StateFlagFloating
@ StateFlagVisible
QT_REQUIRE_CONFIG(dockwidget)
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
QT_REQUIRE_CONFIG(mainwindow)
static int perp(Qt::Orientation o, const QPoint &pos)
Definition qmenu_p.h:56
static int & rperp(Qt::Orientation o, QPoint &pos)
Definition qmenu_p.h:62
static int & rpick(Qt::Orientation o, QPoint &pos)
Definition qmenu_p.h:47
static QT_BEGIN_NAMESPACE int pick(Qt::Orientation o, const QPoint &pos)
Definition qmenu_p.h:41
QT_REQUIRE_CONFIG(thread)
void start(int timeout, QAction *toStartAction)
Definition qmenu_p.h:346
void initialize(QMenu *parent)
Definition qmenu_p.h:341
QPointer< QWidget > widget
Definition qmenu_p.h:411
QPointer< QAction > action
Definition qmenu_p.h:412