Selaa lähdekoodia

[bugfix][Refs #25] fix last collapsed item select first child

B Thibault 9 vuotta sitten
vanhempi
commit
ada68622a5
2 muutettua tiedostoa jossa 8 lisäystä ja 7 poistoa
  1. 1 1
      src/curseSimpleOutput.cpp
  2. 7 6
      src/curseSplitOutput.cpp

+ 1 - 1
src/curseSimpleOutput.cpp

@@ -62,7 +62,7 @@ bool CurseSimpleOutput::redraw()
     if (!select_down)
     {
         const JSonContainer *pselect = dynamic_cast<const JSonContainer*>(selection);
-        if (pselect && !pselect->empty())
+        if (pselect && !pselect->empty() && collapsed.find(pselect) == collapsed.cend())
             select_down = *(pselect->cbegin());
         else
         {

+ 7 - 6
src/curseSplitOutput.cpp

@@ -401,7 +401,7 @@ const Optional<bool> CurseSplitOutput::redrawOneItemToWorkingWin(t_subWindow &w,
         if (!w.select_down)
         {
             const JSonContainer *pselect = dynamic_cast<const JSonContainer*>(w.selection);
-            if (pselect && !pselect->empty())
+            if (pselect && !pselect->empty() && collapsed.find(pselect) == collapsed.cend())
                 w.select_down = *(pselect->cbegin());
             else
             {
@@ -436,6 +436,7 @@ bool CurseSplitOutput::redraw()
     }
     while (writingDone)
     {
+        // Display Gap (--)
         bool restart = false;
         workingWin = 0;
         for (t_subWindow &w : subWindows)
@@ -461,21 +462,21 @@ bool CurseSplitOutput::redraw()
 
                 const unsigned int diffY = w.cursor.second - startY;
                 unsigned int i = 0;
+
                 for (t_subWindow &wi: subWindows)
                     if (i++ != workingWin)
-                    {
-                        unsigned int j = diffY;
                         for (unsigned int j = 0; j < diffY; ++j)
-                            displayDiffOp(wi.innerWin, wi.cursor.second +j, eLevenshteinOperator::rem);
-                        wi.cursor.second += diffY;
-                    }
+                            displayDiffOp(wi.innerWin, (wi.cursor.second)++, eLevenshteinOperator::rem);
                 restart = true;
+
                 break;
             }
             ++workingWin;
         }
         if (restart)
             continue;
+
+        // Actual display
         workingWin = 0;
         for (t_subWindow &w : subWindows)
         {