From 59692c86077801b2b4b912ee1b39358604f714c9 Mon Sep 17 00:00:00 2001 From: Antoine Regimbeau <antoine.regimbeau@c-s.fr> Date: Thu, 31 May 2018 11:02:28 +0200 Subject: [PATCH] BUG: correction of layer delete bug --- .../include/mvdStackedLayerModel.h | 2 +- .../src/mvdStackedLayerModel.cxx | 2 +- .../include/mvdLayerStackItemModel.h | 2 +- .../include/mvdLayerStackWidget.h | 5 ++- .../src/mvdLayerStackController.cxx | 7 ++-- .../src/mvdLayerStackItemModel.cxx | 21 ++---------- .../MonteverdiGui/src/mvdLayerStackWidget.cxx | 32 +++++++++++++------ 7 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h b/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h index 2d8a7d363c..d71632f878 100644 --- a/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h +++ b/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h @@ -212,7 +212,7 @@ public: // Public SLOTS. public slots: void Clear(); - void Deleting( SizeType index ) + void Deleting( int index ); inline void Delete( const KeyType & ); inline void DeleteCurrent(); inline void LowerCurrent(); diff --git a/Modules/Visualization/MonteverdiCore/src/mvdStackedLayerModel.cxx b/Modules/Visualization/MonteverdiCore/src/mvdStackedLayerModel.cxx index 95b465600c..fef681ebea 100644 --- a/Modules/Visualization/MonteverdiCore/src/mvdStackedLayerModel.cxx +++ b/Modules/Visualization/MonteverdiCore/src/mvdStackedLayerModel.cxx @@ -220,7 +220,7 @@ StackedLayerModel /*****************************************************************************/ void StackedLayerModel -::Deleting( SizeType index ) +::Deleting( int index ) { // qDebug() << this << "::Delete(" << index << ")"; diff --git a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h index 6156ef2734..87cece8e45 100644 --- a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h +++ b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h @@ -255,7 +255,7 @@ public slots: // // Signals. signals: - void LayerDeleting(unsigned int index); + void LayerDeletingModel( int index); /*-[ PROTECTED SECTION ]---------------------------------------------------*/ diff --git a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h index 84762eaff3..ee0d89303d 100644 --- a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h +++ b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h @@ -154,13 +154,16 @@ public: // Public SLOTS. public slots: +//bugfix + void OnLayerDeletingWidget( int index ); + /*-[ SIGNALS SECTION ]-----------------------------------------------------*/ // // Signals. signals: //bugFix - void LayerDeletingWidget( unsigned int index ); + void LayerDeletingWidget( int index ); /** */ void CurrentChanged( int ); diff --git a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackController.cxx b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackController.cxx index 25fad1a7ac..8a368f468d 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackController.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackController.cxx @@ -151,13 +151,16 @@ LayerStackController ); //bugfix + bool conSuc = QObject::connect( widget, - SIGNAL( LayerDeletingWidget( unsigned int index ) ), + SIGNAL( LayerDeletingWidget( int ) ), // to: model, SLOT( Deleting( int ) ) ); + std::cout<<"LayerDeletingWidget connect with Deleting : " + <<conSuc<<std::endl; QObject::connect( widget, @@ -251,7 +254,7 @@ LayerStackController QObject::disconnect( model, SIGNAL( CurrentChanged( size_t ) ), - // from: + // from:deletin this, SLOT( OnStackedLayerCurrentChanged( size_t ) ) ); diff --git a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx index 1d7c77e8f3..3b2e07c1f8 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackItemModel.cxx @@ -108,6 +108,7 @@ LayerStackItemModel QAbstractItemModel( p ), m_StackedLayerModel( NULL ) { + std::cout<<"Construction of ItemModel : "<<this<<std::endl; // QObject::connect( // this, // SIGNAL( modelAboutToBeReset() ), @@ -788,34 +789,16 @@ LayerStackItemModel if( p.isValid() || count!=1 ) return false; - - LayerStackWidget * widget = GetWidget< LayerStackWidget >(); - assert( widget!=NULL ); - QObject::disconnect( - widget, - SIGNAL( SelectionChanged( int ) ), - // from: - this, - SLOT( OnSelectionChanged( int ) ) - ); beginRemoveRows( p, row, row + count - 1 ); { // StackedLayerModel has already been shortened. - emit LayerDeleting(row); + emit LayerDeletingModel(row); // TODO: Release additional row data here. } endRemoveRows(); - QObject::connect( - widget, - SIGNAL( SelectionChanged( int ) ), - // from: - this, - SLOT( OnSelectionChanged( int ) ) - ); - return true; } diff --git a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackWidget.cxx b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackWidget.cxx index 8d0d24d63e..85083945ec 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdLayerStackWidget.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdLayerStackWidget.cxx @@ -113,6 +113,7 @@ LayerStackWidget SLOT( OnCurrentRowChanged( const QModelIndex &, const QModelIndex & ) ) ); +bool test = QObject::connect( m_UI->treeView->selectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection & ) ), @@ -120,16 +121,7 @@ LayerStackWidget this, SLOT( OnSelectionChanged( const QItemSelection &, const QItemSelection & ) ) ); - - /////// Bugfix - QObject::connect( - m_UI->treeView->selectionModel(), - SIGNAL( LayerDeleting(unsigned int index) ), - // to: - this, - SIGNAL( LayerDeletingWidget(unsigned int index) ) - ); - /////////////// + std::cout<<"An other conncetion worked : "<<test<<std::endl; QObject::connect( m_UI->topButton, @@ -202,8 +194,28 @@ LayerStackWidget this, SIGNAL( ResetEffectsButtonClicked() ) ); + + /////// Bugfix + bool connectionBugFix = QObject::connect( + this->GetItemModel(), + SIGNAL( LayerDeletingModel(int) ), + // to: + this, + SLOT( OnLayerDeletingWidget(int) ) + ); + std::cout<<"LayerDeletingModel connected with OnLayerDeletingWidget : " + <<connectionBugFix<<std::endl; + std::cout<<"Model adress : "<<m_UI->treeView->selectionModel()<<std::endl; + /////////////// } +void +LayerStackWidget +::OnLayerDeletingWidget(int index) +{ + std::cout<<"In widget, sending LayerDeletingSignal"<<std::endl; + emit LayerDeletingWidget(index); +} /*******************************************************************************/ LayerStackWidget ::~LayerStackWidget() -- GitLab