Publish tool cleanup and Framework monitoring refinements

This commit is contained in:
ajp_anton
2026-09-12 05:17:02 +00:00
parent db352083cf
commit 7f56368674
51 changed files with 1487 additions and 341 deletions
@@ -23,6 +23,7 @@ find_package(XKB REQUIRED)
# KWin caches both QML components and directory listings for its whole session.
# Changed helper code needs a new directory, not just a new filename.
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS TaskbarGeometry.qml)
file(SHA256 "${CMAKE_CURRENT_SOURCE_DIR}/TaskbarGeometry.qml" geometry_hash)
set(geometry_dir "plasma-task-group-shortcuts/${geometry_hash}")
configure_file(TaskbarGeometry.qml "qml/${geometry_hash}/TaskbarGeometry.qml" COPYONLY)
@@ -1,6 +1,6 @@
Name: plasma-task-group-shortcuts
Version: 0.1.0
Release: 20%{?dist}
Release: 21%{?dist}
Summary: Windows-like application-group shortcuts for the Plasma Task Manager
License: MIT
@@ -62,6 +62,10 @@ install -Dpm 0644 %{SOURCE2} \
%{_sysconfdir}/xdg/autostart/se.ajpanton.plasma-task-group-shortcuts-autostart.desktop
%changelog
* Sat Sep 12 2026 fedora-tools contributors - 0.1.0-21
- Validate group indices and reduce repeated launcher lookups
- Refresh geometry resource hashes during incremental builds
* Thu Sep 10 2026 fedora-tools contributors - 0.1.0-20
- Load updated geometry helpers without reusing KWin's cached QML
@@ -43,15 +43,15 @@ QVector<int> logicalTaskRows(const QAbstractItemModel &model, bool separateLaunc
continue;
}
const QString launcherAppId = launcher.data(AbstractTasksModel::AppId).toString();
const QUrl launcherUrl = launcher.data(AbstractTasksModel::LauncherUrlWithoutIcon).toUrl();
for (int windowRow = 0; windowRow < model.rowCount(); ++windowRow) {
const QModelIndex window = model.index(windowRow, 0);
if (!window.data(AbstractTasksModel::IsWindow).toBool()) {
continue;
}
const QString launcherAppId = launcher.data(AbstractTasksModel::AppId).toString();
const QString windowAppId = window.data(AbstractTasksModel::AppId).toString();
const QUrl launcherUrl = launcher.data(AbstractTasksModel::LauncherUrlWithoutIcon).toUrl();
const QUrl windowUrl = window.data(AbstractTasksModel::LauncherUrlWithoutIcon).toUrl();
if ((!launcherAppId.isEmpty() && launcherAppId == windowAppId)
|| (launcherUrl.isValid() && windowUrl.isValid()
@@ -76,6 +76,9 @@ QVector<int> logicalTaskRows(const QAbstractItemModel &model, bool separateLaunc
int initialCyclePosition(const QAbstractItemModel &model, int row, bool startWithFirst, bool backwards)
{
const QModelIndex group = model.index(row, 0);
if (!group.isValid()) {
return 0;
}
const int childCount = model.rowCount(group);
if (childCount == 0) {
return 0;
@@ -31,6 +31,8 @@ void TaskSelectionTest::returnsTopLevelTask()
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0));
QVERIFY(!taskToActivate(model, 1, 0).isValid());
QCOMPARE(initialCyclePosition(model, 1, false, true), 0);
QCOMPARE(initialCyclePosition(model, -1, false, true), 0);
}
void TaskSelectionTest::selectsChildByCyclePosition()