appDisplay: Add AllView.addFolder() method
Adjust AllView to be able to hold both apps and folders, and add an addFolder() method to insert a folder. https://bugzilla.gnome.org/show_bug.cgi?id=694192
This commit is contained in:
parent
65f96494f8
commit
6a1b341336
@ -184,15 +184,29 @@ const AllView = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getItemId: function(item) {
|
_getItemId: function(item) {
|
||||||
return item.get_id();
|
if (item instanceof Shell.App)
|
||||||
|
return item.get_id();
|
||||||
|
else if (item instanceof GMenu.TreeDirectory)
|
||||||
|
return item.get_menu_id();
|
||||||
|
else
|
||||||
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
_createItemIcon: function(item) {
|
_createItemIcon: function(item) {
|
||||||
return new AppIcon(item);
|
if (item instanceof Shell.App)
|
||||||
|
return new AppIcon(item);
|
||||||
|
else if (item instanceof GMenu.TreeDirectory)
|
||||||
|
return new FolderIcon(item, this);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
_compareItems: function(a, b) {
|
_compareItems: function(itemA, itemB) {
|
||||||
return a.compare_by_name(b);
|
// bit of a hack: rely on both ShellApp and GMenuTreeDirectory
|
||||||
|
// having a get_name() method
|
||||||
|
let nameA = GLib.utf8_collate_key(itemA.get_name(), -1);
|
||||||
|
let nameB = GLib.utf8_collate_key(itemB.get_name(), -1);
|
||||||
|
return (nameA > nameB) ? 1 : (nameA < nameB ? -1 : 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
addApp: function(app) {
|
addApp: function(app) {
|
||||||
@ -202,6 +216,13 @@ const AllView = new Lang.Class({
|
|||||||
Lang.bind(this, this._ensureIconVisible));
|
Lang.bind(this, this._ensureIconVisible));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
addFolder: function(dir) {
|
||||||
|
let folderIcon = this._addItem(dir);
|
||||||
|
if (folderIcon)
|
||||||
|
folderIcon.actor.connect('key-focus-in',
|
||||||
|
Lang.bind(this, this._ensureIconVisible));
|
||||||
|
},
|
||||||
|
|
||||||
addFolderPopup: function(popup) {
|
addFolderPopup: function(popup) {
|
||||||
this._stack.add_actor(popup.actor);
|
this._stack.add_actor(popup.actor);
|
||||||
popup.connect('open-state-changed', Lang.bind(this,
|
popup.connect('open-state-changed', Lang.bind(this,
|
||||||
|
Loading…
Reference in New Issue
Block a user