From d1099ee5bf4ed626a9ae9e5d30ec5ff3c468fa01 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 15 Jan 2010 14:20:09 +0000 Subject: [PATCH] assure that the widgets of the panels are resized after receiving the Polish event svn path=/trunk/KDE/kdebase/apps/; revision=1075076 --- .../information/informationpanelcontent.cpp | 58 ++++++++++++------- .../information/informationpanelcontent.h | 6 ++ 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index 3bb54b0bd..1164a5591 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -245,36 +245,27 @@ void InformationPanelContent::showItems(const KFileItemList& items) bool InformationPanelContent::eventFilter(QObject* obj, QEvent* event) { - if (event->type() == QEvent::Resize) { + switch (event->type()) { + case QEvent::Resize: { QResizeEvent* resizeEvent = static_cast(event); if (obj == m_metaDataArea->viewport()) { // The size of the meta text area has changed. Adjust the fixed // width in a way that no horizontal scrollbar needs to be shown. m_metaDataWidget->setFixedWidth(resizeEvent->size().width()); } else if (obj == parent()) { - // If the text inside the name label or the info label cannot - // get wrapped, then the maximum width of the label is increased - // so that the width of the information panel gets increased. - // To prevent this, the maximum width is adjusted to - // the current width of the panel. - const int maxWidth = resizeEvent->size().width() - KDialog::spacingHint() * 4; - m_nameLabel->setMaximumWidth(maxWidth); - - // The metadata widget also contains a text widget which may return - // a large preferred width. - if (m_metaDataWidget != 0) { - m_metaDataWidget->setMaximumWidth(maxWidth); - } + adjustWidgetSizes(resizeEvent->size().width()); + } + break; + } - // try to increase the preview as large as possible - m_preview->setSizeHint(QSize(maxWidth, maxWidth)); + case QEvent::Polish: + adjustWidgetSizes(parentWidget()->width()); + break; - if (m_phononWidget->isVisible() && (m_phononWidget->mode() == PhononWidget::Video)) { - // assure that the size of the video player is the same as the preview size - m_phononWidget->setVideoSize(QSize(maxWidth, maxWidth)); - } - } + default: + break; } + return Panel::eventFilter(obj, event); } @@ -401,4 +392,29 @@ void InformationPanelContent::setNameLabelText(const QString& text) m_nameLabel->setText(wrappedText); } +void InformationPanelContent::adjustWidgetSizes(int width) +{ + // If the text inside the name label or the info label cannot + // get wrapped, then the maximum width of the label is increased + // so that the width of the information panel gets increased. + // To prevent this, the maximum width is adjusted to + // the current width of the panel. + const int maxWidth = width - KDialog::spacingHint() * 4; + m_nameLabel->setMaximumWidth(maxWidth); + + // The metadata widget also contains a text widget which may return + // a large preferred width. + if (m_metaDataWidget != 0) { + m_metaDataWidget->setMaximumWidth(maxWidth); + } + + // try to increase the preview as large as possible + m_preview->setSizeHint(QSize(maxWidth, maxWidth)); + + if (m_phononWidget->isVisible() && (m_phononWidget->mode() == PhononWidget::Video)) { + // assure that the size of the video player is the same as the preview size + m_phononWidget->setVideoSize(QSize(maxWidth, maxWidth)); + } +} + #include "informationpanelcontent.moc" diff --git a/src/panels/information/informationpanelcontent.h b/src/panels/information/informationpanelcontent.h index 923bb762f..2f32cf717 100644 --- a/src/panels/information/informationpanelcontent.h +++ b/src/panels/information/informationpanelcontent.h @@ -113,6 +113,12 @@ private: */ void setNameLabelText(const QString& text); + /** + * Adjusts the sizes of the widgets dependent on the available + * width given by \p width. + */ + void adjustWidgetSizes(int width); + private: KFileItem m_item; -- 2.47.3