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);