提交 ad72078b 编写于 作者: R rebornix

Re #27083. Update search scope once find widget becomes visible.

上级 9a0937c0
......@@ -61,6 +61,7 @@ export interface IFindStartOptions {
seedSearchStringFromGlobalClipboard: boolean;
shouldFocus: FindStartFocusAction;
shouldAnimate: boolean;
updateSearchScope: boolean;
}
export class CommonFindController extends Disposable implements editorCommon.IEditorContribution {
......@@ -117,6 +118,7 @@ export class CommonFindController extends Disposable implements editorCommon.IEd
seedSearchStringFromGlobalClipboard: false,
shouldFocus: FindStartFocusAction.NoFocusChange,
shouldAnimate: false,
updateSearchScope: false
});
}
}));
......@@ -263,6 +265,9 @@ export class CommonFindController extends Disposable implements editorCommon.IEd
stateChanges.isReplaceRevealed = false;
}
if (opts.updateSearchScope) {
stateChanges.searchScope = this._editor.getSelection();
}
this._state.change(stateChanges, false);
......@@ -358,6 +363,11 @@ export class FindController extends CommonFindController implements IFindControl
this._createFindWidget();
}
if (!this._widget.getPosition() && this._editor.getConfiguration().contribInfo.find.autoFindInSelection) {
// not visible yet so we need to set search scope if `editor.find.autoFindInSelection` is `true`
opts.updateSearchScope = true;
}
super._start(opts);
if (opts.shouldFocus === FindStartFocusAction.FocusReplaceInput) {
......@@ -414,7 +424,8 @@ export class StartFindAction extends EditorAction {
seedSearchStringFromSelection: editor.getConfiguration().contribInfo.find.seedSearchStringFromSelection,
seedSearchStringFromGlobalClipboard: editor.getConfiguration().contribInfo.find.globalFindClipboard,
shouldFocus: FindStartFocusAction.FocusFindInput,
shouldAnimate: true
shouldAnimate: true,
updateSearchScope: false
});
}
}
......@@ -447,7 +458,8 @@ export class StartFindWithSelectionAction extends EditorAction {
seedSearchStringFromSelection: true,
seedSearchStringFromGlobalClipboard: false,
shouldFocus: FindStartFocusAction.FocusFindInput,
shouldAnimate: true
shouldAnimate: true,
updateSearchScope: false
});
controller.setGlobalBufferTerm(controller.getState().searchString);
......@@ -463,7 +475,8 @@ export abstract class MatchFindAction extends EditorAction {
seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getConfiguration().contribInfo.find.seedSearchStringFromSelection,
seedSearchStringFromGlobalClipboard: true,
shouldFocus: FindStartFocusAction.NoFocusChange,
shouldAnimate: true
shouldAnimate: true,
updateSearchScope: false
});
this._run(controller);
}
......@@ -532,7 +545,8 @@ export abstract class SelectionMatchFindAction extends EditorAction {
seedSearchStringFromSelection: editor.getConfiguration().contribInfo.find.seedSearchStringFromSelection,
seedSearchStringFromGlobalClipboard: false,
shouldFocus: FindStartFocusAction.NoFocusChange,
shouldAnimate: true
shouldAnimate: true,
updateSearchScope: false
});
this._run(controller);
}
......@@ -627,7 +641,8 @@ export class StartFindReplaceAction extends EditorAction {
seedSearchStringFromSelection: seedSearchStringFromSelection,
seedSearchStringFromGlobalClipboard: editor.getConfiguration().contribInfo.find.seedSearchStringFromSelection,
shouldFocus: shouldFocus,
shouldAnimate: true
shouldAnimate: true,
updateSearchScope: false
});
}
}
......
......@@ -261,7 +261,8 @@ suite('FindController', () => {
seedSearchStringFromSelection: false,
seedSearchStringFromGlobalClipboard: false,
shouldFocus: FindStartFocusAction.NoFocusChange,
shouldAnimate: false
shouldAnimate: false,
updateSearchScope: false
});
assert.equal(findController.getState().searchScope, null);
......@@ -468,4 +469,27 @@ suite('FindController query options persistence', () => {
findController.dispose();
});
});
test('issue #27083: Update search scope once find widget becomes visible', () => {
withTestCodeEditor([
'var x = (3 * 5)',
'var y = (3 * 5)',
'var z = (3 * 5)',
], { serviceCollection: serviceCollection, find: { autoFindInSelection: true, globalFindClipboard: false } }, (editor, cursor) => {
// clipboardState = '';
editor.setSelection(new Range(1, 1, 2, 1));
let findController = editor.registerAndInstantiateContribution<TestFindController>(TestFindController);
findController.start({
forceRevealReplace: false,
seedSearchStringFromSelection: false,
seedSearchStringFromGlobalClipboard: false,
shouldFocus: FindStartFocusAction.NoFocusChange,
shouldAnimate: false,
updateSearchScope: true
});
assert.deepEqual(findController.getState().searchScope, new Selection(1, 1, 2, 1));
});
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册