Gentoo Archives: gentoo-commits

From: "Ben de Groot (yngwin)" <yngwin@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in x11-libs/qt-gui/files: 0263-fix-fontconfig-handling.diff 0262-fix-treeview-animation-crash.diff 0265-fix-formlayoutcrash.diff 0248-fix-qwidget-scroll-slowness.diff 0256-fix-recursive-backingstore-sync-crash.diff
Date: Fri, 30 Jan 2009 22:15:35
Message-Id: E1LT1e8-00047q-RL@stork.gentoo.org
1 yngwin 09/01/30 22:15:32
2
3 Added: 0263-fix-fontconfig-handling.diff
4 0262-fix-treeview-animation-crash.diff
5 0265-fix-formlayoutcrash.diff
6 0248-fix-qwidget-scroll-slowness.diff
7 0256-fix-recursive-backingstore-sync-crash.diff
8 Log:
9 Add bugfix patches from qt-copy
10 (Portage version: 2.2_rc23/cvs/Linux i686)
11
12 Revision Changes Path
13 1.1 x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff
14
15 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff?rev=1.1&view=markup
16 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff?rev=1.1&content-type=text/plain
17
18 Index: 0263-fix-fontconfig-handling.diff
19 ===================================================================
20 Trolltech task ID : none
21 bugs.kde.org number : none
22 applied: no
23 author: from Trolltech (fixed in Qt 4.5)
24
25 Legacy font-name mappings are also applied when fontconfig is used,
26 which breaks fontconfig configuration in subtle ways (sans serif
27 is mapped to helvetica for example). Avoid this legacy substitution
28 when font config is used.
29
30 --- src/gui/text/qfont.cpp
31 +++ src/gui/text/qfont.cpp
32 @@ -59,6 +59,7 @@
33
34 #ifdef Q_WS_X11
35 #include "qx11info_x11.h"
36 +#include <private/qt_x11_p.h>
37 #endif
38 #ifdef Q_WS_QWS
39 #include "qscreen_qws.h"
40 @@ -1781,6 +1782,11 @@ static void initFontSubst()
41 if (!fontSubst->isEmpty())
42 return;
43
44 +#if defined(Q_WS_X11) && !defined(QT_NO_FONTCONFIG)
45 + if (X11->has_fontconfig)
46 + return;
47 +#endif
48 +
49 for (int i=0; initTbl[i] != 0; i += 2) {
50 QStringList &list = (*fontSubst)[QString::fromLatin1(initTbl[i])];
51 list.append(QString::fromLatin1(initTbl[i+1]));
52
53
54
55 1.1 x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff
56
57 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff?rev=1.1&view=markup
58 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff?rev=1.1&content-type=text/plain
59
60 Index: 0262-fix-treeview-animation-crash.diff
61 ===================================================================
62 Trolltech task ID : 236454
63 bugs.kde.org number : 176045
64 applied: no
65 author: Olivier Goffart
66
67 This patch makes sure no deleted items are being accessed during an animation of the treeview
68 It will also be contained in the upcoming Qt snapshots
69 Index: src/gui/itemviews/qtreeview.cpp
70 ===================================================================
71 --- src/gui/itemviews/qtreeview.cpp (revision 889029)
72 +++ src/gui/itemviews/qtreeview.cpp (working copy)
73 @@ -2802,10 +2802,9 @@
74 q->setState(oldState);
75
76 if (emitSignal) {
77 + emit q->expanded(index);
78 if (animationsEnabled)
79 beginAnimatedOperation();
80 - else
81 - emit q->expanded(index);
82 }
83 if (model->canFetchMore(index))
84 model->fetchMore(index);
85 @@ -2843,10 +2842,9 @@
86 q->setState(oldState);
87
88 if (emitSignal) {
89 + emit q->collapsed(modelIndex);
90 if (animationsEnabled)
91 beginAnimatedOperation();
92 - else
93 - emit q->collapsed(modelIndex);
94 }
95 }
96
97 @@ -2901,10 +2899,6 @@
98 animatedOperation.before = QPixmap();
99 animatedOperation.after = QPixmap();
100 q->setState(QAbstractItemView::NoState);
101 - if (animatedOperation.type == AnimatedOperation::Expand)
102 - emit q->expanded(viewItems.at(animatedOperation.item).index);
103 - else // operation == AnimatedOperation::Collapse
104 - emit q->collapsed(viewItems.at(animatedOperation.item).index);
105 q->updateGeometries();
106 viewport->update();
107 }
108
109
110
111 1.1 x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff
112
113 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff?rev=1.1&view=markup
114 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff?rev=1.1&content-type=text/plain
115
116 Index: 0265-fix-formlayoutcrash.diff
117 ===================================================================
118 qt-bugs@ issue : 177767
119 Trolltech task ID : 240759
120 applied: no
121 author: Alexis Menard <alexis.menard@×××××××××.com>
122
123 Fix a crash in QFormLayout when a layout is alone in a row
124 Included in 4.4.4
125
126 Index: src/gui/kernel/qlayoutitem.cpp
127 ===================================================================
128 --- src/gui/kernel/qlayoutitem.cpp (revision 910196)
129 +++ src/gui/kernel/qlayoutitem.cpp (working copy)
130 @@ -383,6 +383,8 @@ QSizePolicy::ControlTypes QLayoutItem::controlTypes() const
131 if (const QWidget *widget = const_cast<QLayoutItem*>(this)->widget()) {
132 return widget->sizePolicy().controlType();
133 } else if (const QLayout *layout = const_cast<QLayoutItem*>(this)->layout()) {
134 + if (layout->count() == 0)
135 + return QSizePolicy::DefaultType;
136 QSizePolicy::ControlTypes types;
137 for (int i = layout->count() - 1; i >= 0; --i)
138 types |= layout->itemAt(i)->controlTypes();
139
140
141
142 1.1 x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff
143
144 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff?rev=1.1&view=markup
145 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff?rev=1.1&content-type=text/plain
146
147 Index: 0248-fix-qwidget-scroll-slowness.diff
148 ===================================================================
149 qt-bugs@ issue : N227210
150 Trolltech task ID : 228764
151 bugs.kde.org number : 167739
152 applied: no
153 author: Germain Garand <germain@××××××××××××.org>
154
155 QWidgetPrivate::scrollRect doesn't account for it's rect argument
156 but rather examine the whole widget surface when pondering if
157 it can apply accelerated blitting, resulting in unnecessarily slow
158 and non-blitting QWidget::scroll calls.
159
160 A modified version of this patch is in Qt 4.5
161
162 Index: src/gui/painting/qbackingstore.cpp
163 ===================================================================
164 --- src/gui/painting/qbackingstore.cpp (révision 860438)
165 +++ src/gui/painting/qbackingstore.cpp (copie de travail)
166 @@ -523,7 +523,8 @@
167 }
168
169 bool overlapped = false;
170 - bool accelerateScroll = accelEnv && isOpaque() && !(overlapped = isOverlapped(data.crect));
171 + QRect cRect = clipRect();
172 + bool accelerateScroll = accelEnv && isOpaque() && !(overlapped = isOverlapped(rect & cRect));
173
174 #if defined(Q_WS_QWS)
175 QWSWindowSurface *surface;
176 @@ -558,13 +559,13 @@
177 #ifdef Q_WS_QWS
178 QWSWindowSurface *surface = static_cast<QWSWindowSurface*>(wbs->windowSurface);
179 const QRegion clip = surface->clipRegion().translated(-toplevelOffset)
180 - & clipRect();
181 + & cRect;
182 const QRect scrollRect = rect & clip.boundingRect();
183 const QRect destRect = scrollRect.translated(dx, dy)
184 & scrollRect
185 & clip.boundingRect();
186 #else
187 - QRect scrollRect = rect & clipRect();
188 + QRect scrollRect = rect & cRect;
189
190 QRect destRect = scrollRect.isValid() ? scrollRect.translated(dx,dy).intersected(scrollRect) : QRect();
191
192
193
194
195 1.1 x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff
196
197 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff?rev=1.1&view=markup
198 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff?rev=1.1&content-type=text/plain
199
200 Index: 0256-fix-recursive-backingstore-sync-crash.diff
201 ===================================================================
202 qt-bugs@ issue : N227209
203 Trolltech task ID : none yet
204 bugs.kde.org number : 174065
205 applied: yes
206 author: Szymon Tomasz Stefanek <s.stefanek@×××××.com>
207
208 This patch fixes a crash deep inside the qt painting engine.
209
210 The toplevel shared painter is instantiated by the topmost window
211 which "owns" the backingstore buffer. The topmost window then recursively
212 asks the children to paint themselves with the shared painter.
213 With certain widget hierarchies it turns out that the topmost window
214 may be asked to paint itself deep inside the recursive painting stack:
215 a sort of "hierarchy-looping recursion".
216 The window will do the job and then happily destroy the shared
217 painter leaving the outer stack frames with a dangling pointer.
218
219 This patch stops the "looping recursion" when it's triggered
220 with a shared painter already active. The bug doesn't seem to
221 be present in qt 4.5 snapshots, but in the meantime we need this fix.
222
223
224 Index: src/gui/painting/qbackingstore.cpp
225 ===================================================================
226 --- src/gui/painting/qbackingstore.cpp (revision 879741)
227 +++ src/gui/painting/qbackingstore.cpp (working copy)
228 @@ -987,8 +987,12 @@
229 return;
230 }
231
232 - if (tlw->updatesEnabled()) {
233 + // With certain widget hierarchies we may end up being called recursively
234 + // on the same toplevel. This is likely to explode once the painter is released
235 + // in the code below (since there is no reference counting). Avoid it.
236 + bool alreadyPainting = tlwExtra->sharedPainter && tlwExtra->sharedPainter->isActive();
237
238 + if (tlw->updatesEnabled() && !alreadyPainting) {
239 // hw: XXX the toClean region is not correct if !dirtyWidgets.isEmpty()
240
241 // Pre render config