when a panel is created it doesn't have a view immediately,
so we have to work around by writing its config instead.
we have to force lastScreen of the newly created containment,
or it won't have a screen yet at that point, breaking JS code
that relies on it
NOTE: if we'll allow setting a panel screen from JS,
it will have to use the following lines as well
not creating the panel view yet in order to have the same code path
between the first and subsequent plasma starts.
we want to have the panel appearing only when its layout is completed, to not have
many visible relayouts. otherwise we had even panel resizes at startup that
made al lthe full representations be loaded.
reviewed-by: David Edmundson
at first startup, createWaitingPanels was already
executed when the js setup script terminated.
in this case, don't re-add it to m_waitingPanels
reviewed-by: David Edmundson
We set KeepAbove using KWindowSystem but since Qt 5.7 apparently Qt does something weird and loses the flag.
Explicitly add it to flags. Not doing any other cleanup in the code because this is critical for 5.8.0.
BUG: 368997
FIXED-IN: 5.8.0
Differential Revision: https://phabricator.kde.org/D2825
When a device notification arrives, such as "you can now safely unmount" or "failed to unmount"
device notifier would unconditionally open showing an empty list.
Since we now show device notifications only connected to the device they're about, it makes no
sense to expand it for invisible devices. Applications where mounting or unmounting can fail
for non-removable devices, like Dolphin, already show the error message within the UI anyway,
making the popup redundant.
BUG: 368894
FIXED-IN: 5.8.0
Differential Revision: https://phabricator.kde.org/D2823
When there is already a config for a given plasmoid, reuse it
instead of creating a brand new plasmoid (having config groups
endlessy accumulating in the config file)
https://phabricator.kde.org/D2817
BUG:365618
BUG:365569
be able to destroy applets even when locked: delete their config
by hand.
Except in one case: when the applet gets automatically destroyed
by dbus activation do *not* clear the config, it should be
reused next time.
BUG:365618
BUG:365569
Summary:
We have a big case because the size depend on whether the panel is vertical or horizontal
but it doesn't really bring much.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2813
Summary:
Whenever we restore, the position of the panel can be random, we need to ensure
that it's placed in the screen boundaries.
I could easily reproduce by having the a vertical set up where the primary
persistent screen is below. Disconnecting the screen above would call restore
but leave the screen in the same position (with very big Y) but with the new
width.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2812
Summary:
Utility windows (NET::Utility/_NET_WM_WINDOW_TYPE_UTILITY) should
not be on the Task Manager, but they should be on the Pager. This
patch achieves this by evaluating the window type in the
AbstractTasksModel::SkipTaskBar data role.
I considered the alternative approach of making a new
AbstractTasksModel::IsUtilityWindow (or similar) data role and
adding a pass to evaluate it to TaskFilterProxyModel, then
configuring the filter models in TasksModel and the Pager backend
differently. But this is not very extensible. Then I realized that
AbstractTasksModel data roles do not and should not reflect X11
idioms anyway; the point of the library is to abstract for the
purpose of UI, and what XWindowTasksModel considers "SkipTaskBar"
is really an implementation detail. This makes all the more sense
considering on Wayland we have no notion of window types (beyond
"popup") yet, and don't quite now how it's going to evolve.
Various API docstrings have been changed to better reflect that
the meaning of the data role doesn't map to anything specific in
the tasks.
BUG:368956
Reviewers: #plasma, davidedmundson, broulik
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2807
Summary:
This makes grouping work for apps we can't find on the system and
can't produce a launcher URL for, such as wine clients. Any better
app will use our superior codepath, the wonky ones like wine then
get left to making sure their WM_CLASS Class makes sense as per the
ICCCM spec.
Of course this doesn't work for XWayland clients on Wayland though.
BUG:368078
Also nixes an obsolete FIXME and adds a small check to avoid
producing launcher URLs that are only the window icon pixmap
query element.
Reviewers: #plasma, davidedmundson, broulik
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2804
Summary:
Tasks which demand attention usually bypass the filters by activity
and desktop, i.e. the Task Manager will show a window that's
demanding attention even when filtering is enabled and we're on a
different activity or desktop.
This behavior is however not suitable for the Pager, which shouldn't
show windows demanding attention on all workspace delegates. This
patch adds a prop that allows the Pager to disable the filter bypass.
Reviewers: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2802
Summary:
They were out of sync with the changes I did for
XCB for Qt > 5.6
Test Plan: Logged in to a wayland session. Normal sized text, normal sized scrollbars.
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2797
Summary:
An expanding spacer had it's minimum size set to the config.length
Allowing the panel to go from config size to infinite.
The problem is the panel length effectively defaults to the size the
spacer starts at (it gets set when we drag it into the right place)
meaning it starts off huge and can never shrink. This then leads to
applets being pushed off the panel.
We want it to be in expanding mode from 0 to config.length
and non expanding to ideally be a fixed width - though still probably
compress if it would otherwise mean the applets would overflow.
Setting the preferred size does all that implicitly; and also sets the
appropriate hint so you can have a spacer in a flexible width panel
correctly.
BUG: 352651
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: mart, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2785
Summary:
The visibility mode needs to be passed to KWayland by mapping to the
PanelBehavior. This is required to pass the correct hint to KWin to
adjust the layering, etc.
BUG: 368499
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2789
Summary:
::restore uses ::config which changes depending on the containment used.
calling positionPanel before restoring, means we're loading
garbage values. This was hidden as location was set just after which
did call restore().
Saves one incorrect resize.
Test Plan:
qDebug + starting plasmashell
Reviewers:
Marco Martin
Subscribers:
BackgroundFinder::suffixes(), despite its name, actually returns a list
of glob patterns. The extension of the image file is checked against
this list to ensure that it is supported, which needs to take
account of that. Do the check in a new function
BackgroundFinder::isAcceptableSuffix(const QString &suffix).
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2722
Summary:
show the default values in the generated docs.
in case no default is indicated, fallback to different type dependednt
empty values, such as 0 for Int, false for Bool, "empty list" for string lists
the generated docs will look like:
* '''ItemsGeometriesHorizontal''' (''String'', default ''empty string'')
Reviewers: davidedmundson, #plasma
Reviewed By: davidedmundson, #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2770
When logging in failed, focus the password field and select all, so you can start typing a new password thereafter.
I did the same in the lock screen.
There's a workaround for a bug which draws focus away from the password field on login
but never put it back if logging in failed.
Differential Revision: https://phabricator.kde.org/D2767
This makes it consistent with what we do with the Plasma sidebars (Widget Explorer, Activity Manager).
Also enables LayoutMirroring.
Differential Revision: https://phabricator.kde.org/D2761
Summary:
Plasma::PluginLoader::self()->listAppletInfo(QString() is expensive, it
loads and parses every .desktop file individually. Twice.
The main offender is the defaultApplets property, which gets requested
multiple times from JS space, and we reparse the files every time.
Moving the work to the constructor solves that. This saves loading (on
my machine) ~900 desktop files.
Test Plan:
- wiped config, defaults appeared
- DBus activated still worked
- restore works as before
Running "time plasmashell" shows:
BEFORE:
plasmashell 4.01s user 0.46s system 87% cpu 5.116 total
plasmashell 4.01s user 0.54s system 74% cpu 6.124 total
AFTER:
plasmashell 3.17s user 0.42s system 68% cpu 5.259 total
plasmashell 3.18s user 0.46s system 81% cpu 4.475 total
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: mart, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2756
Summary:
This caused it to be cropped on some translations.
This patch only sets the minimum size to force it to line up with the form layout,
but still allow the text to be larger if needed.
Also tidy up other use of directly setting width/anchors in a layout.
BUG:368487
Test Plan:
Checked English layout matched up
Changed text to "asdfasdfadsfasdfljasdfjadlf" and checked that still fit
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D2729
the panel size and position is saved per-screen resolution
so at different resolutions (or different screens) the panel always goes
back where it was with the size it had.
this should give a more deterministic behavior to the panel
when resizing the screen (like virualbox) or docking to
an external docking styation
BUG:368741
reviewed-by: David Edmundson <david@davidedmundson.co.uk>
This cleans up and simplifies the tabbox code, mainly by replacing manual anchoring by QtQuick Layouts.
Spacing and fonts are also streamlined.
Differential Revision: https://phabricator.kde.org/D2741
While investingating properties of the MPRIS dataengine, I have noitced
that the :xsesam:url property in the metadata was encoded incorrectly. I
have several folders containing music with non-Latin characters, and
they showed up as ????.
After a quick chat with kbroulik on IRC, I decided to make this patch,
which uses UTF-8 instead.
Differential Revision: https://phabricator.kde.org/D2732
"syspal" is referenced by the WallpaperDelegate but added by the Containment
Appearance Configuration QML which isn't there when loading the wallpaper config
into a different view like the lock screen UI.
Differential Revision: https://phabricator.kde.org/D2752