hrev54450 adds 1 changeset to branch 'master'
old head: 5b80a2fa0dfb726ec1b9488fb7ef5ac075d0062f
new head: 2775737e9d73769f19c02de8dd713840d1edb9f2
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=2775737e9d73+%5E5b80a2fa0dfb
----------------------------------------------------------------------------
2775737e9d73: TextSearch: add option to set target to parent directory
Two usage scenarios:
* Wrong directory selected when invoking as Tracker add-on.
I often find myself having TextSearch invoked on selected child,
when I wanted it to open in parent context.
* Result was not found in target directory, so maybe the search
should be broader.
Change-Id: I2621f3cec7459572ddae438de4ba42ce74432e28
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3044
Reviewed-by: humdinger <humdingerb@xxxxxxxxx>
[ Kacper Kasper <kacperkasper@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev54450
Commit: 2775737e9d73769f19c02de8dd713840d1edb9f2
URL: https://git.haiku-os.org/haiku/commit/?id=2775737e9d73
Author: Kacper Kasper <kacperkasper@xxxxxxxxx>
Date: Sun Jul 19 17:29:40 2020 UTC
Committer: waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Wed Jul 22 01:34:52 2020 UTC
----------------------------------------------------------------------------
3 files changed, 41 insertions(+)
src/apps/text_search/GrepWindow.cpp | 37 +++++++++++++++++++++++++++++++++
src/apps/text_search/GrepWindow.h | 3 +++
src/apps/text_search/Model.h | 1 +
----------------------------------------------------------------------------
diff --git a/src/apps/text_search/GrepWindow.cpp
b/src/apps/text_search/GrepWindow.cpp
index faa0ed2797..8db213cfa5 100644
--- a/src/apps/text_search/GrepWindow.cpp
+++ b/src/apps/text_search/GrepWindow.cpp
@@ -127,6 +127,7 @@ GrepWindow::GrepWindow(BMessage* message)
_SetWindowTitle();
_CreateMenus();
+ _UpdateMenus();
_CreateViews();
_LayoutViews();
_LoadPrefs();
@@ -194,6 +195,10 @@ void GrepWindow::MessageReceived(BMessage* message)
_OnRefsReceived(message);
break;
+ case MSG_SET_TARGET_TO_PARENT:
+ _OnSetTargetToParent();
+ break;
+
case B_CANCEL:
_OnOpenPanelCancel();
break;
@@ -417,6 +422,10 @@ GrepWindow::_CreateMenus()
fOpen = new BMenuItem(
B_TRANSLATE("Set target" B_UTF8_ELLIPSIS), new
BMessage(MSG_OPEN_PANEL), 'F');
+ fSetTargetToParent = new BMenuItem(
+ B_TRANSLATE("Set target to parent folder"),
+ new BMessage(MSG_SET_TARGET_TO_PARENT), B_UP_ARROW);
+
fClose = new BMenuItem(
B_TRANSLATE("Close"), new BMessage(B_QUIT_REQUESTED), 'W');
@@ -473,6 +482,7 @@ GrepWindow::_CreateMenus()
fFileMenu->AddItem(fNew);
fFileMenu->AddSeparatorItem();
fFileMenu->AddItem(fOpen);
+ fFileMenu->AddItem(fSetTargetToParent);
fFileMenu->AddItem(fClose);
fFileMenu->AddSeparatorItem();
fFileMenu->AddItem(fQuit);
@@ -514,6 +524,15 @@ GrepWindow::_CreateMenus()
}
+void
+GrepWindow::_UpdateMenus()
+{
+ bool targetIsSingleDirectory =
+ BEntry(&(fModel->fDirectory)).InitCheck() == B_OK;
+ fSetTargetToParent->SetEnabled(targetIsSingleDirectory);
+}
+
+
void
GrepWindow::_CreateViews()
{
@@ -1431,6 +1450,7 @@ GrepWindow::_OnFileDrop(BMessage* message)
fSearchResults->MakeEmpty();
fOldPattern = "";
+ _UpdateMenus();
_SetWindowTitle();
}
@@ -1504,6 +1524,23 @@ GrepWindow::_OnNewWindow()
}
+void
+GrepWindow::_OnSetTargetToParent()
+{
+ BEntry entry(&(fModel->fDirectory));
+ BEntry parent;
+
+ if (entry.GetParent(&parent) == B_OK) {
+ entry_ref parent_ref;
+ parent.GetRef(&parent_ref);
+
+ BMessage parentRefs;
+ parentRefs.AddRef("dir_ref", &parent_ref);
+ _OnFileDrop(&parentRefs);
+ }
+}
+
+
// #pragma mark -
diff --git a/src/apps/text_search/GrepWindow.h
b/src/apps/text_search/GrepWindow.h
index 1b99f0ab57..9b716f6784 100644
--- a/src/apps/text_search/GrepWindow.h
+++ b/src/apps/text_search/GrepWindow.h
@@ -34,6 +34,7 @@ private:
BMessage* message);
void _SetWindowTitle();
void _CreateMenus();
+ void _UpdateMenus();
void _CreateViews();
void _LayoutViews();
void
_TileIfMultipleWindows();
@@ -72,6 +73,7 @@ private:
void _OnOpenPanelCancel();
void _OnSelectAll(BMessage*
message);
void _OnNewWindow();
+ void _OnSetTargetToParent();
void _ModelChanged();
bool _OpenInEditor(const
entry_ref& ref, int32 lineNum);
@@ -89,6 +91,7 @@ private:
BMenu* fFileMenu;
BMenuItem* fNew;
BMenuItem* fOpen;
+ BMenuItem* fSetTargetToParent;
BMenuItem* fClose;
BMenuItem* fQuit;
BMenu* fActionMenu;
diff --git a/src/apps/text_search/Model.h b/src/apps/text_search/Model.h
index ccb7c28b13..95a07e4b8e 100644
--- a/src/apps/text_search/Model.h
+++ b/src/apps/text_search/Model.h
@@ -41,6 +41,7 @@ enum {
MSG_NEW_WINDOW,
MSG_OPEN_PANEL,
MSG_REFS_RECEIVED,
+ MSG_SET_TARGET_TO_PARENT,
MSG_TRY_QUIT,
MSG_QUIT_NOW,