Using screenAt(cursor) is a bad idea in general. It doesn't work
properly on Wayland. We can't really tell where our cursor is, so it
always will fall about wherever our top-leftmost screen is.
Instead, just create them wherever we gave focus last.
There is no primary on Wayland, we were trying to make one up and making
everything worse in turn.
Instead, have the screen to connector mapping be stable across
executions. Each screen will look as configured, which makes it all more
predictable and we do not run into cases where we swap displays
configurations because the other one happened to be the primary this
time around.
Plasma had an entire text editor for the script engine in process.
The method for loading this was very convoluted, it loaded a QML file
(in plasma-desktop!) which contained an Item(!) which then loaded a QML
component that showed a widget dialog.
It also means loading a very heavy lib KTextEditor in ShellComponents
which is very heavy. This will get loaded in things like the logout
greeter, which is super slow on the pinephone.
We already had the concept of evalating a script remotely, we can just
hook up the print statement and move the whole executable out.
Technically this is an API break on the plasmashell DBus API, but
pragmatically going from void -> something on the return type isn't
going to break anything.
ShellCorona is created before KDBusService which registers the name.
This causes a problem as we register global shortcuts before plasmashell
--replace has kiled the old application, which in turn deregisters
everything.
We want everything before KDBusService to be as light as possible.
Moving ShellCorona construction is not trivial as some argument parsing
uses that.
BUG: 408310
createWaitingPanels is not guaranteed to create all of them.
Those which have a desktop not ready yet will go back to waitingpanels until new turn.
This scenario sometimes happens during first run scripts or update ones, causing a crash in those cases
The current code is broken as the course of events is:
- we delete the containment
- an existing connect to containment deleted goes to
panelContainmentDestroyed
- this updates m_panelViews and calls deleteLater
- this deleteLater isn't run before other exit handlers
A popup needs to grab the keyboard and the pointer in order to dismiss
itself when another window is clicked. It works perfectly on X11.
On Wayland though, the compositor is responsible for dismissing popups
if some surface of another application has been clicked. Note that I
said "of another application." If user clicks some surface of the same
application, the compositor won't dismiss the popup.
If the application uses only QtWidgets, then the popup will be closed
as expected in both cases. But if the application uses both Qt Quick and
Qt Widgets, e.g. plasmashell, then the popup won't be dismissed if a
QQuickItem has been clicked.
It is a Qt bug, but for the time being, this change introduces an event
filter that monitors Qt::MouseButtonPress events and when needed closes
the active popup widget. This is a workaround.
CCBUG: 379635
ShellCorona is a messy class doing mulitple functions.
This patch splits out all telemetry code into a new class, meaning it's
easier to extend. Code remains the same.
The HIG specifies that actions and menu items should start with action
verbs, and that ellipses should only be used for actions that open a
separate window to complete the action. This commit applies that to the
"Activities..." menu item.
Currently updating the DesktopView geometry and emitting signals notifying of changes to screen geometry are connected independently to QScreen::geometryChanged(), while screenGeometry() as well as availableScreenRect() and availableScreenRegion() depend on the DesktopView geometry. The incorrect order of slots being called causes the task manager to behave incorrectly on screen configuration changes, displaying either no windows or windows from a wrong screen. This also affects the desktop pager widget when configured to show the current desktop only.
BUG: 373075
Summary: When disconnecting the primary screen on a dual monitor setup and reconnecting it back, the available size of the secondary screen desktop may be reduced to the thickness of the primary screen panel, as can be seen by dragging a rubber band or trying to move some widgets. This apparently happens because the QML bindings had last been updated at the short moment when both panels were temporarily placed on the same screen. Update availableScreenRect therefore when a panel changes its screen.
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D29831
Summary:
Since the release of KDE Frameworks 5.68.0 we can now
use the methods exposed in KActivities::Controller to trigger a
switch to the previous or next activity from ShellCorona.
Reviewers: ngraham, ivan, apol
Reviewed By: ngraham, apol
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D28083
Summary:
Before loading the view, query all plasma processes and show why they're using
KUserFeedback.
Depends on D26569
Test Plan: Manual testing
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: ngraham, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D26570
Summary:
We currently have a mouse-wheel action to switch to the previous/next activity,
but it wasn't possible to assign a global keyboard shortcut to these actions.
As discussed on Phabricator, this doesn't define a default key-sequence yet,
but at least gives users the possibility to assign there own ones, which wasn't
possible before.
Reviewers: apol, davidedmundson, #vdg, #plasma, ngraham
Reviewed By: davidedmundson, #vdg, #plasma, ngraham
Subscribers: ngraham, romangg, ivan, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22382
Summary:
I'm trying to implement the idea of @davidedmundson from this https://phabricator.kde.org/T10172 with my limited knowledge of C++/Qt/KDE/programming. This is the start of a new class so it could lack many things but it's usable.
- It allows clients to set the available screen rect/region from outside through dbus.
- The final available screen rect/region would be the intersection of all set values.
- When a client dies, its values would be removed automatically.
Test Plan:
+ qdbus-qt5 org.kde.plasmashell /StrutManager test org.kde.lattedock LVDS-1 0 24 1366 768
+ After killing latte-dock, the values are got only from plasmashellCorona.
{F7820969}
Reviewers: #plasma, mvourlakos, davidedmundson, mart, apol
Reviewed By: #plasma, davidedmundson
Subscribers: davidre, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D25807
Summary:
edit mode menu action
edit mode dbus property for systemsettings
containmentlayoutmanager goes out of edit mode only when the whole
plasma app loses focus, so the panel controlled doesn't make it go out
of it
Test Plan:
iaction shows in context menu, works
property exposed on dbus works
Reviewers: #plasma, #vdg, ngraham, GB_2, davidedmundson
Reviewed By: #plasma, #vdg, ngraham, GB_2, davidedmundson
Subscribers: GB_2, ngraham, davidedmundson, plasma-devel
Tags: #plasma
Maniphest Tasks: T10190, T11094, T10402
Differential Revision: https://phabricator.kde.org/D24264
Summary:
It offers 2 main features:
- Configure the system-wide KUserFeedback kill-switch
- Provide a setting for how much information we want our Plasma to be sending
Test Plan:
Tested it together with Discover, works fine.
{F7497259}
Reviewers: #plasma, vkrause, ngraham
Reviewed By: ngraham
Subscribers: aspotashev, ngraham, bcooksley, davidedmundson, ognarb, broulik, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D24011
Summary:
Use the new icon added in D22155.
{F6948276}
{F6948277}
Test Plan: Open the desktop context menu and also search for "activity" in KRunner.
Reviewers: #plasma, #vdg, ndavis
Reviewed By: #vdg, ndavis
Subscribers: #vdg, plasma-devel, #plasma
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22167
Summary:
We had an overly complex and in practice unexploited system to detect
which shell to use,
This patch changes it to default to the desktop, still allowing to
modify which to use from --shell-plugin argument.
Test Plan:
Starts up fine, --shell-plugin/-p still works, which is what
bhushan told me is important for plasma mobile.
Reviewers: #plasma, davidedmundson, bshah
Reviewed By: #plasma, davidedmundson, bshah
Subscribers: bshah, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D22874
Summary:
The macro is on its way to getting deprecated, so we better start
adopting the suggested alternative just as well.
Test Plan: plasmashell runs fine
Reviewers: #plasma, ngraham
Reviewed By: ngraham
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21493
Summary:
If the desktops are already visible, there's no much need to hold on the KSplash. Panels should be ellegantly displayed when they're ready.
As discussed in T10958.
Test Plan:
Made sure that it gets emitted at the right time.
Timing-wise, my system takes about 1s to show the DesktopView and 2s to show the PanelView (I have 1 panel)
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: broulik, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21494
Summary: Put load in queue of the event loop to wait for the whole set of containments to have been deleteLater(), as some like FolderView operate on singletons which can cause inconsistent states
Test Plan:
now switching look and feel between 2 themes that use both FolderView
as desktop containment, the icons are still there
Reviewers: #plasma, davidedmundson
Reviewed By: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D21513
during l&f switch, use destroy() which does a proper cleanup
and gives applets time to react to destroyedChanged, so we're sure they
properly cleaned up their states.
This among other things makes the in-app menubar work again when the
user switches from a style with a global menu bar to one without
Summary:
load() is called a few times and different states. After the change I
also get the warning on a regular load.
This patch returns early whilst we're in the loading state, but still
prints the warning should kactivitymanagerd fail.
Reviewers: #plasma, mart
Reviewed By: #plasma, mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D18922
Summary:
Ran into this gotcha the other day, and it was impossible to resolve
without code debugging.
Reviewers: #plasma, bshah
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D18493