Parcourir la source

Fixes #626 - Avoid using object to implement Map

This commit fixes a bug occurring with branch names which are parsable
integers.

They were always shown first in the list of branches (even if they are
not starred) because the chrome implementation does not respect the
insertion order for keys that happen to be parseable integers.
main
Marc Lasson il y a 6 ans
committed by Eric Amodio
Parent
révision
e1c2c74301
3 fichiers modifiés avec 9 ajouts et 8 suppressions
  1. +7
    -6
      src/system/array.ts
  2. +1
    -1
      src/views/nodes/branchOrTagFolderNode.ts
  3. +1
    -1
      src/views/nodes/folderNode.ts

+ 7
- 6
src/system/array.ts Voir le fichier

@ -85,7 +85,7 @@ export namespace Arrays {
value?: T;
// parent?: IHierarchicalItem<T>;
children: { [key: string]: IHierarchicalItem<T> } | undefined;
children: Map<string, IHierarchicalItem<T>> | undefined;
descendants: T[] | undefined;
}
@ -98,7 +98,7 @@ export namespace Arrays {
const seed = {
name: '',
relativePath: '',
children: Object.create(null),
children: new Map(),
descendants: []
};
@ -110,18 +110,19 @@ export namespace Arrays {
relativePath = joinPath(relativePath, folderName);
if (folder.children === undefined) {
folder.children = Object.create(null);
folder.children = new Map();
}
let f = folder.children![folderName];
let f = folder.children!.get(folderName);
if (f === undefined) {
folder.children![folderName] = f = {
f = {
name: folderName,
relativePath: relativePath,
// parent: folder,
children: undefined,
descendants: undefined
};
folder.children.set(folderName, f);
}
if (folder.descendants === undefined) {
@ -147,7 +148,7 @@ export namespace Arrays {
): IHierarchicalItem<T> {
if (root.children === undefined) return root;
const children = [...Objects.values(root.children)];
const children = [...root.children.values()];
// // Attempts less nesting but duplicate roots
// if (!isRoot && children.every(c => c.value === undefined)) {

+ 1
- 1
src/views/nodes/branchOrTagFolderNode.ts Voir le fichier

@ -32,7 +32,7 @@ export class BranchOrTagFolderNode extends ViewNode {
const children: (BranchOrTagFolderNode | BranchNode | TagNode)[] = [];
for (const folder of Objects.values(this.root.children)) {
for (const folder of this.root.children.values()) {
if (folder.value === undefined) {
// If the folder contains the current branch, expand it by default
const expanded =

+ 1
- 1
src/views/nodes/folderNode.ts Voir le fichier

@ -41,7 +41,7 @@ export class FolderNode extends ViewNode {
);
if (nesting !== ViewFilesLayout.List) {
children = [];
for (const folder of Objects.values(this.root.children)) {
for (const folder of this.root.children.values()) {
if (folder.value === undefined) {
children.push(
new FolderNode(

Chargement…
Annuler
Enregistrer