Try to ensure the connection for the replace operation is unique.

main
Teo Mrnjavac 9 years ago
parent d6e773e220
commit 64655d92a1

@ -437,14 +437,8 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice )
} }
connect( m_beforePartitionBarsView->selectionModel(), &QItemSelectionModel::currentRowChanged, connect( m_beforePartitionBarsView->selectionModel(), &QItemSelectionModel::currentRowChanged,
this, [ this ]( const QModelIndex& current, const QModelIndex& previous ) this, &ChoicePage::doReplaceSelectedPartition,
{ Qt::UniqueConnection );
cDebug() << "selectionModel reaction, sender is" << sender() << sender()->metaObject()->className();
ScanningDialog::run( QtConcurrent::run( this,
&ChoicePage::doReplaceSelectedPartition,
current ),
this );
}, Qt::UniqueConnection );
break; break;
case NoChoice: case NoChoice:
case Manual: case Manual:
@ -455,25 +449,28 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice )
void void
ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) ChoicePage::doReplaceSelectedPartition( const QModelIndex& current,
const QModelIndex& previous )
{ {
cDebug() << "begin doReplace"; cDebug() << "selectionModel reaction, sender is" << sender();
QMutexLocker locker( &m_coreMutex ); ScanningDialog::run( QtConcurrent::run( [ = ]
if ( m_core->isDirty() )
{ {
m_core->revertDevice( selectedDevice() ); QMutexLocker locker( &m_coreMutex );
}
// We can't use the PartitionPtrRole because we need to make changes to the if ( m_core->isDirty() )
// main DeviceModel, not the immutable copy. {
QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); m_core->revertDevice( selectedDevice() );
Partition* partition = KPMHelpers::findPartitionByPath( { selectedDevice() }, }
partPath ); // We can't use the PartitionPtrRole because we need to make changes to the
if ( partition ) // main DeviceModel, not the immutable copy.
PartitionActions::doReplacePartition( m_core, QString partPath = current.data( PartitionModel::PartitionPathRole ).toString();
selectedDevice(), Partition* partition = KPMHelpers::findPartitionByPath( { selectedDevice() },
partition ); partPath );
cDebug() << "end doReplace"; if ( partition )
PartitionActions::doReplacePartition( m_core,
selectedDevice(),
partition );
} ), this );
} }

@ -76,7 +76,7 @@ private:
ExpandableRadioButton* createEraseButton(); ExpandableRadioButton* createEraseButton();
Device* selectedDevice(); Device* selectedDevice();
void applyDeviceChoice(); void applyDeviceChoice();
void doReplaceSelectedPartition( const QModelIndex& current ); void doReplaceSelectedPartition( const QModelIndex& current, const QModelIndex& previous );
void updateDeviceStatePreview(); void updateDeviceStatePreview();
void applyActionChoice( ChoicePage::Choice choice ); void applyActionChoice( ChoicePage::Choice choice );
void updateActionChoicePreview( ChoicePage::Choice choice ); void updateActionChoicePreview( ChoicePage::Choice choice );

Loading…
Cancel
Save