summaryrefslogtreecommitdiff
authordrw <drw>2005-04-14 18:18:40 (UTC)
committer drw <drw>2005-04-14 18:18:40 (UTC)
commit5f600ec21480d1d040203407a1d2446781702230 (patch) (side-by-side diff)
treeec60b63430dd3fb63e1ef98b193467cf9f2c3d3a
parenta7776b930c9f7259a8ea52c90534952d183ad658 (diff)
downloadopie-5f600ec21480d1d040203407a1d2446781702230.zip
opie-5f600ec21480d1d040203407a1d2446781702230.tar.gz
opie-5f600ec21480d1d040203407a1d2446781702230.tar.bz2
New patch for Qt to allow Opie to control the size of icons on tabbars and popupmenus
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--qt/qt-2.3.10.patch/qte-2.3.10-all.patch247
-rw-r--r--qt/qt-2.3.10.patch/qte-iconsize.patch99
2 files changed, 279 insertions, 67 deletions
diff --git a/qt/qt-2.3.10.patch/qte-2.3.10-all.patch b/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
index 24bac51..8fc0cf0 100644
--- a/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
+++ b/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
@@ -1,327 +1,440 @@
-All patches (necessary) for x86 builds. Special support for devices
-like Beagle, iPAQ, SIMpad, Zaurus can be found at the OpenEmbedded
-package database
+diff -urN qt-2.3.10-orig/include/qcstring.h qt-2.3.10-new/include/qcstring.h
+--- qt-2.3.10-orig/include/qcstring.h 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/include/qcstring.h 2005-04-14 13:03:02.584481232 -0500
+@@ -119,7 +119,7 @@
+ // We want to keep source compatibility for 2.x
+ // ### TODO for 4.0: completely remove these and the cstr* functions
+-#if !defined(QT_GENUINE_STR)
++#if 0
+ #undef strlen
+ #define strlen qstrlen
+diff -urN qt-2.3.10-orig/include/qiconview.h qt-2.3.10-new/include/qiconview.h
+--- qt-2.3.10-orig/include/qiconview.h 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/include/qiconview.h 2005-04-14 13:03:02.576482448 -0500
+@@ -444,6 +444,7 @@
+ virtual void contentsDropEvent( QDropEvent *e );
+ #endif
-Index: qt-2.3.10/src/iconview/qiconview.cpp
-===================================================================
---- qt-2.3.10.orig/src/iconview/qiconview.cpp 2005-02-24 21:09:53.059676113 +0100
-+++ qt-2.3.10/src/iconview/qiconview.cpp 2005-02-24 21:10:04.601020103 +0100
++ void bufferedPaintEvent( QPaintEvent* );
+ virtual void resizeEvent( QResizeEvent* e );
+ virtual void keyPressEvent( QKeyEvent *e );
+ virtual void focusInEvent( QFocusEvent *e );
+diff -urN qt-2.3.10-orig/include/qwsdecoration_qws.h qt-2.3.10-new/include/qwsdecoration_qws.h
+--- qt-2.3.10-orig/include/qwsdecoration_qws.h 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/include/qwsdecoration_qws.h 2005-04-14 13:03:02.583481384 -0500
+@@ -50,7 +50,7 @@
+ enum Region { None=0, All=1, Title=2, Top=3, Bottom=4, Left=5, Right=6,
+ TopLeft=7, TopRight=8, BottomLeft=9, BottomRight=10,
+ Close=11, Minimize=12, Maximize=13, Normalize=14,
+- Menu=15, LastRegion=Menu };
++ Menu=15, LastRegion=Menu, UserDefined = 100 };
+
+ virtual QRegion region(const QWidget *, const QRect &rect, Region r=All) = 0;
+ virtual void close( QWidget * );
+diff -urN qt-2.3.10-orig/src/iconview/qiconview.cpp qt-2.3.10-new/src/iconview/qiconview.cpp
+--- qt-2.3.10-orig/src/iconview/qiconview.cpp 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/iconview/qiconview.cpp 2005-04-14 13:03:02.575482600 -0500
@@ -225,6 +225,7 @@
QIconView::SelectionMode selectionMode;
QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor;
QRect *rubber;
+ QPixmap *backBuffer;
QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer,
*fullRedrawTimer;
int rastX, rastY, spacing;
@@ -2268,6 +2269,7 @@
d->currentItem = 0;
d->highlightedItem = 0;
d->rubber = 0;
+ d->backBuffer = 0;
d->scrollTimer = 0;
d->startDragItem = 0;
d->tmpCurrentItem = 0;
@@ -2416,6 +2418,8 @@
delete item;
item = tmp;
}
+ delete d->backBuffer;
+ d->backBuffer = 0;
delete d->fm;
d->fm = 0;
#ifndef QT_NO_TOOLTIP
@@ -2882,6 +2886,48 @@
}
/*!
+ This function grabs all paintevents that otherwise would have been
+ processed by the QScrollView::viewportPaintEvent(). Here we use a
+ doublebuffer to reduce 'on-paint' flickering on QIconView
+ (and of course its childs).
+
+ \sa QScrollView::viewportPaintEvent(), QIconView::drawContents()
+*/
+
+void QIconView::bufferedPaintEvent( QPaintEvent* pe )
+{
+ QWidget* vp = viewport();
+ QRect r = pe->rect() & vp->rect();
+ int ex = r.x() + contentsX();
+ int ey = r.y() + contentsY();
+ int ew = r.width();
+ int eh = r.height();
+
+ if ( !d->backBuffer )
+ d->backBuffer = new QPixmap(vp->size());
+ if ( d->backBuffer->size() != vp->size() ) {
+ //Resize function (with hysteesis). Uses a good compromise between memory
+ //consumption and speed (number) of resizes.
+ float newWidth = (float)vp->width();
+ float newHeight = (float)vp->height();
+ if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() )
+ {
+ newWidth *= 1.1892;
+ newHeight *= 1.1892;
+ d->backBuffer->resize( (int)newWidth, (int)newHeight );
+ } else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() )
+ d->backBuffer->resize( (int)newWidth, (int)newHeight );
+ }
+
+ QPainter p;
+ p.begin(d->backBuffer, vp);
+ drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh);
+ p.end();
+ bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh);
+}
+
+/*!
+
\reimp
*/
@@ -4939,7 +4985,7 @@
if ( !d->rubber )
drawDragShapes( d->oldDragPos );
}
- viewportPaintEvent( (QPaintEvent*)e );
+ bufferedPaintEvent ((QPaintEvent*)e );
if ( d->dragging ) {
if ( !d->rubber )
drawDragShapes( d->oldDragPos );
@@ -5377,11 +5423,19 @@
return;
if ( item->d->container1 && d->firstContainer ) {
- item->d->container1->items.removeRef( item );
+ //Special-case checking of the last item, since this may be
+ //called a few times for the same item.
+ if (item->d->container1->items.last() == item)
+ item->d->container1->items.removeLast();
+ else
+ item->d->container1->items.removeRef( item );
}
item->d->container1 = 0;
if ( item->d->container2 && d->firstContainer ) {
- item->d->container2->items.removeRef( item );
+ if (item->d->container2->items.last() == item)
+ item->d->container2->items.removeLast();
+ else
+ item->d->container2->items.removeRef( item );
}
item->d->container2 = 0;
-Index: qt-2.3.10/src/iconview/qiconview.h
-===================================================================
---- qt-2.3.10.orig/src/iconview/qiconview.h 2005-02-24 21:09:53.060675971 +0100
-+++ qt-2.3.10/src/iconview/qiconview.h 2005-02-24 21:10:04.602019959 +0100
+diff -urN qt-2.3.10-orig/src/iconview/qiconview.h qt-2.3.10-new/src/iconview/qiconview.h
+--- qt-2.3.10-orig/src/iconview/qiconview.h 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/iconview/qiconview.h 2005-04-14 13:03:02.576482448 -0500
@@ -444,6 +444,7 @@
virtual void contentsDropEvent( QDropEvent *e );
#endif
+ void bufferedPaintEvent( QPaintEvent* );
virtual void resizeEvent( QResizeEvent* e );
virtual void keyPressEvent( QKeyEvent *e );
virtual void focusInEvent( QFocusEvent *e );
-Index: qt-2.3.10/src/kernel/qgfxraster_qws.cpp
-===================================================================
---- qt-2.3.10.orig/src/kernel/qgfxraster_qws.cpp 2005-02-24 21:09:54.817425663 +0100
-+++ qt-2.3.10/src/kernel/qgfxraster_qws.cpp 2005-02-24 21:10:02.521320506 +0100
+diff -urN qt-2.3.10-orig/src/kernel/qgfxraster_qws.cpp qt-2.3.10-new/src/kernel/qgfxraster_qws.cpp
+--- qt-2.3.10-orig/src/kernel/qgfxraster_qws.cpp 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/kernel/qgfxraster_qws.cpp 2005-04-14 13:03:02.580481840 -0500
@@ -4037,13 +4037,14 @@
for( loopc2=0;loopc2<frontadd;loopc2++ )
*(alphaptr++)=get_value_32(16,(unsigned char **)&temppos);
- PackType temp2;
- unsigned char * cp;
+ volatile PackType temp2;
+ volatile unsigned short int * cp;
for( loopc2=0;loopc2<count;loopc2++ ) {
- temp2=*((PackType *)temppos);
- cp=(unsigned char *)&temp2;
- *(alphaptr++)=get_value_32(16,&cp);
- *(alphaptr++)=get_value_32(16,&cp);
+ temp2=*reinterpret_cast<PackType *>(temppos);
+ cp=reinterpret_cast<volatile unsigned short int *>(&temp2);
+ *(alphaptr++)=qt_conv16ToRgb(*cp);
+ cp++;
+ *(alphaptr++)=qt_conv16ToRgb(*cp);
temppos += 2;
}
-Index: qt-2.3.10/src/kernel/qwindowsystem_qws.cpp
-===================================================================
---- qt-2.3.10.orig/src/kernel/qwindowsystem_qws.cpp 2005-02-24 21:09:53.891557664 +0100
-+++ qt-2.3.10/src/kernel/qwindowsystem_qws.cpp 2005-02-24 21:10:03.511177634 +0100
+diff -urN qt-2.3.10-orig/src/kernel/qwindowsystem_qws.cpp qt-2.3.10-new/src/kernel/qwindowsystem_qws.cpp
+--- qt-2.3.10-orig/src/kernel/qwindowsystem_qws.cpp 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/kernel/qwindowsystem_qws.cpp 2005-04-14 13:03:02.582481536 -0500
@@ -918,6 +918,18 @@
{
}
+static void catchSegvSignal( int )
+{
+#ifndef QT_NO_QWS_KEYBOARD
+ if ( qwsServer )
+ qwsServer->closeKeyboard();
+#endif
+ QWSServer::closedown();
+ fprintf(stderr, "Segmentation fault.\n");
+ exit(1);
+}
+
+
/*!
\class QWSServer qwindowsystem_qws.h
\brief Server-specific functionality in Qt/Embedded
@@ -1043,6 +1055,7 @@
}
signal(SIGPIPE, ignoreSignal); //we get it when we read
+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
#endif
focusw = 0;
mouseGrabber = 0;
-Index: qt-2.3.10/src/kernel/qwsdecoration_qws.h
-===================================================================
---- qt-2.3.10.orig/src/kernel/qwsdecoration_qws.h 2005-02-24 21:09:54.355491532 +0100
-+++ qt-2.3.10/src/kernel/qwsdecoration_qws.h 2005-02-24 21:10:03.040245652 +0100
+diff -urN qt-2.3.10-orig/src/kernel/qwsdecoration_qws.h qt-2.3.10-new/src/kernel/qwsdecoration_qws.h
+--- qt-2.3.10-orig/src/kernel/qwsdecoration_qws.h 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/kernel/qwsdecoration_qws.h 2005-04-14 13:03:02.583481384 -0500
@@ -50,7 +50,7 @@
enum Region { None=0, All=1, Title=2, Top=3, Bottom=4, Left=5, Right=6,
TopLeft=7, TopRight=8, BottomLeft=9, BottomRight=10,
Close=11, Minimize=12, Maximize=13, Normalize=14,
- Menu=15, LastRegion=Menu };
+ Menu=15, LastRegion=Menu, UserDefined = 100 };
virtual QRegion region(const QWidget *, const QRect &rect, Region r=All) = 0;
virtual void close( QWidget * );
-Index: qt-2.3.10/src/tools/qcstring.h
-===================================================================
---- qt-2.3.10.orig/src/tools/qcstring.h 2005-02-24 21:09:54.354491675 +0100
-+++ qt-2.3.10/src/tools/qcstring.h 2005-02-24 21:10:03.026247674 +0100
+diff -urN qt-2.3.10-orig/src/tools/qcstring.h qt-2.3.10-new/src/tools/qcstring.h
+--- qt-2.3.10-orig/src/tools/qcstring.h 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/tools/qcstring.h 2005-04-14 13:03:02.584481232 -0500
@@ -119,7 +119,7 @@
// We want to keep source compatibility for 2.x
// ### TODO for 4.0: completely remove these and the cstr* functions
-#if !defined(QT_GENUINE_STR)
+#if 0
#undef strlen
#define strlen qstrlen
-Index: qt-2.3.10/src/tools/qstring.cpp
-===================================================================
---- qt-2.3.10.orig/src/tools/qstring.cpp 2005-02-24 21:09:55.291358022 +0100
-+++ qt-2.3.10/src/tools/qstring.cpp 2005-02-24 21:10:01.748431931 +0100
+diff -urN qt-2.3.10-orig/src/tools/qstring.cpp qt-2.3.10-new/src/tools/qstring.cpp
+--- qt-2.3.10-orig/src/tools/qstring.cpp 2005-02-27 18:07:42.000000000 -0600
++++ qt-2.3.10-new/src/tools/qstring.cpp 2005-04-14 13:03:02.593479864 -0500
@@ -14469,7 +14469,11 @@
return qt_winQString2MB( *this );
#endif
#ifdef _WS_QWS_
- return utf8(); // ##### if there is ANY 8 bit format supported?
+ QTextCodec* codec = QTextCodec::codecForLocale();
+ return codec
+ ? codec->fromUnicode(*this)
+ : utf8();
+ //return latin1(); // ##### if there is ANY 8 bit format supported?
#endif
#endif
}
@@ -14515,7 +14519,12 @@
return qt_winMB2QString( local8Bit );
#endif
#ifdef _WS_QWS_
- return fromUtf8(local8Bit,len);
+ QTextCodec* codec = QTextCodec::codecForLocale();
+ if( len < 0) len = qstrlen(local8Bit);
+ return codec
+ ? codec->toUnicode(local8Bit, len)
+ : QString::fromUtf8(local8Bit,len);
+// return fromLatin1(local8Bit,len);
#endif
#endif // QT_NO_TEXTCODEC
}
-Index: qt-2.3.10/src/widgets/qcommonstyle.cpp
-===================================================================
---- qt-2.3.10.orig/src/widgets/qcommonstyle.cpp 2005-02-24 21:09:53.864561508 +0100
-+++ qt-2.3.10/src/widgets/qcommonstyle.cpp 2005-02-24 21:10:03.484181533 +0100
+diff -urN qt-2.3.10-orig/src/widgets/qcommonstyle.cpp qt-2.3.10-new/src/widgets/qcommonstyle.cpp
+--- qt-2.3.10-orig/src/widgets/qcommonstyle.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qcommonstyle.cpp 2005-04-14 13:03:02.595479560 -0500
@@ -572,7 +572,7 @@
bool enabled, bool active )
{
#ifndef QT_NO_MENUBAR
-#ifndef QT_NO_STYLE_SGI
+#if 1 // #ifndef QT_NO_STYLE_SGI
if (draw_menu_bar_impl != 0) {
QDrawMenuBarItemImpl impl = draw_menu_bar_impl;
(this->*impl)(p, x, y, w, h, mi, g, enabled, active);
-Index: qt-2.3.10/src/widgets/qlistview.cpp
-===================================================================
---- qt-2.3.10.orig/src/widgets/qlistview.cpp 2005-02-24 21:09:53.868560939 +0100
-+++ qt-2.3.10/src/widgets/qlistview.cpp 2005-02-24 21:10:03.500179222 +0100
+diff -urN qt-2.3.10-orig/src/widgets/qlistview.cpp qt-2.3.10-new/src/widgets/qlistview.cpp
+--- qt-2.3.10-orig/src/widgets/qlistview.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qlistview.cpp 2005-04-14 13:03:02.599478952 -0500
@@ -5051,9 +5051,9 @@
l = l->childItem ? l->childItem : l->siblingItem;
if ( l && l->height() )
- s.setHeight( s.height() + 10 * l->height() );
- else
- s.setHeight( s.height() + 140 );
+ s.setHeight( s.height() + 4 /*10*/ * l->height() );
+ else // ^v much too big for handhelds
+ s.setHeight( s.height() + 30 /*140*/ );
if ( s.width() > s.height() * 3 )
s.setHeight( s.width() / 3 );
-Index: qt-2.3.10/src/widgets/qtoolbutton.cpp
-===================================================================
---- qt-2.3.10.orig/src/widgets/qtoolbutton.cpp 2005-02-24 21:09:53.868560939 +0100
-+++ qt-2.3.10/src/widgets/qtoolbutton.cpp 2005-02-24 21:10:03.524175756 +0100
-@@ -332,12 +332,12 @@
- QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Large, QIconSet::Normal);
- w = pm.width();
- h = pm.height();
-- if ( w < 32 )
-- w = 32;
-- if ( h < 32 )
-- h = 32;
-+ if ( w < 24 )
-+ w = 24;
-+ if ( h < 24 )
-+ h = 24;
- } else {
-- w = h = 16;
-+ w = h = 14;
- QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Small, QIconSet::Normal);
- w = pm.width();
- h = pm.height();
-Index: qt-2.3.10/src/widgets/qtabbar.cpp
-===================================================================
---- qt-2.3.10.orig/src/widgets/qtabbar.cpp 2005-02-27 18:07:41.000000000 -0600
-+++ qt-2.3.10/src/widgets/qtabbar.cpp 2005-02-28 11:16:56.444377440 -0600
+diff -urN qt-2.3.10-orig/src/widgets/qpopupmenu.cpp qt-2.3.10-new/src/widgets/qpopupmenu.cpp
+--- qt-2.3.10-orig/src/widgets/qpopupmenu.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qpopupmenu.cpp 2005-04-14 13:02:10.440408336 -0500
+@@ -820,7 +820,7 @@
+ mi->custom()->setFont( font() );
+ if ( mi->iconSet() != 0)
+ maxPMWidth = QMAX( maxPMWidth,
+- mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4 );
++ mi->iconSet()->pixmap().width() + 4 );
+ }
+
+ int dh = QApplication::desktop()->height();
+diff -urN qt-2.3.10-orig/src/widgets/qtabbar.cpp qt-2.3.10-new/src/widgets/qtabbar.cpp
+--- qt-2.3.10-orig/src/widgets/qtabbar.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qtabbar.cpp 2005-04-14 13:03:02.601478648 -0500
@@ -260,7 +260,6 @@
lstatic->insert( index, newTab );
layoutTabs();
- updateArrowButtons();
makeVisible( tab( currentTab() ) );
#ifndef QT_NO_ACCEL
@@ -282,7 +281,6 @@
l->remove( t );
lstatic->remove( t );
layoutTabs();
- updateArrowButtons();
makeVisible( tab( currentTab() ) );
update();
}
-@@ -887,6 +885,7 @@
+@@ -414,8 +412,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+@@ -442,7 +440,11 @@
+ ? QIconSet::Normal : QIconSet::Disabled;
+ if ( mode == QIconSet::Normal && has_focus )
+ mode = QIconSet::Active;
+- QPixmap pixmap = t->iconset->pixmap( QIconSet::Small, mode );
++ QPixmap pixmap;
++ if ( mode == QIconSet::Disabled )
++ pixmap = t->iconset->pixmap( QIconSet::Automatic, QIconSet::Disabled );
++ else
++ pixmap = t->iconset->pixmap();
+ int pixw = pixmap.width();
+ int pixh = pixmap.height();
+ r.setLeft( r.left() + pixw + 2 );
+@@ -871,8 +873,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isNull())
+ iw +=2;
+ }
+@@ -887,6 +889,7 @@
}
for ( t = lstatic->first(); t; t = lstatic->next() )
t->r.setHeight( r.height() );
+ updateArrowButtons();
}
/*!
-@@ -977,7 +976,6 @@
+@@ -915,8 +918,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+@@ -947,8 +950,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+@@ -977,7 +980,6 @@
d->leftB->setGeometry( width() - 2*arrowWidth, 0, arrowWidth, height() );
#endif
layoutTabs();
- updateArrowButtons();
makeVisible( tab( currentTab() ));
}
+
+diff -urN qt-2.3.10-orig/src/widgets/qtoolbutton.cpp qt-2.3.10-new/src/widgets/qtoolbutton.cpp
+--- qt-2.3.10-orig/src/widgets/qtoolbutton.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qtoolbutton.cpp 2005-04-14 13:03:02.600478800 -0500
+@@ -332,12 +332,12 @@
+ QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Large, QIconSet::Normal);
+ w = pm.width();
+ h = pm.height();
+- if ( w < 32 )
+- w = 32;
+- if ( h < 32 )
+- h = 32;
++ if ( w < 24 )
++ w = 24;
++ if ( h < 24 )
++ h = 24;
+ } else {
+- w = h = 16;
++ w = h = 14;
+ QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Small, QIconSet::Normal);
+ w = pm.width();
+ h = pm.height();
+diff -urN qt-2.3.10-orig/src/widgets/qwindowsstyle.cpp qt-2.3.10-new/src/widgets/qwindowsstyle.cpp
+--- qt-2.3.10-orig/src/widgets/qwindowsstyle.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10-new/src/widgets/qwindowsstyle.cpp 2005-04-14 13:02:10.442408032 -0500
+@@ -1182,7 +1182,7 @@
+ h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame;
+
+ if ( !mi->isSeparator() && mi->iconSet() != 0 ) {
+- h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame );
++ h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame );
+ }
+ if ( mi->custom() )
+ h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame );
+@@ -1246,7 +1246,11 @@
+ QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal;
+ if (act && !dis )
+ mode = QIconSet::Active;
+- QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode );
++ QPixmap pixmap;
++ if ( mode == QIconSet::Disabled )
++ pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, QIconSet::Disabled );
++ else
++ pixmap = mi->iconSet()->pixmap();
+ int pixw = pixmap.width();
+ int pixh = pixmap.height();
+ if ( act && !dis ) {
diff --git a/qt/qt-2.3.10.patch/qte-iconsize.patch b/qt/qt-2.3.10.patch/qte-iconsize.patch
new file mode 100644
index 0000000..cc14315
--- a/dev/null
+++ b/qt/qt-2.3.10.patch/qte-iconsize.patch
@@ -0,0 +1,99 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- qt-2.3.10/src/widgets/qpopupmenu.cpp~qte-iconsize
++++ qt-2.3.10/src/widgets/qpopupmenu.cpp
+@@ -820,7 +820,7 @@
+ mi->custom()->setFont( font() );
+ if ( mi->iconSet() != 0)
+ maxPMWidth = QMAX( maxPMWidth,
+- mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4 );
++ mi->iconSet()->pixmap().width() + 4 );
+ }
+
+ int dh = QApplication::desktop()->height();
+--- qt-2.3.10/src/widgets/qtabbar.cpp~qte-iconsize
++++ qt-2.3.10/src/widgets/qtabbar.cpp
+@@ -414,8 +414,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+@@ -442,7 +442,11 @@
+ ? QIconSet::Normal : QIconSet::Disabled;
+ if ( mode == QIconSet::Normal && has_focus )
+ mode = QIconSet::Active;
+- QPixmap pixmap = t->iconset->pixmap( QIconSet::Small, mode );
++ QPixmap pixmap;
++ if ( mode == QIconSet::Disabled )
++ pixmap = t->iconset->pixmap( QIconSet::Automatic, QIconSet::Disabled );
++ else
++ pixmap = t->iconset->pixmap();
+ int pixw = pixmap.width();
+ int pixh = pixmap.height();
+ r.setLeft( r.left() + pixw + 2 );
+@@ -871,8 +875,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isNull())
+ iw +=2;
+ }
+@@ -915,8 +919,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+@@ -947,8 +951,8 @@
+ int iw = 0;
+ int ih = 0;
+ if ( t->iconset != 0 ) {
+- iw = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).width();
+- ih = t->iconset->pixmap( QIconSet::Small, QIconSet::Normal ).height();
++ iw = t->iconset->pixmap().width();
++ ih = t->iconset->pixmap().height();
+ if (!t->label.isEmpty())
+ iw +=2;
+ }
+--- qt-2.3.10/src/widgets/qwindowsstyle.cpp~qte-iconsize
++++ qt-2.3.10/src/widgets/qwindowsstyle.cpp
+@@ -1182,7 +1182,7 @@
+ h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame;
+
+ if ( !mi->isSeparator() && mi->iconSet() != 0 ) {
+- h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame );
++ h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame );
+ }
+ if ( mi->custom() )
+ h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame );
+@@ -1246,7 +1246,11 @@
+ QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal;
+ if (act && !dis )
+ mode = QIconSet::Active;
+- QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode );
++ QPixmap pixmap;
++ if ( mode == QIconSet::Disabled )
++ pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, QIconSet::Disabled );
++ else
++ pixmap = mi->iconSet()->pixmap();
+ int pixw = pixmap.width();
+ int pixh = pixmap.height();
+ if ( act && !dis ) {