[gnome-shell/gbsneto/pagination: 6/16] appDisplay: Move child focus handling to IconGrid
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gbsneto/pagination: 6/16] appDisplay: Move child focus handling to IconGrid
- Date: Thu, 18 Jun 2020 13:30:51 +0000 (UTC)
commit 4c2c1297bee57bdf6990a8765445b882d3c5e14a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Tue May 19 15:34:11 2020 -0300
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
js/ui/appDisplay.js | 15 ---------------
js/ui/iconGrid.js | 13 +++++++++++--
2 files changed, 11 insertions(+), 17 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 6bd3b61451..0b545230a6 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -121,9 +121,6 @@ var BaseAppView = GObject.registerClass({
super._init(params);
this._grid = new IconGrid.IconGrid();
- this._grid.connect('child-focused', (grid, actor) => {
- this._childFocused(actor);
- });
// Standard hack for ClutterBinLayout
this._grid.x_expand = true;
@@ -141,10 +138,6 @@ var BaseAppView = GObject.registerClass({
});
}
- _childFocused(_actor) {
- // Nothing by default
- }
-
_redisplay() {
let oldApps = this._orderedItems.slice();
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
adaptToSize(width, height) {
@@ -1022,10 +1011,6 @@ class FolderView extends BaseAppView {
super.vfunc_allocate(box);
}
- _childFocused(actor) {
- Util.ensureActorVisibleInScrollView(this._scrollView, actor);
- }
-
// Overridden from BaseAppView
animate(animationDirection) {
this._grid.animatePulse(animationDirection);
diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
index b6874d5b6c..2d2b4548d2 100644
--- a/js/ui/iconGrid.js
+++ b/js/ui/iconGrid.js
@@ -1143,7 +1143,6 @@ var IconGrid = GObject.registerClass({
Signals: {
'pages-changed': {},
'animation-done': {},
- 'child-focused': { param_types: [Clutter.Actor.$gtype] },
},
}, class IconGrid extends St.Viewport {
_init(layoutParams = {}) {
@@ -1199,7 +1198,9 @@ var IconGrid = GObject.registerClass({
}
_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._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) {
if (this._currentMode === modeIndex)
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]