Some actions, such as middle click to mute, trigger only on press. Some applets
also need a pressed-click because of some legacy autoclose on focus change
bug.
Unfortunately, QML does not disambiguate the "pressed" property and "pressed(mouse)"
signal with argument, so this has to be done awkwardly through QMetaObject on C++ side.
BUG: 426646
BUG: 452893
FIXED-IN: 5.25.0
Use icu transliterator to convert i18n'ed name into ascii for initial
character grouping. Since AppsModel does not use group(), just use group
to store this value for convenience.
Relevant qt feature request for having a new mode for section:
https://bugreports.qt.io/browse/QTBUG-91258
Strategy used by this code mainly focused on CJK language.
1. Japanese locale will group all Han script together.
Katakana will be converted to hiragana.
2. Hangul will decompose and use consonant as group name.
3. Han will use icu "Han-Latin" transliteration to convert to pinyin.
BUG: 433297
"Tablet Mode" is jargon that can confuse users. In this mode, things
become larger as an optimization for touch usage, but the word "tablet"
could easily refer to a drawing tablet, for which no touch
optimizations make sense.
Let's change the UI text here to call it "Touch Mode" instead.
BUG: 427530
Hunting this one down since mid-March...
In "native" Plasma containments like the panel, desktop, and plasmawindowed, the `LogindSessionBackend` in `libkworkspace` enters the "Ready" state nearly instantly, before any signals can even be attached. In other containments like Latte Dock and plasmoidviewer, however, the initialization takes some time to complete (unsure why). RootModel was not watching or waiting to check what the session backend's state was, resulting in validity checks being done too soon and never checked again.
When an applet is about to be deleted, it will save its config
automatically, but in this case the system tray doesn't need to load the
config again.
BUG: 453726
`void *` casts into anything but `QVariant::value()` (most of the time)
does a metatype check which needs to match.
Also, we need to unwrap the `QPointer`.
BUG: 453301
Currently the large spacing setting for the System Tray is different from the large
spacing setting for Task Manager icons. So when both are set to large (e.g. in Tablet
mode) they look out of sync.
Instead of using a ScrollView just for the battery items, convert the
existing ColumnLayout to the header of the ListView. Then everything
works magically :)
Co-Authored-By: Carl Schwan <carl@carlschwan.eu>
In case both IconName and IconPixmap are provided, the system tray
applet is going to prefer the pixmap.
That can create a dark icon on dark background bug because plasma can't
recolor pixmaps.
The SNI spec recommends visualizations to prefer icons over pixmaps:
> An icon can either be identified by its Freedesktop-compliant icon
> name, carried by this property of by the icon data itself, carried by
> the property IconPixmap. Visualizations are encouraged to prefer icon
> names over icon pixmaps if both are available (FIXME: still not very
> defined: could e the pixmap used as fallback if an icon name is not found?)
BUG: 418996
This allows 3rd parties to provide additional actions in the context
menu of applications in kicker, kickoff,... by supplying suitable
desktopfiles in GENERIC_DATA_LOCATION/plasma/kickeractions similar
to mechanism used for service menues.
Entries for which the actions are displayed can be controlled by
X-KDE-OnlyForAppIds in the [Desktop Entry], for example
X-KDE-OnlyForAppIds=org.kde.kate,org.kde.dolphin
This was requested as a patch for steam, but we've made a generic
solution so that it can be used by everyone.
28537cf3ff made the color dynamic, but
neglected to respect the Plasma color scheme, if any. This causes
problems with Plasma themes that have their own colors and don't
respect the systemwide color scheme, such as Breeze Twilight.
Fix it by using the appropriate colors from the PlasmaCore color scheme
object, not the systemwide object provided by Qt.
BUG: 453348
FIXED-IN: 5.24.6
This commit adds a new option to the "Copy to Clipboard" menu that
shows the date with seconds when "show seconds" is not enabled and
without seconds when "show seconds" is enabled.
BUG: 453111
This commit organizes the "Copy to Clipboard" options and removes
a lot of duplicated options when "show seconds" is enabled.
It also makes the code more readable. :)
BUG: 453111
In the past, application Favorites were stored with their .desktop file path
such as "/usr/share/applications/org.kde.dolphin.desktop". But now those
entries are stored like so: "applications:org.kde.dolphin.desktop".
This commit converts old DB entries to the new style, which solves the issue
of users with old databases being unable to change their Favorite items.
BUG: 385814
FIXED-IN: 5.24.5
Kolourpaint has hidden "Tools" menu, which would show up in
global menu otherwise.
Moreover, don't `void*` cast so QML can access the `QAction`
BUG: 443505
If the new ratio and the old ratio are different, perform a fade-out
animation for the old image to prevent it from suddenly disappearing.
CCBUG: 446862
dateTimeChanged is called every second. This in turn checks if the date
has changed. If so we call setupLabels which updates the clock.
The date label used to use main.currentTime which is a value set in the
binding of the timeLabel's text property. The order of this being
updated vs running this code is undefined.
Bug 1: We compare an ever so slightly different date source to the one
used in the date text label.
Bug 2: We are not necessarily updating the date label with the most
updated time.
Overall we can't mix declarative and imperative design patterns. This
patch commits to being imperative and introduces a function to get the
current time so that the date label and time label will always get the
most up to date value even if they update from different trigers.
BUG: 452554
FIXED-IN: 5.24.5
When a service appears right after the ListNames() call finished, but
before the QDBusPendingCallWatcher is set up, the ::serviceRegistered
signal will be queued before the ListNames() response. As a result,
the service will be ignored by DBusServiceObserver.
Switching to QDBusInterface::callWithCallback() ensures that the
result slot is queued as soon as the response arrives, thus avoiding
the race.
Credits go to Sam Edwards for identifying the problem in
https://bugs.kde.org/show_bug.cgi?id=422111#c69
BUG: 422111
FIXED-IN: 5.24.5
If preferred, compact and full represenation are set to the same value,
the value of appletShouldBeExpanded will be true, which means the applet
will be expanded by default. In this case, only fullRepresentation will
be created and compactRepresentationItem will simply be null.
If compactRepresentationItem is null, also check the fullRepresentation
for mouse event forwarding.
This fixes manage-inputmethod applet not working if it's hidden in the
tray.