gnome-shell/js/ui
Jonas Dreßler b781b3e9fd appDisplay: Get linear index using item instead of page and position
_getLinearPosition() is a function that converts a page and position
index to the "accumulated" index that includes all pages before the
page. The function is used by _addItem() and _moveItem() for getting the
new index of an item inside the _orderedItems array.

Now when passing -1 as position to _addItem() or _moveItem(), this means
the item should be appended to the page. Right now _getLinearPosition()
returns the last item index on the page when passed -1, inserting the
item into _orderedItems at this index will actually not append it, but
insert it between the second last and last item.

To fix it, let's make the whole thing more robust by explicitly passing
an item to _getLinearPosition(). This means we simply no longer have to
assume what "-1" means. Moving the call to _getLinearPosition() to
happen after addItem() and moveItem() ensures that the new item position
is used and not the old one.

This fixes issues where the _orderedItems array gets out of order when
moving or adding items.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2348>
2023-02-01 12:56:28 +00:00
..
components js: Use async D-Bus wrappers 2022-08-01 18:51:14 +00:00
status Revert "status/volume: Clear device menus when unsetting stream" 2023-01-27 12:53:33 +00:00
accessDialog.js accessDialog: Don't add an empty body 2023-01-17 13:51:54 +00:00
altTab.js altTab: Always include label in thumbnail 2022-10-18 18:04:57 +00:00
animation.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
appDisplay.js appDisplay: Get linear index using item instead of page and position 2023-02-01 12:56:28 +00:00
appFavorites.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
appMenu.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
audioDeviceSelection.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
background.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
backgroundMenu.js backgroundMenu: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
barLevel.js cleanup: Define GObject accessors in camelCase 2021-02-03 20:19:29 +01:00
boxpointer.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
calendar.js calendar: Unbind settings when destroying 2022-11-25 22:09:37 +01:00
checkBox.js checkbox: Improve accessibility of check boxes for Orca users 2020-03-29 12:56:33 +00:00
closeDialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
ctrlAltTab.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
dash.js dash: Connect before destroying 2023-01-17 13:58:06 +00:00
dateMenu.js cleanup: Use deepUnpack() intead of deep_unpack() 2022-08-10 10:29:24 +00:00
dialog.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
dnd.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
edgeDragAction.js edgeDragAction: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
endSessionDialog.js loginManager: Return objects instead of multiple booleans 2022-08-01 20:58:37 +02:00
environment.js environment: Set time zero when animations are disabled 2022-11-04 14:14:34 +01:00
extensionDownloader.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
extensionSystem.js extensions: Refactor extension system for asynchronous loading 2022-12-01 12:59:32 +00:00
focusCaretTracker.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
grabHelper.js Require both mouse and keyboard grabs for some grabs to be successful 2022-05-04 17:28:08 +00:00
ibusCandidatePopup.js ibusCandidatePopup: Prevent it from covering screenshot UI 2022-07-04 13:38:15 +00:00
iconGrid.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
inhibitShortcutsDialog.js inhibitShorcutsDialog: Fix permission check 2022-11-19 00:48:25 +00:00
init.js init: Set console log domain 2021-09-01 14:55:47 +00:00
kbdA11yDialog.js kbdA11yDialog: Use MetaKeyboardA11yFlags 2022-06-16 09:38:20 +00:00
keyboard.js keyboard: Change osk menu entry to control-center keyboard pane 2022-11-24 13:49:55 +01:00
layout.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
lightbox.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
locatePointer.js locatePointer: Bind ripples creation to settings 2019-09-09 19:28:18 +00:00
lookingGlass.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
magnifier.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
main.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
messageList.js messageList: Only close messages via delete key if they can be closed 2022-06-04 15:23:45 +02:00
messageTray.js signalTracker: Explicitly register destroyable types 2022-03-06 00:10:03 +00:00
modalDialog.js Require both mouse and keyboard grabs for some grabs to be successful 2022-05-04 17:28:08 +00:00
mpris.js cleanup: Use deepUnpack() intead of deep_unpack() 2022-08-10 10:29:24 +00:00
notificationDaemon.js cleanup: Use deepUnpack() intead of deep_unpack() 2022-08-10 10:29:24 +00:00
osdMonitorLabeler.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
osdWindow.js osdWindow: Implement new OSD design 2022-02-12 15:28:52 +00:00
overview.js overview: Port to Meta.Display.is_grabbed() 2023-01-30 12:19:22 +00:00
overviewControls.js overview: Make preparation to enter/leave overview explicit 2022-11-25 15:19:37 +00:00
padOsd.js padOsd: Replace Gtk accelerator API usage with Mutter 2023-01-02 13:26:49 +01:00
pageIndicators.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
panel.js panel,windowMenu: Update to meta_window_begin_grab_op() API change 2023-01-30 12:19:22 +00:00
panelMenu.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
pointerA11yTimeout.js ui: Use ClutterSeat for keyboard/pointer a11y 2020-01-30 17:49:08 +00:00
pointerWatcher.js js: Get idle monitor from backend 2021-05-18 13:42:52 +00:00
popupMenu.js popupMenu: Close quick settings when activating settings action 2022-08-02 16:05:28 +00:00
quickSettings.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
remoteSearch.js search: Stop special-casing GNOME Settings on search 2022-12-15 19:02:02 +00:00
ripples.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
runDialog.js runDialog: Use single quotes for Wayland restart warning 2022-05-31 18:35:41 +00:00
screenShield.js screenShield: Add API to add/remove credential managers 2023-01-23 20:37:46 +00:00
screenshot.js screenshot: Cache ScreencastSupported property 2022-11-09 11:15:04 +00:00
scripting.js tests: Add test running basic perf test 2022-11-25 22:09:53 +01:00
search.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
searchController.js searchController: Use connectObject for the stage key focus signal 2022-11-25 22:09:37 +01:00
sessionMode.js fileUtils: Refactor collectFromDatadirs to be a generator 2022-12-01 12:59:32 +00:00
shellDBus.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
shellEntry.js shellEntry: Remove unused variable 2022-10-14 22:32:30 +00:00
shellMountOperation.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
slider.js slider: Use Clutter.grab() for implicit grab 2022-01-29 01:16:29 +01:00
swipeTracker.js swipeTracker: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
switcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
switchMonitor.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
unlockDialog.js lockscreen: Style cleanup for lock and login 2023-01-06 11:29:31 +00:00
userWidget.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
welcomeDialog.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
windowAttentionHandler.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
windowManager.js windowManager: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
windowMenu.js panel,windowMenu: Update to meta_window_begin_grab_op() API change 2023-01-30 12:19:22 +00:00
windowPreview.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
workspace.js workspace: Port WorkspaceBackground allocate to C 2022-08-03 12:30:31 +00:00
workspaceAnimation.js workspaceAnimation: Get time outside of the animation-complete callback 2022-03-13 00:06:03 +00:00
workspacesView.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
workspaceSwitcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
workspaceThumbnail.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
xdndHandler.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00