[haiku-commits] haiku: hrev54450 - src/apps/text_search

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 21 Jul 2020 21:34:57 -0400 (EDT)

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,
 


Other related posts:

  • » [haiku-commits] haiku: hrev54450 - src/apps/text_search - waddlesplash