[gnome-shell] appDisplay: Make _items object a Map
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] appDisplay: Make _items object a Map
- Date: Thu, 5 Dec 2019 15:49:02 +0000 (UTC)
commit 61b71998a0add14945fa360dd7dfab246952b0bd
Author: Jonas Dreßler <verdre v0yd nl>
Date: Fri Nov 1 00:46:35 2019 +0100
appDisplay: Make _items object a Map
Use a Map instead of an Object here makes it easier to loop through
keys, which we're going to do in the next commit.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/799
js/ui/appDisplay.js | 44 ++++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 8960f6fa8e..d10779efd9 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -165,7 +165,7 @@ var BaseAppView = GObject.registerClass({
// Standard hack for ClutterBinLayout
this._grid.x_expand = true;
- this._items = {};
+ this._items = new Map();
this._allItems = [];
}
@@ -190,7 +190,7 @@ var BaseAppView = GObject.registerClass({
this._allItems.splice(iconIndex, 1);
icon.destroy();
- delete this._items[id];
+ this._items.delete(id);
});
// Add new app icons
@@ -199,7 +199,7 @@ var BaseAppView = GObject.registerClass({
this._allItems.splice(iconIndex, 0, icon);
this._grid.addItem(icon, iconIndex);
- this._items[icon.id] = icon;
+ this._items.set(icon.id, icon);
});
this.emit('view-loaded');
@@ -214,24 +214,27 @@ var BaseAppView = GObject.registerClass({
}
_selectAppInternal(id) {
- if (this._items[id])
- this._items[id].navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
+ if (this._items.has(id))
+ this._items.get(id).navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
else
log(`No such application ${id}`);
}
selectApp(id) {
- if (this._items[id] && this._items[id].mapped) {
- this._selectAppInternal(id);
- } else if (this._items[id]) {
- // Need to wait until the view is mapped
- let signalId = this._items[id].connect('notify::mapped',
- actor => {
+ if (this._items.has(id)) {
+ let item = this._items.get(id);
+
+ if (item.mapped) {
+ this._selectAppInternal(id);
+ } else {
+ // Need to wait until the view is mapped
+ let signalId = item.connect('notify::mapped', actor => {
if (actor.mapped) {
actor.disconnect(signalId);
this._selectAppInternal(id);
}
});
+ }
} else {
// Need to wait until the view is built
let signalId = this.connect('view-loaded', () => {
@@ -448,7 +451,7 @@ var AllView = GObject.registerClass({
this.folderIcons.forEach(folder => {
let folderApps = folder.getAppIds();
folderApps.forEach(appId => {
- let appIcon = this._items[appId];
+ let appIcon = this._items.get(appId);
appIcon.visible = false;
});
});
@@ -484,7 +487,7 @@ var AllView = GObject.registerClass({
let folders = this._folderSettings.get_strv('folder-children');
folders.forEach(id => {
let path = `${this._folderSettings.path}folders/${id}/`;
- let icon = this._items[id];
+ let icon = this._items.get(id);
if (!icon) {
icon = new FolderIcon(id, path, this);
icon.connect('name-changed', this._itemNameChanged.bind(this));
@@ -503,7 +506,7 @@ var AllView = GObject.registerClass({
let favoritesWritable = global.settings.is_writable('favorite-apps');
apps.forEach(appId => {
- let icon = this._items[appId];
+ let icon = this._items.get(appId);
if (!icon) {
let app = appSys.lookup_app(appId);
@@ -721,13 +724,14 @@ var AllView = GObject.registerClass({
}
_updateIconOpacities(folderOpen) {
- for (let id in this._items) {
+ for (let icon of this._items.values()) {
let opacity;
- if (folderOpen && !this._items[id].checked)
+ if (folderOpen && !icon.checked)
opacity = INACTIVE_GRID_OPACITY;
else
opacity = 255;
- this._items[id].ease({
+
+ icon.ease({
opacity,
duration: INACTIVE_GRID_OPACITY_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
@@ -911,7 +915,7 @@ var AllView = GObject.registerClass({
return false;
}
- let appItems = apps.map(id => this._items[id].app);
+ let appItems = apps.map(id => this._items.get(id).app);
let folderName = _findBestFolderName(appItems);
if (!folderName)
folderName = _("Unnamed Folder");
@@ -986,7 +990,7 @@ class FrequentView extends BaseAppView {
for (let i = 0; i < mostUsed.length; i++) {
if (!mostUsed[i].get_app_info().should_show())
continue;
- let appIcon = this._items[mostUsed[i].get_id()];
+ let appIcon = this._items.get(mostUsed[i].get_id());
if (!appIcon) {
appIcon = new AppIcon(mostUsed[i], {
isDraggable: favoritesWritable,
@@ -1449,7 +1453,7 @@ class FolderView extends BaseAppView {
if (apps.some(appIcon => appIcon.id == appId))
return;
- let icon = this._items[appId];
+ let icon = this._items.get(appId);
if (!icon)
icon = new AppIcon(app);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]