Due to async nature of QDBusPendingReply, services could be already
registered by QDBusServiceWatcher when the pending reply takes a long
time to finish, so it's possible that QDBusServiceWatcher::serviceRegistered
signal is emitted before the pending reply emits QDBusPendingCallWatcher::finished,
which will make the same service added twice and crash plasmashell.
We need to check if a service is already added in m_sniServices before
processing registered items in QDBusReply.
BUG: 443961
don't set layout size hints from the contents size. this will cause
binding loops. use the implicit size instead.
This solves an issue visible especially on wayland (different roundtrip of timing of resizes in x11 seems to mask this problem) where the clock tooltip
sometimes gets stuck in an infinite resize loop freezing the whole plasma shell
BUG:422072
We get intermittent user complaints and bug reports about notifications
not being visible enough, especially on large or cluttered screens.
This commit attempts to remedy the situation by tinting the header for
on the left side for critical notifications using the color scheme's
"warning" color. Only critical notifications receive this treatment
since they're the only ones that the user really does need to see.
BUG: 420541
FIXED-IN: 5.24
Arguably, `found=false; for(list) {if(cond) {found=true; break;}}` is
harder to read than a single `found=array.contains(cond)` expression.
My only regret is that C++ does not provide any `contains()` function /
algorithm, so we are forced to `find_if` an element and compare it with
an iterator's `end()` which would be an utter nonsense in any other
language.
But most importantly, this commit replaces Qt's deprecated foreach with
a standard for-loop.
Previously, clicking the Edit button opened a dialog to edit it in. Now
it is done inside the applet itself. This makes it much less disruptive
and jarring, and makes the editing action feel smoother.
XdgActivationTokens are loaded async. To acheive a job like pattern we
were comparing serials in our slot when one was created.
On wayland this isn't ideal because we're slowly building up an
increasibly long list of lambdas being run, but they'll all no-op.
On X11 because lastInputSerial is always 0 we run the slot multiple
times for every system tray item each time an item is clicked or an
application is launched.
For xembedsniproxy this is especially problematic problematic as we will
trigger synthesised input events in our slot.
BUG: 444385
Right now we are bodging the track label into being this, but it looks
bad and doesn't use the standardized component, which it should. So now
it does.
BUG: 444322
FIXED-IN: 5.24
Needs c815c7a9bc
Currently the logic is very fragile and depends on the data being an url.
However the data of the match is an implementation detail and is in case of the KCM matches
a KPluginMetaData instance.
To avoid this issue the first url of the QueryMatch::urls() return value is checked.
This data is intended for mime-type/scheme related operations.
In the future we need an extra url for systemsettings & should consistently use the
urls of the query match. I will work on this before continuing to port the
plasma KCMs from KServiceTypeTrader.
BUG: 442522
This was deprecated, because having string based key-actions values
does not fit the usecases we have.
Consequently we should check if the runner has any QAction children, this
works if the runner created the QActions manually or if the actions
are registered in the abstract runner.
Also we can drop the ugly hack.
cd68df165a
added a setting to force the date to be at the same line as the time.
Add another option to that setting to force the date to be below the
time.
- Up/Down now ensures item is completely in view
- Ctrl+F works
- Tab/Shift+Tab events are no longer eaten by the search field
- Tab/Shift+Tab now resolve to actions on the selected item first
- Can use Escape key to go back from from QR code page