in the case a vfat removable device has $() or `` in its label,
such as $(touch foo) the quoted command may get executed,
leaving an attack vector. Use KMacroExpander::expandMacrosShellQuote
to make sure everything is quoted and not interpreted as a command
BUG:389815
Summary:
Qt labels support a HTML subset, using a completely internal parser in
QTextDocument.
The Notification spec support an even smaller subset of notification
elements.
It's important to strip out irrelevant tags that could potentially load
remote information without user interaction, such as img
src or even <b style="background:url...
But we want to maintain the basic rich text formatting of bold and
italics and links.
This parser iterates reads the XML, copying only permissable tags and
attributes.
A future obvious improvement would be to merge the original regular
expressions into this stream parser, but I'm trying to minimise
breakages to get this into 5.12.
Test Plan:
Moved code into it's own class for easy unit testing
Tried a bunch of things, including what the old regexes were doing
Also ran notify send with a few options to make sure things worked
Reviewers: #plasma, fvogt
Reviewed By: fvogt
Subscribers: aacid, fvogt, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D10188
Plasma's Label has a default height based on the contentHeight of the text.
However, this interferes with QtQuick Layout's logic and might cause an infinite loop.
This can easily be triggered by sending a notification with a multi-line heading/summary.
CHANGELOG: Fixed a freeze caused by certain notifications
BUG: 381154
FIXED-IN: 5.12.0
(cherry picked from commit a3c0565ace)
In QtQuick Layouts implicit size (set by IconItem to the SVG's natural size) takes
precedence over width/height. This was fixed in DeviceItem but forgotten here.
BUG: 382541
FIXED-IN: 5.8.8
Summary:
TaskGroupingProxyModel uses a simple QVector<QVector<int>> populated
with source model row indices to represent the task group tree. To
implement QAbstractItemModel::parent(), its implementation of index()
encodes row indices of the top-level vector into the internal ids of
child item model indices. This allows parent() to produce the parent
model index by simply decoding the parent row from the passed-in child
index and call index() with that row.
Top-level row indices shift up and down as the list of top-level items
changes, invalidating those internal ids. QModelIndex is not meant to
be stored, and the proxy model does take care of updating any persis-
tent model indexes with new ids, so this should be fine.
However, where it falls apart is that as internal ids are invalidated,
a QSortFilterProxyModel on top of this proxy (i.e. TasksModel) may end
up with multiple indexes with identical internal ids in its mappings,
causing it to mess up its mappings as it uses them (e.g. taking things
from them). This causes the often-reported crash/assert there.
The fix is to refactor index()/parent() not to rely on row indices as
internal ids, but instead use pointers to internal data structures
instead.
This patch achieves this by changing the map to QVector<QVector<int> *>.
This screams fugly, but the alternative would basically just be to
create some wrapper struct to hide the fugly appeareance a little,
which I don't think is worth it.
On the flip side, it saves a QVector::replace() call as a multable
vector iterator can work directly on a vector without making a copy,
and it's now no longer necessary to manually update the persistent
model indices beyond what endRemoveRows() does implicitly.
BUG:381006
Reviewers: #plasma, davidedmundson
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D7139
In QtQuick Layouts implicit size, which is taken from the SVG's preferred size, takes
precedence potentially destroying the layout.
Also, it should have been medium to be consistent with the rest.
BUG: 383213
FIXED-IN: 5.8.8
Fails to build with undefined reference to
bool QTest::qCompare<int, unsigned int>(int const&, unsigned int const&, char const*, char const*, char const*, int)'
error.
This has been fixed in 2f22f0a935 for 5.10 branch but not 5.8
Differential Revision: https://phabricator.kde.org/D6874
This is done in XWindowTasksModel and WaylandTasksModel but was forgotten in LauncherTasksModel.
Differential Revision: https://phabricator.kde.org/D6869
According to specification only body text may contain HTML and this keeps apps from screwing up
the layout or even loading remote images.
Differential Revision: https://phabricator.kde.org/D6671
My previous attempt only fixed the case when notifications were directly in a panel.
Now it also no longer crashes when removing a panel that has a System Tray with the
notifications applet in it.
BUG: 378508
FIXED-IN: 5.8.8
Differential Revision: https://phabricator.kde.org/D6653
Signals did not get changed for Qt5 porting but no one ever noticed because
they were still in stringy runtime eval syntax :S
Using proper signals to connect to fixes attaching a new backtrace to
an existing bug.
Backport of fix from D6161.
CHANGELOG: Make attaching backtraces to existing bug reports work
Summary:
Otherwise if we show the plasma-nm applet twice, m_sensors won't be empty
and we won't be able to fect the connection speed data.
git blame points to
ba7444f99a
and
235fea1868
but they don't really explain why setData() was called only if m_sensors
was empty.
BUG: 380209
Test Plan:
- plasmoidviewer -a org.kde.plasma.networkmanagement
- open the networkmanager applet twice
- make sure the connection's speed graph works the 2nd time.
Reviewers: #plasma, jgrulich
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D5973
if any kscreen related activities occurred
during startup, the panel wouldn't be visible
yet, and this would assert. This often happens
when a screen gets disabled at startup
CCBUG:377280
Summary:
37014e643c introduced a change in the
behaviour of what happens when you select the top entry in the list.
Change makes some sense. Unit test was not updated, it therefore failed.
Test Plan: Ran unit test
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: joselema, rikmills, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D5570
KRun::runApplication will show blocking error dialogs if it fails to
find the executable
This means we don't autostart the next app, which could be fatal if it
comes before...
Summary:
...kwin/plasma
We shouldn't be having blocking calls in ksmserver it can deadlock
And even in the best case we'd still end up blocking ksplash for 30
seconds
We then port to KProcess which was part of the motivation behind the
patch as it
has better stdout handling
This reverts commit 0f19e92f3e.
BUG: 379254
Also added port of autostarting applications to KProcess
It has better stdout handling
Test Plan: Logged in, still got my main session
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D5618
Without this, that wasn't always the case if the top item was only the mouse
selection. This was presumably broken by 2e47d84772.
Also explicitly check the popup item, since it's now owned by Klipper.
BUG: 348390
BUG: 251222
Follow-up to the previous commit. KProcess has saner defaults for simply
launching an app and being done with it, no lost stdout/stderr or even SIGPIPE.
CCBUG: 369391
CCBUG: 370528
The "move" (copy in fact) of the autostart code from klauncher simply
switched to QProcess. This resulted in a number of problems, as the incorrect
handling of .desktop file command if it had placeholders (worked around
already), kdeinit is no longer used (not sure how much that matters nowadays)
and finally QProcess simply eats all stdout/stderr of all such processes
(which, when daemonized, can lead even to the processes getting SIGPIPE'd).
If the application to start is a KService, simply launch it as such.
BUG: 369391
BUG: 370528
Normally kWin is launched simply as "kwin" ("kwin_x11", whatever), but
in some cases it's restart command may be "/usr/bin/kwin", most notably
when KWin restarts itself after a crash. Failing to recognize this client
as the WM leads to KWin starting without any session management restoring.
CCBUG: 377756