summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/quick/dialogs/systemdialogs/FontDialogs.qml2
-rw-r--r--src/dialogs/DefaultFontDialog.qml3
-rw-r--r--src/dialogs/qquickabstractfontdialog.cpp9
-rw-r--r--src/dialogs/qquickabstractfontdialog_p.h5
-rw-r--r--src/dialogs/qquickfontdialog.cpp6
-rw-r--r--src/dialogs/qquickfontdialog_p.h3
-rw-r--r--src/dialogs/qquickplatformfontdialog.cpp8
7 files changed, 34 insertions, 2 deletions
diff --git a/examples/quick/dialogs/systemdialogs/FontDialogs.qml b/examples/quick/dialogs/systemdialogs/FontDialogs.qml
index 3eac625e..9770047c 100644
--- a/examples/quick/dialogs/systemdialogs/FontDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/FontDialogs.qml
@@ -58,6 +58,8 @@ Item {
proportionalFonts: fontDialogProportionalFonts.checked
title: "Choose a font"
font: Qt.font({ family: "Arial", pointSize: 24, weight: Font.Normal })
+ currentFont: Qt.font({ family: "Arial", pointSize: 24, weight: Font.Normal })
+ onCurrentFontChanged: { console.log("CurrentFontChanged: " + currentFont) }
onAccepted: { console.log("Accepted: " + font) }
onRejected: { console.log("Rejected") }
}
diff --git a/src/dialogs/DefaultFontDialog.qml b/src/dialogs/DefaultFontDialog.qml
index b2e4764d..a0e00f15 100644
--- a/src/dialogs/DefaultFontDialog.qml
+++ b/src/dialogs/DefaultFontDialog.qml
@@ -49,6 +49,7 @@ AbstractFontDialog {
id: root
property alias font: content.externalFont
+ property alias currentFont: content.font
Rectangle {
id: content
@@ -73,8 +74,6 @@ AbstractFontDialog {
property string writingSystemSample
property var pointSizes
- onFontChanged: externalFont = font
-
onExternalFontChanged: {
if (content.font != content.externalFont) {
font = externalFont
diff --git a/src/dialogs/qquickabstractfontdialog.cpp b/src/dialogs/qquickabstractfontdialog.cpp
index 29dd15e8..c5b25074 100644
--- a/src/dialogs/qquickabstractfontdialog.cpp
+++ b/src/dialogs/qquickabstractfontdialog.cpp
@@ -121,6 +121,15 @@ void QQuickAbstractFontDialog::setFont(const QFont &arg)
m_font = arg;
emit fontChanged();
}
+ setCurrentFont(arg);
+}
+
+void QQuickAbstractFontDialog::setCurrentFont(const QFont &arg)
+{
+ if (m_currentFont != arg) {
+ m_currentFont = arg;
+ emit currentFontChanged();
+ }
}
void QQuickAbstractFontDialog::setScalableFonts(bool arg)
diff --git a/src/dialogs/qquickabstractfontdialog_p.h b/src/dialogs/qquickabstractfontdialog_p.h
index 858a0d3e..2156eb79 100644
--- a/src/dialogs/qquickabstractfontdialog_p.h
+++ b/src/dialogs/qquickabstractfontdialog_p.h
@@ -70,6 +70,7 @@ class QQuickAbstractFontDialog : public QQuickAbstractDialog
Q_PROPERTY(bool monospacedFonts READ monospacedFonts WRITE setMonospacedFonts NOTIFY monospacedFontsChanged)
Q_PROPERTY(bool proportionalFonts READ proportionalFonts WRITE setProportionalFonts NOTIFY proportionalFontsChanged)
Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
+ Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged)
public:
QQuickAbstractFontDialog(QObject *parent = 0);
@@ -81,12 +82,14 @@ public:
bool monospacedFonts() const;
bool proportionalFonts() const;
QFont font() const { return m_font; }
+ QFont currentFont() const { return m_currentFont; }
public Q_SLOTS:
void setVisible(bool v);
void setModality(Qt::WindowModality m);
void setTitle(const QString &t);
void setFont(const QFont &arg);
+ void setCurrentFont(const QFont &arg);
void setScalableFonts(bool arg);
void setNonScalableFonts(bool arg);
void setMonospacedFonts(bool arg);
@@ -98,12 +101,14 @@ Q_SIGNALS:
void monospacedFontsChanged();
void proportionalFontsChanged();
void fontChanged();
+ void currentFontChanged();
void selectionAccepted();
protected:
QPlatformFontDialogHelper *m_dlgHelper;
QSharedPointer<QFontDialogOptions> m_options;
QFont m_font;
+ QFont m_currentFont;
Q_DISABLE_COPY(QQuickAbstractFontDialog)
};
diff --git a/src/dialogs/qquickfontdialog.cpp b/src/dialogs/qquickfontdialog.cpp
index 2f3c6d83..d17ce986 100644
--- a/src/dialogs/qquickfontdialog.cpp
+++ b/src/dialogs/qquickfontdialog.cpp
@@ -117,4 +117,10 @@ QQuickFontDialog::~QQuickFontDialog()
\l Window or an \l Item.
*/
+void QQuickFontDialog::accept()
+{
+ setFont(m_currentFont);
+ QQuickAbstractFontDialog::accept();
+}
+
QT_END_NAMESPACE
diff --git a/src/dialogs/qquickfontdialog_p.h b/src/dialogs/qquickfontdialog_p.h
index a8e2d82e..c51e1fd9 100644
--- a/src/dialogs/qquickfontdialog_p.h
+++ b/src/dialogs/qquickfontdialog_p.h
@@ -67,6 +67,9 @@ public:
explicit QQuickFontDialog(QObject *parent = 0);
~QQuickFontDialog();
+protected Q_SLOTS:
+ virtual void accept();
+
protected:
virtual QPlatformFontDialogHelper *helper() { return 0; }
diff --git a/src/dialogs/qquickplatformfontdialog.cpp b/src/dialogs/qquickplatformfontdialog.cpp
index 46ad5eb8..05500489 100644
--- a/src/dialogs/qquickplatformfontdialog.cpp
+++ b/src/dialogs/qquickplatformfontdialog.cpp
@@ -246,7 +246,15 @@ QPlatformFontDialogHelper *QQuickPlatformFontDialog::helper()
/*!
\qmlproperty font FontDialog::font
+ The font which the user selected and accepted.
+*/
+
+/*!
+ \qmlproperty font FontDialog::currentFont
+
The font which the user selected.
+
+ \since 5.3
*/
QT_END_NAMESPACE