ba44b69abf added logic to handle apps that
use an absolute path in their .desktop file to define their icon, which
works. However in the process it introduced a subtle bug: if the icon is
not an absolute path and it's just a normal icon name, when
QFileInfo::exists() checks for the existence of that string, it will
treat it as a relative file path and therefore look for it in the
current working directory, which is typically the user's homedir. If it
finds something, it will go down the wrong code path and end up
returning a blank QIcon. This can be verified by adding a folder with
the name of an app icon into ~ and restarting plasmashell; that app in
Kickoff will have a blank icon.
To fix this, the icon loading code now first checks whether the icon
returned by m_service->icon() is actually an absolute path. If not, it
skips the logic to look for it on disk and goes straight to the
codepath that looks for an icon with that name in the icon theme.
To minimize disk reads, it checks for absolute-file-path-ness by
inspecting the string returned by m_service->icon() rather than using
QFileInfo::isAbsolute(), because this is a hot code path and most icons
will not have relative paths, so checking the disk for every one of
them would be a waste of resources.
BUG: 457965
FIXED-IN: 5.24.7
Those files may be executable and the user wants them to execute. For
example:
- Shell scripts the user has written to perform commonly-used actions
- Windows executables opened with WINE
For this reason, we should stop explicitly blocking running executable
files when accessed with KRunner runners or Kicker/Kickoff/Application
Dashboard, and instead show the typical "open or execute?" dialog that
respects the user's setting for what to do in this case.
BUG: 455924
FIXED-IN: 5.26
Otherwise clicking it would show an "invalid URL" error and
trying to open the properties dialog would trigger an assert.
This can normally not happen but you can get here with e.g. plasmoidviewer
BUG: 455433
Currently, the progress indicator is normally displayed only if the DPI is a
multiple of 100; at other DPI values it's almost invisible or not visible at
all. This commit fixes that issue.
BUG: 435004
FIXED-IN: 5.24.7
It makes sense for ToolBar button in CompactRepresentation, because
background depends on it, but it is useless for custom AbstractButton
which has no special code handling this value.
Not sure what exactly didn't work back than, not currently on Qt 5.15
everything seems fine.
Binding.RestoreNone is not the most recommended[1] value, but it
replicates the behavior of one-time assignment which was happening in
Component.onCompleted handler.
[1]: https://www.mail-archive.com/interest@qt-project.org/msg36486.html
MenuDelegate is a QQC2.Control's subclass, which is perfectly capable of
handling hover and press events on its own. Besides, few extra
properties and a custom signal make it feel like a dedicated component
which it really is.
Not sure how much (if at all) this makes sense performance-wise, but at
least the code looks cleaner and there are no duplicating components
anymore.
State enum is mutually exclusive as it is, so there's no way there could
have been more than one FrameSvgItem on screen at a time.
Generally, this property should be set on every Text component that we
write. It avoids ambiguity and extra potentially expensive parsing step
with heuristics. Here, we know for sure that the label is in rich text
format.
Text.StyledText format is computationally cheaper than the Text.RichText,
while still getting its job done: displaying the underlined letters when
Alt is key pressed.