diff options
| author | Peter Penz <[email protected]> | 2007-12-06 21:06:45 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2007-12-06 21:06:45 +0000 |
| commit | e65154552769e648bcbe14429123ff9fcd48bd29 (patch) | |
| tree | 83d9a825642bf72dc4e2bc2b13a94c6331a19ec3 /src/dolphiniconsview.cpp | |
| parent | 4939ae662fad860d8355a799f2d7121fe538ee92 (diff) | |
Fixed wrong usage of QStyleOptionViewItem: caching of the file item in the constructor is too early (thanks to Fredrik for the hint!). This fixes 2 issues:
* the selection color of the details view now uses the correct selection color
* changing the colors of KDE results in updating the colors of all Dolphin views
CCMAIL: [email protected]
CCMAIL: [email protected]
CCMAIL: [email protected]
svn path=/trunk/KDE/kdebase/apps/; revision=745700
Diffstat (limited to 'src/dolphiniconsview.cpp')
| -rw-r--r-- | src/dolphiniconsview.cpp | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 2bb21cb79..a45b08dcf 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -38,6 +38,10 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle KCategorizedView(parent), m_controller(controller), m_categoryDrawer(0), + m_font(), + m_decorationSize(), + m_decorationPosition(QStyleOptionViewItem::Top), + m_displayAlignment(Qt::AlignHCenter), m_itemSize(), m_dragging(false), m_dropRect() @@ -84,24 +88,21 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); Q_ASSERT(settings != 0); - m_viewOptions = KCategorizedView::viewOptions(); - m_viewOptions.showDecorationSelected = true; - - QFont font(settings->fontFamily(), settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_viewOptions.font = font; + m_font = QFont(settings->fontFamily(), settings->fontSize()); + m_font.setItalic(settings->italicFont()); + m_font.setBold(settings->boldFont()); setWordWrap(settings->numberOfTextlines() > 1); updateGridSize(view->showPreview(), 0); if (settings->arrangement() == QListView::TopToBottom) { setFlow(QListView::LeftToRight); - m_viewOptions.decorationPosition = QStyleOptionViewItem::Top; + m_decorationPosition = QStyleOptionViewItem::Top; + m_displayAlignment = Qt::AlignHCenter; } else { setFlow(QListView::TopToBottom); - m_viewOptions.decorationPosition = QStyleOptionViewItem::Left; - m_viewOptions.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; + m_decorationPosition = QStyleOptionViewItem::Left; + m_displayAlignment = Qt::AlignLeft | Qt::AlignVCenter; } m_categoryDrawer = new DolphinCategoryDrawer(); @@ -121,6 +122,7 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const const bool leftToRightFlow = (flow() == QListView::LeftToRight); QRect itemRect = KCategorizedView::visualRect(index); + const int maxWidth = m_itemSize.width(); const int maxHeight = m_itemSize.height(); @@ -152,7 +154,8 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const const int margin = settings->gridSpacing(); const int gridWidth = gridSize().width(); const int gridIndex = (itemRect.left() - margin + 1) / gridWidth; - itemRect.moveLeft(gridIndex * gridWidth + margin); + const int centerInc = (maxWidth - itemRect.width()) / 2; + itemRect.moveLeft((gridIndex * gridWidth) + margin + centerInc); } return itemRect; @@ -160,7 +163,13 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const QStyleOptionViewItem DolphinIconsView::viewOptions() const { - return m_viewOptions; + QStyleOptionViewItem viewOptions = KCategorizedView::viewOptions(); + viewOptions.font = m_font; + viewOptions.decorationPosition = m_decorationPosition; + viewOptions.decorationSize = m_decorationSize; + viewOptions.displayAlignment = m_displayAlignment; + viewOptions.showDecorationSelected = true; + return viewOptions; } void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event) @@ -250,7 +259,7 @@ void DolphinIconsView::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { - const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight); + const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); } } @@ -421,22 +430,22 @@ void DolphinIconsView::updateGridSize(bool showPreview, int additionalInfoCount) } Q_ASSERT(additionalInfoCount >= 0); - itemHeight += additionalInfoCount * m_viewOptions.font.pointSize() * 2; + itemHeight += additionalInfoCount * m_font.pointSize() * 2; if (settings->arrangement() == QListView::TopToBottom) { // The decoration width indirectly defines the maximum // width for the text wrapping. To use the maximum item width // for text wrapping, it is used as decoration width. - m_viewOptions.decorationSize = QSize(itemWidth, size); + m_decorationSize = QSize(itemWidth, size); } else { - m_viewOptions.decorationSize = QSize(size, size); + m_decorationSize = QSize(size, size); } + m_itemSize = QSize(itemWidth, itemHeight); + const int spacing = settings->gridSpacing(); setGridSize(QSize(itemWidth + spacing * 2, itemHeight + spacing)); - m_itemSize = QSize(itemWidth, itemHeight); - m_controller->setZoomInPossible(isZoomInPossible()); m_controller->setZoomOutPossible(isZoomOutPossible()); } |
