Change:
Issue Type: <bBug</bIn latest Insiders build instead of loading icon I see spinning chevron for some tree nodes. It's mostly noticeable in GitHub Pull Request extension tree, however I was able to reproduce it in Call Hierarchy while expanding some nested trees. Looks like has lower priority than which prevents icon change. /cc VS Code version: Code - Insiders 1.45.0-insider (, 2020-04-22T08:44:55.510Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --

Discussion:
import { clamp } from 'vs/base/common/numbers'; import { ScrollEvent } from 'vs/base/common/scrollable'; import { SetMap } from 'vs/base/common/collections'; <del> import { Codicon, registerIcon } from 'vs/base/common/codicons'; const treeItemExpandedIcon = registerIcon('tree-item-expanded', Codicon.chevronDown); // collapsed is done with rotation const treeFilterOnTypeOnIcon = registerIcon('tree-filter-on-type-on', Codicon.listFilter); const treeFilterOnTypeOffIcon = registerIcon('tree-filter-on-type-off', Codicon.listSelection); const treeFilterClearIcon = registerIcon('tree-filter-clear', Codicon.close); </del> <ins> import { treeItemExpandedIcon, treeFilterOnTypeOnIcon, treeFilterOnTypeOffIcon, treeFilterClearIcon } from 'vs/base/browser/ui/tree/treeIcons'; </ins> class TreeElementsDragAndDropData<T, TFilterData, TContext> extends ElementsDragAndDropData<T, TContext> {

import { IDragAndDropData } from 'vs/base/browser/dnd'; import { ElementsDragAndDropData } from 'vs/base/browser/ui/list/listView'; import { isPromiseCanceledError, onUnexpectedError } from 'vs/base/common/errors'; <del> import { toggleClass } from 'vs/base/browser/dom'; </del> <ins> import { removeClasses, addClasses } from 'vs/base/browser/dom'; </ins> import { values } from 'vs/base/common/map'; import { ScrollEvent } from 'vs/base/common/scrollable'; import { ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel'; import { IThemable } from 'vs/base/common/styler'; import { isFilterResult, getVisibleState } from 'vs/base/browser/ui/tree/indexTreeModel'; <ins> import { treeItemLoadingIcon } from 'vs/base/browser/ui/tree/treeIcons'; </ins> interface IAsyncDataTreeNode<TInput, T> { element: TInput | T;

} renderTwistie(element: IAsyncDataTreeNode<TInput, T>, twistieElement: HTMLElement): boolean { <del> toggleClass(twistieElement, 'codicon-loading', element.slow); </del> <ins> if (element.slow) { addClasses(twistieElement, treeItemLoadingIcon.classNames); } else { removeClasses(twistieElement, treeItemLoadingIcon.classNames); } </ins> return false; }

transform: rotate(-90deg); } <del> .monaco-tl-twistie.codicon-loading::before { </del> <ins> .monaco-tl-twistie.codicon-tree-item-loading::before { </ins> animation: codicon-spin 1.25s linear infinite; }

<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Codicon, registerIcon } from 'vs/base/common/codicons'; export const treeItemExpandedIcon = registerIcon('tree-item-expanded', Codicon.chevronDown); // collapsed is done with rotation export const treeFilterOnTypeOnIcon = registerIcon('tree-filter-on-type-on', Codicon.listFilter); export const treeFilterOnTypeOffIcon = registerIcon('tree-filter-on-type-off', Codicon.listSelection); export const treeFilterClearIcon = registerIcon('tree-filter-clear', Codicon.close); export const treeItemLoadingIcon = registerIcon('tree-item-loading', Codicon.loading); </ins>