[gnome-shell/gbsneto/custom-icon-positions: 23/23] appDisplay: Append new icons at the first available page after first
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gbsneto/custom-icon-positions: 23/23] appDisplay: Append new icons at the first available page after first
- Date: Thu, 16 Jul 2020 14:58:36 +0000 (UTC)
commit 21b4eaec17a6c8ed6d3a7ecd58af4c9f7c23d0c1
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Jun 25 17:33:48 2020 -0300
appDisplay: Append new icons at the first available page after first
As per design discussion, the first page is a somewhat of a special
page where we really don't want to change anything unless necessary.
Append new icons at the first available slot after the first page.
Make the placeholder icon be appended to the first available page
as well, since it's always used when dragging from folder dialogs.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284
js/ui/appDisplay.js | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index fdbfef6779..4c8678777b 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -497,10 +497,27 @@ var BaseAppView = GObject.registerClass({
return true;
}
+ _findBestPageToAppend(startPage = 1) {
+ for (let i = startPage; i < this._grid.nPages; i++) {
+ const pageItems =
+ this._grid.getItemsAtPage(i).filter(c => c.visible);
+
+ if (pageItems.length < this._grid.itemsPerPage)
+ return i;
+ }
+
+ return -1;
+ }
+
_addItem(item, page, position) {
let itemIndex = 0;
if (this._grid.nPages > 0) {
+ // Append icons to the first page with empty slot, starting from
+ // the second page
+ if (this._grid.nPages > 1 && page === -1 && position === -1)
+ page = this._findBestPageToAppend();
+
const realPage = page === -1 ? this._grid.nPages - 1 : page;
itemIndex = position === -1
@@ -1001,8 +1018,14 @@ class AppDisplay extends BaseAppView {
}
_getItemPosition(item) {
- if (item === this._placeholder)
- return this._grid.getItemPosition(item);
+ if (item === this._placeholder) {
+ let [page, position] = this._grid.getItemPosition(item);
+
+ if (page === -1)
+ page = this._findBestPageToAppend(this._grid.currentPage);
+
+ return [page, position];
+ }
return this._pageManager.getAppPosition(item.id);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]