summaryrefslogtreecommitdiff
path: root/qt
authorzecke <zecke>2004-07-23 18:18:15 (UTC)
committer zecke <zecke>2004-07-23 18:18:15 (UTC)
commitf9499e14b777050f0bdb3821ca8421dd4c7231fd (patch) (side-by-side diff)
tree7d96a449aa3b211bd7c5bc9f4d5a7908005cd287 /qt
parent984ab6b8bccf667a89062d959defed4a5d86bfb1 (diff)
downloadopie-f9499e14b777050f0bdb3821ca8421dd4c7231fd.zip
opie-f9499e14b777050f0bdb3821ca8421dd4c7231fd.tar.gz
opie-f9499e14b777050f0bdb3821ca8421dd4c7231fd.tar.bz2
Split up the patches for Qt2.3.7 and Qt2.3.8 and add comments
on what they do
Diffstat (limited to 'qt') (more/less context) (show whitespace changes)
-rw-r--r--qt/README.qt-patches6
-rw-r--r--qt/qt-2.3.7.patch/qte237-adjustsizes.patch64
-rw-r--r--qt/qt-2.3.7.patch/qte237-all.patch1261
-rw-r--r--qt/qt-2.3.7.patch/qte237-allowoverride.patch229
-rw-r--r--qt/qt-2.3.7.patch/qte237-g++-aslinker.patch161
-rw-r--r--qt/qt-2.3.7.patch/qte237-gcc34.patch21
-rw-r--r--qt/qt-2.3.7.patch/qte237-hancomwordcrash.patch14
-rw-r--r--qt/qt-2.3.7.patch/qte237-iconviewspeed.patch149
-rw-r--r--qt/qt-2.3.7.patch/qte237-keyboard.patch43
-rw-r--r--qt/qt-2.3.7.patch/qte237-lefthand.patch7
-rw-r--r--qt/qt-2.3.8.patch/qte238-adjustsizes.patch64
-rw-r--r--qt/qt-2.3.8.patch/qte238-all.patch797
-rw-r--r--qt/qt-2.3.8.patch/qte238-allowoverride.patch231
-rw-r--r--qt/qt-2.3.8.patch/qte238-gcc34.patch440
-rw-r--r--qt/qt-2.3.8.patch/qte238-hancomwordcrash.patch15
-rw-r--r--qt/qt-2.3.8.patch/qte238-iconviewspeed.patch145
-rw-r--r--qt/qt-2.3.8.patch/qte238-keyboard.patch47
17 files changed, 3457 insertions, 237 deletions
diff --git a/qt/README.qt-patches b/qt/README.qt-patches
new file mode 100644
index 0000000..e079ba7
--- a/dev/null
+++ b/qt/README.qt-patches
@@ -0,0 +1,6 @@
+The Qt patches are patches generally useful for all platforms.
+For specefic Device patches like Keyboard and Mousedrivers see
+
+http://openembedded.bkbits.net:8080/packages/src/qte/qte-2.3.7?nav=index.html|src/.|src/qte
+
+
diff --git a/qt/qt-2.3.7.patch/qte237-adjustsizes.patch b/qt/qt-2.3.7.patch/qte237-adjustsizes.patch
new file mode 100644
index 0000000..ac1e31a
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-adjustsizes.patch
@@ -0,0 +1,64 @@
+Qt was not created for 240x320 and we adjust some default values to be more
+sane for the usage on handhelds
+
+
+
+
+diff -ur qt-2.3.7-old/src/widgets/qcommonstyle.cpp qt-2.3.7/src/widgets/qcommonstyle.cpp
+--- qt-2.3.7-old/src/widgets/qcommonstyle.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qcommonstyle.cpp 2004-07-23 15:38:13.000000000 +0200
+@@ -566,7 +566,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);
+diff -ur qt-2.3.7-old/src/widgets/qlistview.cpp qt-2.3.7/src/widgets/qlistview.cpp
+--- qt-2.3.7-old/src/widgets/qlistview.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qlistview.cpp 2004-07-23 15:38:13.000000000 +0200
+@@ -4968,9 +4968,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 );
+diff -ur qt-2.3.7-old/src/widgets/qtoolbutton.cpp qt-2.3.7/src/widgets/qtoolbutton.cpp
+--- qt-2.3.7-old/src/widgets/qtoolbutton.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qtoolbutton.cpp 2004-07-23 15:38:13.000000000 +0200
+@@ -230,7 +230,7 @@
+ else
+ QToolTip::add( this, textLabel );
+ }
+-#endif
++#endif
+ }
+
+
+@@ -324,12 +324,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 --git a/qt/qt-2.3.7.patch/qte237-all.patch b/qt/qt-2.3.7.patch/qte237-all.patch
index 596db2f..e3351a3 100644
--- a/qt/qt-2.3.7.patch/qte237-all.patch
+++ b/qt/qt-2.3.7.patch/qte237-all.patch
@@ -1,465 +1,1354 @@
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
---- qt-2.3.7/src/kernel/qapplication.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qapplication.cpp 2004-04-15 21:06:51.232857014 +0200
+Included patches:
+
+qte237-allowoverride.patch
+qte237-g++-aslinker.patch
+qte237-iconviewspeed.patch
+qte237-adjustsizes.patch
+qte237-encoding.patch
+qte237-keyboard.patch
+qte237-gcc34.patch
+qte237-lefthand.patch
+
+
+
+
+
+
+
+
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-shared qt-2.3.7/configs/linux-generic-g++-shared
+--- qt-2.3.7-old/configs/linux-generic-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-shared-debug qt-2.3.7/configs/linux-generic-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-generic-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-static qt-2.3.7/configs/linux-generic-g++-static
+--- qt-2.3.7-old/configs/linux-generic-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-static-debug qt-2.3.7/configs/linux-generic-g++-static-debug
+--- qt-2.3.7-old/configs/linux-generic-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared qt-2.3.7/configs/linux-generic_rtti-g++-shared
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static qt-2.3.7/configs/linux-generic_rtti-g++-static
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug qt-2.3.7/configs/linux-generic_rtti-g++-static-debug
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared qt-2.3.7/configs/linux-x86rtti-g++-shared
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug qt-2.3.7/configs/linux-x86rtti-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static qt-2.3.7/configs/linux-x86rtti-g++-static
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug qt-2.3.7/configs/linux-x86rtti-g++-static-debug
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/include/qapplication.h qt-2.3.7/include/qapplication.h
+--- qt-2.3.7-old/include/qapplication.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qapplication.h 2004-07-23 15:25:42.000000000 +0200
+@@ -61,6 +61,10 @@
+ class QSemaphore;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ // REMOVE IN 3.0 (just here for moc source compatibility)
+ #define QNonBaseApplication QApplication
+
+@@ -85,7 +89,10 @@
+
+ #ifndef QT_NO_STYLE
+ static QStyle &style();
+- static void setStyle( QStyle* );
++ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
++private:
++ static void setStyle_NonWeak( QStyle* );
++public:
+ #endif
+ #if 1 /* OBSOLETE */
+ enum ColorMode { NormalColors, CustomColors };
+@@ -106,11 +113,19 @@
+ #ifndef QT_NO_PALETTE
+ static QPalette palette( const QWidget* = 0 );
+ static void setPalette( const QPalette &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ #endif
+ static QFont font( const QWidget* = 0 );
+ static void setFont( const QFont &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ static QFontMetrics fontMetrics();
+
+ QWidget *mainWidget() const;
+@@ -207,7 +222,10 @@
+ void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
+ #ifndef QT_NO_QWS_MANAGER
+ static QWSDecoration &qwsDecoration();
+- static void qwsSetDecoration( QWSDecoration *);
++ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
++private:
++ static void qwsSetDecoration_NonWeak( QWSDecoration *);
++public:
+ #endif
+ #endif
+
+diff -ur qt-2.3.7-old/include/qcstring.h qt-2.3.7/include/qcstring.h
+--- qt-2.3.7-old/include/qcstring.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qcstring.h 2004-07-23 15:42:01.000000000 +0200
+@@ -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 -ur qt-2.3.7-old/include/qfontdatabase.h qt-2.3.7/include/qfontdatabase.h
+--- qt-2.3.7-old/include/qfontdatabase.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qfontdatabase.h 2004-07-23 15:25:42.000000000 +0200
+@@ -59,6 +59,10 @@
+ class QDiskFont;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ class QFontDatabasePrivate;
+
+ class Q_EXPORT QFontDatabase
+@@ -67,9 +71,16 @@
+ QFontDatabase();
+
+ QStringList families( bool onlyForLocale = TRUE ) const;
++
++
+ QValueList<int> pointSizes( const QString &family,
+ const QString &style = QString::null,
+- const QString &charSet = QString::null );
++ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
++private:
++ QValueList<int> pointSizes_NonWeak( const QString &family,
++ const QString &style,
++ const QString &charSet );
++public:
+ QStringList styles( const QString &family,
+ const QString &charSet = QString::null ) const;
+ QStringList charSets( const QString &familyName,
+diff -ur qt-2.3.7-old/include/qglobal.h qt-2.3.7/include/qglobal.h
+--- qt-2.3.7-old/include/qglobal.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qglobal.h 2004-07-23 15:42:01.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+diff -ur qt-2.3.7-old/include/qiconview.h qt-2.3.7/include/qiconview.h
+--- qt-2.3.7-old/include/qiconview.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qiconview.h 2004-07-23 15:45:34.000000000 +0200
+@@ -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 );
+diff -ur qt-2.3.7-old/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h
+--- qt-2.3.7-old/include/qsortedlist.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qsortedlist.h 2004-07-23 15:42:01.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.7-old/include/qstring.h qt-2.3.7/include/qstring.h
+--- qt-2.3.7-old/include/qstring.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/include/qstring.h 2004-07-23 15:42:01.000000000 +0200
+@@ -163,8 +163,16 @@
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+
++
++#ifdef Q_NO_PACKED_REFERENCE
++ uchar& cell() { return *(&cl); }
++ uchar& row() { return *(&rw); }
++#else
+ uchar& cell() { return cl; }
+- uchar& row() { return rw; }
++ uchar& row() { return rw; }
++#endif
++
++
+ uchar cell() const { return cl; }
+ uchar row() const { return rw; }
+
+diff -ur qt-2.3.7-old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp
+--- qt-2.3.7-old/src/iconview/qiconview.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/iconview/qiconview.cpp 2004-07-23 15:45:34.000000000 +0200
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+-** $Id$
++** $Id$
+ **
+ ** Implementation of QIconView widget class
+ **
+@@ -220,6 +220,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;
+@@ -2263,6 +2264,7 @@
+ d->currentItem = 0;
+ d->highlightedItem = 0;
+ d->rubber = 0;
++ d->backBuffer = 0;
+ d->scrollTimer = 0;
+ d->startDragItem = 0;
+ d->tmpCurrentItem = 0;
+@@ -2411,6 +2413,8 @@
+ delete item;
+ item = tmp;
+ }
++ delete d->backBuffer;
++ d->backBuffer = 0;
+ delete d->fm;
+ d->fm = 0;
+ #ifndef QT_NO_TOOLTIP
+@@ -2877,6 +2881,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
+ */
+
+@@ -4855,7 +4901,7 @@
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+ }
+- viewportPaintEvent( (QPaintEvent*)e );
++ bufferedPaintEvent ((QPaintEvent*)e );
+ if ( d->dragging ) {
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+@@ -5286,11 +5332,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;
+
+diff -ur qt-2.3.7-old/src/iconview/qiconview.h qt-2.3.7/src/iconview/qiconview.h
+--- qt-2.3.7-old/src/iconview/qiconview.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/iconview/qiconview.h 2004-07-23 15:45:34.000000000 +0200
+@@ -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 );
+diff -ur qt-2.3.7-old/src/kernel/qapplication.cpp qt-2.3.7/src/kernel/qapplication.cpp
+--- qt-2.3.7-old/src/kernel/qapplication.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication.cpp 2004-07-23 15:25:42.000000000 +0200
@@ -35,6 +35,8 @@
**
**********************************************************************/
+#define QT_WEAK_SYMBOL __attribute__(( weak ))
+
#include "qobjectlist.h"
#include "qobjectdict.h"
#include "qapplication.h"
@@ -933,11 +935,16 @@
#ifndef QT_NO_STYLE
void QApplication::setStyle( QStyle *style )
{
+ setStyle_NonWeak ( style );
+}
+
+void QApplication::setStyle_NonWeak( QStyle *style )
+{
QStyle* old = app_style;
- app_style = style;
if ( startingUp() ) {
delete old;
+ app_style = style;
return;
}
@@ -958,6 +965,8 @@
old->unPolish( qApp );
}
+ app_style = style;
+
// take care of possible palette requirements of certain gui
// styles. Do it before polishing the application since the style
// might call QApplication::setStyle() itself
@@ -1184,13 +1193,30 @@
\sa QWidget::setPalette(), palette(), QStyle::polish()
*/
-void QApplication::setPalette( const QPalette &palette, bool informWidgets,
+void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
+ const char* className )
+{
+ setPalette_NonWeak ( palette, informWidgets, className );
+}
+
+void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
const char* className )
{
QPalette pal = palette;
#ifndef QT_NO_STYLE
- if ( !startingUp() )
+ if ( !startingUp() ) {
qApp->style().polish( pal ); // NB: non-const reference
+ if ( className ) {
+ // if we just polished a class specific palette (this normally
+ // only called by qt_fix_tooltips - see below), we better re-
+ // polish the global palette. Some styles like liquid can get
+ // confused, because they can not detect if the polished palette
+ // is the global one or only a class specific one.
+ // (liquid uses this palette to calculate blending pixmaps)
+ QPalette p = qApp-> palette ( );
+ qApp->style().polish ( p );
+ }
+ }
#endif
bool all = FALSE;
if ( !className ) {
@@ -1275,6 +1301,12 @@
void QApplication::setFont( const QFont &font, bool informWidgets,
const char* className )
{
+ setFont_NonWeak ( font, informWidgets, className );
+}
+
+void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
+ const char* className )
+{
bool all = FALSE;
if ( !className ) {
if ( !app_font ) {
---- qt-2.3.7/src/kernel/qapplication.h~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qapplication.h 2004-04-15 21:06:51.232857014 +0200
+diff -ur qt-2.3.7-old/src/kernel/qapplication.h qt-2.3.7/src/kernel/qapplication.h
+--- qt-2.3.7-old/src/kernel/qapplication.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication.h 2004-07-23 15:25:42.000000000 +0200
@@ -61,6 +61,10 @@
class QSemaphore;
#endif
+#if !defined( QT_WEAK_SYMBOL )
+#define QT_WEAK_SYMBOL
+#endif
+
// REMOVE IN 3.0 (just here for moc source compatibility)
#define QNonBaseApplication QApplication
@@ -85,7 +89,10 @@
#ifndef QT_NO_STYLE
static QStyle &style();
- static void setStyle( QStyle* );
+ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
+private:
+ static void setStyle_NonWeak( QStyle* );
+public:
#endif
#if 1 /* OBSOLETE */
enum ColorMode { NormalColors, CustomColors };
@@ -106,11 +113,19 @@
#ifndef QT_NO_PALETTE
static QPalette palette( const QWidget* = 0 );
static void setPalette( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 ) QT_WEAK_SYMBOL;
+private:
+ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
const char* className = 0 );
+public:
#endif
static QFont font( const QWidget* = 0 );
static void setFont( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 ) QT_WEAK_SYMBOL;
+private:
+ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
const char* className = 0 );
+public:
static QFontMetrics fontMetrics();
QWidget *mainWidget() const;
@@ -207,7 +222,10 @@
void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
#ifndef QT_NO_QWS_MANAGER
static QWSDecoration &qwsDecoration();
- static void qwsSetDecoration( QWSDecoration *);
+ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
+private:
+ static void qwsSetDecoration_NonWeak( QWSDecoration *);
+public:
#endif
#endif
---- qt-2.3.7/src/kernel/qapplication_qws.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qapplication_qws.cpp 2004-04-15 21:06:51.234856703 +0200
+diff -ur qt-2.3.7-old/src/kernel/qapplication_qws.cpp qt-2.3.7/src/kernel/qapplication_qws.cpp
+--- qt-2.3.7-old/src/kernel/qapplication_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication_qws.cpp 2004-07-23 15:25:42.000000000 +0200
@@ -2804,6 +2804,11 @@
*/
void QApplication::qwsSetDecoration( QWSDecoration *d )
{
+ qwsSetDecoration_NonWeak ( d );
+}
+
+void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
+{
if ( d ) {
delete qws_decoration;
qws_decoration = d;
---- qt-2.3.7/src/kernel/qfontdatabase.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qfontdatabase.cpp 2004-04-15 21:06:51.235856547 +0200
+diff -ur qt-2.3.7-old/src/kernel/qfontdatabase.cpp qt-2.3.7/src/kernel/qfontdatabase.cpp
+--- qt-2.3.7-old/src/kernel/qfontdatabase.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qfontdatabase.cpp 2004-07-23 15:25:42.000000000 +0200
@@ -35,6 +35,8 @@
**
**********************************************************************/
+#define QT_WEAK_SYMBOL __attribute__(( weak ))
+
#include "qfontdatabase.h"
#ifndef QT_NO_FONTDATABASE
@@ -2424,6 +2426,13 @@
const QString &style,
const QString &charSet )
{
+ return pointSizes_NonWeak ( family, style, charSet );
+}
+
+QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
+ const QString &style,
+ const QString &charSet )
+{
QString cs( charSet );
if ( charSet.isEmpty() ) {
QStringList lst = charSets( family );
---- qt-2.3.7/src/kernel/qfontdatabase.h~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qfontdatabase.h 2004-04-15 21:06:51.236856392 +0200
+diff -ur qt-2.3.7-old/src/kernel/qfontdatabase.h qt-2.3.7/src/kernel/qfontdatabase.h
+--- qt-2.3.7-old/src/kernel/qfontdatabase.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qfontdatabase.h 2004-07-23 15:25:42.000000000 +0200
@@ -59,6 +59,10 @@
class QDiskFont;
#endif
+#if !defined( QT_WEAK_SYMBOL )
+#define QT_WEAK_SYMBOL
+#endif
+
class QFontDatabasePrivate;
class Q_EXPORT QFontDatabase
@@ -67,9 +71,16 @@
QFontDatabase();
QStringList families( bool onlyForLocale = TRUE ) const;
+
+
QValueList<int> pointSizes( const QString &family,
const QString &style = QString::null,
- const QString &charSet = QString::null );
+ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
+private:
+ QValueList<int> pointSizes_NonWeak( const QString &family,
+ const QString &style,
+ const QString &charSet );
+public:
QStringList styles( const QString &family,
const QString &charSet = QString::null ) const;
QStringList charSets( const QString &familyName,
---- qt-2.3.7/src/kernel/qgfxraster_qws.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qgfxraster_qws.cpp 2004-04-15 21:06:51.238856081 +0200
-@@ -4237,7 +4237,7 @@
- setAlphaType(IgnoreAlpha);
- if ( w <= 0 || h <= 0 || !ncliprect ) return;
- GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
--#ifdef QWS_EXPERIMENTAL_FASTPATH
-+#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
- // ### fix for 8bpp
- // This seems to be reliable now, at least for 16bpp
-
---- qt-2.3.7/src/kernel/qwindowsystem_qws.cpp~qte237-all 2003-07-17 03:20:26.000000000 +0200
-+++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-04-15 21:06:51.240855770 +0200
+diff -ur qt-2.3.7-old/src/kernel/qgfxtransformed_qws.cpp qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp
+--- qt-2.3.7-old/src/kernel/qgfxtransformed_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp 2004-07-23 15:42:01.000000000 +0200
+@@ -671,11 +671,11 @@
+ inline int tx( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return y - xoffs + yoffs;
++ return y - this->xoffs + this->yoffs;
+ case QTransformedScreen::Rot180:
+- return (width - x - 1) - xoffs - xoffs;
++ return (this->width - x - 1) - this->xoffs - this->xoffs;
+ case QTransformedScreen::Rot270:
+- return (height - y - 1) - xoffs - yoffs;
++ return (this->height - y - 1) - this->xoffs - this->yoffs;
+ default:
+ return x;
+ }
+@@ -683,11 +683,11 @@
+ inline int ty( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return (width - x - 1) - yoffs - xoffs;
++ return (this->width - x - 1) - this->yoffs - this->xoffs;
+ case QTransformedScreen::Rot180:
+- return (height - y - 1) - yoffs - yoffs;
++ return (this->height - y - 1) - this->yoffs - this->yoffs;
+ case QTransformedScreen::Rot270:
+- return x - yoffs + xoffs;
++ return x - this->yoffs + this->xoffs;
+ default:
+ return y;
+ }
+@@ -715,23 +715,23 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::setSourceWidgetOffset(int x, int y)
+ {
+- if ( srcbits == buffer ) {
++ if ( this->srcbits == this->buffer ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- srcwidgetoffs = QPoint( y, width - x - srcwidth );
++ this->srcwidgetoffs = QPoint( y, this->width - x - this->srcwidth );
+ break;
+ case QTransformedScreen::Rot180:
+- srcwidgetoffs = QPoint( width - x - srcwidth, height - y - srcheight );
++ this->srcwidgetoffs = QPoint( this->width - x - this->srcwidth, this->height - y - this->srcheight );
+ break;
+ case QTransformedScreen::Rot270:
+- srcwidgetoffs = QPoint( height - y - srcheight, x );
++ this->srcwidgetoffs = QPoint( this->height - y - this->srcheight, x );
+ break;
+ default:
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ break;
+ }
+ } else
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ }
+
+ template <const int depth, const int type>
+@@ -739,8 +739,8 @@
+ {
+ QT_TRANS_GFX_BASE<depth,type>::setSource(i);
+ QSize s = qt_screen->mapToDevice( QSize(i->width(), i->height()) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+ }
+
+ template <const int depth, const int type>
+@@ -782,7 +782,7 @@
+ if ( w == 0 || h == 0 )
+ return;
+ QRect r( x, y, w, h );
+- if ( cbrush.style() == SolidPattern ) {
++ if ( this->cbrush.style() == Qt::SolidPattern ) {
+ r.setCoords( tx(x,y), ty(x,y), tx(x+w-1,y+h-1), ty(x+w-1,y+h-1) );
+ r = r.normalize();
+ }
+@@ -797,7 +797,7 @@
+ // solution. The brush offset logic is complicated enough, so we don't
+ // fastpath patternedbrush.
+
+- if ( inDraw || cpen.style()==NoPen || patternedbrush ) {
++ if ( inDraw || this->cpen.style()==Qt::NoPen || this->patternedbrush ) {
+ //slowpath
+ QT_TRANS_GFX_BASE<depth,type>::drawPolygon( a, w, idx, num );
+ } else {
+@@ -819,29 +819,29 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::processSpans( int n, QPoint* point, int* width )
+ {
+- if ( inDraw || patternedbrush && srcwidth != 0 && srcheight != 0 ) {
++ if ( inDraw || this->patternedbrush && this->srcwidth != 0 && this->srcheight != 0 ) {
+ //in the patternedbrush case, we let blt do the transformation
+ // so we leave inDraw false.
+- QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
++ QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
+ } else {
+ inDraw = TRUE;
+ while (n--) {
+ if ( *width > 0 ) {
+- int x=tx(point->x(),point->y())+xoffs;
+- int y=ty(point->x(),point->y())+yoffs;
++ int x=tx(point->x(),point->y())+this->xoffs;
++ int y=ty(point->x(),point->y())+this->yoffs;
+
+ switch( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- vline( x, y-(*width-1), y );
++ this->vline( x, y-(*width-1), y );
+ break;
+ case QTransformedScreen::Rot180:
+- hline( x - (*width-1), x, y );
++ this->hline( x - (*width-1), x, y );
+ break;
+ case QTransformedScreen::Rot270:
+- vline( x, y, y+*width-1 );
++ this->vline( x, y, y+*width-1 );
+ break;
+ default:
+- hline( x, x+*width-1, y );
++ this->hline( x, x+*width-1, y );
+ break;
+ }
+ }
+@@ -896,14 +896,14 @@
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+ rsx = sy;
+- rsy = srcwidth - sx - w;
++ rsy = this->srcwidth - sx - w;
+ break;
+ case QTransformedScreen::Rot180:
+- rsx = srcwidth - sx - w;
+- rsy = srcheight - sy - h;
++ rsx = this->srcwidth - sx - w;
++ rsy = this->srcheight - sy - h;
+ break;
+ case QTransformedScreen::Rot270:
+- rsx = srcheight - sy - h;
++ rsx = this->srcheight - sy - h;
+ rsy = sx;
+ break;
+ default:
+@@ -941,39 +941,39 @@
+ r.setCoords( tx(rx,ry), ty(rx,ry), tx(rx+w-1,ry+h-1), ty(rx+w-1,ry+h-1) );
+ r = r.normalize();
+
+- QPoint oldBrushOffs = brushoffs;
++ QPoint oldBrushOffs = this->brushoffs;
+ int brx, bry;
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- brx = brushoffs.y();
+- bry = srcwidth - brushoffs.x() - w;
++ brx = this->brushoffs.y();
++ bry = this->srcwidth - this->brushoffs.x() - w;
+ break;
+ case QTransformedScreen::Rot180:
+- brx = srcwidth - brushoffs.x() - w;
+- bry = srcheight - brushoffs.y() - h;
++ brx = this->srcwidth - this->brushoffs.x() - w;
++ bry = this->srcheight - this->brushoffs.y() - h;
+ break;
+ case QTransformedScreen::Rot270:
+- brx = srcheight - brushoffs.y() - h;
+- bry = brushoffs.x();
++ brx = this->srcheight - this->brushoffs.y() - h;
++ bry = this->brushoffs.x();
+ break;
+ default:
+- brx = brushoffs.x();
+- bry = brushoffs.y();
++ brx = this->brushoffs.x();
++ bry = this->brushoffs.y();
+ break;
+ }
+- brushoffs = QPoint( brx, bry );
++ this->brushoffs = QPoint( brx, bry );
+
+- int oldsw = srcwidth;
+- int oldsh = srcheight;
+- QSize s = qt_screen->mapToDevice( QSize(srcwidth,srcheight) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ int oldsw = this->srcwidth;
++ int oldsh = this->srcheight;
++ QSize s = qt_screen->mapToDevice( QSize(this->srcwidth,this->srcheight) );
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+
+ QT_TRANS_GFX_BASE<depth,type>::tiledBlt( r.x(), r.y(), r.width(), r.height() );
+
+- srcwidth = oldsw;
+- srcheight = oldsh;
+- brushoffs = oldBrushOffs;
++ this->srcwidth = oldsw;
++ this->srcheight = oldsh;
++ this->brushoffs = oldBrushOffs;
+ inDraw = FALSE;
+ }
+
+diff -ur qt-2.3.7-old/src/kernel/qgfxvfb_qws.cpp qt-2.3.7/src/kernel/qgfxvfb_qws.cpp
+--- qt-2.3.7-old/src/kernel/qgfxvfb_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qgfxvfb_qws.cpp 2004-07-23 15:42:01.000000000 +0200
+@@ -31,7 +31,6 @@
+ **********************************************************************/
+
+ #include "qgfxraster_qws.h"
+-
+ #ifndef QT_NO_QWS_VFB
+
+ #include <sys/ipc.h>
+@@ -140,8 +139,8 @@
+ void QGfxVFb<depth,type>::drawPoint( int x, int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) );
+ QGfxRaster<depth,type>::drawPoint( x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -150,8 +149,8 @@
+ void QGfxVFb<depth,type>::drawPoints( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPoints( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -160,9 +159,9 @@
+ void QGfxVFb<depth,type>::drawLine( int x1,int y1,int x2,int y2 )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx ) {
++ if ( this->is_screen_gfx ) {
+ QRect r;
+- r.setCoords( x1+xoffs, y1+yoffs, x2+xoffs, y2+yoffs );
++ r.setCoords( x1+this->xoffs, y1+this->yoffs, x2+this->xoffs, y2+this->yoffs );
+ qvfb_screen->setDirty( r.normalize() );
+ }
+ QGfxRaster<depth,type>::drawLine( x1, y1, x2, y2 );
+@@ -173,8 +172,8 @@
+ void QGfxVFb<depth,type>::fillRect( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::fillRect( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+@@ -183,8 +182,8 @@
+ void QGfxVFb<depth,type>::drawPolyline( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolyline( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -193,8 +192,8 @@
+ void QGfxVFb<depth,type>::drawPolygon( const QPointArray &pa,bool w,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolygon( pa, w, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -203,8 +202,8 @@
+ void QGfxVFb<depth,type>::blt( int x,int y,int w,int h, int sx, int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::blt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -215,8 +214,8 @@
+ QWSDisplay::grab( TRUE );
+ int dy = sy - y;
+ int dx = sx - x;
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs,
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs,
+ w+abs(dx), h+abs(dy)) );
+ QGfxRaster<depth,type>::scroll( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+@@ -227,8 +226,8 @@
+ void QGfxVFb<depth,type>::stretchBlt( int x,int y,int w,int h,int sx,int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::stretchBlt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -238,8 +237,8 @@
+ void QGfxVFb<depth,type>::tiledBlt( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::tiledBlt( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+diff -ur qt-2.3.7-old/src/kernel/qkeyboard_qws.cpp qt-2.3.7/src/kernel/qkeyboard_qws.cpp
+--- qt-2.3.7-old/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:33:46.000000000 +0200
+@@ -238,7 +238,7 @@
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
+- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
++ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
+ { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
+diff -ur qt-2.3.7-old/src/kernel/qwindowsystem_qws.cpp qt-2.3.7/src/kernel/qwindowsystem_qws.cpp
+--- qt-2.3.7-old/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:33:47.000000000 +0200
@@ -844,6 +844,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
@@ -936,6 +948,7 @@
}
signal(SIGPIPE, ignoreSignal); //we get it when we read
+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
#endif
focusw = 0;
mouseGrabber = 0;
---- qt-2.3.7/src/widgets/qcommonstyle.cpp~qte237-all 2003-07-17 03:20:26.000000000 +0200
-+++ qt-2.3.7/src/widgets/qcommonstyle.cpp 2004-04-15 21:06:51.240855770 +0200
+diff -ur qt-2.3.7-old/src/tools/qcstring.h qt-2.3.7/src/tools/qcstring.h
+--- qt-2.3.7-old/src/tools/qcstring.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qcstring.h 2004-07-23 15:42:01.000000000 +0200
+@@ -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 -ur qt-2.3.7-old/src/tools/qglobal.h qt-2.3.7/src/tools/qglobal.h
+--- qt-2.3.7-old/src/tools/qglobal.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qglobal.h 2004-07-23 15:42:01.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+diff -ur qt-2.3.7-old/src/tools/qmodules.h qt-2.3.7/src/tools/qmodules.h
+--- qt-2.3.7-old/src/tools/qmodules.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qmodules.h 2004-07-23 16:03:09.000000000 +0200
+@@ -1,14 +1,11 @@
+-#ifndef QT_H
+-#endif // QT_H
+-
++// These modules are licensed to you
+ #define QT_MODULE_TOOLS
+ #define QT_MODULE_KERNEL
+ #define QT_MODULE_WIDGETS
+ #define QT_MODULE_DIALOGS
+-
+ #define QT_MODULE_ICONVIEW
+ #define QT_MODULE_WORKSPACE
+-#define QT_MODULE_TABLE
++#define QT_MODULE_NETWORK
+ #define QT_MODULE_CANVAS
++#define QT_MODULE_TABLE
+ #define QT_MODULE_XML
+-#define QT_MODULE_NETWORK
+diff -ur qt-2.3.7-old/src/tools/qsortedlist.h qt-2.3.7/src/tools/qsortedlist.h
+--- qt-2.3.7-old/src/tools/qsortedlist.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qsortedlist.h 2004-07-23 15:42:01.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.7-old/src/tools/qstring.cpp qt-2.3.7/src/tools/qstring.cpp
+--- qt-2.3.7-old/src/tools/qstring.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qstring.cpp 2004-07-23 15:44:25.000000000 +0200
+@@ -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
+ }
+diff -ur qt-2.3.7-old/src/tools/qstring.h qt-2.3.7/src/tools/qstring.h
+--- qt-2.3.7-old/src/tools/qstring.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/tools/qstring.h 2004-07-23 15:42:01.000000000 +0200
+@@ -163,8 +163,16 @@
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+
++
++#ifdef Q_NO_PACKED_REFERENCE
++ uchar& cell() { return *(&cl); }
++ uchar& row() { return *(&rw); }
++#else
+ uchar& cell() { return cl; }
+- uchar& row() { return rw; }
++ uchar& row() { return rw; }
++#endif
++
++
+ uchar cell() const { return cl; }
+ uchar row() const { return rw; }
+
+diff -ur qt-2.3.7-old/src/widgets/qcommonstyle.cpp qt-2.3.7/src/widgets/qcommonstyle.cpp
+--- qt-2.3.7-old/src/widgets/qcommonstyle.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qcommonstyle.cpp 2004-07-23 15:38:13.000000000 +0200
@@ -566,7 +566,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);
---- qt-2.3.7/src/widgets/qlistview.cpp~qte237-all 2003-07-17 03:20:26.000000000 +0200
-+++ qt-2.3.7/src/widgets/qlistview.cpp 2004-04-15 21:06:51.243855303 +0200
+diff -ur qt-2.3.7-old/src/widgets/qlistview.cpp qt-2.3.7/src/widgets/qlistview.cpp
+--- qt-2.3.7-old/src/widgets/qlistview.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qlistview.cpp 2004-07-23 15:38:13.000000000 +0200
@@ -4968,9 +4968,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 );
---- qt-2.3.7/src/widgets/qtoolbutton.cpp~qte237-all 2003-07-17 03:20:27.000000000 +0200
-+++ qt-2.3.7/src/widgets/qtoolbutton.cpp 2004-04-15 21:06:51.243855303 +0200
+diff -ur qt-2.3.7-old/src/widgets/qscrollview.cpp qt-2.3.7/src/widgets/qscrollview.cpp
+--- qt-2.3.7-old/src/widgets/qscrollview.cpp 2004-07-23 19:25:18.000000000 +0200
++++ qt-2.3.7/src/widgets/qscrollview.cpp 2004-07-23 19:23:10.000000000 +0200
+@@ -526,15 +526,16 @@
+ this, SLOT( doDragAutoScroll() ) );
+ #endif
+
+- connect( &d->hbar, SIGNAL( valueChanged( int ) ),
+- this, SLOT( hslide( int ) ) );
+- connect( &d->vbar, SIGNAL( valueChanged( int ) ),
+- this, SLOT( vslide( int ) ) );
++ connect( &d->hbar, SIGNAL( valueChanged(int) ),
++ this, SLOT( hslide(int) ) );
++ connect( &d->vbar, SIGNAL( valueChanged(int) ),
++ this, SLOT( vslide(int) ) );
+ d->viewport.installEventFilter( this );
+
+ setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
+ setLineWidth( style().defaultFrameWidth() );
+ setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
++
+ }
+
+
+@@ -683,6 +684,11 @@
+ h-tmarg-bmarg - (showh ? hsbExt : 0) );
+ }
+
++/*
++ The surrounding environment (or application, if there is no
++ environment, may set this. Requires Qt >= 2.3.8.
++*/
++bool qt_left_hand_scrollbars = FALSE;
+
+ /*!
+ Updates scrollbars - all possibilities considered. You should never
+@@ -786,45 +792,50 @@
+
+ // Position the scrollbars, viewport, and corner widget.
+ int bottom;
++ int xoffset = ( qt_left_hand_scrollbars && ( showv || cornerWidget() ) ) ? vsbExt : 0;
++ int xpos = qt_left_hand_scrollbars ? 0 : w-vsbExt;
++ xpos = (style() == WindowsStyle) && qt_left_hand_scrollbars ? xpos + fw : xpos - fw;
++ int ypos = tmarg;
++ ypos = (style() == WindowsStyle) ? ypos +fw : 0;
+ if ( showh ) {
+ int right = ( showv || cornerWidget() ) ? w-vsbExt : w;
+ if ( style() == WindowsStyle )
+- setHBarGeometry(d->hbar, fw, h-hsbExt-fw,
++ setHBarGeometry(d->hbar, fw + xoffset , h-hsbExt-fw,
+ right-fw-fw, hsbExt );
+ else
+- setHBarGeometry(d->hbar, 0, h-hsbExt, right,
++ setHBarGeometry(d->hbar, 0+ xoffset, h-hsbExt, right,
+ hsbExt );
+ bottom=h-hsbExt;
+ } else {
+ bottom=h;
+ }
+ if ( showv ) {
+- clipper()->setGeometry( lmarg, tmarg,
++ clipper()->setGeometry( lmarg + xoffset, tmarg,
+ w-vsbExt-lmarg-rmarg,
+ bottom-tmarg-bmarg );
+ d->viewportResized( w-vsbExt-lmarg-rmarg, bottom-tmarg-bmarg );
+ if ( style() == WindowsStyle )
+- changeFrameRect(QRect(0, 0, w, h) );
++ changeFrameRect(QRect(xoffset, 0, w, h) );
+ else
+- changeFrameRect(QRect(0, 0, w-vsbExt, bottom));
++ changeFrameRect(QRect(xoffset, 0, w-vsbExt, bottom));
+ if (cornerWidget()) {
+ if ( style() == WindowsStyle )
+- setVBarGeometry( d->vbar, w-vsbExt-fw,
+- fw, vsbExt,
+- h-hsbExt-fw-fw );
++ setVBarGeometry( d->vbar, xpos,
++ ypos, vsbExt,
++ bottom-fw-ypos );
+ else
+- setVBarGeometry( d->vbar, w-vsbExt, 0,
++ setVBarGeometry( d->vbar, xpos, ypos,
+ vsbExt,
+- h-hsbExt );
++ bottom-ypos );
+ }
+ else {
+ if ( style() == WindowsStyle )
+- setVBarGeometry( d->vbar, w-vsbExt-fw,
+- fw, vsbExt,
+- bottom-fw-fw );
++ setVBarGeometry( d->vbar, xpos,
++ ypos, vsbExt,
++ bottom-fw-ypos );
+ else
+- setVBarGeometry( d->vbar, w-vsbExt, 0,
+- vsbExt, bottom );
++ setVBarGeometry( d->vbar, xpos, ypos,
++ vsbExt, bottom-ypos );
+ }
+ } else {
+ if ( style() == WindowsStyle )
+@@ -837,12 +848,12 @@
+ }
+ if ( d->corner ) {
+ if ( style() == WindowsStyle )
+- d->corner->setGeometry( w-vsbExt-fw,
++ d->corner->setGeometry( xpos,
+ h-hsbExt-fw,
+ vsbExt,
+ hsbExt );
+ else
+- d->corner->setGeometry( w-vsbExt,
++ d->corner->setGeometry( xpos,
+ h-hsbExt,
+ vsbExt,
+ hsbExt );
+@@ -1266,6 +1277,9 @@
+ case QEvent::LayoutHint:
+ d->autoResizeHint(this);
+ break;
++ case QEvent::WindowActivate:
++ case QEvent::WindowDeactivate:
++ return TRUE;
+ default:
+ break;
+ }
+@@ -1675,7 +1689,7 @@
+ }
+
+ /*!
+- Scrolls the content by \a x to the left and \a y upwards.
++ Scrolls the content by \a dx to the left and \a dy upwards.
+ */
+ void QScrollView::scrollBy( int dx, int dy )
+ {
+diff -ur qt-2.3.7-old/src/widgets/qtoolbutton.cpp qt-2.3.7/src/widgets/qtoolbutton.cpp
+--- qt-2.3.7-old/src/widgets/qtoolbutton.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qtoolbutton.cpp 2004-07-23 15:38:13.000000000 +0200
@@ -230,7 +230,7 @@
else
QToolTip::add( this, textLabel );
}
-#endif
+#endif
}
@@ -324,12 +324,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();
---- qt-2.3.7/src/kernel/qkeyboard_qws.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-04-15 21:06:51.244855148 +0200
-@@ -238,7 +238,7 @@
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
-- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
-+ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
- { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
---- qt-2.3.7/configs/linux-generic-g++-shared~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic-g++-shared 2004-04-15 21:06:51.244855148 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic-g++-shared-debug~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic-g++-shared-debug 2004-04-15 21:06:51.244855148 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic-g++-static~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic-g++-static 2004-04-15 21:06:51.244855148 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic-g++-static-debug~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic-g++-static-debug 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic_rtti-g++-shared~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic_rtti-g++-shared 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic_rtti-g++-static~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic_rtti-g++-static 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-generic_rtti-g++-static-debug~qte237-all 2003-07-17 03:23:08.000000000 +0200
-+++ qt-2.3.7/configs/linux-generic_rtti-g++-static-debug 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS =
-
---- qt-2.3.7/configs/linux-x86rtti-g++-shared~qte237-all 2003-07-17 03:23:10.000000000 +0200
-+++ qt-2.3.7/configs/linux-x86rtti-g++-shared 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS = -lm
-
---- qt-2.3.7/configs/linux-x86rtti-g++-shared-debug~qte237-all 2003-07-17 03:23:10.000000000 +0200
-+++ qt-2.3.7/configs/linux-x86rtti-g++-shared-debug 2004-04-15 21:06:51.245854992 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS = -lm
-
---- qt-2.3.7/configs/linux-x86rtti-g++-static~qte237-all 2003-07-17 03:23:10.000000000 +0200
-+++ qt-2.3.7/configs/linux-x86rtti-g++-static 2004-04-15 21:06:51.246854837 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS = -lm
-
---- qt-2.3.7/configs/linux-x86rtti-g++-static-debug~qte237-all 2003-07-17 03:23:10.000000000 +0200
-+++ qt-2.3.7/configs/linux-x86rtti-g++-static-debug 2004-04-15 21:06:51.246854837 +0200
-@@ -36,7 +36,7 @@
- SYSCONF_LIBS_YACC =
-
- # Linking applications
--SYSCONF_LINK = gcc
-+SYSCONF_LINK = g++
- SYSCONF_LFLAGS =
- SYSCONF_LIBS = -lm
-
---- qt-2.3.7/src/kernel/qimage.cpp~qte237-all 2003-07-17 03:20:25.000000000 +0200
-+++ qt-2.3.7/src/kernel/qimage.cpp 2004-04-15 21:07:23.293869923 +0200
-@@ -2201,7 +2201,7 @@
- t2 = srcHeight * dstWidth;
-
- if (((sModeQStr == "ScaleMin") && (t1 > t2)) ||
-- ((sModeQStr == "ScaleMax") && (t2 < t2))) {
-+ ((sModeQStr == "ScaleMax") && (t1 < t2))) {
- dstHeight = t2 / srcWidth;
- } else if (sModeQStr != "ScaleFree") {
- dstWidth = t1 / srcHeight;
diff --git a/qt/qt-2.3.7.patch/qte237-allowoverride.patch b/qt/qt-2.3.7.patch/qte237-allowoverride.patch
new file mode 100644
index 0000000..e0629f6
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-allowoverride.patch
@@ -0,0 +1,229 @@
+Qt2.3.5 -> Qt2.3.6 changed the meaning of point sizes they used
+to be multiplied with 10, some apps get confused by that and
+in Opie we allow to work around for specefic application
+
+Courtsey to Robert 'sandman' Griebl
+
+
+
+
+
+
+
+
+diff -ur qt-2.3.7-old/src/kernel/qapplication.cpp qt-2.3.7/src/kernel/qapplication.cpp
+--- qt-2.3.7-old/src/kernel/qapplication.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication.cpp 2004-07-23 15:25:42.000000000 +0200
+@@ -35,6 +35,8 @@
+ **
+ **********************************************************************/
+
++#define QT_WEAK_SYMBOL __attribute__(( weak ))
++
+ #include "qobjectlist.h"
+ #include "qobjectdict.h"
+ #include "qapplication.h"
+@@ -933,11 +935,16 @@
+ #ifndef QT_NO_STYLE
+ void QApplication::setStyle( QStyle *style )
+ {
++ setStyle_NonWeak ( style );
++}
++
++void QApplication::setStyle_NonWeak( QStyle *style )
++{
+ QStyle* old = app_style;
+- app_style = style;
+
+ if ( startingUp() ) {
+ delete old;
++ app_style = style;
+ return;
+ }
+
+@@ -958,6 +965,8 @@
+ old->unPolish( qApp );
+ }
+
++ app_style = style;
++
+ // take care of possible palette requirements of certain gui
+ // styles. Do it before polishing the application since the style
+ // might call QApplication::setStyle() itself
+@@ -1184,13 +1193,30 @@
+ \sa QWidget::setPalette(), palette(), QStyle::polish()
+ */
+
+-void QApplication::setPalette( const QPalette &palette, bool informWidgets,
++void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
++ const char* className )
++{
++ setPalette_NonWeak ( palette, informWidgets, className );
++}
++
++void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
+ const char* className )
+ {
+ QPalette pal = palette;
+ #ifndef QT_NO_STYLE
+- if ( !startingUp() )
++ if ( !startingUp() ) {
+ qApp->style().polish( pal ); // NB: non-const reference
++ if ( className ) {
++ // if we just polished a class specific palette (this normally
++ // only called by qt_fix_tooltips - see below), we better re-
++ // polish the global palette. Some styles like liquid can get
++ // confused, because they can not detect if the polished palette
++ // is the global one or only a class specific one.
++ // (liquid uses this palette to calculate blending pixmaps)
++ QPalette p = qApp-> palette ( );
++ qApp->style().polish ( p );
++ }
++ }
+ #endif
+ bool all = FALSE;
+ if ( !className ) {
+@@ -1275,6 +1301,12 @@
+ void QApplication::setFont( const QFont &font, bool informWidgets,
+ const char* className )
+ {
++ setFont_NonWeak ( font, informWidgets, className );
++}
++
++void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
++ const char* className )
++{
+ bool all = FALSE;
+ if ( !className ) {
+ if ( !app_font ) {
+diff -ur qt-2.3.7-old/src/kernel/qapplication.h qt-2.3.7/src/kernel/qapplication.h
+--- qt-2.3.7-old/src/kernel/qapplication.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication.h 2004-07-23 15:25:42.000000000 +0200
+@@ -61,6 +61,10 @@
+ class QSemaphore;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ // REMOVE IN 3.0 (just here for moc source compatibility)
+ #define QNonBaseApplication QApplication
+
+@@ -85,7 +89,10 @@
+
+ #ifndef QT_NO_STYLE
+ static QStyle &style();
+- static void setStyle( QStyle* );
++ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
++private:
++ static void setStyle_NonWeak( QStyle* );
++public:
+ #endif
+ #if 1 /* OBSOLETE */
+ enum ColorMode { NormalColors, CustomColors };
+@@ -106,11 +113,19 @@
+ #ifndef QT_NO_PALETTE
+ static QPalette palette( const QWidget* = 0 );
+ static void setPalette( const QPalette &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ #endif
+ static QFont font( const QWidget* = 0 );
+ static void setFont( const QFont &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ static QFontMetrics fontMetrics();
+
+ QWidget *mainWidget() const;
+@@ -207,7 +222,10 @@
+ void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
+ #ifndef QT_NO_QWS_MANAGER
+ static QWSDecoration &qwsDecoration();
+- static void qwsSetDecoration( QWSDecoration *);
++ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
++private:
++ static void qwsSetDecoration_NonWeak( QWSDecoration *);
++public:
+ #endif
+ #endif
+
+diff -ur qt-2.3.7-old/src/kernel/qapplication_qws.cpp qt-2.3.7/src/kernel/qapplication_qws.cpp
+--- qt-2.3.7-old/src/kernel/qapplication_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qapplication_qws.cpp 2004-07-23 15:25:42.000000000 +0200
+@@ -2804,6 +2804,11 @@
+ */
+ void QApplication::qwsSetDecoration( QWSDecoration *d )
+ {
++ qwsSetDecoration_NonWeak ( d );
++}
++
++void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
++{
+ if ( d ) {
+ delete qws_decoration;
+ qws_decoration = d;
+diff -ur qt-2.3.7-old/src/kernel/qfontdatabase.cpp qt-2.3.7/src/kernel/qfontdatabase.cpp
+--- qt-2.3.7-old/src/kernel/qfontdatabase.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qfontdatabase.cpp 2004-07-23 15:25:42.000000000 +0200
+@@ -35,6 +35,8 @@
+ **
+ **********************************************************************/
+
++#define QT_WEAK_SYMBOL __attribute__(( weak ))
++
+ #include "qfontdatabase.h"
+
+ #ifndef QT_NO_FONTDATABASE
+@@ -2424,6 +2426,13 @@
+ const QString &style,
+ const QString &charSet )
+ {
++ return pointSizes_NonWeak ( family, style, charSet );
++}
++
++QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
++ const QString &style,
++ const QString &charSet )
++{
+ QString cs( charSet );
+ if ( charSet.isEmpty() ) {
+ QStringList lst = charSets( family );
+diff -ur qt-2.3.7-old/src/kernel/qfontdatabase.h qt-2.3.7/src/kernel/qfontdatabase.h
+--- qt-2.3.7-old/src/kernel/qfontdatabase.h 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qfontdatabase.h 2004-07-23 15:25:42.000000000 +0200
+@@ -59,6 +59,10 @@
+ class QDiskFont;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ class QFontDatabasePrivate;
+
+ class Q_EXPORT QFontDatabase
+@@ -67,9 +71,16 @@
+ QFontDatabase();
+
+ QStringList families( bool onlyForLocale = TRUE ) const;
++
++
+ QValueList<int> pointSizes( const QString &family,
+ const QString &style = QString::null,
+- const QString &charSet = QString::null );
++ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
++private:
++ QValueList<int> pointSizes_NonWeak( const QString &family,
++ const QString &style,
++ const QString &charSet );
++public:
+ QStringList styles( const QString &family,
+ const QString &charSet = QString::null ) const;
+ QStringList charSets( const QString &familyName,
diff --git a/qt/qt-2.3.7.patch/qte237-g++-aslinker.patch b/qt/qt-2.3.7.patch/qte237-g++-aslinker.patch
new file mode 100644
index 0000000..1ae72e9
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-g++-aslinker.patch
@@ -0,0 +1,161 @@
+GCC3 requires libstdc++ for virtual all C++ application
+linking with gcc would trigger unresolved symbols like
+new, delete, pure_virtual etc.
+
+This is the safe one which works with gcc2 and gcc3. If you do
+not want the stdc++ dependency link with gcc and add -lsupc++ to the
+library dependency
+
+
+
+
+
+
+
+
+
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-shared qt-2.3.7/configs/linux-generic-g++-shared
+--- qt-2.3.7-old/configs/linux-generic-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-shared-debug qt-2.3.7/configs/linux-generic-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-generic-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-static qt-2.3.7/configs/linux-generic-g++-static
+--- qt-2.3.7-old/configs/linux-generic-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic-g++-static-debug qt-2.3.7/configs/linux-generic-g++-static-debug
+--- qt-2.3.7-old/configs/linux-generic-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared qt-2.3.7/configs/linux-generic_rtti-g++-shared
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static qt-2.3.7/configs/linux-generic_rtti-g++-static
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug qt-2.3.7/configs/linux-generic_rtti-g++-static-debug
+--- qt-2.3.7-old/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-generic_rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS =
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared qt-2.3.7/configs/linux-x86rtti-g++-shared
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-shared 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-shared 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug qt-2.3.7/configs/linux-x86rtti-g++-shared-debug
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-shared-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static qt-2.3.7/configs/linux-x86rtti-g++-static
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-static 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-static 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
+diff -ur qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug qt-2.3.7/configs/linux-x86rtti-g++-static-debug
+--- qt-2.3.7-old/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/configs/linux-x86rtti-g++-static-debug 2004-07-23 15:23:12.000000000 +0200
+@@ -36,7 +36,7 @@
+ SYSCONF_LIBS_YACC =
+
+ # Linking applications
+-SYSCONF_LINK = gcc
++SYSCONF_LINK = g++
+ SYSCONF_LFLAGS =
+ SYSCONF_LIBS = -lm
+
diff --git a/qt/qt-2.3.7.patch/qte237-gcc34.patch b/qt/qt-2.3.7.patch/qte237-gcc34.patch
index 5abdd7f..856028d 100644
--- a/qt/qt-2.3.7.patch/qte237-gcc34.patch
+++ b/qt/qt-2.3.7.patch/qte237-gcc34.patch
@@ -1,449 +1,428 @@
diff -ur qt-2.3.7_clean/include/qcstring.h qt-2.3.7/include/qcstring.h
--- qt-2.3.7_clean/include/qcstring.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/include/qcstring.h 2004-06-04 02:24:25.000000000 +0200
@@ -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 -ur qt-2.3.7_clean/include/qglobal.h qt-2.3.7/include/qglobal.h
--- qt-2.3.7_clean/include/qglobal.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/include/qglobal.h 2004-06-04 02:29:41.000000000 +0200
@@ -207,8 +207,16 @@
#if __GNUC__ == 2 && __GNUC_MINOR__ == 96
#define Q_FP_CCAST_BROKEN
#endif
+/* ARM gcc pads structs to 32 bits, even when they contain a single
+ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
+ QString bloat. However, gcc 3.4 doesn't allow us to create references to
+ members of a packed struct. (Pointers are OK, because then you
+ supposedly know what you are doing.) */
#if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
#define Q_PACKED __attribute__ ((packed))
+# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
+# define Q_NO_PACKED_REFERENCE
+# endif
#endif
#elif defined(__xlC__)
#define _CC_XLC_
diff -ur qt-2.3.7_clean/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h
--- qt-2.3.7_clean/include/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/include/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200
@@ -48,7 +48,7 @@
public:
QSortedList() {}
QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
- ~QSortedList() { clear(); }
+ ~QSortedList() { this->clear(); }
QSortedList<type> &operator=(const QSortedList<type> &l)
{ return (QSortedList<type>&)QList<type>::operator=(l); }
-diff -ur qt-2.3.7_clean/include/qstring.h qt-2.3.7/include/qstring.h
---- qt-2.3.7_clean/include/qstring.h 2004-06-04 02:17:53.000000000 +0200
-+++ qt-2.3.7/include/qstring.h 2004-06-04 02:54:16.000000000 +0200
-@@ -163,8 +163,16 @@
- bool isLetterOrNumber() const;
- bool isDigit() const;
-
-+
-+#ifdef Q_NO_PACKED_REFERENCE
-+ uchar& cell() { return *(&cl); }
-+ uchar& row() { return *(&rw); }
-+#else
- uchar& cell() { return cl; }
-- uchar& row() { return rw; }
-+ uchar& row() { return rw; }
-+#endif
-+
-+
- uchar cell() const { return cl; }
- uchar row() const { return rw; }
-
diff -ur qt-2.3.7_clean/src/kernel/qgfxtransformed_qws.cpp qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp
--- qt-2.3.7_clean/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:24:25.000000000 +0200
@@ -671,11 +671,11 @@
inline int tx( int x, int y ) {
switch ( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
- return y - xoffs + yoffs;
+ return y - this->xoffs + this->yoffs;
case QTransformedScreen::Rot180:
- return (width - x - 1) - xoffs - xoffs;
+ return (this->width - x - 1) - this->xoffs - this->xoffs;
case QTransformedScreen::Rot270:
- return (height - y - 1) - xoffs - yoffs;
+ return (this->height - y - 1) - this->xoffs - this->yoffs;
default:
return x;
}
@@ -683,11 +683,11 @@
inline int ty( int x, int y ) {
switch ( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
- return (width - x - 1) - yoffs - xoffs;
+ return (this->width - x - 1) - this->yoffs - this->xoffs;
case QTransformedScreen::Rot180:
- return (height - y - 1) - yoffs - yoffs;
+ return (this->height - y - 1) - this->yoffs - this->yoffs;
case QTransformedScreen::Rot270:
- return x - yoffs + xoffs;
+ return x - this->yoffs + this->xoffs;
default:
return y;
}
@@ -715,23 +715,23 @@
template <const int depth, const int type>
void QGfxTransformedRaster<depth,type>::setSourceWidgetOffset(int x, int y)
{
- if ( srcbits == buffer ) {
+ if ( this->srcbits == this->buffer ) {
switch ( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
- srcwidgetoffs = QPoint( y, width - x - srcwidth );
+ this->srcwidgetoffs = QPoint( y, this->width - x - this->srcwidth );
break;
case QTransformedScreen::Rot180:
- srcwidgetoffs = QPoint( width - x - srcwidth, height - y - srcheight );
+ this->srcwidgetoffs = QPoint( this->width - x - this->srcwidth, this->height - y - this->srcheight );
break;
case QTransformedScreen::Rot270:
- srcwidgetoffs = QPoint( height - y - srcheight, x );
+ this->srcwidgetoffs = QPoint( this->height - y - this->srcheight, x );
break;
default:
- srcwidgetoffs = QPoint( x, y );
+ this->srcwidgetoffs = QPoint( x, y );
break;
}
} else
- srcwidgetoffs = QPoint( x, y );
+ this->srcwidgetoffs = QPoint( x, y );
}
template <const int depth, const int type>
@@ -739,8 +739,8 @@
{
QT_TRANS_GFX_BASE<depth,type>::setSource(i);
QSize s = qt_screen->mapToDevice( QSize(i->width(), i->height()) );
- srcwidth = s.width();
- srcheight = s.height();
+ this->srcwidth = s.width();
+ this->srcheight = s.height();
}
template <const int depth, const int type>
@@ -782,7 +782,7 @@
if ( w == 0 || h == 0 )
return;
QRect r( x, y, w, h );
- if ( cbrush.style() == SolidPattern ) {
+ if ( this->cbrush.style() == Qt::SolidPattern ) {
r.setCoords( tx(x,y), ty(x,y), tx(x+w-1,y+h-1), ty(x+w-1,y+h-1) );
r = r.normalize();
}
@@ -797,7 +797,7 @@
// solution. The brush offset logic is complicated enough, so we don't
// fastpath patternedbrush.
- if ( inDraw || cpen.style()==NoPen || patternedbrush ) {
+ if ( inDraw || this->cpen.style()==Qt::NoPen || this->patternedbrush ) {
//slowpath
QT_TRANS_GFX_BASE<depth,type>::drawPolygon( a, w, idx, num );
} else {
@@ -819,29 +819,29 @@
template <const int depth, const int type>
void QGfxTransformedRaster<depth,type>::processSpans( int n, QPoint* point, int* width )
{
- if ( inDraw || patternedbrush && srcwidth != 0 && srcheight != 0 ) {
+ if ( inDraw || this->patternedbrush && this->srcwidth != 0 && this->srcheight != 0 ) {
//in the patternedbrush case, we let blt do the transformation
// so we leave inDraw false.
- QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
+ QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
} else {
inDraw = TRUE;
while (n--) {
if ( *width > 0 ) {
- int x=tx(point->x(),point->y())+xoffs;
- int y=ty(point->x(),point->y())+yoffs;
+ int x=tx(point->x(),point->y())+this->xoffs;
+ int y=ty(point->x(),point->y())+this->yoffs;
switch( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
- vline( x, y-(*width-1), y );
+ this->vline( x, y-(*width-1), y );
break;
case QTransformedScreen::Rot180:
- hline( x - (*width-1), x, y );
+ this->hline( x - (*width-1), x, y );
break;
case QTransformedScreen::Rot270:
- vline( x, y, y+*width-1 );
+ this->vline( x, y, y+*width-1 );
break;
default:
- hline( x, x+*width-1, y );
+ this->hline( x, x+*width-1, y );
break;
}
}
@@ -896,14 +896,14 @@
switch ( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
rsx = sy;
- rsy = srcwidth - sx - w;
+ rsy = this->srcwidth - sx - w;
break;
case QTransformedScreen::Rot180:
- rsx = srcwidth - sx - w;
- rsy = srcheight - sy - h;
+ rsx = this->srcwidth - sx - w;
+ rsy = this->srcheight - sy - h;
break;
case QTransformedScreen::Rot270:
- rsx = srcheight - sy - h;
+ rsx = this->srcheight - sy - h;
rsy = sx;
break;
default:
@@ -941,39 +941,39 @@
r.setCoords( tx(rx,ry), ty(rx,ry), tx(rx+w-1,ry+h-1), ty(rx+w-1,ry+h-1) );
r = r.normalize();
- QPoint oldBrushOffs = brushoffs;
+ QPoint oldBrushOffs = this->brushoffs;
int brx, bry;
switch ( qt_trans_screen->transformation() ) {
case QTransformedScreen::Rot90:
- brx = brushoffs.y();
- bry = srcwidth - brushoffs.x() - w;
+ brx = this->brushoffs.y();
+ bry = this->srcwidth - this->brushoffs.x() - w;
break;
case QTransformedScreen::Rot180:
- brx = srcwidth - brushoffs.x() - w;
- bry = srcheight - brushoffs.y() - h;
+ brx = this->srcwidth - this->brushoffs.x() - w;
+ bry = this->srcheight - this->brushoffs.y() - h;
break;
case QTransformedScreen::Rot270:
- brx = srcheight - brushoffs.y() - h;
- bry = brushoffs.x();
+ brx = this->srcheight - this->brushoffs.y() - h;
+ bry = this->brushoffs.x();
break;
default:
- brx = brushoffs.x();
- bry = brushoffs.y();
+ brx = this->brushoffs.x();
+ bry = this->brushoffs.y();
break;
}
- brushoffs = QPoint( brx, bry );
+ this->brushoffs = QPoint( brx, bry );
- int oldsw = srcwidth;
- int oldsh = srcheight;
- QSize s = qt_screen->mapToDevice( QSize(srcwidth,srcheight) );
- srcwidth = s.width();
- srcheight = s.height();
+ int oldsw = this->srcwidth;
+ int oldsh = this->srcheight;
+ QSize s = qt_screen->mapToDevice( QSize(this->srcwidth,this->srcheight) );
+ this->srcwidth = s.width();
+ this->srcheight = s.height();
QT_TRANS_GFX_BASE<depth,type>::tiledBlt( r.x(), r.y(), r.width(), r.height() );
- srcwidth = oldsw;
- srcheight = oldsh;
- brushoffs = oldBrushOffs;
+ this->srcwidth = oldsw;
+ this->srcheight = oldsh;
+ this->brushoffs = oldBrushOffs;
inDraw = FALSE;
}
diff -ur qt-2.3.7_clean/src/kernel/qgfxvfb_qws.cpp qt-2.3.7/src/kernel/qgfxvfb_qws.cpp
--- qt-2.3.7_clean/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:24:25.000000000 +0200
@@ -31,7 +31,6 @@
**********************************************************************/
#include "qgfxraster_qws.h"
-
#ifndef QT_NO_QWS_VFB
#include <sys/ipc.h>
@@ -140,8 +139,8 @@
void QGfxVFb<depth,type>::drawPoint( int x, int y )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) );
QGfxRaster<depth,type>::drawPoint( x, y );
QWSDisplay::ungrab();
}
@@ -150,8 +149,8 @@
void QGfxVFb<depth,type>::drawPoints( const QPointArray &pa,int x,int y )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( clipbounds );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( this->clipbounds );
QGfxRaster<depth,type>::drawPoints( pa, x, y );
QWSDisplay::ungrab();
}
@@ -160,9 +159,9 @@
void QGfxVFb<depth,type>::drawLine( int x1,int y1,int x2,int y2 )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx ) {
+ if ( this->is_screen_gfx ) {
QRect r;
- r.setCoords( x1+xoffs, y1+yoffs, x2+xoffs, y2+yoffs );
+ r.setCoords( x1+this->xoffs, y1+this->yoffs, x2+this->xoffs, y2+this->yoffs );
qvfb_screen->setDirty( r.normalize() );
}
QGfxRaster<depth,type>::drawLine( x1, y1, x2, y2 );
@@ -173,8 +172,8 @@
void QGfxVFb<depth,type>::fillRect( int x,int y,int w,int h )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
QGfxRaster<depth,type>::fillRect( x, y, w, h );
QWSDisplay::ungrab();
}
@@ -183,8 +182,8 @@
void QGfxVFb<depth,type>::drawPolyline( const QPointArray &pa,int x,int y )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( clipbounds );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( this->clipbounds );
QGfxRaster<depth,type>::drawPolyline( pa, x, y );
QWSDisplay::ungrab();
}
@@ -193,8 +192,8 @@
void QGfxVFb<depth,type>::drawPolygon( const QPointArray &pa,bool w,int x,int y )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( clipbounds );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( this->clipbounds );
QGfxRaster<depth,type>::drawPolygon( pa, w, x, y );
QWSDisplay::ungrab();
}
@@ -203,8 +202,8 @@
void QGfxVFb<depth,type>::blt( int x,int y,int w,int h, int sx, int sy )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
QGfxRaster<depth,type>::blt( x, y, w, h, sx, sy );
QWSDisplay::ungrab();
}
@@ -215,8 +214,8 @@
QWSDisplay::grab( TRUE );
int dy = sy - y;
int dx = sx - x;
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs,
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs,
w+abs(dx), h+abs(dy)) );
QGfxRaster<depth,type>::scroll( x, y, w, h, sx, sy );
QWSDisplay::ungrab();
@@ -227,8 +226,8 @@
void QGfxVFb<depth,type>::stretchBlt( int x,int y,int w,int h,int sx,int sy )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) );
QGfxRaster<depth,type>::stretchBlt( x, y, w, h, sx, sy );
QWSDisplay::ungrab();
}
@@ -238,8 +237,8 @@
void QGfxVFb<depth,type>::tiledBlt( int x,int y,int w,int h )
{
QWSDisplay::grab( TRUE );
- if ( is_screen_gfx )
- qvfb_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) );
+ if ( this->is_screen_gfx )
+ qvfb_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) );
QGfxRaster<depth,type>::tiledBlt( x, y, w, h );
QWSDisplay::ungrab();
}
diff -ur qt-2.3.7_clean/src/tools/qcstring.h qt-2.3.7/src/tools/qcstring.h
--- qt-2.3.7_clean/src/tools/qcstring.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/tools/qcstring.h 2004-06-04 02:24:25.000000000 +0200
@@ -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 -ur qt-2.3.7_clean/src/tools/qglobal.h qt-2.3.7/src/tools/qglobal.h
--- qt-2.3.7_clean/src/tools/qglobal.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/tools/qglobal.h 2004-06-04 02:29:41.000000000 +0200
@@ -207,8 +207,16 @@
#if __GNUC__ == 2 && __GNUC_MINOR__ == 96
#define Q_FP_CCAST_BROKEN
#endif
+/* ARM gcc pads structs to 32 bits, even when they contain a single
+ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
+ QString bloat. However, gcc 3.4 doesn't allow us to create references to
+ members of a packed struct. (Pointers are OK, because then you
+ supposedly know what you are doing.) */
#if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
#define Q_PACKED __attribute__ ((packed))
+# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
+# define Q_NO_PACKED_REFERENCE
+# endif
#endif
#elif defined(__xlC__)
#define _CC_XLC_
Nur in qt-2.3.7/src/tools: qglobal.h~.
diff -ur qt-2.3.7_clean/src/tools/qsortedlist.h qt-2.3.7/src/tools/qsortedlist.h
--- qt-2.3.7_clean/src/tools/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/tools/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200
@@ -48,7 +48,7 @@
public:
QSortedList() {}
QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
- ~QSortedList() { clear(); }
+ ~QSortedList() { this->clear(); }
QSortedList<type> &operator=(const QSortedList<type> &l)
{ return (QSortedList<type>&)QList<type>::operator=(l); }
diff -ur qt-2.3.7_clean/src/tools/qstring.h qt-2.3.7/src/tools/qstring.h
--- qt-2.3.7_clean/src/tools/qstring.h 2004-06-04 02:17:53.000000000 +0200
+++ qt-2.3.7/src/tools/qstring.h 2004-06-04 02:54:16.000000000 +0200
@@ -163,8 +163,16 @@
bool isLetterOrNumber() const;
bool isDigit() const;
+
+#ifdef Q_NO_PACKED_REFERENCE
+ uchar& cell() { return *(&cl); }
diff --git a/qt/qt-2.3.7.patch/qte237-hancomwordcrash.patch b/qt/qt-2.3.7.patch/qte237-hancomwordcrash.patch
new file mode 100644
index 0000000..f5b26ea
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-hancomwordcrash.patch
@@ -0,0 +1,14 @@
+Not included in the ALL patch
+
+
+--- qt-2.3.7-old/src/kernel/qgfxraster_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qgfxraster_qws.cpp 2004-07-23 15:29:16.000000000 +0200
+@@ -4237,7 +4237,7 @@
+ setAlphaType(IgnoreAlpha);
+ if ( w <= 0 || h <= 0 || !ncliprect ) return;
+ GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
+-#ifdef QWS_EXPERIMENTAL_FASTPATH
++#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
+ // ### fix for 8bpp
+ // This seems to be reliable now, at least for 16bpp
+
diff --git a/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch
new file mode 100644
index 0000000..63e45ec
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch
@@ -0,0 +1,149 @@
+Speed up patches backported from
+
+http://robotics.dei.unipd.it/~koral/KDE/kflicker.html
+
+and
+
+http://lists.kde.org/?l=kde-optimize&m=105382164111363&w=2 (complete thread)
+
+
+
+
+diff -u qt-2.3.7_old/src/iconview/qiconview.cpp qt-2.3.7/src/iconview/qiconview.cpp
+--- qt-2.3.7_old/src/iconview/qiconview.cpp 2004-06-13 22:29:56.000000000 +0200
++++ qt-2.3.7/src/iconview/qiconview.cpp 2004-06-13 22:33:32.000000000 +0200
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+-** $Id$
++** $Id$
+ **
+ ** Implementation of QIconView widget class
+ **
+@@ -220,6 +220,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;
+@@ -2263,6 +2264,7 @@
+ d->currentItem = 0;
+ d->highlightedItem = 0;
+ d->rubber = 0;
++ d->backBuffer = 0;
+ d->scrollTimer = 0;
+ d->startDragItem = 0;
+ d->tmpCurrentItem = 0;
+@@ -2411,6 +2413,8 @@
+ delete item;
+ item = tmp;
+ }
++ delete d->backBuffer;
++ d->backBuffer = 0;
+ delete d->fm;
+ d->fm = 0;
+ #ifndef QT_NO_TOOLTIP
+@@ -2877,6 +2881,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
+ */
+
+@@ -4855,7 +4901,7 @@
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+ }
+- viewportPaintEvent( (QPaintEvent*)e );
++ bufferedPaintEvent ((QPaintEvent*)e );
+ if ( d->dragging ) {
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+@@ -5286,11 +5332,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;
+
+diff -u qt-2.3.7_old/src/iconview/qiconview.h qt-2.3.7/src/iconview/qiconview.h
+--- qt-2.3.7_old/src/iconview/qiconview.h 2004-06-13 22:29:56.000000000 +0200
++++ qt-2.3.7/src/iconview/qiconview.h 2004-06-13 22:33:32.000000000 +0200
+@@ -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 );
+--- qt-2.3.7-old/src/widgets/qscrollview.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/widgets/qscrollview.cpp 2004-07-23 19:23:10.000000000 +0200
+@@ -1266,6 +1277,9 @@
+ case QEvent::LayoutHint:
+ d->autoResizeHint(this);
+ break;
++ case QEvent::WindowActivate:
++ case QEvent::WindowDeactivate:
++ return TRUE;
+ default:
+ break;
+ }
diff --git a/qt/qt-2.3.7.patch/qte237-keyboard.patch b/qt/qt-2.3.7.patch/qte237-keyboard.patch
new file mode 100644
index 0000000..b644fd7
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-keyboard.patch
@@ -0,0 +1,43 @@
+Free the Virtual Terminal and Keyboard on a segfault in all cases...
+
+
+--- qt-2.3.7-old/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:33:47.000000000 +0200
+@@ -844,6 +844,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
+@@ -936,6 +948,7 @@
+ }
+
+ signal(SIGPIPE, ignoreSignal); //we get it when we read
++ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
+ #endif
+ focusw = 0;
+ mouseGrabber = 0;
+--- qt-2.3.7-old/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:33:46.000000000 +0200
+@@ -238,7 +238,7 @@
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
+- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
++ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
+ { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
diff --git a/qt/qt-2.3.7.patch/qte237-lefthand.patch b/qt/qt-2.3.7.patch/qte237-lefthand.patch
index 0a0cccf..1287430 100644
--- a/qt/qt-2.3.7.patch/qte237-lefthand.patch
+++ b/qt/qt-2.3.7.patch/qte237-lefthand.patch
@@ -1,126 +1,133 @@
+Backport of the LeftHand patch from Qt2.3.8
+
+Puts Scrollbar on the left for people using the right hand
+to hold the devices
+
+
+
diff -u qt-2.3.7_orig/src/widgets/qscrollview.cpp qt-2.3.7/src/widgets/qscrollview.cpp
--- qt-2.3.7_orig/src/widgets/qscrollview.cpp 2004-06-13 20:42:54.000000000 +0200
+++ qt-2.3.7/src/widgets/qscrollview.cpp 2004-06-13 20:45:16.000000000 +0200
@@ -526,15 +526,16 @@
this, SLOT( doDragAutoScroll() ) );
#endif
- connect( &d->hbar, SIGNAL( valueChanged( int ) ),
- this, SLOT( hslide( int ) ) );
- connect( &d->vbar, SIGNAL( valueChanged( int ) ),
- this, SLOT( vslide( int ) ) );
+ connect( &d->hbar, SIGNAL( valueChanged(int) ),
+ this, SLOT( hslide(int) ) );
+ connect( &d->vbar, SIGNAL( valueChanged(int) ),
+ this, SLOT( vslide(int) ) );
d->viewport.installEventFilter( this );
setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
setLineWidth( style().defaultFrameWidth() );
setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
+
}
@@ -683,6 +684,11 @@
h-tmarg-bmarg - (showh ? hsbExt : 0) );
}
+/*
+ The surrounding environment (or application, if there is no
+ environment, may set this. Requires Qt >= 2.3.8.
+*/
+bool qt_left_hand_scrollbars = FALSE;
/*!
Updates scrollbars - all possibilities considered. You should never
@@ -786,45 +792,50 @@
// Position the scrollbars, viewport, and corner widget.
int bottom;
+ int xoffset = ( qt_left_hand_scrollbars && ( showv || cornerWidget() ) ) ? vsbExt : 0;
+ int xpos = qt_left_hand_scrollbars ? 0 : w-vsbExt;
+ xpos = (style() == WindowsStyle) && qt_left_hand_scrollbars ? xpos + fw : xpos - fw;
+ int ypos = tmarg;
+ ypos = (style() == WindowsStyle) ? ypos +fw : 0;
if ( showh ) {
int right = ( showv || cornerWidget() ) ? w-vsbExt : w;
if ( style() == WindowsStyle )
- setHBarGeometry(d->hbar, fw, h-hsbExt-fw,
+ setHBarGeometry(d->hbar, fw + xoffset , h-hsbExt-fw,
right-fw-fw, hsbExt );
else
- setHBarGeometry(d->hbar, 0, h-hsbExt, right,
+ setHBarGeometry(d->hbar, 0+ xoffset, h-hsbExt, right,
hsbExt );
bottom=h-hsbExt;
} else {
bottom=h;
}
if ( showv ) {
- clipper()->setGeometry( lmarg, tmarg,
+ clipper()->setGeometry( lmarg + xoffset, tmarg,
w-vsbExt-lmarg-rmarg,
bottom-tmarg-bmarg );
d->viewportResized( w-vsbExt-lmarg-rmarg, bottom-tmarg-bmarg );
if ( style() == WindowsStyle )
- changeFrameRect(QRect(0, 0, w, h) );
+ changeFrameRect(QRect(xoffset, 0, w, h) );
else
- changeFrameRect(QRect(0, 0, w-vsbExt, bottom));
+ changeFrameRect(QRect(xoffset, 0, w-vsbExt, bottom));
if (cornerWidget()) {
if ( style() == WindowsStyle )
- setVBarGeometry( d->vbar, w-vsbExt-fw,
- fw, vsbExt,
- h-hsbExt-fw-fw );
+ setVBarGeometry( d->vbar, xpos,
+ ypos, vsbExt,
+ bottom-fw-ypos );
else
- setVBarGeometry( d->vbar, w-vsbExt, 0,
+ setVBarGeometry( d->vbar, xpos, ypos,
vsbExt,
- h-hsbExt );
+ bottom-ypos );
}
else {
if ( style() == WindowsStyle )
- setVBarGeometry( d->vbar, w-vsbExt-fw,
- fw, vsbExt,
- bottom-fw-fw );
+ setVBarGeometry( d->vbar, xpos,
+ ypos, vsbExt,
+ bottom-fw-ypos );
else
- setVBarGeometry( d->vbar, w-vsbExt, 0,
- vsbExt, bottom );
+ setVBarGeometry( d->vbar, xpos, ypos,
+ vsbExt, bottom-ypos );
}
} else {
if ( style() == WindowsStyle )
@@ -837,12 +848,12 @@
}
if ( d->corner ) {
if ( style() == WindowsStyle )
- d->corner->setGeometry( w-vsbExt-fw,
+ d->corner->setGeometry( xpos,
h-hsbExt-fw,
vsbExt,
hsbExt );
else
- d->corner->setGeometry( w-vsbExt,
+ d->corner->setGeometry( xpos,
h-hsbExt,
vsbExt,
hsbExt );
@@ -1675,7 +1686,7 @@
}
/*!
- Scrolls the content by \a x to the left and \a y upwards.
+ Scrolls the content by \a dx to the left and \a dy upwards.
*/
void QScrollView::scrollBy( int dx, int dy )
{
diff --git a/qt/qt-2.3.8.patch/qte238-adjustsizes.patch b/qt/qt-2.3.8.patch/qte238-adjustsizes.patch
new file mode 100644
index 0000000..b2a7f7e
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-adjustsizes.patch
@@ -0,0 +1,64 @@
+Qt was not created for 240x320 and we adjust some default values to be more
+sane for the usage on handhelds
+
+
+diff -ur qt-2.3.8-old/src/widgets/qcommonstyle.cpp qt-2.3.8/src/widgets/qcommonstyle.cpp
+--- qt-2.3.8-old/src/widgets/qcommonstyle.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qcommonstyle.cpp 2004-07-23 16:15:16.000000000 +0200
+@@ -566,7 +566,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);
+diff -ur qt-2.3.8-old/src/widgets/qlistview.cpp qt-2.3.8/src/widgets/qlistview.cpp
+--- qt-2.3.8-old/src/widgets/qlistview.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qlistview.cpp 2004-07-23 16:15:16.000000000 +0200
+@@ -5054,9 +5054,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 );
+Nur in qt-2.3.8/src/widgets/: qlistview.cpp.orig.
+diff -ur qt-2.3.8-old/src/widgets/qtoolbutton.cpp qt-2.3.8/src/widgets/qtoolbutton.cpp
+--- qt-2.3.8-old/src/widgets/qtoolbutton.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qtoolbutton.cpp 2004-07-23 16:15:16.000000000 +0200
+@@ -232,7 +232,7 @@
+ else
+ QToolTip::add( this, textLabel );
+ }
+-#endif
++#endif
+ }
+
+
+@@ -326,12 +326,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();
+Nur in qt-2.3.8/src/widgets/: qtoolbutton.cpp.orig.
diff --git a/qt/qt-2.3.8.patch/qte238-all.patch b/qt/qt-2.3.8.patch/qte238-all.patch
index 931d3d8..3266f78 100644
--- a/qt/qt-2.3.8.patch/qte238-all.patch
+++ b/qt/qt-2.3.8.patch/qte238-all.patch
@@ -1,322 +1,1059 @@
+diff -ur qt-2.3.8-old/include/qapplication.h qt-2.3.8/include/qapplication.h
+--- qt-2.3.8-old/include/qapplication.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/include/qapplication.h 2004-07-23 19:08:46.000000000 +0200
+@@ -61,6 +61,10 @@
+ class QSemaphore;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ // REMOVE IN 3.0 (just here for moc source compatibility)
+ #define QNonBaseApplication QApplication
+
+@@ -85,7 +89,10 @@
+
+ #ifndef QT_NO_STYLE
+ static QStyle &style();
+- static void setStyle( QStyle* );
++ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
++private:
++ static void setStyle_NonWeak( QStyle* );
++public:
+ #endif
+ #if 1 /* OBSOLETE */
+ enum ColorMode { NormalColors, CustomColors };
+@@ -106,11 +113,19 @@
+ #ifndef QT_NO_PALETTE
+ static QPalette palette( const QWidget* = 0 );
+ static void setPalette( const QPalette &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ #endif
+ static QFont font( const QWidget* = 0 );
+ static void setFont( const QFont &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ static QFontMetrics fontMetrics();
+
+ QWidget *mainWidget() const;
+@@ -207,7 +222,10 @@
+ void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
+ #ifndef QT_NO_QWS_MANAGER
+ static QWSDecoration &qwsDecoration();
+- static void qwsSetDecoration( QWSDecoration *);
++ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
++private:
++ static void qwsSetDecoration_NonWeak( QWSDecoration *);
++public:
+ #endif
+ #endif
+
+diff -ur qt-2.3.8-old/include/qcstring.h qt-2.3.8/include/qcstring.h
+--- qt-2.3.8-old/include/qcstring.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/include/qcstring.h 2004-07-23 19:09:55.000000000 +0200
+@@ -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 -ur qt-2.3.8-old/include/qfontdatabase.h qt-2.3.8/include/qfontdatabase.h
+--- qt-2.3.8-old/include/qfontdatabase.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/include/qfontdatabase.h 2004-07-23 19:08:46.000000000 +0200
+@@ -59,6 +59,10 @@
+ class QDiskFont;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ class QFontDatabasePrivate;
+
+ class Q_EXPORT QFontDatabase
+@@ -67,9 +71,16 @@
+ QFontDatabase();
+
+ QStringList families( bool onlyForLocale = TRUE ) const;
++
++
+ QValueList<int> pointSizes( const QString &family,
+ const QString &style = QString::null,
+- const QString &charSet = QString::null );
++ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
++private:
++ QValueList<int> pointSizes_NonWeak( const QString &family,
++ const QString &style,
++ const QString &charSet );
++public:
+ QStringList styles( const QString &family,
+ const QString &charSet = QString::null ) const;
+ QStringList charSets( const QString &familyName,
+diff -ur qt-2.3.8-old/include/qglobal.h qt-2.3.8/include/qglobal.h
+--- qt-2.3.8-old/include/qglobal.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/include/qglobal.h 2004-07-23 19:09:55.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+diff -ur qt-2.3.8-old/include/qiconview.h qt-2.3.8/include/qiconview.h
+--- qt-2.3.8-old/include/qiconview.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/include/qiconview.h 2004-07-23 19:13:09.000000000 +0200
+@@ -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 );
+diff -ur qt-2.3.8-old/include/qsortedlist.h qt-2.3.8/include/qsortedlist.h
+--- qt-2.3.8-old/include/qsortedlist.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/include/qsortedlist.h 2004-07-23 19:09:55.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.8-old/include/qstring.h qt-2.3.8/include/qstring.h
+--- qt-2.3.8-old/include/qstring.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/include/qstring.h 2004-07-23 19:09:55.000000000 +0200
+@@ -163,8 +163,16 @@
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+
++
++#ifdef Q_NO_PACKED_REFERENCE
++ uchar& cell() { return *(&cl); }
++ uchar& row() { return *(&rw); }
++#else
+ uchar& cell() { return cl; }
+- uchar& row() { return rw; }
++ uchar& row() { return rw; }
++#endif
++
++
+ uchar cell() const { return cl; }
+ uchar row() const { return rw; }
+
+diff -ur qt-2.3.8-old/src/iconview/qiconview.cpp qt-2.3.8/src/iconview/qiconview.cpp
+--- qt-2.3.8-old/src/iconview/qiconview.cpp 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/iconview/qiconview.cpp 2004-07-23 19:13:09.000000000 +0200
+@@ -224,6 +224,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;
+@@ -2267,6 +2268,7 @@
+ d->currentItem = 0;
+ d->highlightedItem = 0;
+ d->rubber = 0;
++ d->backBuffer = 0;
+ d->scrollTimer = 0;
+ d->startDragItem = 0;
+ d->tmpCurrentItem = 0;
+@@ -2415,6 +2417,8 @@
+ delete item;
+ item = tmp;
+ }
++ delete d->backBuffer;
++ d->backBuffer = 0;
+ delete d->fm;
+ d->fm = 0;
+ #ifndef QT_NO_TOOLTIP
+@@ -2881,6 +2885,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
+ */
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
+@@ -4937,7 +4983,7 @@
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+ }
+- viewportPaintEvent( (QPaintEvent*)e );
++ bufferedPaintEvent ((QPaintEvent*)e );
+ if ( d->dragging ) {
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+@@ -5374,11 +5420,19 @@
+ return;
---- qt-2.3.8-snapshot-20040706/src/kernel/qapplication.cpp~opie 2004-07-06 01:07:38.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qapplication.cpp 2004-07-06 23:53:12.000000000 +0200
+ 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;
+
+Nur in qt-2.3.8/src/iconview: qiconview.cpp.orig.
+Nur in qt-2.3.8/src/iconview: qiconview.cpp.rej.
+diff -ur qt-2.3.8-old/src/iconview/qiconview.h qt-2.3.8/src/iconview/qiconview.h
+--- qt-2.3.8-old/src/iconview/qiconview.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/iconview/qiconview.h 2004-07-23 19:13:09.000000000 +0200
+@@ -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 );
+diff -ur qt-2.3.8-old/src/kernel/qapplication.cpp qt-2.3.8/src/kernel/qapplication.cpp
+--- qt-2.3.8-old/src/kernel/qapplication.cpp 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication.cpp 2004-07-23 19:08:46.000000000 +0200
@@ -35,6 +35,8 @@
**
**********************************************************************/
+#define QT_WEAK_SYMBOL __attribute__(( weak ))
+
#include "qobjectlist.h"
#include "qobjectdict.h"
#include "qapplication.h"
@@ -936,11 +938,16 @@
#ifndef QT_NO_STYLE
void QApplication::setStyle( QStyle *style )
{
+ setStyle_NonWeak ( style );
+}
+
+void QApplication::setStyle_NonWeak( QStyle *style )
+{
QStyle* old = app_style;
- app_style = style;
if ( startingUp() ) {
delete old;
+ app_style = style;
return;
}
@@ -961,6 +968,8 @@
old->unPolish( qApp );
}
+ app_style = style;
+
// take care of possible palette requirements of certain gui
// styles. Do it before polishing the application since the style
// might call QApplication::setStyle() itself
@@ -1187,13 +1196,30 @@
\sa QWidget::setPalette(), palette(), QStyle::polish()
*/
-void QApplication::setPalette( const QPalette &palette, bool informWidgets,
+void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
+ const char* className )
+{
+ setPalette_NonWeak ( palette, informWidgets, className );
+}
+
+void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
const char* className )
{
QPalette pal = palette;
#ifndef QT_NO_STYLE
- if ( !startingUp() )
+ if ( !startingUp() ) {
qApp->style().polish( pal ); // NB: non-const reference
+ if ( className ) {
+ // if we just polished a class specific palette (this normally
+ // only called by qt_fix_tooltips - see below), we better re-
+ // polish the global palette. Some styles like liquid can get
+ // confused, because they can not detect if the polished palette
+ // is the global one or only a class specific one.
+ // (liquid uses this palette to calculate blending pixmaps)
+ QPalette p = qApp-> palette ( );
+ qApp->style().polish ( p );
+ }
+ }
#endif
bool all = FALSE;
if ( !className ) {
@@ -1278,6 +1304,12 @@
void QApplication::setFont( const QFont &font, bool informWidgets,
const char* className )
{
+ setFont_NonWeak ( font, informWidgets, className );
+}
+
+void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
+ const char* className )
+{
bool all = FALSE;
if ( !className ) {
if ( !app_font ) {
---- qt-2.3.8-snapshot-20040706/src/kernel/qapplication.h~opie 2004-07-06 01:07:38.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qapplication.h 2004-07-06 23:53:12.000000000 +0200
+Nur in qt-2.3.8/src/kernel: qapplication.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qapplication.h qt-2.3.8/src/kernel/qapplication.h
+--- qt-2.3.8-old/src/kernel/qapplication.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication.h 2004-07-23 19:08:46.000000000 +0200
@@ -61,6 +61,10 @@
class QSemaphore;
#endif
+#if !defined( QT_WEAK_SYMBOL )
+#define QT_WEAK_SYMBOL
+#endif
+
// REMOVE IN 3.0 (just here for moc source compatibility)
#define QNonBaseApplication QApplication
@@ -85,7 +89,10 @@
#ifndef QT_NO_STYLE
static QStyle &style();
- static void setStyle( QStyle* );
+ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
+private:
+ static void setStyle_NonWeak( QStyle* );
+public:
#endif
#if 1 /* OBSOLETE */
enum ColorMode { NormalColors, CustomColors };
@@ -106,11 +113,19 @@
#ifndef QT_NO_PALETTE
static QPalette palette( const QWidget* = 0 );
static void setPalette( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 ) QT_WEAK_SYMBOL;
+private:
+ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
const char* className = 0 );
+public:
#endif
static QFont font( const QWidget* = 0 );
static void setFont( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 ) QT_WEAK_SYMBOL;
+private:
+ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
const char* className = 0 );
+public:
static QFontMetrics fontMetrics();
QWidget *mainWidget() const;
@@ -207,7 +222,10 @@
void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
#ifndef QT_NO_QWS_MANAGER
static QWSDecoration &qwsDecoration();
- static void qwsSetDecoration( QWSDecoration *);
+ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
+private:
+ static void qwsSetDecoration_NonWeak( QWSDecoration *);
+public:
#endif
#endif
---- qt-2.3.8-snapshot-20040706/src/kernel/qapplication_qws.cpp~opie 2004-07-06 23:37:08.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qapplication_qws.cpp 2004-07-06 23:53:12.000000000 +0200
-@@ -2989,6 +2989,11 @@
+diff -ur qt-2.3.8-old/src/kernel/qapplication_qws.cpp qt-2.3.8/src/kernel/qapplication_qws.cpp
+--- qt-2.3.8-old/src/kernel/qapplication_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication_qws.cpp 2004-07-23 19:08:46.000000000 +0200
+@@ -2896,6 +2896,11 @@
*/
void QApplication::qwsSetDecoration( QWSDecoration *d )
{
+ qwsSetDecoration_NonWeak ( d );
+}
+
+void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
+{
if ( d ) {
delete qws_decoration;
qws_decoration = d;
---- qt-2.3.8-snapshot-20040706/src/kernel/qfontdatabase.cpp~opie 2004-07-06 01:07:38.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qfontdatabase.cpp 2004-07-06 23:53:12.000000000 +0200
+Nur in qt-2.3.8/src/kernel: qapplication_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qfontdatabase.cpp qt-2.3.8/src/kernel/qfontdatabase.cpp
+--- qt-2.3.8-old/src/kernel/qfontdatabase.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qfontdatabase.cpp 2004-07-23 19:08:46.000000000 +0200
@@ -35,6 +35,8 @@
**
**********************************************************************/
+#define QT_WEAK_SYMBOL __attribute__(( weak ))
+
#include "qfontdatabase.h"
#ifndef QT_NO_FONTDATABASE
@@ -2424,6 +2426,13 @@
const QString &style,
const QString &charSet )
{
+ return pointSizes_NonWeak ( family, style, charSet );
+}
+
+QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
+ const QString &style,
+ const QString &charSet )
+{
QString cs( charSet );
if ( charSet.isEmpty() ) {
QStringList lst = charSets( family );
---- qt-2.3.8-snapshot-20040706/src/kernel/qfontdatabase.h~opie 2004-07-06 01:07:38.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qfontdatabase.h 2004-07-06 23:53:12.000000000 +0200
+diff -ur qt-2.3.8-old/src/kernel/qfontdatabase.h qt-2.3.8/src/kernel/qfontdatabase.h
+--- qt-2.3.8-old/src/kernel/qfontdatabase.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qfontdatabase.h 2004-07-23 19:08:46.000000000 +0200
@@ -59,6 +59,10 @@
class QDiskFont;
#endif
+#if !defined( QT_WEAK_SYMBOL )
+#define QT_WEAK_SYMBOL
+#endif
+
class QFontDatabasePrivate;
class Q_EXPORT QFontDatabase
@@ -67,9 +71,16 @@
QFontDatabase();
QStringList families( bool onlyForLocale = TRUE ) const;
+
+
QValueList<int> pointSizes( const QString &family,
const QString &style = QString::null,
- const QString &charSet = QString::null );
+ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
+private:
+ QValueList<int> pointSizes_NonWeak( const QString &family,
+ const QString &style,
+ const QString &charSet );
+public:
QStringList styles( const QString &family,
const QString &charSet = QString::null ) const;
QStringList charSets( const QString &familyName,
---- qt-2.3.8-snapshot-20040706/src/kernel/qgfxraster_qws.cpp~opie 2004-07-06 01:07:38.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qgfxraster_qws.cpp 2004-07-06 23:53:12.000000000 +0200
-@@ -4398,7 +4398,7 @@
+diff -ur qt-2.3.8-old/src/kernel/qgfxraster_qws.cpp qt-2.3.8/src/kernel/qgfxraster_qws.cpp
+--- qt-2.3.8-old/src/kernel/qgfxraster_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxraster_qws.cpp 2004-07-23 19:10:03.000000000 +0200
+@@ -4400,7 +4400,7 @@
setAlphaType(IgnoreAlpha);
if ( w <= 0 || h <= 0 || !ncliprect ) return;
GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
-#ifdef QWS_EXPERIMENTAL_FASTPATH
+#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
// ### fix for 8bpp
// This seems to be reliable now, at least for 16bpp
---- qt-2.3.8-snapshot-20040706/src/kernel/qkeyboard_qws.cpp~opie 2004-07-06 23:37:08.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qkeyboard_qws.cpp 2004-07-06 23:53:12.000000000 +0200
+Nur in qt-2.3.8/src/kernel: qgfxraster_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qgfxtransformed_qws.cpp qt-2.3.8/src/kernel/qgfxtransformed_qws.cpp
+--- qt-2.3.8-old/src/kernel/qgfxtransformed_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxtransformed_qws.cpp 2004-07-23 19:09:55.000000000 +0200
+@@ -671,11 +671,11 @@
+ inline int tx( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return y - xoffs + yoffs;
++ return y - this->xoffs + this->yoffs;
+ case QTransformedScreen::Rot180:
+- return (width - x - 1) - xoffs - xoffs;
++ return (this->width - x - 1) - this->xoffs - this->xoffs;
+ case QTransformedScreen::Rot270:
+- return (height - y - 1) - xoffs - yoffs;
++ return (this->height - y - 1) - this->xoffs - this->yoffs;
+ default:
+ return x;
+ }
+@@ -683,11 +683,11 @@
+ inline int ty( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return (width - x - 1) - yoffs - xoffs;
++ return (this->width - x - 1) - this->yoffs - this->xoffs;
+ case QTransformedScreen::Rot180:
+- return (height - y - 1) - yoffs - yoffs;
++ return (this->height - y - 1) - this->yoffs - this->yoffs;
+ case QTransformedScreen::Rot270:
+- return x - yoffs + xoffs;
++ return x - this->yoffs + this->xoffs;
+ default:
+ return y;
+ }
+@@ -715,23 +715,23 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::setSourceWidgetOffset(int x, int y)
+ {
+- if ( srcbits == buffer ) {
++ if ( this->srcbits == this->buffer ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- srcwidgetoffs = QPoint( y, width - x - srcwidth );
++ this->srcwidgetoffs = QPoint( y, this->width - x - this->srcwidth );
+ break;
+ case QTransformedScreen::Rot180:
+- srcwidgetoffs = QPoint( width - x - srcwidth, height - y - srcheight );
++ this->srcwidgetoffs = QPoint( this->width - x - this->srcwidth, this->height - y - this->srcheight );
+ break;
+ case QTransformedScreen::Rot270:
+- srcwidgetoffs = QPoint( height - y - srcheight, x );
++ this->srcwidgetoffs = QPoint( this->height - y - this->srcheight, x );
+ break;
+ default:
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ break;
+ }
+ } else
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ }
+
+ template <const int depth, const int type>
+@@ -739,8 +739,8 @@
+ {
+ QT_TRANS_GFX_BASE<depth,type>::setSource(i);
+ QSize s = qt_screen->mapToDevice( QSize(i->width(), i->height()) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+ }
+
+ template <const int depth, const int type>
+@@ -782,7 +782,7 @@
+ if ( w == 0 || h == 0 )
+ return;
+ QRect r( x, y, w, h );
+- if ( cbrush.style() == SolidPattern ) {
++ if ( this->cbrush.style() == Qt::SolidPattern ) {
+ r.setCoords( tx(x,y), ty(x,y), tx(x+w-1,y+h-1), ty(x+w-1,y+h-1) );
+ r = r.normalize();
+ }
+@@ -797,7 +797,7 @@
+ // solution. The brush offset logic is complicated enough, so we don't
+ // fastpath patternedbrush.
+
+- if ( inDraw || cpen.style()==NoPen || patternedbrush ) {
++ if ( inDraw || this->cpen.style()==Qt::NoPen || this->patternedbrush ) {
+ //slowpath
+ QT_TRANS_GFX_BASE<depth,type>::drawPolygon( a, w, idx, num );
+ } else {
+@@ -819,29 +819,29 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::processSpans( int n, QPoint* point, int* width )
+ {
+- if ( inDraw || patternedbrush && srcwidth != 0 && srcheight != 0 ) {
++ if ( inDraw || this->patternedbrush && this->srcwidth != 0 && this->srcheight != 0 ) {
+ //in the patternedbrush case, we let blt do the transformation
+ // so we leave inDraw false.
+- QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
++ QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
+ } else {
+ inDraw = TRUE;
+ while (n--) {
+ if ( *width > 0 ) {
+- int x=tx(point->x(),point->y())+xoffs;
+- int y=ty(point->x(),point->y())+yoffs;
++ int x=tx(point->x(),point->y())+this->xoffs;
++ int y=ty(point->x(),point->y())+this->yoffs;
+
+ switch( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- vline( x, y-(*width-1), y );
++ this->vline( x, y-(*width-1), y );
+ break;
+ case QTransformedScreen::Rot180:
+- hline( x - (*width-1), x, y );
++ this->hline( x - (*width-1), x, y );
+ break;
+ case QTransformedScreen::Rot270:
+- vline( x, y, y+*width-1 );
++ this->vline( x, y, y+*width-1 );
+ break;
+ default:
+- hline( x, x+*width-1, y );
++ this->hline( x, x+*width-1, y );
+ break;
+ }
+ }
+@@ -896,14 +896,14 @@
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+ rsx = sy;
+- rsy = srcwidth - sx - w;
++ rsy = this->srcwidth - sx - w;
+ break;
+ case QTransformedScreen::Rot180:
+- rsx = srcwidth - sx - w;
+- rsy = srcheight - sy - h;
++ rsx = this->srcwidth - sx - w;
++ rsy = this->srcheight - sy - h;
+ break;
+ case QTransformedScreen::Rot270:
+- rsx = srcheight - sy - h;
++ rsx = this->srcheight - sy - h;
+ rsy = sx;
+ break;
+ default:
+@@ -941,39 +941,39 @@
+ r.setCoords( tx(rx,ry), ty(rx,ry), tx(rx+w-1,ry+h-1), ty(rx+w-1,ry+h-1) );
+ r = r.normalize();
+
+- QPoint oldBrushOffs = brushoffs;
++ QPoint oldBrushOffs = this->brushoffs;
+ int brx, bry;
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- brx = brushoffs.y();
+- bry = srcwidth - brushoffs.x() - w;
++ brx = this->brushoffs.y();
++ bry = this->srcwidth - this->brushoffs.x() - w;
+ break;
+ case QTransformedScreen::Rot180:
+- brx = srcwidth - brushoffs.x() - w;
+- bry = srcheight - brushoffs.y() - h;
++ brx = this->srcwidth - this->brushoffs.x() - w;
++ bry = this->srcheight - this->brushoffs.y() - h;
+ break;
+ case QTransformedScreen::Rot270:
+- brx = srcheight - brushoffs.y() - h;
+- bry = brushoffs.x();
++ brx = this->srcheight - this->brushoffs.y() - h;
++ bry = this->brushoffs.x();
+ break;
+ default:
+- brx = brushoffs.x();
+- bry = brushoffs.y();
++ brx = this->brushoffs.x();
++ bry = this->brushoffs.y();
+ break;
+ }
+- brushoffs = QPoint( brx, bry );
++ this->brushoffs = QPoint( brx, bry );
+
+- int oldsw = srcwidth;
+- int oldsh = srcheight;
+- QSize s = qt_screen->mapToDevice( QSize(srcwidth,srcheight) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ int oldsw = this->srcwidth;
++ int oldsh = this->srcheight;
++ QSize s = qt_screen->mapToDevice( QSize(this->srcwidth,this->srcheight) );
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+
+ QT_TRANS_GFX_BASE<depth,type>::tiledBlt( r.x(), r.y(), r.width(), r.height() );
+
+- srcwidth = oldsw;
+- srcheight = oldsh;
+- brushoffs = oldBrushOffs;
++ this->srcwidth = oldsw;
++ this->srcheight = oldsh;
++ this->brushoffs = oldBrushOffs;
+ inDraw = FALSE;
+ }
+
+diff -ur qt-2.3.8-old/src/kernel/qgfxvfb_qws.cpp qt-2.3.8/src/kernel/qgfxvfb_qws.cpp
+--- qt-2.3.8-old/src/kernel/qgfxvfb_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxvfb_qws.cpp 2004-07-23 19:09:55.000000000 +0200
+@@ -31,7 +31,6 @@
+ **********************************************************************/
+
+ #include "qgfxraster_qws.h"
+-
+ #ifndef QT_NO_QWS_VFB
+
+ #include <sys/ipc.h>
+@@ -140,8 +139,8 @@
+ void QGfxVFb<depth,type>::drawPoint( int x, int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) );
+ QGfxRaster<depth,type>::drawPoint( x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -150,8 +149,8 @@
+ void QGfxVFb<depth,type>::drawPoints( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPoints( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -160,9 +159,9 @@
+ void QGfxVFb<depth,type>::drawLine( int x1,int y1,int x2,int y2 )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx ) {
++ if ( this->is_screen_gfx ) {
+ QRect r;
+- r.setCoords( x1+xoffs, y1+yoffs, x2+xoffs, y2+yoffs );
++ r.setCoords( x1+this->xoffs, y1+this->yoffs, x2+this->xoffs, y2+this->yoffs );
+ qvfb_screen->setDirty( r.normalize() );
+ }
+ QGfxRaster<depth,type>::drawLine( x1, y1, x2, y2 );
+@@ -173,8 +172,8 @@
+ void QGfxVFb<depth,type>::fillRect( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::fillRect( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+@@ -183,8 +182,8 @@
+ void QGfxVFb<depth,type>::drawPolyline( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolyline( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -193,8 +192,8 @@
+ void QGfxVFb<depth,type>::drawPolygon( const QPointArray &pa,bool w,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolygon( pa, w, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -203,8 +202,8 @@
+ void QGfxVFb<depth,type>::blt( int x,int y,int w,int h, int sx, int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::blt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -215,8 +214,8 @@
+ QWSDisplay::grab( TRUE );
+ int dy = sy - y;
+ int dx = sx - x;
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs,
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs,
+ w+abs(dx), h+abs(dy)) );
+ QGfxRaster<depth,type>::scroll( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+@@ -227,8 +226,8 @@
+ void QGfxVFb<depth,type>::stretchBlt( int x,int y,int w,int h,int sx,int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::stretchBlt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -238,8 +237,8 @@
+ void QGfxVFb<depth,type>::tiledBlt( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::tiledBlt( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+diff -ur qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp qt-2.3.8/src/kernel/qkeyboard_qws.cpp
+--- qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qkeyboard_qws.cpp 2004-07-23 19:15:51.000000000 +0200
@@ -314,7 +314,7 @@
{ Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
{ Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
{ Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
+ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
{ Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
{ Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
{ Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
---- qt-2.3.8-snapshot-20040706/src/kernel/qwindowsystem_qws.cpp~opie 2004-07-06 23:37:08.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/kernel/qwindowsystem_qws.cpp 2004-07-06 23:53:12.000000000 +0200
-@@ -1158,6 +1158,18 @@
+Nur in qt-2.3.8/src/kernel: qkeyboard_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp qt-2.3.8/src/kernel/qwindowsystem_qws.cpp
+--- qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qwindowsystem_qws.cpp 2004-07-23 19:15:51.000000000 +0200
+@@ -1273,6 +1273,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
-@@ -1250,6 +1262,7 @@
+@@ -1365,6 +1377,7 @@
}
signal(SIGPIPE, ignoreSignal); //we get it when we read
+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
#endif
focusw = 0;
mouseGrabber = 0;
---- qt-2.3.8-snapshot-20040706/src/widgets/qcommonstyle.cpp~opie 2004-07-06 01:07:37.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/widgets/qcommonstyle.cpp 2004-07-06 23:53:12.000000000 +0200
+Nur in qt-2.3.8/src/kernel: qwindowsystem_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/tools/qcstring.h qt-2.3.8/src/tools/qcstring.h
+--- qt-2.3.8-old/src/tools/qcstring.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/tools/qcstring.h 2004-07-23 19:09:55.000000000 +0200
+@@ -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 -ur qt-2.3.8-old/src/tools/qglobal.h qt-2.3.8/src/tools/qglobal.h
+--- qt-2.3.8-old/src/tools/qglobal.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/tools/qglobal.h 2004-07-23 19:09:55.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+diff -ur qt-2.3.8-old/src/tools/qsortedlist.h qt-2.3.8/src/tools/qsortedlist.h
+--- qt-2.3.8-old/src/tools/qsortedlist.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/tools/qsortedlist.h 2004-07-23 19:09:55.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.8-old/src/tools/qstring.cpp qt-2.3.8/src/tools/qstring.cpp
+--- qt-2.3.8-old/src/tools/qstring.cpp 2004-07-23 14:34:57.000000000 +0200
++++ qt-2.3.8/src/tools/qstring.cpp 2004-07-23 19:09:49.000000000 +0200
+@@ -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
+ }
+diff -ur qt-2.3.8-old/src/tools/qstring.h qt-2.3.8/src/tools/qstring.h
+--- qt-2.3.8-old/src/tools/qstring.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/tools/qstring.h 2004-07-23 19:09:55.000000000 +0200
+@@ -163,8 +163,16 @@
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+
++
++#ifdef Q_NO_PACKED_REFERENCE
++ uchar& cell() { return *(&cl); }
++ uchar& row() { return *(&rw); }
++#else
+ uchar& cell() { return cl; }
+- uchar& row() { return rw; }
++ uchar& row() { return rw; }
++#endif
++
++
+ uchar cell() const { return cl; }
+ uchar row() const { return rw; }
+
+diff -ur qt-2.3.8-old/src/widgets/qcommonstyle.cpp qt-2.3.8/src/widgets/qcommonstyle.cpp
+--- qt-2.3.8-old/src/widgets/qcommonstyle.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qcommonstyle.cpp 2004-07-23 16:15:16.000000000 +0200
@@ -566,7 +566,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);
---- qt-2.3.8-snapshot-20040706/src/widgets/qlistview.cpp~opie 2004-07-06 01:07:37.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/widgets/qlistview.cpp 2004-07-06 23:53:12.000000000 +0200
-@@ -5057,9 +5057,9 @@
+diff -ur qt-2.3.8-old/src/widgets/qlistview.cpp qt-2.3.8/src/widgets/qlistview.cpp
+--- qt-2.3.8-old/src/widgets/qlistview.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qlistview.cpp 2004-07-23 16:15:16.000000000 +0200
+@@ -5054,9 +5054,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 );
---- qt-2.3.8-snapshot-20040706/src/widgets/qtoolbutton.cpp~opie 2004-07-06 01:07:37.000000000 +0200
-+++ qt-2.3.8-snapshot-20040706/src/widgets/qtoolbutton.cpp 2004-07-06 23:53:12.000000000 +0200
+Nur in qt-2.3.8/src/widgets: qlistview.cpp.orig.
+diff -ur qt-2.3.8-old/src/widgets/qscrollview.cpp qt-2.3.8/src/widgets/qscrollview.cpp
+--- qt-2.3.8-old/src/widgets/qscrollview.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qscrollview.cpp 2004-07-23 19:21:06.000000000 +0200
+@@ -1280,6 +1280,9 @@
+ case QEvent::LayoutHint:
+ d->autoResizeHint(this);
+ break;
++ case QEvent::WindowActivate:
++ case QEvent::WindowDeactivate:
++ return TRUE;
+ default:
+ break;
+ }
+diff -ur qt-2.3.8-old/src/widgets/qtoolbutton.cpp qt-2.3.8/src/widgets/qtoolbutton.cpp
+--- qt-2.3.8-old/src/widgets/qtoolbutton.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qtoolbutton.cpp 2004-07-23 16:15:16.000000000 +0200
@@ -232,7 +232,7 @@
else
QToolTip::add( this, textLabel );
}
-#endif
+#endif
}
@@ -326,12 +326,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();
+Nur in qt-2.3.8/src/widgets: qtoolbutton.cpp.orig.
diff --git a/qt/qt-2.3.8.patch/qte238-allowoverride.patch b/qt/qt-2.3.8.patch/qte238-allowoverride.patch
new file mode 100644
index 0000000..8a63710
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-allowoverride.patch
@@ -0,0 +1,231 @@
+Qt2.3.5 -> Qt2.3.6 changed the meaning of point sizes they used
+to be multiplied with 10, some apps get confused by that and
+in Opie we allow to work around for specefic application
+
+Courtsey to Robert 'sandman' Griebl
+
+
+
+
+
+
+
+
+diff -ur qt-2.3.8-old/src/kernel/qapplication.cpp qt-2.3.8/src/kernel/qapplication.cpp
+--- qt-2.3.8-old/src/kernel/qapplication.cpp 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication.cpp 2004-07-23 19:08:46.000000000 +0200
+@@ -35,6 +35,8 @@
+ **
+ **********************************************************************/
+
++#define QT_WEAK_SYMBOL __attribute__(( weak ))
++
+ #include "qobjectlist.h"
+ #include "qobjectdict.h"
+ #include "qapplication.h"
+@@ -936,11 +938,16 @@
+ #ifndef QT_NO_STYLE
+ void QApplication::setStyle( QStyle *style )
+ {
++ setStyle_NonWeak ( style );
++}
++
++void QApplication::setStyle_NonWeak( QStyle *style )
++{
+ QStyle* old = app_style;
+- app_style = style;
+
+ if ( startingUp() ) {
+ delete old;
++ app_style = style;
+ return;
+ }
+
+@@ -961,6 +968,8 @@
+ old->unPolish( qApp );
+ }
+
++ app_style = style;
++
+ // take care of possible palette requirements of certain gui
+ // styles. Do it before polishing the application since the style
+ // might call QApplication::setStyle() itself
+@@ -1187,13 +1196,30 @@
+ \sa QWidget::setPalette(), palette(), QStyle::polish()
+ */
+
+-void QApplication::setPalette( const QPalette &palette, bool informWidgets,
++void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
++ const char* className )
++{
++ setPalette_NonWeak ( palette, informWidgets, className );
++}
++
++void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
+ const char* className )
+ {
+ QPalette pal = palette;
+ #ifndef QT_NO_STYLE
+- if ( !startingUp() )
++ if ( !startingUp() ) {
+ qApp->style().polish( pal ); // NB: non-const reference
++ if ( className ) {
++ // if we just polished a class specific palette (this normally
++ // only called by qt_fix_tooltips - see below), we better re-
++ // polish the global palette. Some styles like liquid can get
++ // confused, because they can not detect if the polished palette
++ // is the global one or only a class specific one.
++ // (liquid uses this palette to calculate blending pixmaps)
++ QPalette p = qApp-> palette ( );
++ qApp->style().polish ( p );
++ }
++ }
+ #endif
+ bool all = FALSE;
+ if ( !className ) {
+@@ -1278,6 +1304,12 @@
+ void QApplication::setFont( const QFont &font, bool informWidgets,
+ const char* className )
+ {
++ setFont_NonWeak ( font, informWidgets, className );
++}
++
++void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
++ const char* className )
++{
+ bool all = FALSE;
+ if ( !className ) {
+ if ( !app_font ) {
+Nur in qt-2.3.8/src/kernel/: qapplication.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qapplication.h qt-2.3.8/src/kernel/qapplication.h
+--- qt-2.3.8-old/src/kernel/qapplication.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication.h 2004-07-23 19:08:46.000000000 +0200
+@@ -61,6 +61,10 @@
+ class QSemaphore;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ // REMOVE IN 3.0 (just here for moc source compatibility)
+ #define QNonBaseApplication QApplication
+
+@@ -85,7 +89,10 @@
+
+ #ifndef QT_NO_STYLE
+ static QStyle &style();
+- static void setStyle( QStyle* );
++ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
++private:
++ static void setStyle_NonWeak( QStyle* );
++public:
+ #endif
+ #if 1 /* OBSOLETE */
+ enum ColorMode { NormalColors, CustomColors };
+@@ -106,11 +113,19 @@
+ #ifndef QT_NO_PALETTE
+ static QPalette palette( const QWidget* = 0 );
+ static void setPalette( const QPalette &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ #endif
+ static QFont font( const QWidget* = 0 );
+ static void setFont( const QFont &, bool informWidgets=FALSE,
++ const char* className = 0 ) QT_WEAK_SYMBOL;
++private:
++ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
+ const char* className = 0 );
++public:
+ static QFontMetrics fontMetrics();
+
+ QWidget *mainWidget() const;
+@@ -207,7 +222,10 @@
+ void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
+ #ifndef QT_NO_QWS_MANAGER
+ static QWSDecoration &qwsDecoration();
+- static void qwsSetDecoration( QWSDecoration *);
++ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
++private:
++ static void qwsSetDecoration_NonWeak( QWSDecoration *);
++public:
+ #endif
+ #endif
+
+diff -ur qt-2.3.8-old/src/kernel/qapplication_qws.cpp qt-2.3.8/src/kernel/qapplication_qws.cpp
+--- qt-2.3.8-old/src/kernel/qapplication_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qapplication_qws.cpp 2004-07-23 19:08:46.000000000 +0200
+@@ -2896,6 +2896,11 @@
+ */
+ void QApplication::qwsSetDecoration( QWSDecoration *d )
+ {
++ qwsSetDecoration_NonWeak ( d );
++}
++
++void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
++{
+ if ( d ) {
+ delete qws_decoration;
+ qws_decoration = d;
+Nur in qt-2.3.8/src/kernel/: qapplication_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qfontdatabase.cpp qt-2.3.8/src/kernel/qfontdatabase.cpp
+--- qt-2.3.8-old/src/kernel/qfontdatabase.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qfontdatabase.cpp 2004-07-23 19:08:46.000000000 +0200
+@@ -35,6 +35,8 @@
+ **
+ **********************************************************************/
+
++#define QT_WEAK_SYMBOL __attribute__(( weak ))
++
+ #include "qfontdatabase.h"
+
+ #ifndef QT_NO_FONTDATABASE
+@@ -2424,6 +2426,13 @@
+ const QString &style,
+ const QString &charSet )
+ {
++ return pointSizes_NonWeak ( family, style, charSet );
++}
++
++QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
++ const QString &style,
++ const QString &charSet )
++{
+ QString cs( charSet );
+ if ( charSet.isEmpty() ) {
+ QStringList lst = charSets( family );
+diff -ur qt-2.3.8-old/src/kernel/qfontdatabase.h qt-2.3.8/src/kernel/qfontdatabase.h
+--- qt-2.3.8-old/src/kernel/qfontdatabase.h 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qfontdatabase.h 2004-07-23 19:08:46.000000000 +0200
+@@ -59,6 +59,10 @@
+ class QDiskFont;
+ #endif
+
++#if !defined( QT_WEAK_SYMBOL )
++#define QT_WEAK_SYMBOL
++#endif
++
+ class QFontDatabasePrivate;
+
+ class Q_EXPORT QFontDatabase
+@@ -67,9 +71,16 @@
+ QFontDatabase();
+
+ QStringList families( bool onlyForLocale = TRUE ) const;
++
++
+ QValueList<int> pointSizes( const QString &family,
+ const QString &style = QString::null,
+- const QString &charSet = QString::null );
++ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
++private:
++ QValueList<int> pointSizes_NonWeak( const QString &family,
++ const QString &style,
++ const QString &charSet );
++public:
+ QStringList styles( const QString &family,
+ const QString &charSet = QString::null ) const;
+ QStringList charSets( const QString &familyName,
diff --git a/qt/qt-2.3.8.patch/qte238-gcc34.patch b/qt/qt-2.3.8.patch/qte238-gcc34.patch
new file mode 100644
index 0000000..770740d
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-gcc34.patch
@@ -0,0 +1,440 @@
+diff -ur qt-2.3.8_clean/include/qcstring.h qt-2.3.8/include/qcstring.h
+--- qt-2.3.8_clean/include/qcstring.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/include/qcstring.h 2004-06-04 02:24:25.000000000 +0200
+@@ -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 -ur qt-2.3.8_clean/include/qglobal.h qt-2.3.8/include/qglobal.h
+--- qt-2.3.8_clean/include/qglobal.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/include/qglobal.h 2004-06-04 02:29:41.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+diff -ur qt-2.3.8_clean/include/qsortedlist.h qt-2.3.8/include/qsortedlist.h
+--- qt-2.3.8_clean/include/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/include/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.8_clean/src/kernel/qgfxtransformed_qws.cpp qt-2.3.8/src/kernel/qgfxtransformed_qws.cpp
+--- qt-2.3.8_clean/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:24:25.000000000 +0200
+@@ -671,11 +671,11 @@
+ inline int tx( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return y - xoffs + yoffs;
++ return y - this->xoffs + this->yoffs;
+ case QTransformedScreen::Rot180:
+- return (width - x - 1) - xoffs - xoffs;
++ return (this->width - x - 1) - this->xoffs - this->xoffs;
+ case QTransformedScreen::Rot270:
+- return (height - y - 1) - xoffs - yoffs;
++ return (this->height - y - 1) - this->xoffs - this->yoffs;
+ default:
+ return x;
+ }
+@@ -683,11 +683,11 @@
+ inline int ty( int x, int y ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- return (width - x - 1) - yoffs - xoffs;
++ return (this->width - x - 1) - this->yoffs - this->xoffs;
+ case QTransformedScreen::Rot180:
+- return (height - y - 1) - yoffs - yoffs;
++ return (this->height - y - 1) - this->yoffs - this->yoffs;
+ case QTransformedScreen::Rot270:
+- return x - yoffs + xoffs;
++ return x - this->yoffs + this->xoffs;
+ default:
+ return y;
+ }
+@@ -715,23 +715,23 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::setSourceWidgetOffset(int x, int y)
+ {
+- if ( srcbits == buffer ) {
++ if ( this->srcbits == this->buffer ) {
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- srcwidgetoffs = QPoint( y, width - x - srcwidth );
++ this->srcwidgetoffs = QPoint( y, this->width - x - this->srcwidth );
+ break;
+ case QTransformedScreen::Rot180:
+- srcwidgetoffs = QPoint( width - x - srcwidth, height - y - srcheight );
++ this->srcwidgetoffs = QPoint( this->width - x - this->srcwidth, this->height - y - this->srcheight );
+ break;
+ case QTransformedScreen::Rot270:
+- srcwidgetoffs = QPoint( height - y - srcheight, x );
++ this->srcwidgetoffs = QPoint( this->height - y - this->srcheight, x );
+ break;
+ default:
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ break;
+ }
+ } else
+- srcwidgetoffs = QPoint( x, y );
++ this->srcwidgetoffs = QPoint( x, y );
+ }
+
+ template <const int depth, const int type>
+@@ -739,8 +739,8 @@
+ {
+ QT_TRANS_GFX_BASE<depth,type>::setSource(i);
+ QSize s = qt_screen->mapToDevice( QSize(i->width(), i->height()) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+ }
+
+ template <const int depth, const int type>
+@@ -782,7 +782,7 @@
+ if ( w == 0 || h == 0 )
+ return;
+ QRect r( x, y, w, h );
+- if ( cbrush.style() == SolidPattern ) {
++ if ( this->cbrush.style() == Qt::SolidPattern ) {
+ r.setCoords( tx(x,y), ty(x,y), tx(x+w-1,y+h-1), ty(x+w-1,y+h-1) );
+ r = r.normalize();
+ }
+@@ -797,7 +797,7 @@
+ // solution. The brush offset logic is complicated enough, so we don't
+ // fastpath patternedbrush.
+
+- if ( inDraw || cpen.style()==NoPen || patternedbrush ) {
++ if ( inDraw || this->cpen.style()==Qt::NoPen || this->patternedbrush ) {
+ //slowpath
+ QT_TRANS_GFX_BASE<depth,type>::drawPolygon( a, w, idx, num );
+ } else {
+@@ -819,29 +819,29 @@
+ template <const int depth, const int type>
+ void QGfxTransformedRaster<depth,type>::processSpans( int n, QPoint* point, int* width )
+ {
+- if ( inDraw || patternedbrush && srcwidth != 0 && srcheight != 0 ) {
++ if ( inDraw || this->patternedbrush && this->srcwidth != 0 && this->srcheight != 0 ) {
+ //in the patternedbrush case, we let blt do the transformation
+ // so we leave inDraw false.
+- QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
++ QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width );
+ } else {
+ inDraw = TRUE;
+ while (n--) {
+ if ( *width > 0 ) {
+- int x=tx(point->x(),point->y())+xoffs;
+- int y=ty(point->x(),point->y())+yoffs;
++ int x=tx(point->x(),point->y())+this->xoffs;
++ int y=ty(point->x(),point->y())+this->yoffs;
+
+ switch( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- vline( x, y-(*width-1), y );
++ this->vline( x, y-(*width-1), y );
+ break;
+ case QTransformedScreen::Rot180:
+- hline( x - (*width-1), x, y );
++ this->hline( x - (*width-1), x, y );
+ break;
+ case QTransformedScreen::Rot270:
+- vline( x, y, y+*width-1 );
++ this->vline( x, y, y+*width-1 );
+ break;
+ default:
+- hline( x, x+*width-1, y );
++ this->hline( x, x+*width-1, y );
+ break;
+ }
+ }
+@@ -896,14 +896,14 @@
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+ rsx = sy;
+- rsy = srcwidth - sx - w;
++ rsy = this->srcwidth - sx - w;
+ break;
+ case QTransformedScreen::Rot180:
+- rsx = srcwidth - sx - w;
+- rsy = srcheight - sy - h;
++ rsx = this->srcwidth - sx - w;
++ rsy = this->srcheight - sy - h;
+ break;
+ case QTransformedScreen::Rot270:
+- rsx = srcheight - sy - h;
++ rsx = this->srcheight - sy - h;
+ rsy = sx;
+ break;
+ default:
+@@ -941,39 +941,39 @@
+ r.setCoords( tx(rx,ry), ty(rx,ry), tx(rx+w-1,ry+h-1), ty(rx+w-1,ry+h-1) );
+ r = r.normalize();
+
+- QPoint oldBrushOffs = brushoffs;
++ QPoint oldBrushOffs = this->brushoffs;
+ int brx, bry;
+ switch ( qt_trans_screen->transformation() ) {
+ case QTransformedScreen::Rot90:
+- brx = brushoffs.y();
+- bry = srcwidth - brushoffs.x() - w;
++ brx = this->brushoffs.y();
++ bry = this->srcwidth - this->brushoffs.x() - w;
+ break;
+ case QTransformedScreen::Rot180:
+- brx = srcwidth - brushoffs.x() - w;
+- bry = srcheight - brushoffs.y() - h;
++ brx = this->srcwidth - this->brushoffs.x() - w;
++ bry = this->srcheight - this->brushoffs.y() - h;
+ break;
+ case QTransformedScreen::Rot270:
+- brx = srcheight - brushoffs.y() - h;
+- bry = brushoffs.x();
++ brx = this->srcheight - this->brushoffs.y() - h;
++ bry = this->brushoffs.x();
+ break;
+ default:
+- brx = brushoffs.x();
+- bry = brushoffs.y();
++ brx = this->brushoffs.x();
++ bry = this->brushoffs.y();
+ break;
+ }
+- brushoffs = QPoint( brx, bry );
++ this->brushoffs = QPoint( brx, bry );
+
+- int oldsw = srcwidth;
+- int oldsh = srcheight;
+- QSize s = qt_screen->mapToDevice( QSize(srcwidth,srcheight) );
+- srcwidth = s.width();
+- srcheight = s.height();
++ int oldsw = this->srcwidth;
++ int oldsh = this->srcheight;
++ QSize s = qt_screen->mapToDevice( QSize(this->srcwidth,this->srcheight) );
++ this->srcwidth = s.width();
++ this->srcheight = s.height();
+
+ QT_TRANS_GFX_BASE<depth,type>::tiledBlt( r.x(), r.y(), r.width(), r.height() );
+
+- srcwidth = oldsw;
+- srcheight = oldsh;
+- brushoffs = oldBrushOffs;
++ this->srcwidth = oldsw;
++ this->srcheight = oldsh;
++ this->brushoffs = oldBrushOffs;
+ inDraw = FALSE;
+ }
+
+diff -ur qt-2.3.8_clean/src/kernel/qgfxvfb_qws.cpp qt-2.3.8/src/kernel/qgfxvfb_qws.cpp
+--- qt-2.3.8_clean/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:24:25.000000000 +0200
+@@ -31,7 +31,6 @@
+ **********************************************************************/
+
+ #include "qgfxraster_qws.h"
+-
+ #ifndef QT_NO_QWS_VFB
+
+ #include <sys/ipc.h>
+@@ -140,8 +139,8 @@
+ void QGfxVFb<depth,type>::drawPoint( int x, int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) );
+ QGfxRaster<depth,type>::drawPoint( x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -150,8 +149,8 @@
+ void QGfxVFb<depth,type>::drawPoints( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPoints( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -160,9 +159,9 @@
+ void QGfxVFb<depth,type>::drawLine( int x1,int y1,int x2,int y2 )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx ) {
++ if ( this->is_screen_gfx ) {
+ QRect r;
+- r.setCoords( x1+xoffs, y1+yoffs, x2+xoffs, y2+yoffs );
++ r.setCoords( x1+this->xoffs, y1+this->yoffs, x2+this->xoffs, y2+this->yoffs );
+ qvfb_screen->setDirty( r.normalize() );
+ }
+ QGfxRaster<depth,type>::drawLine( x1, y1, x2, y2 );
+@@ -173,8 +172,8 @@
+ void QGfxVFb<depth,type>::fillRect( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::fillRect( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+@@ -183,8 +182,8 @@
+ void QGfxVFb<depth,type>::drawPolyline( const QPointArray &pa,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolyline( pa, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -193,8 +192,8 @@
+ void QGfxVFb<depth,type>::drawPolygon( const QPointArray &pa,bool w,int x,int y )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( clipbounds );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( this->clipbounds );
+ QGfxRaster<depth,type>::drawPolygon( pa, w, x, y );
+ QWSDisplay::ungrab();
+ }
+@@ -203,8 +202,8 @@
+ void QGfxVFb<depth,type>::blt( int x,int y,int w,int h, int sx, int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) );
+ QGfxRaster<depth,type>::blt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -215,8 +214,8 @@
+ QWSDisplay::grab( TRUE );
+ int dy = sy - y;
+ int dx = sx - x;
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs,
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs,
+ w+abs(dx), h+abs(dy)) );
+ QGfxRaster<depth,type>::scroll( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+@@ -227,8 +226,8 @@
+ void QGfxVFb<depth,type>::stretchBlt( int x,int y,int w,int h,int sx,int sy )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::stretchBlt( x, y, w, h, sx, sy );
+ QWSDisplay::ungrab();
+ }
+@@ -238,8 +237,8 @@
+ void QGfxVFb<depth,type>::tiledBlt( int x,int y,int w,int h )
+ {
+ QWSDisplay::grab( TRUE );
+- if ( is_screen_gfx )
+- qvfb_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) );
++ if ( this->is_screen_gfx )
++ qvfb_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) );
+ QGfxRaster<depth,type>::tiledBlt( x, y, w, h );
+ QWSDisplay::ungrab();
+ }
+diff -ur qt-2.3.8_clean/src/tools/qcstring.h qt-2.3.8/src/tools/qcstring.h
+--- qt-2.3.8_clean/src/tools/qcstring.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/tools/qcstring.h 2004-06-04 02:24:25.000000000 +0200
+@@ -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 -ur qt-2.3.8_clean/src/tools/qglobal.h qt-2.3.8/src/tools/qglobal.h
+--- qt-2.3.8_clean/src/tools/qglobal.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/tools/qglobal.h 2004-06-04 02:29:41.000000000 +0200
+@@ -207,8 +207,16 @@
+ #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
+ #define Q_FP_CCAST_BROKEN
+ #endif
++/* ARM gcc pads structs to 32 bits, even when they contain a single
++ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
++ QString bloat. However, gcc 3.4 doesn't allow us to create references to
++ members of a packed struct. (Pointers are OK, because then you
++ supposedly know what you are doing.) */
+ #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
+ #define Q_PACKED __attribute__ ((packed))
++# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
++# define Q_NO_PACKED_REFERENCE
++# endif
+ #endif
+ #elif defined(__xlC__)
+ #define _CC_XLC_
+Nur in qt-2.3.8/src/tools: qglobal.h~.
+diff -ur qt-2.3.8_clean/src/tools/qsortedlist.h qt-2.3.8/src/tools/qsortedlist.h
+--- qt-2.3.8_clean/src/tools/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/tools/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200
+@@ -48,7 +48,7 @@
+ public:
+ QSortedList() {}
+ QSortedList( const QSortedList<type> &l ) : QList<type>(l) {}
+- ~QSortedList() { clear(); }
++ ~QSortedList() { this->clear(); }
+ QSortedList<type> &operator=(const QSortedList<type> &l)
+ { return (QSortedList<type>&)QList<type>::operator=(l); }
+
+diff -ur qt-2.3.8_clean/src/tools/qstring.h qt-2.3.8/src/tools/qstring.h
+--- qt-2.3.8_clean/src/tools/qstring.h 2004-06-04 02:17:53.000000000 +0200
++++ qt-2.3.8/src/tools/qstring.h 2004-06-04 02:54:16.000000000 +0200
+@@ -163,8 +163,16 @@
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+
++
++#ifdef Q_NO_PACKED_REFERENCE
++ uchar& cell() { return *(&cl); }
++ uchar& row() { return *(&rw); }
++#else
+ uchar& cell() { return cl; }
+- uchar& row() { return rw; }
++ uchar& row() { return rw; }
++#endif
++
++
+ uchar cell() const { return cl; }
+ uchar row() const { return rw; }
+
+Nur in qt-2.3.8/src/tools: qstring.h~.
diff --git a/qt/qt-2.3.8.patch/qte238-hancomwordcrash.patch b/qt/qt-2.3.8.patch/qte238-hancomwordcrash.patch
new file mode 100644
index 0000000..57c752e
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-hancomwordcrash.patch
@@ -0,0 +1,15 @@
+Not included in the ALL patch
+
+
+
+--- qt-2.3.8-old/src/kernel/qgfxraster_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qgfxraster_qws.cpp 2004-07-23 19:10:03.000000000 +0200
+@@ -4400,7 +4400,7 @@
+ setAlphaType(IgnoreAlpha);
+ if ( w <= 0 || h <= 0 || !ncliprect ) return;
+ GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
+-#ifdef QWS_EXPERIMENTAL_FASTPATH
++#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
+ // ### fix for 8bpp
+ // This seems to be reliable now, at least for 16bpp
+
diff --git a/qt/qt-2.3.8.patch/qte238-iconviewspeed.patch b/qt/qt-2.3.8.patch/qte238-iconviewspeed.patch
new file mode 100644
index 0000000..3351bbb
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-iconviewspeed.patch
@@ -0,0 +1,145 @@
+Speed up patches backported from
+
+http://robotics.dei.unipd.it/~koral/KDE/kflicker.html
+
+and
+
+http://lists.kde.org/?l=kde-optimize&m=105382164111363&w=2 (complete thread)
+
+
+
+
+
+
+
+diff -ur qt-2.3.8-old/src/iconview/qiconview.cpp qt-2.3.8/src/iconview/qiconview.cpp
+--- qt-2.3.8-old/src/iconview/qiconview.cpp 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/iconview/qiconview.cpp 2004-07-23 19:13:09.000000000 +0200
+@@ -224,6 +224,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;
+@@ -2267,6 +2268,7 @@
+ d->currentItem = 0;
+ d->highlightedItem = 0;
+ d->rubber = 0;
++ d->backBuffer = 0;
+ d->scrollTimer = 0;
+ d->startDragItem = 0;
+ d->tmpCurrentItem = 0;
+@@ -2415,6 +2417,8 @@
+ delete item;
+ item = tmp;
+ }
++ delete d->backBuffer;
++ d->backBuffer = 0;
+ delete d->fm;
+ d->fm = 0;
+ #ifndef QT_NO_TOOLTIP
+@@ -2881,6 +2885,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
+ */
+
+@@ -4937,7 +4983,7 @@
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+ }
+- viewportPaintEvent( (QPaintEvent*)e );
++ bufferedPaintEvent ((QPaintEvent*)e );
+ if ( d->dragging ) {
+ if ( !d->rubber )
+ drawDragShapes( d->oldDragPos );
+@@ -5374,11 +5420,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;
+
+diff -ur qt-2.3.8-old/src/iconview/qiconview.h qt-2.3.8/src/iconview/qiconview.h
+--- qt-2.3.8-old/src/iconview/qiconview.h 2004-07-22 01:07:46.000000000 +0200
++++ qt-2.3.8/src/iconview/qiconview.h 2004-07-23 19:13:09.000000000 +0200
+@@ -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 );
+--- qt-2.3.8-old/src/widgets/qscrollview.cpp 2004-07-22 01:07:44.000000000 +0200
++++ qt-2.3.8/src/widgets/qscrollview.cpp 2004-07-23 19:21:06.000000000 +0200
+@@ -1280,6 +1280,9 @@
+ case QEvent::LayoutHint:
+ d->autoResizeHint(this);
+ break;
++ case QEvent::WindowActivate:
++ case QEvent::WindowDeactivate:
++ return TRUE;
+ default:
+ break;
+ }
diff --git a/qt/qt-2.3.8.patch/qte238-keyboard.patch b/qt/qt-2.3.8.patch/qte238-keyboard.patch
new file mode 100644
index 0000000..0ac321f
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-keyboard.patch
@@ -0,0 +1,47 @@
+Free the Virtual Terminal and Keyboard on a segfault in all cases...
+
+
+diff -ur qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp qt-2.3.8/src/kernel/qkeyboard_qws.cpp
+--- qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qkeyboard_qws.cpp 2004-07-23 19:13:52.000000000 +0200
+@@ -314,7 +314,7 @@
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
+- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
++ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
+ { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
+Nur in qt-2.3.8/src/kernel/: qkeyboard_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp qt-2.3.8/src/kernel/qwindowsystem_qws.cpp
+--- qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qwindowsystem_qws.cpp 2004-07-23 19:13:52.000000000 +0200
+@@ -1273,6 +1273,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
+@@ -1365,6 +1377,7 @@
+ }
+
+ signal(SIGPIPE, ignoreSignal); //we get it when we read
++ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
+ #endif
+ focusw = 0;
+ mouseGrabber = 0;
+Nur in qt-2.3.8/src/kernel/: qwindowsystem_qws.cpp.orig.