diff --git a/src/covermanager/albumcovermanager.cpp b/src/covermanager/albumcovermanager.cpp index 5775ebc7c..6805e11a8 100644 --- a/src/covermanager/albumcovermanager.cpp +++ b/src/covermanager/albumcovermanager.cpp @@ -248,6 +248,8 @@ void AlbumCoverManager::showEvent(QShowEvent *e) { Reset(); } + QMainWindow::showEvent(e); + } void AlbumCoverManager::closeEvent(QCloseEvent *e) { @@ -270,6 +272,8 @@ void AlbumCoverManager::closeEvent(QCloseEvent *e) { ui_->artists->clear(); ui_->albums->clear(); + QMainWindow::closeEvent(e); + } void AlbumCoverManager::LoadGeometry() { diff --git a/src/covermanager/albumcoversearcher.cpp b/src/covermanager/albumcoversearcher.cpp index 738377658..1df852cfa 100644 --- a/src/covermanager/albumcoversearcher.cpp +++ b/src/covermanager/albumcoversearcher.cpp @@ -163,14 +163,6 @@ void AlbumCoverSearcher::Init(AlbumCoverFetcher *fetcher) { AlbumCoverImageResult AlbumCoverSearcher::Exec(const QString &artist, const QString &album) { -#ifdef Q_OS_MACOS - ui_->artist->clear(); - ui_->album->clear(); - model_->clear(); - cover_loading_tasks_.clear(); - show(); -#endif - ui_->artist->setText(artist); ui_->album->setText(album); ui_->artist->setFocus(); diff --git a/src/widgets/qsearchfield.h b/src/widgets/qsearchfield.h index 21b1b1e0d..8ff7c9a1c 100644 --- a/src/widgets/qsearchfield.h +++ b/src/widgets/qsearchfield.h @@ -5,6 +5,9 @@ #include #include +class QShowEvent; +class QCloseEvent; + class QSearchFieldPrivate; class QSearchField : public QWidget { Q_OBJECT @@ -34,6 +37,7 @@ class QSearchField : public QWidget { void returnPressed(); protected: + void showEvent(QShowEvent *e) override; void resizeEvent(QResizeEvent*) override; bool eventFilter(QObject*, QEvent*) override; diff --git a/src/widgets/qsearchfield_mac.mm b/src/widgets/qsearchfield_mac.mm index fdffa3667..a77c9b3d0 100644 --- a/src/widgets/qsearchfield_mac.mm +++ b/src/widgets/qsearchfield_mac.mm @@ -32,6 +32,7 @@ THE SOFTWARE. #include #include #include +#include #include class QSearchFieldPrivate : public QObject { @@ -164,15 +165,12 @@ QSearchField::QSearchField(QWidget *parent) : QWidget(parent) { pimpl = delegate->pimpl = new QSearchFieldPrivate(this, search); [search setDelegate:(id)delegate]; - QVBoxLayout *layout = new QVBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - layout->addWidget(QWidget::createWindowContainer(QWindow::fromWinId(WId(search)), this)); - + new QVBoxLayout(this); + layout()->setContentsMargins(0, 0, 0, 0); setAttribute(Qt::WA_NativeWindow); setFixedHeight(24); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - [search release]; [pool drain]; } @@ -232,6 +230,21 @@ void QSearchField::setFocus() { setFocus(Qt::OtherFocusReason); } +void QSearchField::showEvent(QShowEvent *e) { + + if (!e->spontaneous()) { + for (int i = 0 ; i < layout()->count() ; ++i) { + QWidget *widget = layout()->itemAt(i)->widget(); + layout()->removeWidget(widget); + delete widget; + } + layout()->addWidget(QWidget::createWindowContainer(QWindow::fromWinId(WId(pimpl->nsSearchField)), this)); + } + + QWidget::showEvent(e); + +} + void QSearchField::resizeEvent(QResizeEvent *resizeEvent) { QWidget::resizeEvent(resizeEvent); } @@ -239,4 +252,3 @@ void QSearchField::resizeEvent(QResizeEvent *resizeEvent) { bool QSearchField::eventFilter(QObject *o, QEvent *e) { return QWidget::eventFilter(o, e); } - diff --git a/src/widgets/qsearchfield_nonmac.cpp b/src/widgets/qsearchfield_nonmac.cpp index 3ef67c403..54666dfeb 100644 --- a/src/widgets/qsearchfield_nonmac.cpp +++ b/src/widgets/qsearchfield_nonmac.cpp @@ -165,6 +165,12 @@ QString QSearchField::text() const { } +void QSearchField::showEvent(QShowEvent *e) { + + QWidget::showEvent(e); + +} + void QSearchField::resizeEvent(QResizeEvent *resizeEvent) { Q_ASSERT(pimpl && pimpl->clearbutton_ && pimpl->lineedit_);