diff --git a/qad/widgets/session_manager.cpp b/qad/widgets/session_manager.cpp index 56a761b..ebc99d3 100644 --- a/qad/widgets/session_manager.cpp +++ b/qad/widgets/session_manager.cpp @@ -13,6 +13,16 @@ void SessionManager::setFile(const QString & file) { } +void SessionManager::removeMainWidget(QWidget * e) { + for (int i = 0; i < widgets.size(); ++i) { + if (widgets[i].first == e->objectName()) { + widgets.remove(i); + --i; + } + } +} + + void SessionManager::save() { if (file_.isEmpty()) return; QPIConfig sr(file_); diff --git a/qad/widgets/session_manager.h b/qad/widgets/session_manager.h index f851dfa..0b702ee 100644 --- a/qad/widgets/session_manager.h +++ b/qad/widgets/session_manager.h @@ -36,6 +36,7 @@ public: void addEntry(QAbstractButton * e) {buttons.push_back(QPair(e->objectName(), e));} void addEntry(QStackedWidget * e) {stacks.push_back(QPair(e->objectName(), e));} void addMainWidget(QWidget * e) {widgets.push_back(QPair(e->objectName(), e));} + void removeMainWidget(QWidget * e); void addEntry(const QString & name, QMainWindow * e) {mwindows.push_back(QPair(name, e));} void addEntry(const QString & name, QCheckBox * e) {checks.push_back(QPair(name, e));} diff --git a/qglview/qglview.cpp b/qglview/qglview.cpp index 8e48aa4..543fac5 100644 --- a/qglview/qglview.cpp +++ b/qglview/qglview.cpp @@ -171,6 +171,7 @@ void QGLView::drawBackground(QPainter * painter, const QRectF & rect) { painter_ = painter; painter_->beginNativePainting(); if (is_first_draw) { + //connect(context(), SIGNAL(aboutToBeDestroyed()), this, SLOT(glCleanup())); resizeGL(viewport()->width(), viewport()->height()); initializeGL(); } @@ -731,3 +732,13 @@ bool QGLView::setupViewport() { setViewport(_w); return true; } + + +void QGLView::glCleanup() { + //qDebug() << "cleanup"; + /*disconnect(context(), SIGNAL(aboutToBeDestroyed()), this, SLOT(glCleanup())); + is_first_draw = true; + textures_manager = GLTextureManager(); + currentQGLView = 0; + currentGLTextureManager = 0;*/ +} diff --git a/qglview/qglview.h b/qglview/qglview.h index 1c2f388..f29f9d9 100644 --- a/qglview/qglview.h +++ b/qglview/qglview.h @@ -307,6 +307,7 @@ public slots: void reloadShaders() {if (renderer_ != 0) renderer_->reloadShaders(); reloadThisShaders();} void deselect() {sel_obj = 0;} + void glCleanup(); signals: void glBeforePaint();