瀏覽代碼

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 6 年之前
committed by Eric Amodio
父節點
當前提交
e1c2c74301
共有 3 個文件被更改,包括 9 次插入8 次删除
  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 查看文件

@ -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 查看文件

@ -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 查看文件

@ -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(

Loading…
取消
儲存