diff --git a/qt-4.6.3-bn-rendering-bz562049.patch b/qt-4.6.3-bn-rendering-bz562049.patch new file mode 100644 index 0000000..0e562e4 --- /dev/null +++ b/qt-4.6.3-bn-rendering-bz562049.patch @@ -0,0 +1,15 @@ +diff -rup qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp +--- qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-02 07:33:13.000000000 +0530 ++++ qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-04 13:27:33.000000000 +0530 +@@ -1741,6 +1741,11 @@ static int indic_nextSyllableBoundary(HB + if (state == Halant && uc[pos] == 0x200d /* ZWJ */) + break; + // the control character should be the last char in the item ++ if (state == Consonant && script == HB_Script_Bengali && uc[pos-1] == 0x09B0 && uc[pos] == 0x200d /* ZWJ */) ++ break; ++ if (state == Consonant && script == HB_Script_Kannada && uc[pos-1] == 0x0CB0 && uc[pos] == 0x200d /* ZWJ */) ++ break; ++ // Bengali and Kannada has a special exception for rendering yaphala with ra (to avoid reph) see http://www.unicode.org/faq/indic.html#15 + ++pos; + goto finish; + case Consonant: diff --git a/qt-4.6.3-bn-rendering-bz562058.patch b/qt-4.6.3-bn-rendering-bz562058.patch new file mode 100644 index 0000000..ee76927 --- /dev/null +++ b/qt-4.6.3-bn-rendering-bz562058.patch @@ -0,0 +1,12 @@ +diff -rup qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp +--- qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-30 07:23:12.000000000 +0530 ++++ qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-22 14:33:33.000000000 +0530 +@@ -37,7 +37,7 @@ static HB_Bool isLetter(HB_UChar16 ucs) + FLAG(HB_Letter_Titlecase) | + FLAG(HB_Letter_Modifier) | + FLAG(HB_Letter_Other); +- return FLAG(HB_GetUnicodeCharCategory(ucs)) & test; ++ return (FLAG(HB_GetUnicodeCharCategory(ucs)) & test) != 0; + } + + static HB_Bool isMark(HB_UChar16 ucs) diff --git a/qt-4.6.3-indic-rendering-bz631732.patch b/qt-4.6.3-indic-rendering-bz631732.patch new file mode 100644 index 0000000..507f876 --- /dev/null +++ b/qt-4.6.3-indic-rendering-bz631732.patch @@ -0,0 +1,14 @@ +diff -rup qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp +--- qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-02 07:33:13.000000000 +0530 ++++ qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-10 18:37:23.000000000 +0530 +@@ -1779,10 +1779,6 @@ static int indic_nextSyllableBoundary(HB + case Matra: + if (state == Consonant || state == Nukta) + break; +- if (state == Matra) { +- // ### needs proper testing for correct two/three part matras +- break; +- } + // ### not sure if this is correct. If it is, does it apply only to Bengali or should + // it work for all Indic languages? + // the combination Independent_A + Vowel Sign AA is allowed. diff --git a/qt-4.6.3-indic-rendering-bz636399.patch b/qt-4.6.3-indic-rendering-bz636399.patch new file mode 100644 index 0000000..bf49f30 --- /dev/null +++ b/qt-4.6.3-indic-rendering-bz636399.patch @@ -0,0 +1,30 @@ +diff -rup qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp +--- qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-30 07:23:12.000000000 +0530 ++++ qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-20 11:40:58.000000000 +0530 +@@ -660,18 +660,18 @@ static const unsigned char indicPosition + None, None, None, None, + + None, None, None, None, +- None, None, None, None, +- None, None, None, None, +- None, None, None, None, ++ None, Below, Below, Below, ++ Below, Below, Below, Below, ++ Below, Below, None, Below, + +- None, None, None, None, +- Below, None, None, None, +- Below, None, None, None, ++ Below, Below, Below, Below, ++ Below, Below, Below, Below, ++ Below, None, Below, Below, + Below, Below, Below, Post, + + Below, None, Below, Below, +- None, None, None, None, +- None, None, None, None, ++ None, Below, Below, Below, ++ Below, Below, None, None, + None, None, Post, Above, + + Post, Below, Below, Below, diff --git a/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch b/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch index f0c9eaa..d4e5924 100644 --- a/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch +++ b/qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck.patch @@ -1,7 +1,7 @@ -diff -up qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp.glib_eventloop_nullcheck qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp ---- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp.glib_eventloop_nullcheck 2010-06-01 21:03:15.000000000 -0500 -+++ qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-29 14:58:12.299073784 -0500 -@@ -76,7 +76,7 @@ static gboolean x11EventSourcePrepare(GS +diff -ur qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp +--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-02 04:03:15.000000000 +0200 ++++ qt-everywhere-opensource-src-4.6.3-glib_eventloop_nullcheck/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-12-08 22:22:38.000000000 +0100 +@@ -76,7 +76,7 @@ GX11EventSource *source = reinterpret_cast(s); return (XEventsQueued(X11->display, QueuedAfterFlush) || (!(source->flags & QEventLoop::ExcludeUserInputEvents) @@ -10,7 +10,7 @@ diff -up qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_g } static gboolean x11EventSourceCheck(GSource *s) -@@ -84,7 +84,7 @@ static gboolean x11EventSourceCheck(GSou +@@ -84,7 +84,7 @@ GX11EventSource *source = reinterpret_cast(s); return (XEventsQueued(X11->display, QueuedAfterFlush) || (!(source->flags & QEventLoop::ExcludeUserInputEvents) @@ -19,3 +19,51 @@ diff -up qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_g } static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data) +@@ -95,7 +95,7 @@ + do { + XEvent event; + if (!(source->flags & QEventLoop::ExcludeUserInputEvents) +- && !source->d->queuedUserInputEvents.isEmpty()) { ++ && source->d && !source->d->queuedUserInputEvents.isEmpty()) { + // process a pending user input event + event = source->d->queuedUserInputEvents.takeFirst(); + } else if (XEventsQueued(X11->display, QueuedAlready)) { +@@ -112,7 +112,8 @@ + case XKeyRelease: + case EnterNotify: + case LeaveNotify: +- source->d->queuedUserInputEvents.append(event); ++ if (source->d) ++ source->d->queuedUserInputEvents.append(event); + continue; + + case ClientMessage: +@@ -127,7 +128,8 @@ + break; + } + } +- source->d->queuedUserInputEvents.append(event); ++ if (source->d) ++ source->d->queuedUserInputEvents.append(event); + continue; + + default: +@@ -140,7 +142,7 @@ + } + + // send through event filter +- if (source->q->filterEvent(&event)) ++ if (source->q && source->q->filterEvent(&event)) + continue; + + if (qApp->x11ProcessEvent(&event) == 1) +@@ -152,7 +154,8 @@ + + out: + +- source->d->runTimersOnceWithNormalPriority(); ++ if (source->d) ++ source->d->runTimersOnceWithNormalPriority(); + + if (callback) + callback(user_data); diff --git a/qt-everywhere-opensource-src-4.7.0-bpp24.patch b/qt-everywhere-opensource-src-4.7.0-bpp24.patch new file mode 100644 index 0000000..910e15f --- /dev/null +++ b/qt-everywhere-opensource-src-4.7.0-bpp24.patch @@ -0,0 +1,15 @@ +diff -up qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp.me qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp +--- qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp.me 2010-10-15 22:04:09.000000000 +0200 ++++ qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp 2010-10-15 22:04:18.000000000 +0200 +@@ -900,9 +900,9 @@ void QX11PixmapData::fromImage(const QIm + case BPP24_888: // 24 bit MSB + CYCLE( + for (int x=0; xindexRowSizeHint(index); diff --git a/qt.spec b/qt.spec index 09e3ce2..27be08c 100644 --- a/qt.spec +++ b/qt.spec @@ -13,7 +13,7 @@ Summary: Qt toolkit Name: qt Epoch: 1 Version: 4.6.3 -Release: 9%{?dist} +Release: 10%{?dist} # See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details License: LGPLv2 with exceptions or GPLv3 with exceptions @@ -68,6 +68,15 @@ Patch56: qt-everywhere-opensource-src-4.6.2-webkit-s390x.patch Patch57: qt-everywhere-opensource-src-4.6.2-webkit-sparc64.patch # qtwebkit to search nspluginwrapper paths too Patch58: qt-everywhere-opensource-src-4.7.0-beta1-qtwebkit_pluginpath.patch +# indic incorrect rendering +Patch59: qt-4.6.3-bn-rendering-bz562049.patch +Patch60: qt-4.6.3-bn-rendering-bz562058.patch +Patch61: qt-4.6.3-indic-rendering-bz631732.patch +Patch62: qt-4.6.3-indic-rendering-bz636399.patch +# fix 24bit color issue +Patch63: qt-everywhere-opensource-src-4.7.0-bpp24.patch +# fix QTreeView crash triggered by KPackageKit (patch by David Faure) +Patch65: qt-everywhere-opensource-src-4.7.1-qtreeview-kpackagekit-crash.patch # upstream or security patches # https://bugs.webkit.org/show_bug.cgi?id=40567 @@ -450,6 +459,12 @@ Qt libraries used for drawing widgets and OpenGL items. %patch56 -p1 -b .typecast_s390x %patch57 -p1 -b .typecast_sparc64 %patch58 -p1 -b .qtwebkit_pluginpath +%patch59 -p1 -b .bn-rendering-bz562049 +%patch60 -p1 -b .bn-rendering-bz562058 +%patch61 -p1 -b .indic-rendering-bz631732 +%patch62 -p1 -b .indic-rendering-bz636399 +%patch63 -p1 -b .bpp24 +%patch65 -p1 -b .qtreeview-kpackagekit-crash # upstream patches %patch100 -p1 -b .qtwebkit_gtk_init @@ -1088,6 +1103,15 @@ fi %changelog +* Wed Feb 23 2011 Rex Dieter 4.6.3-10 +- patch to fix the color issue in 24bit mode (cirrus driver) +- add some more NULL checks to the glib_eventloop_nullcheck patch (#622164) +- fix QTreeView crash triggered by KPackageKit (patch by David Faure) +- bn-IN Incorrect rendering (#562049) +- bn_IN init feature is not applied properly (#562058) +- indic invalid syllable's are not recognized properly (631732) +- oriya script open type features are not applied properly (#636399) + * Thu Sep 30 2010 Rex Dieter - 4.6.3-9 - Wrong Cursor when widget become native on X11 (QTBUG-6185)