appDisplay: Move child focus handling to IconGrid
The icon grid is always paginated, so the app grid code doesn't need to behave differently in the FolderView and AppDisplay. Move the keyboard handling to IconGrid itself, and remove the now dead code from AppDisplay. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1271
This commit is contained in:
parent
c5dbdad5fc
commit
4c2c1297be
@ -121,9 +121,6 @@ var BaseAppView = GObject.registerClass({
|
|||||||
super._init(params);
|
super._init(params);
|
||||||
|
|
||||||
this._grid = new IconGrid.IconGrid();
|
this._grid = new IconGrid.IconGrid();
|
||||||
this._grid.connect('child-focused', (grid, actor) => {
|
|
||||||
this._childFocused(actor);
|
|
||||||
});
|
|
||||||
// Standard hack for ClutterBinLayout
|
// Standard hack for ClutterBinLayout
|
||||||
this._grid.x_expand = true;
|
this._grid.x_expand = true;
|
||||||
|
|
||||||
@ -141,10 +138,6 @@ var BaseAppView = GObject.registerClass({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_childFocused(_actor) {
|
|
||||||
// Nothing by default
|
|
||||||
}
|
|
||||||
|
|
||||||
_redisplay() {
|
_redisplay() {
|
||||||
let oldApps = this._orderedItems.slice();
|
let oldApps = this._orderedItems.slice();
|
||||||
let oldAppIds = oldApps.map(icon => icon.id);
|
let oldAppIds = oldApps.map(icon => icon.id);
|
||||||
@ -697,10 +690,6 @@ class AppDisplay extends BaseAppView {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_childFocused(icon) {
|
|
||||||
let itemPage = this._grid.getItemPage(icon);
|
|
||||||
this.goToPage(itemPage);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called before allocation to calculate dynamic spacing
|
// Called before allocation to calculate dynamic spacing
|
||||||
adaptToSize(width, height) {
|
adaptToSize(width, height) {
|
||||||
@ -1022,10 +1011,6 @@ class FolderView extends BaseAppView {
|
|||||||
super.vfunc_allocate(box);
|
super.vfunc_allocate(box);
|
||||||
}
|
}
|
||||||
|
|
||||||
_childFocused(actor) {
|
|
||||||
Util.ensureActorVisibleInScrollView(this._scrollView, actor);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Overridden from BaseAppView
|
// Overridden from BaseAppView
|
||||||
animate(animationDirection) {
|
animate(animationDirection) {
|
||||||
this._grid.animatePulse(animationDirection);
|
this._grid.animatePulse(animationDirection);
|
||||||
|
@ -1143,7 +1143,6 @@ var IconGrid = GObject.registerClass({
|
|||||||
Signals: {
|
Signals: {
|
||||||
'pages-changed': {},
|
'pages-changed': {},
|
||||||
'animation-done': {},
|
'animation-done': {},
|
||||||
'child-focused': { param_types: [Clutter.Actor.$gtype] },
|
|
||||||
},
|
},
|
||||||
}, class IconGrid extends St.Viewport {
|
}, class IconGrid extends St.Viewport {
|
||||||
_init(layoutParams = {}) {
|
_init(layoutParams = {}) {
|
||||||
@ -1199,7 +1198,9 @@ var IconGrid = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
|
|
||||||
_childAdded(grid, child) {
|
_childAdded(grid, child) {
|
||||||
child._iconGridKeyFocusInId = child.connect('key-focus-in', actor => this.emit('child-focused', actor));
|
child._iconGridKeyFocusInId = child.connect('key-focus-in', () => {
|
||||||
|
this._ensureItemIsVisible(child);
|
||||||
|
});
|
||||||
|
|
||||||
child._paintVisible = child.opacity > 0;
|
child._paintVisible = child.opacity > 0;
|
||||||
child._opacityChangedId = child.connect('notify::opacity', () => {
|
child._opacityChangedId = child.connect('notify::opacity', () => {
|
||||||
@ -1210,6 +1211,14 @@ var IconGrid = GObject.registerClass({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ensureItemIsVisible(item) {
|
||||||
|
if (!this.contains(item))
|
||||||
|
throw new Error(`${item} is not a child of IconGrid`);
|
||||||
|
|
||||||
|
const itemPage = this.layout_manager.getItemPage(item);
|
||||||
|
this.goToPage(itemPage);
|
||||||
|
}
|
||||||
|
|
||||||
_setGridMode(modeIndex) {
|
_setGridMode(modeIndex) {
|
||||||
if (this._currentMode === modeIndex)
|
if (this._currentMode === modeIndex)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user