diff options
-rw-r--r-- | include/vcl/lazydelete.hxx | 18 | ||||
-rw-r--r-- | vcl/source/helper/lazydelete.cxx | 4 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 4 |
3 files changed, 13 insertions, 13 deletions
diff --git a/include/vcl/lazydelete.hxx b/include/vcl/lazydelete.hxx index ccefc6285b56..2b746a8bcbce 100644 --- a/include/vcl/lazydelete.hxx +++ b/include/vcl/lazydelete.hxx @@ -22,6 +22,7 @@ #include <vcl/dllapi.h> #include <vcl/vclptr.hxx> +#include <vcl/window.hxx> #include <unordered_map> #include <vector> @@ -95,14 +96,13 @@ namespace vcl virtual ~LazyDeletorBase(); }; - template < typename T > class VCL_DLLPUBLIC LazyDeletor : public LazyDeletorBase { - static LazyDeletor< T >* s_pOneInstance; + static LazyDeletor* s_pOneInstance; struct DeleteObjectEntry { - VclPtr<T> m_pObject; + VclPtr<vcl::Window> m_pObject; bool m_bDeleted; DeleteObjectEntry() : @@ -110,7 +110,7 @@ namespace vcl m_bDeleted( false ) {} - DeleteObjectEntry( T* i_pObject ) : + DeleteObjectEntry( vcl::Window* i_pObject ) : m_pObject( i_pObject ), m_bDeleted( false ) {} @@ -123,7 +123,7 @@ namespace vcl /** strict weak ordering function to bring objects to be destroyed lazily in correct order, e.g. for Window objects children before parents */ - static bool is_less( T* left, T* right ); + static bool is_less( vcl::Window* left, vcl::Window* right ); LazyDeletor() { LazyDelete::addDeletor( this ); } virtual ~LazyDeletor() @@ -137,7 +137,7 @@ namespace vcl // do the actual work unsigned int nCount = m_aObjects.size(); - std::vector< VclPtr < T > > aRealDelete; + std::vector< VclPtr < vcl::Window > > aRealDelete; aRealDelete.reserve( nCount ); for( unsigned int i = 0; i < nCount; i++ ) { @@ -167,10 +167,10 @@ namespace vcl public: /** mark an object for lazy deletion */ - static void Delete( T* i_pObject ) + static void Delete( vcl::Window* i_pObject ) { if( s_pOneInstance == NULL ) - s_pOneInstance = new LazyDeletor<T>(); + s_pOneInstance = new LazyDeletor(); // is this object already in the list ? // if so mark it as not to be deleted; else insert it @@ -187,7 +187,7 @@ namespace vcl } /** unmark an object already marked for lazy deletion */ - static void Undelete( T* i_pObject ) + static void Undelete( vcl::Window* i_pObject ) { if( s_pOneInstance ) { diff --git a/vcl/source/helper/lazydelete.cxx b/vcl/source/helper/lazydelete.cxx index 2594ad47c22a..3b79b5f87565 100644 --- a/vcl/source/helper/lazydelete.cxx +++ b/vcl/source/helper/lazydelete.cxx @@ -33,7 +33,7 @@ LazyDeletorBase::~LazyDeletorBase() } // instantiate instance pointer for LazyDeletor<Window> -template<> LazyDeletor<vcl::Window>* LazyDeletor<vcl::Window>::s_pOneInstance = NULL; +LazyDeletor* LazyDeletor::s_pOneInstance = NULL; // a list for all LazyeDeletor<T> singletons static std::vector< LazyDeletorBase* > lcl_aDeletors; @@ -54,7 +54,7 @@ void LazyDelete::flush() } // specialized is_less function for Window -template<> bool LazyDeletor<vcl::Window>::is_less( vcl::Window* left, vcl::Window* right ) +bool LazyDeletor::is_less( vcl::Window* left, vcl::Window* right ) { return left != right && right->IsChild( left, true ); } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 1b95b9a98749..4a589c38e1ce 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -578,7 +578,7 @@ void Window::dispose() Window::~Window() { // FIXME: we should kill all LazyDeletor usage. - vcl::LazyDeletor<vcl::Window>::Undelete( this ); + vcl::LazyDeletor::Undelete( this ); disposeOnce(); } @@ -1892,7 +1892,7 @@ void Window::doLazyDelete() Show( false ); SetParent( ImplGetDefaultWindow() ); } - vcl::LazyDeletor<vcl::Window>::Delete( this ); + vcl::LazyDeletor::Delete( this ); } KeyIndicatorState Window::GetIndicatorState() const |