summaryrefslogtreecommitdiff
path: root/qt/qt-2.3.7.patch
Side-by-side diff
Diffstat (limited to 'qt/qt-2.3.7.patch') (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qt-2.3.7.patch/qte237-all.patch7
-rw-r--r--qt/qt-2.3.7.patch/qte237-iconviewspeed.patch7
2 files changed, 0 insertions, 14 deletions
diff --git a/qt/qt-2.3.7.patch/qte237-all.patch b/qt/qt-2.3.7.patch/qte237-all.patch
index e3351a3..6f94211 100644
--- a/qt/qt-2.3.7.patch/qte237-all.patch
+++ b/qt/qt-2.3.7.patch/qte237-all.patch
@@ -1,853 +1,846 @@
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 ) {
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 -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();
diff --git a/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch
index 63e45ec..81064e1 100644
--- a/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch
+++ b/qt/qt-2.3.7.patch/qte237-iconviewspeed.patch
@@ -1,149 +1,142 @@
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;
}