The QSGTextures are created with
window()->createTextureFromId(m_texture, QSize(w,h),
QuickWindow::TextureOwnsGLTexture));
this means we don't want to be deleting textures ourselves too, it will
be deleted when we delete the QSGTexture, which is a scoped pointer
inside our QSGNode.
BUG: 355644
BUG: 365946
REVIEW: 126131
applets will be deleted by the parent, as they are
acontainment's children. by not deleting them by hand
also every signal will be disconnected, not causing appletRemoved
to be emitted, so not causing removal of config
pieces at shutdown, this removes the need of the
explicit disconnect in aboutToQuit from contaiment interface
Change-Id: Iddf6ded60ae849ca03c363be6e736da496310b82
reviewed-by: David Edmundson
Plasma packages are essentially kpackages, so use the macros from KPackage
to install Plasma packages.
This allows to reuse the facilities set up there.
REVIEW: 128579
Currently the code gets the icon name from the QIcon and tries to do
some Plasma theming with it.
However if that fails it then loads the QIcon::fromTheme again.
This is pointless in most cases and will break any icons that have a
custom loader (all SNIs)
REVIEW: 128580
The added test case simulates that a Compositor is started on X11
and shut down again. This should trigger the themeChanged signals
and the imagePath should return different elements.
REVIEW: 128572
Panel popup dialogs along with other applications of Plasma::Dialog
(e.g. Kicker's submenus) currently don't correctly set WM_TRANSIENT_FOR
to the id of their parent window on X11. This causes them to interact
badly with auto-hide panels which do not set struts, e.g. Kicker's
submenus open behind the panel.
Internally, Dialog makes calls to QWindow::setFlags when its window
type is "Normal" (the default) and otherwise uses KWindowSystem's
setType. (Kicker's subclass, SubMenu, does an additional
KWindowSystem::setType call for NET::Menu). Neither CompactApplet
nor Kicker change their Dialog's 'type' property to anything else,
so their dialogs are "Normal", thus going the setFlags route with
no setType calls.
Dialog also sets its transient parent to the window the visualParent
item is inside of.
Now here is where things break down: QXcbWindow will update
WM_TRANSIENT_PARENT for in show(), but only when an inline function
called isTransient returns true. isTransient decides this based on
window type, which is determined from the flags set with
QWindow::setFlags. Calls to KWindowSystem::setType would have no
bearing on this; there seems to be no mapping back from external
state. This is why setting Dialog.type to e.g. "DialogWindow" does
nothing.
This patch takes the route of adding Qt::Dialog to the starting
flags - after all Dialog is a dialog. That means isTransient()
will consider the window to be a transient and those
setTransientParent calls Dialog does will not be ignored. In the
case of CompactApplet, no further calls to KWS::setType are done;
Kicker continues to call it with NET::Menu to get desired window
manager behavior.
In light testing everything still seems too work, with the added
benefit of fixing:
BUG:366278
That said, the weird mess of setFlags and setType and state in the
windowing system vs. Qt is horrible and sad.
REVIEW:128571
Since nobody bothered to fulfill my request for this icon (cf. Review 128332)
I just did it myself, with no warranty.
Plasma IconItem finds icons from Plasma theme only in the SVG file of the first
section of the name (ie. all icons in network must start with network- prefix
which the flightmode icons did not).
The old icon is kept as is for compatibility.
This is done by ContainmentInterface::mousePressEvent, but not in this
code path, which is hit for applet panel popups.
Folder View relies on this to update actions ahead of the menu being
opened.
BUG:366294
QtQuick.Layouts by default left aligns content and because the Layout is
anchors.fill'd the icon would show off-center in a button when no text has been set.
This fixes this.
REVIEW: 128493
BUG: 365947
The containment's status is the max of all applets.
Unfortunately, HiddenStatus, while semantically lower, has the highest value,
so as soon as there's a hidden applet (eg. pager with just one virtual desktop),
the panel will always auto-hide even when popups are open as its status will be HiddenStatus.
REVIEW: 128301
screen ids are going to not be continuous anymore
as screen id is going to correspond 1:1 to connectors,
it will be possible to have "holes", therefore valid ids
that are bigger than screenNum()
REVIEWED-BY:sebas@kde.org
Change-Id: I1c0b1fb827dba4d95f228d32209403150c089c77
- Initially set state (and type, and flags) in response to PlatformSurfaceCreated.
We know reliably this will run before the window is mapped.
- Drop the comment about removing setState() form showEvent handler, as
we need it to avoid state loss in this scenario:
<mgraesslin> the window gets mapped first time: everything is fine
<mgraesslin> window gets unmapped: kwin removes the state as per spec
<mgraesslin> qt gets change event and removes the states it doesn't care about
<mgraesslin> qt maps window again and sets states
<mgraesslin> we lost the state
<mgraesslin> which means we need to set the state again from our side before(!) Qt sets it
<mgraesslin> and before Qt maps the window
In order to have support for tooltip window type in Wayland, the
window type NET::Tooltip is also set through KWindowSystem API once
the platform surface is created.
REVIEW: 128300
Even though QQuickItem only has a width and height accessor there is a
usable public setSize method.
This gets rid of a lot of potential re-evaluation as internal geometry
is updated before widthChanged is emitted.
REVIEW: 128316
Do to so means the System Tray applet ends up being placed inside the
system tray container, which ends up in a parent loop, causing a stack
overflow every time parent() is called recursively
This happens whenever one drags a sys tray on the desktop or simply adds
a new system tray whilst running.
BUG: 361777
We also need to do a hack for Plasma/5.7 in plasma-desktop somehow in
all cases where this is used.