aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2025-10-12 23:00:20 +0300
committerTarja Sundqvist <tarja.sundqvist@qt.io>2025-10-12 23:00:20 +0300
commit4826f86e274f1b29bd769e6790824f9e62a40f62 (patch)
treec2cc4bb09ca91951a2641e33c3b0a65deb0af877 /src/quickdialogs
parent0f0972d542d9869c2dcfaf9c963d42ff32766460 (diff)
parent844f9b9b376838bcb44324984876f8bf99d85d38 (diff)
Merge tag 'v6.5.7-lts-lgpl' into 6.56.5
Qt 6.5.7-lts-lgpl release
Diffstat (limited to 'src/quickdialogs')
-rw-r--r--src/quickdialogs/quickdialogs/qquickabstractdialog.cpp33
-rw-r--r--src/quickdialogs/quickdialogs/qquickabstractdialog_p.h3
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml8
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml10
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml9
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml8
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml8
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qml/MessageDialog.qml1
8 files changed, 58 insertions, 22 deletions
diff --git a/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp b/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp
index 857a75c7bd..101870ec84 100644
--- a/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp
+++ b/src/quickdialogs/quickdialogs/qquickabstractdialog.cpp
@@ -53,7 +53,14 @@ Q_LOGGING_CATEGORY(lcDialogs, "qt.quick.dialogs")
v |
+-----------------+ |
| m_handle valid? |--------------------->false
- +-----------------+
+ +-----------------+ ^
+ | |
+ v |
+ true |
+ | |
+ +-------------------+ |
+ | m_handle->show()? |------------------->false
+ +-------------------+
|
v
true
@@ -287,7 +294,25 @@ void QQuickAbstractDialog::open()
return;
onShow(m_handle.get());
+
m_visible = m_handle->show(m_flags, m_modality, m_parentWindow);
+ if (!m_visible && useNativeDialog()) {
+ // Fall back to non-native dialog
+ destroy();
+ if (!create(CreateOptions::DontTryNativeDialog))
+ return;
+
+ onShow(m_handle.get());
+ m_visible = m_handle->show(m_flags, m_modality, m_parentWindow);
+
+ if (m_visible) {
+ // The conditions that caused the non-native fallback might have
+ // changed the next time open() is called, so we should try again
+ // with a native dialog when that happens.
+ QObject::connect(this, &QQuickAbstractDialog::visibleChanged,
+ m_handle.get(), [this]{ if (!isVisible()) destroy(); });
+ }
+ }
if (m_visible) {
m_result = Rejected; // in case an accepted dialog gets re-opened, then closed
emit visibleChanged();
@@ -387,15 +412,15 @@ QPlatformTheme::DialogType toPlatformDialogType(QQuickDialogType quickDialogType
? QPlatformTheme::FileDialog : static_cast<QPlatformTheme::DialogType>(quickDialogType);
}
-bool QQuickAbstractDialog::create()
+bool QQuickAbstractDialog::create(CreateOptions createOptions)
{
qCDebug(lcDialogs) << qmlTypeName(this) << "attempting to create dialog backend of type"
<< int(m_type) << "with parent window" << m_parentWindow;
if (m_handle)
return m_handle.get();
- qCDebug(lcDialogs) << "- attempting to create a native dialog";
- if (useNativeDialog()) {
+ if ((createOptions != CreateOptions::DontTryNativeDialog) && useNativeDialog()) {
+ qCDebug(lcDialogs) << "- attempting to create a native dialog";
m_handle.reset(QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(
toPlatformDialogType(m_type)));
}
diff --git a/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h b/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h
index f1d046eb89..e314eb27b4 100644
--- a/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h
+++ b/src/quickdialogs/quickdialogs/qquickabstractdialog_p.h
@@ -98,7 +98,8 @@ protected:
void classBegin() override;
void componentComplete() override;
- bool create();
+ enum class CreateOptions { TryAllDialogTypes = 0, DontTryNativeDialog = 1 };
+ bool create(CreateOptions = CreateOptions::TryAllDialogTypes);
void destroy();
virtual bool useNativeDialog() const;
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml
index 965f56bdc7..3b71a415e2 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Fusion/FileDialog.qml
@@ -38,10 +38,12 @@ FileDialogImpl {
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
dim: true
modal: true
- title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName)
+ title: qsTr("Overwrite file?")
+ width: control.width - control.leftPadding - control.rightPadding
- Label {
- text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName)
+ contentItem: Label {
+ text: qsTr("“%1” already exists.\nDo you want to replace it?").arg(control.fileName)
+ wrapMode: Text.WordWrap
}
footer: DialogButtonBox {
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml
index 8568be710a..3da17f60ce 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Imagine/FileDialog.qml
@@ -47,12 +47,12 @@ FileDialogImpl {
dim: true
modal: true
spacing: 12
- title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName)
+ title: qsTr("Overwrite file?")
+ width: control.width - control.leftPadding - control.rightPadding
- Label {
- anchors.horizontalCenter: parent.horizontalCenter
- text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName)
- horizontalAlignment: Text.AlignHCenter
+ contentItem: Label {
+ text: qsTr("“%1” already exists.\nDo you want to replace it?").arg(control.fileName)
+ wrapMode: Text.WordWrap
}
footer: DialogButtonBox {
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml
index 9700aeba79..c467e5a40c 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Material/FileDialog.qml
@@ -39,10 +39,13 @@ FileDialogImpl {
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
dim: true
modal: true
- title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName)
+ title: qsTr("Overwrite file?")
+ width: control.width - control.leftPadding - control.rightPadding
+ clip: true
- Label {
- text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName)
+ contentItem: Label {
+ text: qsTr("“%1” already exists.\nDo you want to replace it?").arg(control.fileName)
+ wrapMode: Text.WordWrap
}
footer: DialogButtonBox {
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml
index 0d2db8b426..b0bc98ee00 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/+Universal/FileDialog.qml
@@ -37,10 +37,12 @@ FileDialogImpl {
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
dim: true
modal: true
- title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName)
+ title: qsTr("Overwrite file?")
+ width: control.width - control.leftPadding - control.rightPadding
- Label {
- text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName)
+ contentItem: Label {
+ text: qsTr("“%1” already exists.\nDo you want to replace it?").arg(control.fileName)
+ wrapMode: Text.WordWrap
}
footer: DialogButtonBox {
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml
index defb7dd4e2..536634edb6 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/FileDialog.qml
@@ -41,10 +41,12 @@ FileDialogImpl {
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
dim: true
modal: true
- title: qsTr("“%1” already exists. Do you want to replace it?").arg(control.fileName)
+ title: qsTr("Overwrite file?")
+ width: control.width - control.leftPadding - control.rightPadding
- Label {
- text: qsTr("A file with the same name already exists in %1.\nReplacing it will overwrite its current contents.").arg(control.currentFolderName)
+ contentItem: Label {
+ text: qsTr("“%1” already exists.\nDo you want to replace it?").arg(control.fileName)
+ wrapMode: Text.WordWrap
}
footer: DialogButtonBox {
diff --git a/src/quickdialogs/quickdialogsquickimpl/qml/MessageDialog.qml b/src/quickdialogs/quickdialogsquickimpl/qml/MessageDialog.qml
index 5dc7ee7873..562e931a69 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qml/MessageDialog.qml
+++ b/src/quickdialogs/quickdialogsquickimpl/qml/MessageDialog.qml
@@ -3,6 +3,7 @@
import QtQuick
import QtQuick.Controls
+import QtQuick.Controls.impl
import QtQuick.Dialogs
import QtQuick.Dialogs.quickimpl
import QtQuick.Layouts