[gnome-shell] dash: Improve feedback when favorite-apps key is locked
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dash: Improve feedback when favorite-apps key is locked
- Date: Wed, 28 Jan 2015 13:16:27 +0000 (UTC)
commit e69cc20fc7dc10b9c04c3a0224c01c8cd23671cf
Author: David King <amigadave amigadave com>
Date: Thu Dec 11 15:22:19 2014 +0000
dash: Improve feedback when favorite-apps key is locked
In a lockdown scenario, where the favorite-apps GSettings key is not
writable, hide the menu items for adding and removing favorites from the
dash menu. Additionally, reject drops to the dash for DND.
https://bugzilla.gnome.org/show_bug.cgi?id=741325
js/ui/appDisplay.js | 35 +++++++++++++++++++++--------------
js/ui/dash.js | 12 ++++++++++++
2 files changed, 33 insertions(+), 14 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 5a14aca..4ecc7ec 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1748,6 +1748,8 @@ const AppIconMenu = new Lang.Class({
this.actor.add_style_class_name('app-well-menu');
+ this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
+
// Chain our visibility and lifecycle to that of the source
source.actor.connect('notify::mapped', Lang.bind(this, function () {
if (!source.actor.mapped)
@@ -1807,22 +1809,27 @@ const AppIconMenu = new Lang.Class({
this.emit('activate-window', null);
}));
}
- this._appendSeparator();
- let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
+ let canFavorite = this._settings.is_writable('favorite-apps');
- if (isFavorite) {
- let item = this._appendMenuItem(_("Remove from Favorites"));
- item.connect('activate', Lang.bind(this, function() {
- let favs = AppFavorites.getAppFavorites();
- favs.removeFavorite(this._source.app.get_id());
- }));
- } else {
- let item = this._appendMenuItem(_("Add to Favorites"));
- item.connect('activate', Lang.bind(this, function() {
- let favs = AppFavorites.getAppFavorites();
- favs.addFavorite(this._source.app.get_id());
- }));
+ if (canFavorite) {
+ this._appendSeparator();
+
+ let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
+
+ if (isFavorite) {
+ let item = this._appendMenuItem(_("Remove from Favorites"));
+ item.connect('activate', Lang.bind(this, function() {
+ let favs = AppFavorites.getAppFavorites();
+ favs.removeFavorite(this._source.app.get_id());
+ }));
+ } else {
+ let item = this._appendMenuItem(_("Add to Favorites"));
+ item.connect('activate', Lang.bind(this, function() {
+ let favs = AppFavorites.getAppFavorites();
+ favs.addFavorite(this._source.app.get_id());
+ }));
+ }
}
if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 99635cd..acf1eb4 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Signals = imports.signals;
const Lang = imports.lang;
@@ -269,6 +270,9 @@ const ShowAppsIcon = new Lang.Class({
if (app == null)
return false;
+ if (!this._settings.is_writable('favorite-apps'))
+ return false;
+
let id = app.get_id();
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
return isFavorite;
@@ -424,6 +428,8 @@ const Dash = new Lang.Class({
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
+ this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
+
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('installed-changed', Lang.bind(this, function() {
@@ -850,6 +856,9 @@ const Dash = new Lang.Class({
if (app == null || app.is_window_backed())
return DND.DragMotionResult.NO_DROP;
+ if (!this._settings.is_writable('favorite-apps'))
+ return DND.DragMotionResult.NO_DROP;
+
let favorites = AppFavorites.getAppFavorites().getFavorites();
let numFavorites = favorites.length;
@@ -926,6 +935,9 @@ const Dash = new Lang.Class({
return false;
}
+ if (!this._settings.is_writable('favorite-apps'))
+ return false;
+
let id = app.get_id();
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]