appDisplay: Ensure the currently focused icon is viewable

We either scroll or paginate to the correct place when an icon gets
key focus.

https://bugzilla.gnome.org/show_bug.cgi?id=726759
This commit is contained in:
Rui Matos 2014-03-20 14:54:04 +01:00
parent 8d8c75d32d
commit d0f69a72dc

View File

@ -99,6 +99,9 @@ const BaseAppView = new Lang.Class({
else else
this._grid = new IconGrid.IconGrid(gridParams); this._grid = new IconGrid.IconGrid(gridParams);
this._grid.connect('key-focus-in', Lang.bind(this, function(grid, actor) {
this._keyFocusIn(actor);
}));
// Standard hack for ClutterBinLayout // Standard hack for ClutterBinLayout
this._grid.actor.x_expand = true; this._grid.actor.x_expand = true;
@ -106,6 +109,10 @@ const BaseAppView = new Lang.Class({
this._allItems = []; this._allItems = [];
}, },
_keyFocusIn: function(actor) {
// Nothing by default
},
removeAll: function() { removeAll: function() {
this._grid.destroyAll(); this._grid.destroyAll();
this._items = {}; this._items = {};
@ -558,7 +565,7 @@ const AllView = new Lang.Class({
})); }));
}, },
_ensureIconVisible: function(icon) { _keyFocusIn: function(icon) {
let itemPage = this._grid.getItemPage(icon); let itemPage = this._grid.getItemPage(icon);
this.goToPage(itemPage); this.goToPage(itemPage);
}, },
@ -929,6 +936,10 @@ const FolderView = new Lang.Class({
this.actor.add_action(action); this.actor.add_action(action);
}, },
_keyFocusIn: function(actor) {
Util.ensureActorVisibleInScrollView(this.actor, actor);
},
createFolderIcon: function(size) { createFolderIcon: function(size) {
let layout = new Clutter.TableLayout(); let layout = new Clutter.TableLayout();
let icon = new St.Widget({ layout_manager: layout, let icon = new St.Widget({ layout_manager: layout,