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 |