The CMake code is careful not to include PipeWire when it is not
installed, however what it *does* include (taskmanagerplugin) still has
a dependency on Screencasting classes, which prior to this are gated
under the PipeWire check.
Since these classes only require Wayland, not PipeWire, I fix the build
error by reducing the CMake check for PipeWire to only add the
PipeWire-specific bits when PipeWire is present, and to build the
screencasting stuff unconditionally.
The ECM logging code is named after PipeWire but doesn't depend on it
either so that is also built unconditionally to avoid build failures
about a missing "logging.h".
BUG:456655
When separateLaunchers is false and there are two opened pinned tasks
and one launcher icon, dragging the launcher icon to a position between
the two pinned tasks always fails for the first time.
The general idea of this fix is to make sure after every move operation,
pinned launhcer item and the corresponding opened window still stay
together.
BUG: 448912
FIXED-IN: 5.26
Calling dataChanged() with an invalid QModelIndex() triggered an assertion
inside QConcatenateTablesProxyModel (my Qt is built with assertions):
ASSERT: "from.isValid()" in file $HOME/cheri/qt5/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp, line 623
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