diff options
| -rw-r--r-- | src/modules/term/TermWidget.cpp | 13 | ||||
| -rw-r--r-- | src/modules/term/TermWindow.cpp | 12 | ||||
| -rw-r--r-- | src/modules/term/libkviterm.cpp | 26 |
3 files changed, 22 insertions, 29 deletions
diff --git a/src/modules/term/TermWidget.cpp b/src/modules/term/TermWidget.cpp index 60efec2e6..dfa1ac462 100644 --- a/src/modules/term/TermWidget.cpp +++ b/src/modules/term/TermWidget.cpp @@ -29,7 +29,6 @@ #include "KviMainWindow.h" #include "KviIconManager.h" #include "KviLocale.h" -#include "KviPointerList.h" #include <QLabel> #include <QToolTip> @@ -42,16 +41,18 @@ #include "kparts/factory.h" #include <kde_terminal_interface.h> +#include <unordered_set> + extern KviModule * g_pTermModule; -extern KviPointerList<TermWidget> * g_pTermWidgetList; -extern KviPointerList<TermWindow> * g_pTermWindowList; +extern std::unordered_set<TermWidget *> g_pTermWidgetList; +extern std::unordered_set<TermWindow *> g_pTermWindowList; TermWidget::TermWidget(QWidget * par, bool bIsStandalone) : QFrame(par) { setObjectName("term_widget"); if(bIsStandalone) - g_pTermWidgetList->append(this); + g_pTermWidgetList.insert(this); m_bIsStandalone = bIsStandalone; m_pKonsolePart = 0; @@ -112,8 +113,8 @@ TermWidget::~TermWidget() disconnect(m_pKonsoleWidget, SIGNAL(destroyed()), this, SLOT(konsoleDestroyed())); if(m_bIsStandalone) - g_pTermWidgetList->removeRef(this); - if(g_pTermWindowList->isEmpty() && g_pTermWidgetList->isEmpty()) + g_pTermWidgetList.erase(this); + if(g_pTermWindowList.erase() && g_pTermWidgetList.empty()) g_pTermModule->unlock(); } diff --git a/src/modules/term/TermWindow.cpp b/src/modules/term/TermWindow.cpp index 18d4416e6..93f17852d 100644 --- a/src/modules/term/TermWindow.cpp +++ b/src/modules/term/TermWindow.cpp @@ -31,23 +31,25 @@ #include "KviLocale.h" #include "KviModule.h" +#include <unordered_set> + extern KviModule * g_pTermModule; -extern KviPointerList<TermWindow> * g_pTermWindowList; -extern KviPointerList<TermWidget> * g_pTermWidgetList; +extern std::unordered_set<TermWindow *> g_pTermWindowList; +extern std::unordered_set<TermWidget *> g_pTermWidgetList; extern KviIconManager * g_pIconManager; TermWindow::TermWindow(const char * name) : KviWindow(KviWindow::Terminal, name) { - g_pTermWindowList->append(this); + g_pTermWindowList.insert(this); m_pTermWidget = 0; m_pTermWidget = new TermWidget(this); } TermWindow::~TermWindow() { - g_pTermWindowList->removeRef(this); - if(g_pTermWindowList->isEmpty() && g_pTermWidgetList->isEmpty()) + g_pTermWindowList.erase(this); + if(g_pTermWindowList.empty() && g_pTermWidgetList.empty()) g_pTermModule->unlock(); } diff --git a/src/modules/term/libkviterm.cpp b/src/modules/term/libkviterm.cpp index d17ec09ea..479823062 100644 --- a/src/modules/term/libkviterm.cpp +++ b/src/modules/term/libkviterm.cpp @@ -26,7 +26,6 @@ #include "KviModule.h" #include "KviWindow.h" #include "KviMainWindow.h" -#include "KviPointerList.h" #include <QSplitter> @@ -34,8 +33,10 @@ #include "TermWidget.h" #include "TermWindow.h" -KviPointerList<TermWidget> * g_pTermWidgetList = 0; -KviPointerList<TermWindow> * g_pTermWindowList = 0; +#include <unordered_set> + +std::unordered_set<TermWidget *> g_pTermWidgetList; +std::unordered_set<TermWindow *> g_pTermWindowList; #endif KviModule * g_pTermModule = nullptr; @@ -89,13 +90,6 @@ static bool term_module_init(KviModule * m) { g_pTermModule = m; -#ifdef COMPILE_KDE4_SUPPORT - g_pTermWidgetList = new KviPointerList<TermWidget>; - g_pTermWidgetList->setAutoDelete(false); - g_pTermWindowList = new KviPointerList<TermWindow>; - g_pTermWindowList->setAutoDelete(false); -#endif - KVSM_REGISTER_SIMPLE_COMMAND(m, "open", term_kvs_cmd_open); return true; } @@ -103,14 +97,10 @@ static bool term_module_init(KviModule * m) static bool term_module_cleanup(KviModule *) { #ifdef COMPILE_KDE4_SUPPORT - while(g_pTermWidgetList->first()) - delete g_pTermWidgetList->first(); - delete g_pTermWidgetList; - g_pTermWidgetList = 0; - while(g_pTermWindowList->first()) - g_pTermWindowList->first()->close(); - delete g_pTermWindowList; - g_pTermWindowList = 0; + for(auto & t : g_pTermWidgetList) + delete t; + for(auto & t : g_pTermWindowList) + t->close(); #endif return true; } |
