aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs
Commit message (Collapse)AuthorAgeFilesLines
* Dialogs: Link LabsFolderListModel into QuickDialogs2QuickImplUlf Hermann2 days1-0/+1
| | | | | | | | | | It uses FolderListModel. Pick-to: 6.10 Task-number: QTBUG-137440 Change-Id: I44cc4f312dddde756bbb33aa7a564c1c4085c75e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* a11y: Set a11y relation between FileDialog filter label and comboboxMichael Weghorn9 days5-0/+5
| | | | | | | | | | | | | | | Make use of the API introduced in 644349fecb9ce58659e590be7049ba93889d9f34 to set the accessible label-for/labelled-by relationship between the "Filter" label and the corresponding combobox in the QML FileDialog. This makes screen readers like Orca on Linux announce the label text when the combobox receives focus, so the meaning/context becomes clear. Change-Id: I06db7db7fb3afeb748b99ab29cb90e8bfd694279 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* DialogButtonBox: add properties for setting a default buttonOliver Eftevaag2025-11-1424-4/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt Quick Controls lacked the ability for setting a default button in a dialog button box. This is something that we support in QtWidgets, and it makes sense to allow dialogs with a DialogButtonBox set as the footer to decide if a particular button should be default, and have focus when the dialog is opened. With this patch, we're introducing two different ways for selecting a default button. The first is the usage of the DialogButtonBox::defaultButton property, which works like this: ``` DialogButtonBox { defaultButton: Button { text: qsTr("Ok") } Button { text: qsTr("Cancel") } } ``` In the snippet above, the Button that is set as default should both be highlighted, and be the sub focus item of the DialogButtonBox. However, since the standardButtons property can be used to dynamically create buttons on the fly, we also needed an alternative way for picking a default button. In cases where standardButtons is being used to create buttons in the DialogButtonBox, the new defaultStandardButton property can be used: ``` DialogButtonBox { standardButtons: DialogButtonBox.Yes | DialogButtonBox.No defaultStandardButton: DialogButtonBox.Yes } ``` Something worth noting, is that the DialogButtonBox's contentItem is typically a ListView. ListView have the ItemIsFocusScope flag set, meaning that we need to give focus to both the ListView, and the default Button. In addition, the FontDialog and ColorDialog will now make the Ok button default, and give it focus when the dialogs are opened. The FileDialog and FolderDialog will continue to give the ListView focus, since that's IMO more user friendly. The MessageDialog will need new API to take full advantage of this new feature, which will be introduced later. [ChangeLog][DialogButtonBox] The DialogButtonBox now has two new properties, defaultButton and defaultStandardButton. When one of these properties are being used, a button set as default will be highlighted and receive activeFocus whenever the DialogButtonBox gets focus. If a DialogButtonBox is assigned as a Dialog's footer, it will also get focus when the Dialog is opened. This means that a Dialog with a DialogButtonBox as its footer, will give focus to a default button when opened. If both of these properties are unset, the first button with the AcceptRole will get focus, but it will not be highlighted. Fixes: QTBUG-58246 Fixes: QTBUG-139352 Change-Id: Ic083410184dd63e0e790694f782a7a98c1dc8b6e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Run tst_qquickfiledialogimpl also with the Imagine styleOliver Eftevaag2025-10-241-2/+1
| | | | | | | | | | | The intention was always to run it with every single built-in style. Previously the Imagine style was omitted because of an issue that needed more investigation. It seems like that has since been resolved, and that it's safe to include it in the list of styles to run tst_qquickfiledialogimpl with. Change-Id: I7634a938c550392f8f5c18c141404c80a7ab99b2 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Import QtQuick in +Imagine/FileDialogDelegate.qmlOliver Eftevaag2025-10-061-0/+1
| | | | | | | | | It's needed for the Accessible attached object, which we started using in ab83b2d2d34095bd56ca0e9e044374d314277321. Pick-to: 6.10 6.8 Change-Id: I3fe69b98e183d57b3595429d5247f18b09e46465 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QuickStylePlugin::unregisterTypes(): cleanup selectors from global listOliver Eftevaag2025-10-063-0/+3
| | | | | | | | | | | | | | | | | | | | | | | File selectors may have been added in QQuickStylePlugin::registerTypes(). It makes sense to clean them up when a style plugin in unloaded, otherwise the first style that was loaded will always be prioritized, even if it was unloaded later on, during runtime. This change causes tst_qquickfiledialogimpl to acutally run with all styles (except Imagine). Originally I thought da777a75f65ad101e9b0bad7c098004c0a699b41 would work by itself, but it turns out that the test would run 4 times with the same style (Basic), instead of the intended Basic, Fusion, Material and Universal styles. By cleaning up old selectors, the test will now finally run will all the different styles. This caused some of the test functions to break. The Material style is infamous for having transitions for opening and closing popups. There were a few other functions too that broke for other reasons. Fixes for those functions are also included in this patch. Change-Id: I3c350b5e72454fccedbc2579db4813d953dfbb95 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FileDialog: Comply with accessibility insights for WindowsOliver Eftevaag2025-09-2716-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | Accessibility Insights for Windows is a Windows application that will check the UI accessibility tree for any potential issues or anti-patterns. The tool would complain about the FileDialog having a button without a name, in the FolderBreadcrumbBar. The SideBar buttonDelegate would use a Button with an IconImage contentItem, which the tool would complain about, since the Button control then wouldn't have a name. The FileDialogDelegate would also expose every label that it uses to QAccessible. I'd assume users of screen readers would find it overwhelming that every delegate has more than 4 different labels that are all exposed to external assistive technologies. The most important item to expose is the delegate itself, the sub-labels showing the file size and last modified date can probably be ignored. Pick-to: 6.10 6.8 Change-Id: Iad3fbf4a4178934214028214947506eb9d8c2651 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* ColorDialog: Comply with accessibility insights for WindowsOliver Eftevaag2025-09-275-0/+30
| | | | | | | | | | | | | Accessibility Insights for Windows is a Windows application that will check the UI accessibility tree for any potential issues or anti-patterns. The eye dropper button, as well as the sliders, didn't have a name, which was the main thing that the tool complained about. Pick-to: 6.10 6.8 Change-Id: Ibe9d9e788d86fe3f46261221da12c1a4be5d220e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FontDialogContent: Comply with accessibility insights for WindowsOliver Eftevaag2025-09-271-0/+5
| | | | | | | | | | | | | | | | | Accessibility Insights for Windows is a Windows application that will check the UI accessibility tree for any potential issues or anti-patterns. The tool would complain about the FontDialog not giving the text fields for font family, style and size an accessibility name. In addition, the sample text edit was exposed as accessible, even though it's an non-interactive part of the UI. We can simply hide it from screen readers. Pick-to: 6.10 6.8 Change-Id: Ice96528c3bcf018fabd95d5aaddd644b41bdfca1 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Set explicit default security level of all files with default securityJan Arve Sæther2025-09-17123-0/+123
| | | | | | | | | | | | | | | | | | | | | | | | | The files (folders) already processed are listed in each issue in epic QTBUG-134547 These files were processed half a year ago. In order to make it clear that all of these files are already processed, mark them with an explicit default security header. For the record, this was generated with this script: find -E . -regex ".*\.(cpp|h|hpp|mm|qml|js)$" | xargs python3 ~/bin/add-cra-header.py in the folders listed in each subtask of QTBUG-134547 (add-cra-header.py only exist at my desktop, but it simply adds the default security header if it doesn't already have any existing security header) QUIP: 23 Fixes: QTBUG-134547 Pick-to: 6.10 6.9 6.8 Change-Id: Ieb8c78ea6561fdbdd27c7b13185ece853eedf80f Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fusion File&FolderDialog: Give the FolderBreadcrumbBar a maximum widthOliver Eftevaag2025-08-302-0/+2
| | | | | | | | | | | | | | | | | | | The fusion styled File and FolderDialog's FolderBreadcrumbBar would grow in width as the number of nested directories in the currentFolder path would grow. The other styles would give it a maximum size, which would limit how much it could grow, but not the fusion style. The FolderBreadcrumbBar's width also affects the entire FileDialog default (implicit) width, which would cause the entire dialog to expand as you'd enter more directores. This was unintuitive, and not something that any other file dialogs do. Let's make the fusion style FileDialog behave like the other FileDialogs. Pick-to: 6.10 Change-Id: Icd67803b6e205ac9224b2561417667b4893a4e87 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FileDialog: remove 'required icon' from SideBar's addFavoriteDelegateOliver Eftevaag2025-08-164-4/+0
| | | | | | | | It was causing the button to never appear when it should. Pick-to: 6.10 6.9 Change-Id: I59d13d0e2588536c384fd2c6024dd9f5d7a24274 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FileDialog: Use SplitView to separate the sidebar from the contentOliver Eftevaag2025-08-1613-49/+180
| | | | | | | | | | | | | | | | | | | | | | Previously a RowLayout was being used. But I would argue that it's better UI to use a SplitView instead. Add the necessary overrides in QQuickSideBar, so that the SideBar actually knows it's correct implicit size. This is needed in order for the SplitView to work correctly. We want the implicit width to be large enough to cover the delegate with the most text, with a maximum width of half the available space in the dialog. As for the height, we want it to be tall enough to cover all the standard paths + add favorite button, so that the feature of adding directories to the favorite list is less cumbersome. The height of the sidebar should be part of what determines the implicit height of the dialog. Pick-to: 6.10 Change-Id: If267d8197e82f8a91a059e31723c46fe95af3d41 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Dialogs: only return valid QPlatformDialogHelper if Qt Quick dialog isMitch Curtis2025-08-141-5/+15
| | | | | | | | | | | | If we don't do this, QQuickAbstractDialog::create will see that m_handle is valid and call onCreate, which tries to call selectedFiles and we get a crash. Amends f9421abbdf4d2e2be06febf9f75a2b62e6875835. Pick-to: 6.5 6.8 6.9 6.10 Change-Id: Id522e068c689a5bc5662466e446f99586bc7c738 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* FileDialog: Fix binding loops for Fusion, Material and Universal stylesOliver Eftevaag2025-08-113-2/+3
| | | | | | | | | | | | | | | These binding loops were introduced in 0e4d470d3df3963db3546f94e580994473052283, since the nested overwriteConfirmationDialog's width were still determined by the contentItem, but the contentItem's width depended on the overwriteConfirmationDialog's width. This resulted in a binding loop, which could be fixed by giving the overwriteConfirmationDialog an explicit width. Pick-to: 6.10 Change-Id: I3bb2957fd31710b093eb7f7e887df8f045809921 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FileDialog: Fix major sidebar issuesOliver Eftevaag2025-08-115-19/+15
| | | | | | | | | | | | | | | | | | | | | | | | The SideBar were facing two major issues. The first had to do with the buttonDelegate's `required icon` line, which didn't work after 7322e051c9c3d8dc715c20a3d42d9be83ea2295c, resulting in an error during component creation. The other issue had to do with the icons qrc paths only working for the Basic style. Since the paths were relative, they'd assume that no file selectors were being used, and thus a simpler path resolution. This caused all non-basic styles to resolve the url to an invalid resource. The first issue was fixed by removing `required icon`, and the latter was fixed by using complete qrc paths. In addition, we do a small drive-by fix, by putting a user facing string into qsTr(). Pick-to: 6.10 6.9 Change-Id: If6cd7ab638ec349b39fe0e4bc763ead78a51a0f4 Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FolderDialog: Declare FileDialogDelegateLabel from its module aliasOliver Eftevaag2025-08-085-5/+5
| | | | | | | | | | | | This was already done for FileDialog, but not for FolderDialog. It prevents a crash. Amends 87f6e63dfc32e4eac861f3490cb961dfbb028b23 Pick-to: 6.10 6.9 6.8 Change-Id: If6ab9152b9f1f5dcef92dfa891d09202968ef81e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Harden namespacingTim Blechmann2025-08-082-0/+8
| | | | | | | | | | | | | | | When using namespaced Qt, we need to prevent symbol clashes with symbols of the same name. * namespace some publicly visible classes * hide classes in implementation in an anonymous namespace * rename read/write to readValue/writeValue to avoid name clash with c functions. Task-number: QTBUG-138543 Pick-to: 6.10 Change-Id: Ica77462c1f81f1e01cc60477e5b56ecfe3c1abb4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QuickDialogs: Do not use QFLAGSFabian Kosmale2025-08-084-4/+4
| | | | | | | | | | | | | | | | | Dialogs uses QFLAGS to bring in various classes via related meta-objects. The goal is to expose specific enums in the QML API. What it does instead is to expose all enums of those classes at runtime, but not to tooling. Switch the code to use QML_EXTENDED_NAMESPACE, which also exposes all enums at runtime, but also to tooling. Task-number: QTBUG-137075 Pick-to: 6.10 Change-Id: Id8d5858575a445f957572fc090df482db1b6fce8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Dialogs: Declare FileDialogDelegateLabel from its module aliasOliver Eftevaag2025-07-315-5/+5
| | | | | | | | | | | | This fixes an error that recently appeared, where FileDialogDelegateLabel weren't considered a valid type by the engine. This is likely related to how QtQuickDialogs uses file selectors to choose which QML files to use. Pick-to: 6.10 6.9 6.8 Change-Id: I1de72b63100feabfd080a3dc905ef4e120e733cb Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* FileDialog: don't crash if it fails to create the non-native file dialogOliver Eftevaag2025-07-302-2/+2
| | | | | | | | | | | | | Most overrides in QQuickPlatformFileDialog didn't make the assumption that the FileDialog.qml component would successfully be created, except for selectedFiles. Also, new in 6.10 is that we're setting the popupType QQuickFileDialog. Make sure we check for nullptr. Pick-to: 6.10 Change-Id: Icb7766434245e72bd0680bbeec75dd510fa4642d Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io>
* Propagate modality to the non-native quick dialogsSanthosh Kumar2025-07-095-5/+10
| | | | | | | | | | | | | | | The non-native quick dialogs don't block input to the windows even after setting the modality as ApplicationModal/WindowModal. This is because non-native platform dialogs (QuickPlaform*Dialogs) didn't set modal to its respective window (QQuickPopupWindow). This patch fixes that issue by setting the modality to the non-native platform dialogs. Task-number: QTBUG-127605 Pick-to: 6.10 6.9 6.8 Change-Id: Idb3374e881766ae92adc0360c9b9af5c498dd6df Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fix missing translation in FileDialogCarl Schwan2025-07-073-27/+9
| | | | | | | | | Reuse the string from the Imagine FileDialog so that translators don't have to translate another string. Pick-to: 6.9 6.10 Change-Id: Ia48bacc63d5c482c66ab32082a103c3c2a538394 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Doc: Clarify FontDialog.selectedFont and options documentationDheerendra Purohit2025-07-071-3/+5
| | | | | | | | | | | | Updated the FontDialog documentation to clarify that the confirmation button may appear as "Select" or "Open", and rephrased the options selection to better describe the default behaviour and the effect of each option. Pick-to: 6.10 6.9 Fixes: QTBUG-94965 Change-Id: I9da01739df30795211c51e3f6b378e9c30b37da8 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Don't delete component delegatesMitch Curtis2025-06-251-2/+0
| | | | | | | | | | | | | | | | | This makes it impossible to e.g. swap between two delegates. Similar to 80f1186338bcf8c7d692b4fadfc46531c002c6b0 except for QQmlComponents. [ChangeLog][Controls][Important Behavior Changes] Old QQmlComponent delegates (not the item instances created by them) are no longer destroyed when a new one is set, as they are technically owned by user code. They will still eventually be garbage-collected as expected, assuming there are no references to them. Fixes: QTBUG-137777 Change-Id: Icbe6971727d684a266b12a0b41474397e536bfdc Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* ColorPicker: remove handle as a listener during destructionVolker Hilsheimer2025-06-132-0/+9
| | | | | | | | | | | | | | | | | Children get destroyed before their parents, and objects notify listeners when they get destroyed. If a child is a listener on a parent, then this results in a (partially) destroyed listener object being notified, resulting in UB and - fortunately - test-breaking warnings. The handle is (typically) a child of the dialog, and added as a listener for implicit size changes when set. Explicitly remove it in the destructor of QQuickAbstractColorPicker, before destruction of the object tree. Pick-to: 6.10 6.9 6.8 6.5 Fixes: QTBUG-137561 Change-Id: I76ff1ff8bc7d563133d7bb9cd8b7bee76d6cec9b Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
* QQuickDialogs: fix dark mode in SideBarIvan Solovev2025-06-134-48/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch explicitly sets the colors from the palette for some of the elements of the SideBar. It also removes the usage of Basic.darkShade color, which is not available in general case, replacing it with the palette.dark color. A more complicated problem was related to the icons in buttonDelegate and addFavoriteDelegate, that were not updating their colors. The reason for that was that the unrelying C++ code was constructing the delegates using QQmlComponent::createWithInitialProperties(), and passed a QQuickIcon object as one of the properties. As a result, the original binding on icon.color was removed. To keep the binding, construct the components with a default icon, then manually set the source and the size. This approach is slower, but it allows to preserve the original binding from the QtQuick Button component. Last affected element was the drag pixmap, which was always using the original color. Use the buttonText() palette color to update all the non-transparent pixels of the icon before using it in the drag. Fixes: QTBUG-122738 Pick-to: 6.10 6.9 Change-Id: Ibf4182b1c5a631fe7043e8d76ed98629c69ab4d6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickDialogs: fix dark mode in FolderBreadcumbBarIvan Solovev2025-06-131-2/+2
| | | | | | | | | | | This should fix the look for 6.8. Qt 6.9 introduced a new SideBar element to the dialogs, so a follow-up fix is required. Task-number: QTBUG-122738 Pick-to: 6.10 6.9 6.8 Change-Id: I5c10056e3d2636f167562b4b999f420d449ea5e2 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Import correct quick module in dialog to access singleton Color instanceSanthosh Kumar2025-06-046-0/+6
| | | | | | | | | | | The singleton Color instance is part of QtQuick.Controls.impl module and so it's required to import this module to access it in the respective dialogs. Task-number: QTBUG-127605 Pick-to: 6.10 6.9 6.8 Change-Id: Ie559ff234422e6f2c58d3cd37652c5f396a99d39 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: Add Alt-text to images in QtQuickDialogsSafiyyah Moosa2025-04-225-6/+6
| | | | | | | | | | | | | | QDoc generates warnings for images that do not have alt-text associated with them. Alt-text is used to add context to images for users who use screen-readers. This patch applies alt-text to images in the QtQuickDialogs module that do not have any alt-text associated with them. Fixes: QTBUG-135123 Pick-to: 6.9 6.8 Change-Id: Iff2fd3350d72e3bc986caefe2ca1977858890f05 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fix compilation when draganddrop support is disabledJuha Vuolle2025-04-104-1/+13
| | | | | | | | | | | | | | | | | | | | When Qt is configured with -no-feature-draganddrop, the quick_draganddrop feature gets disabled too. Consequently many dialog files are then omitted from the build, see src/quickdialogs/quickdialogsquickimpl/CMakeLists.txt. As a result, some dialogs and templates that include and use these files/classes unconditionally, fail to compile. This commit adds same feature guards to these includes/uses. In addition this commit adds the few missing 'drag' feature guards in QQuickVerticalHeaderView as well as adds appropriate feature guards to autotests. Pick-to: 6.9 6.8 Fixes: QTBUG-135740 Change-Id: If1688a3cd8f52918088a8c586d54ccf09cb08890 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* AbstractDialog: add property popupTypeOliver Eftevaag2025-03-0613-6/+69
| | | | | | | | | | | | | | | | | | | | 18c4bf827dabea735435887f84ad1bea4136b1ea made all non-native dialogs in QtQuick.Dialogs use `Window` as their popupType, in order to make the dialogs appear as top-level windows. However, there are some users that wish to use these non-native dialogs without them being top-level windows, like they were before 6.8. This was unfortunately not possible, since there weren't any API to customize the popupType for QtQuick.Dialogs. We were reluctant at first, to provide properties that only customize the non-native dialogs, without having any effect when native dialogs are used. However, there needs to exist some way for the popupType to be reverted back to `Item`, and thus, it makes sense to have a property for it. Fixes: QTBUG-134037 Change-Id: Idcfe4d3960c7002566f344ae32422c9cb7ce7631 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* DialogsQuickImpl: add revision to signal and make properties FINALOliver Eftevaag2025-02-202-8/+8
| | | | | | | | | | | | | The sidebar is intended to be an implementation detail, and thus not intended to be used by users directly. However, it makes sense for it to have its properties flagged as FINAL for the performance gain. In addition, a new signal didn't have a revision. Found in API review. Pick-to: 6.9 Change-Id: I82b4314a3cf7f8336efe728a6c8da5d22a52a800 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Replace QBoolBlocker with QScopedValueRoolbackThiago Macieira2025-01-252-2/+2
| | | | | | | | | | | It was pre-Qt 4.5 (so pre-C++11), while QScopedValueRollback is 4.8. Both are still old, but with Qt 6 and C++17, we can use CTAD. QScopedValueRollback requires a value change to be explicit, which is less surprising. Change-Id: Ia930b1a2ed1e465a826ffffd179c1909e16583db Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Add context menu to remove custom favorites in the SideBarJan Arve Sæther2025-01-243-35/+55
| | | | | | | | Follow-up to 0b1e5c45de264bf7b62e074c50aba0acb3f157f8. Pick-to: 6.9 Change-Id: I287ca7b068bf7d89df98bbf77574ebfedefafeff Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fix quickdialogs compilation when settings feature is turned offJari Helaakoski2025-01-211-0/+2
| | | | | | Pick-to: 6.9 6.8 Change-Id: I6a11c55ae924a91679d5ee710104002749ca9424 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* doc: Mention that QQuickAbstractDialog cannot be created in QMLOliver Eftevaag2025-01-181-0/+2
| | | | | | | | | It's a QML_ANONYMOUS type. Fixes: QTBUG-131576 Pick-to: 6.9 Change-Id: Ib91ec10f3dd174c3ca4a2d10b4c2a1137d2a3394 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add drag and drop to the QtQuick Dialogs SideBarEd Cooke2025-01-0315-137/+949
| | | | | | | | | | | | | | | | | | | | | | | The current SideBar implementation for the QtQuick Dialogs non-native FileDialog has a SideBar containing supported standard paths. This patch adds support for adding favorites to the SideBar, that can be added by dragging a directory into the SideBar. Each FileDialogDelegate contains a QQuickTapHandler which listens for a long press. When long pressed, the delegate can be dragged. A long press is used to initiate the drag as the delegates are part of a Flickable. The drag and drop is a system drag and drop. If the dragged delegate is a directory, the drag is started. When the dragging enters the SideBar, a delegate appears with 'Add Favorite' text, to suggest to the user that this is the drop area. The context menu used for removing a favorite is a QQuickContextMenu, which handles the context menu event internally. Pick-to: 6.9 Change-Id: Icf60f3785522df607ed1f7420486da4318118f0f Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Compute implicitSize based on implicitContentSize in Popup and subclassesTor Arne Vestbø2024-12-1925-46/+46
| | | | | | | | | | | | Popup uses a Pane as its popup item, so now that Pane reflects its explicitly set contentWidth/Height through implicitContentWidth/Height we can use the same expression for implicit width/height as regular controls, which hooks us into the safe area binding loop detection as well. Pick-to: 6.9 Change-Id: I3709978dae0271d7daf44fc6988f09f03df15b1f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* ColorInputs: Move validators from global scope to the scope they're usedOliver Eftevaag2024-12-161-18/+19
| | | | | | | | | | | | | | | The coverity complains about GLOBAL_INIT_ORDER. By making them static and moving these validator objects to the function where they're used, they should be initialized lazily during the first repopulate() call, instead of at program startup. Coverity-Id: 470767 Coverity-Id: 470766 Coverity-Id: 470761 Coverity-Id: 470749 Pick-to: 6.9 Change-Id: Ice9bfb7a02901b82a2d91ce8f93bbe5866c90ac7 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* DialogsQuickImpl: Implement ColorInputs as a custom controlOliver Eftevaag2024-12-1114-719/+480
| | | | | | | | | | | | | | | | | | ColorInputs might as well be a real custom control, instead of a half-baked one. This also makes the ColorDialog much more responsive when resizing it. If we refactor the module in the future, we'll also likely need each style to be self-contained to one module each. This patch ensures that ColorInputs.qml is no longer shared between all styles. Pick-to: 6.9 Fixes: QTBUG-106246 Task-number: QTBUG-104091 Change-Id: I6c8a687a798f015dce47cc94a10266227899db0f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Implement a side bar in QtQuickDialogs and add to FileDialogEd Cooke2024-12-0749-126/+910
| | | | | | | | | | Implement a side bar for non-native QtQuick Dialogs. This side bar has a ListView as its content item that contains common standard locations from QStandardPaths::StandardLocation. Change-Id: Icd916aa91f02a072b4935573c91e6151e3dcdcc1 Fixes: QTBUG-123756 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Dialogs: Only import the QQC2 module used by the styleOliver Eftevaag2024-11-2823-31/+16
| | | | | | | | | | | | | | | | | | The QtQuick.Controls and QtQuick.Controls.impl modules were imported by our non-native dialogs, along with the style specific modules (e.g. QtQuick.Controls.Fusion and QtQuick.Controls.Fusion.impl). This is not only unnecessary, but it also causes the styles to occasionally mix. Making the look and feel inconsistent. (e.g when using the QQC2 macOS style, the non-native dialog would be a hybrid between the macOS style and fusion style). Fix this by only importing the QQC2 module that's associated with the QuickDialogsQuickImpl style used. Pick-to: 6.8 Change-Id: I154e3eeca096e7da379fadac4966e5120858ca5d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* MessageDialog: Fix the background color of detailed text in Dark modeJan Arve Sæther2024-11-121-2/+2
| | | | | | | | | | | The detailed text background was hardcoded to a light color. This of course didn't work well in Dark mode, and caused text (light foreground color) to be unreadable on the light background color. Pick-to: 6.8 6.5 Task-number: QTBUG-123764 Change-Id: I95801d865de880e62059be37cfaad0cf8efa6ab5 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Add missing includesFabian Kosmale2024-10-245-0/+5
| | | | | | | | | | ...in preparation of trimming down includes in QQuickItem. As a drive-by, remove the superfluous qqml.h include from quick/items/qquicktextutil_p.h. Change-Id: I7ee0f459bcbfdfe07314d1f63433aaa8639870ac Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: improve FileDialog's detailed descriptionMitch Curtis2024-10-221-6/+6
| | | | | | | | | - Replace mention of deprecated currentFile(s) with selectedFile(s). - Mention currentFolder. Pick-to: 6.5 6.8 Change-Id: Ib7a414cba7a6f8e479159afc9ed50b014f93442c Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* quickdialogsquickimpl: Use palette for colors in FontDialogContentKai Uwe Broulik2024-09-261-3/+5
| | | | | | | | | | | Don't hardcode "white" (it's also the default in Rectangle) but use palette.base which is used for item view background. Likewise, set palette.text on the TextEdit. Pick-to: 6.8 6.7 Change-Id: I6256f86f531a7b9d32ac668d45fa17faa5d71ce9 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Tests: Fix various CMake warningsUlf Hermann2024-09-101-3/+1
| | | | | | | | | | | Add NO_GENERATE_EXTRA_QMLDIRS where applicable, make output directories and module URIs match, and avoid setting QTP0004 to OLD since that just generates a different warning. Also, explicitly include some .js files in the qmldir, even if that means re-evaluation on each import. Pick-to: 6.8 Change-Id: Ia03445ed7df85aa4d2032ba51675bab7501ad55b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix undefined reference issue for Color object in MessageDialog qmlSanthosh Kumar2024-09-061-0/+1
| | | | | | | | | The Color singleton object used in MessageDialog throws an undefined warning. Import the required module to resolve this issue. Pick-to: 6.8 6.7 6.5 Change-Id: I929d9839274b7393e36c6d0ffe159037a92e2423 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Remove duplicate exposure of QPlatformDialogHelperMitch Curtis2024-09-041-8/+0
| | | | | | | | | | | | | As found in the 6.8 QML API review: https://codereview.qt-project.org/c/qt/qtdeclarative/+/565442/1/qml-api-review/QtQuick/Templates/plugins.qmltypes#11 Rely on the QML_EXTENDED_NAMESPACE(QPlatformDialogHelper) declaration instead. Pick-to: 6.8 Change-Id: I560bb5583dc8700acdbcb11f8feae07e071641ba Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>