We ported units to use the PlasmaCore.Units singleton earlier; now it's
time to do the same thing for PlasmaCore.Theme.
There are no UI changes or regressions detected.
Time in milliseconds equivalent to the theoretical human moment, which can be used
to determine whether how long to wait until the user should be informed of something,
or can be used as the limit for how long something should wait before being
automatically initiated.
Some examples:
- When the user types text in a search field, wait no longer than this duration after
the user completes typing before starting the search
- When loading data which would commonly arrive rapidly enough to not require interaction,
wait this long before showing a spinner
This might seem an arbitrary number, but given the psychological effect that three
seconds seems to be what humans consider a moment (and in the case of waiting for
something to happen, a moment is that time when you think "this is taking a bit long,
isn't it?"), the idea is to postpone for just before such a conceptual moment. The reason
for the two seconds, rather than three, is to function as a middle ground: Not long enough
that the user would think that something has taken too long, for also not so fast as to
happen too soon.
See also
https://www.psychologytoday.com/blog/all-about-addiction/201101/tick-tock-tick-hugs-and-life-in-3-second-intervals
(the actual paper is hidden behind an academic paywall and consequently not readily
available to us, so the source will have to be the blog entry above)
see also https://invent.kde.org/frameworks/kirigami/-/merge_requests/268
It never held the width of an 'M', it held the height of a boundingRect that happened to contain an 'M'. The fact that there is an 'M' doesn't really matter since the bounding rect is much taller.
Summary:
Right now longDuration is 120ms and shortDuration is 24ms. This presents three problems:
- The durations are far too fast, especially shortDuration, which is so fast that it seems like there is no animation at all.
- The durations are not consistent with Kirigami, which uses 150 for short and 250 for
long.
- There is no longer value available, as with the one being added to Kirigami in D28143.
Accordingly, this patch makes the short and long values consistent with Kirigami's values,
and adds a new `veryLongDuration` value to match the one being added to Kirigami in D28143.
Reviewers: #plasma, davidedmundson, mart
Reviewed By: #plasma, mart
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D28144
This reverts commit 049978008b.
This commit changes existing animation durations, and must be landed
simultaneously with Plasma 5.19's release so that rolling release
users don't suffer from very slow animations for a month. Will
re-land after Plasma 5.59 is tagged so it gets released with Frameworks
5.60, the dependency version for Plasma 5.19.
Summary:
Right now longDuration is 120ms and shortDuration is 24ms. This presents three problems:
- The durations are far too fast, especially shortDuration, which is so fast that it seems like there is no animation at all.
- The durations are not consistent with Kirigami, which uses 150 for short and 250 for
long.
- There is no longer value available, as with the one being added to Kirigami in D28143.
Accordingly, this patch makes the short and long values consistent with Kirigami's values,
and adds a new `veryLongDuration` value to match the one being added to Kirigami in D28143.
Reviewers: #plasma, davidedmundson, mart
Reviewed By: #plasma, mart
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D28144
Summary:
In effect this is meant to resurrect the "Panel" icon size setting from
the Icons -> Advanced KCM in System Settings, for use as a ceiling on
panel icons to avoid them taking up too much space, especially in wide
vertical panels.
Previously, the actually-unused "Desktop" size hint was added to the
iconSizes map. I believe this was in error, as the size hints are
semantically different from the size classes. This patch marks the
"desktop" iconSizes map entry as deprecated and makes it available
under iconSizeHints instead.
The soon-to-be-updated D5592 will demonstrate this API in use.
CCBUG:378443
Reviewers: #plasma, mart
Subscribers: plasma-devel, #frameworks
Tags: #plasma, #frameworks
Differential Revision: https://phabricator.kde.org/D5593
Summary:
Though we can make the property constant, some applications still use the
signal (for example FolderView.qml) to know that one of the icons has
changed sizes and do some processing.
Whilst it would be possible to fix folderview, we should avoid public
API changes.
Reviewers: #plasma, #frameworks
Subscribers: plasma-devel
Tags: #plasma, #frameworks
Differential Revision: https://phabricator.kde.org/D4092
It's not the property that changes (we don't assign a new QQmlPropertyMap) but
the properties within and it's already smart enough to signal this.
Differential Revision: https://phabricator.kde.org/D4013
Every single (Frame)SvgItem would creates its own Units instance which in turn would
create a property map for icon sizes and lots of other stuff. Avoid this.
CHANGELOG: There is now a global "Units" instance reducing memory consumption and creation time of SVG items
Differential Revision: https://phabricator.kde.org/D4012
since seems there are so many event filters installed
on the QApplication installed that may give performanc
issues, try to use separate, singleton watchers for them
to decrease the amount of eventfilters called
REVIEW:126113
Unit now takes all fonts from the default system font, which we monitor
for with an eventFilter on the application object.
Change-Id: Ib17c01e2811c0c672be18a930d625d84ecd154a4
KConfig->reparseConfiguration is expensive. It throws away our cached
values.
The Units constructor was calling this every single time. Units is
created a _lot_; once per applet and once per FrameSVGItem.
This meant we were reloading the same config ~100 times on startup for
no reason.
Perf showed this as being ~5% of the total startup time.
- 7.47% 0.00% plasmashell libKF5ConfigCore.so.5.5.0
[.] KConfig::reparseConfiguration()
- KConfig::reparseConfiguration()
+ 66.51% Units::settingsFileChanged(QString const&)
+ 25.95% KConfig::KConfig(QString const&,
QFlags<KConfig::OpenFlag>, QStandardPaths::StandardLocation)
+ 3.93% KDesktopFile::KDesktopFile(QString const&)
+ 3.61% Units::settingsFileChanged(QString const&)
Change-Id: Ia70b7001ba473c8063e6c999b8e4233ea5b206f5
return a size rounded tothe nearest inferior standard icon size.
sizes larger than iconSizes.huge, it will be returned unmodified
Reviewed by: Kai Uwe Broulik <kde@privat.broulik.de>
Change-Id: I85c575ea1cc7965ae9bede9e5a8b7b4cb342580e
This reads the global animation duration value from plasmarc, and gets
notified of changes: change the file, all animations are updated
automatically.
Put this into your plasmarc to disable animations globally:
[Units]
longDuration=0
As you might guess, other values will work as well.
shortDuration will always be 1/5 of this. (For now.)
These centralize the duration of animations, currently set to 250 and 50
milliseconds. They're notifiable since we want to be able to switch off
animations at runtime.
CCMAIL:plasma-devel@kde.org
This is used nowhere, so better get rid of it before someone gets the
idea.
Leaves us with only one non-scaled icon size. Maybe worth considering to
get rid of this as well, and let Folderview decide?
This is still pretty rough. It seems to work fine for larger icons, but
smaller ones get misaligned. This will need some corrections, such as
locking the smaller sizes to 16, 22, 32, 48, 64, which should take care
of this issue.
With this change, parts of Plasma scale depending on the DPI. This is
noticeable in Kickoff.
It was an int already anyway, so let's be true about this and also
return an int. This reflects pixel-alignment in the API, not just in the
implementation.