diff -ur qt-2.3.7_clean/configs/linux-generic-g++-shared qt-2.3.7/configs/linux-generic-g++-shared --- qt-2.3.7_clean/configs/linux-generic-g++-shared 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic-g++-shared 2004-06-04 02:22:25.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_clean/configs/linux-generic-g++-shared-debug qt-2.3.7/configs/linux-generic-g++-shared-debug --- qt-2.3.7_clean/configs/linux-generic-g++-shared-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic-g++-shared-debug 2004-06-04 02:22:25.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_clean/configs/linux-generic-g++-static qt-2.3.7/configs/linux-generic-g++-static --- qt-2.3.7_clean/configs/linux-generic-g++-static 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic-g++-static 2004-06-04 02:22:25.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_clean/configs/linux-generic-g++-static-debug qt-2.3.7/configs/linux-generic-g++-static-debug --- qt-2.3.7_clean/configs/linux-generic-g++-static-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic-g++-static-debug 2004-06-04 02:22:25.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_clean/configs/linux-generic_rtti-g++-shared qt-2.3.7/configs/linux-generic_rtti-g++-shared --- qt-2.3.7_clean/configs/linux-generic_rtti-g++-shared 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-shared 2004-06-04 02:22:25.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_clean/configs/linux-generic_rtti-g++-shared-debug qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug --- qt-2.3.7_clean/configs/linux-generic_rtti-g++-shared-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-shared-debug 2004-06-04 02:22:25.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_clean/configs/linux-generic_rtti-g++-static qt-2.3.7/configs/linux-generic_rtti-g++-static --- qt-2.3.7_clean/configs/linux-generic_rtti-g++-static 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-static 2004-06-04 02:22:25.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_clean/configs/linux-generic_rtti-g++-static-debug qt-2.3.7/configs/linux-generic_rtti-g++-static-debug --- qt-2.3.7_clean/configs/linux-generic_rtti-g++-static-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-generic_rtti-g++-static-debug 2004-06-04 02:22:25.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_clean/configs/linux-x86rtti-g++-shared qt-2.3.7/configs/linux-x86rtti-g++-shared --- qt-2.3.7_clean/configs/linux-x86rtti-g++-shared 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-shared 2004-06-04 02:22:25.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_clean/configs/linux-x86rtti-g++-shared-debug qt-2.3.7/configs/linux-x86rtti-g++-shared-debug --- qt-2.3.7_clean/configs/linux-x86rtti-g++-shared-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-shared-debug 2004-06-04 02:22:25.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_clean/configs/linux-x86rtti-g++-static qt-2.3.7/configs/linux-x86rtti-g++-static --- qt-2.3.7_clean/configs/linux-x86rtti-g++-static 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-static 2004-06-04 02:22:25.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_clean/configs/linux-x86rtti-g++-static-debug qt-2.3.7/configs/linux-x86rtti-g++-static-debug --- qt-2.3.7_clean/configs/linux-x86rtti-g++-static-debug 2004-06-04 02:17:54.000000000 +0200 +++ qt-2.3.7/configs/linux-x86rtti-g++-static-debug 2004-06-04 02:22:25.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_clean/include/qapplication.h qt-2.3.7/include/qapplication.h --- qt-2.3.7_clean/include/qapplication.h 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/include/qapplication.h 2004-06-04 02:22:25.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_clean/include/qfontdatabase.h qt-2.3.7/include/qfontdatabase.h --- qt-2.3.7_clean/include/qfontdatabase.h 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/include/qfontdatabase.h 2004-06-04 02:22:25.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_clean/src/kernel/qapplication.cpp qt-2.3.7/src/kernel/qapplication.cpp --- qt-2.3.7_clean/src/kernel/qapplication.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qapplication.cpp 2004-06-04 02:22:25.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_clean/src/kernel/qapplication.h qt-2.3.7/src/kernel/qapplication.h --- qt-2.3.7_clean/src/kernel/qapplication.h 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qapplication.h 2004-06-04 02:22:25.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_clean/src/kernel/qapplication_qws.cpp qt-2.3.7/src/kernel/qapplication_qws.cpp --- qt-2.3.7_clean/src/kernel/qapplication_qws.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qapplication_qws.cpp 2004-06-04 02:22:25.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_clean/src/kernel/qfontdatabase.cpp qt-2.3.7/src/kernel/qfontdatabase.cpp --- qt-2.3.7_clean/src/kernel/qfontdatabase.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qfontdatabase.cpp 2004-06-04 02:22:25.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_clean/src/kernel/qfontdatabase.h qt-2.3.7/src/kernel/qfontdatabase.h --- qt-2.3.7_clean/src/kernel/qfontdatabase.h 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qfontdatabase.h 2004-06-04 02:22:25.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_clean/src/kernel/qgfxraster_qws.cpp qt-2.3.7/src/kernel/qgfxraster_qws.cpp --- qt-2.3.7_clean/src/kernel/qgfxraster_qws.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qgfxraster_qws.cpp 2004-06-04 02:22:25.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 #--- qt-2.3.7_clean/src/kernel/qkeyboard_qws.cpp 2004-06-04 02:17:53.000000000 +0200 #+++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-06-04 02:22:25.000000000 +0200 #@@ -249,7 +249,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_clean/src/kernel/qwindowsystem_qws.cpp qt-2.3.7/src/kernel/qwindowsystem_qws.cpp --- qt-2.3.7_clean/src/kernel/qwindowsystem_qws.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-06-04 02:22:25.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_clean/src/widgets/qcommonstyle.cpp qt-2.3.7/src/widgets/qcommonstyle.cpp --- qt-2.3.7_clean/src/widgets/qcommonstyle.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/widgets/qcommonstyle.cpp 2004-06-04 02:22:25.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_clean/src/widgets/qlistview.cpp qt-2.3.7/src/widgets/qlistview.cpp --- qt-2.3.7_clean/src/widgets/qlistview.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/widgets/qlistview.cpp 2004-06-04 02:22:25.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_clean/src/widgets/qtoolbutton.cpp qt-2.3.7/src/widgets/qtoolbutton.cpp --- qt-2.3.7_clean/src/widgets/qtoolbutton.cpp 2004-06-04 02:17:53.000000000 +0200 +++ qt-2.3.7/src/widgets/qtoolbutton.cpp 2004-06-04 02:22:25.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();