Otherwise the launcher items can't be dragged until the manual sort map
is reset after porting to QConcatenateTablesProxyModel, becuase in
TasksModel there is no slot for modelReset, and in KConcatenateRowsProxyModel,
after receiving a modelReset, there will be a rowsAboutToBeInserted signal,
but not in QConcatenateTablesProxyModel.
Tasks are ordered following SortLastActivated sort mode: tasks are
sorted by opening history.
Grouped tasks are sorted by the last activated task in the group.
Co-Authored-By: Yari Polla <skilvingr@gmail.com>
By passing the appropriate mask we get NET::Notification instead of NET::Override as type
This results in notifications being not added to the model, which makes sense given they are not tasks
This fixes a bug in the appmenu where when you close the last open window
on a display, the appmenu doesn't get a signal that there's no longer
an active task, and continues to display a now-dead menubar instead of
clearing it.
`enabled` must be set in the backend because `visible` will always be
true after getting a valid nodeId, and sometimes we need to reset `enabled`
to false.
CCBUG: 449189
Despite our best effors we currently do not match Gedit windows to their desktop file. It manages to evade all of our heuristics.
There is a reliable way to map it and other GTK apps though, the _GTK_APPLICATION_ID window property, which is more or less the same as our desktopFileName property
Libtaskmanager's buffer for spa_builder is too small on certain
configurations. Because podBuilder->state.offset is never reset, the
buffer space can run out when EGL returns a long list of dma_buf
modifiers, causing PipeWire negotiation to fail.
An example is when EGL returns 20 modifiers. There are 6 formats defined
in pipewiresourcestream.cpp, for each format it will construct 2 frames,
one with 21*8=168 bytes long of modifiers. The modifier lists for all
frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
alone other frames.
BUG: 446061
4f53ed33c2 changed two things:
It removed the NoDisplay check
It ported from KServiceTypeTrader to KService::fromDesktopEntry
However the latter caused a behavior change that broke mapping some applications.
Previously an appId of "Sublime_merge" would be mapped to sublime_merge.desktop, but the new code doesn't take mixed casing into account
Revert that part
It is not possible for the user to launch such an app from the UI, so we should not allow to launch a new instance from the task manager context menu.
BUG: 447204
For KCMs we have .desktop files in <share>/applications but with NoDisplay=true.
We still want an appId of kcm_foo to match to the service in <share>/applications/kcm_foo.desktop.
The current code however explicitly excludes those, so stop doing that.
This also allows to simplify the code from KServiceTypeTrader to KService::serviceByDesktopName
This fixes the LauncherUrl for the autostart KCM from file:kcmshell to applications:kcm_autostart.desktop