diff options
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.cpp | 11 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemlistwidget.cpp | 28 |
2 files changed, 35 insertions, 4 deletions
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 41a86324b..5a7175e4c 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -489,7 +489,16 @@ void KItemListController::slotAutoActivationTimeout() return; } - if (m_model->supportsDropping(index)) { + /* m_view->isUnderMouse() fixes a bug in the Folder-View-Panel and in the + * Places-Panel. + * + * Bug: When you drag a file onto a Folder-View-Item or a Places-Item and + * then move away before the auto-activation timeout triggers, than the + * item still becomes activated/expanded. + * + * See Bug 293200 and 305783 + */ + if (m_model->supportsDropping(index) && m_view->isUnderMouse()) { if (m_view->supportsItemExpanding() && m_model->isExpandable(index)) { const bool expanded = m_model->isExpanded(index); m_model->setExpanded(index, !expanded); diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 72d10cf40..97c8a038b 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -68,6 +68,14 @@ QSizeF KStandardItemListWidgetInformant::itemSizeHint(int index, const KItemList const qreal maxWidth = itemWidth - 2 * option.padding; QTextLine line; + int emptyRolesCount = 0; + foreach (const QByteArray& role, view->visibleRoles()) { + const QString text = roleText(role, values); + if (role != "text" && role != "rating" && text.isEmpty()) { + emptyRolesCount++; + } + } + // Calculate the number of lines required for wrapping the name QTextOption textOption(Qt::AlignHCenter); textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); @@ -84,7 +92,7 @@ QSizeF KStandardItemListWidgetInformant::itemSizeHint(int index, const KItemList layout.endLayout(); // Add one line for each additional information - textHeight += additionalRolesCount * option.fontMetrics.lineSpacing(); + textHeight += (additionalRolesCount - emptyRolesCount) * option.fontMetrics.lineSpacing(); const qreal maxTextHeight = option.maxTextSize.height(); if (maxTextHeight > 0 && textHeight > maxTextHeight) { @@ -980,8 +988,17 @@ void KStandardItemListWidget::updateIconsLayoutTextCache() qreal nameHeight = 0; QTextLine line; + int emptyRolesCount = 0; + foreach (const QByteArray& role, visibleRoles()) { + const QString text = roleText(role, values); + if (role != "text" && role != "rating" && text.isEmpty()) { + emptyRolesCount++; + } + } + const int additionalRolesCount = qMax(visibleRoles().count() - 1, 0); - const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) - additionalRolesCount; + const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) - + (additionalRolesCount - emptyRolesCount); QTextLayout layout(nameTextInfo->staticText.text(), m_customizedFont); layout.setTextOption(nameTextInfo->staticText.textOption()); @@ -1015,7 +1032,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache() nameTextInfo->staticText.setTextWidth(maxWidth); nameTextInfo->pos = QPointF(padding, widgetHeight - nameHeight - - additionalRolesCount * lineSpacing - + (additionalRolesCount - emptyRolesCount)* lineSpacing - padding); m_textRect = QRectF(padding + (maxWidth - nameWidth) / 2, nameTextInfo->pos.y(), @@ -1030,6 +1047,11 @@ void KStandardItemListWidget::updateIconsLayoutTextCache() } const QString text = roleText(role, values); + + if (role != "text" && role != "rating" && text.isEmpty()) { + continue; + } + TextInfo* textInfo = m_textInfo.value(role); textInfo->staticText.setText(text); |
