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 pointSizes( const QString &family, const QString &style = QString::null, - const QString &charSet = QString::null ); + const QString &charSet = QString::null ) QT_WEAK_SYMBOL; +private: + QValueList 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 &l ) : QList(l) {} - ~QSortedList() { clear(); } + ~QSortedList() { this->clear(); } QSortedList &operator=(const QSortedList &l) { return (QSortedList&)QList::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 @@ -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 ) { 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 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 pointSizes( const QString &family, const QString &style = QString::null, - const QString &charSet = QString::null ); + const QString &charSet = QString::null ) QT_WEAK_SYMBOL; +private: + QValueList 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/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 void QGfxTransformedRaster::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 @@ -739,8 +739,8 @@ { QT_TRANS_GFX_BASE::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 @@ -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::drawPolygon( a, w, idx, num ); } else { @@ -819,29 +819,29 @@ template void QGfxTransformedRaster::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::processSpans( n, point, width ); + QT_TRANS_GFX_BASE::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::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 @@ -140,8 +139,8 @@ void QGfxVFb::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::drawPoint( x, y ); QWSDisplay::ungrab(); } @@ -150,8 +149,8 @@ void QGfxVFb::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::drawPoints( pa, x, y ); QWSDisplay::ungrab(); } @@ -160,9 +159,9 @@ void QGfxVFb::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::drawLine( x1, y1, x2, y2 ); @@ -173,8 +172,8 @@ void QGfxVFb::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::fillRect( x, y, w, h ); QWSDisplay::ungrab(); } @@ -183,8 +182,8 @@ void QGfxVFb::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::drawPolyline( pa, x, y ); QWSDisplay::ungrab(); } @@ -193,8 +192,8 @@ void QGfxVFb::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::drawPolygon( pa, w, x, y ); QWSDisplay::ungrab(); } @@ -203,8 +202,8 @@ void QGfxVFb::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::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::scroll( x, y, w, h, sx, sy ); QWSDisplay::ungrab(); @@ -227,8 +226,8 @@ void QGfxVFb::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::stretchBlt( x, y, w, h, sx, sy ); QWSDisplay::ungrab(); } @@ -238,8 +237,8 @@ void QGfxVFb::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::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; 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 &l ) : QList(l) {} - ~QSortedList() { clear(); } + ~QSortedList() { this->clear(); } QSortedList &operator=(const QSortedList &l) { return (QSortedList&)QList::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); 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/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(); diff -ur qt-2.3.7_old/src/kernel/qgfxvnc_qws.cpp qt-2.3.7/src/kernel/qgfxvnc_qws.cpp --- qt-2.3.7_old/src/kernel/qgfxvnc_qws.cpp 2004-09-10 21:08:04.000000000 +0200 +++ qt-2.3.7/src/kernel/qgfxvnc_qws.cpp 2004-09-10 21:10:54.000000000 +0200 @@ -971,7 +971,7 @@ void QGfxVNC::drawPoint( int x, int y ) { QWSDisplay::grab( TRUE ); - qvnc_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) & clipbounds ); + qvnc_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) & this->clipbounds ); QGfxRaster::drawPoint( x, y ); QWSDisplay::ungrab(); } @@ -981,8 +981,8 @@ { QWSDisplay::grab( TRUE ); QRect r = pa.boundingRect(); - r.moveBy( xoffs, yoffs ); - qvnc_screen->setDirty( r & clipbounds ); + r.moveBy( this->xoffs, this->yoffs ); + qvnc_screen->setDirty( r & this->clipbounds ); QGfxRaster::drawPoints( pa, x, y ); QWSDisplay::ungrab(); } @@ -992,9 +992,9 @@ { QWSDisplay::grab( TRUE ); 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 ); r = r.normalize(); - qvnc_screen->setDirty( r & clipbounds ); + qvnc_screen->setDirty( r & this->clipbounds ); QGfxRaster::drawLine( x1, y1, x2, y2 ); QWSDisplay::ungrab(); } @@ -1003,7 +1003,7 @@ void QGfxVNC::fillRect( int x,int y,int w,int h ) { QWSDisplay::grab( TRUE ); - qvnc_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) & clipbounds ); + qvnc_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) & this->clipbounds ); QGfxRaster::fillRect( x, y, w, h ); QWSDisplay::ungrab(); } @@ -1013,8 +1013,8 @@ { QWSDisplay::grab( TRUE ); QRect r = pa.boundingRect(); - r.moveBy( xoffs, yoffs ); - qvnc_screen->setDirty( r & clipbounds ); + r.moveBy( this->xoffs, this->yoffs ); + qvnc_screen->setDirty( r & this->clipbounds ); QGfxRaster::drawPolyline( pa, x, y ); QWSDisplay::ungrab(); } @@ -1024,8 +1024,8 @@ { QWSDisplay::grab( TRUE ); QRect r = pa.boundingRect(); - r.moveBy( xoffs, yoffs ); - qvnc_screen->setDirty( r & clipbounds ); + r.moveBy( this->xoffs, this->yoffs ); + qvnc_screen->setDirty( r & this->clipbounds ); QGfxRaster::drawPolygon( pa, w, x, y ); QWSDisplay::ungrab(); } @@ -1034,7 +1034,7 @@ void QGfxVNC::blt( int x,int y,int w,int h, int sx, int sy ) { QWSDisplay::grab( TRUE ); - qvnc_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) & clipbounds ); + qvnc_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) & this->clipbounds ); QGfxRaster::blt( x, y, w, h, sx, sy ); QWSDisplay::ungrab(); } @@ -1045,8 +1045,8 @@ QWSDisplay::grab( TRUE ); int dy = sy - y; int dx = sx - x; - qvnc_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs, - w+abs(dx), h+abs(dy)) & clipbounds ); + qvnc_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs, + w+abs(dx), h+abs(dy)) & this->clipbounds ); QGfxRaster::scroll( x, y, w, h, sx, sy ); QWSDisplay::ungrab(); } @@ -1056,7 +1056,7 @@ void QGfxVNC::stretchBlt( int x,int y,int w,int h,int sx,int sy ) { QWSDisplay::grab( TRUE ); - qvnc_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) & clipbounds ); + qvnc_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) & this->clipbounds ); QGfxRaster::stretchBlt( x, y, w, h, sx, sy ); QWSDisplay::ungrab(); } @@ -1066,7 +1066,7 @@ void QGfxVNC::tiledBlt( int x,int y,int w,int h ) { QWSDisplay::grab( TRUE ); - qvnc_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) & clipbounds ); + qvnc_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) & this->clipbounds ); QGfxRaster::tiledBlt( x, y, w, h ); QWSDisplay::ungrab(); }