diff options
Diffstat (limited to 'qte')
-rw-r--r-- | qte/qte-2.3.7/kernel-keymap.patch | 265 | ||||
-rw-r--r-- | qte/qte-2.3.7/opie.patch | 562 |
2 files changed, 827 insertions, 0 deletions
diff --git a/qte/qte-2.3.7/kernel-keymap.patch b/qte/qte-2.3.7/kernel-keymap.patch index e69de29bb2..7f1db803ee 100644 --- a/qte/qte-2.3.7/kernel-keymap.patch +++ b/qte/qte-2.3.7/kernel-keymap.patch @@ -0,0 +1,265 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- qt-2.3.7/src/kernel/qkeyboard_qws.cpp~kernel-keymap.patch ++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp +@@ -30,6 +30,34 @@ + ** + **********************************************************************/ + ++/**************************************************************************** ++** ++** Keyboard Handling Redesign ++** Copyright 2003, Chris Larson <kergoth@handhelds.org> ++** ++** TODO: (key: . = in progress, x = completed) ++** ++** [.] Tty driver should load its initial keymap from the kernel, ++** thereby ensuring keymap consistency between X, console, and qt/e ++** [x] Read kernel keymappings. ++** [x] Read kernel keycode -> unicode map. ++** [x] Use them, along with the existing keyM, to push events up. ++** [ ] Create a new table, from transformed keycode -> qt keycode, rather ++** than the existing raw keycode -> qt keycode. ++** [ ] Adapt handleKey to deal with keys that have no unicode value, such as ++** keypresses that are mapped to strings in the string table. (e.g. F keys) ++** [ ] Cursor orientation change based on display rotation should not ++** be bound to Ipaq or 5xxx, but instead as a runtime choice based ++** on whether or not we're using a Transformed display driver. ++** [ ] Double check that VT handling, particularly with regard to switching, ++** is handled properly. ++** [ ] Add a generic means of dealing with additional (outside the realm of ++** ctrl, alt, shift, altgr) modifiers. Also ensure a means of binding ++** a keypress/combination to a 'lock' of said additional modifiers. ++** ++**********************************************************************/ ++ ++ + #include "qwindowsystem_qws.h" + #include "qwsutils_qws.h" + #include "qgfx_qws.h" +@@ -46,6 +74,7 @@ + #include <unistd.h> + #ifdef _OS_LINUX_ + #include <linux/kd.h> ++#include <linux/keyboard.h> + #endif + #include <sys/ioctl.h> + #include <sys/types.h> +@@ -53,6 +82,7 @@ + #include <fcntl.h> + #include <errno.h> + #include <signal.h> ++#include <termios.h> + + #ifndef QT_NO_QWS_KEYBOARD + +@@ -74,11 +104,6 @@ + #include <sys/vt.h> + #endif + +-#ifdef QT_QWS_SL5XXX +-#include <asm/sharp_char.h> +-#endif +- +-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) + static int dir_keyrot = -1; + + static int xform_dirkey(int key) +@@ -102,7 +127,6 @@ + int xf = qt_screen->transformOrientation() + dir_keyrot; + return (key-Qt::Key_Left+xf)%4+Qt::Key_Left; + } +-#endif + + #define VTSWITCHSIG SIGUSR2 + +@@ -480,12 +504,18 @@ + public: + QWSTtyKeyboardHandler(const QString&); + virtual ~QWSTtyKeyboardHandler(); ++ void readKeyboardMap(); ++ void readUnicodeMap(); ++ void handleKey(unsigned char code); + + private slots: + void readKeyboardData(); + + private: + struct termios origTermData; ++ unsigned short acm[E_TABSZ]; ++ unsigned char kernel_map[(1<<KG_CAPSSHIFT)][NR_KEYS]; ++ int current_map; + }; + + class QWSUsbKeyboardHandler : public QWSPC101KeyboardHandler +@@ -625,6 +655,7 @@ + fn = FALSE; + + numLock = FALSE; ++#if 0 + sharp_kbdctl_modifstat st; + int dev = ::open("/dev/sharp_kbdctl", O_RDWR); + if( dev >= 0 ) { +@@ -636,6 +667,7 @@ + ::close(dev); + } + #endif ++#endif + #if defined(QT_QWS_IPAQ) + // iPAQ Action Key has ScanCode 0x60: 0x60|0x80 = 0xe0 == extended mode 1 ! + ipaq_return_pressed = FALSE; +@@ -1015,7 +1047,7 @@ + // Tty keyboard + // + +-QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString& device) ++QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString& device) : current_map(0) + { + kbdFD=open(device.isEmpty() ? "/dev/tty0" : device.latin1(), O_RDWR | O_NDELAY, 0); + +@@ -1032,7 +1064,7 @@ + tcgetattr( kbdFD, &termdata ); + + #if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_) +- ioctl(kbdFD, KDSKBMODE, K_RAW); ++ ioctl(kbdFD, KDSKBMODE, K_MEDIUMRAW); + #endif + + termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP); +@@ -1045,6 +1077,9 @@ + cfsetospeed(&termdata, 9600); + tcsetattr(kbdFD, TCSANOW, &termdata); + ++ readUnicodeMap(); ++ readKeyboardMap(); ++ + signal(VTSWITCHSIG, vtSwitchHandler); + + #if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_) +@@ -1100,9 +1135,122 @@ + unsigned char buf[81]; + int n = read(kbdFD, buf, 80 ); + for ( int loop = 0; loop < n; loop++ ) +- doKey(buf[loop]); ++ handleKey(buf[loop]); ++} ++ ++void QWSTtyKeyboardHandler::readUnicodeMap() ++{ ++ if (kbdFD < 0) ++ return; ++ if (ioctl(kbdFD,GIO_UNISCRNMAP,acm) != 0) ++ return; ++} ++ ++void QWSTtyKeyboardHandler::readKeyboardMap() ++{ ++ struct kbentry kbe; ++ if (kbdFD < 0) ++ return; ++ ++ for (int map = 0; map < (1<<KG_CAPSSHIFT); ++map) ++ { ++ unsigned short kval; ++ kbe.kb_table = map; ++ ++ for (int key = 0; key < NR_KEYS; ++key) ++ { ++ kbe.kb_index = key; ++ ++ if (ioctl(kbdFD, KDGKBENT, &kbe) != 0) continue; ++ ++ if ((kbe.kb_value == K_HOLE) || (kbe.kb_value == K_NOSUCHMAP)) continue; ++ ++ kval = KVAL(kbe.kb_value); ++ switch (KTYP(kbe.kb_value)) ++ { ++ case KT_LETTER: ++ case KT_LATIN: ++ case KT_ASCII: ++ case KT_PAD: ++ case KT_SHIFT: ++ kernel_map[map][key] = kbe.kb_value; ++ //qWarning("keycode %d, map %d, type %d, val %d, acm %c\n", key, map, KTYP(kbe.kb_value), kval, acm[kval]); ++ break; ++ } ++ } ++ } ++} ++ ++static inline int map_to_modif(int current_map) ++{ ++ int modifiers = 0; ++ ++ if (current_map & KG_ALT) ++ modifiers |= Qt::ALT; ++ else if (current_map & KG_CTRL) ++ modifiers |= Qt::CTRL; ++ else if (current_map & KG_SHIFT) ++ modifiers |= Qt::SHIFT; ++ ++ return modifiers; + } + ++void QWSTtyKeyboardHandler::handleKey(unsigned char code) ++{ ++ struct kbentry kbe; ++ ++ bool release = false; ++ if (code & 0x80) ++ { ++ release = true; ++ code &= 0x7f; ++ } ++ ++ unsigned short mCode = KVAL(kernel_map[current_map][code]); ++ unsigned short unicode = acm[mCode]; ++ ++ const QWSServer::KeyMap *currentKey = 0; ++ int qtKeyCode = Qt::Key_unknown; ++ ++ currentKey = &QWSServer::keyMap()[code]; ++ if ( currentKey ) qtKeyCode = currentKey->key_code; ++ ++ qDebug("code %d, mCode %d, uni %c, qtKeyCode %d\n", code, mCode, unicode, qtKeyCode); ++ ++ // Handle map changes based on press/release of modifiers ++ // hardcoded for now ++ int modif = -1; ++ switch (qtKeyCode) ++ { ++ case Qt::Key_Alt: ++ case Qt::Key_F22: ++ modif = (1<<KG_ALT); ++ break; ++ case Qt::Key_Control: ++ modif = (1<<KG_CTRL); ++ break; ++ case Qt::Key_Shift: ++ modif = (1<<KG_SHIFT); ++ break; ++ case Qt::Key_Left: ++ case Qt::Key_Right: ++ case Qt::Key_Up: ++ case Qt::Key_Down: ++ if (qt_screen->isTransformed()) ++ qtKeyCode = xform_dirkey(qtKeyCode); ++ break; ++ } ++ ++ if (modif != -1) { ++ if (release) ++ current_map &= ~modif; ++ else ++ current_map |= modif; ++ } ++ ++ unsigned int uni = unicode; ++ processKeyEvent(uni & 0xff, qtKeyCode, map_to_modif(current_map), !release, 0); ++} + + /* USB driver */ + diff --git a/qte/qte-2.3.7/opie.patch b/qte/qte-2.3.7/opie.patch index e69de29bb2..f3272bee52 100644 --- a/qte/qte-2.3.7/opie.patch +++ b/qte/qte-2.3.7/opie.patch @@ -0,0 +1,562 @@ +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<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_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<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_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<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_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 + +diff -ur qt-2.3.7_clean/src/kernel/qkeyboard_qws.cpp qt-2.3.7/src/kernel/qkeyboard_qws.cpp +--- 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 +@@ -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_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(); |