Init the icon in ShellClient::init

Summary:
If the window never provides the appId, we would not get an icon for
the window. This happens for example for KWin's internal windows which
don't set the app id as KWin also doesn't have a desktop file. With this
change the DebugConsole has a window icon in the decoration.

Test Plan: Extended tests and manual verification of DebugConsole

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10294
This commit is contained in:
Martin Flöser 2018-02-04 14:19:23 +01:00
parent 4c6e7b9200
commit 5795fc8cc0
3 changed files with 3 additions and 0 deletions

View file

@ -211,6 +211,7 @@ void InternalWindowTest::testEnterLeave()
QVERIFY(!workspace()->activeClient());
ShellClient *c = clientAddedSpy.first().first().value<ShellClient*>();
QVERIFY(c->isInternal());
QCOMPARE(c->icon().name(), QStringLiteral("wayland"));
QCOMPARE(workspace()->findToplevel(&win), c);
QCOMPARE(c->geometry(), QRect(0, 0, 100, 100));
QVERIFY(c->isShown(false));

View file

@ -160,6 +160,7 @@ void TestShellClient::testMapUnmapMap()
QCOMPARE(client->readyForPainting(), true);
QCOMPARE(client->depth(), 32);
QVERIFY(client->hasAlpha());
QCOMPARE(client->icon().name(), QStringLiteral("wayland"));
QCOMPARE(workspace()->activeClient(), client);
QVERIFY(effectsWindowShownSpy.isEmpty());
QVERIFY(client->isMaximizable());

View file

@ -197,6 +197,7 @@ void ShellClient::init()
findInternalWindow();
createWindowId();
setupCompositing();
updateIcon();
SurfaceInterface *s = surface();
Q_ASSERT(s);
if (s->buffer()) {