Merge pull request #49 from Freakazo/master

Using only keyboard is now better supported for searching.
This commit is contained in:
Vadim Lopatin 2015-03-31 18:39:41 +03:00
commit 1ca5bb12d6
2 changed files with 34 additions and 10 deletions

View File

@ -631,12 +631,18 @@ class IDEFrame : AppFrame {
Log.d("Opening Search Field");
import dlangide.ui.searchPanel;
int searchPanelIndex = _logPanel.getTabs.tabIndex("search");
SearchWidget searchPanel = null;
if(searchPanelIndex == -1) {
SearchWidget searchPanel = new SearchWidget("search", this);
_logPanel.getTabs.addTab( searchPanel, "Search"d, null, true);
searchPanel = new SearchWidget("search", this);
_logPanel.getTabs.addTab( searchPanel, "Search"d, null, true);
}
else {
searchPanel = cast(SearchWidget) _logPanel.getTabs.tabBody(searchPanelIndex);
}
_logPanel.getTabs.selectTab("search");
//TODO: Focus search field
if(searchPanel !is null) {
searchPanel.focus();
}
return true;
default:
return super.handleAction(a);

View File

@ -112,7 +112,7 @@ class SearchLogWidget : LogWidget {
}
override bool onMouseEvent(MouseEvent event) {
super.onMouseEvent(event);
bool res = super.onMouseEvent(event);
if (event.action == MouseAction.ButtonDown && event.button == MouseButton.Left) {
int line = _caretPos.line;
if (searchResultClickHandler.assigned) {
@ -120,7 +120,18 @@ class SearchLogWidget : LogWidget {
return true;
}
}
return false;
return res;
}
override bool onKeyEvent(KeyEvent event) {
if (event.action == KeyAction.KeyDown && event.keyCode == KeyCode.RETURN) {
int line = _caretPos.line;
if (searchResultClickHandler.assigned) {
searchResultClickHandler(line);
return true;
}
}
return super.onKeyEvent(event);
}
}
@ -146,10 +157,17 @@ class SearchWidget : TabWidget {
protected IDEFrame _frame;
protected SearchMatchList[] _matchedList;
//Sets focus on result;
void focus() {
_findText.setFocus();
_findText.handleAction(new Action(EditorActions.SelectAll));
}
bool onFindButtonPressed(Widget source) {
dstring txt = _findText.text;
if (txt.length > 0)
findText(txt);
if (txt.length > 0) {
findText(txt);
_resultLog.setFocus();
}
return true;
}
@ -226,9 +244,9 @@ class SearchWidget : TabWidget {
switch (_searchScope.text) {
case "File":
auto currentFileItem = _frame._wsPanel.workspace.findSourceFileItem(_frame.currentEditor.filename);
if(currentFileItem !is null)
taskPool.put(task(&searchInProject, currentFileItem, source));
SearchMatchList match = findMatches(_frame.currentEditor.filename, source);
if(match.matches.length > 0)
_matchedList ~= match;
break;
case "Project":
foreach(Project project; _frame._wsPanel.workspace.projects) {