Return "layout" and "layoutsList" Properties where all layouts names are
now stored.
getLayoutLongName() DBus method is not used any more so it was also
deleted from DBus API in KWin and P-D, see corresponding commits there.
The Properties interface allows QML code be more declarative.
There is a trade-off though as now we have to:
- store all layout names on client side, even if it's not needed for
base QML layout component here
- duplicate layouts in layoutsList Property as they are also stored in
Action objects of the plasmoid in P-D.
Rework DBus API - getLayoutsList() now provides full details about the
layouts.
Remove Q_PROPERTY's as they are not make much sense here.
Port to a fully event-driven interface towards QML.
This got removed in d82513ce88 as I thought a user would
always have a "Root" entry, leading to "Root/foo" paths.
However, if you hide a place, it will naturally not be considered for `closestItem`
resulting in the final `QUrl::toDisplayString` being hit, giving us a not so
nice `file:///` URL.
When rotated most applets, especially text look garbage.
If we render into an offscreen buffer we can smooth things out and it
looks good again. There is a performance penalty to this, but most
people do no not rotate plasmoids.
A new instance WidgetExplorer is created everytime we open get new
applets window. Each and every instance of WidgetExplorer has its own
newStuffDialog. This means that downloadWidgets method will always
create new instance of QtQuickDialogWrapper due to the default value of
newStuffDialog is null.
Change newStuffDialog to static so that it will be shared to every
instances of WidgetExplorer. This prevents another get new applets
window to be opened.
BUG: 412765
While this was in principle a good idea to keep active jobs at the top of the
history, it can cause unwanted dialog shifts and dialog recreation when there
are two jobs and the first one finishes and then the second one finishes.
The QWidgets components are about to be deprecated
and the QtQuick dialog has a bunch of visual improvements.
Considering that most KCMs already use the QtQuick components
this MR improves the consistency.
See https://invent.kde.org/frameworks/knewstuff/-/merge_requests/80
for the MR which introduced the non-deprecated dialog class.
Without this, the virtual keyboard appears and takes focus, which
doesn't make sense:the password field needs to retain focus or else
the keystrokes you type using the virtual keyboard get eaten.
BUG: 430209
FIXED-IN: 5.21
the Text.Fit sizing policy will size the font in order to fit given a fixed
size of the label, but it can't really cause the other way around which we need:
cause a vertical resize in order to accomodate a larger font.
In order to fake that, we fix the date label to an arbitrary tall height
(will overflow outside the applet) and then size the applet based on the label contentheight instead,
leaving the invisible part of the label outside.
In order to avoid the huge text it used to have, limit the maximum size to an arbitrarly
small value, in this case
Math.min(0.7 * timeLabel.height, theme.defaultFont.pixelSize * 1.4)
BUG:417852
FIXED-IN: 5.21
For some reason beyond me when all elements in the JobItem turn invisible,
e.g. when a job finishes (its progress bar hideS), and there are no action
buttons (e.g. when a job fails), the Loader does not collapse properly.
- In case our query starts with 0x123abc we do not call
the `userFriendlyMultiplication` method which replaces the
x sign with the multiplication operator.
We can be sure that the user wants to parse a hex
value. Also the `=` is not mandatory anymore.
- The hex=mydecimalnumber functionality was broken.
The conversion of the hex value is only done inside of the
if statement and before the values will be the same, unless we do some math operation.
Test Plan:
`=0xf` returns 15
`0xf` return 15
`7x7` returns 49
`hex=15` returns 0xF
`hex=14+1` returns 0xF
BUG: 431362
FIXED-IN: 5.21
It gives issues with systemd to try and pass it env var names with eg.
'%' in them. That to such a degree that if invalid names are passed,
none are set [1]. This change ensures compatibility by skipping any
non-alphanumerical (and _) variable names.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1754395
Panel struts may need to be updated when screen configuration changes,
even when the panel isn't resized or moved. Example: screen below the
panel is removed.
Currently the struts are only sometimes updated, that is when
ShellCorona::reconsiderOutputs is called. This is timing dependant since
ShellCorona::addOutput connects QScreen::geometryChange to it, and
geometryChagned signal can arrive before addOutput is called, in which
case the struts aren't updated.
I am not sure if this behaviour is intended, but it's best to not rely
on it. Instead lets just update the struts when screen size changes like
we used to.
There was a previous commit d66d6d57 that is similar, however it got
lost when the dependency on KScreen was removed.
Since now we rely on QScreen, we need to connect the QScreen signal
every time it changes, hence the change being in setScreenToFollow.
When removing a notification, it is removed from the model, which will cause the
view to update and move up an older notification, if any. If you now delete a bunch
of notifications in quick succession we will create a dialog every time which then
gets deleted again, causing another notification to move up, etc causing high CPU
spikes and plasma freezes.
This patch compresses removing notifications and tries to announce consecuetive
ranges of notifications to be removed in one go.
BUG: 423594
FIXED-IN: 5.21.0
The agenda view is only shown when at least one event source is active.
When going from 0 to 1 active sources the view wasn't updated correctly.
This was because the visibility of rightColumn was bound to the
visibility of its child, but since the visibility of the parent affects
the visibility of its childred (https://doc.qt.io/qt-5/qml-qtquick-item.html#visible-prop) that resulted in a broken binding.
Bind to the source property directly to avoid this
BUG: 431433
In commit 45e0a722fb we changed the focus
on the textfield with the intention of fixing the cusor blinking.
This had the unfortunate side effect of breaking waking out of the
screensaver mode with just the keyboard.
That screensaver mode was bound to:
```
property bool blockUI: mainBlock.mainPasswordBox.text.length > 0
```
for that to change, we need to have focus.
Instead this patches cursor blinking more explicity.
Doing it only in the lock screen (as opposed to the toolkit) makes sense
as this only happens due to somewhat unusual usage inside the
lockscreen.
BUG: 431286
This isn't always static, espcially in GTK apps where the xproperty is
set later by gmenuproxyodel.
The Appmenu applet already watches for this role changing, but it wasn't
hooked up.
The wayland implementation does not have the same bug.
BUG: 422786
This makes it look better with the change to Kirigami.SwipeListItem to
make the actions always visible on the desktop, and in the process fixes
a binding loop and some minor visual glitches.
There is an error handling path when we fetch the relevant config()
```
KConfigGroup PanelView::panelConfig(...
{
if (!containment || !screen) {
return KConfigGroup();
}
```
which we indiscrimiately call parent() on.
This patch guards that case, which is presumably screen being
temporarily null.
This code is also Plasma 5.8 compatibility fallback, so arguably we
could get rid of it.
BUG: 425711