Skip to content

Commit

Permalink
DlgTrackInfo: apply pending changes also when saving via hotkey
Browse files Browse the repository at this point in the history
  • Loading branch information
ronso0 committed Dec 18, 2021
1 parent b0f6257 commit 870d75d
Showing 1 changed file with 32 additions and 8 deletions.
40 changes: 32 additions & 8 deletions src/library/dlgtrackinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ void DlgTrackInfo::init() {
btnPrev->hide();
}

// QDialog buttons
connect(btnApply,
&QPushButton::clicked,
this,
Expand All @@ -92,6 +93,7 @@ void DlgTrackInfo::init() {
this,
&DlgTrackInfo::slotCancel);

// BPM edit buttons
connect(bpmDouble,
&QPushButton::clicked,
this,
Expand Down Expand Up @@ -150,19 +152,22 @@ void DlgTrackInfo::init() {
&QLineEdit::editingFinished,
this,
[this]() {
m_trackRecord.refMetadata().refTrackInfo().setTitle(txtTrackName->text().trimmed());
m_trackRecord.refMetadata().refTrackInfo().setTitle(
txtTrackName->text().trimmed());
});
connect(txtArtist,
&QLineEdit::editingFinished,
this,
[this]() {
m_trackRecord.refMetadata().refTrackInfo().setArtist(txtArtist->text().trimmed());
m_trackRecord.refMetadata().refTrackInfo().setArtist(
txtArtist->text().trimmed());
});
connect(txtAlbum,
&QLineEdit::editingFinished,
this,
[this]() {
m_trackRecord.refMetadata().refAlbumInfo().setTitle(txtAlbum->text().trimmed());
m_trackRecord.refMetadata().refAlbumInfo().setTitle(
txtAlbum->text().trimmed());
});
connect(txtAlbumArtist,
&QLineEdit::editingFinished,
Expand Down Expand Up @@ -196,13 +201,18 @@ void DlgTrackInfo::init() {
&QLineEdit::editingFinished,
this,
[this]() {
m_trackRecord.refMetadata().refTrackInfo().setYear(txtYear->text().trimmed());
m_trackRecord.refMetadata().refTrackInfo().setYear(
txtYear->text().trimmed());
});
connect(txtTrackNumber,
&QLineEdit::editingFinished,
this,
[this]() {
m_trackRecord.refMetadata().refTrackInfo().setTrackNumber(
txtTrackNumber->text().trimmed());
});
connect(txtTrackNumber, &QLineEdit::editingFinished, [this]() {
m_trackRecord.refMetadata().refTrackInfo().setTrackNumber(
txtTrackNumber->text().trimmed());
});

// Import and file browser buttons
connect(btnImportMetadataFromFile,
&QPushButton::clicked,
this,
Expand All @@ -218,6 +228,7 @@ void DlgTrackInfo::init() {
this,
&DlgTrackInfo::slotOpenInFileBrowser);

// Cover art
CoverArtCache* pCache = CoverArtCache::instance();
if (pCache) {
connect(pCache,
Expand Down Expand Up @@ -483,6 +494,19 @@ void DlgTrackInfo::saveTrack() {
return;
}

// In case Apply is triggered by hotkey AND a QLineEdit with pending changes
// is focused AND the user did not hit Enter to finish editing,
// the content of that focused line edit would be reset to the last confirmed state.
// This hack makes a focused QLineEdit emit editingFinished() (clearFocus()
// implicitly emits a focusOutEvent()
if (this == QApplication::activeWindow()) {
auto focusWidget = QApplication::focusWidget();
if (focusWidget) {
focusWidget->clearFocus();
focusWidget->setFocus();
}
}

// First, disconnect the track changed signal. Otherwise we signal ourselves
// and repopulate all these fields.
const QSignalBlocker signalBlocker(this);
Expand Down

0 comments on commit 870d75d

Please sign in to comment.