author | zecke <zecke> | 2004-07-23 18:18:15 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-07-23 18:18:15 (UTC) |
commit | f9499e14b777050f0bdb3821ca8421dd4c7231fd (patch) (side-by-side diff) | |
tree | 7d96a449aa3b211bd7c5bc9f4d5a7908005cd287 /qt | |
parent | 984ab6b8bccf667a89062d959defed4a5d86bfb1 (diff) | |
download | opie-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
-rw-r--r-- | qt/README.qt-patches | 6 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-adjustsizes.patch | 64 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-all.patch | 1261 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-allowoverride.patch | 229 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-g++-aslinker.patch | 161 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-gcc34.patch | 21 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-hancomwordcrash.patch | 14 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-iconviewspeed.patch | 149 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-keyboard.patch | 43 | ||||
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-lefthand.patch | 7 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-adjustsizes.patch | 64 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-all.patch | 801 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-allowoverride.patch | 231 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-gcc34.patch | 440 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-hancomwordcrash.patch | 15 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-iconviewspeed.patch | 145 | ||||
-rw-r--r-- | qt/qt-2.3.8.patch/qte238-keyboard.patch | 47 |
17 files changed, 3459 insertions, 239 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,193 +1,172 @@ 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; 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 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- 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 +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 + */ + +@@ -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; + +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. |