mirror of
https://github.com/clementine-player/Clementine
synced 2024-12-17 20:09:50 +01:00
Map playlist indices to the source model when passing them to the future watcher for background saves, fixing a bug where the wrong notification would be sent when editing track information for the currently playing song and the playlist was filtered. Fixes issue 2063
This commit is contained in:
parent
804cbbc14e
commit
a8d9f9104a
@ -1440,8 +1440,9 @@ void MainWindow::EditTagDialogAccepted() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::RenumberTracks() {
|
void MainWindow::RenumberTracks() {
|
||||||
QModelIndexList indexes=ui_->playlist->view()->selectionModel()->selection().indexes();
|
QModelIndexList indexes =
|
||||||
int track=1;
|
ui_->playlist->view()->selectionModel()->selection().indexes();
|
||||||
|
int track = 1;
|
||||||
|
|
||||||
// Get the index list in order
|
// Get the index list in order
|
||||||
qStableSort(indexes);
|
qStableSort(indexes);
|
||||||
@ -1458,13 +1459,14 @@ void MainWindow::RenumberTracks() {
|
|||||||
if (index.column() != 0)
|
if (index.column() != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int row = playlists_->current()->proxy()->mapToSource(index).row();
|
const QModelIndex source_index = playlists_->current()->proxy()->mapToSource(index);
|
||||||
|
int row = source_index.row();
|
||||||
Song song = playlists_->current()->item_at(row)->Metadata();
|
Song song = playlists_->current()->item_at(row)->Metadata();
|
||||||
|
|
||||||
if (song.IsEditable()) {
|
if (song.IsEditable()) {
|
||||||
song.set_track(track);
|
song.set_track(track);
|
||||||
QFuture<bool> future = song.BackgroundSave();
|
QFuture<bool> future = song.BackgroundSave();
|
||||||
ModelFutureWatcher<bool>* watcher = new ModelFutureWatcher<bool>(index, this);
|
ModelFutureWatcher<bool>* watcher = new ModelFutureWatcher<bool>(source_index, this);
|
||||||
watcher->setFuture(future);
|
watcher->setFuture(future);
|
||||||
connect(watcher, SIGNAL(finished()), SLOT(SongSaveComplete()));
|
connect(watcher, SIGNAL(finished()), SLOT(SongSaveComplete()));
|
||||||
}
|
}
|
||||||
@ -1490,12 +1492,13 @@ void MainWindow::SelectionSetValue() {
|
|||||||
if (index.column() != 0)
|
if (index.column() != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int row = playlists_->current()->proxy()->mapToSource(index).row();
|
const QModelIndex source_index = playlists_->current()->proxy()->mapToSource(index);
|
||||||
|
int row = source_index.row();
|
||||||
Song song = playlists_->current()->item_at(row)->Metadata();
|
Song song = playlists_->current()->item_at(row)->Metadata();
|
||||||
|
|
||||||
if (Playlist::set_column_value(song, column, column_value)) {
|
if (Playlist::set_column_value(song, column, column_value)) {
|
||||||
QFuture<bool> future = song.BackgroundSave();
|
QFuture<bool> future = song.BackgroundSave();
|
||||||
ModelFutureWatcher<bool>* watcher = new ModelFutureWatcher<bool>(index, this);
|
ModelFutureWatcher<bool>* watcher = new ModelFutureWatcher<bool>(source_index, this);
|
||||||
watcher->setFuture(future);
|
watcher->setFuture(future);
|
||||||
connect(watcher, SIGNAL(finished()), SLOT(SongSaveComplete()));
|
connect(watcher, SIGNAL(finished()), SLOT(SongSaveComplete()));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user