提交 d01bc20b 编写于 作者: S Sandeep Somavarapu

fix #13196

上级 93399263
......@@ -181,6 +181,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.FocusPre
registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.ToggleCaseSensitiveAction, Constants.ToggleCaseSensitiveActionId, '', ToggleCaseSensitiveKeybinding, ContextKeyExpr.and(Constants.SearchViewletVisibleKey, Constants.SearchInputBoxFocussedKey)), '');
registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.ToggleWholeWordAction, Constants.ToggleWholeWordActionId, '', ToggleWholeWordKeybinding, ContextKeyExpr.and(Constants.SearchViewletVisibleKey, Constants.SearchInputBoxFocussedKey)), '');
registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.ToggleRegexAction, Constants.ToggleRegexActionId, '', ToggleRegexKeybinding, ContextKeyExpr.and(Constants.SearchViewletVisibleKey, Constants.SearchInputBoxFocussedKey)), '');
registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.CloseReplaceAction, Constants.CloseReplaceWidgetActionId, '', { primary: KeyCode.Escape }, ContextKeyExpr.and(Constants.SearchViewletVisibleKey, Constants.ReplaceInputBoxFocussedKey)), '');
// Configuration
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
......
......@@ -170,6 +170,20 @@ export class ReplaceInFilesAction extends Action {
}
}
export class CloseReplaceAction extends Action {
constructor(id: string, label: string, @IViewletService private viewletService: IViewletService) {
super(id, label);
}
public run(): TPromise<any> {
let searchAndReplaceWidget = (<SearchViewlet>this.viewletService.getActiveViewlet()).searchAndReplaceWidget;
searchAndReplaceWidget.toggleReplace(false);
searchAndReplaceWidget.focus();
return TPromise.as(null);
}
}
export class FindInFolderAction extends Action {
private resource: URI;
......
......@@ -76,6 +76,7 @@ export class SearchWidget extends Widget {
public domNode: HTMLElement;
public searchInput: FindInput;
private searchInputBoxFocussed: IContextKey<boolean>;
private replaceInputBoxFocussed: IContextKey<boolean>;
private replaceInput: InputBox;
public searchInputFocusTracker: dom.IFocusTracker;
......@@ -113,6 +114,7 @@ export class SearchWidget extends Widget {
this.searchHistory = new HistoryNavigator<string>();
this.replaceActive = Constants.ReplaceActiveKey.bindTo(this.keyBindingService);
this.searchInputBoxFocussed = Constants.SearchInputBoxFocussedKey.bindTo(this.keyBindingService);
this.replaceInputBoxFocussed = Constants.ReplaceInputBoxFocussedKey.bindTo(this.keyBindingService);
this.render(container, options);
}
......@@ -218,7 +220,7 @@ export class SearchWidget extends Widget {
this.searchHistory.add(this.searchInput.getValue());
}));
this.searchInputFocusTracker = dom.trackFocus(this.searchInput.inputBox.inputElement);
this.searchInputFocusTracker = this._register(dom.trackFocus(this.searchInput.inputBox.inputElement));
this._register(this.searchInputFocusTracker.addFocusListener(() => {
this.searchInputBoxFocussed.set(true);
}));
......@@ -244,7 +246,13 @@ export class SearchWidget extends Widget {
this.replaceActionBar = this._register(new ActionBar(this.replaceContainer));
this.replaceActionBar.push([this.replaceAllAction], { icon: true, label: false });
this.replaceInputFocusTracker = dom.trackFocus(this.replaceInput.inputElement);
this.replaceInputFocusTracker = this._register(dom.trackFocus(this.replaceInput.inputElement));
this._register(this.replaceInputFocusTracker.addFocusListener(() => {
this.replaceInputBoxFocussed.set(true);
}));
this._register(this.replaceInputFocusTracker.addBlurListener(() => {
this.replaceInputBoxFocussed.set(false);
}));
}
triggerReplaceAll(): TPromise<any> {
......@@ -321,10 +329,6 @@ export class SearchWidget extends Widget {
case KeyCode.Enter:
this.submitSearch();
return;
case KeyCode.Escape:
this.onToggleReplaceButton();
this.searchInput.focus();
return;
default:
return;
}
......@@ -340,12 +344,6 @@ export class SearchWidget extends Widget {
this.setReplaceAllActionState(false);
this.replaceAllAction.searchWidget= null;
this.replaceActionBar = null;
if (this.searchInputFocusTracker) {
this.searchInputFocusTracker.dispose();
}
if (this.replaceInputFocusTracker) {
this.replaceInputFocusTracker.dispose();
}
super.dispose();
}
}
......
......@@ -10,9 +10,11 @@ export const VIEWLET_ID = 'workbench.view.search';
export const ToggleCaseSensitiveActionId = 'toggleSearchCaseSensitive';
export const ToggleWholeWordActionId = 'toggleSearchWholeWord';
export const ToggleRegexActionId = 'toggleSearchRegex';
export const CloseReplaceWidgetActionId = 'closeReplaceInFilesWidget';
export const SearchViewletVisibleKey = new RawContextKey<boolean>('searchViewletVisible', true);
export const InputBoxFocussedKey = new RawContextKey<boolean>('inputBoxFocus', false);
export const SearchInputBoxFocussedKey = new RawContextKey<boolean>('searchInputBoxFocus', false);
export const ReplaceInputBoxFocussedKey = new RawContextKey<boolean>('replaceInputBoxFocus', false);
export const ReplaceActiveKey= new RawContextKey<boolean>('replaceActive', false);
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册