diff --git a/src/filemetadataconfigwidget.h b/src/filemetadataconfigwidget.h --- a/src/filemetadataconfigwidget.h +++ b/src/filemetadataconfigwidget.h @@ -61,8 +61,8 @@ /** @see QWidget::sizeHint() */ QSize sizeHint() const override; -protected: - bool event(QEvent* event) override; +Q_SIGNALS: + void metadataLoaded(); private: class Private; diff --git a/src/filemetadataconfigwidget.cpp b/src/filemetadataconfigwidget.cpp --- a/src/filemetadataconfigwidget.cpp +++ b/src/filemetadataconfigwidget.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include using namespace Baloo; @@ -143,8 +143,11 @@ addItem("rating"); addItem("tags"); addItem("userComment"); + + emit q->metadataLoaded(); } + FileMetaDataConfigWidget::FileMetaDataConfigWidget(QWidget* parent) : QWidget(parent), d(new Private(this)) @@ -183,20 +186,17 @@ showGroup.sync(); } -bool FileMetaDataConfigWidget::event(QEvent* event) -{ - if (event->type() == QEvent::Polish) { - qDebug() << "GOT POLISH EVENT!!!"; - // loadMetaData() must be invoked asynchronously, as the list - // must finish it's initialization first - QMetaObject::invokeMethod(this, "loadMetaData", Qt::QueuedConnection); - } - return QWidget::event(event);; -} - QSize FileMetaDataConfigWidget::sizeHint() const { - return d->m_metaDataList->sizeHint(); + // get the height of the first row + const int rowHeight = d->m_metaDataList->sizeHintForRow(0); + + QSize sizeHint = d->m_metaDataList->sizeHint(); + + // extrapole the height of the widget based on the first row height plus 2 pixels to account for spacing + sizeHint.setHeight((rowHeight + 2) * d->m_metaDataList->count()); + + return sizeHint; } #include "moc_filemetadataconfigwidget.cpp"