From 532b94e98f3d7c74599b7093a3c353e3a747f7a4 Mon Sep 17 00:00:00 2001 From: David Faure Date: Fri, 4 Apr 2014 19:28:43 +0200 Subject: Add support for -qwindowicon command line argument. [ChangeLog][QtGui][QGuiApplication] Add support for -icon command line argument on X11, add -qwindowicon on all platforms. Change-Id: Iacc602466699bf634d8b34aab7ed73c83fd9844f Reviewed-by: Frederik Gladhorn Reviewed-by: Friedemann Kleint --- src/gui/kernel/qguiapplication.cpp | 6 ++++++ src/gui/kernel/qguiapplication_p.h | 1 + src/gui/kernel/qwindow.cpp | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index f0ef39e809..01b888919d 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -495,6 +495,7 @@ static QWindowGeometrySpecification windowGeometrySpecification; \l{Session Management}{session}. \li -qwindowgeometry, sets the geometry of the first window \li -qwindowtitle, sets the title of the first window + \li -qwindowicon, sets the default window icon \endlist The following standard command line options are available for X11: @@ -1115,6 +1116,11 @@ void QGuiApplicationPrivate::createPlatformIntegration() } else if (arg == "-qwindowtitle" || (platformName == "xcb" && arg == "-title")) { if (++i < argc) firstWindowTitle = QString::fromLocal8Bit(argv[i]); + } else if (arg == "-qwindowicon" || (platformName == "xcb" && arg == "-icon")) { + if (++i < argc) { + const QString icon = QString::fromLocal8Bit(argv[i]); + forcedWindowIcon = QDir::isAbsolutePath(icon) ? QIcon(icon) : QIcon::fromTheme(icon); + } } else { argv[j++] = argv[i]; } diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index 8f6149d1ed..782a4b34b3 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -234,6 +234,7 @@ public: QInputMethod *inputMethod; QString firstWindowTitle; + QIcon forcedWindowIcon; static QList generic_plugin_list; #ifndef QT_NO_SHORTCUT diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 6dcc3df166..2b0c95b2b6 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -436,11 +436,14 @@ void QWindow::setVisible(bool visible) QCoreApplication::removePostedEvents(qApp, QEvent::Quit); if (type() == Qt::Window) { - QString &firstWindowTitle = QGuiApplicationPrivate::instance()->firstWindowTitle; + QGuiApplicationPrivate *app_priv = QGuiApplicationPrivate::instance(); + QString &firstWindowTitle = app_priv->firstWindowTitle; if (!firstWindowTitle.isEmpty()) { setTitle(firstWindowTitle); firstWindowTitle = QString(); } + if (!app_priv->forcedWindowIcon.isNull()) + setIcon(app_priv->forcedWindowIcon); } QShowEvent showEvent; -- cgit v1.2.3