Files
palemoon27/toolkit/content/treeUtils.js
T
roytam1 19b122873d import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1240985 - Always enqueue OnMaybeDequeueOne task when receiving a message (r=dvander) (a5056d5942)
- Bug 1240985 - Null out mRecvd if message it corresponds to is cancelled (r=dvander) (3eb16e50b4)
- Bug 1245649: Merge browser and toolkit eslint rule settings. r=felipe (fb8837edb9)
- Bug 1189799 - Make sure that about:performance displays each add-on only once (more tests);r=felipe (67cc74db67)
- Bug 1230471 - Basic eslint fixes in places. r=mconley (1460c46edc)
- Bug 1142734: Allow unloading the loader sandbox module. r=jsantell (052f483a6d)
- Bug 1047595 - make picking colors work in HCM / when author colors are disabled, r=jaws (728163434b)
- Bug 1244647 fix typeof check, r=mikedeboer (72da15da21)
- Bug 1229240 - make applyConstraints() reject instead of crash on non-gUM tracks. r=jesup (93d2abf43a)
- Bug 1239893 - Add gonk SidebandStream handling to DOMHwMediaStream r=roc (86739bc7a4)
- Bug 1189162 - Clamp gamepad.timestamp and VideoPlaybackQuality.creationTime. r=bz (daaa3cc0db)
- Bug 1232348 - adjust nested-frame checking condition. r=baku. (e4d1930bef)
- Bug 1166556 - Don't start geolocation provider if the cached position is being used. r=jdm (3ad2c5dfa9)
- Bug 858827 - [Geolocation] Add a handling for getCurrentLocation when timeout is zero. r=jdm (63dd4ccaf3)
- Bug 1216148 - Handle how geolocation acts when the app's visibility changes. r=kchen. (dbeb9ef51c)
- Bug 1230209 - Add more telemetry for Geolocation usage f=bsmedberg r=tanvi,rbarnes,jdm (c32b195d25)
- Bug 1238825: Add "dom.bluetooth.webbluetooth.enabled" preference for WebBluetooth API development. r=btian, r=bz (3298be0b87)
- Bug 1223722: Transfer Bluetooth addresses in |BluetoothValue|, r=brsun (1cc507823b)
- Bug 1223722: Transfer Bluetooth remote names in |BluetoothValue|, r=brsun (73a008b991)
- Bug 789315, notify MutationObservers before running <script>, r=khuey (d2df797c54)
- Bug 1214495 - Move CallerSubsumes checks in nsLocation into the WebIDL entry points. r=bz (69a2086836)
- Bug 1239509: Move VisibilityChangeListener out of nsContentPermissionHelper's header. r=wchen (bb2e33a40c)
- Bug 1183845 - Only send activation event if document is non-null. r=bz (4b81c3295d)
- Bug 1208789, clear starting node before traversing backwards by document, r=smaug (94a6cdd891)
- Bug 1240908 - Make the window reference in nsContentPermissionRequester weak. r=smaug (b5982ecb9e)
- Bug 1234735 - Remove redundant spaces in nsGlobalWindow. r=baku (5f55b37486)
- Bug 1180525. Run callbacks whose window is no longer current as long as its document is the active document in the browsing context. r=bholley (02e6d97a7b)
2023-11-08 16:38:54 +08:00

79 lines
2.3 KiB
JavaScript

// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var gTreeUtils = {
deleteAll: function (aTree, aView, aItems, aDeletedItems)
{
for (var i = 0; i < aItems.length; ++i)
aDeletedItems.push(aItems[i]);
aItems.splice(0, aItems.length);
var oldCount = aView.rowCount;
aView._rowCount = 0;
aTree.treeBoxObject.rowCountChanged(0, -oldCount);
},
deleteSelectedItems: function (aTree, aView, aItems, aDeletedItems)
{
var selection = aTree.view.selection;
selection.selectEventsSuppressed = true;
var rc = selection.getRangeCount();
for (var i = 0; i < rc; ++i) {
var min = { }; var max = { };
selection.getRangeAt(i, min, max);
for (let j = min.value; j <= max.value; ++j) {
aDeletedItems.push(aItems[j]);
aItems[j] = null;
}
}
var nextSelection = 0;
for (i = 0; i < aItems.length; ++i) {
if (!aItems[i]) {
let j = i;
while (j < aItems.length && !aItems[j])
++j;
aItems.splice(i, j - i);
nextSelection = j < aView.rowCount ? j - 1 : j - 2;
aView._rowCount -= j - i;
aTree.treeBoxObject.rowCountChanged(i, i - j);
}
}
if (aItems.length) {
selection.select(nextSelection);
aTree.treeBoxObject.ensureRowIsVisible(nextSelection);
aTree.focus();
}
selection.selectEventsSuppressed = false;
},
sort: function (aTree, aView, aDataSet, aColumn, aComparator,
aLastSortColumn, aLastSortAscending)
{
var ascending = (aColumn == aLastSortColumn) ? !aLastSortAscending : true;
if (aDataSet.length == 0)
return ascending;
var numericSort = !isNaN(aDataSet[0][aColumn]);
var sortFunction = null;
if (aComparator) {
sortFunction = function (a, b) { return aComparator(a[aColumn], b[aColumn]); };
}
aDataSet.sort(sortFunction);
if (!ascending)
aDataSet.reverse();
aTree.view.selection.clearSelection();
aTree.view.selection.select(0);
aTree.treeBoxObject.invalidate();
aTree.treeBoxObject.ensureRowIsVisible(0);
return ascending;
}
};