Преглед на файлове

Properly clear hover highlight in scene hierarchy when drag and dropping from outside the hierarchy window

BearishSun преди 9 години
родител
ревизия
2c8e749936
променени са 2 файла, в които са добавени 10 реда и са изтрити 9 реда
  1. 4 4
      Source/BansheeEditor/Include/BsGUITreeView.h
  2. 6 5
      Source/BansheeEditor/Source/BsGUITreeView.cpp

+ 4 - 4
Source/BansheeEditor/Include/BsGUITreeView.h

@@ -142,20 +142,20 @@ namespace BansheeEngine
 		void updateClippedBounds() override;
 		void updateClippedBounds() override;
 
 
 		/** @copydoc GUIElement::_updateLayoutInternal */
 		/** @copydoc GUIElement::_updateLayoutInternal */
-		virtual void _updateLayoutInternal(const GUILayoutData& data) override;
+		void _updateLayoutInternal(const GUILayoutData& data) override;
 
 
 		/** @copydoc GUIElement::_mouseEvent */
 		/** @copydoc GUIElement::_mouseEvent */
-		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
+		bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 
 		/** @copydoc GUIElement::_commandEvent */
 		/** @copydoc GUIElement::_commandEvent */
-		virtual bool _commandEvent(const GUICommandEvent& ev) override;
+		bool _commandEvent(const GUICommandEvent& ev) override;
 
 
 		/**
 		/**
 		 * Attempts to find an interactable element under the specified coordinates. Returns null if one cannot be found.
 		 * Attempts to find an interactable element under the specified coordinates. Returns null if one cannot be found.
 		 *
 		 *
 		 * @param[in]	coord	Coordinates relative to parent GUI widget.
 		 * @param[in]	coord	Coordinates relative to parent GUI widget.
 		 */
 		 */
-		const GUITreeView::InteractableElement* findElementUnderCoord(const Vector2I& coord) const;
+		const InteractableElement* findElementUnderCoord(const Vector2I& coord) const;
 
 
 		/**	Returns the top-most selected tree element if selection is active, null otherwise. */
 		/**	Returns the top-most selected tree element if selection is active, null otherwise. */
 		TreeElement* getTopMostSelectedElement() const;
 		TreeElement* getTopMostSelectedElement() const;

+ 6 - 5
Source/BansheeEditor/Source/BsGUITreeView.cpp

@@ -148,7 +148,7 @@ namespace BansheeEngine
 		// Attempt to auto-expand elements we are dragging over
 		// Attempt to auto-expand elements we are dragging over
 		if(acceptDragAndDrop())
 		if(acceptDragAndDrop())
 		{
 		{
-			const GUITreeView::InteractableElement* element = findElementUnderCoord(mDragPosition);
+			const InteractableElement* element = findElementUnderCoord(mDragPosition);
 			temporarilyExpandElement(element);
 			temporarilyExpandElement(element);
 		}
 		}
 
 
@@ -208,7 +208,7 @@ namespace BansheeEngine
 			if(DragAndDropManager::instance().isDragInProgress())
 			if(DragAndDropManager::instance().isDragInProgress())
 				return false;
 				return false;
 
 
-			const GUITreeView::InteractableElement* element = findElementUnderCoord(event.getPosition());
+			const InteractableElement* element = findElementUnderCoord(event.getPosition());
 			TreeElement* treeElement = nullptr;
 			TreeElement* treeElement = nullptr;
 
 
 			if(element != nullptr && element->isTreeElement())
 			if(element != nullptr && element->isTreeElement())
@@ -352,7 +352,7 @@ namespace BansheeEngine
 			{
 			{
 				if(dist > DRAG_MIN_DISTANCE && mEditElement == nullptr)
 				if(dist > DRAG_MIN_DISTANCE && mEditElement == nullptr)
 				{
 				{
-					const GUITreeView::InteractableElement* element = findElementUnderCoord(mDragStartPosition);
+					const InteractableElement* element = findElementUnderCoord(mDragStartPosition);
 					Vector<TreeElement*> draggedElements;
 					Vector<TreeElement*> draggedElements;
 
 
 					if(element != nullptr && element->isTreeElement())
 					if(element != nullptr && element->isTreeElement())
@@ -410,7 +410,7 @@ namespace BansheeEngine
 		{
 		{
 			if(acceptDragAndDrop())
 			if(acceptDragAndDrop())
 			{
 			{
-				const GUITreeView::InteractableElement* element = findElementUnderCoord(event.getPosition());
+				const InteractableElement* element = findElementUnderCoord(event.getPosition());
 
 
 				TreeElement* treeElement = nullptr;
 				TreeElement* treeElement = nullptr;
 				if(element != nullptr)
 				if(element != nullptr)
@@ -422,6 +422,7 @@ namespace BansheeEngine
 				}
 				}
 
 
 				dragAndDropEnded(treeElement);
 				dragAndDropEnded(treeElement);
+				mDragInProgress = false;
 				unselectAll();
 				unselectAll();
 
 
 				return true;
 				return true;
@@ -1236,7 +1237,7 @@ namespace BansheeEngine
 		temporarilyExpandElement(nullptr);
 		temporarilyExpandElement(nullptr);
 	}
 	}
 
 
-	void GUITreeView::temporarilyExpandElement(const GUITreeView::InteractableElement* mouseOverElement)
+	void GUITreeView::temporarilyExpandElement(const InteractableElement* mouseOverElement)
 	{
 	{
 		TreeElement* treeElement = nullptr;
 		TreeElement* treeElement = nullptr;
 		if(mouseOverElement != nullptr && mouseOverElement->isTreeElement())
 		if(mouseOverElement != nullptr && mouseOverElement->isTreeElement())