From f42a8b86c208adf808af6ae841ee64ff7b5cd5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Tue, 11 Sep 2018 11:32:58 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@422 a8b55f48-bf90-11e4-a774-851b48703e85 --- qad/widgets/session_manager.cpp | 10 ++++++++++ qad/widgets/session_manager.h | 1 + qglview/qglview.cpp | 11 +++++++++++ qglview/qglview.h | 1 + 4 files changed, 23 insertions(+) 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();