Skip to content

Commit 31a056e

Browse files
author
aiday-mar
committed
Resolving certain (not all) changes
1 parent e0450b6 commit 31a056e

File tree

2 files changed

+18
-24
lines changed

2 files changed

+18
-24
lines changed

src/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,18 @@ export class ClickLinkGesture extends Disposable {
106106
public readonly onCancel: Event<void> = this._onCancel.event;
107107

108108
private readonly _editor: ICodeEditor;
109+
private readonly _alwaysFireExecuteOnMouseUp?: boolean;
109110
private _opts: ClickLinkOptions;
110111

111112
private _lastMouseMoveEvent: ClickLinkMouseEvent | null;
112113
private _hasTriggerKeyOnMouseDown: boolean;
113114
private _lineNumberOnMouseDown: number;
114115

115-
constructor(editor: ICodeEditor) {
116+
constructor(editor: ICodeEditor, _alwaysFireOnMouseUp?: boolean) {
116117
super();
117118

118119
this._editor = editor;
120+
this._alwaysFireExecuteOnMouseUp = _alwaysFireOnMouseUp;
119121
this._opts = createOptions(this._editor.getOption(EditorOption.multiCursorModifier));
120122

121123
this._lastMouseMoveEvent = null;
@@ -175,8 +177,7 @@ export class ClickLinkGesture extends Disposable {
175177

176178
private _onEditorMouseUp(mouseEvent: ClickLinkMouseEvent): void {
177179
const currentLineNumber = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;
178-
const stickyScrollWidgetEnabled = this._editor.getOption(EditorOption.experimental);
179-
if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber || stickyScrollWidgetEnabled) {
180+
if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber || this._alwaysFireExecuteOnMouseUp) {
180181
this._onExecute.fire(mouseEvent);
181182
}
182183
}

src/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.ts

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
6-
import { IActiveCodeEditor, ICodeEditor, IOverlayWidget, IOverlayWidgetPosition } from 'vs/editor/browser/editorBrowser';
6+
import { IActiveCodeEditor, ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from 'vs/editor/browser/editorBrowser';
77
import * as dom from 'vs/base/browser/dom';
88
import { EditorLayoutInfo, EditorOption, RenderLineNumbersType } from 'vs/editor/common/config/editorOptions';
99
import { createStringBuilder } from 'vs/editor/common/core/stringBuilder';
@@ -34,7 +34,6 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
3434
private readonly layoutInfo: EditorLayoutInfo;
3535
private readonly rootDomNode: HTMLElement = document.createElement('div');
3636
private readonly disposableStore = this._register(new DisposableStore());
37-
private readonly linkGestureStore = this._register(new DisposableStore());
3837
private lineHeight: number;
3938
private lineNumbers: number[];
4039
private lastLineRelativePosition: number;
@@ -45,7 +44,7 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
4544

4645
constructor(
4746
private readonly _editor: ICodeEditor,
48-
private readonly _languageFeatureService: ILanguageFeaturesService,
47+
@ILanguageFeaturesService private readonly _languageFeatureService: ILanguageFeaturesService,
4948
@IInstantiationService private readonly _instaService: IInstantiationService
5049
) {
5150
super();
@@ -72,28 +71,24 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
7271
}
7372

7473
private updateLinkGesture(): IDisposable {
75-
const gesture = this.linkGestureStore.add(new ClickLinkGesture(this._editor));
74+
const linkGestureStore = new DisposableStore();
75+
const gesture = linkGestureStore.add(new ClickLinkGesture(this._editor, true));
7676
const cancellationToken = new CancellationTokenSource();
7777
const sessionStore = new DisposableStore();
7878
sessionStore.add(cancellationToken);
79-
this.linkGestureStore.add(sessionStore);
80-
this.linkGestureStore.add(gesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, _keyboardEvent]) => {
81-
if (!this._editor.hasModel()) {
82-
return;
83-
}
84-
if (!mouseEvent.hasTriggerModifier) {
85-
if (this.lastChildDecorated) {
86-
this.lastChildDecorated.style.textDecoration = 'none';
87-
this.lastChildDecorated = undefined;
88-
}
79+
linkGestureStore.add(sessionStore);
80+
linkGestureStore.add(gesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, _keyboardEvent]) => {
81+
if (!this._editor.hasModel() || !mouseEvent.hasTriggerModifier) {
82+
sessionStore.clear();
8983
return;
9084
}
9185
const targetMouseEvent = mouseEvent.target as any;
9286
if (targetMouseEvent.detail === 'editor.contrib.stickyScrollWidget' && this.hoverOnLine !== -1 && targetMouseEvent.element.innerText === targetMouseEvent.element.innerHTML) {
9387
const text = targetMouseEvent.element.innerText;
9488
const lineNumber = this.hoverOnLine;
95-
const column = this._editor.getModel()?.getLineContent(lineNumber).indexOf(text);
96-
if (!column || column === -1) {
89+
// TODO: workaround to find the column index, perhaps need more solid solution
90+
const column = this._editor.getModel().getLineContent(lineNumber).indexOf(text);
91+
if (column === -1) {
9792
return;
9893
}
9994
const stickyPositionProjectedOnEditor = new Position(lineNumber, column + 1);
@@ -141,10 +136,10 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
141136
this.lastChildDecorated = undefined;
142137
}
143138
}));
144-
this.linkGestureStore.add(gesture.onCancel(() => {
139+
linkGestureStore.add(gesture.onCancel(() => {
145140
sessionStore.clear();
146141
}));
147-
this.linkGestureStore.add(gesture.onExecute(async e => {
142+
linkGestureStore.add(gesture.onExecute(async e => {
148143
if (this.hoverOnLine !== -1) {
149144
if (e.hasTriggerModifier) {
150145
// Control click
@@ -156,7 +151,7 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
156151
}
157152

158153
}));
159-
return this.linkGestureStore;
154+
return linkGestureStore;
160155
}
161156

162157
public get codeLineCount(): number {
@@ -310,7 +305,5 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
310305

311306
override dispose(): void {
312307
super.dispose();
313-
this.linkGestureStore.dispose();
314-
this.disposableStore.dispose();
315308
}
316309
}

0 commit comments

Comments
 (0)