summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
Commit message (Collapse)AuthorAgeFilesLines
* QSplitter: Exclude top level widgets from child event handling.Friedemann Kleint2014-07-151-2/+4
| | | | | | | | | Prevent the splitter from adding them to the layout or showing them. Task-number: QTBUG-40132 Change-Id: Ife2be0bbd7e489570ef41f6f72a034b356c65f18 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Fix QTimer with negative interval in QWidgetLineControl::setCursorBlinkPeriodİsmail Dönmez2014-07-061-1/+1
| | | | | | | | | When keyboard blink is disabled, msec will be negative (-2 in my case). In that case if (msec) will evaluate to true and create a QTimer with a negative interval. Fix is to check for msec > 0. Change-Id: I5c8d82c3cdaf26a961c986f4164805aacfe3ae37 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* qtoolbar: add missing header on OSX.Mike McQuaid2014-06-281-0/+4
| | | | | | | | | | | | | | | | | Without this you get: ``` widgets/qtoolbar.cpp:1047:5: error: incomplete type 'QPlatformNativeInterface' named in nested name specifier QPlatformNativeInterface::NativeResourceForIntegrationFunction function = ^~~~~~~~~~~~~~~~~~~~~~~~~~ qtbase/src/widgets/../../include/QtGui/../../src/gui/kernel/qguiapplication.h:57:7: note: forward declaration of 'QPlatformNativeInterface' class QPlatformNativeInterface; ``` Change-Id: I1301a8aa8b25eb12821e91125743be779e52db0f Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Mike McQuaid <mike@mikemcquaid.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Add that the corner settings are saved/restored with the stateAndy Shaw2014-06-231-3/+6
| | | | | Change-Id: Iee4c04291001470518176d8b3a49c08b52a6336e Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* QComboBox: update focus policy when setting a new line editLiang Qi2014-06-212-8/+17
| | | | | | | | | | On OS X, the focus policy of QComboBox is different when editable or not. Task-number: QTBUG-39650 Change-Id: I394564f8a1a6d462e86d2497fe8874e6107a8a58 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
* Use QModelIndex to get the data from underlying modelFriedemann Kleint2014-06-191-2/+2
| | | | | | | Change-Id: Ibeb70079afd566c78289168540296b926f36d1af Initial-patch-by: Irfan Omair <irfan.omair@gmail.com> Task-number: QTBUG-27597 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Fix compilation in under -no-c++11 modeThiago Macieira2014-06-191-7/+10
| | | | | | | | | IndexSetter can't be passed to QObject::connect() since C++98 templates require global types (they can't be function-local). Change-Id: I099322f835661d4679140b7810b50dbeb0e4b9e0 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QFontComboBox sometimes became too wide because of wrong fixed sizeJan Arve Saether2014-06-141-1/+1
| | | | | | | | | | | | The fixed width should not be set on QFontComboBox itself, but on the popup. This regressed with commit bfb25c03523757d66974189e54dda97962206ef9, and caused assistants preferences dialog to become wider than the desktop. Change-Id: I2059794fc12d34837cdb7dfded80df57d102a6f0 Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
* Merge remote-tracking branch 'origin/stable' into 5.3Sergio Ahumada2014-06-111-5/+2
|\ | | | | | | Change-Id: I147a75ac74bd7b19dbeb99e1ec2836cc5bfc2806
| * Fix failing qtdeclarativetextedit auto-testSimon Hausmann2014-06-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | After commit c3baa7c1dc8c29bfe60e8e5c676c606d4f699005 the qtdeclarativetextedit tests in the qtquick1 module started failing. This was due to commit 852abfca6f4c349dce9b895956922f96d82df579 from 4.8 not being forward-ported from Qt 4 to Qt 5, hence the comment in c3baa7c1dc8c29bfe60e8e5c676c606d4f699005 about the missing mousePressEvent line. It was intentionally removed and instead used further down, which is what this patch adds and therefore acts as forward-port of 852abfca6f4c349dce9b895956922f96d82df579. Change-Id: I55978c961002382c1f228bf796c469c10686ba9f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Fix selection by dragging after double click in QWidgetTextControl.Friedemann Kleint2014-06-061-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | Remove return in mouseMove depending on variable mousePressed which is not present in Qt 4. The variable was true in Qt versions before 5.3 due to an additional mouse press event received before a double click. Task-number: QTBUG-39023 Task-number: QTBUG-25831 Change-Id: I57ed9284961195c71df9e9b9d697b1cfbad7c228 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Remove unnecessary comma in QStackedWidget doc.Mitch Curtis2014-06-101-1/+1
|/ | | | | Change-Id: Iaa6102ea90c695eb2d81cc5d4fbd00dafc7783f5 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* QDialogButtonBox does not need TabFocusJan Arve Saether2014-05-311-3/+0
| | | | | | | | | | | | It will now share the same behavior as QGroupBox, which has NoFocus if its not checkable. This doesn't lure AT clients to stop and read its content (this is the case for android accessibility) (designer seems to generate a tooltip for each QDialogButtonBox, which will be read as the name). Change-Id: I6cfacdd9c01299521222c773634df1e36971d982 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Trigger repaint of window when toggling unified toolbar on or off.Jake Petroules2014-05-221-0/+1
| | | | | Change-Id: I5204e5c65ae3cf84459cc62f587ecccd855e02f8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix broken QPlainTextDocumentLayout after removing charsAxel Rasmussen2014-05-211-2/+3
| | | | | | | | | | | | This fixes an issue where, if characters were removed from several blocks in a single edit, the document layout would end up being corrupted since the document layout manager wouldn't re-layout the proper number of text blocks. Task-number: QTBUG-30051 Change-Id: Idf3a6f567120e6a5dbebf1f65f685d374219328a Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Accessibility: Update ComboBox text on arrow keysFrederik Gladhorn2014-05-161-6/+6
| | | | | | | | | | Use ValueChanged to notify of changes in the ComboBox. On Linux we need to update name and then send selection-changed for Orca. Task-number: QTBUG-36814 Change-Id: Icdd34adddeac532476a6dd910d1e8bd33bcd590b Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Ensure the QMenu is polished before creating the native windowMartin Gräßlin2014-05-091-0/+1
| | | | | | | | | | | | | | | | Call ::ensurePolished from QMenu::exec before the native window gets created. This ensures that the style handles the menu before its too late. E.g. a style which wants to create RGBA menus needs to add the appropriate flag before the native window gets created. Without this change the style cannot change to RGBA as the native window has already been created and changing the format used by QWindow is not possible after QWindow::create was called. Change-Id: Ic861037a438b4cb74c59a00be0ef2d633db538ed Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Prevent interaction with a disabled menu in the menubarAndy Shaw2014-05-061-2/+2
| | | | | | | | | | When moving the mouse over a disabled menu it could appear to be usable but it should not show any interaction at all. Task-number: QTBUG-31688 Task-number: QTBUG-37488 Change-Id: I9e6594b40e8b209146d8c3705750dfd75f1258c5 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* QMdiArea: Ignore events of other instances in the event filter.Friedemann Kleint2014-05-051-0/+3
| | | | | | | | | | | This caused for example the variable QMdiAreaPrivate::isSubWindowsTiled being cleared from another instance, which resulted in odd resizing behavior. Task-number: QTBUG-31448 Change-Id: I880f7e415d6654e52499df1bfaf99f2c55d86320 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Fix crash on startup when running screenreaderFrederik Gladhorn2014-05-051-2/+4
| | | | | | | | | | | | | | | For exaple Qt Creator would crash when started and a screen reader (eg NVDA) is running. This is due to updateAccessibility being called during the ctor of the TextEdit and on Windows the AT can access properties in the same call resulting in accessing the text control before it's fully constructed. Also make sure to not send accessibility updates for non-widget type edits since we don't support any accessibility in Qt Quick 1. Task-number: QTBUG-38659 Change-Id: I1635fa3b2c4d3509f44daf760e4d7b4171d67e1d Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Ignore the fullscreen state of a QMdiSubWindowFabian Bumberger2014-05-021-2/+5
| | | | | | | | | | | | On some platforms all windows are by default forced into fullscreen mode when show() is executed. In QMdiSubWindow we cannot handle the fullscreen state and should ignore it. Otherwise the window will be forced in "normal" state and ignore any previously executed geometry changes. Change-Id: I09ce6507a1eac6a0adb3405ca3f423642d30f801 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
* QMenu: Add support for QWidgetAction on MacGabriel de Dietrich2014-04-254-2/+60
| | | | | | | | | | | | | | | The implementation follows a similar logic as in Qt 4 making sure we properly interface with the QPA backend. We also make sure to delay moving the action widget to the QPA menu until it's about to show. We still don't support moving the action widget back from QPA world into Qt, as explained in the QWidgetAction documentation. Task-number: QTBUG-19840 Change-Id: I47f6359b0806f967d80c67fbb1f36c3d5ec8603e Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Accessibility Windows: Improve MenusFrederik Gladhorn2014-04-252-6/+0
| | | | | | | | | | | | | | This would especially trigger when moving the focus between menus - after the right menu got the focus we would send another event for the QMenuBar, preventing the screen reader from reading the actually selected menu, announcing the menu bar instead. [ChangeLog][QtWidgets][QMenu] Accessibility: Menus are read by screen readers with more reliability. Task-number: QTBUG-38498 Change-Id: Ie4028120b234949380315296bf07ca53863d0ad8 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* QMacNativeWidget: Fix background renderingGabriel de Dietrich2014-04-171-0/+1
| | | | | | | | | | | The widget's background is transparent, but Qt is not owning the backing store in this case, so we must make sure it gets properly cleared and flushed. Task-number: QTBUG-19840 Change-Id: I1087ce80aae3620d64a8c180129d79b5b022750b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Restrict QFontComboBox's popup width to screen widthFabian Bumberger2014-04-141-2/+5
| | | | | Change-Id: I5a92308beb2f245d9f031918bb8154757316ef56 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Mac: Implement unified toolbar look for QTabBarMorten Johan Sørvig2014-04-092-28/+44
| | | | | | | | | | | | | | | | | | | | | | | | | Extend the unified title and toolbar gradient to tabs in document mode that are adjacent unified tool bars. Change the updateMacBorderMetrics() function to register the tab bar geometry and visibility status with the Cocoa platform plugin. The Cocoa platform plugin will then merge this area with other registered areas if possible. Add QCocoaNativeInterface::testContentBorderPosition(). This function tests whether the given point is within the unified title and toolbar area. Use testContentBorderPosition() in QMacStyle to enable code paths that skips drawing the QToolBar bottom separator line and paints the active tab background with transparent pixels to make the background gradient visible. Change-Id: I2b70f9bb0c2c59af053a691a7df538f958783dab Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Cocoa: Update unified toolbar area on toolbar hideMorten Johan Sørvig2014-04-093-5/+23
| | | | | | | | | | | | | | | | | | | | | Add setContentBorderAreaEnabled() which us used to enable or disable an area. Used together with registerContentBorderArea() this allows changing the border area geometry and enabled status independently. Add section to the QToolBar show/hide event handler which calls setContentBorderAreaEnabled(). Make sure QToolBar and QToolBarLayout uses the same identifier - the QToolBar object pointer. Rename enableContentBorderArea -> setContentBorderEnabled. The "ContentBorder" is now the entire unified toolbar area while "ContentBorderArea"s are the sub-areas covered by toolbars. Change-Id: I339f381a50856e048ae40e7ffadd6a8a510c4994 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Fix crash when trying to place toolbar into zero-height window.Friedemann Kleint2014-04-093-20/+32
| | | | | | | | | Change QToolBarAreaLayout::item() to return a pointer and check return values in plug(). Task-number: QTBUG-37183 Change-Id: I7029eb9739cbe603460e87d3e5493f116bdb3a89 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* QComboBox: Set the proper font after a MacSizeChange eventGabriel de Dietrich2014-04-091-0/+12
| | | | | Change-Id: I5c90817e52a3e87d9b06b2bb670d69a6953efd47 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Cocoa: Use private property to enable NSWindow child windowsGabriel de Dietrich2014-04-091-0/+1
| | | | | | | | | Enabled for QToolBar to allow it to overlap OpenGL widgets when expanding. Task-number: QTBUG-33082 Change-Id: I76dc8da52bc04eedc6d6779c48753da100ed1c9f Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* QComboBox: Use native popups on MacGabriel de Dietrich2014-04-072-6/+94
| | | | | | | | | | | | | | This remains an opt-in solution bound to the usage of SH_ComboBox_UseNativePopup in a proxy style. The midterm goal is to make this option on by default, possibly in 5.4. This solution is and will remain a hint in the sense that some exotic use cases of QComboBox (e.g., when setting its view) are inherently incompatible with the native popup idea. Task-number: QTBUG-32731 Change-Id: I2a3d780795c22f9989e44325fcaf314538b1de49 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Accessibility text updates for QTextEditFrederik Gladhorn2014-04-053-0/+30
| | | | | | | | | For Mac this makes QTextEdit work nicely with VoiceOver. Task-number: QTBUG-37204 Change-Id: I1326d24ca6a932ad667ee395f62881b6ec64e892 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Compile: isChildOfQMdiSubWindow may be unused.Morten Johan Sørvig2014-04-051-0/+2
| | | | | | | [-Werror,-Wunused-function] Change-Id: Icf1e60ce3c5dadb96272453583d1cd03379eb73b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove a duplicate code of else-if statementluyikei2014-03-291-3/+0
| | | | | | | | I found a useless else-if statement in qwidgettextcontrol.cpp. It is duplicating.Needless to say,it should be removed. Change-Id: Ic70b995196f7199e4aa5263a4937c1678b130357 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Fix disappearing transient scrollbarsJ-P Nurmi2014-03-282-5/+19
| | | | | | | | | | | | | | | | | When a transient scrollbar is already at the end and user attempts to scroll further, the scrollbar is "flashed" to indicate that the scroll area is already scrolled to the end. This is done so that the scrollbar is first painted with a flag turned on to make it appear visible and then again with the flag turned off to make qstyle start fading it out. The previous code that relied on paint events to clear the flag was error prone, and caused the scrollbars to get stuck in an inconsistent state. This change makes sure that the flag gets cleared regardless of whether a paint event in each state is received or not. Task-number: QTBUG-37787 Change-Id: I907697c32cd4d55208a490804a221a5dd6bf7b0b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Set unified toolbar height accurately.Morten Johan Sørvig2014-03-203-8/+44
| | | | | | | | | | | | | | | Add registerContentBorderArea() to the Cocoa native interface which allows registering multiple "unified toolbar" areas for each window. Use this function in QToolBarLayout::setGeometry() to register the area for each TopToolBarArea toolbar. Task-number: QTBUG-36700 Change-Id: I52efcc5662556bb94f25f504be3710d0491f79b9 Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Denis Dzyubenko <denis@ddenis.info>
* Fix QAbstractScrollArea to respect transiency per scrollbarJ-P Nurmi2014-03-201-25/+31
| | | | | | | | Do not query scrollarea's own style whether the scrollarea itself is a transient scrollbar, but query both scrollbar's style individually. Change-Id: I6397a29bc7b276a92c538cbb7fc0dd921595d093 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Use parent cursor for QLineEdit's clear button when not shown.Friedemann Kleint2014-03-202-3/+12
| | | | | | Task-number: QTBUG-37548 Change-Id: I8a4eb52f9a5a9551e53dab100f2337cf201d7401 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QMenuPrivate: Make sloppyDelayTimer non-staticGabriel de Dietrich2014-03-192-11/+10
| | | | | | | | | | | Keeping the timer static would trigger warnings when enabling SH_Menu_SloppySubMenus in QCommonStyle in a forthcoming patch. This would happen if we opened a second level submenu quickly enough and get the mouse event handler to reset the timer its parent menu started. Change-Id: Ia768603b40b219f87138c60a595c65ef408761ae Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QMenu: Sloppy menu selection should allow hovering separatorsGabriel de Dietrich2014-03-191-0/+1
| | | | | | | | | | | Setting the current action to 0 clears the sloppy region and closes the submenu if we hover a separator on the way to the submenu popup. Now, we choose not to while the sloppy delay timer is running. Task-number: QTBUG-20094 Change-Id: I9d1b1358fe64c259dc47f35db8fc8f2b19a73153 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Handle key release events correctlyPaul Olav Tvete2014-03-181-1/+1
| | | | | | | | | Ignore key events that we don't actually handle. Task-number: QTBUG-35784 Change-Id: I196a4d0d199817a7dfd32fc98207ebfe3982050b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android input method improvementsPaul Olav Tvete2014-03-182-1/+9
| | | | | | | | | | | | | | Use the new inputmethod query API. and get rid of the hack where we would move the cursor back and forwards to make sure that the Android software keyboard noticed that the cursor had moved. The android plugin now uses absolute positions instead of position within the paragraph for all cursor handling (provided that the control supports the new API). Task-number: QTBUG-37511 Change-Id: I03463dbbcb4acbfa41e2eab06889d021d50da01f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Remove unused static const variableUlf Hermann2014-03-171-4/+0
| | | | | | | clang on Mac OS complains about it. Change-Id: I7a385eb520c5098cf61a0d8c2e1de0731db2e1ae Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Handle key release events correctlyPaul Olav Tvete2014-03-141-0/+2
| | | | | | | | Properly ignore key events that we don't actually handle. Task-number: QTBUG-35784 Change-Id: Ibd3e72c76367a1dc3b1f2d39538fcf8441082ff2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Doc: correction link, example and parameter issues qtbaseNico Vertriest2014-03-101-1/+1
| | | | | | | | | | | | | Moved codecs folder to qtbase/examples Corrected quote in dropsite.qdoc Replaced snippet statement by include statement Added doc for undocumented parameters Task-number: QTBUG-34749 Change-Id: If4de95b8d39e5680fd0f63f8d2b6685a4b0a8052 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix QDateEdit popup appearance on macJens Bache-Wiig2014-03-041-1/+1
| | | | | | | | | | | | The WS/OS was obviously incorrect and the hack seems not to be needed any more. [ChangeLog][QtWidgets][Mac] Fixed incorrect appearance of QDateEdit with calendarPopup enabled. Task-number: QTBUG-36692 Change-Id: Ic62c9993dc13e783c00fcb56f75d92967eb5074d Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Enable QMenu::setNoReplayFor(QWidget *noReplayFor) for all platforms.Friedemann Kleint2014-02-241-4/+0
| | | | | | | | | | | This prevents a tool button menu from being opened by a replayed click. This partially reverts 8301c0002280c10970cce1e17f634e74c61f2f5d . Task-number: QTBUG-36863 Change-Id: I396e3694de8b3d4ca916457c2b2df39798502530 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Android: Enable text selection only when ImhNoPredictiveText is set.Christian Strømme2014-02-212-3/+16
| | | | | | | | | | Mouse selection does not work well with Android and text will be randomly copied, pasted or deleted. This behavior is especially bad when predictive text is enabled. Task-number: QTBUG-34616 Change-Id: I732ad7db52169bfb5735c237cf24597a3d6d64ba Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Android: Do not enable text selection in QTextEdits by default.Christian Strømme2014-02-211-0/+4
| | | | | | | | | Text selection does not work correctly and is currently causing selected text to be randomly copied, pasted or deleted. Task-id: QTBUG-34616 Change-Id: I98678b7575034325dd8a4fa181ee4cb182783a3b Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Allow QPlatformSystemTrayIcon to create the QPlatformMenuMartin Gräßlin2014-02-173-3/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case the QPlatformTheme does not provide a QPlatformMenu the QPlatformSystemTrayIcon is not able to forward the menu because the QPlatformMenu pointer passed to updateMenu is always null. Providing a QPlatformMenu in the QPlatformTheme implementation should not be a requirement for having the menu in the system tray icon. There are cases where no QPlatformMenu should be created by the theme, e.g. if the X11 implementation of QSystemTrayIcon gets provided by the xcb plugin. The change adds a virtual method to QPlatformSystemTrayIcon to create a QPlatformMenu. This method is called from the QPA implementation of QSystemTrayIcon if the QMenu's platformMenu is not present. Thus the system tray icon is able to provide a custom implementation of the menu. This gets installed through a new internal method in QMenu to set the platform menu. It creates the required connections and sync the state to the QMenu to the newly created QPlatformMenu. Last but not least QPlatformMenu is extended by a method to create a QPlatformMenuItem. The default implementation delegates to the platform theme. This allows to provide the menu item implementation for the system tray icon without providing the QPlatformMenuItem through the platform theme. Change-Id: I17234bd8bcf8c05f8bd786feff0cf8f860430e82 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>