From 574d24e5e3c62eca839349cd7c9a9050bd343b72 Mon Sep 17 00:00:00 2001 From: dfighter1985 Date: Wed, 24 Sep 2014 16:20:25 +0200 Subject: [PATCH] Dragged elements will no longer disappear. --- code/nel/include/nel/gui/widget_manager.h | 3 ++- code/nel/src/gui/widget_manager.cpp | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/code/nel/include/nel/gui/widget_manager.h b/code/nel/include/nel/gui/widget_manager.h index 5d2468e7a..ccf561d45 100644 --- a/code/nel/include/nel/gui/widget_manager.h +++ b/code/nel/include/nel/gui/widget_manager.h @@ -532,7 +532,8 @@ namespace NLGUI NLMISC::CRefPtr< CViewBase > _CapturedView; - NLMISC::CRefPtr< CInterfaceElement > draggedElement; + NLMISC::CRefPtr< CInterfaceElement > draggedElement; // the element that we're currently dragging + std::vector< NLMISC::CRefPtr< CInterfaceElement > > _OrphanElements; // elements that were dragged out of their parents bool startDragging(); void stopDragging(); diff --git a/code/nel/src/gui/widget_manager.cpp b/code/nel/src/gui/widget_manager.cpp index e3f1064fa..c985557c5 100644 --- a/code/nel/src/gui/widget_manager.cpp +++ b/code/nel/src/gui/widget_manager.cpp @@ -1036,6 +1036,8 @@ namespace NLGUI setCapturePointerLeft(NULL); setCapturePointerRight(NULL); _CapturedView = NULL; + + _OrphanElements.clear(); resetColorProps(); resetAlphaRolloverSpeedProps(); @@ -2039,6 +2041,15 @@ namespace NLGUI } } + std::vector< NLMISC::CRefPtr< CInterfaceElement > >::iterator oeitr = _OrphanElements.begin(); + while( oeitr != _OrphanElements.end() ) + { + CInterfaceElement *e = *oeitr; + CViewBase *v = dynamic_cast< CViewBase* >( e ); + v->draw(); + ++oeitr; + } + if( draggedElement != NULL ) { CInterfaceElement *e = draggedElement; @@ -2657,7 +2668,11 @@ namespace NLGUI void CWidgetManager::stopDragging() { - draggedElement = NULL; + if( draggedElement != NULL ) + { + _OrphanElements.push_back( draggedElement ); + draggedElement = NULL; + } } // ------------------------------------------------------------------------------------------------ @@ -3454,6 +3469,8 @@ namespace NLGUI CWidgetManager::~CWidgetManager() { + _OrphanElements.clear(); + for (uint32 i = 0; i < _MasterGroups.size(); ++i) { delete _MasterGroups[i].Group;