Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 2532)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 2533)
@@ -134,12 +134,6 @@
 	 */
 	public CA(LexicalTable lexicalTable) {
 		this(null, lexicalTable);
-		
-		// FIXME: SJ: the CA must not create its own Eigenvalues bar chart. All must be done on the UI-side.
-		// Eigenvalues eigenvalues = (Eigenvalues) this.getFirstChild(Eigenvalues.class);
-		// if (eigenvalues == null) {
-		// eigenvalues = new Eigenvalues(this);
-		// }
 	}
 	
 	/**
@@ -1051,17 +1045,17 @@
 		return (LexicalTable) this.parent;
 	}
 	
-	// FIXME: SJ: fix to save the eigenvalues when the CA is saved
-	// FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
-	@Override
-	public void setUserPersistable(boolean userPersistable) {
-		super.setUserPersistable(userPersistable); // can not call super method, lead to infinite loop
-		
-		// deep persistence
-		for (TXMResult child : getChildren()) {
-			child.setUserPersistable(userPersistable);
-		}
-	}
+	// // FIXME: SJ: fix to save the eigenvalues when the CA is saved
+	// // FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
+	// @Override
+	// public void setUserPersistable(boolean userPersistable) {
+	// super.setUserPersistable(userPersistable); // can not call super method, lead to infinite loop
+	//
+	// // deep persistence
+	// for (TXMResult child : getChildren()) {
+	// child.setUserPersistable(userPersistable);
+	// }
+	// }
 	
 	
 }
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 2532)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 2533)
@@ -118,24 +118,24 @@
 	}
 	
 	
-	// FIXME: SJ: fix to save the eigenvalues when the CA is saved
-	// FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
-	@Override
-	public void setUserPersistable(boolean userPersistable) {
-		this.userPersistable = userPersistable;
-		
-		// directly save and flush the preference
-		try {
-			if (this.isUserPersistable()) {
-				this.autoSaveParametersFromAnnotations();
-				this.saveParameters();
-				TXMPreferences.flush(this);
-			}
-		}
-		catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-	}
+	// // FIXME: SJ: fix to save the eigenvalues when the CA is saved
+	// // FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
+	// @Override
+	// public void setUserPersistable(boolean userPersistable) {
+	// this.userPersistable = userPersistable;
+	//
+	// // directly save and flush the preference
+	// try {
+	// if (this.isUserPersistable()) {
+	// this.autoSaveParametersFromAnnotations();
+	// this.saveParameters();
+	// TXMPreferences.flush(this);
+	// }
+	// }
+	// catch (Exception e) {
+	// // TODO Auto-generated catch block
+	// e.printStackTrace();
+	// }
+	// }
 	
 }
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/SetTXMResultPersistentState.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/SetTXMResultPersistentState.java	(revision 2532)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/SetTXMResultPersistentState.java	(revision 2533)
@@ -33,64 +33,65 @@
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.ui.commands.IElementUpdater;
 import org.eclipse.ui.menus.UIElement;
-import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.TXMResult;
 import org.txm.rcp.handlers.BaseAbstractHandler;
 import org.txm.rcp.views.corpora.CorporaView;
 
 /**
- * Swaps the persistence state of the selected TXM result nodes.
+ * Swaps the persistence state of the selected TXM result node.
  * 
  * @author sjacquot
  * 
  */
 public class SetTXMResultPersistentState extends BaseAbstractHandler implements IElementUpdater {
-
-
+	
+	
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
-
+		
 		// FIXME: multiple selection
-		// FIXME: how to manage the checkbox state? 
-//		List objects = this.getCorporaViewSelectedObjects(event);
-//		if(objects != null)	{
-//			for (int i = 0; i < objects.size(); i++) {
-//				if(objects.get(i) instanceof TXMResult)	{
-//					((TXMResult)objects.get(i)).swapPersistableState();
-//				}
-//			}
-//			//CorporaView.refresh();
-//			return null;
-//		}
-//		else	{
-//			return super.logCanNotExecuteCommand(objects);
-//		}
+		// FIXME: how to manage the checkbox state?
+		// List objects = this.getCorporaViewSelectedObjects(event);
+		// if(objects != null) {
+		// for (int i = 0; i < objects.size(); i++) {
+		// if(objects.get(i) instanceof TXMResult) {
+		// ((TXMResult)objects.get(i)).swapPersistableState();
+		// }
+		// }
+		// //CorporaView.refresh();
+		// return null;
+		// }
+		// else {
+		// return super.logCanNotExecuteCommand(objects);
+		// }
 		
 		// FIXME: single selection
 		Object object = this.getCorporaViewSelectedObject(event);
-		if(object instanceof TXMResult)	{
-			TXMResult result = ((TXMResult)object);
+		if (object instanceof TXMResult) {
+			
+			TXMResult result = ((TXMResult) object);
 			result.swapUserPersistableState();
 			
 			CorporaView.refreshObject(result);
-			//CorporaView.refresh();
+			
 			return null;
 		}
-		else	{
+		else {
 			return super.logCanNotExecuteCommand(object);
 		}
-
+		
 	}
-
+	
+	// FIXME: SJ: became useless?
 	/**
 	 * Display the checked mark in the menu item when the menu is created
 	 */
 	@Override
 	public void updateElement(UIElement element, Map parameters) {
 		Object object = CorporaView.getFirstSelectedObject();
-		//element.
-		if(object != null && object instanceof TXMResult)	{
-			element.setChecked(((TXMResult)object).isUserPersistable());
+		// element.
+		if (object != null && object instanceof TXMResult) {
+			element.setChecked(((TXMResult) object).isUserPersistable());
 		}
 	}
 }
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java	(revision 2532)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java	(revision 2533)
@@ -615,16 +615,9 @@
 			@Override
 			public void run() {
 				
-				// FIXME: Debug
-				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): refreshing node " + result);
-				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): direct parent " + result.getParent());
-				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): path " + result.getFullPathSimpleName());
-				
 				CorporaView corporaView = getInstance();
-				corporaView.treeViewer.refresh(); // FIXME: without that the refresh sometimes doesn't work, need to investigate (after some test it may occurs when a hierarchy of more than one result
-													 // is created. Need to refresh all the hierarchy result one by one?)
 				
-				corporaView.treeViewer.refresh(result);
+				corporaView.treeViewer.refresh();
 				
 				try {
 					CorporaView.expand(result.getParent());
Index: tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 2532)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 2533)
@@ -2758,25 +2758,35 @@
 	/**
 	 * Sets the user defined persistable state of the result.
 	 * 
+	 * When making a result persistent, since a result is always created from its parent(s) and need them to be reconstructed, the state of all the parents in the branch will be set as persistent.
+	 * When making a result non persistent, its children will not be able to be reconstructed, so they are recursively set as non persistent.
+	 * Also, since some kind of TXM shortcut commands create some hidden results (e.g. Specificities on Partition that creates an hidden Lexical Table),
+	 * when making a result non persistent, all its parents that are hidden in the branch are set as non persistent (otherwise they wouldn't be deleted).
+	 * 
+	 * This method also flushes the result parameter node and so saves the persistence file.
+	 * 
 	 * @param userPersistable the state to set
 	 */
-	public void setUserPersistable(boolean userPersistable) {
+	protected void setUserPersistable(boolean userPersistable, boolean deep) {
 		this.userPersistable = userPersistable;
 		
 		// 1- MANAGE THE PARENTS
-		// force persistable state of the parent if this result is set to persistable
+		// recursively force the persistable state of the parents if this result is set to persistable
 		if (userPersistable && this.parent != null && !this.parent.isInternalPersistable()) {
-			this.parent.setUserPersistable(true);
-		} // un persist parent if it is not visible (internal persistable parent is always visible)
-		else if (!userPersistable && !parent.isVisible()) {
-			this.parent.setUserPersistable(false);
+			this.parent.setUserPersistable(true, false);
 		}
-		
+		// recursively unpersist hidden parents
+		else if (!userPersistable && !this.parent.isVisible()) {
+			this.parent.setUserPersistable(false, false);
+		}
 		// 2- MANAGE THE CHILDREN
-		// force non-persistable state of children if this result is set to non-persistable
-		if (!userPersistable) {
-			for (TXMResult child : getChildren()) {
-				child.setUserPersistable(userPersistable);
+		// recursively force non-persistable state of children if this result is set to non-persistable
+		// also transfer this result state to its children marked as "must be synchronized with parent"
+		if (deep) {
+			for (TXMResult child : this.getChildren()) {
+				if (!userPersistable || child.mustBeSynchronizedWithParent()) {
+					child.setUserPersistable(userPersistable);
+				}
 			}
 		}
 		
@@ -2794,6 +2804,15 @@
 	}
 	
 	/**
+	 * Sets the user defined persistable state of the result and its children.
+	 * 
+	 * @param userPersistable
+	 */
+	public void setUserPersistable(boolean userPersistable) {
+		this.setUserPersistable(userPersistable, true);
+	}
+	
+	/**
 	 * Swaps the user persistable state.
 	 * 
 	 * propagate persistence to parent if necessary
