diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index 8560bc22d865f54f313b1a83f21569c8c26fea93..eee7db129bcdf180b31d68d70346de2e1b93af76 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -943,6 +943,10 @@ void onelabWindow::rebuildTree()
 
   int width = (int)(0.5 * _tree->w());
 
+  std::vector<std::string> closed;
+  for (Fl_Tree_Item *n = _tree->first(); n; n = n->next())
+    if(n->is_close()) closed.push_back(getPath(n));
+
   _tree->clear();
   _tree->sortorder(FL_TREE_SORT_ASCENDING);
   _tree->selectmode(FL_TREE_SELECT_NONE);
@@ -1046,6 +1050,9 @@ void onelabWindow::rebuildTree()
     }
   }
 
+  for(unsigned int i = 0; i < closed.size(); i++)
+    _tree->close(closed[i].c_str());
+
   _tree->redraw();
 
   FL_NORMAL_SIZE += _deltaFontSize;