plasma5-workspace/0001-Fix-editing-items-in-SimpleFavoritesModel.patch

174 lines
6.6 KiB
Diff

From f078b1272d84f6b9271377900875d39f7d9fda84 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Sat, 7 Oct 2017 14:30:52 +0200
Subject: [PATCH] Fix editing items in SimpleFavoritesModel
Summary:
tools.js is supposed to support both KaStatsFavoritesModel (used for
favorite applications) and SimpleFavoritesModel (used for system actions,
like poweroff/reboot/logout). The latter did not work though, as tools.js
unconditionally calls methods only present in KaStatsFavoritesModel.
This commit makes KaStatsFavoritesModel API compatible to SimpleFavoritesModel
and changes the relevant code in tools.js to support both.
Additionally, this syncs applets/kickoff/package/contents/code/tools.js again.
BUG: 385463
Test Plan:
Before this patch it wasn't possible to remove system actions from
the favorites bar.
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D8178
---
applets/kicker/package/contents/code/tools.js | 12 ++++++------
applets/kicker/plugin/kastatsfavoritesmodel.cpp | 4 ++--
applets/kickoff/package/contents/code/tools.js | 24 +++++++++++++-----------
3 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/applets/kicker/package/contents/code/tools.js b/applets/kicker/package/contents/code/tools.js
index c6fc3d9f..df3a3444 100644
--- a/applets/kicker/package/contents/code/tools.js
+++ b/applets/kicker/package/contents/code/tools.js
@@ -44,9 +44,9 @@ function createFavoriteActions(favoriteModel, favoriteId) {
return null;
}
- var activities = favoriteModel.activities.runningActivities;
- if (activities.length <= 1) {
+ if (favoriteModel.activities === undefined ||
+ favoriteModel.activities.runningActivities.length <= 1) {
var action = {};
if (favoriteModel.isFavorite(favoriteId)) {
@@ -70,6 +70,8 @@ function createFavoriteActions(favoriteModel, favoriteId) {
var linkedActivities = favoriteModel.linkedActivitiesFor(favoriteId);
+ var activities = favoriteModel.activities.runningActivities;
+
// Adding the item to link/unlink to all activities
var linkedToAllActivities =
@@ -180,12 +182,10 @@ function handleFavoriteAction(actionId, actionArgument) {
if (actionId == "_kicker_favorite_remove") {
console.log("Removing from all activities");
- favoriteModel.removeFavoriteFrom(favoriteId, ":any");
-
+ favoriteModel.removeFavorite(favoriteId);
} else if (actionId == "_kicker_favorite_add") {
console.log("Adding to global activity");
- favoriteModel.addFavoriteTo(favoriteId, ":global");
-
+ favoriteModel.addFavorite(favoriteId);
} else if (actionId == "_kicker_favorite_remove_from_activity") {
console.log("Removing from a specific activity");
favoriteModel.removeFavoriteFrom(favoriteId, actionArgument.favoriteActivity);
diff --git a/applets/kicker/plugin/kastatsfavoritesmodel.cpp b/applets/kicker/plugin/kastatsfavoritesmodel.cpp
index 787a6676..da89c0ac 100644
--- a/applets/kicker/plugin/kastatsfavoritesmodel.cpp
+++ b/applets/kicker/plugin/kastatsfavoritesmodel.cpp
@@ -570,13 +570,13 @@ void KAStatsFavoritesModel::portOldFavorites(const QStringList &ids)
void KAStatsFavoritesModel::addFavorite(const QString &id, int index)
{
DEBUG << "addFavorite" << id << index << " -->";
- addFavoriteTo(id, Activity::current(), index);
+ addFavoriteTo(id, QStringLiteral(":global"));
}
void KAStatsFavoritesModel::removeFavorite(const QString &id)
{
DEBUG << "removeFavorite" << id << " -->";
- removeFavoriteFrom(id, Activity::current());
+ removeFavoriteFrom(id, QStringLiteral(":any"));
}
void KAStatsFavoritesModel::addFavoriteTo(const QString &id, const QString &activityId, int index)
diff --git a/applets/kickoff/package/contents/code/tools.js b/applets/kickoff/package/contents/code/tools.js
index 545d7aff..df3a3444 100644
--- a/applets/kickoff/package/contents/code/tools.js
+++ b/applets/kickoff/package/contents/code/tools.js
@@ -29,6 +29,7 @@ function fillActionMenu(actionMenu, actionList, favoriteModel, favoriteId) {
if (actionList && actionList.length > 0) {
var separator = { "type": "separator" };
actionList.unshift(separator);
+ // actionList = actions.concat(actionList); // this crashes Qt O.o
actionList.unshift.apply(actionList, actions);
} else {
actionList = actions;
@@ -39,18 +40,13 @@ function fillActionMenu(actionMenu, actionList, favoriteModel, favoriteId) {
}
function createFavoriteActions(favoriteModel, favoriteId) {
- // Don't allow changes to favorites when system is immutable.
- if (plasmoid.immutability === PlasmaCore.Types.SystemImmutable) {
- return null;
- }
-
if (favoriteModel === null || !favoriteModel.enabled || favoriteId == null) {
return null;
}
- var activities = favoriteModel.activities.runningActivities;
- if (activities.length <= 1) {
+ if (favoriteModel.activities === undefined ||
+ favoriteModel.activities.runningActivities.length <= 1) {
var action = {};
if (favoriteModel.isFavorite(favoriteId)) {
@@ -74,6 +70,8 @@ function createFavoriteActions(favoriteModel, favoriteId) {
var linkedActivities = favoriteModel.linkedActivitiesFor(favoriteId);
+ var activities = favoriteModel.activities.runningActivities;
+
// Adding the item to link/unlink to all activities
var linkedToAllActivities =
@@ -165,25 +163,29 @@ function triggerAction(model, index, actionId, actionArgument) {
if (closeRequested) {
plasmoid.expanded = false;
+
+ return true;
}
+
+ return false;
}
function handleFavoriteAction(actionId, actionArgument) {
var favoriteId = actionArgument.favoriteId;
var favoriteModel = actionArgument.favoriteModel;
+ console.log(actionId);
+
if (favoriteModel === null || favoriteId == null) {
return null;
}
if (actionId == "_kicker_favorite_remove") {
console.log("Removing from all activities");
- favoriteModel.removeFavoriteFrom(favoriteId, ":any");
-
+ favoriteModel.removeFavorite(favoriteId);
} else if (actionId == "_kicker_favorite_add") {
console.log("Adding to global activity");
- favoriteModel.addFavoriteTo(favoriteId, ":global");
-
+ favoriteModel.addFavorite(favoriteId);
} else if (actionId == "_kicker_favorite_remove_from_activity") {
console.log("Removing from a specific activity");
favoriteModel.removeFavoriteFrom(favoriteId, actionArgument.favoriteActivity);
--
2.14.1