From c2f0a3fdf3b202d91f0a7765eb0785ea8b61bf39 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Mon, 8 Apr 2024 12:31:34 +0200 Subject: [PATCH] Renames IObservableValue to IValueWithChangeEvent to avoid confusion with observables. `onDidChange` doesn't ship the new value anymore to enable lazy value computation. --- src/vs/base/browser/ui/list/listView.ts | 9 ++++----- src/vs/base/common/event.ts | 5 +++++ src/vs/base/common/observableValue.ts | 17 ----------------- 3 files changed, 9 insertions(+), 22 deletions(-) delete mode 100644 src/vs/base/common/observableValue.ts diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 455e44475ec..1550e7cc10e 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -12,7 +12,7 @@ import { SmoothScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollable import { distinct, equals } from 'vs/base/common/arrays'; import { Delayer, disposableTimeout } from 'vs/base/common/async'; import { memoize } from 'vs/base/common/decorators'; -import { Emitter, Event } from 'vs/base/common/event'; +import { Emitter, Event, IValueWithChangeEvent } from 'vs/base/common/event'; import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { IRange, Range } from 'vs/base/common/range'; import { INewScrollDimensions, Scrollable, ScrollbarVisibility, ScrollEvent } from 'vs/base/common/scrollable'; @@ -20,7 +20,6 @@ import { ISpliceable } from 'vs/base/common/sequence'; import { IListDragAndDrop, IListDragEvent, IListGestureEvent, IListMouseEvent, IListRenderer, IListTouchEvent, IListVirtualDelegate, ListDragOverEffectPosition, ListDragOverEffectType } from 'vs/base/browser/ui/list/list'; import { IRangeMap, RangeMap, shift } from 'vs/base/browser/ui/list/rangeMap'; import { IRow, RowCache } from 'vs/base/browser/ui/list/rowCache'; -import { IObservableValue } from 'vs/base/common/observableValue'; import { BugIndicatingError } from 'vs/base/common/errors'; import { AriaRole } from 'vs/base/browser/ui/aria/aria'; import { ScrollableElementChangeOptions } from 'vs/base/browser/ui/scrollbar/scrollableElementOptions'; @@ -62,7 +61,7 @@ export interface IListViewAccessibilityProvider { getSetSize?(element: T, index: number, listLength: number): number; getPosInSet?(element: T, index: number): number; getRole?(element: T): AriaRole | undefined; - isChecked?(element: T): boolean | IObservableValue | undefined; + isChecked?(element: T): boolean | IValueWithChangeEvent | undefined; } export interface IListViewOptionsUpdate { @@ -195,7 +194,7 @@ class ListViewAccessibilityProvider implements Required number; readonly getPosInSet: (element: any, index: number) => number; readonly getRole: (element: T) => AriaRole | undefined; - readonly isChecked: (element: T) => boolean | IObservableValue | undefined; + readonly isChecked: (element: T) => boolean | IValueWithChangeEvent | undefined; constructor(accessibilityProvider?: IListViewAccessibilityProvider) { if (accessibilityProvider?.getSetSize) { @@ -919,7 +918,7 @@ export class ListView implements IListView { } else if (checked) { const update = (checked: boolean) => item.row!.domNode.setAttribute('aria-checked', String(!!checked)); update(checked.value); - item.checkedDisposable = checked.onDidChange(update); + item.checkedDisposable = checked.onDidChange(() => update(checked.value)); } if (item.stale || !item.row.domNode.parentElement) { diff --git a/src/vs/base/common/event.ts b/src/vs/base/common/event.ts index 2ed7d930db1..50a59b10002 100644 --- a/src/vs/base/common/event.ts +++ b/src/vs/base/common/event.ts @@ -1630,3 +1630,8 @@ export class Relay implements IDisposable { this.emitter.dispose(); } } + +export interface IValueWithChangeEvent { + readonly onDidChange: Event; + readonly value: T; +} diff --git a/src/vs/base/common/observableValue.ts b/src/vs/base/common/observableValue.ts deleted file mode 100644 index 65ac4d6c90e..00000000000 --- a/src/vs/base/common/observableValue.ts +++ /dev/null @@ -1,17 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Event } from 'vs/base/common/event'; -//@ts-ignore -import type { IObservable } from 'vs/base/common/observable'; - -/** - * @deprecated Use {@link IObservable} instead. - */ -export interface IObservableValue { - onDidChange: Event; - readonly value: T; -} -