You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
5.2 KiB
151 lines
5.2 KiB
qt-bugs@ issue: N46490
|
|
bugs.kde.org number: 69589
|
|
applied: no
|
|
author: Benoit Walter <b.walter@free.fr>
|
|
|
|
Remove unnecessary scrollbar that may appear.
|
|
|
|
Test case (using konqueror icon view):
|
|
- The first icons are being shown (no scrollbar yet)
|
|
- When there is no space left, a vertical scrollbar is needed
|
|
- The vertical scrollbar may cover the right edge of the icons
|
|
(in the last column) => an horizontal scrollbar is needed :-(
|
|
|
|
Solution:
|
|
When using ScrollBarMode::Auto, prevent Qt from drawing icons on the
|
|
scrollbar area (before the scrollbar is shown).
|
|
|
|
Related to KDE bug #69589
|
|
|
|
Index: qiconview.cpp
|
|
===================================================================
|
|
RCS file: /home/kde/qt-copy/src/iconview/qiconview.cpp,v
|
|
retrieving revision 1.54
|
|
diff -u -3 -p -r1.54 qiconview.cpp
|
|
--- work/qt-x11-free-3.3.8/src/iconview/qiconview.cpp 2 Mar 2004 12:50:31 -0000 1.54
|
|
+++ work/qt-x11-free-3.3.8/src/iconview/qiconview.cpp 12 Apr 2004 10:07:28 -0000
|
|
@@ -1060,7 +1060,7 @@ void QIconViewItem::setText( const QStri
|
|
|
|
if ( view ) {
|
|
if ( QRect( view->contentsX(), view->contentsY(),
|
|
- view->visibleWidth(), view->visibleHeight() ).
|
|
+ view->visibleWidthSB(), view->visibleHeightSB() ).
|
|
intersects( oR ) )
|
|
view->repaintContents( oR.x() - 1, oR.y() - 1,
|
|
oR.width() + 2, oR.height() + 2, FALSE );
|
|
@@ -1104,7 +1104,7 @@ void QIconViewItem::setPixmap( const QPi
|
|
|
|
if ( view ) {
|
|
if ( QRect( view->contentsX(), view->contentsY(),
|
|
- view->visibleWidth(), view->visibleHeight() ).
|
|
+ view->visibleWidthSB(), view->visibleHeightSB() ).
|
|
intersects( oR ) )
|
|
view->repaintContents( oR.x() - 1, oR.y() - 1,
|
|
oR.width() + 2, oR.height() + 2, FALSE );
|
|
@@ -1140,7 +1140,7 @@ void QIconViewItem::setPicture( const QP
|
|
|
|
if ( view ) {
|
|
if ( QRect( view->contentsX(), view->contentsY(),
|
|
- view->visibleWidth(), view->visibleHeight() ).
|
|
+ view->visibleWidthSB(), view->visibleHeightSB() ).
|
|
intersects( oR ) )
|
|
view->repaintContents( oR.x() - 1, oR.y() - 1,
|
|
oR.width() + 2, oR.height() + 2, FALSE );
|
|
@@ -1200,7 +1200,7 @@ void QIconViewItem::setPixmap( const QPi
|
|
|
|
if ( view ) {
|
|
if ( QRect( view->contentsX(), view->contentsY(),
|
|
- view->visibleWidth(), view->visibleHeight() ).
|
|
+ view->visibleWidthSB(), view->visibleHeightSB() ).
|
|
intersects( oR ) )
|
|
view->repaintContents( oR.x() - 1, oR.y() - 1,
|
|
oR.width() + 2, oR.height() + 2, FALSE );
|
|
@@ -5448,8 +5448,8 @@ void QIconView::insertInGrid( QIconViewI
|
|
}
|
|
item->dirty = FALSE;
|
|
} else {
|
|
- QRegion r( QRect( 0, 0, QMAX( contentsWidth(), visibleWidth() ),
|
|
- QMAX( contentsHeight(), visibleHeight() ) ) );
|
|
+ QRegion r( QRect( 0, 0, QMAX( contentsWidth(), visibleWidthSB() ),
|
|
+ QMAX( contentsHeight(), visibleHeightSB() ) ) );
|
|
|
|
QIconViewItem *i = d->firstItem;
|
|
int y = -1;
|
|
@@ -5707,7 +5707,7 @@ QIconViewItem *QIconView::makeRowLayout(
|
|
QIconViewItem *item = begin;
|
|
for (;;) {
|
|
x += d->spacing + item->width();
|
|
- if ( x > visibleWidth() && item != begin ) {
|
|
+ if ( x > visibleWidthSB() && item != begin ) {
|
|
item = item->prev;
|
|
break;
|
|
}
|
|
@@ -5732,7 +5732,7 @@ QIconViewItem *QIconView::makeRowLayout(
|
|
int x;
|
|
if ( item == begin ) {
|
|
if ( reverse )
|
|
- x = visibleWidth() - d->spacing - item->width();
|
|
+ x = visibleWidthSB() - d->spacing - item->width();
|
|
else
|
|
x = d->spacing;
|
|
} else {
|
|
@@ -5768,7 +5768,7 @@ QIconViewItem *QIconView::makeRowLayout(
|
|
i += r;
|
|
x = i * d->rastX + sp * d->spacing;
|
|
}
|
|
- if ( x > visibleWidth() && item != begin ) {
|
|
+ if ( x > visibleWidthSB() && item != begin ) {
|
|
item = item->prev;
|
|
break;
|
|
}
|
|
@@ -5831,7 +5831,7 @@ QIconViewItem *QIconView::makeRowLayout(
|
|
QIconViewItem *item = begin;
|
|
for (;;) {
|
|
y += d->spacing + item->height();
|
|
- if ( y > visibleHeight() && item != begin ) {
|
|
+ if ( y > visibleHeightSB() && item != begin ) {
|
|
item = item->prev;
|
|
break;
|
|
}
|
|
@@ -6378,4 +6378,24 @@ bool QIconView::isRenaming() const
|
|
#endif
|
|
}
|
|
|
|
+int QIconView::visibleWidthSB() const
|
|
+{
|
|
+ if ( vScrollBarMode() != Auto )
|
|
+ return visibleWidth();
|
|
+
|
|
+ int offset = verticalScrollBar()->isVisible() ? 0
|
|
+ : style().pixelMetric( QStyle::PM_ScrollBarExtent, verticalScrollBar() );
|
|
+ return QMAX( 0, visibleWidth() - offset );
|
|
+}
|
|
+
|
|
+int QIconView::visibleHeightSB() const
|
|
+{
|
|
+ if ( hScrollBarMode() != Auto )
|
|
+ return visibleHeight();
|
|
+
|
|
+ int offset = horizontalScrollBar()->isVisible() ? 0
|
|
+ : style().pixelMetric( QStyle::PM_ScrollBarExtent, horizontalScrollBar() );
|
|
+ return QMAX( 0, visibleHeight() - offset );
|
|
+}
|
|
+
|
|
#endif // QT_NO_ICONVIEW
|
|
Index: qiconview.h
|
|
===================================================================
|
|
RCS file: /home/kde/qt-copy/src/iconview/qiconview.h,v
|
|
retrieving revision 1.35
|
|
diff -u -3 -p -r1.35 qiconview.h
|
|
--- work/qt-x11-free-3.3.8/src/iconview/qiconview.h 16 May 2003 13:02:38 -0000 1.35
|
|
+++ work/qt-x11-free-3.3.8/src/iconview/qiconview.h 12 Apr 2004 10:07:58 -0000
|
|
@@ -496,6 +496,8 @@ private:
|
|
const QPoint &relativeTo,
|
|
const QIconViewItem *item ) const;
|
|
QBitmap mask( QPixmap *pix ) const;
|
|
+ int visibleWidthSB() const;
|
|
+ int visibleHeightSB() const;
|
|
|
|
QIconViewPrivate *d;
|
|
|