summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Faure <david.faure@kdab.com>2014-01-30 21:59:41 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-12 20:12:17 +0100
commitbf82245bafad25403aeb7129ebe1fc419c6f4ad9 (patch)
treeb98c11d63ea3a388333341a7bad6789fa6fb59bf
parenteacd58d4e78e7238ba5fcca90ba960aaf3ebd263 (diff)
Restore support for -title command line argument on X11, add -qwindowtitle.
-title disappeared between Qt4 and Qt5, due to all the refactorings around QPA. Making the caption of the mainwindow configurable allows custom setups for specific users or use cases. [ChangeLog][QtGui][QGuiApplication] Restore support for -title command line argument on X11, add -qwindowtitle on all platforms. Change-Id: I73e6bf21248f3419178eba583b257172a175e74e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
-rw-r--r--src/gui/kernel/qguiapplication.cpp5
-rw-r--r--src/gui/kernel/qguiapplication_p.h2
-rw-r--r--src/gui/kernel/qwindow.cpp8
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp12
4 files changed, 27 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index f0431ebd9d..1e27b5b7c9 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -471,6 +471,8 @@ static QWindowGeometrySpecification windowGeometrySpecification;
and will make the application wait until a debugger connects to it.
\li -session \e session, restores the application from an earlier
\l{Session Management}{session}.
+ \li -qwindowgeometry, sets the geometry of the first window
+ \li -qwindowtitle, sets the title of the first window
\endlist
\sa arguments()
@@ -1033,6 +1035,9 @@ void QGuiApplicationPrivate::createPlatformIntegration()
} else if (arg == "-qwindowgeometry" || (platformName == "xcb" && arg == "-geometry")) {
if (++i < argc)
windowGeometrySpecification = QWindowGeometrySpecification::fromArgument(argv[i]);
+ } else if (arg == "-qwindowtitle" || (platformName == "xcb" && arg == "-title")) {
+ if (++i < argc)
+ firstWindowTitle = QString::fromLocal8Bit(argv[i]);
} else {
argv[j++] = argv[i];
}
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 57c55e1e0f..22f1cb9aa8 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -231,6 +231,8 @@ public:
static bool noGrab;
QInputMethod *inputMethod;
+ QString firstWindowTitle;
+
static QList<QObject *> generic_plugin_list;
#ifndef QT_NO_SHORTCUT
QShortcutMap shortcutMap;
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index 42f61399d9..2382764183 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -432,6 +432,14 @@ void QWindow::setVisible(bool visible)
// remove posted quit events when showing a new window
QCoreApplication::removePostedEvents(qApp, QEvent::Quit);
+ if (type() == Qt::Window) {
+ QString &firstWindowTitle = QGuiApplicationPrivate::instance()->firstWindowTitle;
+ if (!firstWindowTitle.isEmpty()) {
+ setTitle(firstWindowTitle);
+ firstWindowTitle = QString();
+ }
+ }
+
QShowEvent showEvent;
QGuiApplication::sendEvent(this, &showEvent);
}
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
index d4237b135f..6ef9957fa1 100644
--- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -60,6 +60,7 @@ class tst_QGuiApplication: public tst_QCoreApplication
private slots:
void displayName();
+ void firstWindowTitle();
void focusObject();
void allWindows();
void topLevelWindows();
@@ -83,6 +84,17 @@ void tst_QGuiApplication::displayName()
QCOMPARE(QGuiApplication::applicationDisplayName(), QString::fromLatin1("The GUI Application"));
}
+void tst_QGuiApplication::firstWindowTitle()
+{
+ int argc = 3;
+ char *argv[] = { const_cast<char*>("tst_qguiapplication"), const_cast<char*>("-qwindowtitle"), const_cast<char*>("User Title") };
+ QGuiApplication app(argc, argv);
+ QWindow window;
+ window.setTitle("Application Title");
+ window.show();
+ QCOMPARE(window.title(), QString("User Title"));
+}
+
class DummyWindow : public QWindow
{
public: