From 4235b48adfa545dd8dfa7dafe7bb99c484e72066 Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Fri, 9 Sep 2016 08:06:53 +0000 Subject: [PATCH] - the currentViewContainer function has been rewritten in order to avoid linking problems with g++/clang compiler --- src/meshlab/mainwindow.h | 16 +++++++++------- src/meshlab/multiViewer_Container.cpp | 2 +- src/meshlab/multiViewer_Container.h | 2 ++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/meshlab/mainwindow.h b/src/meshlab/mainwindow.h index a73610066..95e479744 100644 --- a/src/meshlab/mainwindow.h +++ b/src/meshlab/mainwindow.h @@ -325,13 +325,15 @@ public: } MultiViewer_Container* currentViewContainer() const { - MultiViewer_Container *mvc = dynamic_cast(mdiarea->currentSubWindow()); - if(mvc) return mvc; - if(mvc==0 && mdiarea->currentSubWindow()!=0 ){ - mvc = dynamic_cast(mdiarea->currentSubWindow()->widget()); - if(mvc) return mvc; + /* MultiViewer_Container *mvc = dynamic_cast(mdiarea->currentSubWindow()); + if(mvc) return mvc;*/ + if(mdiarea->currentSubWindow()!=0 ) + { + Splitter* split = reinterpret_cast(mdiarea->currentSubWindow()->widget()); + if (split->isMultiViewerContainer()) + return reinterpret_cast(split); } - QList subwinList=mdiarea->subWindowList(); + /*QList subwinList=mdiarea->subWindowList(); foreach(QMdiSubWindow *subwinPtr,subwinList) { MultiViewer_Container *mvc = dynamic_cast(subwinPtr); @@ -340,7 +342,7 @@ public: mvc = dynamic_cast(subwinPtr->widget()); if(mvc) return mvc; } - } + }*/ return 0; } diff --git a/src/meshlab/multiViewer_Container.cpp b/src/meshlab/multiViewer_Container.cpp index 5deb9f48c..634cb2c71 100644 --- a/src/meshlab/multiViewer_Container.cpp +++ b/src/meshlab/multiViewer_Container.cpp @@ -38,7 +38,7 @@ QSplitterHandle *Splitter::createHandle() MultiViewer_Container *Splitter::getRootContainer() { - Splitter * parentSplitter = qobject_cast(this); + Splitter * parentSplitter = this; MultiViewer_Container* mvc = qobject_cast(parentSplitter); while(!mvc) { diff --git a/src/meshlab/multiViewer_Container.h b/src/meshlab/multiViewer_Container.h index 4907528d6..49e16e996 100644 --- a/src/meshlab/multiViewer_Container.h +++ b/src/meshlab/multiViewer_Container.h @@ -49,6 +49,7 @@ public: Splitter(Qt::Orientation orientation, QWidget *parent = 0); ~Splitter() {} + virtual bool isMultiViewerContainer() const { return false; } MultiViewer_Container *getRootContainer(); protected: @@ -77,6 +78,7 @@ public: MultiViewer_Container(vcg::QtThreadSafeMemoryInfo& meminfo,bool highprec,size_t perbatchprimitives,QWidget *parent); ~MultiViewer_Container(); + bool isMultiViewerContainer() const { return true; } void addView(GLArea *viewer, Qt::Orientation); void removeView(int);