Fix scrollbar spacing when no scrollbar is visible in dolphin.

Before this commit, Dolphin reserved space for the scrollbar spacing
even when no scrollbar is visible resulting in a ugly gap in the view
when:

1. the theme uses QStyle::SH_ScrollView_FrameOnlyAroundContents and
2. the theme has a positive PM_ScrollView_ScrollBarSpacing.

QtCurve can have both while Oxygen have 1 but not 2.
To reproduce the problem with Oxygen style. Replace the
`width += ....` (which returns -2 or 0 for Oxygen) with `width += 2`.

See more info here:
https://github.com/QtCurve/qtcurve-qt4/issues/9#issuecomment-28630517

CCBUG: 306631
FIXED-IN: 4.11.4
REVIEW: 113902
This commit is contained in:
Yichao Yu 2013-11-18 23:40:40 +01:00 committed by Frank Reininghaus
parent c5ba8a56e7
commit c89cd8e789

View file

@ -338,16 +338,17 @@ void KItemListContainer::updateGeometries()
int extra = frameWidth() * 2;
QStyleOption option;
option.initFrom(this);
int scrollbarSpacing = 0;
if (style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, &option, this)) {
extra += style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing, &option, this);
scrollbarSpacing = style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing, &option, this);
}
const int widthDec = verticalScrollBar()->isVisible()
? extra + style()->pixelMetric(QStyle::PM_ScrollBarExtent, &option, this)
? extra + scrollbarSpacing + style()->pixelMetric(QStyle::PM_ScrollBarExtent, &option, this)
: extra;
const int heightDec = horizontalScrollBar()->isVisible()
? extra + style()->pixelMetric(QStyle::PM_ScrollBarExtent, &option, this)
? extra + scrollbarSpacing + style()->pixelMetric(QStyle::PM_ScrollBarExtent, &option, this)
: extra;
rect.adjust(0, 0, -widthDec, -heightDec);