Browse Source

[add][minor] unfold search result's parent (if collapsed)

isundil 9 years ago
parent
commit
6fbd03fcdb
2 changed files with 15 additions and 3 deletions
  1. 5 0
      include/curseOutput.hh
  2. 10 3
      src/curseOutput.cpp

+ 5 - 0
include/curseOutput.hh

@@ -54,6 +54,11 @@ class CurseOutput
         const std::string search();
         void writeBottomLine(const std::string &currentBuffer, short color) const;
 
+        /**
+         * unfold all item's parents
+        **/
+        void unfold(const JSonElement *);
+
         std::set<const JSonContainer *> collapsed;
 
         const JSonElement *data, *selection;

+ 10 - 3
src/curseOutput.cpp

@@ -610,13 +610,20 @@ bool CurseOutput::jumpToNextSearch(bool scanParent, bool redraw, const JSonEleme
         this->redraw("Pattern not found");
         return false;
     }
-    //TODO if parents are collapsed:
-    // - unfold all parents ?
-    // - select closest-to-root folded parent ?
+    unfold(selection);
     this->redraw();
     return true;
 }
 
+void CurseOutput::unfold(const JSonElement *item)
+{
+    while (item->getParent())
+    {
+        collapsed.erase((const JSonContainer*)item->getParent());
+        item = item->getParent();
+    }
+}
+
 const std::string CurseOutput::search()
 {
     std::string buffer;