summaryrefslogtreecommitdiff
authordrw <drw>2005-02-28 17:40:44 (UTC)
committer drw <drw>2005-02-28 17:40:44 (UTC)
commit772bc43173a3155ef08c769f1d01ef0ec7b31bcd (patch) (side-by-side diff)
tree678a5cdeb431bca63299c3b595c26a0a6639a3f3
parent2b64a84d39eeed5681d0ee5068c7d11a01527750 (diff)
downloadopie-772bc43173a3155ef08c769f1d01ef0ec7b31bcd.zip
opie-772bc43173a3155ef08c769f1d01ef0ec7b31bcd.tar.gz
opie-772bc43173a3155ef08c769f1d01ef0ec7b31bcd.tar.bz2
Added QT patch for QTabBar which fixes problems with the scroll buttons in OTabWidget
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qt-2.3.10.patch/qtabbar.patch39
-rw-r--r--qt/qt-2.3.10.patch/qte-2.3.10-all.patch63
2 files changed, 88 insertions, 14 deletions
diff --git a/qt/qt-2.3.10.patch/qtabbar.patch b/qt/qt-2.3.10.patch/qtabbar.patch
new file mode 100644
index 0000000..6940ec9
--- a/dev/null
+++ b/qt/qt-2.3.10.patch/qtabbar.patch
@@ -0,0 +1,39 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- qt-2.3.10/src/widgets/qtabbar.cpp~qtabbar
++++ qt-2.3.10/src/widgets/qtabbar.cpp
+@@ -260,7 +260,6 @@
+ lstatic->insert( index, newTab );
+
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ) );
+
+ #ifndef QT_NO_ACCEL
+@@ -282,7 +281,6 @@
+ l->remove( t );
+ lstatic->remove( t );
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ) );
+ update();
+ }
+@@ -887,6 +885,7 @@
+ }
+ for ( t = lstatic->first(); t; t = lstatic->next() )
+ t->r.setHeight( r.height() );
++ updateArrowButtons();
+ }
+
+ /*!
+@@ -977,7 +976,6 @@
+ d->leftB->setGeometry( width() - 2*arrowWidth, 0, arrowWidth, height() );
+ #endif
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ));
+ }
+
diff --git a/qt/qt-2.3.10.patch/qte-2.3.10-all.patch b/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
index ab52716..24bac51 100644
--- a/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
+++ b/qt/qt-2.3.10.patch/qte-2.3.10-all.patch
@@ -22,33 +22,33 @@ Index: qt-2.3.10/src/iconview/qiconview.cpp
d->rubber = 0;
+ d->backBuffer = 0;
d->scrollTimer = 0;
d->startDragItem = 0;
d->tmpCurrentItem = 0;
@@ -2416,6 +2418,8 @@
delete item;
item = tmp;
}
+ delete d->backBuffer;
+ d->backBuffer = 0;
delete d->fm;
d->fm = 0;
#ifndef QT_NO_TOOLTIP
@@ -2882,6 +2886,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();
@@ -68,156 +68,156 @@ Index: qt-2.3.10/src/iconview/qiconview.cpp
+ 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
*/
-
+
@@ -4939,7 +4985,7 @@
if ( !d->rubber )
drawDragShapes( d->oldDragPos );
}
- viewportPaintEvent( (QPaintEvent*)e );
+ bufferedPaintEvent ((QPaintEvent*)e );
if ( d->dragging ) {
if ( !d->rubber )
drawDragShapes( d->oldDragPos );
@@ -5377,11 +5423,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;
-
+
Index: qt-2.3.10/src/iconview/qiconview.h
===================================================================
--- qt-2.3.10.orig/src/iconview/qiconview.h 2005-02-24 21:09:53.060675971 +0100
+++ qt-2.3.10/src/iconview/qiconview.h 2005-02-24 21:10:04.602019959 +0100
@@ -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 );
Index: qt-2.3.10/src/kernel/qgfxraster_qws.cpp
===================================================================
--- qt-2.3.10.orig/src/kernel/qgfxraster_qws.cpp 2005-02-24 21:09:54.817425663 +0100
+++ qt-2.3.10/src/kernel/qgfxraster_qws.cpp 2005-02-24 21:10:02.521320506 +0100
@@ -4037,13 +4037,14 @@
for( loopc2=0;loopc2<frontadd;loopc2++ )
*(alphaptr++)=get_value_32(16,(unsigned char **)&temppos);
-
+
- PackType temp2;
- unsigned char * cp;
+ volatile PackType temp2;
+ volatile unsigned short int * cp;
for( loopc2=0;loopc2<count;loopc2++ ) {
- temp2=*((PackType *)temppos);
- cp=(unsigned char *)&temp2;
- *(alphaptr++)=get_value_32(16,&cp);
- *(alphaptr++)=get_value_32(16,&cp);
+ temp2=*reinterpret_cast<PackType *>(temppos);
+ cp=reinterpret_cast<volatile unsigned short int *>(&temp2);
+ *(alphaptr++)=qt_conv16ToRgb(*cp);
+ cp++;
+ *(alphaptr++)=qt_conv16ToRgb(*cp);
temppos += 2;
}
-
+
Index: qt-2.3.10/src/kernel/qwindowsystem_qws.cpp
===================================================================
--- qt-2.3.10.orig/src/kernel/qwindowsystem_qws.cpp 2005-02-24 21:09:53.891557664 +0100
+++ qt-2.3.10/src/kernel/qwindowsystem_qws.cpp 2005-02-24 21:10:03.511177634 +0100
@@ -918,6 +918,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
@@ -1043,6 +1055,7 @@
}
-
+
signal(SIGPIPE, ignoreSignal); //we get it when we read
+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
#endif
focusw = 0;
mouseGrabber = 0;
Index: qt-2.3.10/src/kernel/qwsdecoration_qws.h
===================================================================
--- qt-2.3.10.orig/src/kernel/qwsdecoration_qws.h 2005-02-24 21:09:54.355491532 +0100
+++ qt-2.3.10/src/kernel/qwsdecoration_qws.h 2005-02-24 21:10:03.040245652 +0100
@@ -50,7 +50,7 @@
enum Region { None=0, All=1, Title=2, Top=3, Bottom=4, Left=5, Right=6,
TopLeft=7, TopRight=8, BottomLeft=9, BottomRight=10,
Close=11, Minimize=12, Maximize=13, Normalize=14,
- Menu=15, LastRegion=Menu };
+ Menu=15, LastRegion=Menu, UserDefined = 100 };
-
+
virtual QRegion region(const QWidget *, const QRect &rect, Region r=All) = 0;
virtual void close( QWidget * );
Index: qt-2.3.10/src/tools/qcstring.h
===================================================================
--- qt-2.3.10.orig/src/tools/qcstring.h 2005-02-24 21:09:54.354491675 +0100
+++ qt-2.3.10/src/tools/qcstring.h 2005-02-24 21:10:03.026247674 +0100
@@ -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
Index: qt-2.3.10/src/tools/qstring.cpp
===================================================================
--- qt-2.3.10.orig/src/tools/qstring.cpp 2005-02-24 21:09:55.291358022 +0100
+++ qt-2.3.10/src/tools/qstring.cpp 2005-02-24 21:10:01.748431931 +0100
@@ -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?
@@ -244,49 +244,84 @@ Index: qt-2.3.10/src/widgets/qcommonstyle.cpp
+++ qt-2.3.10/src/widgets/qcommonstyle.cpp 2005-02-24 21:10:03.484181533 +0100
@@ -572,7 +572,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);
Index: qt-2.3.10/src/widgets/qlistview.cpp
===================================================================
--- qt-2.3.10.orig/src/widgets/qlistview.cpp 2005-02-24 21:09:53.868560939 +0100
+++ qt-2.3.10/src/widgets/qlistview.cpp 2005-02-24 21:10:03.500179222 +0100
@@ -5051,9 +5051,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 );
Index: qt-2.3.10/src/widgets/qtoolbutton.cpp
===================================================================
--- qt-2.3.10.orig/src/widgets/qtoolbutton.cpp 2005-02-24 21:09:53.868560939 +0100
+++ qt-2.3.10/src/widgets/qtoolbutton.cpp 2005-02-24 21:10:03.524175756 +0100
@@ -332,12 +332,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();
+Index: qt-2.3.10/src/widgets/qtabbar.cpp
+===================================================================
+--- qt-2.3.10.orig/src/widgets/qtabbar.cpp 2005-02-27 18:07:41.000000000 -0600
++++ qt-2.3.10/src/widgets/qtabbar.cpp 2005-02-28 11:16:56.444377440 -0600
+@@ -260,7 +260,6 @@
+ lstatic->insert( index, newTab );
+
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ) );
+
+ #ifndef QT_NO_ACCEL
+@@ -282,7 +281,6 @@
+ l->remove( t );
+ lstatic->remove( t );
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ) );
+ update();
+ }
+@@ -887,6 +885,7 @@
+ }
+ for ( t = lstatic->first(); t; t = lstatic->next() )
+ t->r.setHeight( r.height() );
++ updateArrowButtons();
+ }
+
+ /*!
+@@ -977,7 +976,6 @@
+ d->leftB->setGeometry( width() - 2*arrowWidth, 0, arrowWidth, height() );
+ #endif
+ layoutTabs();
+- updateArrowButtons();
+ makeVisible( tab( currentTab() ));
+ }