Browse Source

Ensure that temporarily expanded elements are closed in case tree elements change

Marko Pintera 12 years ago
parent
commit
5f765a34df

+ 3 - 0
CamelotClient/Include/BsGUISceneTreeView.h

@@ -162,7 +162,10 @@ namespace BansheeEditor
 		void selectElement(TreeElement* element);
 		void unselectElement(TreeElement* element);
 		void unselectAll();
+		
+		void deleteTreeElement(TreeElement* element);
 
+		void closeTemporarilyExpandedElements();
 		void temporarilyExpandElement(const GUISceneTreeView::InteractableElement* mouseOverElement);
 		void scrollToElement(TreeElement* element, bool center);
 

+ 16 - 4
CamelotClient/Source/BsGUISceneTreeView.cpp

@@ -272,10 +272,7 @@ namespace BansheeEditor
 						if(!mTempToDelete[i])
 							continue;
 
-						if(current->mChildren[i]->mIsSelected)
-							unselectElement(current->mChildren[i]);
-
-						cm_delete(current->mChildren[i]);
+						deleteTreeElement(current->mChildren[i]);
 					}
 
 					current->mChildren = newChildren;
@@ -791,6 +788,16 @@ namespace BansheeEditor
 			element->mElement->disableRecursively();
 	}
 
+	void GUISceneTreeView::deleteTreeElement(TreeElement* element)
+	{
+		closeTemporarilyExpandedElements(); // In case this element is one of them
+
+		if(element->mIsSelected)
+			unselectElement(element);
+
+		cm_delete(element);
+	}
+
 	void GUISceneTreeView::disableEdit(bool applyChanges)
 	{
 		assert(mEditElement != nullptr);
@@ -1177,6 +1184,11 @@ namespace BansheeEditor
 			return nullptr;
 	}
 
+	void GUISceneTreeView::closeTemporarilyExpandedElements()
+	{
+		temporarilyExpandElement(nullptr);
+	}
+
 	void GUISceneTreeView::temporarilyExpandElement(const GUISceneTreeView::InteractableElement* mouseOverElement)
 	{
 		TreeElement* treeElement = nullptr;

+ 0 - 1
TreeView.txt

@@ -1,7 +1,6 @@
 TODO:
  - Callback on tree item select
  - when update() deletes elements it won't remove them from mAutoExpandedElements or mMouseOverDragElement.
- - When I select elements in tree view via arrow keys, make sure to automatically scroll the scroll-area so that element becomes visible
  - Context menu with rename/copy/paste/duplicate
  - Delete with Undo/Redo support
  - Support for icons next to tree elements