Compare commits
692 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1d3b52daaf | ||
|
b8bea37602 | ||
|
64a2aa0bfc | ||
|
de7f39d5ed | ||
|
ccfeb6a608 | ||
|
e73d7b5927 | ||
|
1e12c4d637 | ||
|
3fafaeea11 | ||
|
56ab7ae00a | ||
|
973f90b5f8 | ||
|
16cf98a681 | ||
|
dc6c779515 | ||
|
d749d06c3e | ||
|
28433078d3 | ||
|
6383eb55e8 | ||
|
e288b7ca00 | ||
|
ecf530486e | ||
|
276c90a5b7 | ||
|
37a2aba837 | ||
|
ec0ac4149e | ||
|
430cfa020a | ||
|
28169437c2 | ||
|
d5717cd446 | ||
|
a1e7be54b8 | ||
|
d9b191b9ec | ||
|
d30cfdc894 | ||
|
736ab5e8a1 | ||
|
46567fbafb | ||
|
c6f3e912b2 | ||
|
0c24e255bb | ||
|
2c45da7842 | ||
|
4876d24d89 | ||
|
73c2f55e30 | ||
|
8d832b1c1e | ||
|
61fd11db0d | ||
|
7963cb35aa | ||
|
59915e4ad9 | ||
|
14c5aa506e | ||
|
87bb4a5751 | ||
|
593e8b6cfd | ||
|
44cdae5230 | ||
|
92af7f7a88 | ||
|
2e4d8b085b | ||
|
8657516756 | ||
|
be95107ea1 | ||
|
6d0df2a0a4 | ||
|
8cf9135957 | ||
|
231d286d41 | ||
|
a846b60884 | ||
|
6f7261dc5f | ||
|
404cd30436 | ||
|
541cc02c83 | ||
|
6dd80f3b69 | ||
|
210022372e | ||
|
33f92bd1af | ||
|
d6ee4edd91 | ||
|
88e9dfbe4b | ||
|
928a0668ca | ||
|
0537617a55 | ||
|
b6924d7787 | ||
|
f83530ad62 | ||
|
a8f6e65f6a | ||
|
63cda2bb9f | ||
|
74e790ecfb | ||
|
b3faea3dcf | ||
|
8b8b6f7520 | ||
|
49c310bbc0 | ||
|
aeb79bb543 | ||
|
c6c5987440 | ||
|
1244f6a379 | ||
|
b888d1c64e | ||
|
d131ab162f | ||
|
b0bb73c355 | ||
|
7d0674cfd8 | ||
|
a9071e838a | ||
|
a14f58dfd1 | ||
|
378ebbd0fa | ||
|
19688b12e8 | ||
|
6539b63734 | ||
|
76bc242110 | ||
|
773cae613c | ||
|
e272059ea4 | ||
|
cd4a130f36 | ||
|
279ddc7e2b | ||
|
53156e5052 | ||
|
e47878cf58 | ||
|
fc81bf09c8 | ||
|
75522bdd44 | ||
|
b83b6ab902 | ||
|
9969c7af3a | ||
|
0a8142156e | ||
|
d0d0880c8d | ||
|
901196ce45 | ||
|
3bf3ca0677 | ||
|
b7068c52dd | ||
|
44863ece3d | ||
|
83f139ea97 | ||
|
c3497d8517 | ||
|
0da40876de | ||
|
0aff623ddf | ||
|
b3dff4a11c | ||
|
b67fe78b00 | ||
|
1cbbe3b4b8 | ||
|
2d4235fd76 | ||
|
a7b8fcade0 | ||
|
1a53e519d2 | ||
|
b8b3815657 | ||
|
26faeda12f | ||
|
5d22bd8e4a | ||
|
62a9fa64e9 | ||
|
d3eb2bd609 | ||
|
768c812173 | ||
|
8ec4a9e6e1 | ||
|
90f12d395b | ||
|
f9646562e3 | ||
|
e88754810c | ||
|
81fc93291c | ||
|
b60256a7f5 | ||
|
9f99edcb8d | ||
|
14d638f8c2 | ||
|
e0433bd8b1 | ||
|
46be60d41a | ||
|
eaee77f0fe | ||
|
4610e175f8 | ||
|
97c30bc66d | ||
|
e84fc36353 | ||
|
f6916bdbaf | ||
|
3d9b30e780 | ||
|
8596660aef | ||
|
4c6ad9a444 | ||
|
58e8365063 | ||
|
db52875339 | ||
|
9331d5d829 | ||
|
ae0db1fa9a | ||
|
53cc9c20f2 | ||
|
e41de7f53a | ||
|
fab82a63e1 | ||
|
fae7ccca9e | ||
|
d504b2ce4b | ||
|
7ff9f93fee | ||
|
c1a09759e2 | ||
|
a5d326f0fd | ||
|
49c37326ea | ||
|
92bb5a34da | ||
|
dccfd199ad | ||
|
b442626fe7 | ||
|
088b772329 | ||
|
085037d44f | ||
|
81d355e657 | ||
|
f5fac42c88 | ||
|
2ee42c4afb | ||
|
e2a785dc0c | ||
|
ace1f8cdec | ||
|
1dd2314b97 | ||
|
3e52db65d9 | ||
|
2d55e14904 | ||
|
a4ee2e1f92 | ||
|
9bdae7df96 | ||
|
69bb144da5 | ||
|
553b0aeb5a | ||
|
6ee236bc94 | ||
|
9249484c37 | ||
|
0804463e9d | ||
|
22f92f680b | ||
|
8637627296 | ||
|
f24f81be1c | ||
|
bdf697bb19 | ||
|
0b15e7187f | ||
|
fe43d9b86a | ||
|
36205006b4 | ||
|
01e166b0c5 | ||
|
fab5de59f9 | ||
|
d20387edac | ||
|
f9755f3ab4 | ||
|
3ebc9a90b4 | ||
|
8dbbe2f056 | ||
|
7ee6d03861 | ||
|
b21e1f5472 | ||
|
809cb90014 | ||
|
23dec1f185 | ||
|
ad937db88f | ||
|
c56c2fc84a | ||
|
a67cb026ec | ||
|
21b133a841 | ||
|
9a85ff74dd | ||
|
8e4c02d46d | ||
|
9e4d52712f | ||
|
22ea7613bd | ||
|
0e56548e70 | ||
|
86416228bf | ||
|
3b88888ff0 | ||
|
3c87374223 | ||
|
22e5ecb69a | ||
|
12437b28f5 | ||
|
5fadc9d457 | ||
|
edf87b1ec8 | ||
|
9315bd6aa6 | ||
|
087ab1fb17 | ||
|
dea4644599 | ||
|
4f64405c27 | ||
|
6662fae879 | ||
|
e86eaa89ee | ||
|
5d4c00ca2f | ||
|
499fde8b2a | ||
|
5d8ae35092 | ||
|
7f431fbaa7 | ||
|
c2e696277e | ||
|
c3c8eaaaa9 | ||
|
82200be8dd | ||
|
8361e71552 | ||
|
1650d55936 | ||
|
118f765636 | ||
|
266a47c2dc | ||
|
fa6c900f93 | ||
|
4d4b19d3f8 | ||
|
e9629e4208 | ||
|
368f835532 | ||
|
4656da0cd4 | ||
|
e0673557d0 | ||
|
a75542ed95 | ||
|
bacb87c899 | ||
|
04f02f196f | ||
|
d8c792b4fc | ||
|
1ac4fa717c | ||
|
cdf70082aa | ||
|
89569a2242 | ||
|
0a91dd0faf | ||
|
37b42623a7 | ||
|
b2f384a4ba | ||
|
1399efea41 | ||
|
8df516bbfb | ||
|
bab905e093 | ||
|
6ede3a7f87 | ||
|
04fc6818ae | ||
|
d68208955a | ||
|
20e8a01183 | ||
|
9b470ba395 | ||
|
5aa0de5be8 | ||
|
215aa5fd08 | ||
|
97b27a9487 | ||
|
6e276638e1 | ||
|
81f4e80bb5 | ||
|
9c12e23239 | ||
|
52ef45e79a | ||
|
e3bfd6e1fe | ||
|
934f9eedc9 | ||
|
5f18fc6b1e | ||
|
747f71fa5b | ||
|
119248cace | ||
|
42134b3653 | ||
|
adc7c115dd | ||
|
f1d2a1410f | ||
|
3351a1ee1a | ||
|
145254b751 | ||
|
006084c8f4 | ||
|
9e3c0f0a62 | ||
|
1d42146cca | ||
|
af10e0158f | ||
|
76de2fcf22 | ||
|
41cb7e3491 | ||
|
9f74aac72e | ||
|
ff98402c2b | ||
|
d23802217a | ||
|
420aafa825 | ||
|
a5d51f892b | ||
|
060db3c767 | ||
|
c4934b1a43 | ||
|
5b7dbe9fd5 | ||
|
18fdbd1c4c | ||
|
2fe8ba1706 | ||
|
81789f851c | ||
|
651f62b07b | ||
|
62de8242b5 | ||
|
d5adc58734 | ||
|
879130ccb2 | ||
|
61f93597ce | ||
|
f8934db9d9 | ||
|
26b43071c0 | ||
|
45a5a11ca8 | ||
|
8d515ac543 | ||
|
a66b9ce81d | ||
|
c161b773eb | ||
|
d50e40ebed | ||
|
95b646ad34 | ||
|
d1296a4d3a | ||
|
0f42336250 | ||
|
a9a1095ff8 | ||
|
59d529bafa | ||
|
70982bc9f3 | ||
|
1b76e04434 | ||
|
a44a4dbbdd | ||
|
10cc1b1e10 | ||
|
e5126ea57e | ||
|
7a24f72b31 | ||
|
584e7bd537 | ||
|
be63e08f2e | ||
|
8001892377 | ||
|
064e0d8218 | ||
|
d19f27c426 | ||
|
fb25dbbe0b | ||
|
3ecceb88be | ||
|
fcbf1bc3e0 | ||
|
9b5f97e928 | ||
|
9e2ddba1bf | ||
|
ebd7259005 | ||
|
d56e28f80c | ||
|
07d2a83a45 | ||
|
fe8fd4660b | ||
|
17695d696e | ||
|
0a4122f3c7 | ||
|
dca2cfda12 | ||
|
03f796db51 | ||
|
ef9de1563f | ||
|
6f4f6b40ee | ||
|
9a146be85b | ||
|
34e2c25f86 | ||
|
4c18c4470c | ||
|
bb9ed3a702 | ||
|
1f58c3a6d8 | ||
|
d5a9be263d | ||
|
d7404ffde2 | ||
|
5cccbd34de | ||
|
8517c08334 | ||
|
15b71d3c8d | ||
|
440edf20b7 | ||
|
7aacf8ed8f | ||
|
9e2b706075 | ||
|
396edc8d59 | ||
|
e2781c7cfc | ||
|
f0f438f306 | ||
|
75dc5c3d4c | ||
|
7bb24cd446 | ||
|
0811c7ffc2 | ||
|
749a63c1f9 | ||
|
f8805edd3b | ||
|
5a4b823ab4 | ||
|
6e9f536460 | ||
|
d72d8fa998 | ||
|
ded6d74c65 | ||
|
921e069788 | ||
|
2d670be15f | ||
|
cf709d7572 | ||
|
16f2754625 | ||
|
8858367e16 | ||
|
4d01685929 | ||
|
14023e08c2 | ||
|
ab30481b14 | ||
|
922ba8aa27 | ||
|
5a3b34906e | ||
|
160e3905f0 | ||
|
efe49b233c | ||
|
34a50271ab | ||
|
c1f92f923d | ||
|
2d7c97cf55 | ||
|
22c56136ae | ||
|
1bb69fdee7 | ||
|
b8d8f1dc1b | ||
|
da899e3820 | ||
|
5ef9bed811 | ||
|
7497f5d973 | ||
|
8be6ad84de | ||
|
8244061b3d | ||
|
137cfcb128 | ||
|
9e141f8f95 | ||
|
9d66e67ec2 | ||
|
6111d96eb2 | ||
|
76078aea2e | ||
|
a941a58f4f | ||
|
fdfba67b94 | ||
|
2547722966 | ||
|
e5e6464e83 | ||
|
79a460b197 | ||
|
a4cb425a1d | ||
|
9432f72c6f | ||
|
47854b6b60 | ||
|
a6175d5a7a | ||
|
9978f4fd3f | ||
|
af20ebbd40 | ||
|
6f37f2ce29 | ||
|
e4702e2c09 | ||
|
e7ca277a10 | ||
|
f8f69bf18e | ||
|
3e6009be04 | ||
|
ee8290ceac | ||
|
32aeb96a5a | ||
|
6424aee238 | ||
|
3815b794ba | ||
|
f48bc31989 | ||
|
51e5c9f4e1 | ||
|
8ff2145cf6 | ||
|
7ee938e92b | ||
|
3eee5c4831 | ||
|
529fc5e1f4 | ||
|
023bbe6781 | ||
|
3190d33000 | ||
|
3ba8c12fa9 | ||
|
2d2276c6b2 | ||
|
53d9fccd83 | ||
|
659f8c9ee5 | ||
|
0b36370aaf | ||
|
0a74c97247 | ||
|
f13527cb86 | ||
|
7417f0069f | ||
|
c1430cbcf4 | ||
|
c7126434f0 | ||
|
cf17e68ecc | ||
|
3d02d73f3c | ||
|
bd2addd921 | ||
|
b1d8d8ba7c | ||
|
084149830f | ||
|
2d7f0aedce | ||
|
423c888d2a | ||
|
7ff8383aec | ||
|
3f218bd595 | ||
|
c0a736a53b | ||
|
efb4682aa6 | ||
|
ddf3c9870e | ||
|
40ea442909 | ||
|
98af2ffded | ||
|
7c848ff441 | ||
|
30f06196dc | ||
|
4d134b988e | ||
|
a6338f25bd | ||
|
ff1e9122ca | ||
|
c97478f426 | ||
|
2f3d95654b | ||
|
ab37904fe4 | ||
|
23f4dffa95 | ||
|
a0d03704b2 | ||
|
65cc31af55 | ||
|
c7f94c101b | ||
|
20d70c201a | ||
|
9d4b9accf8 | ||
|
d3bc0d2254 | ||
|
12f7dd61c8 | ||
|
ba86a44f6c | ||
|
2fe847ae00 | ||
|
b730397959 | ||
|
ba20a11e98 | ||
|
996100960b | ||
|
1b760d539f | ||
|
9944a49cde | ||
|
a0c7852d94 | ||
|
0dd2558f3b | ||
|
34eafd78f9 | ||
|
30286e7b96 | ||
|
a471309760 | ||
|
d4485681e4 | ||
|
708993a480 | ||
|
df6016dd04 | ||
|
6234a6f70e | ||
|
4762ae1934 | ||
|
2f5c7e48eb | ||
|
65ccedb1ad | ||
|
711f1678b4 | ||
|
6f860b2dd8 | ||
|
6e405dfcba | ||
|
d8455b671a | ||
|
0f1c55d979 | ||
|
390b42cf03 | ||
|
63c4ae2e27 | ||
|
e184187068 | ||
|
d30e6f44e6 | ||
|
de3cacfc5e | ||
|
89ea428615 | ||
|
c45d17ed39 | ||
|
bfaa111a1f | ||
|
b6a1a7348b | ||
|
37cc616b68 | ||
|
c3d76760c5 | ||
|
c2aca32302 | ||
|
45c933c0f3 | ||
|
ba712a9386 | ||
|
3975bfa88c | ||
|
cb5d533c6c | ||
|
73f2852e9f | ||
|
b9f1809b7f | ||
|
a5ce8bcfb2 | ||
|
0f4ec6792d | ||
|
cafa1b72a0 | ||
|
5a8a37138f | ||
|
3d5463b041 | ||
|
2f705be136 | ||
|
371b933c17 | ||
|
e7620d801c | ||
|
0b7b15bf27 | ||
|
46809893a0 | ||
|
9f6fae2e37 | ||
|
da11d12ff6 | ||
|
e942ab7c04 | ||
|
838fb663b7 | ||
|
4c9bc1527d | ||
|
77c80ca6a7 | ||
|
8232db61f2 | ||
|
973ad3bb74 | ||
|
5f431fd008 | ||
|
14cfdb8b63 | ||
|
c0a63dd716 | ||
|
de342266fb | ||
|
b781f853f5 | ||
|
bd4febed99 | ||
|
287a2693cb | ||
|
aa3af83152 | ||
|
a0163dc045 | ||
|
0e9f1a4810 | ||
|
5ec98dafb1 | ||
|
35a84ebd0e | ||
|
61d4c8e542 | ||
|
fb3d889c52 | ||
|
44dcd132bf | ||
|
e708cbd247 | ||
|
9af4031990 | ||
|
233ab3429d | ||
|
6721bdb456 | ||
|
ec43e27561 | ||
|
a329695c26 | ||
|
25b36ebe96 | ||
|
510b2944ae | ||
|
050003885a | ||
|
2450722bfa | ||
|
2767897b5b | ||
|
cb3d970dd0 | ||
|
91c2fd10b6 | ||
|
ea3337dff5 | ||
|
22be3c359a | ||
|
a6b6bed92d | ||
|
3d07572919 | ||
|
98975c3c0d | ||
|
379519af30 | ||
|
60c1668243 | ||
|
cfb2b87f2d | ||
|
feeaa2fb45 | ||
|
eaa0c850ff | ||
|
0a4e347798 | ||
|
01e5321efa | ||
|
df025bf73d | ||
|
000e171b14 | ||
|
4cafec257a | ||
|
701ecf49cc | ||
|
72a4f4ba12 | ||
|
50be3f259b | ||
|
cf6cd2c43b | ||
|
26b67d1bee | ||
|
428e1ad548 | ||
|
adc96e91de | ||
|
248c703d3b | ||
|
c29be15197 | ||
|
499ca31250 | ||
|
dc652ed470 | ||
|
1147eed9c4 | ||
|
b9fc9f2f2f | ||
|
1c8e5f9e54 | ||
|
a2d05ff4f7 | ||
|
d45e2e184e | ||
|
ad163f6497 | ||
|
03331b6550 | ||
|
de59527a87 | ||
|
c91b419224 | ||
|
dcb0babb37 | ||
|
490cda6e0b | ||
|
bb2ec7f619 | ||
|
6cf04333d3 | ||
|
ee2610b777 | ||
|
59d8f58fc9 | ||
|
d03aeba638 | ||
|
0f50975eed | ||
|
919bee052b | ||
|
76d27aea26 | ||
|
1d995dfe23 | ||
|
26f6fe85fb | ||
|
015ea98437 | ||
|
edf6f3a83a | ||
|
e79b067ac4 | ||
|
e5611d19c9 | ||
|
ea16451eef | ||
|
3afd106aca | ||
|
c7ad70855b | ||
|
198d07cef4 | ||
|
da455bdc58 | ||
|
3fc66a164a | ||
|
4583d39684 | ||
|
21aafed52a | ||
|
753003e56a | ||
|
d6c3480333 | ||
|
eed4343768 | ||
|
1dc801d71c | ||
|
cb91c0e9fc | ||
|
281fd8a2b0 | ||
|
842ac43081 | ||
|
868ef7f732 | ||
|
747f1a22bd | ||
|
c5c71b0706 | ||
|
47eb6e4a3b | ||
|
fcd6753d10 | ||
|
db977ee129 | ||
|
ae3d78d82d | ||
|
a39b220c7b | ||
|
bac96cf822 | ||
|
801051fd1f | ||
|
e29089f116 | ||
|
36795fab23 | ||
|
012cd169a7 | ||
|
09faad44d7 | ||
|
a0e250f55d | ||
|
aa687dbf4c | ||
|
3f4b7bb3d0 | ||
|
300626bc4e | ||
|
c1bd8b0482 | ||
|
9aee138790 | ||
|
c4d3c00a7f | ||
|
db5a956ab5 | ||
|
91de731c28 | ||
|
d04d702331 | ||
|
ca8f5e2ece | ||
|
6c5f5e973d | ||
|
ea46a796cb | ||
|
f0f69bab2d | ||
|
1be86990b9 | ||
|
95443e61d5 | ||
|
861c0245e6 | ||
|
bcb50bbaf0 | ||
|
a6f6f42415 | ||
|
f68ee7fa0c | ||
|
3b343eda5c | ||
|
dd242a02f5 | ||
|
0ead5f67ab | ||
|
9e444df86a | ||
|
497c86b1ba | ||
|
d233d2ffc0 | ||
|
d02f49b3a0 | ||
|
cc468676a9 | ||
|
a3f8946ee1 | ||
|
08842b7697 | ||
|
490f8076b6 | ||
|
813d7daf81 | ||
|
5916cb88b3 | ||
|
4318b1a15d | ||
|
e41dcd8d24 | ||
|
0d7eb275c0 | ||
|
bfc40e15e0 | ||
|
83e88b94b1 | ||
|
7ac2057db1 | ||
|
1bbe97aef2 | ||
|
7bb6c94cca | ||
|
47705af03f | ||
|
121e487da7 | ||
|
0e3110f10d | ||
|
a09a858994 | ||
|
1d8af1bd5d | ||
|
74d624a878 | ||
|
9308ff523a | ||
|
0e707c2ee0 | ||
|
72d6e2ee5c | ||
|
81bfcda79f | ||
|
0282604344 | ||
|
f0a72e0d97 | ||
|
81caa84fba | ||
|
ea2b22306c | ||
|
41247725a9 | ||
|
46360e8ff9 | ||
|
89e1f88570 | ||
|
90491cb427 | ||
|
092c345431 | ||
|
719567393f | ||
|
6a87a7ac65 | ||
|
e80da532e0 | ||
|
73fb4fbec8 | ||
|
3d1657baa2 | ||
|
2df14c171a | ||
|
6555ccf319 | ||
|
5178f76e87 | ||
|
b1128646fc | ||
|
ff83e35ad4 | ||
|
db240ed9b8 | ||
|
e24de8996b | ||
|
d8796480b3 | ||
|
abfde4ddf0 | ||
|
c1d2ae60a9 | ||
|
337ddfff5a | ||
|
74efb849cf | ||
|
8e0027bc34 | ||
|
04c69a92e1 | ||
|
fc54e9a090 | ||
|
492ab3da2e | ||
|
30b96ac435 | ||
|
25c2f7c06f | ||
|
cc62b44d5d | ||
|
b86078ddd1 | ||
|
ba0f5c5d1f | ||
|
1d370e8188 | ||
|
cbb99620c0 | ||
|
43e474a4ad |
@ -1,9 +0,0 @@
|
|||||||
qt-x11-free-3.3.3.tar.bz2
|
|
||||||
qt-x11-immodule-unified-qt3.3.3-20040910.diff.bz2
|
|
||||||
qt-x11-immodule-unified-qt3.3.4-20041203.diff.bz2
|
|
||||||
qt-x11-free-3.3.4.tar.bz2
|
|
||||||
qt-x11-free-3.3.5.tar.bz2
|
|
||||||
qt-x11-immodule-unified-qt3.3.5-20051012.diff.bz2
|
|
||||||
qt-x11-immodule-unified-qt3.3.5-20051018.diff.bz2
|
|
||||||
qt-x11-immodule-unified-qt3.3.7-20061229.diff.bz2
|
|
||||||
qt-x11-free-3.3.8.tar.bz2
|
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/hi128-app-qt4-logo.png
|
||||||
|
/hi48-app-qt4-logo.png
|
||||||
|
/qt-everywhere-opensource-src-4.8.7.tar.gz
|
@ -1,57 +0,0 @@
|
|||||||
qt-bugs@ issue : 38642
|
|
||||||
bugs.kde.org number : 71084
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
Hello,
|
|
||||||
|
|
||||||
start Mozilla, go e.g. to http://kde.org, start KWrite (or basically any Qt
|
|
||||||
app that accepts text drops), select 'Conquer your Desktop!', and try to
|
|
||||||
drag&drop it onto KWrite. The only text pasted should be 'm'.
|
|
||||||
|
|
||||||
I don't know much the related mimetype and encoding stuff, so I'm unsure
|
|
||||||
whose fault this actually is. The text drag is provided as a lot of
|
|
||||||
text/something targets, to list some text/_moz_htmlinfo, text/x-moz-url,
|
|
||||||
text/unicode and similar. The problem is, Kate uses QTextDrag::decode() with
|
|
||||||
no subtype specified, probably with the intention that as Kate is a text
|
|
||||||
editor, it can accept any text pasted. And since the first target provided by
|
|
||||||
mozilla is text/x-moz-url, (which moreover seems to be encoded as 16bit
|
|
||||||
unicode), the text dropped is completely wrong. You can easily see all
|
|
||||||
targets provided by Mozilla with see_mime.patch applied.
|
|
||||||
|
|
||||||
Solution #1: Say that Kate (any pretty much everybody else expecting text)
|
|
||||||
should say "plain" as the subtype. In such case, I suggest you drop the
|
|
||||||
QTextDrag::decode() variant with no subtype specified, and stress more the
|
|
||||||
fact that not specifying a subtype can result in a lot of rubbish. It's
|
|
||||||
simply too tempting to leave the subtype empty and try to accept anything.
|
|
||||||
|
|
||||||
Solution #2: When trying to accept anything, try to get useful data. Which
|
|
||||||
means either sorting the subtypes available somehow, checking only the ones
|
|
||||||
Qt knows.
|
|
||||||
|
|
||||||
To me, #1 seems to be a better choice, or possibly at least something like
|
|
||||||
the attached QTextDrag patch, which simply always tries first "plain" subtype
|
|
||||||
if none is specified. With this patch, Mozilla even works (that's irony, of
|
|
||||||
course, Mozilla still pastes the text/plain text as HTML, but at least now it
|
|
||||||
pastes something where it's easy to point at the offender).
|
|
||||||
|
|
||||||
|
|
||||||
--- src/kernel/qdragobject.cpp.sav 2004-01-06 19:24:35.000000000 +0100
|
|
||||||
+++ src/kernel/qdragobject.cpp 2004-01-06 19:47:01.000000000 +0100
|
|
||||||
@@ -844,6 +844,16 @@ bool QTextDrag::decode( const QMimeSourc
|
|
||||||
{
|
|
||||||
if(!e)
|
|
||||||
return FALSE;
|
|
||||||
+
|
|
||||||
+ // when subtype is not specified, try text/plain first, otherwise this may read
|
|
||||||
+ // things like text/x-moz-url even though better targets are available
|
|
||||||
+ if( subtype.isNull()) {
|
|
||||||
+ QCString subtmp = "plain";
|
|
||||||
+ if( decode( e, str, subtmp )) {
|
|
||||||
+ subtype = subtmp;
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if ( e->cacheType == QMimeSource::Text ) {
|
|
||||||
str = *e->cache.txt.str;
|
|
@ -1,25 +0,0 @@
|
|||||||
qt-bugs@ issue: N46882
|
|
||||||
bugs.kde.org number: 77545
|
|
||||||
applied: no
|
|
||||||
author: Stephan Binner <binner@kde.org>
|
|
||||||
|
|
||||||
Fix wrong K menu width for the case of enabled side pixmap and a menu title
|
|
||||||
(like "Recently Used Applications") being longer than every other entry.
|
|
||||||
|
|
||||||
Solution: Respect PanelKMenu::setMaximumSize() as up to Qt 3.2.3
|
|
||||||
|
|
||||||
Index: src/widgets/qpopupmenu.cpp
|
|
||||||
===================================================================
|
|
||||||
RCS file: /home/kde/qt-copy/src/widgets/qpopupmenu.cpp,v
|
|
||||||
retrieving revision 1.60
|
|
||||||
diff -u -3 -p -b -r1.60 qpopupmenu.cpp
|
|
||||||
--- src/widgets/qpopupmenu.cpp 29 Apr 2004 22:31:28 -0000 1.60
|
|
||||||
+++ src/widgets/qpopupmenu.cpp 30 Apr 2004 01:11:59 -0000
|
|
||||||
@@ -2531,7 +2531,7 @@ QSize QPopupMenu::sizeHint() const
|
|
||||||
|
|
||||||
QPopupMenu* that = (QPopupMenu*) this;
|
|
||||||
//We do not need a resize here, just the sizeHint..
|
|
||||||
- return that->updateSize(FALSE, FALSE).expandedTo( QApplication::globalStrut() );
|
|
||||||
+ return that->updateSize(FALSE).expandedTo( QApplication::globalStrut() );
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
qt-bugs@ issue : none, probably even won't be
|
|
||||||
bugs.kde.org number : 80072
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
A crude hack for KDE #80072. No good idea how to fix it properly yet :(.
|
|
||||||
|
|
||||||
--- src/kernel/qclipboard_x11.cpp.sav 2004-04-30 12:00:06.000000000 +0200
|
|
||||||
+++ src/kernel/qclipboard_x11.cpp 2004-05-09 21:18:10.269264304 +0200
|
|
||||||
@@ -109,6 +109,7 @@ static int pending_timer_id = 0;
|
|
||||||
static bool pending_clipboard_changed = FALSE;
|
|
||||||
static bool pending_selection_changed = FALSE;
|
|
||||||
|
|
||||||
+Q_EXPORT bool qt_qclipboard_bailout_hack = false;
|
|
||||||
|
|
||||||
// event capture mechanism for qt_xclb_wait_for_event
|
|
||||||
static bool waiting_for_data = FALSE;
|
|
||||||
@@ -453,6 +454,15 @@ static int qt_xclb_event_filter(XEvent *
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static bool selection_request_pending = false;
|
|
||||||
+
|
|
||||||
+static Bool check_selection_request_pending( Display*, XEvent* e, XPointer )
|
|
||||||
+ {
|
|
||||||
+ if( e->type == SelectionRequest && e->xselectionrequest.owner == owner->winId())
|
|
||||||
+ selection_request_pending = true;
|
|
||||||
+ return False;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event,
|
|
||||||
int timeout )
|
|
||||||
{
|
|
||||||
@@ -504,6 +514,14 @@ bool qt_xclb_wait_for_event( Display *dp
|
|
||||||
do {
|
|
||||||
if ( XCheckTypedWindowEvent(dpy,win,type,event) )
|
|
||||||
return TRUE;
|
|
||||||
+ if( qt_qclipboard_bailout_hack ) {
|
|
||||||
+ XEvent dummy;
|
|
||||||
+ selection_request_pending = false;
|
|
||||||
+ if ( owner != NULL )
|
|
||||||
+ XCheckIfEvent(dpy,&dummy,check_selection_request_pending,NULL);
|
|
||||||
+ if( selection_request_pending )
|
|
||||||
+ return TRUE;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
now = QTime::currentTime();
|
|
||||||
if ( started > now ) // crossed midnight
|
|
@ -1,21 +0,0 @@
|
|||||||
qt-bugs@ issue : 58251
|
|
||||||
bugs.kde.org number : 84434
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
Fixes keyboard input action in KHotKeys (see bug #84434).
|
|
||||||
|
|
||||||
--- src/kernel/qapplication_x11.cpp.sav 2004-10-07 15:38:05.000000000 +0200
|
|
||||||
+++ src/kernel/qapplication_x11.cpp 2004-10-12 11:46:32.513137808 +0200
|
|
||||||
@@ -5294,8 +5294,10 @@ static Bool qt_keypress_scanner(Display
|
|
||||||
qt_auto_repeat_data *d = (qt_auto_repeat_data *) arg;
|
|
||||||
if (d->error ||
|
|
||||||
event->xkey.window != d->window ||
|
|
||||||
- event->xkey.keycode != d->keycode)
|
|
||||||
+ event->xkey.keycode != d->keycode) {
|
|
||||||
+ d->error = TRUE;
|
|
||||||
return FALSE;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (event->type == XKeyPress) {
|
|
||||||
d->error = (! d->release || event->xkey.time - d->timestamp > 10);
|
|
@ -1,113 +0,0 @@
|
|||||||
qt-bugs@ issue : none
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
Makes QPopupMenu aware of Xinerama (see e.g. https://bugzilla.novell.com/show_bug.cgi?id=216235).
|
|
||||||
|
|
||||||
|
|
||||||
--- src/widgets/qpopupmenu.cpp
|
|
||||||
+++ src/widgets/qpopupmenu.cpp
|
|
||||||
@@ -454,6 +454,15 @@ void QPopupMenu::frameChanged()
|
|
||||||
menuContentsChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
+QRect QPopupMenu::screenRect( const QPoint& pos )
|
|
||||||
+{
|
|
||||||
+ int screen_num = QApplication::desktop()->screenNumber( pos );
|
|
||||||
+#ifdef Q_WS_MAC
|
|
||||||
+ return QApplication::desktop()->availableGeometry( screen_num );
|
|
||||||
+#else
|
|
||||||
+ return QApplication::desktop()->screenGeometry( screen_num );
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
/*!
|
|
||||||
Displays the popup menu so that the item number \a indexAtPoint
|
|
||||||
will be at the specified \e global position \a pos. To translate a
|
|
||||||
@@ -498,6 +507,15 @@ void QPopupMenu::popup( const QPoint &po
|
|
||||||
// point.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ QRect screen = screenRect( geometry().center());
|
|
||||||
+ QRect screen2 = screenRect( QApplication::reverseLayout()
|
|
||||||
+ ? pos+QPoint(width(),0) : pos );
|
|
||||||
+ // if the widget is not in the screen given by the position, move it
|
|
||||||
+ // there, so that updateSize() uses the right size of the screen
|
|
||||||
+ if( screen != screen2 ) {
|
|
||||||
+ screen = screen2;
|
|
||||||
+ move( screen.x(), screen.y());
|
|
||||||
+ }
|
|
||||||
if(d->scroll.scrollable) {
|
|
||||||
d->scroll.scrollable = QPopupMenuPrivate::Scroll::ScrollNone;
|
|
||||||
d->scroll.topScrollableIndex = d->scroll.scrollableSize = 0;
|
|
||||||
@@ -517,18 +535,6 @@ void QPopupMenu::popup( const QPoint &po
|
|
||||||
updateSize(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
- int screen_num;
|
|
||||||
- if (QApplication::desktop()->isVirtualDesktop())
|
|
||||||
- screen_num =
|
|
||||||
- QApplication::desktop()->screenNumber( QApplication::reverseLayout() ?
|
|
||||||
- pos+QPoint(width(),0) : pos );
|
|
||||||
- else
|
|
||||||
- screen_num = QApplication::desktop()->screenNumber( this );
|
|
||||||
-#ifdef Q_WS_MAC
|
|
||||||
- QRect screen = QApplication::desktop()->availableGeometry( screen_num );
|
|
||||||
-#else
|
|
||||||
- QRect screen = QApplication::desktop()->screenGeometry( screen_num );
|
|
||||||
-#endif
|
|
||||||
int sw = screen.width(); // screen width
|
|
||||||
int sh = screen.height(); // screen height
|
|
||||||
int sx = screen.x(); // screen pos
|
|
||||||
@@ -1056,7 +1062,7 @@ QSize QPopupMenu::updateSize(bool force_
|
|
||||||
mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).width() + 4 );
|
|
||||||
}
|
|
||||||
|
|
||||||
- int dh = QApplication::desktop()->height();
|
|
||||||
+ int dh = screenRect( geometry().center()).height();
|
|
||||||
ncols = 1;
|
|
||||||
|
|
||||||
for ( QMenuItemListIt it2( *mitems ); it2.current(); ++it2 ) {
|
|
||||||
@@ -2297,9 +2303,9 @@ void QPopupMenu::subMenuTimer() {
|
|
||||||
bool right = FALSE;
|
|
||||||
if ( ( parentMenu && parentMenu->isPopupMenu &&
|
|
||||||
((QPopupMenu*)parentMenu)->geometry().x() < geometry().x() ) ||
|
|
||||||
- p.x() < 0 )
|
|
||||||
+ p.x() < screenRect( p ).left())
|
|
||||||
right = TRUE;
|
|
||||||
- if ( right && (ps.width() > QApplication::desktop()->width() - mapToGlobal( r.topRight() ).x() ) )
|
|
||||||
+ if ( right && (ps.width() > screenRect( p ).right() - mapToGlobal( r.topRight() ).x() ) )
|
|
||||||
right = FALSE;
|
|
||||||
if ( right )
|
|
||||||
p.setX( mapToGlobal( r.topRight() ).x() );
|
|
||||||
@@ -2310,7 +2316,7 @@ void QPopupMenu::subMenuTimer() {
|
|
||||||
bool left = FALSE;
|
|
||||||
if ( ( parentMenu && parentMenu->isPopupMenu &&
|
|
||||||
((QPopupMenu*)parentMenu)->geometry().x() > geometry().x() ) ||
|
|
||||||
- p.x() + ps.width() > QApplication::desktop()->width() )
|
|
||||||
+ p.x() + ps.width() > screenRect( p ).right() )
|
|
||||||
left = TRUE;
|
|
||||||
if ( left && (ps.width() > mapToGlobal( r.topLeft() ).x() ) )
|
|
||||||
left = FALSE;
|
|
||||||
@@ -2318,8 +2324,8 @@ void QPopupMenu::subMenuTimer() {
|
|
||||||
p.setX( mapToGlobal( r.topLeft() ).x() - ps.width() );
|
|
||||||
}
|
|
||||||
QRect pr = popup->itemGeometry(popup->count() - 1);
|
|
||||||
- if (p.y() + ps.height() > QApplication::desktop()->height() &&
|
|
||||||
- p.y() - ps.height() + (QCOORD) pr.height() >= 0)
|
|
||||||
+ if (p.y() + ps.height() > screenRect( p ).bottom() &&
|
|
||||||
+ p.y() - ps.height() + (QCOORD) pr.height() >= screenRect( p ).top())
|
|
||||||
p.setY( p.y() - ps.height() + (QCOORD) pr.height());
|
|
||||||
|
|
||||||
if ( style().styleHint(QStyle::SH_PopupMenu_SloppySubMenus, this )) {
|
|
||||||
Index: src/widgets/qpopupmenu.h
|
|
||||||
===================================================================
|
|
||||||
--- src/widgets/qpopupmenu.h (revision 636368)
|
|
||||||
+++ src/widgets/qpopupmenu.h (working copy)
|
|
||||||
@@ -152,6 +152,7 @@ private:
|
|
||||||
|
|
||||||
QSize updateSize(bool force_recalc=FALSE, bool do_resize=TRUE);
|
|
||||||
void updateRow( int row );
|
|
||||||
+ QRect screenRect(const QPoint& pos);
|
|
||||||
#ifndef QT_NO_ACCEL
|
|
||||||
void updateAccel( QWidget * );
|
|
||||||
void enableAccel( bool );
|
|
@ -1,19 +0,0 @@
|
|||||||
qt-bugs@ issue : none
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: from trolltech
|
|
||||||
|
|
||||||
Fixes a regression in QProgress::writeToStdin()
|
|
||||||
|
|
||||||
|
|
||||||
--- src/kernel/qprocess.cpp
|
|
||||||
+++ src/kernel/qprocess.cpp
|
|
||||||
@@ -727,7 +727,7 @@ void QProcess::closeStdinLaunch()
|
|
||||||
void QProcess::writeToStdin( const QString& buf )
|
|
||||||
{
|
|
||||||
QByteArray tmp = buf.local8Bit();
|
|
||||||
- tmp.resize( tmp.size() - 1 ); // drop the implicit \0
|
|
||||||
+ tmp.resize( qstrlen( tmp.data() ) );
|
|
||||||
writeToStdin( tmp );
|
|
||||||
}
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
|||||||
qt-bugs@ issue : N154454
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: Dirk Mueller <mueller@kde.org>
|
|
||||||
|
|
||||||
This patch makes the utf8 decoders in Qt reject overlong
|
|
||||||
sequences, like required.
|
|
||||||
|
|
||||||
--- src/codecs/qutfcodec.cpp
|
|
||||||
+++ src/codecs/qutfcodec.cpp
|
|
||||||
@@ -154,6 +154,7 @@
|
|
||||||
|
|
||||||
class QUtf8Decoder : public QTextDecoder {
|
|
||||||
uint uc;
|
|
||||||
+ uint min_uc;
|
|
||||||
int need;
|
|
||||||
bool headerDone;
|
|
||||||
public:
|
|
||||||
@@ -167,8 +168,9 @@
|
|
||||||
result.setLength( len ); // worst case
|
|
||||||
QChar *qch = (QChar *)result.unicode();
|
|
||||||
uchar ch;
|
|
||||||
+ int error = -1;
|
|
||||||
for (int i=0; i<len; i++) {
|
|
||||||
- ch = *chars++;
|
|
||||||
+ ch = chars[i];
|
|
||||||
if (need) {
|
|
||||||
if ( (ch&0xc0) == 0x80 ) {
|
|
||||||
uc = (uc << 6) | (ch & 0x3f);
|
|
||||||
@@ -182,6 +184,8 @@
|
|
||||||
*qch++ = QChar(high);
|
|
||||||
*qch++ = QChar(low);
|
|
||||||
headerDone = TRUE;
|
|
||||||
+ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
|
|
||||||
+ *qch++ = QChar::replacement;
|
|
||||||
} else {
|
|
||||||
if (headerDone || QChar(uc) != QChar::byteOrderMark)
|
|
||||||
*qch++ = uc;
|
|
||||||
@@ -190,6 +194,7 @@
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// error
|
|
||||||
+ i = error;
|
|
||||||
*qch++ = QChar::replacement;
|
|
||||||
need = 0;
|
|
||||||
}
|
|
||||||
@@ -200,12 +205,21 @@
|
|
||||||
} else if ((ch & 0xe0) == 0xc0) {
|
|
||||||
uc = ch & 0x1f;
|
|
||||||
need = 1;
|
|
||||||
+ error = i;
|
|
||||||
+ min_uc = 0x80;
|
|
||||||
} else if ((ch & 0xf0) == 0xe0) {
|
|
||||||
uc = ch & 0x0f;
|
|
||||||
need = 2;
|
|
||||||
+ error = i;
|
|
||||||
+ min_uc = 0x800;
|
|
||||||
} else if ((ch&0xf8) == 0xf0) {
|
|
||||||
uc = ch & 0x07;
|
|
||||||
need = 3;
|
|
||||||
+ error = i;
|
|
||||||
+ min_uc = 0x10000;
|
|
||||||
+ } else {
|
|
||||||
+ // error
|
|
||||||
+ *qch++ = QChar::replacement;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--- src/tools/qstring.cpp
|
|
||||||
+++ src/tools/qstring.cpp
|
|
||||||
@@ -5805,6 +5805,7 @@
|
|
||||||
result.setLength( len ); // worst case
|
|
||||||
QChar *qch = (QChar *)result.unicode();
|
|
||||||
uint uc = 0;
|
|
||||||
+ uint min_uc = 0;
|
|
||||||
int need = 0;
|
|
||||||
int error = -1;
|
|
||||||
uchar ch;
|
|
||||||
@@ -5822,6 +5823,12 @@
|
|
||||||
unsigned short low = uc%0x400 + 0xdc00;
|
|
||||||
*qch++ = QChar(high);
|
|
||||||
*qch++ = QChar(low);
|
|
||||||
+ } else if (uc < min_uc || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
|
|
||||||
+ // overlong seqence, UTF16 surrogate or BOM
|
|
||||||
+ i = error;
|
|
||||||
+ qch = addOne(qch, result);
|
|
||||||
+ *qch++ = QChar(0xdbff);
|
|
||||||
+ *qch++ = QChar(0xde00+((uchar)utf8[i]));
|
|
||||||
} else {
|
|
||||||
*qch++ = uc;
|
|
||||||
}
|
|
||||||
@@ -5844,14 +5851,17 @@
|
|
||||||
uc = ch & 0x1f;
|
|
||||||
need = 1;
|
|
||||||
error = i;
|
|
||||||
+ min_uc = 0x80;
|
|
||||||
} else if ((ch & 0xf0) == 0xe0) {
|
|
||||||
uc = ch & 0x0f;
|
|
||||||
need = 2;
|
|
||||||
error = i;
|
|
||||||
+ min_uc = 0x800;
|
|
||||||
} else if ((ch&0xf8) == 0xf0) {
|
|
||||||
uc = ch & 0x07;
|
|
||||||
need = 3;
|
|
||||||
error = i;
|
|
||||||
+ min_uc = 0x10000;
|
|
||||||
} else {
|
|
||||||
// Error
|
|
||||||
qch = addOne(qch, result);
|
|
@ -1,424 +0,0 @@
|
|||||||
qt-bugs@ issue : none
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
This patch adds support for window types used for compositing (popup menu, dropdown menu,
|
|
||||||
tooltip, combobox, dnd).
|
|
||||||
|
|
||||||
--- src/kernel/qdnd_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/kernel/qdnd_x11.cpp 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -261,6 +261,7 @@ public:
|
|
||||||
QWidget(QApplication::desktop()->screen( screen ),
|
|
||||||
0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ), oldpmser( 0 ), oldbmser( 0 )
|
|
||||||
{
|
|
||||||
+ x11SetWindowType( X11WindowTypeDND );
|
|
||||||
}
|
|
||||||
|
|
||||||
void setPixmap(QPixmap pm, QPoint hot)
|
|
||||||
@@ -1221,6 +1222,7 @@ void QDragManager::move( const QPoint &
|
|
||||||
// recreate the pixmap on the new screen...
|
|
||||||
delete qt_xdnd_deco;
|
|
||||||
qt_xdnd_deco = new QShapedPixmapWidget( screen );
|
|
||||||
+ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget());
|
|
||||||
if (!QWidget::mouseGrabber()) {
|
|
||||||
updatePixmap();
|
|
||||||
qt_xdnd_deco->grabMouse();
|
|
||||||
@@ -1774,6 +1776,7 @@ bool QDragManager::drag( QDragObject * o
|
|
||||||
|
|
||||||
dragSource = (QWidget *)(object->parent());
|
|
||||||
|
|
||||||
+ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget());
|
|
||||||
qApp->installEventFilter( this );
|
|
||||||
qt_xdnd_source_current_time = qt_x_time;
|
|
||||||
XSetSelectionOwner( QPaintDevice::x11AppDisplay(), qt_xdnd_selection,
|
|
||||||
--- src/kernel/qapplication_x11.cpp.sav 2007-05-29 16:24:58.000000000 +0200
|
|
||||||
+++ src/kernel/qapplication_x11.cpp 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -268,6 +268,11 @@ Atom qt_net_wm_window_type_menu = 0;
|
|
||||||
Atom qt_net_wm_window_type_utility = 0;
|
|
||||||
Atom qt_net_wm_window_type_splash = 0;
|
|
||||||
Atom qt_net_wm_window_type_override = 0; // KDE extension
|
|
||||||
+Atom qt_net_wm_window_type_dropdown_menu = 0;
|
|
||||||
+Atom qt_net_wm_window_type_popup_menu = 0;
|
|
||||||
+Atom qt_net_wm_window_type_tooltip = 0;
|
|
||||||
+Atom qt_net_wm_window_type_combo = 0;
|
|
||||||
+Atom qt_net_wm_window_type_dnd = 0;
|
|
||||||
Atom qt_net_wm_frame_strut = 0; // KDE extension
|
|
||||||
Atom qt_net_wm_state_stays_on_top = 0; // KDE extension
|
|
||||||
Atom qt_net_wm_pid = 0;
|
|
||||||
@@ -1920,6 +1925,11 @@ void qt_init_internal( int *argcptr, cha
|
|
||||||
qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_UTILITY", &qt_net_wm_window_type_utility );
|
|
||||||
qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_SPLASH", &qt_net_wm_window_type_splash );
|
|
||||||
qt_x11_intern_atom( "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", &qt_net_wm_window_type_override );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", &qt_net_wm_window_type_dropdown_menu );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_POPUP_MENU", &qt_net_wm_window_type_popup_menu );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_TOOLTIP", &qt_net_wm_window_type_tooltip );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_COMBO", &qt_net_wm_window_type_combo );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DND", &qt_net_wm_window_type_dnd );
|
|
||||||
qt_x11_intern_atom( "_KDE_NET_WM_FRAME_STRUT", &qt_net_wm_frame_strut );
|
|
||||||
qt_x11_intern_atom( "_NET_WM_STATE_STAYS_ON_TOP",
|
|
||||||
&qt_net_wm_state_stays_on_top );
|
|
||||||
--- src/kernel/qwidget_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/kernel/qwidget_x11.cpp 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -125,6 +125,11 @@ extern Atom qt_net_wm_window_type_menu;
|
|
||||||
extern Atom qt_net_wm_window_type_utility;
|
|
||||||
extern Atom qt_net_wm_window_type_splash;
|
|
||||||
extern Atom qt_net_wm_window_type_override;
|
|
||||||
+extern Atom qt_net_wm_window_type_dropdown_menu;
|
|
||||||
+extern Atom qt_net_wm_window_type_popup_menu;
|
|
||||||
+extern Atom qt_net_wm_window_type_combo;
|
|
||||||
+extern Atom qt_net_wm_window_type_dnd;
|
|
||||||
+extern Atom qt_net_wm_window_type_tooltip;
|
|
||||||
extern Atom qt_net_wm_pid;
|
|
||||||
extern Atom qt_net_wm_user_time;
|
|
||||||
extern Atom qt_enlightenment_desktop;
|
|
||||||
@@ -448,10 +453,6 @@ void QWidget::create( WId window, bool i
|
|
||||||
x11Colormap() );
|
|
||||||
#endif // QT_NO_XFTFREETYPE
|
|
||||||
|
|
||||||
- // NET window types
|
|
||||||
- long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 };
|
|
||||||
- int curr_wintype = 0;
|
|
||||||
-
|
|
||||||
// NET window states
|
|
||||||
long net_winstates[6] = { 0, 0, 0, 0, 0, 0 };
|
|
||||||
int curr_winstate = 0;
|
|
||||||
@@ -473,7 +474,6 @@ void QWidget::create( WId window, bool i
|
|
||||||
if ( testWFlags(WStyle_Splash) ) {
|
|
||||||
if (qt_net_supports(qt_net_wm_window_type_splash)) {
|
|
||||||
clearWFlags( WX11BypassWM );
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash;
|
|
||||||
} else {
|
|
||||||
setWFlags( WX11BypassWM | WStyle_Tool | WStyle_NoBorder );
|
|
||||||
}
|
|
||||||
@@ -482,27 +482,22 @@ void QWidget::create( WId window, bool i
|
|
||||||
mwmhints.decorations = 0L;
|
|
||||||
mwmhints.flags |= (1L << 1); // MWM_HINTS_DECORATIONS
|
|
||||||
|
|
||||||
- if ( testWFlags( WStyle_NoBorder ) ) {
|
|
||||||
- // override netwm type - quick and easy for KDE noborder
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_override;
|
|
||||||
- } else {
|
|
||||||
- if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) {
|
|
||||||
- mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER
|
|
||||||
- mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH
|
|
||||||
- }
|
|
||||||
+ if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) {
|
|
||||||
+ mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER
|
|
||||||
+ mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if ( testWFlags( WStyle_Title ) )
|
|
||||||
- mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE
|
|
||||||
+ if ( testWFlags( WStyle_Title ) )
|
|
||||||
+ mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE
|
|
||||||
|
|
||||||
- if ( testWFlags( WStyle_SysMenu ) )
|
|
||||||
- mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU
|
|
||||||
+ if ( testWFlags( WStyle_SysMenu ) )
|
|
||||||
+ mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU
|
|
||||||
|
|
||||||
- if ( testWFlags( WStyle_Minimize ) )
|
|
||||||
- mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE
|
|
||||||
+ if ( testWFlags( WStyle_Minimize ) )
|
|
||||||
+ mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE
|
|
||||||
|
|
||||||
- if ( testWFlags( WStyle_Maximize ) )
|
|
||||||
- mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE
|
|
||||||
- }
|
|
||||||
+ if ( testWFlags( WStyle_Maximize ) )
|
|
||||||
+ mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE
|
|
||||||
|
|
||||||
if (testWFlags(WStyle_Tool)) {
|
|
||||||
wsa.save_under = True;
|
|
||||||
@@ -522,23 +517,6 @@ void QWidget::create( WId window, bool i
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- // ### need a better way to do this
|
|
||||||
- if (inherits("QPopupMenu")) {
|
|
||||||
- // menu netwm type
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu;
|
|
||||||
- } else if (inherits("QToolBar")) {
|
|
||||||
- // toolbar netwm type
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar;
|
|
||||||
- } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) {
|
|
||||||
- // utility netwm type
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (dialog) // dialog netwm type
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog;
|
|
||||||
- // normal netwm type - default
|
|
||||||
- net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal;
|
|
||||||
-
|
|
||||||
// stays on top
|
|
||||||
if (testWFlags(WStyle_StaysOnTop)) {
|
|
||||||
net_winstates[curr_winstate++] = qt_net_wm_state_above;
|
|
||||||
@@ -573,6 +551,7 @@ void QWidget::create( WId window, bool i
|
|
||||||
wsa.save_under = True;
|
|
||||||
XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder,
|
|
||||||
&wsa );
|
|
||||||
+ x11SetWindowType();
|
|
||||||
} else if ( topLevel && !desktop ) { // top-level widget
|
|
||||||
QWidget *p = parentWidget(); // real parent
|
|
||||||
if (p)
|
|
||||||
@@ -632,12 +611,7 @@ void QWidget::create( WId window, bool i
|
|
||||||
else
|
|
||||||
XDeleteProperty(dpy, id, qt_xa_motif_wm_hints);
|
|
||||||
|
|
||||||
- // set _NET_WM_WINDOW_TYPE
|
|
||||||
- if (curr_wintype > 0)
|
|
||||||
- XChangeProperty(dpy, id, qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace,
|
|
||||||
- (unsigned char *) net_wintypes, curr_wintype);
|
|
||||||
- else
|
|
||||||
- XDeleteProperty(dpy, id, qt_net_wm_window_type);
|
|
||||||
+ x11SetWindowType();
|
|
||||||
|
|
||||||
// set _NET_WM_WINDOW_STATE
|
|
||||||
if (curr_winstate > 0)
|
|
||||||
@@ -896,6 +870,64 @@ void QWidget::reparentSys( QWidget *pare
|
|
||||||
setMouseTracking(mouse_tracking);
|
|
||||||
}
|
|
||||||
|
|
||||||
+// Sets the EWMH (netwm) window type. Needed as a separate function
|
|
||||||
+// because create() may be too soon in some cases.
|
|
||||||
+void QWidget::x11SetWindowType( X11WindowType type )
|
|
||||||
+{
|
|
||||||
+ // NET window types
|
|
||||||
+ long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 };
|
|
||||||
+ int curr_wintype = 0;
|
|
||||||
+ if( testWFlags(WType_Desktop))
|
|
||||||
+ return;
|
|
||||||
+ if( type == X11WindowTypeSelect ) {
|
|
||||||
+ if ( testWFlags(WStyle_Splash)) {
|
|
||||||
+ if (qt_net_supports(qt_net_wm_window_type_splash)) {
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash;
|
|
||||||
+ }
|
|
||||||
+ } else if (inherits("QToolBar")) {
|
|
||||||
+ // toolbar netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar;
|
|
||||||
+ } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) {
|
|
||||||
+ // utility netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility;
|
|
||||||
+ } else if (testWFlags(WType_Dialog)) {
|
|
||||||
+ // dialog netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog;
|
|
||||||
+ }
|
|
||||||
+ } else if( type == X11WindowTypeCombo ) {
|
|
||||||
+ // combo netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_combo;
|
|
||||||
+ } else if( type == X11WindowTypeDND ) {
|
|
||||||
+ // dnd netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dnd;
|
|
||||||
+ } else if( type == X11WindowTypeDropdown ) {
|
|
||||||
+ // dropdown netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dropdown_menu;
|
|
||||||
+ } else if( type == X11WindowTypePopup ) {
|
|
||||||
+ // popup netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_popup_menu;
|
|
||||||
+ } else if( type == X11WindowTypeMenu ) {
|
|
||||||
+ // menu netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu;
|
|
||||||
+ } else if( type == X11WindowTypeTooltip ) {
|
|
||||||
+ // tooltip netwm type
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_tooltip;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // normal netwm type - default
|
|
||||||
+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal;
|
|
||||||
+ // set _NET_WM_WINDOW_TYPE
|
|
||||||
+ if (curr_wintype > 0)
|
|
||||||
+ XChangeProperty(x11Display(), winId(), qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace,
|
|
||||||
+ (unsigned char *) net_wintypes, curr_wintype);
|
|
||||||
+ else
|
|
||||||
+ XDeleteProperty(x11Display(), winId(), qt_net_wm_window_type);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void QWidget::x11SetWindowTransient( QWidget* parent )
|
|
||||||
+{
|
|
||||||
+ XSetTransientForHint( x11Display(), winId(), parent->winId());
|
|
||||||
+}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Translates the widget coordinate \a pos to global screen
|
|
||||||
--- src/kernel/qwidget.h.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/kernel/qwidget.h 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -464,7 +464,19 @@ public:
|
|
||||||
CGContextRef macCGContext(bool clipped=TRUE) const;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
-
|
|
||||||
+#if defined(Q_WS_X11)
|
|
||||||
+ enum X11WindowType {
|
|
||||||
+ X11WindowTypeSelect,
|
|
||||||
+ X11WindowTypeCombo,
|
|
||||||
+ X11WindowTypeDND,
|
|
||||||
+ X11WindowTypeTooltip,
|
|
||||||
+ X11WindowTypeMenu, // torn-off
|
|
||||||
+ X11WindowTypeDropdown,
|
|
||||||
+ X11WindowTypePopup
|
|
||||||
+ };
|
|
||||||
+ void x11SetWindowType( X11WindowType type = X11WindowTypeSelect );
|
|
||||||
+ void x11SetWindowTransient( QWidget* parent );
|
|
||||||
+#endif
|
|
||||||
void setWindowOpacity(double level);
|
|
||||||
double windowOpacity() const;
|
|
||||||
|
|
||||||
--- src/dialogs/qdialog.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/dialogs/qdialog.cpp 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -668,10 +668,6 @@ bool QDialog::event( QEvent *e )
|
|
||||||
Geometry management.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
-#if defined(Q_WS_X11)
|
|
||||||
-extern "C" { int XSetTransientForHint( Display *, unsigned long, unsigned long ); }
|
|
||||||
-#endif // Q_WS_X11
|
|
||||||
-
|
|
||||||
/*!
|
|
||||||
Shows the dialog as a \link #modeless modeless \endlink dialog.
|
|
||||||
Control returns immediately to the calling code.
|
|
||||||
@@ -705,7 +701,7 @@ void QDialog::show()
|
|
||||||
&& qApp->mainWidget() && qApp->mainWidget()->isVisible()
|
|
||||||
&& !qApp->mainWidget()->isMinimized()) {
|
|
||||||
// make sure the transient for hint is set properly for modal dialogs
|
|
||||||
- XSetTransientForHint( x11Display(), winId(), qApp->mainWidget()->winId() );
|
|
||||||
+ x11SetWindowTransient( qApp->mainWidget());
|
|
||||||
}
|
|
||||||
#endif // Q_WS_X11
|
|
||||||
|
|
||||||
--- src/widgets/qtooltip.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/widgets/qtooltip.cpp 2007-05-31 10:30:58.000000000 +0200
|
|
||||||
@@ -72,6 +72,7 @@ public:
|
|
||||||
polish();
|
|
||||||
setText(text);
|
|
||||||
adjustSize();
|
|
||||||
+ x11SetWindowType( X11WindowTypeTooltip );
|
|
||||||
}
|
|
||||||
void setWidth( int w ) { resize( sizeForWidth( w ) ); }
|
|
||||||
};
|
|
||||||
@@ -528,6 +529,10 @@ void QTipManager::showTip()
|
|
||||||
if (!widget)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+ label->x11SetWindowTransient( widget->topLevelWidget());
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifdef Q_WS_MAC
|
|
||||||
QRect screen = QApplication::desktop()->availableGeometry( scr );
|
|
||||||
#else
|
|
||||||
--- src/widgets/qcombobox.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/widgets/qcombobox.cpp 2007-05-31 10:49:13.000000000 +0200
|
|
||||||
@@ -389,12 +389,8 @@ public:
|
|
||||||
inline QListBox * listBox() { return lBox; }
|
|
||||||
inline QComboBoxPopup * popup() { return pop; }
|
|
||||||
void updateLinedGeometry();
|
|
||||||
-
|
|
||||||
- void setListBox( QListBox *l ) { lBox = l ; usingLBox = TRUE;
|
|
||||||
- l->setMouseTracking( TRUE );}
|
|
||||||
-
|
|
||||||
- void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE )
|
|
||||||
- { pop = pm; if(isPopup) usingLBox = FALSE; }
|
|
||||||
+ void setListBox( QListBox *l );
|
|
||||||
+ void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE );
|
|
||||||
|
|
||||||
int current;
|
|
||||||
int maxCount;
|
|
||||||
@@ -440,6 +436,30 @@ void QComboBoxData::updateLinedGeometry(
|
|
||||||
ed->setGeometry( r );
|
|
||||||
}
|
|
||||||
|
|
||||||
+void QComboBoxData::setListBox( QListBox *l )
|
|
||||||
+{
|
|
||||||
+ lBox = l;
|
|
||||||
+ usingLBox = TRUE;
|
|
||||||
+ l->setMouseTracking( TRUE );
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+ l->x11SetWindowType( QWidget::X11WindowTypeCombo );
|
|
||||||
+ l->x11SetWindowTransient( combo->topLevelWidget());
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void QComboBoxData::setPopupMenu( QComboBoxPopup * pm, bool isPopup )
|
|
||||||
+{
|
|
||||||
+ pop = pm;
|
|
||||||
+ if(isPopup)
|
|
||||||
+ usingLBox = FALSE;
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+ if( pm ) {
|
|
||||||
+ pm->x11SetWindowType( QWidget::X11WindowTypeCombo );
|
|
||||||
+ pm->x11SetWindowTransient( combo->topLevelWidget());
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static inline bool checkInsertIndex( const char *method, const char * name,
|
|
||||||
int count, int *index)
|
|
||||||
{
|
|
||||||
--- src/widgets/qpopupmenu.cpp.sav 2007-05-25 18:56:23.000000000 +0200
|
|
||||||
+++ src/widgets/qpopupmenu.cpp 2007-05-31 11:09:22.000000000 +0200
|
|
||||||
@@ -298,6 +298,9 @@ QPopupMenu::QPopupMenu( QWidget *parent,
|
|
||||||
connectModalRecursionSafety = 0;
|
|
||||||
|
|
||||||
setFocusPolicy( StrongFocus );
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+ x11SetWindowType( X11WindowTypePopup );
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
@@ -537,6 +540,29 @@ void QPopupMenu::popup( const QPoint &po
|
|
||||||
emit aboutToShow();
|
|
||||||
updateSize(TRUE);
|
|
||||||
}
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+#ifndef QT_NO_MENUBAR
|
|
||||||
+ QMenuData *top = this; // find top level
|
|
||||||
+ while ( top->parentMenu )
|
|
||||||
+ top = top->parentMenu;
|
|
||||||
+ if( top->isMenuBar )
|
|
||||||
+ x11SetWindowType( X11WindowTypeDropdown );
|
|
||||||
+ if( parentMenu && parentMenu->isMenuBar )
|
|
||||||
+ x11SetWindowTransient( static_cast< QMenuBar* >( parentMenu )->topLevelWidget());
|
|
||||||
+#endif
|
|
||||||
+ if( parentMenu && !parentMenu->isMenuBar )
|
|
||||||
+ x11SetWindowTransient( static_cast< QPopupMenu* >( parentMenu ));
|
|
||||||
+ if( !parentMenu ) {
|
|
||||||
+ // hackish ... try to find the main window related to this popup
|
|
||||||
+ QWidget* parent = parentWidget() ? parentWidget()->topLevelWidget() : NULL;
|
|
||||||
+ if( parent == NULL )
|
|
||||||
+ parent = QApplication::widgetAt( pos );
|
|
||||||
+ if( parent == NULL )
|
|
||||||
+ parent = qApp->activeWindow();
|
|
||||||
+ if( parent != NULL )
|
|
||||||
+ x11SetWindowTransient( parent );
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
int sw = screen.width(); // screen width
|
|
||||||
int sh = screen.height(); // screen height
|
|
||||||
@@ -1390,6 +1416,13 @@ void QPopupMenu::hide()
|
|
||||||
#if defined(QT_ACCESSIBILITY_SUPPORT)
|
|
||||||
QAccessible::updateAccessibility( this, 0, QAccessible::PopupMenuEnd );
|
|
||||||
#endif
|
|
||||||
+#ifndef QT_NO_MENUBAR
|
|
||||||
+ QMenuData *top = this; // find top level
|
|
||||||
+ while ( top->parentMenu )
|
|
||||||
+ top = top->parentMenu;
|
|
||||||
+ if( top->isMenuBar )
|
|
||||||
+ x11SetWindowType( X11WindowTypePopup ); // reset
|
|
||||||
+#endif
|
|
||||||
parentMenu = 0;
|
|
||||||
hidePopups();
|
|
||||||
QWidget::hide();
|
|
||||||
@@ -2713,6 +2746,9 @@ void QPopupMenu::toggleTearOff()
|
|
||||||
geometry().topLeft(), FALSE );
|
|
||||||
p->mitems->setAutoDelete( FALSE );
|
|
||||||
p->tornOff = TRUE;
|
|
||||||
+#ifdef Q_WS_X11
|
|
||||||
+ p->x11SetWindowType( X11WindowTypeMenu );
|
|
||||||
+#endif
|
|
||||||
for ( QMenuItemListIt it( *mitems ); it.current(); ++it ) {
|
|
||||||
if ( it.current()->id() != QMenuData::d->aInt && !it.current()->widget() )
|
|
||||||
p->mitems->append( it.current() );
|
|
@ -1,311 +0,0 @@
|
|||||||
qt-bugs@ issue : none
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
Support for _NET_WM_SYNC_REQUEST - allows the WM to find out when the app
|
|
||||||
finished one redraw - less flicker during resize and with compositing
|
|
||||||
also when opening a window.
|
|
||||||
|
|
||||||
--- src/kernel/qwidget.h.sav 2007-06-22 14:14:05.000000000 +0200
|
|
||||||
+++ src/kernel/qwidget.h 2007-06-23 11:53:39.000000000 +0200
|
|
||||||
@@ -586,6 +586,14 @@ private:
|
|
||||||
void destroyInputContext();
|
|
||||||
void focusInputContext();
|
|
||||||
void checkChildrenDnd();
|
|
||||||
+
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ void createSyncCounter();
|
|
||||||
+ void destroySyncCounter();
|
|
||||||
+ void incrementSyncCounter();
|
|
||||||
+ void handleSyncRequest( void* ev );
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#elif defined(Q_WS_MAC)
|
|
||||||
uint own_id : 1, macDropEnabled : 1;
|
|
||||||
EventHandlerRef window_event;
|
|
||||||
@@ -962,8 +970,12 @@ struct Q_EXPORT QTLWExtra {
|
|
||||||
uint uspos : 1; // User defined position
|
|
||||||
uint ussize : 1; // User defined size
|
|
||||||
#if defined(QT_NO_IM_EXTENSIONS)
|
|
||||||
void *xic; // Input Context
|
|
||||||
#endif
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ ulong syncCounter;
|
|
||||||
+ uint syncRequestValue[2];
|
|
||||||
+#endif
|
|
||||||
#endif
|
|
||||||
#if defined(Q_WS_MAC)
|
|
||||||
WindowGroupRef group;
|
|
||||||
--- src/kernel/qt_x11_p.h.sav 2007-02-23 14:01:18.000000000 +0100
|
|
||||||
+++ src/kernel/qt_x11_p.h 2007-06-23 11:53:39.000000000 +0200
|
|
||||||
@@ -174,6 +174,11 @@ extern "C" {
|
|
||||||
#endif // QT_NO_XRENDER
|
|
||||||
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+# include <X11/extensions/sync.h>
|
|
||||||
+#endif // QT_NO_XSYNC
|
|
||||||
+
|
|
||||||
+
|
|
||||||
#ifndef QT_NO_XKB
|
|
||||||
# include <X11/XKBlib.h>
|
|
||||||
#endif // QT_NO_XKB
|
|
||||||
--- src/kernel/qwidget_x11.cpp.sav 2007-04-16 13:47:26.000000000 +0200
|
|
||||||
+++ src/kernel/qwidget_x11.cpp 2007-06-23 19:48:44.000000000 +0200
|
|
||||||
@@ -87,6 +87,12 @@ static QWidget *keyboardGrb = 0;
|
|
||||||
extern Time qt_x_time;
|
|
||||||
extern Time qt_x_user_time;
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+extern Atom qt_net_wm_sync_request_counter;
|
|
||||||
+extern Atom qt_net_wm_sync_request;
|
|
||||||
+extern bool qt_use_xsync;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
// defined in qfont_x11.cpp
|
|
||||||
extern bool qt_has_xft;
|
|
||||||
|
|
||||||
@@ -595,11 +601,14 @@ void QWidget::create( WId window, bool i
|
|
||||||
|
|
||||||
XResizeWindow( dpy, id, crect.width(), crect.height() );
|
|
||||||
XStoreName( dpy, id, qAppName() );
|
|
||||||
- Atom protocols[4];
|
|
||||||
+ Atom protocols[5];
|
|
||||||
int n = 0;
|
|
||||||
protocols[n++] = qt_wm_delete_window; // support del window protocol
|
|
||||||
protocols[n++] = qt_wm_take_focus; // support take focus window protocol
|
|
||||||
protocols[n++] = qt_net_wm_ping; // support _NET_WM_PING protocol
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ protocols[n++] = qt_net_wm_sync_request;// support the _NET_WM_SYNC_REQUEST protocol
|
|
||||||
+#endif
|
|
||||||
if ( testWFlags( WStyle_ContextHelp ) )
|
|
||||||
protocols[n++] = qt_net_wm_context_help;
|
|
||||||
XSetWMProtocols( dpy, id, protocols, n );
|
|
||||||
@@ -625,6 +634,14 @@ void QWidget::create( WId window, bool i
|
|
||||||
XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
|
|
||||||
(unsigned char *) &curr_pid, 1);
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ // set _NET_WM_SYNC_COUNTER
|
|
||||||
+ createSyncCounter();
|
|
||||||
+ long counterVal = topData()->syncCounter;
|
|
||||||
+ XChangeProperty( dpy, id, qt_net_wm_sync_request_counter, XA_CARDINAL, 32, PropModeReplace,
|
|
||||||
+ (unsigned char*) &counterVal, 1);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
// when we create a toplevel widget, the frame strut should be dirty
|
|
||||||
fstrut_dirty = 1;
|
|
||||||
|
|
||||||
@@ -720,6 +737,9 @@ void QWidget::destroy( bool destroyWindo
|
|
||||||
if ( destroyWindow )
|
|
||||||
qt_XDestroyWindow( this, x11Display(), winid );
|
|
||||||
}
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ destroySyncCounter();
|
|
||||||
+#endif
|
|
||||||
setWinId( 0 );
|
|
||||||
|
|
||||||
extern void qPRCleanup( QWidget *widget ); // from qapplication_x11.cpp
|
|
||||||
@@ -769,6 +789,10 @@ void QWidget::reparentSys( QWidget *pare
|
|
||||||
destroyInputContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ destroySyncCounter();
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
if ( isTopLevel() || !parent ) // we are toplevel, or reparenting to toplevel
|
|
||||||
topData()->parentWinId = 0;
|
|
||||||
|
|
||||||
@@ -2456,8 +2480,13 @@ void QWidget::createTLSysExtra()
|
|
||||||
{
|
|
||||||
#if defined(QT_NO_IM_EXTENSIONS)
|
|
||||||
// created lazily
|
|
||||||
extra->topextra->xic = 0;
|
|
||||||
#endif
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ extra->topextra->syncCounter = 0;
|
|
||||||
+ extra->topextra->syncRequestValue[0] = 0;
|
|
||||||
+ extra->topextra->syncRequestValue[1] = 0;
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void QWidget::deleteTLSysExtra()
|
|
||||||
@@ -2501,6 +2530,51 @@ void QWidget::checkChildrenDnd()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+// create a window's XSyncCounter
|
|
||||||
+void QWidget::createSyncCounter()
|
|
||||||
+{
|
|
||||||
+ if( !qt_use_xsync || !isTopLevel() || topData()->syncCounter )
|
|
||||||
+ return;
|
|
||||||
+ XSyncValue zero;
|
|
||||||
+ XSyncIntToValue( &zero, 0 );
|
|
||||||
+ topData()->syncCounter = XSyncCreateCounter( x11Display(), zero );
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+// destroy a window's XSyncCounter
|
|
||||||
+void QWidget::destroySyncCounter()
|
|
||||||
+{
|
|
||||||
+ if( !qt_use_xsync || !extra || !extra->topextra
|
|
||||||
+ || !extra->topextra->syncCounter )
|
|
||||||
+ return;
|
|
||||||
+ XSyncDestroyCounter( x11Display(), extra->topextra->syncCounter );
|
|
||||||
+ extra->topextra->syncCounter = 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+// increment a window's XSyncCounter
|
|
||||||
+void QWidget::incrementSyncCounter()
|
|
||||||
+{
|
|
||||||
+ if( qt_use_xsync && topData()->syncCounter &&
|
|
||||||
+ !(topData()->syncRequestValue[0] == 0 &&
|
|
||||||
+ topData()->syncRequestValue[1] == 0) ) {
|
|
||||||
+ XSyncValue val;
|
|
||||||
+ XSyncIntsToValue( &val, topData()->syncRequestValue[ 0 ], topData()->syncRequestValue[ 1 ] );
|
|
||||||
+ XSyncSetCounter( x11Display(), topData()->syncCounter, val );
|
|
||||||
+ topData()->syncRequestValue[0] = topData()->syncRequestValue[1] = 0;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+// handle _NET_WM_SYNC_REQUEST
|
|
||||||
+void QWidget::handleSyncRequest( void* ev )
|
|
||||||
+{
|
|
||||||
+ XEvent* xev = (XEvent*)ev;
|
|
||||||
+ topData()->syncRequestValue[ 0 ] = xev->xclient.data.l[ 2 ];
|
|
||||||
+ topData()->syncRequestValue[ 1 ] = xev->xclient.data.l[ 3 ];
|
|
||||||
+}
|
|
||||||
+#endif // QT_NO_XSYNC
|
|
||||||
+
|
|
||||||
+
|
|
||||||
/*!
|
|
||||||
\property QWidget::acceptDrops
|
|
||||||
\brief whether drop events are enabled for this widget
|
|
||||||
--- src/kernel/qapplication_x11.cpp.sav 2007-04-16 13:47:26.000000000 +0200
|
|
||||||
+++ src/kernel/qapplication_x11.cpp 2007-06-23 19:49:15.000000000 +0200
|
|
||||||
@@ -285,6 +285,11 @@ Atom *qt_net_supported_list = 0;
|
|
||||||
Window *qt_net_virtual_root_list = 0;
|
|
||||||
|
|
||||||
|
|
||||||
+// X11 SYNC support
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+Atom qt_net_wm_sync_request_counter = 0;
|
|
||||||
+Atom qt_net_wm_sync_request = 0;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
// client leader window
|
|
||||||
Window qt_x11_wm_client_leader = 0;
|
|
||||||
@@ -309,6 +314,13 @@ static int xrandr_eventbase;
|
|
||||||
// Display
|
|
||||||
Q_EXPORT bool qt_use_xrender = FALSE;
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+// True if SYNC extension exists on the connected display
|
|
||||||
+bool qt_use_xsync = FALSE;
|
|
||||||
+static int xsync_eventbase;
|
|
||||||
+static int xsync_errorbase;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
// modifier masks for alt/meta - detected when the application starts
|
|
||||||
static long qt_alt_mask = 0;
|
|
||||||
static long qt_meta_mask = 0;
|
|
||||||
@@ -1938,6 +1950,11 @@ void qt_init_internal( int *argcptr, cha
|
|
||||||
qt_x11_intern_atom( "UTF8_STRING", &qt_utf8_string );
|
|
||||||
qt_x11_intern_atom( "_SGI_DESKS_MANAGER", &qt_sgi_desks_manager );
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST_COUNTER", &qt_net_wm_sync_request_counter );
|
|
||||||
+ qt_x11_intern_atom( "_NET_WM_SYNC_REQUEST", &qt_net_wm_sync_request );
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
qt_xdnd_setup();
|
|
||||||
qt_x11_motifdnd_init();
|
|
||||||
|
|
||||||
@@ -1974,6 +1991,15 @@ void qt_init_internal( int *argcptr, cha
|
|
||||||
}
|
|
||||||
#endif // QT_NO_XRENDER
|
|
||||||
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ // Try to initialize SYNC extension on the connected display
|
|
||||||
+ int xsync_major, xsync_minor;
|
|
||||||
+ if ( XSyncQueryExtension( appDpy, &xsync_eventbase, &xsync_errorbase ) &&
|
|
||||||
+ XSyncInitialize( appDpy, &xsync_major, &xsync_minor ) ) {
|
|
||||||
+ qt_use_xsync = TRUE;
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifndef QT_NO_XKB
|
|
||||||
// If XKB is detected, set the GrabsUseXKBState option so input method
|
|
||||||
// compositions continue to work (ie. deadkeys)
|
|
||||||
@@ -3141,6 +3167,10 @@ int QApplication::x11ClientMessage(QWidg
|
|
||||||
XSendEvent( event->xclient.display, event->xclient.window,
|
|
||||||
False, SubstructureNotifyMask|SubstructureRedirectMask, event );
|
|
||||||
}
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ } else if (a == qt_net_wm_sync_request ) {
|
|
||||||
+ widget->handleSyncRequest( event );
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
} else if ( event->xclient.message_type == qt_qt_scrolldone ) {
|
|
||||||
widget->translateScrollDoneEvent(event);
|
|
||||||
@@ -5681,6 +5711,21 @@ bool QETWidget::translateScrollDoneEvent
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(Q_C_CALLBACKS)
|
|
||||||
+extern "C" {
|
|
||||||
+#endif
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+static Bool qt_net_wm_sync_request_scanner(Display*, XEvent* event, XPointer arg)
|
|
||||||
+{
|
|
||||||
+ return (event->type == ClientMessage && event->xclient.window == *(Window*)arg
|
|
||||||
+ && event->xclient.message_type == qt_wm_protocols
|
|
||||||
+ && event->xclient.data.l[ 0 ] == qt_net_wm_sync_request );
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#if defined(Q_C_CALLBACKS)
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
//
|
|
||||||
// ConfigureNotify (window move and resize) event translation
|
|
||||||
@@ -5712,6 +5757,7 @@ bool QETWidget::translateConfigEvent( co
|
|
||||||
if (! extra || extra->compress_events) {
|
|
||||||
// ConfigureNotify compression for faster opaque resizing
|
|
||||||
XEvent otherEvent;
|
|
||||||
+ int compressed_configs = 0;
|
|
||||||
while ( XCheckTypedWindowEvent( x11Display(), winId(), ConfigureNotify,
|
|
||||||
&otherEvent ) ) {
|
|
||||||
if ( qt_x11EventFilter( &otherEvent ) )
|
|
||||||
@@ -5732,7 +5778,18 @@ bool QETWidget::translateConfigEvent( co
|
|
||||||
newCPos.ry() = otherEvent.xconfigure.y +
|
|
||||||
otherEvent.xconfigure.border_width;
|
|
||||||
}
|
|
||||||
+ ++compressed_configs;
|
|
||||||
+ }
|
|
||||||
+#ifndef QT_NO_XSYNC
|
|
||||||
+ // _NET_WM_SYNC_REQUEST compression
|
|
||||||
+ Window wid = winId();
|
|
||||||
+ while ( compressed_configs &&
|
|
||||||
+ XCheckIfEvent( x11Display(), &otherEvent,
|
|
||||||
+ qt_net_wm_sync_request_scanner, (XPointer)&wid ) ) {
|
|
||||||
+ handleSyncRequest( (void*)&otherEvent );
|
|
||||||
+ --compressed_configs;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
QRect cr ( geometry() );
|
|
||||||
@@ -5786,6 +5843,8 @@ bool QETWidget::translateConfigEvent( co
|
|
||||||
repaint( !testWFlags(WResizeNoErase) || transbg );
|
|
||||||
}
|
|
||||||
|
|
||||||
+ incrementSyncCounter();
|
|
||||||
+
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
qt-bugs@ issue : 153183
|
|
||||||
bugs.kde.org number :
|
|
||||||
applied: yes
|
|
||||||
author: woebbeking@kde.org
|
|
||||||
|
|
||||||
In Qt 3.3.8 QDateTime::fromString() has an off by one regression:
|
|
||||||
- Thu Mar 3 19:45:58 2005 -> invalid QDateTime
|
|
||||||
- Thu Mar 13 19:45:58 2005 -> Mar 1 2005
|
|
||||||
|
|
||||||
--- src/tools/qdatetime.cpp
|
|
||||||
+++ src/tools/qdatetime.cpp
|
|
||||||
@@ -2485,7 +2485,7 @@
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- int day = s.mid( firstSpace + 4, 2 ).simplifyWhiteSpace().toInt();
|
|
||||||
+ int day = s.mid( firstSpace + 5, 2 ).simplifyWhiteSpace().toInt();
|
|
||||||
int year = s.right( 4 ).toInt();
|
|
||||||
QDate date( year, month, day );
|
|
||||||
QTime time;
|
|
@ -1,80 +0,0 @@
|
|||||||
qt-bugs@ issue : none
|
|
||||||
bugs.kde.org number : none
|
|
||||||
applied: no
|
|
||||||
author: Lubos Lunak <l.lunak@kde.org>
|
|
||||||
|
|
||||||
This patch makes override-redirect windows (popup menu, dropdown menu,
|
|
||||||
tooltip, combobox, etc.) also have more window properties like WM_CLASS,
|
|
||||||
so they can be used when compositing.
|
|
||||||
|
|
||||||
--- src/kernel/qwidget_x11.cpp.sav 2007-06-25 10:36:42.000000000 +0200
|
|
||||||
+++ src/kernel/qwidget_x11.cpp 2007-10-02 15:30:13.000000000 +0200
|
|
||||||
@@ -557,7 +557,10 @@ void QWidget::create( WId window, bool i
|
|
||||||
wsa.save_under = True;
|
|
||||||
XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder,
|
|
||||||
&wsa );
|
|
||||||
- x11SetWindowType();
|
|
||||||
+ XClassHint class_hint;
|
|
||||||
+ class_hint.res_name = (char *) qAppName(); // application name
|
|
||||||
+ class_hint.res_class = (char *) qAppClass(); // application class
|
|
||||||
+ XSetClassHint( dpy, id, &class_hint );
|
|
||||||
} else if ( topLevel && !desktop ) { // top-level widget
|
|
||||||
QWidget *p = parentWidget(); // real parent
|
|
||||||
if (p)
|
|
||||||
@@ -620,8 +623,6 @@ void QWidget::create( WId window, bool i
|
|
||||||
else
|
|
||||||
XDeleteProperty(dpy, id, qt_xa_motif_wm_hints);
|
|
||||||
|
|
||||||
- x11SetWindowType();
|
|
||||||
-
|
|
||||||
// set _NET_WM_WINDOW_STATE
|
|
||||||
if (curr_winstate > 0)
|
|
||||||
XChangeProperty(dpy, id, qt_net_wm_state, XA_ATOM, 32, PropModeReplace,
|
|
||||||
@@ -629,11 +630,6 @@ void QWidget::create( WId window, bool i
|
|
||||||
else
|
|
||||||
XDeleteProperty(dpy, id, qt_net_wm_state);
|
|
||||||
|
|
||||||
- // set _NET_WM_PID
|
|
||||||
- long curr_pid = getpid();
|
|
||||||
- XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
|
|
||||||
- (unsigned char *) &curr_pid, 1);
|
|
||||||
-
|
|
||||||
#ifndef QT_NO_XSYNC
|
|
||||||
// set _NET_WM_SYNC_COUNTER
|
|
||||||
createSyncCounter();
|
|
||||||
@@ -645,19 +641,31 @@ void QWidget::create( WId window, bool i
|
|
||||||
// when we create a toplevel widget, the frame strut should be dirty
|
|
||||||
fstrut_dirty = 1;
|
|
||||||
|
|
||||||
+ } else {
|
|
||||||
+ // non-toplevel widgets don't have a frame, so no need to
|
|
||||||
+ // update the strut
|
|
||||||
+ fstrut_dirty = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows
|
|
||||||
+ x11SetWindowType();
|
|
||||||
+
|
|
||||||
+ // set _NET_WM_PID
|
|
||||||
+ long curr_pid = getpid();
|
|
||||||
+ XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
|
|
||||||
+ (unsigned char *) &curr_pid, 1);
|
|
||||||
+
|
|
||||||
// declare the widget's object name as window role
|
|
||||||
XChangeProperty( dpy, id,
|
|
||||||
qt_window_role, XA_STRING, 8, PropModeReplace,
|
|
||||||
(unsigned char *)name(), qstrlen( name() ) );
|
|
||||||
|
|
||||||
// set client leader property
|
|
||||||
+ if ( !qt_x11_wm_client_leader )
|
|
||||||
+ qt_x11_create_wm_client_leader();
|
|
||||||
XChangeProperty( dpy, id, qt_wm_client_leader,
|
|
||||||
XA_WINDOW, 32, PropModeReplace,
|
|
||||||
(unsigned char *)&qt_x11_wm_client_leader, 1 );
|
|
||||||
- } else {
|
|
||||||
- // non-toplevel widgets don't have a frame, so no need to
|
|
||||||
- // update the strut
|
|
||||||
- fstrut_dirty = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( initializeWindow ) {
|
|
6
Makefile
6
Makefile
@ -1,6 +0,0 @@
|
|||||||
# Makefile for source rpm: qt
|
|
||||||
# $Id$
|
|
||||||
NAME := qt
|
|
||||||
SPECFILE = $(firstword $(wildcard *.spec))
|
|
||||||
|
|
||||||
include ../common/Makefile.common
|
|
3
Trolltech.conf
Normal file
3
Trolltech.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[Qt]
|
||||||
|
font="Sans Serif,10,-1,5,50,0,0,0,0,0"
|
||||||
|
|
9
assistant.desktop
Normal file
9
assistant.desktop
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Qt4 Assistant
|
||||||
|
GenericName=Documentation viewer
|
||||||
|
Comment=Shows Qt4 documentation and examples
|
||||||
|
Exec=assistant-qt4
|
||||||
|
Icon=assistant
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Qt;Development;Documentation;
|
@ -1,9 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=Qt3 Assistant
|
|
||||||
Comment=Add translations to Qt3 applications
|
|
||||||
Exec=assistant
|
|
||||||
Icon=assistant3
|
|
||||||
Terminal=false
|
|
||||||
Encoding=UTF-8
|
|
||||||
Type=Application
|
|
||||||
Categories=Qt;Development;
|
|
@ -1,11 +1,10 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Qt3 Designer
|
Name=Qt4 Designer
|
||||||
GenericName=Interface Designer
|
GenericName=Interface Designer
|
||||||
Comment=Design GUIs for Qt3 applications
|
Comment=Design GUIs for Qt4 applications
|
||||||
Exec=designer
|
Exec=designer-qt4
|
||||||
Icon=designer3
|
Icon=designer
|
||||||
MimeType=application/x-designer;
|
MimeType=application/x-designer;
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Encoding=UTF-8
|
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Qt;Development;
|
Categories=Qt;Development;
|
10
linguist.desktop
Normal file
10
linguist.desktop
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Qt4 Linguist
|
||||||
|
GenericName=Translation tool
|
||||||
|
Comment=Add translations to Qt4 applications
|
||||||
|
Exec=linguist-qt4
|
||||||
|
Icon=linguist
|
||||||
|
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Qt;Development;
|
@ -1,10 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=Qt3 Linguist
|
|
||||||
Comment=Add translations to Qt3 applications
|
|
||||||
Exec=linguist
|
|
||||||
Icon=linguist3
|
|
||||||
MimeType=application/x-linguist;
|
|
||||||
Terminal=false
|
|
||||||
Encoding=UTF-8
|
|
||||||
Type=Application
|
|
||||||
Categories=Qt;Development;
|
|
33
macros.qt4
Normal file
33
macros.qt4
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
%_qt4 @@NAME@@
|
||||||
|
%_qt4_epoch @@EPOCH@@
|
||||||
|
%_qt4_version @@VERSION@@
|
||||||
|
%_qt4_evr @@EVR@@
|
||||||
|
%_qt48 %{_qt4_version}
|
||||||
|
%_qt4_prefix %{_libdir}/qt4
|
||||||
|
%_qt4_bindir %{_qt4_prefix}/bin
|
||||||
|
%_qt4_datadir %{_qt4_prefix}
|
||||||
|
%_qt4_demosdir %{_qt4_prefix}/demos
|
||||||
|
%_qt4_docdir %{_docdir}/qt4
|
||||||
|
%_qt4_examples %{_qt4_prefix}/examples
|
||||||
|
%_qt4_examplesdir %{_qt4_prefix}/examples
|
||||||
|
%_qt4_headerdir %{_includedir}
|
||||||
|
%_qt4_importdir %{_qt4_prefix}/imports
|
||||||
|
%_qt4_libdir %{_libdir}
|
||||||
|
%_qt4_plugindir %{_qt4_prefix}/plugins
|
||||||
|
%_qt4_qmake %{_qt4_bindir}/qmake
|
||||||
|
%_qt4_sysconfdir %{_sysconfdir}
|
||||||
|
%_qt4_translationdir %{_datadir}/qt4/translations
|
||||||
|
|
||||||
|
%_qt4_ldflags %{?__global_ldflags}
|
||||||
|
%_qt4_optflags %{optflags}
|
||||||
|
|
||||||
|
%_qt4_qmake_flags \\\
|
||||||
|
QMAKE_CFLAGS_DEBUG="${CFLAGS:-%{_qt4_optflags}}" \\\
|
||||||
|
QMAKE_CFLAGS_RELEASE="${CFLAGS:-%{_qt4_optflags}}" \\\
|
||||||
|
QMAKE_CXXFLAGS_DEBUG="${CXXFLAGS:-%{_qt4_optflags}}" \\\
|
||||||
|
QMAKE_CXXFLAGS_RELEASE="${CXXFLAGS:-%{_qt4_optflags}}" \\\
|
||||||
|
QMAKE_LFLAGS_DEBUG="${LDFLAGS:-%{_qt4_ldflags}}" \\\
|
||||||
|
QMAKE_LFLAGS_RELEASE="${LDFLAGS:-%{_qt4_ldflags}}" \\\
|
||||||
|
QMAKE_STRIP=
|
||||||
|
|
||||||
|
%qmake_qt4 %{_qt4_qmake} %{_qt4_qmake_flags}
|
23
qconfig-multilib.h
Normal file
23
qconfig-multilib.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* qconfig.h */
|
||||||
|
/* This file is here to prevent a file conflict on multiarch systems. A
|
||||||
|
* conflict will occur because qconfig.h has arch-specific definitions.
|
||||||
|
*
|
||||||
|
* DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */
|
||||||
|
|
||||||
|
#ifndef QCONFIG_MULTILIB_H
|
||||||
|
#define QCONFIG_MULTILIB_H
|
||||||
|
|
||||||
|
#ifndef __WORDSIZE
|
||||||
|
#include <bits/wordsize.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#include "QtCore/qconfig-32.h"
|
||||||
|
#elif __WORDSIZE == 64
|
||||||
|
#include "QtCore/qconfig-64.h"
|
||||||
|
#else
|
||||||
|
#error "unexpected value for __WORDSIZE macro"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
10
qdbusviewer.desktop
Normal file
10
qdbusviewer.desktop
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Qt4 QDbusViewer
|
||||||
|
GenericName=D-Bus Debugger
|
||||||
|
Comment=Debug D-Bus applications
|
||||||
|
Exec=qdbusviewer
|
||||||
|
Icon=qdbusviewer
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Qt;Development;Debugger;
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
--- qt-x11-free-3.0.5/src/tools/qgpluginmanager.cpp.bero 2002-08-21 15:16:19.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.0.5/src/tools/qgpluginmanager.cpp 2002-08-21 15:16:41.000000000 +0200
|
|
||||||
@@ -501,10 +501,10 @@
|
|
||||||
(*f).latin1(),
|
|
||||||
(const char*) QFile::encodeName( old->library() ) );
|
|
||||||
} else {
|
|
||||||
- qWarning("%s: Feature %s already defined in %s!",
|
|
||||||
+/* qWarning("%s: Feature %s already defined in %s!",
|
|
||||||
(const char*) QFile::encodeName( old->library() ),
|
|
||||||
(*f).latin1(),
|
|
||||||
- (const char*) QFile::encodeName( plugin->library() ) );
|
|
||||||
+ (const char*) QFile::encodeName( plugin->library() ) ); */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.1.0/Makefile.orig 2002-11-14 15:44:17.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.1.0/Makefile 2002-11-14 15:49:33.000000000 +0100
|
|
||||||
@@ -11,7 +11,7 @@
|
|
||||||
install: FORCE
|
|
||||||
@$(MAKE) qt.install
|
|
||||||
|
|
||||||
-all: symlinks src-qmake src-moc sub-src sub-tools sub-tutorial sub-examples
|
|
||||||
+all: symlinks src-qmake src-moc sub-src sub-tools
|
|
||||||
@echo
|
|
||||||
@echo "The Qt library is now built in ./lib"
|
|
||||||
@echo "The Qt examples are built in the directories in ./examples"
|
|
@ -1,114 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.3.orig/src/widgets/qmenubar.cpp 2004-08-05 16:42:21.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/src/widgets/qmenubar.cpp 2004-12-03 17:26:43.000000000 +0100
|
|
||||||
@@ -228,6 +228,10 @@
|
|
||||||
static const int motifItemHMargin = 5; // menu item hor text margin
|
|
||||||
static const int motifItemVMargin = 4; // menu item ver text margin
|
|
||||||
|
|
||||||
+// The others are 0
|
|
||||||
+static const int gtkItemHMargin = 8;
|
|
||||||
+static const int gtkItemVMargin = 8;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
|
|
||||||
+-----------------------------
|
|
||||||
@@ -292,7 +296,14 @@
|
|
||||||
setFrameStyle( QFrame::MenuBarPanel | QFrame::Raised );
|
|
||||||
|
|
||||||
QFontMetrics fm = fontMetrics();
|
|
||||||
- int h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame;
|
|
||||||
+
|
|
||||||
+ int h;
|
|
||||||
+ int gs = style().styleHint(QStyle::SH_GUIStyle);
|
|
||||||
+ if (gs == GtkStyle) {
|
|
||||||
+ h = fm.height() + gtkItemVMargin;
|
|
||||||
+ } else {
|
|
||||||
+ h = 2*motifBarVMargin + fm.height() + motifItemVMargin + 2*frameWidth() + 2*motifItemFrame;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
setGeometry( 0, 0, width(), h );
|
|
||||||
|
|
||||||
@@ -944,12 +955,19 @@
|
|
||||||
h = QMAX( mi->pixmap()->height() + 4, QApplication::globalStrut().height() );
|
|
||||||
} else if ( !mi->text().isNull() ) { // text item
|
|
||||||
QString s = mi->text();
|
|
||||||
- w = fm.boundingRect( s ).width()
|
|
||||||
- + 2*motifItemHMargin;
|
|
||||||
+ if ( gs == GtkStyle ) {
|
|
||||||
+ w = fm.boundingRect( s ).width() + 2*gtkItemHMargin;
|
|
||||||
+ } else {
|
|
||||||
+ w = fm.boundingRect( s ).width() + 2*motifItemHMargin;
|
|
||||||
+ }
|
|
||||||
w -= s.contains('&')*fm.width('&');
|
|
||||||
w += s.contains("&&")*fm.width('&');
|
|
||||||
w = QMAX( w, QApplication::globalStrut().width() );
|
|
||||||
- h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() );
|
|
||||||
+ if (gs == GtkStyle ) {
|
|
||||||
+ h = QMAX( fm.height() + gtkItemVMargin, QApplication::globalStrut().height() );
|
|
||||||
+ } else {
|
|
||||||
+ h = QMAX( fm.height() + motifItemVMargin, QApplication::globalStrut().height() );
|
|
||||||
+ }
|
|
||||||
} else if ( mi->isSeparator() ) { // separator item
|
|
||||||
if ( style().styleHint(QStyle::SH_GUIStyle) == MotifStyle )
|
|
||||||
separator = i; //### only motif?
|
|
||||||
--- qt-x11-free-3.3.3.orig/src/widgets/qpopupmenu.cpp 2004-08-05 16:42:21.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/src/widgets/qpopupmenu.cpp 2004-12-03 17:43:50.000000000 +0100
|
|
||||||
@@ -65,6 +65,8 @@
|
|
||||||
static const int motifArrowHMargin = 6; // arrow horizontal margin
|
|
||||||
static const int motifArrowVMargin = 2; // arrow vertical margin
|
|
||||||
|
|
||||||
+static const int gtkArrowHMargin = 0; // arrow horizontal margin
|
|
||||||
+static const int gtkArrowVMargin = 0; // arrow vertical margin
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
@@ -2289,8 +2291,18 @@
|
|
||||||
QRect r( itemGeometry( actItem ) );
|
|
||||||
QPoint p;
|
|
||||||
QSize ps = popup->sizeHint();
|
|
||||||
+ // GUI Style
|
|
||||||
+ int gs = style().styleHint(QStyle::SH_GUIStyle);
|
|
||||||
+ int arrowHMargin, arrowVMargin;
|
|
||||||
+ if (gs == GtkStyle) {
|
|
||||||
+ arrowHMargin = gtkArrowHMargin;
|
|
||||||
+ arrowVMargin = gtkArrowVMargin;
|
|
||||||
+ } else {
|
|
||||||
+ arrowHMargin = motifArrowHMargin;
|
|
||||||
+ arrowVMargin = motifArrowVMargin;
|
|
||||||
+ }
|
|
||||||
if( QApplication::reverseLayout() ) {
|
|
||||||
- p = QPoint( r.left() + motifArrowHMargin - ps.width(), r.top() + motifArrowVMargin );
|
|
||||||
+ p = QPoint( r.left() + arrowHMargin - ps.width(), r.top() + arrowVMargin );
|
|
||||||
p = mapToGlobal( p );
|
|
||||||
|
|
||||||
bool right = FALSE;
|
|
||||||
@@ -2303,7 +2315,7 @@
|
|
||||||
if ( right )
|
|
||||||
p.setX( mapToGlobal( r.topRight() ).x() );
|
|
||||||
} else {
|
|
||||||
- p = QPoint( r.right() - motifArrowHMargin, r.top() + motifArrowVMargin );
|
|
||||||
+ p = QPoint( r.right() - arrowHMargin, r.top() + arrowVMargin );
|
|
||||||
p = mapToGlobal( p );
|
|
||||||
|
|
||||||
bool left = FALSE;
|
|
||||||
--- qt-x11-free-3.3.3.orig/src/kernel/qnamespace.h 2004-08-05 16:42:10.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/src/kernel/qnamespace.h 2004-11-29 22:22:26.000000000 +0100
|
|
||||||
@@ -294,7 +294,8 @@
|
|
||||||
#ifdef QT_NO_COMPAT
|
|
||||||
enum GUIStyle {
|
|
||||||
WindowsStyle = 1, // ### Qt 4.0: either remove the obsolete enums or clean up compat vs.
|
|
||||||
- MotifStyle = 4 // ### QT_NO_COMPAT by reordering or combination into one enum.
|
|
||||||
+ MotifStyle = 4, // ### QT_NO_COMPAT by reordering or combination into one enum.
|
|
||||||
+ GtkStyle = 6 // Gtk compability mode
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
enum GUIStyle {
|
|
||||||
@@ -302,7 +303,8 @@
|
|
||||||
WindowsStyle,
|
|
||||||
Win3Style, // OBSOLETE
|
|
||||||
PMStyle, // OBSOLETE
|
|
||||||
- MotifStyle
|
|
||||||
+ MotifStyle,
|
|
||||||
+ GtkStyle = 6 // Gtk compability mode
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.4/src/kernel/qpsprinter.cpp.cjk 2005-01-21 18:16:11.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.4/src/kernel/qpsprinter.cpp 2005-01-26 15:09:20.911239907 +0100
|
|
||||||
@@ -4748,10 +4748,11 @@
|
|
||||||
|
|
||||||
// GB18030 fonts on Turbolinux
|
|
||||||
static const psfont SongGBK2K [] = {
|
|
||||||
- { "MSung-Light-GBK2K-H", 0, 100. },
|
|
||||||
- { "MSung-Italic-GBK2K-H", 0, 100. },
|
|
||||||
- { "MSung-Bold-GBK2K-H", 0, 100. },
|
|
||||||
- { "MSung-BoldItalic-GBK2K-H", 0, 100. },
|
|
||||||
+ { "MSungGBK-Light-GBK2K-H", 0, 100. },
|
|
||||||
+ { "MSungGBK-Light-GBK2K-H", 0, 100. },
|
|
||||||
+ { "MSungGBK-Light-GBK2K-H", 0, 100. },
|
|
||||||
+ { "MSungGBK-Light-GBK2K-H", 0, 100. },
|
|
||||||
+
|
|
||||||
};
|
|
||||||
static const psfont KaiGBK2K [] = {
|
|
||||||
{ "MKai-Medium-GBK2K-H", 0, 100. },
|
|
@ -1,11 +0,0 @@
|
|||||||
--- src/codecs/qutfcodec.cpp
|
|
||||||
+++ src/codecs/qutfcodec.cpp
|
|
||||||
@@ -165,7 +165,7 @@ public:
|
|
||||||
QString toUnicode(const char* chars, int len)
|
|
||||||
{
|
|
||||||
QString result;
|
|
||||||
- result.setLength( len ); // worst case
|
|
||||||
+ result.setLength( len + 1 ); // worst case
|
|
||||||
QChar *qch = (QChar *)result.unicode();
|
|
||||||
uchar ch;
|
|
||||||
int error = -1;
|
|
@ -1,15 +0,0 @@
|
|||||||
diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp
|
|
||||||
--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2006-12-04 18:47:11.000000000 +0530
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-12-05 12:05:10.000000000 +0530
|
|
||||||
@@ -1412,7 +1412,10 @@ static bool indic_shape_syllable(QOpenTy
|
|
||||||
toPos += 2;
|
|
||||||
if (script == QFont::Devanagari || script == QFont::Gujarati || script == QFont::Bengali) {
|
|
||||||
if (matra_position == Post || matra_position == Split) {
|
|
||||||
- toPos = matra+1;
|
|
||||||
+ if (matra_position == Post )
|
|
||||||
+ toPos = matra;
|
|
||||||
+ else
|
|
||||||
+ toPos = matra+1;
|
|
||||||
matra -= 2;
|
|
||||||
}
|
|
||||||
} else if (script == QFont::Kannada) {
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-18 17:55:23.308589840 +0800
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-18 17:57:45.284006296 +0800
|
|
||||||
@@ -164,7 +164,7 @@
|
|
||||||
Matra, Matra, Matra, Matra,
|
|
||||||
Matra, Invalid, Invalid, Matra,
|
|
||||||
Matra, Invalid, Invalid, Matra,
|
|
||||||
- Matra, Halant, Unknown, Unknown,
|
|
||||||
+ Matra, Halant, Consonant, Unknown,
|
|
||||||
|
|
||||||
Invalid, Invalid, Invalid, Invalid,
|
|
||||||
Invalid, Invalid, Invalid, VowelMark,
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp
|
|
||||||
--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:35:30.000000000 +0530
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:37:58.000000000 +0530
|
|
||||||
@@ -226,7 +226,7 @@ static const unsigned char indicForms[0x
|
|
||||||
Invalid, VowelMark, VowelMark, VowelMark,
|
|
||||||
Invalid, IndependentVowel, IndependentVowel, IndependentVowel,
|
|
||||||
IndependentVowel, IndependentVowel, IndependentVowel, IndependentVowel,
|
|
||||||
- Invalid, IndependentVowel, Invalid, IndependentVowel,
|
|
||||||
+ IndependentVowel, IndependentVowel, Invalid, IndependentVowel,
|
|
||||||
|
|
||||||
IndependentVowel, IndependentVowel, Invalid, IndependentVowel,
|
|
||||||
IndependentVowel, Consonant, Consonant, Consonant,
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp
|
|
||||||
--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:41:25.000000000 +0530
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2007-02-13 14:40:02.000000000 +0530
|
|
||||||
@@ -253,7 +253,7 @@ static const unsigned char indicForms[0x
|
|
||||||
Unknown, Unknown, Unknown, Unknown,
|
|
||||||
Unknown, Unknown, Unknown, Unknown,
|
|
||||||
|
|
||||||
- Other, Other, Other, Other,
|
|
||||||
+ Other, Other, VowelMark, VowelMark,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
@ -1,60 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-13 13:21:37.000000000 +0800
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-13 13:57:36.000000000 +0800
|
|
||||||
@@ -868,7 +868,7 @@
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, Post,
|
|
||||||
|
|
||||||
- Post, None, Below, None,
|
|
||||||
+ None, None, None, None,
|
|
||||||
None, Post, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, Post, Post,
|
|
||||||
@@ -1271,6 +1271,16 @@
|
|
||||||
int base = 0;
|
|
||||||
int reph = -1;
|
|
||||||
|
|
||||||
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
|
|
||||||
+ bool is_special_conjuction_malayalam = false;
|
|
||||||
+
|
|
||||||
+ if ((len == 3) &&
|
|
||||||
+ ((reordered[2] == 0x0d30) || (reordered[2] == 0x0d31)) &&
|
|
||||||
+ (reordered[1] == 0x0d4d) &&
|
|
||||||
+ ((reordered[0] >= 0x0d15) && (reordered[0] <= 0x0d39))) {
|
|
||||||
+ is_special_conjuction_malayalam = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#ifdef INDIC_DEBUG
|
|
||||||
IDEBUG("original:");
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
@@ -1547,6 +1557,15 @@
|
|
||||||
reph = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
|
|
||||||
+ if (is_special_conjuction_malayalam) {
|
|
||||||
+ unsigned short temp;
|
|
||||||
+
|
|
||||||
+ temp = reordered[0];
|
|
||||||
+ reordered[0] = reordered[2];
|
|
||||||
+ reordered[2] = temp;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (item->font->stringToCMap((const QChar *)reordered.data(), len, item->glyphs, item->advances,
|
|
||||||
&item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError)
|
|
||||||
return FALSE;
|
|
||||||
@@ -1658,6 +1677,15 @@
|
|
||||||
|
|
||||||
// halant always applies
|
|
||||||
|
|
||||||
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
|
|
||||||
+ if (is_special_conjuction_malayalam) {
|
|
||||||
+ unsigned int temp;
|
|
||||||
+
|
|
||||||
+ temp = properties[0];
|
|
||||||
+ properties[0] = ~PreSubstProperty;
|
|
||||||
+ properties[2] = temp;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#ifdef INDIC_DEBUG
|
|
||||||
{
|
|
||||||
IDEBUG("OT properties:");
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.orig 2006-11-29 17:17:26.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-11-29 17:22:34.000000000 +0100
|
|
||||||
@@ -864,7 +864,7 @@
|
|
||||||
None, None, None, Post,
|
|
||||||
|
|
||||||
None, None, None, None,
|
|
||||||
- None, Post, None, None,
|
|
||||||
+ None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, Post, Post,
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -pruN qt-x11-free-3.3.6.org/src/kernel/qfont_x11.cpp qt-x11-free-3.3.6/src/kernel/qfont_x11.cpp
|
|
||||||
--- qt-x11-free-3.3.6.org/src/kernel/qfont_x11.cpp 2006-03-08 00:00:00.000000000 +0530
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qfont_x11.cpp 2006-12-04 18:49:09.000000000 +0530
|
|
||||||
@@ -709,7 +709,7 @@ int QFontMetrics::charWidth( const QStri
|
|
||||||
if ( script >= QFont::Arabic && script <= QFont::Khmer ) {
|
|
||||||
// complex script shaping. Have to do some hard work
|
|
||||||
int from = QMAX( 0, pos - 8 );
|
|
||||||
- int to = QMIN( (int)str.length(), pos + 8 );
|
|
||||||
+ int to = str.length();
|
|
||||||
QConstString cstr( str.unicode()+from, to-from);
|
|
||||||
QTextEngine layout( cstr.string(), d );
|
|
||||||
layout.itemize( QTextEngine::WidthOnly );
|
|
@ -1,64 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-13 13:21:37.000000000 +0800
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-13 13:42:11.000000000 +0800
|
|
||||||
@@ -280,7 +280,7 @@
|
|
||||||
Consonant, Consonant, Consonant, Consonant,
|
|
||||||
|
|
||||||
Consonant, Invalid, Consonant, Consonant,
|
|
||||||
- Invalid, Invalid, Consonant, Consonant,
|
|
||||||
+ Invalid, Consonant, Consonant, Consonant,
|
|
||||||
Consonant, Consonant, Unknown, Unknown,
|
|
||||||
Nukta, Other, Matra, Matra,
|
|
||||||
|
|
||||||
@@ -299,7 +299,7 @@
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
|
|
||||||
- Other, Other, Other, Other,
|
|
||||||
+ Other, Consonant, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
@@ -695,18 +695,18 @@
|
|
||||||
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,
|
|
||||||
@@ -717,14 +717,14 @@
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, Above, Post,
|
|
||||||
None, None, None, None,
|
|
||||||
- None, None, None, None,
|
|
||||||
+ None, None, None, Post,
|
|
||||||
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
|
|
||||||
- None, None, None, None,
|
|
||||||
+ None, Below, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-18 17:55:23.000000000 +0800
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-19 11:22:13.226804056 +0800
|
|
||||||
@@ -217,7 +217,7 @@
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
|
|
||||||
- StressMark, StressMark, Other, Other,
|
|
||||||
+ StressMark, StressMark, Consonant, Consonant,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
||||||
Other, Other, Other, Other,
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-18 17:55:23.000000000 +0800
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-19 16:42:31.641160984 +0800
|
|
||||||
@@ -786,7 +786,7 @@
|
|
||||||
Below, None, Below, Below,
|
|
||||||
Below, Below, Below, Below,
|
|
||||||
|
|
||||||
- Below, None, Below, Below,
|
|
||||||
+ Below, Below, Below, Below,
|
|
||||||
None, Below, Below, Below,
|
|
||||||
Below, Below, None, None,
|
|
||||||
None, None, Post, Above,
|
|
@ -1,23 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp.orig 2007-04-11 15:05:34.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp 2007-04-11 15:22:19.000000000 +0200
|
|
||||||
@@ -1240,7 +1240,7 @@
|
|
||||||
int script = item->script;
|
|
||||||
Q_ASSERT(script >= QFont::Devanagari && script <= QFont::Sinhala);
|
|
||||||
const unsigned short script_base = 0x0900 + 0x80*(script-QFont::Devanagari);
|
|
||||||
- const unsigned short ra = script_base + 0x30;
|
|
||||||
+ unsigned short ra = script_base + 0x30; //it was const unsigned short ra before modification
|
|
||||||
const unsigned short halant = script_base + 0x4d;
|
|
||||||
const unsigned short nukta = script_base + 0x3c;
|
|
||||||
|
|
||||||
@@ -1278,6 +1278,11 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ unsigned short *chkAssamese=reordered.data();
|
|
||||||
+ if((script == QFont::Bengali) && (*chkAssamese==0x09F0)) //if it is assamese ra
|
|
||||||
+ {
|
|
||||||
+ ra = script_base + 0x70;
|
|
||||||
+ }
|
|
||||||
if (len != 1) {
|
|
||||||
unsigned short *uc = reordered.data();
|
|
||||||
bool beginsWithRa = FALSE;
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp.orig 2007-04-11 15:05:34.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.8/src/kernel/qscriptengine_x11.cpp 2007-04-11 15:22:19.000000000 +0200
|
|
||||||
@@ -601,7 +601,7 @@
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
|
|
||||||
- None, None, None, None,
|
|
||||||
+ Below, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
||||||
None, None, None, None,
|
|
812
qt-4.8-poll.patch
Normal file
812
qt-4.8-poll.patch
Normal file
@ -0,0 +1,812 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/io/qprocess_unix.cpp 2014-03-31 18:04:05.958260978 -0500
|
||||||
|
@@ -158,13 +158,6 @@ static void qt_sa_sigchld_sigaction(int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline void add_fd(int &nfds, int fd, fd_set *fdset)
|
||||||
|
-{
|
||||||
|
- FD_SET(fd, fdset);
|
||||||
|
- if ((fd) > nfds)
|
||||||
|
- nfds = fd;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
struct QProcessInfo {
|
||||||
|
QProcess *process;
|
||||||
|
int deathPipe;
|
||||||
|
@@ -256,9 +249,9 @@ QProcessManager::~QProcessManager()
|
||||||
|
void QProcessManager::run()
|
||||||
|
{
|
||||||
|
forever {
|
||||||
|
- fd_set readset;
|
||||||
|
- FD_ZERO(&readset);
|
||||||
|
- FD_SET(qt_qprocess_deadChild_pipe[0], &readset);
|
||||||
|
+ pollfd fd;
|
||||||
|
+ fd.fd = qt_qprocess_deadChild_pipe[0];
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
|
||||||
|
#if defined (QPROCESS_DEBUG)
|
||||||
|
qDebug() << "QProcessManager::run() waiting for children to die";
|
||||||
|
@@ -267,8 +260,8 @@ void QProcessManager::run()
|
||||||
|
// block forever, or until activity is detected on the dead child
|
||||||
|
// pipe. the only other peers are the SIGCHLD signal handler, and the
|
||||||
|
// QProcessManager destructor.
|
||||||
|
- int nselect = select(qt_qprocess_deadChild_pipe[0] + 1, &readset, 0, 0, 0);
|
||||||
|
- if (nselect < 0) {
|
||||||
|
+ int ret = qt_safe_poll(&fd, 1, -1, /* retry_eintr */ false);
|
||||||
|
+ if (ret < 0) {
|
||||||
|
if (errno == EINTR)
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
|
@@ -1027,17 +1020,6 @@ void QProcessPrivate::killProcess()
|
||||||
|
::kill(pid_t(pid), SIGKILL);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int select_msecs(int nfds, fd_set *fdread, fd_set *fdwrite, int timeout)
|
||||||
|
-{
|
||||||
|
- if (timeout < 0)
|
||||||
|
- return qt_safe_select(nfds, fdread, fdwrite, 0, 0);
|
||||||
|
-
|
||||||
|
- struct timeval tv;
|
||||||
|
- tv.tv_sec = timeout / 1000;
|
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000;
|
||||||
|
- return qt_safe_select(nfds, fdread, fdwrite, 0, &tv);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
Returns the difference between msecs and elapsed. If msecs is -1,
|
||||||
|
however, -1 is returned.
|
||||||
|
@@ -1060,10 +1042,10 @@ bool QProcessPrivate::waitForStarted(int
|
||||||
|
childStartedPipe[0]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- fd_set fds;
|
||||||
|
- FD_ZERO(&fds);
|
||||||
|
- FD_SET(childStartedPipe[0], &fds);
|
||||||
|
- if (select_msecs(childStartedPipe[0] + 1, &fds, 0, msecs) == 0) {
|
||||||
|
+ pollfd fd;
|
||||||
|
+ fd.fd = childStartedPipe[0];
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
+ if (qt_safe_poll(&fd, 1, msecs) == 0) {
|
||||||
|
processError = QProcess::Timedout;
|
||||||
|
q->setErrorString(QProcess::tr("Process operation timed out"));
|
||||||
|
#if defined (QPROCESS_DEBUG)
|
||||||
|
@@ -1079,6 +1061,47 @@ bool QProcessPrivate::waitForStarted(int
|
||||||
|
return startedEmitted;
|
||||||
|
}
|
||||||
|
|
||||||
|
+class QProcessFDSet {
|
||||||
|
+ pollfd fds[5];
|
||||||
|
+
|
||||||
|
+ static size_t size()
|
||||||
|
+ {
|
||||||
|
+ return sizeof(fds)/sizeof(fds[0]);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+public:
|
||||||
|
+ QProcessFDSet(QProcessPrivate &proc)
|
||||||
|
+ {
|
||||||
|
+ for (size_t i = 0; i < size(); ++i) {
|
||||||
|
+ fds[i].fd = -1;
|
||||||
|
+ fds[i].events = POLLIN;
|
||||||
|
+ }
|
||||||
|
+ death().fd = proc.deathPipe[0];
|
||||||
|
+
|
||||||
|
+ if (proc.processState == QProcess::Starting)
|
||||||
|
+ started().fd = proc.childStartedPipe[0];
|
||||||
|
+
|
||||||
|
+ stdout().fd = proc.stdoutChannel.pipe[0];
|
||||||
|
+ stderr().fd = proc.stderrChannel.pipe[0];
|
||||||
|
+
|
||||||
|
+ if (!proc.writeBuffer.isEmpty()) {
|
||||||
|
+ stdin().fd = proc.stdinChannel.pipe[1];
|
||||||
|
+ stdin().events = POLLOUT;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ int poll(int timeout)
|
||||||
|
+ {
|
||||||
|
+ return qt_safe_poll(fds, size(), timeout);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ pollfd &death() { return fds[0]; }
|
||||||
|
+ pollfd &started() { return fds[1]; }
|
||||||
|
+ pollfd &stdout() { return fds[2]; }
|
||||||
|
+ pollfd &stderr() { return fds[3]; }
|
||||||
|
+ pollfd &stdin() { return fds[4]; }
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
bool QProcessPrivate::waitForReadyRead(int msecs)
|
||||||
|
{
|
||||||
|
Q_Q(QProcess);
|
||||||
|
@@ -1090,28 +1113,9 @@ bool QProcessPrivate::waitForReadyRead(i
|
||||||
|
stopWatch.start();
|
||||||
|
|
||||||
|
forever {
|
||||||
|
- fd_set fdread;
|
||||||
|
- fd_set fdwrite;
|
||||||
|
-
|
||||||
|
- FD_ZERO(&fdread);
|
||||||
|
- FD_ZERO(&fdwrite);
|
||||||
|
-
|
||||||
|
- int nfds = deathPipe[0];
|
||||||
|
- FD_SET(deathPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (processState == QProcess::Starting)
|
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (stdoutChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
|
||||||
|
- if (stderrChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
|
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
|
||||||
|
-
|
||||||
|
+ QProcessFDSet fdset(*this);
|
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
|
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
|
||||||
|
+ int ret = fdset.poll(timeout);
|
||||||
|
if (ret < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1121,18 +1125,18 @@ bool QProcessPrivate::waitForReadyRead(i
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.started())) {
|
||||||
|
if (!_q_startupNotification())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool readyReadEmitted = false;
|
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.stdout())) {
|
||||||
|
bool canRead = _q_canReadStandardOutput();
|
||||||
|
if (processChannel == QProcess::StandardOutput && canRead)
|
||||||
|
readyReadEmitted = true;
|
||||||
|
}
|
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.stderr())) {
|
||||||
|
bool canRead = _q_canReadStandardError();
|
||||||
|
if (processChannel == QProcess::StandardError && canRead)
|
||||||
|
readyReadEmitted = true;
|
||||||
|
@@ -1140,13 +1144,13 @@ bool QProcessPrivate::waitForReadyRead(i
|
||||||
|
if (readyReadEmitted)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
|
||||||
|
+ if (qt_writable(fdset.stdin()))
|
||||||
|
_q_canWrite();
|
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.death())) {
|
||||||
|
if (_q_processDied())
|
||||||
|
return false;
|
||||||
|
- }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -1162,29 +1166,9 @@ bool QProcessPrivate::waitForBytesWritte
|
||||||
|
stopWatch.start();
|
||||||
|
|
||||||
|
while (!writeBuffer.isEmpty()) {
|
||||||
|
- fd_set fdread;
|
||||||
|
- fd_set fdwrite;
|
||||||
|
-
|
||||||
|
- FD_ZERO(&fdread);
|
||||||
|
- FD_ZERO(&fdwrite);
|
||||||
|
-
|
||||||
|
- int nfds = deathPipe[0];
|
||||||
|
- FD_SET(deathPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (processState == QProcess::Starting)
|
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (stdoutChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
|
||||||
|
- if (stderrChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
|
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
|
||||||
|
-
|
||||||
|
+ QProcessFDSet fdset(*this);
|
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
|
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
|
||||||
|
+ int ret = fdset.poll(timeout);
|
||||||
|
if (ret < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1195,24 +1179,24 @@ bool QProcessPrivate::waitForBytesWritte
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.started())) {
|
||||||
|
if (!_q_startupNotification())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
|
||||||
|
+ if (qt_writable(fdset.stdin()))
|
||||||
|
return _q_canWrite();
|
||||||
|
|
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
|
||||||
|
+ if (qt_readable(fdset.stdout()))
|
||||||
|
_q_canReadStandardOutput();
|
||||||
|
|
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
|
||||||
|
+ if (qt_readable(fdset.stderr()))
|
||||||
|
_q_canReadStandardError();
|
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
|
||||||
|
- if (_q_processDied())
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
+ if (qt_readable(fdset.death())) {
|
||||||
|
+ if (_q_processDied())
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
@@ -1229,29 +1213,9 @@ bool QProcessPrivate::waitForFinished(in
|
||||||
|
stopWatch.start();
|
||||||
|
|
||||||
|
forever {
|
||||||
|
- fd_set fdread;
|
||||||
|
- fd_set fdwrite;
|
||||||
|
- int nfds = -1;
|
||||||
|
-
|
||||||
|
- FD_ZERO(&fdread);
|
||||||
|
- FD_ZERO(&fdwrite);
|
||||||
|
-
|
||||||
|
- if (processState == QProcess::Starting)
|
||||||
|
- add_fd(nfds, childStartedPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (stdoutChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stdoutChannel.pipe[0], &fdread);
|
||||||
|
- if (stderrChannel.pipe[0] != -1)
|
||||||
|
- add_fd(nfds, stderrChannel.pipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (processState == QProcess::Running)
|
||||||
|
- add_fd(nfds, deathPipe[0], &fdread);
|
||||||
|
-
|
||||||
|
- if (!writeBuffer.isEmpty() && stdinChannel.pipe[1] != -1)
|
||||||
|
- add_fd(nfds, stdinChannel.pipe[1], &fdwrite);
|
||||||
|
-
|
||||||
|
+ QProcessFDSet fdset(*this);
|
||||||
|
int timeout = qt_timeout_value(msecs, stopWatch.elapsed());
|
||||||
|
- int ret = select_msecs(nfds + 1, &fdread, &fdwrite, timeout);
|
||||||
|
+ int ret = fdset.poll(timeout);
|
||||||
|
if (ret < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -1261,20 +1225,20 @@ bool QProcessPrivate::waitForFinished(in
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (childStartedPipe[0] != -1 && FD_ISSET(childStartedPipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.started())) {
|
||||||
|
if (!_q_startupNotification())
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- if (stdinChannel.pipe[1] != -1 && FD_ISSET(stdinChannel.pipe[1], &fdwrite))
|
||||||
|
+ if (qt_writable(fdset.stdin()))
|
||||||
|
_q_canWrite();
|
||||||
|
|
||||||
|
- if (stdoutChannel.pipe[0] != -1 && FD_ISSET(stdoutChannel.pipe[0], &fdread))
|
||||||
|
+ if (qt_readable(fdset.stdout()))
|
||||||
|
_q_canReadStandardOutput();
|
||||||
|
|
||||||
|
- if (stderrChannel.pipe[0] != -1 && FD_ISSET(stderrChannel.pipe[0], &fdread))
|
||||||
|
+ if (qt_readable(fdset.stderr()))
|
||||||
|
_q_canReadStandardError();
|
||||||
|
|
||||||
|
- if (deathPipe[0] == -1 || FD_ISSET(deathPipe[0], &fdread)) {
|
||||||
|
+ if (qt_readable(fdset.death())) {
|
||||||
|
if (_q_processDied())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@@ -1284,10 +1248,10 @@ bool QProcessPrivate::waitForFinished(in
|
||||||
|
|
||||||
|
bool QProcessPrivate::waitForWrite(int msecs)
|
||||||
|
{
|
||||||
|
- fd_set fdwrite;
|
||||||
|
- FD_ZERO(&fdwrite);
|
||||||
|
- FD_SET(stdinChannel.pipe[1], &fdwrite);
|
||||||
|
- return select_msecs(stdinChannel.pipe[1] + 1, 0, &fdwrite, msecs < 0 ? 0 : msecs) == 1;
|
||||||
|
+ pollfd fd;
|
||||||
|
+ fd.fd = stdinChannel.pipe[1];
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
+ return qt_safe_poll(&fd, 1, msecs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QProcessPrivate::findExitCode()
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp.poll 2014-03-30 15:36:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix.cpp 2014-03-31 18:01:59.369715403 -0500
|
||||||
|
@@ -99,4 +99,165 @@ int qt_safe_select(int nfds, fd_set *fdr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef Q_OS_VXWORKS
|
||||||
|
+
|
||||||
|
+int qt_safe_poll(struct pollfd *fds, int nfds, int timeout_ms, bool retry_eintr)
|
||||||
|
+{
|
||||||
|
+ if (nfds == 0)
|
||||||
|
+ return 0;
|
||||||
|
+ if (nfds < 0) {
|
||||||
|
+ errno = EINVAL;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // Retry on ret == 0 if the deadline has not yet passed because
|
||||||
|
+ // Linux can return early from the syscall, without setting EINTR.
|
||||||
|
+ if (timeout_ms < 0) {
|
||||||
|
+ forever {
|
||||||
|
+ int ret = ::poll(fds, nfds, -1);
|
||||||
|
+ if (ret > 0)
|
||||||
|
+ return ret;
|
||||||
|
+ if (retry_eintr) {
|
||||||
|
+ if (ret == 0 || ret == -1 && errno == EINTR) {
|
||||||
|
+ continue;
|
||||||
|
+ } else {
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+ errno = EINTR;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ timeval previous = qt_gettime();
|
||||||
|
+ timeval deadline = previous;
|
||||||
|
+ deadline.tv_sec += timeout_ms / 1000;
|
||||||
|
+ deadline.tv_usec += (timeout_ms % 1000) * 1000;
|
||||||
|
+ if (deadline.tv_usec >= 1000000) {
|
||||||
|
+ ++deadline.tv_sec;
|
||||||
|
+ deadline.tv_usec -= 1000000;
|
||||||
|
+ }
|
||||||
|
+ int remaining = timeout_ms;
|
||||||
|
+
|
||||||
|
+ forever {
|
||||||
|
+ int ret = ::poll(fds, nfds, remaining);
|
||||||
|
+ if (ret > 0)
|
||||||
|
+ return ret;
|
||||||
|
+ timeval now = qt_gettime();
|
||||||
|
+ if ((now.tv_sec > deadline.tv_sec // past deadline
|
||||||
|
+ || (now.tv_sec == deadline.tv_sec
|
||||||
|
+ && now.tv_usec >= deadline.tv_usec))
|
||||||
|
+ || (now.tv_sec < previous.tv_sec // time warp
|
||||||
|
+ || (now.tv_sec == previous.tv_sec
|
||||||
|
+ && now.tv_usec < previous.tv_usec))
|
||||||
|
+ || (ret < 0 && (errno != EINTR || !retry_eintr))) // other error
|
||||||
|
+ return ret;
|
||||||
|
+ if (ret == 0 && !retry_eintr) {
|
||||||
|
+ errno = EINTR;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ remaining = (deadline.tv_sec - now.tv_sec) * 1000
|
||||||
|
+ + (deadline.tv_usec - now.tv_usec) / 1000;
|
||||||
|
+ previous = now;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#else
|
||||||
|
+
|
||||||
|
+// Poll emulation for VxWorks.
|
||||||
|
+
|
||||||
|
+static int mark_bad_descriptors(pollfd *fds, int nfds)
|
||||||
|
+{
|
||||||
|
+ fd_set r;
|
||||||
|
+ FD_ZERO(&r);
|
||||||
|
+ struct timeval tv;
|
||||||
|
+ tv.tv_sec = 0;
|
||||||
|
+ tv.tv_usec = 0;
|
||||||
|
+ int ret = 0;
|
||||||
|
+
|
||||||
|
+ // Check each descriptor invidually for badness.
|
||||||
|
+ for (int i = 0; i < nfds; ++i) {
|
||||||
|
+ pollfd &fd(fds[i]);
|
||||||
|
+ if (fd.fd >= 0) {
|
||||||
|
+ FD_SET(fd.fd, &r);
|
||||||
|
+ int ret = qt_safe_select(fd.fd + 1, &r, NULL, NULL, &tv);
|
||||||
|
+ FD_CLR(fd.fd, &r);
|
||||||
|
+ if (ret < 0 && errno == EBADF) {
|
||||||
|
+ fd.revents = POLLNVAL;
|
||||||
|
+ ++ret;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ Q_ASSERT(ret > 0);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int qt_safe_poll(pollfd *fds, int nfds, int timeout, bool retry_eintr)
|
||||||
|
+{
|
||||||
|
+ fd_set r, w;
|
||||||
|
+ FD_ZERO(&r);
|
||||||
|
+ FD_ZERO(&w);
|
||||||
|
+ int maxfd = -1;
|
||||||
|
+
|
||||||
|
+ // Extract the watched descriptors.
|
||||||
|
+ for (int i = 0; i < nfds; ++i) {
|
||||||
|
+ pollfd &fd(fds[i]);
|
||||||
|
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
|
||||||
|
+ if (fd.events & POLLIN) {
|
||||||
|
+ FD_SET(fd.fd, &r);
|
||||||
|
+ if (fd.fd > maxfd)
|
||||||
|
+ maxfd = fd.fd;
|
||||||
|
+ }
|
||||||
|
+ if (fd.events & POLLOUT) {
|
||||||
|
+ FD_SET(fd.fd, &w);
|
||||||
|
+ if (fd.fd > maxfd)
|
||||||
|
+ maxfd = fd.fd;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // If timeout is negative, wait indefinitely for activity.
|
||||||
|
+ timeval tv;
|
||||||
|
+ timeval *ptv;
|
||||||
|
+ if (timeout >= 0) {
|
||||||
|
+ tv.tv_sec = timeout / 1000;
|
||||||
|
+ tv.tv_usec = (timeout % 1000) * 1000;
|
||||||
|
+ ptv = &tv;
|
||||||
|
+ } else
|
||||||
|
+ ptv = NULL;
|
||||||
|
+
|
||||||
|
+ int ret;
|
||||||
|
+ if (retry_eintr)
|
||||||
|
+ ret = qt_safe_select(maxfd + 1, &r, &w, NULL, ptv);
|
||||||
|
+ else
|
||||||
|
+ ret = ::select(maxfd + 1, &r, &w, NULL, ptv);
|
||||||
|
+ if (ret < 0 && errno == EBADF) {
|
||||||
|
+ return mark_bad_descriptors(fds, nfds);
|
||||||
|
+ }
|
||||||
|
+ if (ret <= 0)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ // Set the revents flags.
|
||||||
|
+ ret = 0;
|
||||||
|
+ for (int i = 0; i < nfds; ++i) {
|
||||||
|
+ pollfd &fd(fds[i]);
|
||||||
|
+ fd.revents = 0;
|
||||||
|
+ if (fd.fd >= 0 && fd.fd < FD_SETSIZE) {
|
||||||
|
+ if ((fd.events & POLLIN) && FD_ISSET(fd.fd, &r))
|
||||||
|
+ fd.revents |= POLLIN;
|
||||||
|
+ if ((fd.events & POLLOUT) && FD_ISSET(fd.fd, &w))
|
||||||
|
+ fd.revents |= POLLOUT;
|
||||||
|
+ if (fd.revents)
|
||||||
|
+ ++ret;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ Q_ASSERT(ret > 0);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h.poll 2014-03-30 15:36:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/corelib/kernel/qcore_unix_p.h 2014-03-31 18:01:59.370715392 -0500
|
||||||
|
@@ -345,9 +345,42 @@ static inline pid_t qt_safe_waitpid(pid_
|
||||||
|
|
||||||
|
timeval qt_gettime(); // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp
|
||||||
|
|
||||||
|
+// Deprecated due to FD_SETSIZE limitation, use qt_safe_poll instead.
|
||||||
|
Q_CORE_EXPORT int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept,
|
||||||
|
const struct timeval *tv);
|
||||||
|
|
||||||
|
+#ifndef Q_OS_VXWORKS
|
||||||
|
+#include <poll.h>
|
||||||
|
+#else
|
||||||
|
+
|
||||||
|
+// Poll emulation for VxWorks.
|
||||||
|
+
|
||||||
|
+struct pollfd {
|
||||||
|
+ int fd;
|
||||||
|
+ short events;
|
||||||
|
+ short revents;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#define POLLIN 1
|
||||||
|
+#define POLLOUT 2
|
||||||
|
+#define POLLERR 4
|
||||||
|
+#define POLLHUP 8
|
||||||
|
+#define POLLNVAL 16
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+inline bool qt_readable(const pollfd &fd)
|
||||||
|
+{
|
||||||
|
+ return fd.fd >= 0 && (fd.revents & (POLLIN | POLLHUP | POLLERR | POLLNVAL)) != 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+inline bool qt_writable(const pollfd &fd)
|
||||||
|
+{
|
||||||
|
+ return fd.fd >= 0 && (fd.revents & (POLLOUT | POLLHUP | POLLERR | POLLNVAL)) != 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+Q_CORE_EXPORT int qt_safe_poll(pollfd *fds, int nfds, int timeout,
|
||||||
|
+ bool retry_eintr = true);
|
||||||
|
+
|
||||||
|
// according to X/OPEN we have to define semun ourselves
|
||||||
|
// we use prefix as on some systems sem.h will have it
|
||||||
|
struct semid_ds;
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalserver_unix.cpp 2014-03-31 18:01:59.370715392 -0500
|
||||||
|
@@ -208,16 +208,11 @@ void QLocalServerPrivate::_q_onNewConnec
|
||||||
|
|
||||||
|
void QLocalServerPrivate::waitForNewConnection(int msec, bool *timedOut)
|
||||||
|
{
|
||||||
|
- fd_set readfds;
|
||||||
|
- FD_ZERO(&readfds);
|
||||||
|
- FD_SET(listenSocket, &readfds);
|
||||||
|
+ struct pollfd fd;
|
||||||
|
+ fd.fd = listenSocket;
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
|
||||||
|
- timeval timeout;
|
||||||
|
- timeout.tv_sec = msec / 1000;
|
||||||
|
- timeout.tv_usec = (msec % 1000) * 1000;
|
||||||
|
-
|
||||||
|
- int result = -1;
|
||||||
|
- result = qt_safe_select(listenSocket + 1, &readfds, 0, 0, (msec == -1) ? 0 : &timeout);
|
||||||
|
+ int result = qt_safe_poll(&fd, 1, msec);
|
||||||
|
if (-1 == result) {
|
||||||
|
setError(QLatin1String("QLocalServer::waitForNewConnection"));
|
||||||
|
closeServer();
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qlocalsocket_unix.cpp 2014-03-31 18:01:59.370715392 -0500
|
||||||
|
@@ -56,10 +56,6 @@
|
||||||
|
#include <qdebug.h>
|
||||||
|
#include <qelapsedtimer.h>
|
||||||
|
|
||||||
|
-#ifdef Q_OS_VXWORKS
|
||||||
|
-# include <selectLib.h>
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
#define QT_CONNECT_TIMEOUT 30000
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
@@ -520,32 +516,17 @@ bool QLocalSocket::waitForConnected(int
|
||||||
|
if (state() != ConnectingState)
|
||||||
|
return (state() == ConnectedState);
|
||||||
|
|
||||||
|
- fd_set fds;
|
||||||
|
- FD_ZERO(&fds);
|
||||||
|
- FD_SET(d->connectingSocket, &fds);
|
||||||
|
-
|
||||||
|
- timeval timeout;
|
||||||
|
- timeout.tv_sec = msec / 1000;
|
||||||
|
- timeout.tv_usec = (msec % 1000) * 1000;
|
||||||
|
-
|
||||||
|
- // timeout can not be 0 or else select will return an error.
|
||||||
|
- if (0 == msec)
|
||||||
|
- timeout.tv_usec = 1000;
|
||||||
|
+ pollfd fd;
|
||||||
|
+ fd.fd = d->connectingSocket;
|
||||||
|
+ fd.events = POLLIN | POLLOUT;
|
||||||
|
|
||||||
|
int result = -1;
|
||||||
|
// on Linux timeout will be updated by select, but _not_ on other systems.
|
||||||
|
QElapsedTimer timer;
|
||||||
|
+ int remaining = msec;
|
||||||
|
timer.start();
|
||||||
|
- while (state() == ConnectingState
|
||||||
|
- && (-1 == msec || timer.elapsed() < msec)) {
|
||||||
|
-#ifdef Q_OS_SYMBIAN
|
||||||
|
- // On Symbian, ready-to-write is signaled when non-blocking socket
|
||||||
|
- // connect is finised. Is ready-to-read really used on other
|
||||||
|
- // UNIX paltforms when using non-blocking AF_UNIX socket?
|
||||||
|
- result = ::select(d->connectingSocket + 1, 0, &fds, 0, &timeout);
|
||||||
|
-#else
|
||||||
|
- result = ::select(d->connectingSocket + 1, &fds, 0, 0, &timeout);
|
||||||
|
-#endif
|
||||||
|
+ while (state() == ConnectingState) {
|
||||||
|
+ result = qt_safe_poll(&fd, 1, remaining, /* retry_eintr */ false);
|
||||||
|
if (-1 == result && errno != EINTR) {
|
||||||
|
d->errorOccurred( QLocalSocket::UnknownSocketError,
|
||||||
|
QLatin1String("QLocalSocket::waitForConnected"));
|
||||||
|
@@ -553,6 +534,11 @@ bool QLocalSocket::waitForConnected(int
|
||||||
|
}
|
||||||
|
if (result > 0)
|
||||||
|
d->_q_connectToSocket();
|
||||||
|
+ if (msec >= 0) {
|
||||||
|
+ remaining = timer.elapsed() - msec;
|
||||||
|
+ if (remaining < 0)
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return (state() == ConnectedState);
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/network/socket/qnativesocketengine_unix.cpp 2014-03-31 18:01:59.371715381 -0500
|
||||||
|
@@ -1068,48 +1068,40 @@ qint64 QNativeSocketEnginePrivate::nativ
|
||||||
|
|
||||||
|
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool selectForRead) const
|
||||||
|
{
|
||||||
|
- fd_set fds;
|
||||||
|
- FD_ZERO(&fds);
|
||||||
|
- FD_SET(socketDescriptor, &fds);
|
||||||
|
-
|
||||||
|
- struct timeval tv;
|
||||||
|
- tv.tv_sec = timeout / 1000;
|
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000;
|
||||||
|
-
|
||||||
|
- int retval;
|
||||||
|
- if (selectForRead)
|
||||||
|
- retval = qt_safe_select(socketDescriptor + 1, &fds, 0, 0, timeout < 0 ? 0 : &tv);
|
||||||
|
- else
|
||||||
|
- retval = qt_safe_select(socketDescriptor + 1, 0, &fds, 0, timeout < 0 ? 0 : &tv);
|
||||||
|
-
|
||||||
|
- return retval;
|
||||||
|
+ struct pollfd fd;
|
||||||
|
+ fd.fd = socketDescriptor;
|
||||||
|
+ if (selectForRead) {
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
+ } else {
|
||||||
|
+ fd.events = POLLOUT;
|
||||||
|
+ }
|
||||||
|
+ return qt_safe_poll(&fd, 1, timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
int QNativeSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool checkWrite,
|
||||||
|
bool *selectForRead, bool *selectForWrite) const
|
||||||
|
{
|
||||||
|
- fd_set fdread;
|
||||||
|
- FD_ZERO(&fdread);
|
||||||
|
+ struct pollfd fd;
|
||||||
|
+ fd.fd = socketDescriptor;
|
||||||
|
if (checkRead)
|
||||||
|
- FD_SET(socketDescriptor, &fdread);
|
||||||
|
-
|
||||||
|
- fd_set fdwrite;
|
||||||
|
- FD_ZERO(&fdwrite);
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
+ else
|
||||||
|
+ fd.events = 0;
|
||||||
|
if (checkWrite)
|
||||||
|
- FD_SET(socketDescriptor, &fdwrite);
|
||||||
|
-
|
||||||
|
- struct timeval tv;
|
||||||
|
- tv.tv_sec = timeout / 1000;
|
||||||
|
- tv.tv_usec = (timeout % 1000) * 1000;
|
||||||
|
-
|
||||||
|
- int ret;
|
||||||
|
- ret = qt_safe_select(socketDescriptor + 1, &fdread, &fdwrite, 0, timeout < 0 ? 0 : &tv);
|
||||||
|
-
|
||||||
|
+ fd.events |= POLLOUT;
|
||||||
|
+ int ret = qt_safe_poll(&fd, 1, timeout);
|
||||||
|
if (ret <= 0)
|
||||||
|
- return ret;
|
||||||
|
- *selectForRead = FD_ISSET(socketDescriptor, &fdread);
|
||||||
|
- *selectForWrite = FD_ISSET(socketDescriptor, &fdwrite);
|
||||||
|
-
|
||||||
|
+ return ret;
|
||||||
|
+ bool r = (fd.revents & (POLLIN | POLLHUP | POLLERR)) != 0;
|
||||||
|
+ bool w = (fd.revents & (POLLOUT | POLLHUP | POLLERR)) != 0;
|
||||||
|
+ // Emulate the return value from select(2).
|
||||||
|
+ ret = 0;
|
||||||
|
+ if (r)
|
||||||
|
+ ++ret;
|
||||||
|
+ if (w)
|
||||||
|
+ ++ret;
|
||||||
|
+ *selectForRead = r;
|
||||||
|
+ *selectForWrite = w;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/network/q3socketdevice_unix.cpp 2014-03-31 18:01:59.371715381 -0500
|
||||||
|
@@ -68,6 +68,7 @@ static inline int qt_socket_socket(int d
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "q3socketdevice.h"
|
||||||
|
+#include "private/qcore_unix_p.h"
|
||||||
|
|
||||||
|
#ifndef QT_NO_NETWORK
|
||||||
|
|
||||||
|
@@ -588,19 +589,10 @@ Q_LONG Q3SocketDevice::waitForMore( int
|
||||||
|
{
|
||||||
|
if ( !isValid() )
|
||||||
|
return -1;
|
||||||
|
- if ( fd >= FD_SETSIZE )
|
||||||
|
- return -1;
|
||||||
|
-
|
||||||
|
- fd_set fds;
|
||||||
|
- struct timeval tv;
|
||||||
|
-
|
||||||
|
- FD_ZERO( &fds );
|
||||||
|
- FD_SET( fd, &fds );
|
||||||
|
-
|
||||||
|
- tv.tv_sec = msecs / 1000;
|
||||||
|
- tv.tv_usec = (msecs % 1000) * 1000;
|
||||||
|
|
||||||
|
- int rv = select( fd+1, &fds, 0, 0, msecs < 0 ? 0 : &tv );
|
||||||
|
+ pollfd pfd;
|
||||||
|
+ pfd.fd = fd;
|
||||||
|
+ int rv = qt_safe_poll(&pfd, 1, msecs, /* retry_eintr */ false);
|
||||||
|
|
||||||
|
if ( rv < 0 )
|
||||||
|
return -1;
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp.poll 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/qt3support/other/q3process_unix.cpp 2014-03-31 18:01:59.372715370 -0500
|
||||||
|
@@ -981,13 +981,10 @@ bool Q3Process::isRunning() const
|
||||||
|
// On heavy processing, the socket notifier for the sigchild might not
|
||||||
|
// have found time to fire yet.
|
||||||
|
if ( d->procManager && d->procManager->sigchldFd[1] < FD_SETSIZE ) {
|
||||||
|
- fd_set fds;
|
||||||
|
- struct timeval tv;
|
||||||
|
- FD_ZERO( &fds );
|
||||||
|
- FD_SET( d->procManager->sigchldFd[1], &fds );
|
||||||
|
- tv.tv_sec = 0;
|
||||||
|
- tv.tv_usec = 0;
|
||||||
|
- if ( ::select( d->procManager->sigchldFd[1]+1, &fds, 0, 0, &tv ) > 0 )
|
||||||
|
+ pollfd fd;
|
||||||
|
+ fd.fd = d->procManager->sigchldFd[1];
|
||||||
|
+ fd.events = POLLIN;
|
||||||
|
+ if ( qt_safe_poll(&fd, 1, 0, /* retry_eintr */ false) > 0 )
|
||||||
|
d->procManager->sigchldHnd( d->procManager->sigchldFd[1] );
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1124,29 +1121,21 @@ void Q3Process::socketRead( int fd )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ( fd < FD_SETSIZE ) {
|
||||||
|
- fd_set fds;
|
||||||
|
- struct timeval tv;
|
||||||
|
- FD_ZERO( &fds );
|
||||||
|
- FD_SET( fd, &fds );
|
||||||
|
- tv.tv_sec = 0;
|
||||||
|
- tv.tv_usec = 0;
|
||||||
|
- while ( ::select( fd+1, &fds, 0, 0, &tv ) > 0 ) {
|
||||||
|
- // prepare for the next round
|
||||||
|
- FD_ZERO( &fds );
|
||||||
|
- FD_SET( fd, &fds );
|
||||||
|
- // read data
|
||||||
|
- ba = new QByteArray( basize );
|
||||||
|
- n = ::read( fd, ba->data(), basize );
|
||||||
|
- if ( n > 0 ) {
|
||||||
|
- ba->resize( n );
|
||||||
|
- buffer->append( ba );
|
||||||
|
- ba = 0;
|
||||||
|
- } else {
|
||||||
|
- delete ba;
|
||||||
|
- ba = 0;
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
+ pollfd pfd;
|
||||||
|
+ pfd.fd = fd;
|
||||||
|
+ pfd.events = POLLIN;
|
||||||
|
+ while (qt_safe_poll(&pfd, 1, 0)) {
|
||||||
|
+ // read data
|
||||||
|
+ ba = new QByteArray( basize );
|
||||||
|
+ n = ::read( fd, ba->data(), basize );
|
||||||
|
+ if ( n > 0 ) {
|
||||||
|
+ ba->resize( n );
|
||||||
|
+ buffer->append( ba );
|
||||||
|
+ ba = 0;
|
||||||
|
+ } else {
|
||||||
|
+ delete ba;
|
||||||
|
+ ba = 0;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
514
qt-aarch64.patch
Normal file
514
qt-aarch64.patch
Normal file
File diff suppressed because one or more lines are too long
238
qt-cupsEnumDests.patch
Normal file
238
qt-cupsEnumDests.patch
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups.cpp 2013-07-03 15:30:06.232936976 +0100
|
||||||
|
@@ -50,9 +50,19 @@
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
+typedef int (*CupsEnumDests)(unsigned flags, int msec, int *cancel,
|
||||||
|
+ cups_ptype_t type, cups_ptype_t mask,
|
||||||
|
+ cups_dest_cb_t cb, void *user_data);
|
||||||
|
+typedef http_t * (*CupsConnectDest)(cups_dest_t *dest, unsigned flags,
|
||||||
|
+ int msec, int *cancel,
|
||||||
|
+ char *resource, size_t resourcesize,
|
||||||
|
+ cups_dest_cb_t cb, void *user_data);
|
||||||
|
+typedef int (*CupsCopyDest)(cups_dest_t *dest, int num_dests,
|
||||||
|
+ cups_dest_t **dests);
|
||||||
|
typedef int (*CupsGetDests)(cups_dest_t **dests);
|
||||||
|
typedef void (*CupsFreeDests)(int num_dests, cups_dest_t *dests);
|
||||||
|
typedef const char* (*CupsGetPPD)(const char *printer);
|
||||||
|
+typedef const char* (*CupsGetPPD2)(http_t *http, const char *printer);
|
||||||
|
typedef int (*CupsMarkOptions)(ppd_file_t *ppd, int num_options, cups_option_t *options);
|
||||||
|
typedef ppd_file_t* (*PPDOpenFile)(const char *filename);
|
||||||
|
typedef void (*PPDMarkDefaults)(ppd_file_t *ppd);
|
||||||
|
@@ -66,12 +76,24 @@ typedef const char* (*CupsLangEncoding)(
|
||||||
|
typedef int (*CupsAddOption)(const char *name, const char *value, int num_options, cups_option_t **options);
|
||||||
|
typedef int (*CupsTempFd)(char *name, int len);
|
||||||
|
typedef int (*CupsPrintFile)(const char * name, const char * filename, const char * title, int num_options, cups_option_t * options);
|
||||||
|
+typedef int (*CupsPrintFile2)(http_t *http, const char *name, const char *filename, const char *title, int num_options, cups_option_t *options);
|
||||||
|
+
|
||||||
|
+typedef struct
|
||||||
|
+{
|
||||||
|
+ cups_dest_t *printers;
|
||||||
|
+ int num_printers;
|
||||||
|
+} EnumDestsContext;
|
||||||
|
|
||||||
|
static bool cupsLoaded = false;
|
||||||
|
static int qt_cups_num_printers = 0;
|
||||||
|
+static cups_dest_t *qt_cups_printers = 0;
|
||||||
|
+static CupsEnumDests _cupsEnumDests = 0;
|
||||||
|
+static CupsConnectDest _cupsConnectDest = 0;
|
||||||
|
+static CupsCopyDest _cupsCopyDest = 0;
|
||||||
|
static CupsGetDests _cupsGetDests = 0;
|
||||||
|
static CupsFreeDests _cupsFreeDests = 0;
|
||||||
|
static CupsGetPPD _cupsGetPPD = 0;
|
||||||
|
+static CupsGetPPD2 _cupsGetPPD2 = 0;
|
||||||
|
static PPDOpenFile _ppdOpenFile = 0;
|
||||||
|
static PPDMarkDefaults _ppdMarkDefaults = 0;
|
||||||
|
static PPDClose _ppdClose = 0;
|
||||||
|
@@ -84,14 +106,35 @@ static CupsLangEncoding _cupsLangEncodin
|
||||||
|
static CupsAddOption _cupsAddOption = 0;
|
||||||
|
static CupsTempFd _cupsTempFd = 0;
|
||||||
|
static CupsPrintFile _cupsPrintFile = 0;
|
||||||
|
+static CupsPrintFile2 _cupsPrintFile2 = 0;
|
||||||
|
+
|
||||||
|
+static int enum_dest_cb (void *user_data, unsigned flags, cups_dest_t *dest)
|
||||||
|
+{
|
||||||
|
+ EnumDestsContext *context = (EnumDestsContext *) user_data;
|
||||||
|
+
|
||||||
|
+ if ((flags & (CUPS_DEST_FLAGS_UNCONNECTED |
|
||||||
|
+ CUPS_DEST_FLAGS_REMOVED |
|
||||||
|
+ CUPS_DEST_FLAGS_ERROR |
|
||||||
|
+ CUPS_DEST_FLAGS_RESOLVING |
|
||||||
|
+ CUPS_DEST_FLAGS_CONNECTING |
|
||||||
|
+ CUPS_DEST_FLAGS_CANCELED)) == 0)
|
||||||
|
+ context->num_printers = _cupsCopyDest (dest, context->num_printers,
|
||||||
|
+ &context->printers);
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
static void resolveCups()
|
||||||
|
{
|
||||||
|
QLibrary cupsLib(QLatin1String("cups"), 2);
|
||||||
|
if(cupsLib.load()) {
|
||||||
|
+ _cupsEnumDests = (CupsEnumDests) cupsLib.resolve("cupsEnumDests");
|
||||||
|
+ _cupsConnectDest = (CupsConnectDest) cupsLib.resolve("cupsConnectDest");
|
||||||
|
+ _cupsCopyDest = (CupsCopyDest) cupsLib.resolve("cupsCopyDest");
|
||||||
|
_cupsGetDests = (CupsGetDests) cupsLib.resolve("cupsGetDests");
|
||||||
|
_cupsFreeDests = (CupsFreeDests) cupsLib.resolve("cupsFreeDests");
|
||||||
|
_cupsGetPPD = (CupsGetPPD) cupsLib.resolve("cupsGetPPD");
|
||||||
|
+ _cupsGetPPD2 = (CupsGetPPD2) cupsLib.resolve("cupsGetPPD2");
|
||||||
|
_cupsLangGet = (CupsLangGet) cupsLib.resolve("cupsLangGet");
|
||||||
|
_cupsLangEncoding = (CupsLangEncoding) cupsLib.resolve("cupsLangEncoding");
|
||||||
|
_ppdOpenFile = (PPDOpenFile) cupsLib.resolve("ppdOpenFile");
|
||||||
|
@@ -104,14 +147,27 @@ static void resolveCups()
|
||||||
|
_cupsAddOption = (CupsAddOption) cupsLib.resolve("cupsAddOption");
|
||||||
|
_cupsTempFd = (CupsTempFd) cupsLib.resolve("cupsTempFd");
|
||||||
|
_cupsPrintFile = (CupsPrintFile) cupsLib.resolve("cupsPrintFile");
|
||||||
|
+ _cupsPrintFile2 = (CupsPrintFile2) cupsLib.resolve("cupsPrintFile2");
|
||||||
|
|
||||||
|
- if (_cupsGetDests && _cupsFreeDests) {
|
||||||
|
- cups_dest_t *printers;
|
||||||
|
+ if (_cupsEnumDests && _cupsCopyDest &&
|
||||||
|
+ _cupsConnectDest && _cupsGetPPD2 &&
|
||||||
|
+ _cupsPrintFile2) {
|
||||||
|
+ EnumDestsContext context;
|
||||||
|
+ context.printers = 0;
|
||||||
|
+ context.num_printers = 0;
|
||||||
|
+ _cupsEnumDests(0, -1, 0, 0, 0,
|
||||||
|
+ enum_dest_cb, &context);
|
||||||
|
+
|
||||||
|
+ qt_cups_printers = context.printers;
|
||||||
|
+ qt_cups_num_printers = context.num_printers;
|
||||||
|
+ } else if (_cupsGetDests && _cupsFreeDests) {
|
||||||
|
+ cups_dest_t *printers;
|
||||||
|
int num_printers = _cupsGetDests(&printers);
|
||||||
|
- if (num_printers)
|
||||||
|
- _cupsFreeDests(num_printers, printers);
|
||||||
|
- qt_cups_num_printers = num_printers;
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ if (num_printers)
|
||||||
|
+ _cupsFreeDests(num_printers, printers);
|
||||||
|
+ qt_cups_num_printers = num_printers;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
cupsLoaded = true;
|
||||||
|
}
|
||||||
|
@@ -134,7 +190,15 @@ QCUPSSupport::QCUPSSupport()
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Update the available printer count
|
||||||
|
- qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
|
||||||
|
+ if (qt_cups_printers && _cupsCopyDest) {
|
||||||
|
+ int i;
|
||||||
|
+ for (i = 0; i < qt_cups_num_printers; ++i) {
|
||||||
|
+ prnCount = _cupsCopyDest (&qt_cups_printers[i],
|
||||||
|
+ prnCount,
|
||||||
|
+ &printers);
|
||||||
|
+ }
|
||||||
|
+ } else
|
||||||
|
+ qt_cups_num_printers = prnCount = _cupsGetDests(&printers);
|
||||||
|
|
||||||
|
for (int i = 0; i < prnCount; ++i) {
|
||||||
|
if (printers[i].is_default) {
|
||||||
|
@@ -188,7 +252,19 @@ const ppd_file_t* QCUPSSupport::setCurre
|
||||||
|
currPPD = 0;
|
||||||
|
page_sizes = 0;
|
||||||
|
|
||||||
|
- const char *ppdFile = _cupsGetPPD(printers[index].name);
|
||||||
|
+ const char *ppdFile = 0;
|
||||||
|
+ if (_cupsConnectDest && _cupsGetPPD2) {
|
||||||
|
+ char resource[HTTP_MAX_URI];
|
||||||
|
+ http_t *http = _cupsConnectDest (&printers[index], 0, -1, 0,
|
||||||
|
+ resource, sizeof (resource),
|
||||||
|
+ 0, 0);
|
||||||
|
+ if (http) {
|
||||||
|
+ char *name = strrchr (resource, '/');
|
||||||
|
+ if (name)
|
||||||
|
+ ppdFile = _cupsGetPPD2 (http, ++name);
|
||||||
|
+ }
|
||||||
|
+ } else
|
||||||
|
+ ppdFile = _cupsGetPPD(printers[index].name);
|
||||||
|
|
||||||
|
if (!ppdFile)
|
||||||
|
return 0;
|
||||||
|
@@ -343,7 +419,29 @@ bool QCUPSSupport::printerHasPPD(const c
|
||||||
|
{
|
||||||
|
if (!isAvailable())
|
||||||
|
return false;
|
||||||
|
- const char *ppdFile = _cupsGetPPD(printerName);
|
||||||
|
+
|
||||||
|
+ const char *ppdFile = 0;
|
||||||
|
+ if (_cupsConnectDest && _cupsGetPPD2) {
|
||||||
|
+ int i;
|
||||||
|
+ for (i = 0; i < prnCount; ++i)
|
||||||
|
+ if (!strcmp (printers[i].name, printerName))
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ if (i == prnCount)
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ char resource[HTTP_MAX_URI];
|
||||||
|
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
|
||||||
|
+ resource, sizeof (resource),
|
||||||
|
+ 0, 0);
|
||||||
|
+ if (http) {
|
||||||
|
+ char *name = strrchr (resource, '/');
|
||||||
|
+ if (name)
|
||||||
|
+ ppdFile = _cupsGetPPD2 (http, ++name);
|
||||||
|
+ }
|
||||||
|
+ } else
|
||||||
|
+ ppdFile = _cupsGetPPD(printerName);
|
||||||
|
+
|
||||||
|
if (ppdFile)
|
||||||
|
unlink(ppdFile);
|
||||||
|
return (ppdFile != 0);
|
||||||
|
@@ -394,6 +492,26 @@ QPair<int, QString> QCUPSSupport::tempFd
|
||||||
|
int QCUPSSupport::printFile(const char * printerName, const char * filename, const char * title,
|
||||||
|
int num_options, cups_option_t * options)
|
||||||
|
{
|
||||||
|
+ if (_cupsConnectDest && _cupsPrintFile2) {
|
||||||
|
+ int i;
|
||||||
|
+ for (i = 0; i < prnCount; ++i)
|
||||||
|
+ if (!strcmp (printers[i].name, printerName))
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ if (i != prnCount) {
|
||||||
|
+ char resource[HTTP_MAX_URI];
|
||||||
|
+ http_t *http = _cupsConnectDest (&printers[i], 0, -1, 0,
|
||||||
|
+ resource, sizeof (resource),
|
||||||
|
+ 0, 0);
|
||||||
|
+ if (http) {
|
||||||
|
+ char *name = strrchr (resource, '/');
|
||||||
|
+ if (name)
|
||||||
|
+ return _cupsPrintFile2 (http, ++name, filename, title,
|
||||||
|
+ num_options, options);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return _cupsPrintFile(printerName, filename, title, num_options, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h.cupsEnumDests 2012-11-23 10:09:53.000000000 +0000
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qcups_p.h 2013-07-03 15:27:24.733343017 +0100
|
||||||
|
@@ -92,7 +92,7 @@ public:
|
||||||
|
|
||||||
|
QStringList options() const;
|
||||||
|
|
||||||
|
- static bool printerHasPPD(const char *printerName);
|
||||||
|
+ bool printerHasPPD(const char *printerName);
|
||||||
|
|
||||||
|
QString unicodeString(const char *s);
|
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp.cupsEnumDests 2013-07-03 15:27:24.531342277 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/src/gui/painting/qprinter.cpp 2013-07-03 15:27:24.733343017 +0100
|
||||||
|
@@ -844,7 +844,7 @@ void QPrinter::setPrinterName(const QStr
|
||||||
|
if(d->use_default_engine
|
||||||
|
&& d->outputFormat == QPrinter::NativeFormat) {
|
||||||
|
if (QCUPSSupport::cupsVersion() >= 10200
|
||||||
|
- && QCUPSSupport::printerHasPPD(name.toLocal8Bit().constData()))
|
||||||
|
+ && QCUPSSupport().printerHasPPD(name.toLocal8Bit().constData()))
|
||||||
|
setOutputFormat(QPrinter::PdfFormat);
|
||||||
|
else
|
||||||
|
setOutputFormat(QPrinter::PostScriptFormat);
|
84
qt-everywhere-opensource-src-4.6.2-cups.patch
Normal file
84
qt-everywhere-opensource-src-4.6.2-cups.patch
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100
|
||||||
|
@@ -569,6 +569,32 @@
|
||||||
|
void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
|
||||||
|
{
|
||||||
|
options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
|
||||||
|
+
|
||||||
|
+ if (cups) {
|
||||||
|
+ const ppd_option_t* duplex = cups->ppdOption("Duplex");
|
||||||
|
+ if (duplex) {
|
||||||
|
+ // copy default ppd duplex to qt dialog
|
||||||
|
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
|
||||||
|
+ options.duplexShort->setChecked(true);
|
||||||
|
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
|
||||||
|
+ options.duplexLong->setChecked(true);
|
||||||
|
+ else
|
||||||
|
+ options.noDuplex->setChecked(true);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (cups->currentPPD()) {
|
||||||
|
+ // set default color
|
||||||
|
+ if (cups->currentPPD()->color_device)
|
||||||
|
+ options.color->setChecked(true);
|
||||||
|
+ else
|
||||||
|
+ options.grayscale->setChecked(true);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // set collation
|
||||||
|
+ const ppd_option_t *collate = cups->ppdOption("Collate");
|
||||||
|
+ if (collate)
|
||||||
|
+ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100
|
||||||
|
@@ -627,6 +627,44 @@
|
||||||
|
&& d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
|
||||||
|
setOutputFormat(QPrinter::PdfFormat);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
|
||||||
|
+ // fill in defaults from ppd file
|
||||||
|
+ QCUPSSupport cups;
|
||||||
|
+
|
||||||
|
+ int printernum = -1;
|
||||||
|
+ for (int i = 0; i < cups.availablePrintersCount(); i++) {
|
||||||
|
+ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
|
||||||
|
+ printernum = i;
|
||||||
|
+ }
|
||||||
|
+ if (printernum >= 0) {
|
||||||
|
+ cups.setCurrentPrinter(printernum);
|
||||||
|
+
|
||||||
|
+ const ppd_option_t* duplex = cups.ppdOption("Duplex");
|
||||||
|
+ if (duplex) {
|
||||||
|
+ // copy default ppd duplex to qt dialog
|
||||||
|
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
|
||||||
|
+ setDuplex(DuplexShortSide);
|
||||||
|
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
|
||||||
|
+ setDuplex(DuplexLongSide);
|
||||||
|
+ else
|
||||||
|
+ setDuplex(DuplexNone);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (cups.currentPPD()) {
|
||||||
|
+ // set default color
|
||||||
|
+ if (cups.currentPPD()->color_device)
|
||||||
|
+ setColorMode(Color);
|
||||||
|
+ else
|
||||||
|
+ setColorMode(GrayScale);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // set collation
|
||||||
|
+ const ppd_option_t *collate = cups.ppdOption("Collate");
|
||||||
|
+ if (collate)
|
||||||
|
+ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
@ -0,0 +1,69 @@
|
|||||||
|
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<GX11EventSource *>(s);
|
||||||
|
return (XEventsQueued(X11->display, QueuedAfterFlush)
|
||||||
|
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents)
|
||||||
|
- && !source->d->queuedUserInputEvents.isEmpty()));
|
||||||
|
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean x11EventSourceCheck(GSource *s)
|
||||||
|
@@ -84,7 +84,7 @@
|
||||||
|
GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
|
||||||
|
return (XEventsQueued(X11->display, QueuedAfterFlush)
|
||||||
|
|| (!(source->flags & QEventLoop::ExcludeUserInputEvents)
|
||||||
|
- && !source->d->queuedUserInputEvents.isEmpty()));
|
||||||
|
+ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
41
qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
Normal file
41
qt-everywhere-opensource-src-4.8.0-QTBUG-22037.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h.QTBUG-22037 2011-10-03 22:44:32.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/tools/qlist.h 2011-10-15 14:25:52.238694974 -0500
|
||||||
|
@@ -769,26 +769,18 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::clea
|
||||||
|
template <typename T>
|
||||||
|
Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
|
||||||
|
{
|
||||||
|
- int index = indexOf(_t);
|
||||||
|
- if (index == -1)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
+ detachShared();
|
||||||
|
const T t = _t;
|
||||||
|
- detach();
|
||||||
|
-
|
||||||
|
- Node *i = reinterpret_cast<Node *>(p.at(index));
|
||||||
|
- Node *e = reinterpret_cast<Node *>(p.end());
|
||||||
|
- Node *n = i;
|
||||||
|
- node_destruct(i);
|
||||||
|
- while (++i != e) {
|
||||||
|
- if (i->t() == t)
|
||||||
|
- node_destruct(i);
|
||||||
|
- else
|
||||||
|
- *n++ = *i;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- int removedCount = e - n;
|
||||||
|
- d->end -= removedCount;
|
||||||
|
+ int removedCount=0, i=0;
|
||||||
|
+ Node *n;
|
||||||
|
+ while (i < p.size())
|
||||||
|
+ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
|
||||||
|
+ node_destruct(n);
|
||||||
|
+ p.remove(i);
|
||||||
|
+ ++removedCount;
|
||||||
|
+ } else {
|
||||||
|
+ ++i;
|
||||||
|
+ }
|
||||||
|
return removedCount;
|
||||||
|
}
|
||||||
|
|
20
qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
Normal file
20
qt-everywhere-opensource-src-4.8.0-s390-atomic.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h.s390-atomic 2011-12-18 16:15:20.000000000 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0/src/corelib/arch/qatomic_s390.h 2011-12-18 16:17:34.000000000 +0100
|
||||||
|
@@ -400,6 +400,16 @@ Q_INLINE_TEMPLATE T* QBasicAtomicPointer
|
||||||
|
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
+Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
|
||||||
|
+{
|
||||||
|
+#ifndef __s390x__
|
||||||
|
+ return (T *)__CS_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "ar", "", "bcr 15,0\n");
|
||||||
|
+#else
|
||||||
|
+ return (T *)__CSG_OLD_LOOP(&_q_value, valueToAdd * sizeof(T), "agr", "", "bcr 15,0\n");
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+template <typename T>
|
||||||
|
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
|
||||||
|
{
|
||||||
|
return fetchAndAddOrdered(valueToAdd);
|
@ -0,0 +1,36 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-32/qmake.conf 2011-05-25 13:39:38.789054074 +0200
|
||||||
|
@@ -12,6 +12,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
QMAKE_CFLAGS = -m32
|
||||||
|
QMAKE_LFLAGS = -m32
|
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
+
|
||||||
|
include(../common/linux.conf)
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++-64/qmake.conf 2011-05-25 13:39:47.460747770 +0200
|
||||||
|
@@ -15,6 +15,8 @@ QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
QMAKE_CFLAGS = -m64
|
||||||
|
QMAKE_LFLAGS = -m64
|
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
+
|
||||||
|
include(../common/linux.conf)
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf.multilib 2011-05-23 12:26:21.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/mkspecs/linux-g++/qmake.conf 2011-05-25 13:39:26.630088814 +0200
|
||||||
|
@@ -9,6 +9,8 @@ CONFIG += qt warn_on release increment
|
||||||
|
QT += core gui
|
||||||
|
QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
+
|
||||||
|
include(../common/linux.conf)
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp.qtreeview-kpackagekit-crash 2011-05-23 12:26:21.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.0-tp/src/gui/itemviews/qtreeview.cpp 2011-05-25 13:24:33.137315194 +0200
|
||||||
|
@@ -3215,7 +3215,7 @@ int QTreeViewPrivate::itemHeight(int ite
|
||||||
|
return defaultItemHeight;
|
||||||
|
if (viewItems.isEmpty())
|
||||||
|
return 0;
|
||||||
|
- const QModelIndex &index = viewItems.at(item).index;
|
||||||
|
+ QModelIndex index = viewItems.at(item).index;
|
||||||
|
if (!index.isValid())
|
||||||
|
return 0;
|
||||||
|
int height = viewItems.at(item).height;
|
27
qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
Normal file
27
qt-everywhere-opensource-src-4.8.1-linguist_qmake-qt4.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lrelease/main.cpp 2012-05-29 12:17:03.416561535 +0200
|
||||||
|
@@ -314,9 +314,9 @@ int main(int argc, char **argv)
|
||||||
|
parseHandler.verbose = evalHandler.verbose = cd.isVerbose();
|
||||||
|
ProFileOption option;
|
||||||
|
#ifdef QT_BOOTSTRAPPED
|
||||||
|
- option.initProperties(binDir + QLatin1String("/qmake"));
|
||||||
|
+ option.initProperties(binDir + QLatin1String("/qmake-qt4"));
|
||||||
|
#else
|
||||||
|
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
|
||||||
|
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
|
||||||
|
#endif
|
||||||
|
ProFileParser parser(0, &parseHandler);
|
||||||
|
ProFileEvaluator visitor(&option, &parser, &evalHandler);
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp.linguist_qtmake-qt4 2012-04-26 21:45:50.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/linguist/lupdate/main.cpp 2012-05-29 11:46:48.811134546 +0200
|
||||||
|
@@ -765,7 +765,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
|
parseHandler.verbose = evalHandler.verbose = !!(options & Verbose);
|
||||||
|
ProFileOption option;
|
||||||
|
- option.initProperties(app.applicationDirPath() + QLatin1String("/qmake"));
|
||||||
|
+ option.initProperties(app.applicationDirPath() + QLatin1String("/qmake-qt4"));
|
||||||
|
option.setCommandLineArguments(QStringList() << QLatin1String("CONFIG+=lupdate_run"));
|
||||||
|
ProFileParser parser(0, &parseHandler);
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro
|
||||||
|
--- qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro.debuginfo 2012-03-14 09:01:17.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.1/src/qt3support/qt3support.pro 2012-05-11 11:55:37.780070386 -0500
|
||||||
|
@@ -34,6 +34,3 @@ MOCDIR = .moc
|
||||||
|
|
||||||
|
*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
|
||||||
|
|
||||||
|
-CONFIG -= separate_debug_info
|
||||||
|
-CONFIG += no_debug_info
|
||||||
|
-
|
13
qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
Normal file
13
qt-everywhere-opensource-src-4.8.2--assistant-crash.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp.me 2012-06-19 12:52:22.740180410 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.2/tools/assistant/tools/assistant/mainwindow.cpp 2012-06-19 12:52:51.953194103 +0200
|
||||||
|
@@ -944,8 +944,7 @@ void MainWindow::updateApplicationFont()
|
||||||
|
if (helpEngine.usesAppFont())
|
||||||
|
font = helpEngine.appFont();
|
||||||
|
|
||||||
|
- const QWidgetList &widgets = qApp->allWidgets();
|
||||||
|
- foreach (QWidget* widget, widgets)
|
||||||
|
+ foreach (QWidget* widget, QApplication::allWidgets())
|
||||||
|
widget->setFont(font);
|
||||||
|
}
|
||||||
|
|
23
qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
Normal file
23
qt-everywhere-opensource-src-4.8.3-icu_no_debug.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp.icu_no_debug 2012-09-06 02:33:45.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/corelib/tools/qlocale_icu.cpp 2012-09-11 09:04:21.542379795 -0500
|
||||||
|
@@ -84,7 +84,9 @@ bool qt_initIcu(const QString &localeStr
|
||||||
|
QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT));
|
||||||
|
lib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
|
||||||
|
if (!lib.load()) {
|
||||||
|
+#ifndef QT_NO_DEBUG
|
||||||
|
qWarning() << "Unable to load library icui18n" << lib.errorString();
|
||||||
|
+#endif
|
||||||
|
status = ErrorLoading;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -114,7 +116,9 @@ bool qt_initIcu(const QString &localeStr
|
||||||
|
QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT));
|
||||||
|
ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
|
||||||
|
if (!ucLib.load()) {
|
||||||
|
+#ifndef QT_NO_DEBUG
|
||||||
|
qWarning() << "Unable to load library icuuc" << ucLib.errorString();
|
||||||
|
+#endif
|
||||||
|
status = ErrorLoading;
|
||||||
|
return false;
|
||||||
|
}
|
12
qt-everywhere-opensource-src-4.8.3-no_Werror.patch
Normal file
12
qt-everywhere-opensource-src-4.8.3-no_Werror.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri
|
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri.no_Werror 2012-09-06 02:33:50.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/3rdparty/webkit/Source/WebKit.pri 2012-09-11 09:03:19.152159783 -0500
|
||||||
|
@@ -102,7 +102,7 @@ CONFIG -= warn_on
|
||||||
|
|
||||||
|
# Treat warnings as errors on x86/Linux/GCC
|
||||||
|
linux-g++* {
|
||||||
|
- !CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
|
||||||
|
+ #!CONFIG(standalone_package):if(isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386)): QMAKE_CXXFLAGS += -Werror
|
||||||
|
|
||||||
|
greaterThan(QT_GCC_MAJOR_VERSION, 3):greaterThan(QT_GCC_MINOR_VERSION, 5) {
|
||||||
|
if (!contains(QMAKE_CXXFLAGS, -std=c++0x) && !contains(QMAKE_CXXFLAGS, -std=gnu++0x)) {
|
@ -0,0 +1,14 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp.qdbusconnection_no_debug.patch 2012-09-06 02:33:44.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.3/src/dbus/qdbusconnection.cpp 2012-09-11 08:55:29.854026815 -0500
|
||||||
|
@@ -1109,8 +1109,10 @@ public:
|
||||||
|
// make sure this connection is running on the main thread
|
||||||
|
QCoreApplication *instance = QCoreApplication::instance();
|
||||||
|
if (!instance) {
|
||||||
|
+#ifndef QT_NO_DEBUG
|
||||||
|
qWarning("QDBusConnection: %s D-Bus connection created before QCoreApplication. Application may misbehave.",
|
||||||
|
type == SessionBus ? "session" : type == SystemBus ? "system" : "generic");
|
||||||
|
+#endif
|
||||||
|
} else if (QDBusConnectionPrivate::d(*this)) {
|
||||||
|
QDBusConnectionPrivate::d(*this)->moveToThread(instance->thread());
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp.qmake_pkgconfig_requires_private 2012-11-23 04:11:21.000000000 -0600
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.4/qmake/generators/makefile.cpp 2013-02-11 07:36:36.192779528 -0600
|
||||||
|
@@ -3293,6 +3293,12 @@ MakefileGenerator::writePkgConfigFile()
|
||||||
|
t << "Requires: " << requires << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // requires.private
|
||||||
|
+ const QString requires_private = project->values("QMAKE_PKGCONFIG_REQUIRES_PRIVATE").join(" ");
|
||||||
|
+ if (!requires_private.isEmpty()) {
|
||||||
|
+ t << "Requires.private: " << requires_private << endl;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
t << endl;
|
||||||
|
}
|
||||||
|
|
24
qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
Normal file
24
qt-everywhere-opensource-src-4.8.5-QTBUG-14467.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/qt_functions.prf 2013-06-09 11:53:45.709773603 -0500
|
||||||
|
@@ -72,7 +72,7 @@ defineTest(qtAddLibrary) {
|
||||||
|
}
|
||||||
|
isEmpty(LINKAGE) {
|
||||||
|
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
|
||||||
|
- win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
|
||||||
|
+ win32:LINKAGE = -l$${LIB_NAME}d$${QT_LIBINFIX}
|
||||||
|
mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
|
||||||
|
}
|
||||||
|
isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf.QTBUG-14467 2013-05-30 16:19:17.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/mkspecs/features/win32/windows.prf 2013-06-09 11:53:45.710773593 -0500
|
||||||
|
@@ -6,7 +6,7 @@ contains(TEMPLATE, ".*app"){
|
||||||
|
|
||||||
|
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {
|
||||||
|
isEqual(entryLib, -lqtmain): {
|
||||||
|
- CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d
|
||||||
|
+ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}d$${QT_LIBINFIX}
|
||||||
|
else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}
|
||||||
|
} else {
|
||||||
|
QMAKE_LIBS += $${entryLib}
|
84
qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
Normal file
84
qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500
|
||||||
|
@@ -818,6 +818,27 @@ static Bool qt_sync_request_scanner(Disp
|
||||||
|
#endif
|
||||||
|
#endif // QT_NO_XSYNC
|
||||||
|
|
||||||
|
+struct qt_configure_event_data
|
||||||
|
+{
|
||||||
|
+ WId window;
|
||||||
|
+ WId parent;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
|
||||||
|
+{
|
||||||
|
+ qt_configure_event_data *data =
|
||||||
|
+ reinterpret_cast<qt_configure_event_data*>(arg);
|
||||||
|
+ if (event->type == ConfigureNotify &&
|
||||||
|
+ event->xconfigure.window == data->window) {
|
||||||
|
+ return true;
|
||||||
|
+ } else if (event->type == ReparentNotify &&
|
||||||
|
+ event->xreparent.window == data->window) {
|
||||||
|
+ data->parent = event->xreparent.parent;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void qt_x11_create_intern_atoms()
|
||||||
|
{
|
||||||
|
const char *names[QX11Data::NAtoms];
|
||||||
|
@@ -5302,8 +5323,11 @@ bool QETWidget::translateConfigEvent(con
|
||||||
|
if (d->extra->compress_events) {
|
||||||
|
// ConfigureNotify compression for faster opaque resizing
|
||||||
|
XEvent otherEvent;
|
||||||
|
- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
|
||||||
|
- &otherEvent)) {
|
||||||
|
+ qt_configure_event_data configureData;
|
||||||
|
+ configureData.window = internalWinId();
|
||||||
|
+ configureData.parent = d->topData()->parentWinId;
|
||||||
|
+ while (XCheckIfEvent(X11->display, &otherEvent,
|
||||||
|
+ &qt_configure_event_scanner, (XPointer)&configureData)) {
|
||||||
|
if (qt_x11EventFilter(&otherEvent))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
@@ -5316,13 +5340,19 @@ bool QETWidget::translateConfigEvent(con
|
||||||
|
newSize.setWidth(otherEvent.xconfigure.width);
|
||||||
|
newSize.setHeight(otherEvent.xconfigure.height);
|
||||||
|
|
||||||
|
+ trust = isVisible()
|
||||||
|
+ && (configureData.parent == XNone ||
|
||||||
|
+ configureData.parent == QX11Info::appRootWindow());
|
||||||
|
+
|
||||||
|
if (otherEvent.xconfigure.send_event || trust) {
|
||||||
|
newCPos.rx() = otherEvent.xconfigure.x +
|
||||||
|
otherEvent.xconfigure.border_width;
|
||||||
|
newCPos.ry() = otherEvent.xconfigure.y +
|
||||||
|
otherEvent.xconfigure.border_width;
|
||||||
|
isCPos = true;
|
||||||
|
- }
|
||||||
|
+ } else {
|
||||||
|
+ isCPos = false;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
#ifndef QT_NO_XSYNC
|
||||||
|
qt_sync_request_event_data sync_event;
|
||||||
|
@@ -5335,9 +5365,14 @@ bool QETWidget::translateConfigEvent(con
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isCPos) {
|
||||||
|
- // we didn't get an updated position of the toplevel.
|
||||||
|
- // either we haven't moved or there is a bug in the window manager.
|
||||||
|
- // anyway, let's query the position to be certain.
|
||||||
|
+ // If the last configure event didn't have a trustable position,
|
||||||
|
+ // it's necessary to query, see ICCCM 4.24:
|
||||||
|
+ //
|
||||||
|
+ // Any real ConfigureNotify event on a top-level window implies
|
||||||
|
+ // that the window’s position on the root may have changed, even
|
||||||
|
+ // though the event reports that the window’s position in its
|
||||||
|
+ // parent is unchanged because the window may have been reparented.
|
||||||
|
+
|
||||||
|
int x, y;
|
||||||
|
Window child;
|
||||||
|
XTranslateCoordinates(X11->display, internalWinId(),
|
12
qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
Normal file
12
qt-everywhere-opensource-src-4.8.5-QTBUG-35459.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -ur qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5-CVE-2013-4549/src/xml/sax/qxml.cpp 2013-12-05 19:23:33.000000000 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5-QTBUG-35459/src/xml/sax/qxml.cpp 2014-01-13 20:13:59.000000000 +0100
|
||||||
|
@@ -428,7 +428,7 @@
|
||||||
|
// for the DTD currently being parsed.
|
||||||
|
static const int dtdRecursionLimit = 2;
|
||||||
|
// The maximum amount of characters an entity value may contain, after expansion.
|
||||||
|
- static const int entityCharacterLimit = 1024;
|
||||||
|
+ static const int entityCharacterLimit = 4096;
|
||||||
|
|
||||||
|
const QString &string();
|
||||||
|
void stringClear();
|
29
qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
Normal file
29
qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500
|
||||||
|
@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath()
|
||||||
|
{
|
||||||
|
QString home = QFile::decodeName(qgetenv("HOME"));
|
||||||
|
if (home.isEmpty())
|
||||||
|
+ {
|
||||||
|
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
|
||||||
|
+ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX);
|
||||||
|
+ if (size_max == -1)
|
||||||
|
+ size_max = 1024;
|
||||||
|
+ QVarLengthArray<char, 1024> buf(size_max);
|
||||||
|
+#endif
|
||||||
|
+ struct passwd *pw = 0;
|
||||||
|
+ uid_t user_id = getuid();
|
||||||
|
+ pw = getpwuid(user_id);
|
||||||
|
+#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
|
||||||
|
+ struct passwd entry;
|
||||||
|
+ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw);
|
||||||
|
+#else
|
||||||
|
+ pw = getpwuid(user_id);
|
||||||
|
+#endif
|
||||||
|
+ home = QFile::decodeName(QByteArray(pw->pw_dir));
|
||||||
|
+ }
|
||||||
|
+ if (home.isEmpty())
|
||||||
|
home = rootPath();
|
||||||
|
return QDir::cleanPath(home);
|
||||||
|
}
|
19
qt-everywhere-opensource-src-4.8.5-mysql_config.patch
Normal file
19
qt-everywhere-opensource-src-4.8.5-mysql_config.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/configure.mysql_config qt-everywhere-opensource-src-4.8.5/configure
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/configure.mysql_config 2013-06-07 00:16:41.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/configure 2014-03-07 10:09:27.412071146 -0600
|
||||||
|
@@ -5480,8 +5480,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
|
||||||
|
[ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
|
||||||
|
if [ -x "$CFG_MYSQL_CONFIG" ]; then
|
||||||
|
QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
|
||||||
|
+ $CFG_MYSQL_CONFIG --variable=pkglibdir &>/dev/null && \
|
||||||
|
+ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --variable=pkglibdir 2>/dev/null`
|
||||||
|
+ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then
|
||||||
|
+ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r"
|
||||||
|
+ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient"
|
||||||
|
+ else
|
||||||
|
QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
|
||||||
|
QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
|
||||||
|
+ fi
|
||||||
|
QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
|
||||||
|
QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
|
||||||
|
fi
|
@ -0,0 +1,22 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp.qgtkstyle_disable_gtk_theme_check 2013-06-09 16:28:22.938840346 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp 2013-06-09 17:03:01.781125479 -0500
|
||||||
|
@@ -503,18 +503,6 @@ void QGtkStylePrivate::initGtkWidgets()
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- static QString themeName;
|
||||||
|
- if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) {
|
||||||
|
- themeName = getThemeName();
|
||||||
|
-
|
||||||
|
- if (themeName == QLS("Qt") || themeName == QLS("Qt4")) {
|
||||||
|
- // Due to namespace conflicts with Qt3 and obvious recursion with Qt4,
|
||||||
|
- // we cannot support the GTK_Qt Gtk engine
|
||||||
|
- qWarning("QGtkStyle cannot be used together with the GTK_Qt engine.");
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (QGtkStylePrivate::gtk_init) {
|
||||||
|
// Gtk will set the Qt error handler so we have to reset it afterwards
|
||||||
|
x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0);
|
19
qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
Normal file
19
qt-everywhere-opensource-src-4.8.5-qt_plugin_path.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp.qt_plugin_path 2013-06-07 00:16:52.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/corelib/kernel/qcoreapplication.cpp 2013-06-21 07:14:10.045039936 -0500
|
||||||
|
@@ -2511,6 +2511,15 @@ QStringList QCoreApplication::libraryPat
|
||||||
|
if (!app_libpaths->contains(installPathPlugins))
|
||||||
|
app_libpaths->append(installPathPlugins);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // hack in support for kde4 plugin paths -- Rex
|
||||||
|
+ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins");
|
||||||
|
+ if (QFile::exists(kde4PathPlugins)) {
|
||||||
|
+ // Make sure we convert from backslashes to slashes.
|
||||||
|
+ //kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath();
|
||||||
|
+ if (!app_libpaths->contains(kde4PathPlugins))
|
||||||
|
+ app_libpaths->append(kde4PathPlugins);
|
||||||
|
+ }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If QCoreApplication is not yet instantiated,
|
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2013-06-09 11:57:49.198291245 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/sql/drivers/tds/qsql_tds.pri 2013-06-09 12:01:24.120100371 -0500
|
||||||
|
@@ -1,6 +1,8 @@
|
||||||
|
HEADERS += $$PWD/qsql_tds.h
|
||||||
|
SOURCES += $$PWD/qsql_tds.cpp
|
||||||
|
|
||||||
|
+*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
|
||||||
|
+
|
||||||
|
unix|win32-g++*: {
|
||||||
|
LIBS += $$QT_LFLAGS_TDS
|
||||||
|
!contains(LIBS, .*sybdb.*):LIBS += -lsybdb
|
28
qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
Normal file
28
qt-everywhere-opensource-src-4.8.5-uic_multilib.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/moc/moc.cpp
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/embed.cpp 2013-06-09 11:50:25.597813974 -0500
|
||||||
|
@@ -152,8 +152,7 @@ void Ui3Reader::embed(const char *projec
|
||||||
|
for ( it = images.begin(); it != images.end(); ++it )
|
||||||
|
out << "** " << *it << "\n";
|
||||||
|
out << "**\n";
|
||||||
|
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
|
||||||
|
- out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
|
||||||
|
+ out << "** Created: by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
|
||||||
|
out << "**\n";
|
||||||
|
out << "** WARNING! All changes made in this file will be lost!\n";
|
||||||
|
out << "****************************************************************************/\n";
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp.uic_multilib 2013-05-30 16:18:04.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/tools/uic3/uic.cpp 2013-06-09 11:51:28.310174526 -0500
|
||||||
|
@@ -146,8 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
|
||||||
|
out << "/********************************************************************************\n";
|
||||||
|
out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
|
||||||
|
out << "**\n";
|
||||||
|
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
|
||||||
|
- out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
|
||||||
|
+ out << "** Created by: " << QString::fromLatin1("Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
|
||||||
|
out << "**\n";
|
||||||
|
out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
|
||||||
|
out << "********************************************************************************/\n\n";
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.8.5/src/tools/uic/uic.cpp
|
16
qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
Normal file
16
qt-everywhere-opensource-src-4.8.5-webcore_debuginfo.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri
|
||||||
|
--- qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri.webkit_debuginfo 2013-06-07 00:16:55.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.5/src/3rdparty/webkit/Source/WebCore/WebCore.pri 2013-07-11 14:04:19.937056249 -0500
|
||||||
|
@@ -5,6 +5,12 @@ include(features.pri)
|
||||||
|
|
||||||
|
# Uncomment this to enable Texture Mapper.
|
||||||
|
# CONFIG += texmap
|
||||||
|
+#
|
||||||
|
+equals(QT_ARCH, s390)|equals(QT_ARCH, arm)|equals(QT_ARCH, mips)|equals(QT_ARCH, i386)|equals(QT_ARCH, i686)|equals(QT_ARCH, x86_64)|equals(QT_ARCH, powerpc64)|equals(QT_ARCH, powerpc) {
|
||||||
|
+ message("WebCore workaround for QtWebkit: do not build with -g, but with -g1")
|
||||||
|
+ QMAKE_CXXFLAGS_RELEASE -= -g
|
||||||
|
+ QMAKE_CXXFLAGS_RELEASE += -g1
|
||||||
|
+}
|
||||||
|
|
||||||
|
QT *= network
|
||||||
|
|
17
qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
Normal file
17
qt-everywhere-opensource-src-4.8.6-QTBUG-22829.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp.QTBUG-22829 2015-05-07 09:14:44.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/main.cpp 2016-12-08 12:32:46.638962448 -0600
|
||||||
|
@@ -188,8 +188,12 @@ int runMoc(int _argc, char **_argv)
|
||||||
|
pp.macros["Q_MOC_RUN"];
|
||||||
|
pp.macros["__cplusplus"];
|
||||||
|
|
||||||
|
- // Workaround a bug while parsing the boost/type_traits/has_operator.hpp header. See QTBUG-22829
|
||||||
|
+ // Workaround a bugs while parsing some boost headers. See QTBUG-22829
|
||||||
|
pp.macros["BOOST_TT_HAS_OPERATOR_HPP_INCLUDED"];
|
||||||
|
+ pp.macros["BOOST_LEXICAL_CAST_INCLUDED"];
|
||||||
|
+ pp.macros["BOOST_NEXT_PRIOR_HPP_INCLUDED"];
|
||||||
|
+ pp.macros["BOOST_TYPE_TRAITS_HPP"];
|
||||||
|
+ pp.macros["_SYS_SYSMACROS_H_OUTER"];
|
||||||
|
|
||||||
|
QByteArray filename;
|
||||||
|
QByteArray output;
|
94
qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
Normal file
94
qt-everywhere-opensource-src-4.8.6-QTBUG-34614.patch
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
--- src/corelib/kernel/qeventdispatcher_glib.cpp.sav 2014-03-28 15:26:37.000000000 +0100
|
||||||
|
+++ src/corelib/kernel/qeventdispatcher_glib.cpp 2014-04-24 09:44:09.358659204 +0200
|
||||||
|
@@ -255,22 +255,30 @@ struct GPostEventSource
|
||||||
|
GSource source;
|
||||||
|
QAtomicInt serialNumber;
|
||||||
|
int lastSerialNumber;
|
||||||
|
+ QEventLoop::ProcessEventsFlags processEventsFlags;
|
||||||
|
QEventDispatcherGlibPrivate *d;
|
||||||
|
};
|
||||||
|
|
||||||
|
static gboolean postEventSourcePrepare(GSource *s, gint *timeout)
|
||||||
|
{
|
||||||
|
+ GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
|
||||||
|
QThreadData *data = QThreadData::current();
|
||||||
|
if (!data)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags
|
||||||
|
+ = QEventLoop::ExcludeUserInputEvents
|
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers
|
||||||
|
+ | QEventLoop::X11ExcludeTimers;
|
||||||
|
+ if ((source->processEventsFlags & excludeAllFlags) == excludeAllFlags)
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
gint dummy;
|
||||||
|
if (!timeout)
|
||||||
|
timeout = &dummy;
|
||||||
|
const bool canWait = data->canWaitLocked();
|
||||||
|
*timeout = canWait ? -1 : 0;
|
||||||
|
|
||||||
|
- GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
|
||||||
|
return (!canWait
|
||||||
|
|| (source->serialNumber != source->lastSerialNumber));
|
||||||
|
}
|
||||||
|
@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch(
|
||||||
|
{
|
||||||
|
GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
|
||||||
|
source->lastSerialNumber = source->serialNumber;
|
||||||
|
- QCoreApplication::sendPostedEvents();
|
||||||
|
- source->d->runTimersOnceWithNormalPriority();
|
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags
|
||||||
|
+ = QEventLoop::ExcludeUserInputEvents
|
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers
|
||||||
|
+ | QEventLoop::X11ExcludeTimers;
|
||||||
|
+ if ((source->processEventsFlags & excludeAllFlags) != excludeAllFlags) {
|
||||||
|
+ QCoreApplication::sendPostedEvents();
|
||||||
|
+ source->d->runTimersOnceWithNormalPriority();
|
||||||
|
+ }
|
||||||
|
return true; // i dunno, george...
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -329,6 +343,7 @@ QEventDispatcherGlibPrivate::QEventDispa
|
||||||
|
postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
|
||||||
|
sizeof(GPostEventSource)));
|
||||||
|
postEventSource->serialNumber = 1;
|
||||||
|
+ postEventSource->processEventsFlags = QEventLoop::AllEvents;
|
||||||
|
postEventSource->d = this;
|
||||||
|
g_source_set_can_recurse(&postEventSource->source, true);
|
||||||
|
g_source_attach(&postEventSource->source, mainContext);
|
||||||
|
@@ -423,6 +438,7 @@ bool QEventDispatcherGlib::processEvents
|
||||||
|
|
||||||
|
// tell postEventSourcePrepare() and timerSource about any new flags
|
||||||
|
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
|
||||||
|
+ d->postEventSource->processEventsFlags = flags;
|
||||||
|
d->timerSource->processEventsFlags = flags;
|
||||||
|
d->socketNotifierSource->processEventsFlags = flags;
|
||||||
|
|
||||||
|
@@ -435,6 +451,7 @@ bool QEventDispatcherGlib::processEvents
|
||||||
|
while (!result && canWait)
|
||||||
|
result = g_main_context_iteration(d->mainContext, canWait);
|
||||||
|
|
||||||
|
+ d->postEventSource->processEventsFlags = savedFlags;
|
||||||
|
d->timerSource->processEventsFlags = savedFlags;
|
||||||
|
d->socketNotifierSource->processEventsFlags = savedFlags;
|
||||||
|
|
||||||
|
--- src/corelib/kernel/qeventdispatcher_unix.cpp.sav 2013-06-07 07:16:52.000000000 +0200
|
||||||
|
+++ src/corelib/kernel/qeventdispatcher_unix.cpp 2014-04-24 09:43:06.927589535 +0200
|
||||||
|
@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents
|
||||||
|
|
||||||
|
// we are awake, broadcast it
|
||||||
|
emit awake();
|
||||||
|
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
|
||||||
|
+
|
||||||
|
+ QEventLoop::ProcessEventsFlags excludeAllFlags
|
||||||
|
+ = QEventLoop::ExcludeUserInputEvents
|
||||||
|
+ | QEventLoop::ExcludeSocketNotifiers
|
||||||
|
+ | QEventLoop::X11ExcludeTimers;
|
||||||
|
+ if ((flags & excludeAllFlags) == excludeAllFlags)
|
||||||
|
+ return false;
|
||||||
|
+ if(( flags & excludeAllFlags ) != excludeAllFlags )
|
||||||
|
+ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
|
||||||
|
|
||||||
|
int nevents = 0;
|
||||||
|
const bool canWait = (d->threadData->canWaitLocked()
|
63
qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
Normal file
63
qt-everywhere-opensource-src-4.8.6-QTBUG-37380.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
Author: Jan-Marek Glogowski <glogow@fbihome.de>
|
||||||
|
Date: Thu Mar 06 18:44:43 2014 +0100
|
||||||
|
|
||||||
|
Honor QEventLoop::ExcludeSocketNotifiers in glib event loop.
|
||||||
|
|
||||||
|
Implements QEventLoop::ExcludeSocketNotifiers in the same way
|
||||||
|
QEventLoop::X11ExcludeTimers is already implemented for the glib
|
||||||
|
event loop.
|
||||||
|
|
||||||
|
--- qt4-x11-4.8.1.orig/src/corelib/kernel/qeventdispatcher_glib.cpp
|
||||||
|
+++ qt4-x11-4.8.1/src/corelib/kernel/qeventdispatcher_glib.cpp
|
||||||
|
@@ -65,6 +65,7 @@ struct GPollFDWithQSocketNotifier
|
||||||
|
struct GSocketNotifierSource
|
||||||
|
{
|
||||||
|
GSource source;
|
||||||
|
+ QEventLoop::ProcessEventsFlags processEventsFlags;
|
||||||
|
QList<GPollFDWithQSocketNotifier *> pollfds;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec
|
||||||
|
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
|
||||||
|
|
||||||
|
bool pending = false;
|
||||||
|
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
|
||||||
|
+ return pending;
|
||||||
|
+
|
||||||
|
for (int i = 0; !pending && i < src->pollfds.count(); ++i) {
|
||||||
|
GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
|
||||||
|
|
||||||
|
@@ -103,6 +107,9 @@ static gboolean socketNotifierSourceDisp
|
||||||
|
QEvent event(QEvent::SockAct);
|
||||||
|
|
||||||
|
GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
|
||||||
|
+ if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
for (int i = 0; i < src->pollfds.count(); ++i) {
|
||||||
|
GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
|
||||||
|
|
||||||
|
@@ -330,6 +337,7 @@ QEventDispatcherGlibPrivate::QEventDispa
|
||||||
|
reinterpret_cast<GSocketNotifierSource *>(g_source_new(&socketNotifierSourceFuncs,
|
||||||
|
sizeof(GSocketNotifierSource)));
|
||||||
|
(void) new (&socketNotifierSource->pollfds) QList<GPollFDWithQSocketNotifier *>();
|
||||||
|
+ socketNotifierSource->processEventsFlags = QEventLoop::AllEvents;
|
||||||
|
g_source_set_can_recurse(&socketNotifierSource->source, true);
|
||||||
|
g_source_attach(&socketNotifierSource->source, mainContext);
|
||||||
|
|
||||||
|
@@ -415,6 +423,7 @@ bool QEventDispatcherGlib::processEvents
|
||||||
|
// tell postEventSourcePrepare() and timerSource about any new flags
|
||||||
|
QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
|
||||||
|
d->timerSource->processEventsFlags = flags;
|
||||||
|
+ d->socketNotifierSource->processEventsFlags = flags;
|
||||||
|
|
||||||
|
if (!(flags & QEventLoop::EventLoopExec)) {
|
||||||
|
// force timers to be sent at normal priority
|
||||||
|
@@ -426,6 +435,7 @@ bool QEventDispatcherGlib::processEvents
|
||||||
|
result = g_main_context_iteration(d->mainContext, canWait);
|
||||||
|
|
||||||
|
d->timerSource->processEventsFlags = savedFlags;
|
||||||
|
+ d->socketNotifierSource->processEventsFlags = savedFlags;
|
||||||
|
|
||||||
|
if (canWait)
|
||||||
|
emit awake();
|
12
qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
Normal file
12
qt-everywhere-opensource-src-4.8.6-QTBUG-38585.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
--- src/gui/kernel/qclipboard_x11.cpp.sav 2014-04-25 09:52:03.855693228 +0200
|
||||||
|
+++ src/gui/kernel/qclipboard_x11.cpp 2014-04-25 09:51:58.038693777 +0200
|
||||||
|
@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win
|
||||||
|
return false;
|
||||||
|
|
||||||
|
XSync(X11->display, false);
|
||||||
|
- usleep(50000);
|
||||||
|
+ if (!XPending(X11->display))
|
||||||
|
+ usleep(5000);
|
||||||
|
|
||||||
|
now.start();
|
||||||
|
|
31
qt-everywhere-opensource-src-4.8.6-s390.patch
Normal file
31
qt-everywhere-opensource-src-4.8.6-s390.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390 2014-03-30 15:36:49.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-03-31 17:59:16.846465899 -0500
|
||||||
|
@@ -189,6 +189,18 @@
|
||||||
|
#define WTF_CPU_SPARC 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/* CPU(S390X) - S390 64-bit */
|
||||||
|
+#if defined(__s390x__)
|
||||||
|
+#define WTF_CPU_S390X 1
|
||||||
|
+#define WTF_CPU_BIG_ENDIAN 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* CPU(S390) - S390 32-bit */
|
||||||
|
+#if defined(__s390__)
|
||||||
|
+#define WTF_CPU_S390 1
|
||||||
|
+#define WTF_CPU_BIG_ENDIAN 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* CPU(X86) - i386 / x86 32-bit */
|
||||||
|
#if defined(__i386__) \
|
||||||
|
|| defined(i386) \
|
||||||
|
@@ -903,7 +915,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
|
||||||
|
-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64)
|
||||||
|
+#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(S390X)
|
||||||
|
#define WTF_USE_JSVALUE64 1
|
||||||
|
#elif CPU(ARM) || CPU(PPC64)
|
||||||
|
#define WTF_USE_JSVALUE32 1
|
351
qt-everywhere-opensource-src-4.8.6-system-clucene.patch
Normal file
351
qt-everywhere-opensource-src-4.8.6-system-clucene.patch
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/fulltextsearch.pri 2014-10-26 03:33:45.000000000 +0100
|
||||||
|
@@ -1,125 +1,7 @@
|
||||||
|
-DEFINES += _BUILD_FOR_QT_ LUCENE_DISABLE_MEMTRACKING
|
||||||
|
-win32:DEFINES += _CRT_SECURE_NO_DEPRECATE _MT
|
||||||
|
-
|
||||||
|
-CLUCENEDIR = ../../../../src/3rdparty/clucene/src/CLucene
|
||||||
|
-
|
||||||
|
-INCLUDEPATH += . .. \
|
||||||
|
- $$CLUCENEDIR \
|
||||||
|
- $$CLUCENEDIR/../ \
|
||||||
|
- $$CLUCENEDIR/analysis \
|
||||||
|
- $$CLUCENEDIR/analysis/standard \
|
||||||
|
- $$CLUCENEDIR/config \
|
||||||
|
- $$CLUCENEDIR/debug \
|
||||||
|
- $$CLUCENEDIR/document \
|
||||||
|
- $$CLUCENEDIR/index \
|
||||||
|
- $$CLUCENEDIR/queryParser \
|
||||||
|
- $$CLUCENEDIR/search \
|
||||||
|
- $$CLUCENEDIR/store \
|
||||||
|
- $$CLUCENEDIR/util
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-SOURCES += $$CLUCENEDIR/StdHeader.cpp \
|
||||||
|
- $$CLUCENEDIR/analysis/AnalysisHeader.cpp \
|
||||||
|
- $$CLUCENEDIR/analysis/Analyzers.cpp \
|
||||||
|
- $$CLUCENEDIR/config/gunichartables.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_lltot.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_tcscasecmp.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_tcslwr.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_tcstod.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_tcstoll.cpp \
|
||||||
|
- $$CLUCENEDIR/config/repl_tprintf.cpp \
|
||||||
|
- $$CLUCENEDIR/config/threads.cpp \
|
||||||
|
- $$CLUCENEDIR/config/utf8.cpp \
|
||||||
|
- $$CLUCENEDIR/debug/condition.cpp \
|
||||||
|
- $$CLUCENEDIR/debug/error.cpp \
|
||||||
|
- $$CLUCENEDIR/debug/memtracking.cpp \
|
||||||
|
- $$CLUCENEDIR/document/DateField.cpp \
|
||||||
|
- $$CLUCENEDIR/document/Document.cpp \
|
||||||
|
- $$CLUCENEDIR/document/Field.cpp \
|
||||||
|
- $$CLUCENEDIR/index/CompoundFile.cpp \
|
||||||
|
- $$CLUCENEDIR/index/DocumentWriter.cpp \
|
||||||
|
- $$CLUCENEDIR/index/FieldInfos.cpp \
|
||||||
|
- $$CLUCENEDIR/index/FieldsReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/FieldsWriter.cpp \
|
||||||
|
- $$CLUCENEDIR/index/IndexModifier.cpp \
|
||||||
|
- $$CLUCENEDIR/index/IndexReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/IndexWriter.cpp \
|
||||||
|
- $$CLUCENEDIR/index/MultiReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentInfos.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentMergeInfo.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentMergeQueue.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentMerger.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentTermDocs.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentTermEnum.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentTermPositions.cpp \
|
||||||
|
- $$CLUCENEDIR/index/SegmentTermVector.cpp \
|
||||||
|
- $$CLUCENEDIR/index/Term.cpp \
|
||||||
|
- $$CLUCENEDIR/index/TermInfo.cpp \
|
||||||
|
- $$CLUCENEDIR/index/TermInfosReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/TermInfosWriter.cpp \
|
||||||
|
- $$CLUCENEDIR/index/TermVectorReader.cpp \
|
||||||
|
- $$CLUCENEDIR/index/TermVectorWriter.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/Lexer.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/MultiFieldQueryParser.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/QueryParser.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/QueryParserBase.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/QueryToken.cpp \
|
||||||
|
- $$CLUCENEDIR/queryParser/TokenList.cpp \
|
||||||
|
- $$CLUCENEDIR/search/BooleanQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/BooleanScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/CachingWrapperFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/search/ChainedFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/search/ConjunctionScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/DateFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/search/ExactPhraseScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/Explanation.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FieldCache.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FieldCacheImpl.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FieldDocSortedHitQueue.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FieldSortedHitQueue.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FilteredTermEnum.cpp \
|
||||||
|
- $$CLUCENEDIR/search/FuzzyQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/HitQueue.cpp \
|
||||||
|
- $$CLUCENEDIR/search/Hits.cpp \
|
||||||
|
- $$CLUCENEDIR/search/IndexSearcher.cpp \
|
||||||
|
- $$CLUCENEDIR/search/MultiSearcher.cpp \
|
||||||
|
- $$CLUCENEDIR/search/MultiTermQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/PhrasePositions.cpp \
|
||||||
|
- $$CLUCENEDIR/search/PhraseQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/PhraseScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/PrefixQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/QueryFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/search/RangeFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/search/RangeQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/SearchHeader.cpp \
|
||||||
|
- $$CLUCENEDIR/search/Similarity.cpp \
|
||||||
|
- $$CLUCENEDIR/search/SloppyPhraseScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/Sort.cpp \
|
||||||
|
- $$CLUCENEDIR/search/TermQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/TermScorer.cpp \
|
||||||
|
- $$CLUCENEDIR/search/WildcardQuery.cpp \
|
||||||
|
- $$CLUCENEDIR/search/WildcardTermEnum.cpp \
|
||||||
|
- $$CLUCENEDIR/store/FSDirectory.cpp \
|
||||||
|
- $$CLUCENEDIR/store/IndexInput.cpp \
|
||||||
|
- $$CLUCENEDIR/store/IndexOutput.cpp \
|
||||||
|
- $$CLUCENEDIR/store/Lock.cpp \
|
||||||
|
- $$CLUCENEDIR/store/MMapInput.cpp \
|
||||||
|
- $$CLUCENEDIR/store/RAMDirectory.cpp \
|
||||||
|
- $$CLUCENEDIR/store/TransactionalRAMDirectory.cpp \
|
||||||
|
- $$CLUCENEDIR/util/BitSet.cpp \
|
||||||
|
- $$CLUCENEDIR/util/Equators.cpp \
|
||||||
|
- $$CLUCENEDIR/util/FastCharStream.cpp \
|
||||||
|
- $$CLUCENEDIR/util/fileinputstream.cpp \
|
||||||
|
- $$CLUCENEDIR/util/Misc.cpp \
|
||||||
|
- $$CLUCENEDIR/util/Reader.cpp \
|
||||||
|
- $$CLUCENEDIR/util/StringBuffer.cpp \
|
||||||
|
- $$CLUCENEDIR/util/StringIntern.cpp \
|
||||||
|
- $$CLUCENEDIR/util/ThreadLocal.cpp \
|
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardAnalyzer.cpp \
|
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardFilter.cpp \
|
||||||
|
- $$CLUCENEDIR/analysis/standard/StandardTokenizer.cpp
|
||||||
|
|
||||||
|
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
|
||||||
|
+LIBS += -L$$[QT_INSTALL_LIBS]/clucene09 -lclucene
|
||||||
|
+#DEFINES += LUCENE_ENABLE_REFCOUNT (must be set at CLucene build time!)
|
||||||
|
|
||||||
|
#Header files
|
||||||
|
HEADERS += qclucene_global_p.h \
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene-config_p.h 2014-10-26 02:28:54.000000000 +0100
|
||||||
|
@@ -15,6 +15,8 @@
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
+#error This header must not be included when building against system CLucene.
|
||||||
|
+
|
||||||
|
#ifndef QCLUCENE_CONFIG_P_H
|
||||||
|
#define QCLUCENE_CONFIG_P_H
|
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qclucene_global_p.h 2014-10-26 02:31:54.000000000 +0100
|
||||||
|
@@ -29,20 +29,10 @@
|
||||||
|
// We mean it.
|
||||||
|
//
|
||||||
|
|
||||||
|
-#if !defined(_MSC_VER)
|
||||||
|
-# include "qclucene-config_p.h"
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
#include <QtCore/QChar>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
-#if !defined(_MSC_VER) && !defined(__MINGW32__) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
|
||||||
|
-# if !defined(TCHAR)
|
||||||
|
-# define TCHAR wchar_t
|
||||||
|
-# endif
|
||||||
|
-#else
|
||||||
|
-# include <windows.h>
|
||||||
|
-#endif
|
||||||
|
+#include <CLucene/StdHeader.h>
|
||||||
|
|
||||||
|
QT_BEGIN_HEADER
|
||||||
|
|
||||||
|
@@ -56,52 +46,6 @@
|
||||||
|
# define QHELP_EXPORT Q_DECL_IMPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-//
|
||||||
|
-// W A R N I N G
|
||||||
|
-// -------------
|
||||||
|
-//
|
||||||
|
-// adjustments here, need to be done in
|
||||||
|
-// QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well
|
||||||
|
-//
|
||||||
|
-#if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS)
|
||||||
|
-
|
||||||
|
-#elif !defined(DISABLE_NAMESPACE)
|
||||||
|
-# ifdef QT_NAMESPACE
|
||||||
|
-# define CL_NS_DEF(sub) namespace QT_NAMESPACE { namespace lucene{ namespace sub{
|
||||||
|
-# define CL_NS_DEF2(sub,sub2) namespace QT_NAMESPACE { namespace lucene{ namespace sub{ namespace sub2 {
|
||||||
|
-
|
||||||
|
-# define CL_NS_END }}}
|
||||||
|
-# define CL_NS_END2 }}}}
|
||||||
|
-
|
||||||
|
-# define CL_NS_USE(sub) using namespace QT_NAMESPACE::lucene::sub;
|
||||||
|
-# define CL_NS_USE2(sub,sub2) using namespace QT_NAMESPACE::lucene::sub::sub2;
|
||||||
|
-
|
||||||
|
-# define CL_NS(sub) QT_NAMESPACE::lucene::sub
|
||||||
|
-# define CL_NS2(sub,sub2) QT_NAMESPACE::lucene::sub::sub2
|
||||||
|
-# else
|
||||||
|
-# define CL_NS_DEF(sub) namespace lucene{ namespace sub{
|
||||||
|
-# define CL_NS_DEF2(sub,sub2) namespace lucene{ namespace sub{ namespace sub2 {
|
||||||
|
-
|
||||||
|
-# define CL_NS_END }}
|
||||||
|
-# define CL_NS_END2 }}}
|
||||||
|
-
|
||||||
|
-# define CL_NS_USE(sub) using namespace lucene::sub;
|
||||||
|
-# define CL_NS_USE2(sub,sub2) using namespace lucene::sub::sub2;
|
||||||
|
-
|
||||||
|
-# define CL_NS(sub) lucene::sub
|
||||||
|
-# define CL_NS2(sub,sub2) lucene::sub::sub2
|
||||||
|
-# endif
|
||||||
|
-#else
|
||||||
|
-# define CL_NS_DEF(sub)
|
||||||
|
-# define CL_NS_DEF2(sub, sub2)
|
||||||
|
-# define CL_NS_END
|
||||||
|
-# define CL_NS_END2
|
||||||
|
-# define CL_NS_USE(sub)
|
||||||
|
-# define CL_NS_USE2(sub,sub2)
|
||||||
|
-# define CL_NS(sub)
|
||||||
|
-# define CL_NS2(sub,sub2)
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
namespace {
|
||||||
|
TCHAR* QStringToTChar(const QString &str)
|
||||||
|
{
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexreader.cpp 2014-10-26 02:48:02.000000000 +0100
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "qindexreader_p.h"
|
||||||
|
#include "qclucene_global_p.h"
|
||||||
|
|
||||||
|
+#include <QtCore/QDir>
|
||||||
|
+
|
||||||
|
#include <CLucene.h>
|
||||||
|
#include <CLucene/index/IndexReader.h>
|
||||||
|
|
||||||
|
@@ -59,13 +61,13 @@
|
||||||
|
{
|
||||||
|
using namespace lucene::index;
|
||||||
|
|
||||||
|
- return IndexReader::isLuceneFile(filename);
|
||||||
|
+ return IndexReader::isLuceneFile(filename.toLocal8Bit().constData());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QCLuceneIndexReader::indexExists(const QString &directory)
|
||||||
|
{
|
||||||
|
using namespace lucene::index;
|
||||||
|
- return IndexReader::indexExists(directory);
|
||||||
|
+ return IndexReader::indexExists(directory.toLocal8Bit().constData());
|
||||||
|
}
|
||||||
|
|
||||||
|
QCLuceneIndexReader QCLuceneIndexReader::open(const QString &path)
|
||||||
|
@@ -73,7 +75,7 @@
|
||||||
|
using namespace lucene::index;
|
||||||
|
|
||||||
|
QCLuceneIndexReader indexReader;
|
||||||
|
- indexReader.d->reader = IndexReader::open(path);
|
||||||
|
+ indexReader.d->reader = IndexReader::open(path.toLocal8Bit().constData());
|
||||||
|
|
||||||
|
return indexReader;
|
||||||
|
}
|
||||||
|
@@ -81,25 +83,29 @@
|
||||||
|
void QCLuceneIndexReader::unlock(const QString &path)
|
||||||
|
{
|
||||||
|
using namespace lucene::index;
|
||||||
|
- IndexReader::unlock(path);
|
||||||
|
+ IndexReader::unlock(path.toLocal8Bit().constData());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QCLuceneIndexReader::isLocked(const QString &directory)
|
||||||
|
{
|
||||||
|
+ // The system CLucene fails here if the directory does not exist yet, unlike
|
||||||
|
+ // the bundled one. Work around that.
|
||||||
|
+ QDir::current().mkpath(directory);
|
||||||
|
+
|
||||||
|
using namespace lucene::index;
|
||||||
|
- return IndexReader::isLocked(directory);
|
||||||
|
+ return IndexReader::isLocked(directory.toLocal8Bit().constData());
|
||||||
|
}
|
||||||
|
|
||||||
|
quint64 QCLuceneIndexReader::lastModified(const QString &directory)
|
||||||
|
{
|
||||||
|
using namespace lucene::index;
|
||||||
|
- return quint64(IndexReader::lastModified(directory));
|
||||||
|
+ return quint64(IndexReader::lastModified(directory.toLocal8Bit().constData()));
|
||||||
|
}
|
||||||
|
|
||||||
|
qint64 QCLuceneIndexReader::getCurrentVersion(const QString &directory)
|
||||||
|
{
|
||||||
|
using namespace lucene::index;
|
||||||
|
- return qint64(IndexReader::getCurrentVersion(directory));
|
||||||
|
+ return qint64(IndexReader::getCurrentVersion(directory.toLocal8Bit().constData()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void QCLuceneIndexReader::close()
|
||||||
|
@@ -155,7 +161,7 @@
|
||||||
|
void QCLuceneIndexReader::setNorm(qint32 doc, const QString &field, qreal value)
|
||||||
|
{
|
||||||
|
TCHAR *fieldName = QStringToTChar(field);
|
||||||
|
- d->reader->setNorm(int32_t(doc), fieldName, qreal(value));
|
||||||
|
+ d->reader->setNorm(int32_t(doc), fieldName, (float_t)value);
|
||||||
|
delete [] fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qindexwriter.cpp 2014-10-26 02:48:27.000000000 +0100
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "qindexwriter_p.h"
|
||||||
|
#include "qindexreader_p.h"
|
||||||
|
|
||||||
|
+#include <QtCore/QDir>
|
||||||
|
+
|
||||||
|
#include <CLucene.h>
|
||||||
|
#include <CLucene/index/IndexWriter.h>
|
||||||
|
|
||||||
|
@@ -50,7 +52,12 @@
|
||||||
|
: d(new QCLuceneIndexWriterPrivate())
|
||||||
|
, analyzer(analyzer)
|
||||||
|
{
|
||||||
|
- d->writer = new lucene::index::IndexWriter(path,
|
||||||
|
+ // The system CLucene cannot create directories recursively, so do it here.
|
||||||
|
+ // Ignore failure: If it failed, we will get an error from CLucene anyway.
|
||||||
|
+ if (create)
|
||||||
|
+ QDir::current().mkpath(path);
|
||||||
|
+
|
||||||
|
+ d->writer = new lucene::index::IndexWriter(path.toLocal8Bit().constData(),
|
||||||
|
analyzer.d->analyzer, create, closeDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/fulltextsearch/qsearchable.cpp 2014-10-26 02:48:44.000000000 +0100
|
||||||
|
@@ -95,7 +95,7 @@
|
||||||
|
: QCLuceneSearcher()
|
||||||
|
{
|
||||||
|
lucene::search::IndexSearcher *searcher =
|
||||||
|
- new lucene::search::IndexSearcher(path);
|
||||||
|
+ new lucene::search::IndexSearcher(path.toLocal8Bit().constData());
|
||||||
|
|
||||||
|
reader.d->reader = searcher->getReader();
|
||||||
|
reader.d->deleteCLuceneIndexReader = false;
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro
|
||||||
|
--- qt-everywhere-opensource-src-4.8.6/tools/assistant/lib/lib.pro 2014-04-10 20:37:12.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.6-system-clucene/tools/assistant/lib/lib.pro 2014-10-26 02:27:55.000000000 +0100
|
||||||
|
@@ -43,6 +43,7 @@
|
||||||
|
qhelp_global.cpp
|
||||||
|
|
||||||
|
# access to clucene
|
||||||
|
+INCLUDEPATH += /usr/include/clucene09 $$[QT_INSTALL_LIBS]/clucene09 $$[QT_INSTALL_LIBS]
|
||||||
|
SOURCES += qhelpsearchindexwriter_clucene.cpp \
|
||||||
|
qhelpsearchindexreader_clucene.cpp
|
||||||
|
HEADERS += qhelpenginecore.h \
|
1456
qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
Normal file
1456
qt-everywhere-opensource-src-4.8.6-systemtrayicon.patch
Normal file
File diff suppressed because it is too large
Load Diff
12
qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
Normal file
12
qt-everywhere-opensource-src-4.8.7-QT_VERSION_CHECK.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h.majmin 2015-05-07 09:14:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2016-12-08 12:10:29.677359701 -0600
|
||||||
|
@@ -52,7 +52,7 @@
|
||||||
|
/*
|
||||||
|
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
|
||||||
|
*/
|
||||||
|
-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
|
||||||
|
+#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch))
|
||||||
|
|
||||||
|
#define QT_PACKAGEDATE_STR "2015-05-07"
|
||||||
|
|
12
qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
Normal file
12
qt-everywhere-opensource-src-4.8.7-alsa-1.1.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp.than 2016-02-10 16:31:02.450152334 +0100
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/alsa/alsatest.cpp 2016-02-10 16:31:51.495307579 +0100
|
||||||
|
@@ -40,7 +40,7 @@
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <alsa/asoundlib.h>
|
||||||
|
-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10))
|
||||||
|
+#if(!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10)))
|
||||||
|
#error "Alsa version found too old, require >= 1.0.10"
|
||||||
|
#endif
|
||||||
|
|
45
qt-everywhere-opensource-src-4.8.7-firebird.patch
Normal file
45
qt-everywhere-opensource-src-4.8.7-firebird.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp.ibase 2015-05-07 09:14:42.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.cpp 2016-11-30 10:55:05.825339674 -0600
|
||||||
|
@@ -39,7 +39,7 @@
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
-#include <ibase.h>
|
||||||
|
+#include <firebird/ibase.h>
|
||||||
|
|
||||||
|
int main(int, char **)
|
||||||
|
{
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro.ibase 2015-05-07 09:14:42.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/config.tests/unix/ibase/ibase.pro 2016-11-30 10:56:11.017740104 -0600
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
SOURCES = ibase.cpp
|
||||||
|
CONFIG -= qt dylib
|
||||||
|
mac:CONFIG -= app_bundle
|
||||||
|
-LIBS += -lgds
|
||||||
|
+LIBS += -lfbclient
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h.ibase 2015-05-07 09:14:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.h 2016-11-30 10:57:34.516252974 -0600
|
||||||
|
@@ -45,7 +45,7 @@
|
||||||
|
#include <QtSql/qsqlresult.h>
|
||||||
|
#include <QtSql/qsqldriver.h>
|
||||||
|
#include <QtSql/private/qsqlcachedresult_p.h>
|
||||||
|
-#include <ibase.h>
|
||||||
|
+#include <firebird/ibase.h>
|
||||||
|
|
||||||
|
QT_BEGIN_HEADER
|
||||||
|
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri.ibase 2015-05-07 09:14:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/ibase/qsql_ibase.pri 2016-11-30 10:57:11.783113341 -0600
|
||||||
|
@@ -2,7 +2,7 @@ HEADERS += $$PWD/qsql_ibase.h
|
||||||
|
SOURCES += $$PWD/qsql_ibase.cpp
|
||||||
|
|
||||||
|
unix {
|
||||||
|
- !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lgds
|
||||||
|
+ !contains(LIBS, .*gds.*):!contains(LIBS, .*libfb.*):LIBS += -lfbclient
|
||||||
|
} else {
|
||||||
|
!contains(LIBS, .*gds.*):!contains(LIBS, .*fbclient.*) {
|
||||||
|
win32-borland:LIBS += gds32.lib
|
35
qt-everywhere-opensource-src-4.8.7-gcc6.patch
Normal file
35
qt-everywhere-opensource-src-4.8.7-gcc6.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/configure.gcc6 qt-everywhere-opensource-src-4.8.7/configure
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/configure.gcc6 2016-04-15 07:04:19.430268222 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/configure 2016-04-15 07:05:22.157568689 -0500
|
||||||
|
@@ -7744,7 +7744,7 @@ case "$XPLATFORM" in
|
||||||
|
*-g++*)
|
||||||
|
# Check gcc's version
|
||||||
|
case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
|
||||||
|
- 5*|4*|3.4*)
|
||||||
|
+ 8*|7*|6*|5*|4*|3.4*)
|
||||||
|
;;
|
||||||
|
3.3*)
|
||||||
|
canBuildWebKit="no"
|
||||||
|
@@ -8060,7 +8060,7 @@ g++*)
|
||||||
|
3.*)
|
||||||
|
COMPILER_VERSION="3.*"
|
||||||
|
;;
|
||||||
|
- 5*|4.*)
|
||||||
|
+ 8*|7*|6*|5*|4.*)
|
||||||
|
COMPILER_VERSION="4"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h.gcc6 2015-05-07 09:14:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/xmlpatterns/api/qcoloroutput_p.h 2016-04-15 07:04:19.431268227 -0500
|
||||||
|
@@ -70,8 +70,8 @@ namespace QPatternist
|
||||||
|
ForegroundShift = 10,
|
||||||
|
BackgroundShift = 20,
|
||||||
|
SpecialShift = 20,
|
||||||
|
- ForegroundMask = ((1 << ForegroundShift) - 1) << ForegroundShift,
|
||||||
|
- BackgroundMask = ((1 << BackgroundShift) - 1) << BackgroundShift
|
||||||
|
+ ForegroundMask = 0x1f << ForegroundShift,
|
||||||
|
+ BackgroundMask = 0x7 << BackgroundShift
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
13
qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
Normal file
13
qt-everywhere-opensource-src-4.8.7-gcc8_qtscript.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 qt-everywhere-opensource-src-4.8.7/src/script/script.pro
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/script/script.pro.gcc8 2015-05-07 09:14:43.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/script/script.pro 2018-05-19 16:01:24.699926959 -0500
|
||||||
|
@@ -91,6 +91,9 @@ symbian {
|
||||||
|
TARGET.UID3=0x2001B2E1
|
||||||
|
}
|
||||||
|
|
||||||
|
+# hack around gcc8 optimization bug with -O2
|
||||||
|
+QMAKE_CXXFLAGS_RELEASE += -O1
|
||||||
|
+
|
||||||
|
symbian {
|
||||||
|
symbian-abld|symbian-sbsv2 {
|
||||||
|
MMP_RULES += ALWAYS_BUILD_AS_ARM
|
28
qt-everywhere-opensource-src-4.8.7-icu59.patch
Normal file
28
qt-everywhere-opensource-src-4.8.7-icu59.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
Subject: Fix build with ICU >= 59
|
||||||
|
|
||||||
|
ICU >= 59 requires C++11 for its header files.
|
||||||
|
Qt can't be compiled with -std=c++11 as a whole, so only enable
|
||||||
|
it for qlocale_icu.cpp.
|
||||||
|
|
||||||
|
Index: qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri
|
||||||
|
===================================================================
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7.orig/src/corelib/tools/tools.pri
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/tools/tools.pri
|
||||||
|
@@ -102,7 +102,15 @@ contains(QT_CONFIG, zlib):include($$PWD/
|
||||||
|
else:include($$PWD/../../3rdparty/zlib_dependency.pri)
|
||||||
|
|
||||||
|
contains(QT_CONFIG,icu) {
|
||||||
|
- SOURCES += tools/qlocale_icu.cpp
|
||||||
|
+ cpp11.name = cpp11
|
||||||
|
+ cpp11.input = SOURCES_CPP11
|
||||||
|
+ cpp11.dependency_type = TYPE_C
|
||||||
|
+ cpp11.variable_out = OBJECTS
|
||||||
|
+ cpp11.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_IN_BASE}$${first(QMAKE_EXT_OBJ)}
|
||||||
|
+ cpp11.commands = $${QMAKE_CXX} $(CXXFLAGS) -std=c++11 $(INCPATH) -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
|
||||||
|
+ QMAKE_EXTRA_COMPILERS += cpp11
|
||||||
|
+
|
||||||
|
+ SOURCES_CPP11 += tools/qlocale_icu.cpp
|
||||||
|
DEFINES += QT_USE_ICU
|
||||||
|
}
|
||||||
|
|
28
qt-everywhere-opensource-src-4.8.7-mariadb.patch
Normal file
28
qt-everywhere-opensource-src-4.8.7-mariadb.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp.mariadb 2015-05-07 09:14:48.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/src/sql/drivers/mysql/qsql_mysql.cpp 2017-10-23 14:13:15.871808984 -0500
|
||||||
|
@@ -1105,11 +1105,16 @@ static void qLibraryInit()
|
||||||
|
}
|
||||||
|
# endif // MYSQL_VERSION_ID
|
||||||
|
#endif // Q_NO_MYSQL_EMBEDDED
|
||||||
|
+
|
||||||
|
+#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID)
|
||||||
|
+ qAddPostRoutine(mysql_server_end);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void qLibraryEnd()
|
||||||
|
{
|
||||||
|
#ifndef Q_NO_MYSQL_EMBEDDED
|
||||||
|
+#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID)
|
||||||
|
# if MYSQL_VERSION_ID > 40000
|
||||||
|
# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
|
||||||
|
mysql_library_end();
|
||||||
|
@@ -1118,6 +1123,7 @@ static void qLibraryEnd()
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
QMYSQLDriver::QMYSQLDriver(QObject * parent)
|
13
qt-everywhere-opensource-src-4.8.7-mips64.patch
Normal file
13
qt-everywhere-opensource-src-4.8.7-mips64.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff -urp qt-everywhere-opensource-src-4.8.7/configure q/configure
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/configure 2016-04-03 16:49:50.218644449 +0200
|
||||||
|
+++ q/configure 2016-04-03 17:22:35.376405024 +0200
|
||||||
|
@@ -3331,6 +3331,9 @@ arm*)
|
||||||
|
CFG_ARCH=arm
|
||||||
|
COMPAT_ARCH=armv6
|
||||||
|
;;
|
||||||
|
+mips*)
|
||||||
|
+ CFG_ARCH=mips
|
||||||
|
+ ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then
|
694
qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
Normal file
694
qt-everywhere-opensource-src-4.8.7-openssl-1.1.patch
Normal file
@ -0,0 +1,694 @@
|
|||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslcertificate.cpp 2018-01-05 17:44:16.997588265 +0100
|
||||||
|
@@ -259,10 +259,10 @@
|
||||||
|
QByteArray QSslCertificate::version() const
|
||||||
|
{
|
||||||
|
QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
|
||||||
|
- if (d->versionString.isEmpty() && d->x509)
|
||||||
|
+ if (d->versionString.isEmpty() && d->x509) {
|
||||||
|
d->versionString =
|
||||||
|
- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
|
||||||
|
-
|
||||||
|
+ QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1);
|
||||||
|
+ }
|
||||||
|
return d->versionString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -276,7 +276,7 @@
|
||||||
|
{
|
||||||
|
QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
|
||||||
|
if (d->serialNumberString.isEmpty() && d->x509) {
|
||||||
|
- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
|
||||||
|
+ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509);
|
||||||
|
// if we cannot convert to a long, just output the hexadecimal number
|
||||||
|
if (serialNumber->length > 4) {
|
||||||
|
QByteArray hexString;
|
||||||
|
@@ -489,24 +489,33 @@
|
||||||
|
QSslKey key;
|
||||||
|
|
||||||
|
key.d->type = QSsl::PublicKey;
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
X509_PUBKEY *xkey = d->x509->cert_info->key;
|
||||||
|
+#else
|
||||||
|
+ X509_PUBKEY *xkey = q_X509_get_X509_PUBKEY(d->x509);
|
||||||
|
+#endif
|
||||||
|
EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey);
|
||||||
|
Q_ASSERT(pkey);
|
||||||
|
|
||||||
|
- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
|
||||||
|
+ int key_id;
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+ key_id = q_EVP_PKEY_type(pkey->type);
|
||||||
|
+#else
|
||||||
|
+ key_id = q_EVP_PKEY_base_id(pkey);
|
||||||
|
+#endif
|
||||||
|
+ if (key_id == EVP_PKEY_RSA) {
|
||||||
|
key.d->rsa = q_EVP_PKEY_get1_RSA(pkey);
|
||||||
|
key.d->algorithm = QSsl::Rsa;
|
||||||
|
key.d->isNull = false;
|
||||||
|
- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
|
||||||
|
+ } else if (key_id == EVP_PKEY_DSA) {
|
||||||
|
key.d->dsa = q_EVP_PKEY_get1_DSA(pkey);
|
||||||
|
key.d->algorithm = QSsl::Dsa;
|
||||||
|
key.d->isNull = false;
|
||||||
|
- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
|
||||||
|
+ } else if (key_id == EVP_PKEY_DH) {
|
||||||
|
// DH unsupported
|
||||||
|
} else {
|
||||||
|
// error?
|
||||||
|
}
|
||||||
|
-
|
||||||
|
q_EVP_PKEY_free(pkey);
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
@@ -687,7 +696,11 @@
|
||||||
|
unsigned char *data = 0;
|
||||||
|
int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
|
||||||
|
info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
q_CRYPTO_free(data);
|
||||||
|
+#else
|
||||||
|
+ q_CRYPTO_free(data, __FILE__, __LINE__);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslkey.cpp 2018-01-05 18:00:27.453937599 +0100
|
||||||
|
@@ -321,8 +321,19 @@
|
||||||
|
{
|
||||||
|
if (d->isNull)
|
||||||
|
return -1;
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
return (d->algorithm == QSsl::Rsa)
|
||||||
|
? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p);
|
||||||
|
+#else
|
||||||
|
+ if (d->algorithm == QSsl::Rsa) {
|
||||||
|
+ return q_RSA_bits(d->rsa);
|
||||||
|
+ } else {
|
||||||
|
+ const BIGNUM *p = (const BIGNUM *) NULL;
|
||||||
|
+ q_DSA_get0_pqg(d->dsa, &p, (const BIGNUM **) NULL, (const BIGNUM **) NULL);
|
||||||
|
+ return q_BN_num_bits(p);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl.cpp 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl.cpp 2018-01-05 12:06:06.336990956 +0100
|
||||||
|
@@ -93,6 +93,7 @@
|
||||||
|
bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
|
||||||
|
bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
|
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
/* \internal
|
||||||
|
|
||||||
|
From OpenSSL's thread(3) manual page:
|
||||||
|
@@ -174,6 +175,8 @@
|
||||||
|
}
|
||||||
|
} // extern "C"
|
||||||
|
|
||||||
|
+#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||||
|
+
|
||||||
|
QSslSocketBackendPrivate::QSslSocketBackendPrivate()
|
||||||
|
: ssl(0),
|
||||||
|
ctx(0),
|
||||||
|
@@ -222,9 +225,12 @@
|
||||||
|
ciph.d->encryptionMethod = descriptionList.at(4).mid(4);
|
||||||
|
ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export"));
|
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
ciph.d->bits = cipher->strength_bits;
|
||||||
|
ciph.d->supportedBits = cipher->alg_bits;
|
||||||
|
-
|
||||||
|
+#else
|
||||||
|
+ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
return ciph;
|
||||||
|
}
|
||||||
|
@@ -363,7 +369,7 @@
|
||||||
|
//
|
||||||
|
// See also: QSslContext::fromConfiguration()
|
||||||
|
if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) {
|
||||||
|
- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle());
|
||||||
|
+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -500,8 +506,10 @@
|
||||||
|
*/
|
||||||
|
void QSslSocketPrivate::deinitialize()
|
||||||
|
{
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
q_CRYPTO_set_id_callback(0);
|
||||||
|
q_CRYPTO_set_locking_callback(0);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
@@ -522,13 +530,17 @@
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Check if the library itself needs to be initialized.
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
QMutexLocker locker(openssl_locks()->initLock());
|
||||||
|
+#endif
|
||||||
|
if (!s_libraryLoaded) {
|
||||||
|
s_libraryLoaded = true;
|
||||||
|
|
||||||
|
// Initialize OpenSSL.
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
q_CRYPTO_set_id_callback(id_function);
|
||||||
|
q_CRYPTO_set_locking_callback(locking_function);
|
||||||
|
+#endif
|
||||||
|
if (q_SSL_library_init() != 1)
|
||||||
|
return false;
|
||||||
|
q_SSL_load_error_strings();
|
||||||
|
@@ -567,7 +579,9 @@
|
||||||
|
|
||||||
|
void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
|
||||||
|
{
|
||||||
|
- QMutexLocker locker(openssl_locks()->initLock());
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+ QMutexLocker locker(openssl_locks()->initLock());
|
||||||
|
+#endif
|
||||||
|
if (s_loadedCiphersAndCerts)
|
||||||
|
return;
|
||||||
|
s_loadedCiphersAndCerts = true;
|
||||||
|
@@ -659,13 +673,18 @@
|
||||||
|
STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl);
|
||||||
|
for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
|
||||||
|
if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) {
|
||||||
|
- if (cipher->valid) {
|
||||||
|
+
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+ if (cipher->valid) {
|
||||||
|
+#endif
|
||||||
|
QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher);
|
||||||
|
if (!ciph.isNull()) {
|
||||||
|
if (!ciph.name().toLower().startsWith(QLatin1String("adh")))
|
||||||
|
ciphers << ciph;
|
||||||
|
}
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_p.h 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_p.h 2018-01-05 12:06:06.337990940 +0100
|
||||||
|
@@ -84,6 +84,10 @@
|
||||||
|
#include <openssl/tls1.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||||
|
+#define OPENSSL_NO_SSL2
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||||
|
typedef _STACK STACK;
|
||||||
|
#endif
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols.cpp 2018-01-05 17:59:10.636973932 +0100
|
||||||
|
@@ -111,16 +111,30 @@
|
||||||
|
DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return);
|
||||||
|
DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return)
|
||||||
|
DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return)
|
||||||
|
DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return)
|
||||||
|
DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG)
|
||||||
|
DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG)
|
||||||
|
+#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC3(void, CRYPTO_free, void *a, a, const char *b, b, int c, c, return, DUMMYARG)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x00908000L
|
||||||
|
DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, unsigned char **b, b, long c, c, return 0, return)
|
||||||
|
@@ -157,6 +171,7 @@
|
||||||
|
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
|
||||||
|
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
|
||||||
|
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
|
||||||
|
DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||||
|
@@ -166,6 +181,12 @@
|
||||||
|
DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG)
|
||||||
|
DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return)
|
||||||
|
#endif
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(int, OPENSSL_sk_num, STACK *a, a, return -1, return)
|
||||||
|
+DEFINEFUNC2(void, OPENSSL_sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
|
||||||
|
+DEFINEFUNC(void, OPENSSL_sk_free, _STACK *a, a, return, DUMMYARG)
|
||||||
|
+DEFINEFUNC2(void *, OPENSSL_sk_value, STACK *a, a, int b, b, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return)
|
||||||
|
DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return)
|
||||||
|
DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return)
|
||||||
|
@@ -213,8 +234,12 @@
|
||||||
|
#else
|
||||||
|
DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return)
|
||||||
|
#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return)
|
||||||
|
DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return)
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
|
||||||
|
DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return)
|
||||||
|
@@ -229,13 +254,21 @@
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
#endif
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(const SSL_METHOD *, TLS_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
#ifndef OPENSSL_NO_SSL2
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
#endif
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(const SSL_METHOD *, TLS_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
#else
|
||||||
|
DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
@@ -274,7 +307,11 @@
|
||||||
|
DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return)
|
||||||
|
DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return)
|
||||||
|
DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return 0, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return)
|
||||||
|
#ifdef SSLEAY_MACROS
|
||||||
|
DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
|
||||||
|
@@ -282,10 +319,34 @@
|
||||||
|
DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return)
|
||||||
|
DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return)
|
||||||
|
#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG)
|
||||||
|
DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return -1, return)
|
||||||
|
+#endif
|
||||||
|
DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return)
|
||||||
|
+#else
|
||||||
|
+DEFINEFUNC(unsigned long, OpenSSL_version_num, void, DUMMYARG, return 0, return)
|
||||||
|
+#endif
|
||||||
|
+DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *ctx, ctx, return 0, return)
|
||||||
|
+
|
||||||
|
+DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *x, x, return 0, return)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||||
|
+DEFINEFUNC(int, EVP_PKEY_id, const EVP_PKEY *pkey, pkey, return 0, return)
|
||||||
|
+DEFINEFUNC(int, EVP_PKEY_base_id, const EVP_PKEY *pkey, pkey, return 0, return)
|
||||||
|
+DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *cipher, cipher, int *alg_bits, alg_bits, return 0, return)
|
||||||
|
+DEFINEFUNC2(long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, long options, options, return 0, return)
|
||||||
|
+DEFINEFUNC(long, X509_get_version, X509 *x, x, return 0, return)
|
||||||
|
+DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return)
|
||||||
|
+DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return)
|
||||||
|
+DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return)
|
||||||
|
+DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *x, x, return 0, return)
|
||||||
|
+DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *x, x, return 0, return)
|
||||||
|
+DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, return)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef Q_OS_SYMBIAN
|
||||||
|
#define RESOLVEFUNC(func, ordinal, lib) \
|
||||||
|
@@ -580,7 +641,11 @@
|
||||||
|
static volatile bool symbolsResolved = false;
|
||||||
|
static volatile bool triedToResolveSymbols = false;
|
||||||
|
#ifndef QT_NO_THREAD
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_SSL_library_init));
|
||||||
|
+#else
|
||||||
|
+ QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_OPENSSL_init_ssl));
|
||||||
|
+#endif
|
||||||
|
#endif
|
||||||
|
if (symbolsResolved)
|
||||||
|
return true;
|
||||||
|
@@ -614,9 +679,11 @@
|
||||||
|
RESOLVEFUNC(BIO_write, 269, libs.second )
|
||||||
|
RESOLVEFUNC(BN_num_bits, 387, libs.second )
|
||||||
|
RESOLVEFUNC(CRYPTO_free, 469, libs.second )
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(CRYPTO_num_locks, 500, libs.second )
|
||||||
|
RESOLVEFUNC(CRYPTO_set_id_callback, 513, libs.second )
|
||||||
|
RESOLVEFUNC(CRYPTO_set_locking_callback, 516, libs.second )
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(DSA_free, 594, libs.second )
|
||||||
|
RESOLVEFUNC(ERR_error_string, 744, libs.second )
|
||||||
|
RESOLVEFUNC(ERR_get_error, 749, libs.second )
|
||||||
|
@@ -674,8 +741,10 @@
|
||||||
|
RESOLVEFUNC(SSL_get_peer_cert_chain, 117, libs.first )
|
||||||
|
RESOLVEFUNC(SSL_get_peer_certificate, 118, libs.first )
|
||||||
|
RESOLVEFUNC(SSL_get_verify_result, 132, libs.first )
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(SSL_library_init, 137, libs.first )
|
||||||
|
RESOLVEFUNC(SSL_load_error_strings, 139, libs.first )
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(SSL_new, 140, libs.first )
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
|
||||||
|
RESOLVEFUNC(SSL_ctrl, 95, libs.first )
|
||||||
|
@@ -747,9 +816,11 @@
|
||||||
|
RESOLVEFUNC(BIO_write)
|
||||||
|
RESOLVEFUNC(BN_num_bits)
|
||||||
|
RESOLVEFUNC(CRYPTO_free)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(CRYPTO_num_locks)
|
||||||
|
RESOLVEFUNC(CRYPTO_set_id_callback)
|
||||||
|
RESOLVEFUNC(CRYPTO_set_locking_callback)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(DSA_free)
|
||||||
|
RESOLVEFUNC(ERR_error_string)
|
||||||
|
RESOLVEFUNC(ERR_get_error)
|
||||||
|
@@ -779,10 +850,17 @@
|
||||||
|
RESOLVEFUNC(RAND_seed)
|
||||||
|
RESOLVEFUNC(RAND_status)
|
||||||
|
RESOLVEFUNC(RSA_free)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(sk_free)
|
||||||
|
RESOLVEFUNC(sk_num)
|
||||||
|
RESOLVEFUNC(sk_pop_free)
|
||||||
|
RESOLVEFUNC(sk_value)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(OPENSSL_sk_free)
|
||||||
|
+ RESOLVEFUNC(OPENSSL_sk_num)
|
||||||
|
+ RESOLVEFUNC(OPENSSL_sk_pop_free)
|
||||||
|
+ RESOLVEFUNC(OPENSSL_sk_value)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(SSL_CIPHER_description)
|
||||||
|
RESOLVEFUNC(SSL_CTX_check_private_key)
|
||||||
|
RESOLVEFUNC(SSL_CTX_ctrl)
|
||||||
|
@@ -797,6 +875,7 @@
|
||||||
|
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
|
||||||
|
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
|
||||||
|
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
|
||||||
|
+ RESOLVEFUNC(SSL_CTX_get_cert_store)
|
||||||
|
RESOLVEFUNC(SSL_accept)
|
||||||
|
RESOLVEFUNC(SSL_clear)
|
||||||
|
RESOLVEFUNC(SSL_connect)
|
||||||
|
@@ -807,8 +886,12 @@
|
||||||
|
RESOLVEFUNC(SSL_get_peer_cert_chain)
|
||||||
|
RESOLVEFUNC(SSL_get_peer_certificate)
|
||||||
|
RESOLVEFUNC(SSL_get_verify_result)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(SSL_library_init)
|
||||||
|
RESOLVEFUNC(SSL_load_error_strings)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(OPENSSL_init_ssl)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(SSL_new)
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
|
||||||
|
RESOLVEFUNC(SSL_ctrl)
|
||||||
|
@@ -819,17 +902,47 @@
|
||||||
|
RESOLVEFUNC(SSL_set_connect_state)
|
||||||
|
RESOLVEFUNC(SSL_shutdown)
|
||||||
|
RESOLVEFUNC(SSL_write)
|
||||||
|
+
|
||||||
|
+ RESOLVEFUNC(X509_get_serialNumber)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
||||||
|
+ RESOLVEFUNC(SSL_CTX_ctrl)
|
||||||
|
+ RESOLVEFUNC(EVP_PKEY_id)
|
||||||
|
+ RESOLVEFUNC(EVP_PKEY_base_id)
|
||||||
|
+ RESOLVEFUNC(SSL_CIPHER_get_bits)
|
||||||
|
+ RESOLVEFUNC(SSL_CTX_set_options)
|
||||||
|
+ RESOLVEFUNC(X509_get_version)
|
||||||
|
+ RESOLVEFUNC(X509_get_X509_PUBKEY)
|
||||||
|
+ RESOLVEFUNC(RSA_bits)
|
||||||
|
+ RESOLVEFUNC(DSA_security_bits)
|
||||||
|
+ RESOLVEFUNC(DSA_get0_pqg)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+ RESOLVEFUNC(X509_get_notAfter)
|
||||||
|
+ RESOLVEFUNC(X509_get_notBefore)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(X509_getm_notAfter)
|
||||||
|
+ RESOLVEFUNC(X509_getm_notBefore)
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifndef OPENSSL_NO_SSL2
|
||||||
|
RESOLVEFUNC(SSLv2_client_method)
|
||||||
|
#endif
|
||||||
|
RESOLVEFUNC(SSLv3_client_method)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(SSLv23_client_method)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(TLS_client_method)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(TLSv1_client_method)
|
||||||
|
#ifndef OPENSSL_NO_SSL2
|
||||||
|
RESOLVEFUNC(SSLv2_server_method)
|
||||||
|
#endif
|
||||||
|
RESOLVEFUNC(SSLv3_server_method)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(SSLv23_server_method)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(TLS_server_method)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(TLSv1_server_method)
|
||||||
|
RESOLVEFUNC(X509_NAME_entry_count)
|
||||||
|
RESOLVEFUNC(X509_NAME_get_entry)
|
||||||
|
@@ -846,7 +959,11 @@
|
||||||
|
RESOLVEFUNC(X509_STORE_CTX_get_error)
|
||||||
|
RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
|
||||||
|
RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(X509_STORE_CTX_get_chain)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(X509_STORE_CTX_get0_chain)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(X509_cmp)
|
||||||
|
#ifndef SSLEAY_MACROS
|
||||||
|
RESOLVEFUNC(X509_dup)
|
||||||
|
@@ -867,10 +984,18 @@
|
||||||
|
RESOLVEFUNC(d2i_DSAPrivateKey)
|
||||||
|
RESOLVEFUNC(d2i_RSAPrivateKey)
|
||||||
|
#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf)
|
||||||
|
RESOLVEFUNC(OPENSSL_add_all_algorithms_conf)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(OPENSSL_init_crypto)
|
||||||
|
+#endif
|
||||||
|
RESOLVEFUNC(SSL_CTX_load_verify_locations)
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
RESOLVEFUNC(SSLeay)
|
||||||
|
+#else
|
||||||
|
+ RESOLVEFUNC(OpenSSL_version_num)
|
||||||
|
+#endif
|
||||||
|
#endif // Q_OS_SYMBIAN
|
||||||
|
symbolsResolved = true;
|
||||||
|
delete libs.first;
|
||||||
|
diff -ur qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h 2015-05-07 16:14:44.000000000 +0200
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7-openssl-1.1/src/network/ssl/qsslsocket_openssl_symbols_p.h 2018-01-05 17:59:42.041550255 +0100
|
||||||
|
@@ -207,16 +207,31 @@
|
||||||
|
int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b);
|
||||||
|
long q_BIO_ctrl(BIO *a, int b, long c, void *d);
|
||||||
|
int q_BIO_free(BIO *a);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
BIO *q_BIO_new(BIO_METHOD *a);
|
||||||
|
+#else
|
||||||
|
+BIO *q_BIO_new(const BIO_METHOD *a);
|
||||||
|
+#endif
|
||||||
|
BIO *q_BIO_new_mem_buf(void *a, int b);
|
||||||
|
int q_BIO_read(BIO *a, void *b, int c);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
BIO_METHOD *q_BIO_s_mem();
|
||||||
|
+#else
|
||||||
|
+const BIO_METHOD *q_BIO_s_mem();
|
||||||
|
+#endif
|
||||||
|
int q_BIO_write(BIO *a, const void *b, int c);
|
||||||
|
int q_BN_num_bits(const BIGNUM *a);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
int q_CRYPTO_num_locks();
|
||||||
|
void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
|
||||||
|
void q_CRYPTO_set_id_callback(unsigned long (*a)());
|
||||||
|
void q_CRYPTO_free(void *a);
|
||||||
|
+#else
|
||||||
|
+#define q_CRYPTO_num_locks() 1
|
||||||
|
+#define q_CRYPTO_set_locking_callback(a)
|
||||||
|
+#define q_CRYPTO_set_id_callback(a)
|
||||||
|
+void q_CRYPTO_free(void *a, const char *b, int c);
|
||||||
|
+#endif
|
||||||
|
void q_DSA_free(DSA *a);
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x00908000L
|
||||||
|
// 0.9.8 broke SC and BC by changing this function's signature.
|
||||||
|
@@ -258,6 +273,7 @@
|
||||||
|
void q_RAND_seed(const void *a, int b);
|
||||||
|
int q_RAND_status();
|
||||||
|
void q_RSA_free(RSA *a);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
int q_sk_num(STACK *a);
|
||||||
|
void q_sk_pop_free(STACK *a, void (*b)(void *));
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||||
|
@@ -267,6 +283,16 @@
|
||||||
|
void q_sk_free(STACK *a);
|
||||||
|
char * q_sk_value(STACK *a, int b);
|
||||||
|
#endif
|
||||||
|
+#else
|
||||||
|
+int q_OPENSSL_sk_num(STACK *a);
|
||||||
|
+void q_OPENSSL_sk_pop_free(STACK *a, void (*b)(void *));
|
||||||
|
+void q_OPENSSL_sk_free(_STACK *a);
|
||||||
|
+void * q_OPENSSL_sk_value(STACK *a, int b);
|
||||||
|
+#define q_sk_num q_OPENSSL_sk_num
|
||||||
|
+#define q_sk_pop_free q_OPENSSL_sk_pop_free
|
||||||
|
+#define q_sk_free q_OPENSSL_sk_free
|
||||||
|
+#define q_sk_value q_OPENSSL_sk_value
|
||||||
|
+#endif
|
||||||
|
int q_SSL_accept(SSL *a);
|
||||||
|
int q_SSL_clear(SSL *a);
|
||||||
|
char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c);
|
||||||
|
@@ -314,8 +340,14 @@
|
||||||
|
#else
|
||||||
|
long q_SSL_get_verify_result(SSL *a);
|
||||||
|
#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
int q_SSL_library_init();
|
||||||
|
void q_SSL_load_error_strings();
|
||||||
|
+#else
|
||||||
|
+int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
|
||||||
|
+#define q_SSL_library_init() q_OPENSSL_init_ssl(0, (const OPENSSL_INIT_SETTINGS *) NULL)
|
||||||
|
+#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, (const OPENSSL_INIT_SETTINGS *) NULL)
|
||||||
|
+#endif
|
||||||
|
SSL *q_SSL_new(SSL_CTX *a);
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
|
||||||
|
long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg);
|
||||||
|
@@ -328,11 +360,21 @@
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||||
|
const SSL_METHOD *q_SSLv2_client_method();
|
||||||
|
const SSL_METHOD *q_SSLv3_client_method();
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
const SSL_METHOD *q_SSLv23_client_method();
|
||||||
|
+#else
|
||||||
|
+const SSL_METHOD *q_TLS_client_method();
|
||||||
|
+#define q_SSLv23_client_method q_TLS_client_method
|
||||||
|
+#endif
|
||||||
|
const SSL_METHOD *q_TLSv1_client_method();
|
||||||
|
const SSL_METHOD *q_SSLv2_server_method();
|
||||||
|
const SSL_METHOD *q_SSLv3_server_method();
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
const SSL_METHOD *q_SSLv23_server_method();
|
||||||
|
+#else
|
||||||
|
+const SSL_METHOD *q_TLS_server_method();
|
||||||
|
+#define q_SSLv23_server_method q_TLS_server_method
|
||||||
|
+#endif
|
||||||
|
const SSL_METHOD *q_TLSv1_server_method();
|
||||||
|
#else
|
||||||
|
SSL_METHOD *q_SSLv2_client_method();
|
||||||
|
@@ -377,7 +419,12 @@
|
||||||
|
int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
|
||||||
|
int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
|
||||||
|
X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
|
||||||
|
+#else
|
||||||
|
+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
|
||||||
|
+#define q_X509_STORE_CTX_get_chain q_X509_STORE_CTX_get0_chain
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
|
||||||
|
#define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
|
||||||
|
@@ -399,7 +446,25 @@
|
||||||
|
PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
|
||||||
|
bp,(char *)x,enc,kstr,klen,cb,u)
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx);
|
||||||
|
+ASN1_INTEGER * q_X509_get_serialNumber(X509 *x);
|
||||||
|
+
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
|
||||||
|
+#define q_X509_get_version(x) X509_get_version(x)
|
||||||
|
+#else
|
||||||
|
+int q_EVP_PKEY_id(const EVP_PKEY *pkey);
|
||||||
|
+int q_EVP_PKEY_base_id(const EVP_PKEY *pkey);
|
||||||
|
+int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
|
||||||
|
+long q_SSL_CTX_set_options(SSL_CTX *ctx, long options);
|
||||||
|
+long q_X509_get_version(X509 *x);
|
||||||
|
+X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x);
|
||||||
|
+int q_RSA_bits(const RSA *rsa);
|
||||||
|
+int q_DSA_security_bits(const DSA *dsa);
|
||||||
|
+void q_DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
|
||||||
|
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
|
||||||
|
#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st))
|
||||||
|
@@ -410,8 +475,17 @@
|
||||||
|
#define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i))
|
||||||
|
#define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \
|
||||||
|
q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
|
||||||
|
+
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
#define q_X509_get_notAfter(x) X509_get_notAfter(x)
|
||||||
|
#define q_X509_get_notBefore(x) X509_get_notBefore(x)
|
||||||
|
+#else
|
||||||
|
+ASN1_TIME *q_X509_getm_notAfter(X509 *x);
|
||||||
|
+ASN1_TIME *q_X509_getm_notBefore(X509 *x);
|
||||||
|
+#define q_X509_get_notAfter(x) q_X509_getm_notAfter(x)
|
||||||
|
+#define q_X509_get_notBefore(x) q_X509_getm_notBefore(x)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
|
||||||
|
(char *)(rsa))
|
||||||
|
#define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
|
||||||
|
@@ -421,10 +495,21 @@
|
||||||
|
#else
|
||||||
|
#define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_noconf()
|
||||||
|
#endif
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
void q_OPENSSL_add_all_algorithms_noconf();
|
||||||
|
void q_OPENSSL_add_all_algorithms_conf();
|
||||||
|
+#else
|
||||||
|
+int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
|
||||||
|
+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS | OPENSSL_INIT_LOAD_CONFIG, (const OPENSSL_INIT_SETTINGS *) NULL)
|
||||||
|
+# define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS | OPENSSL_INIT_ADD_ALL_DIGESTS, (const OPENSSL_INIT_SETTINGS *) NULL)
|
||||||
|
+#endif
|
||||||
|
int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath);
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
long q_SSLeay();
|
||||||
|
+#else
|
||||||
|
+unsigned long q_OpenSSL_version_num();
|
||||||
|
+#define q_SSLeay q_OpenSSL_version_num
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// Helper function
|
||||||
|
class QDateTime;
|
12
qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
Normal file
12
qt-everywhere-opensource-src-4.8.7-qmake_LFLAGS.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix
|
||||||
|
--- qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix.qmake_LFLAGS 2015-05-07 09:14:42.000000000 -0500
|
||||||
|
+++ qt-everywhere-opensource-src-4.8.7/qmake/Makefile.unix 2018-02-15 08:25:13.168838577 -0600
|
||||||
|
@@ -3,7 +3,7 @@ BUILD_PATH = @BUILD_PATH@
|
||||||
|
QTOBJS = @QMAKE_QTOBJS@
|
||||||
|
QTSRCS = @QMAKE_QTSRCS@
|
||||||
|
QMAKESPEC = @QMAKESPEC@
|
||||||
|
-LFLAGS = @QMAKE_LFLAGS@
|
||||||
|
+LFLAGS = @QMAKE_LFLAGS@ $(QMAKE_LFLAGS_RELEASE)
|
||||||
|
|
||||||
|
#qmake code
|
||||||
|
OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \
|
@ -1,77 +0,0 @@
|
|||||||
--- src/kernel/qfontdatabase_x11.cpp
|
|
||||||
+++ src/kernel/qfontdatabase_x11.cpp
|
|
||||||
@@ -1589,15 +1589,6 @@ QFontEngine *loadEngine( QFont::Script s
|
|
||||||
if (script == QFont::Latin)
|
|
||||||
// add Euro character
|
|
||||||
FcCharSetAddChar(cs, 0x20ac);
|
|
||||||
- if (script == QFont::Han_SimplifiedChinese)
|
|
||||||
- FcCharSetAddChar(cs, 0x3400);
|
|
||||||
- if (script == QFont::Han_TraditionalChinese){
|
|
||||||
- FcCharSetAddChar(cs, 0x3435);
|
|
||||||
- FcCharSetAddChar(cs, 0xE000);
|
|
||||||
- FcCharSetAddChar(cs, 0xF6B1);
|
|
||||||
- }
|
|
||||||
- if (script == QFont::MiscellaneousSymbols)
|
|
||||||
- FcCharSetAddChar(cs, 0x2714);
|
|
||||||
FcPatternAddCharSet(pattern, FC_CHARSET, cs);
|
|
||||||
FcCharSetDestroy(cs);
|
|
||||||
}
|
|
||||||
@@ -1813,7 +1804,11 @@ static QFontEngine *loadFontConfigFont(c
|
|
||||||
FcPatternPrint(pattern);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ // XftFontMatch calls the right ConfigSubstitute variants, but as we use
|
|
||||||
+ // FcFontMatch/Sort here we have to do it manually.
|
|
||||||
FcConfigSubstitute(0, pattern, FcMatchPattern);
|
|
||||||
+ XftDefaultSubstitute(QPaintDevice::x11AppDisplay(), QPaintDevice::x11AppScreen(), pattern);
|
|
||||||
+
|
|
||||||
// qDebug("1: pattern contains:");
|
|
||||||
// FcPatternPrint(pattern);
|
|
||||||
|
|
||||||
@@ -1847,10 +1842,6 @@ static QFontEngine *loadFontConfigFont(c
|
|
||||||
value.u.s = (const FcChar8 *)cs.data();
|
|
||||||
FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue);
|
|
||||||
}
|
|
||||||
-#ifdef FONT_MATCH_DEBUG
|
|
||||||
- printf("final pattern contains:\n");
|
|
||||||
- FcPatternPrint(pattern);
|
|
||||||
-#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (script != QFont::Unicode) {
|
|
||||||
@@ -1860,19 +1851,15 @@ static QFontEngine *loadFontConfigFont(c
|
|
||||||
if (script == QFont::Latin)
|
|
||||||
// add Euro character
|
|
||||||
FcCharSetAddChar(cs, 0x20ac);
|
|
||||||
- if (script == QFont::Han_SimplifiedChinese)
|
|
||||||
- FcCharSetAddChar(cs, 0x3400);
|
|
||||||
- if (script == QFont::Han_TraditionalChinese) {
|
|
||||||
- FcCharSetAddChar(cs, 0x3435);
|
|
||||||
- FcCharSetAddChar(cs, 0xE000);
|
|
||||||
- FcCharSetAddChar(cs, 0xF6B1);
|
|
||||||
- }
|
|
||||||
- if (script == QFont::MiscellaneousSymbols)
|
|
||||||
- FcCharSetAddChar(cs, 0x2714);
|
|
||||||
FcPatternAddCharSet(pattern, FC_CHARSET, cs);
|
|
||||||
FcCharSetDestroy(cs);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef FONT_MATCH_DEBUG
|
|
||||||
+ printf("final pattern contains:\n");
|
|
||||||
+ FcPatternPrint(pattern);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
QFontEngine *fe = 0;
|
|
||||||
|
|
||||||
for( int jj = (FcGetVersion() >= 20392 ? 0 : 1); jj < 2; ++jj ) {
|
|
||||||
--- src/kernel/qfontdatabase.cpp
|
|
||||||
+++ src/kernel/qfontdatabase.cpp
|
|
||||||
@@ -554,7 +554,7 @@ static const unsigned short sample_chars
|
|
||||||
// GeometricSymbols,
|
|
||||||
{ 0x2500, 0x0 },
|
|
||||||
// MiscellaneousSymbols,
|
|
||||||
- { 0x2640, 0x0 },
|
|
||||||
+ { 0x2640, 0x2714, 0x0 },
|
|
||||||
// EnclosedAndSquare,
|
|
||||||
{ 0x2460, 0x0 },
|
|
||||||
// Braille,
|
|
17
qt-prefer_adwaita_on_gnome.patch
Normal file
17
qt-prefer_adwaita_on_gnome.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
--- src/gui/kernel/qguiplatformplugin.cpp.adwaita 2015-02-12 14:32:45.217935391 +0100
|
||||||
|
+++ src/gui/kernel/qguiplatformplugin.cpp 2015-02-12 14:46:11.471866038 +0100
|
||||||
|
@@ -165,8 +165,13 @@ QString QGuiPlatformPlugin::styleName()
|
||||||
|
case DE_GNOME: {
|
||||||
|
QStringList availableStyles = QStyleFactory::keys();
|
||||||
|
// Set QGtkStyle for GNOME if available
|
||||||
|
+ QString adwaitaStyleKey = QString::fromLatin1("adwaita");
|
||||||
|
QString gtkStyleKey = QString::fromLatin1("GTK+");
|
||||||
|
- if (availableStyles.contains(gtkStyleKey)) {
|
||||||
|
+ if (availableStyles.contains(adwaitaStyleKey)) {
|
||||||
|
+ stylename = adwaitaStyleKey;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ else if (availableStyles.contains(gtkStyleKey)) {
|
||||||
|
stylename = gtkStyleKey;
|
||||||
|
break;
|
||||||
|
}
|
@ -1,12 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.2/tools/designer/uic/main.cpp.sopwith 2004-06-16 17:14:17.000000000 -0400
|
|
||||||
+++ qt-x11-free-3.3.2/tools/designer/uic/main.cpp 2004-06-16 17:21:43.000000000 -0400
|
|
||||||
@@ -149,6 +149,9 @@
|
|
||||||
} else {
|
|
||||||
trmacro = &opt[1];
|
|
||||||
}
|
|
||||||
+ } else if ( opt == "nostdlib") {
|
|
||||||
+ QStringList x;
|
|
||||||
+ QApplication::setLibraryPaths(x);
|
|
||||||
} else if ( opt == "L" ) {
|
|
||||||
if ( !(n < argc-1) ) {
|
|
||||||
error = "Missing plugin path.";
|
|
@ -1,14 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.2/src/kernel/qpixmap_x11.cpp.orig 2004-05-10 13:54:03.592289052 +0200
|
|
||||||
+++ qt-x11-free-3.3.2/src/kernel/qpixmap_x11.cpp 2004-05-10 13:56:10.165560473 +0200
|
|
||||||
@@ -288,8 +288,9 @@
|
|
||||||
{
|
|
||||||
#if defined(QT_CHECK_STATE)
|
|
||||||
if ( qApp->type() == QApplication::Tty ) {
|
|
||||||
- qWarning( "QPixmap: Cannot create a QPixmap when no GUI "
|
|
||||||
- "is being used" );
|
|
||||||
+// qWarning( "QPixmap: Cannot create a QPixmap when no GUI "
|
|
||||||
+// "is being used" );
|
|
||||||
+ ;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp.orig 2004-08-18 14:55:20.629068213 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/src/opengl/qgl_x11.cpp 2004-08-18 15:00:43.090260739 +0200
|
|
||||||
@@ -125,7 +125,7 @@
|
|
||||||
if (gl_syms_resolved)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
- QLibrary gl("GL");
|
|
||||||
+ QLibrary gl("GL.so.1");
|
|
||||||
gl.setAutoUnload(FALSE);
|
|
||||||
|
|
||||||
qt_glCallLists = (_glCallLists) gl.resolve("glCallLists");
|
|
||||||
@@ -283,7 +283,7 @@
|
|
||||||
typedef Status (*_XmuLookupStandardColormap)( Display *dpy, int screen, VisualID visualid, unsigned int depth,
|
|
||||||
Atom property, Bool replace, Bool retain );
|
|
||||||
_XmuLookupStandardColormap qt_XmuLookupStandardColormap;
|
|
||||||
- qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu", "XmuLookupStandardColormap");
|
|
||||||
+ qt_XmuLookupStandardColormap = (_XmuLookupStandardColormap) QLibrary::resolve("Xmu.so.6", "XmuLookupStandardColormap");
|
|
||||||
if (!qt_XmuLookupStandardColormap)
|
|
||||||
qFatal("Unable to resolve Xmu symbols - please check your Xmu library installation.");
|
|
||||||
#define XmuLookupStandardColormap qt_XmuLookupStandardColormap
|
|
||||||
--- qt-x11-free-3.3.3/src/tools/qlibrary.cpp.orig 2004-08-18 14:56:00.322185890 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/src/tools/qlibrary.cpp 2004-08-18 14:57:51.939637946 +0200
|
|
||||||
@@ -425,6 +425,7 @@
|
|
||||||
} else {
|
|
||||||
tmpfilename = QString( "lib%1" ).arg( filename );
|
|
||||||
}
|
|
||||||
+ if ( !filename.contains(".so") )
|
|
||||||
tmpfilename += filter;
|
|
||||||
if(QFile::exists(tmpfilename) || it == filters.end()) {
|
|
||||||
filename = tmpfilename;
|
|
@ -1,20 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.3/tools/tools.pro.qembed 2004-06-08 10:05:03.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/tools/tools.pro 2004-08-11 15:47:35.393118498 +0200
|
|
||||||
@@ -5,6 +5,7 @@
|
|
||||||
SUBDIRS = assistant/lib \
|
|
||||||
designer \
|
|
||||||
assistant \
|
|
||||||
+ qembed \
|
|
||||||
linguist
|
|
||||||
unix:SUBDIRS += qtconfig
|
|
||||||
}
|
|
||||||
--- qt-x11-free-3.3.3/tools/qembed/qembed.pro.qembed 2004-06-08 10:08:40.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.3/tools/qembed/qembed.pro 2004-08-11 15:51:12.008859486 +0200
|
|
||||||
@@ -2,3 +2,7 @@
|
|
||||||
SOURCES = qembed.cpp
|
|
||||||
TARGET = qembed
|
|
||||||
REQUIRES=full-config nocrosscompiler
|
|
||||||
+DESTDIR = ../../bin
|
|
||||||
+target.path=$$bins.path
|
|
||||||
+INSTALLS += target
|
|
||||||
+
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.3/src/kernel/qapplication_x11.cpp.orig 2004-11-09 18:57:15.012843629 +0100
|
|
||||||
+++ qt-x11-free-3.3.3/src/kernel/qapplication_x11.cpp 2004-11-09 19:02:31.351637807 +0100
|
|
||||||
@@ -1412,7 +1412,7 @@
|
|
||||||
False, XA_ATOM, &type, &format, &nitems, &after, &data);
|
|
||||||
|
|
||||||
if (type == XA_ATOM && format == 32) {
|
|
||||||
- ts.writeBlock((const char *) data, nitems * 4);
|
|
||||||
+ ts.writeBlock((const char *) data, nitems * sizeof(long));
|
|
||||||
offset += nitems;
|
|
||||||
} else
|
|
||||||
after = 0;
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.5/configure.gcc4-buildkey 2005-09-11 18:15:27.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.5/configure 2005-09-11 18:18:53.000000000 +0200
|
|
||||||
@@ -3093,7 +3093,7 @@
|
|
||||||
COMPILER_VERSION="3.*"
|
|
||||||
;;
|
|
||||||
*4.*)
|
|
||||||
- COMPILER_VERSION="4"
|
|
||||||
+ COMPILER_VERSION="4.*"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
@ -1,18 +0,0 @@
|
|||||||
Index: tools/designer/uic/form.cpp
|
|
||||||
===================================================================
|
|
||||||
--- qt/tools/designer/uic/form.cpp (revision 460038)
|
|
||||||
+++ qt/tools/designer/uic/form.cpp (working copy)
|
|
||||||
@@ -731,6 +731,13 @@
|
|
||||||
while ( !n2.isNull() ) {
|
|
||||||
if ( n2.tagName() == "includehint" ) {
|
|
||||||
QString file = n2.firstChild().toText().data();
|
|
||||||
+ int colons = file.find("::");
|
|
||||||
+
|
|
||||||
+ if (colons != -1)
|
|
||||||
+ {
|
|
||||||
+ file = file.right(file.length() - colons - 2);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
localIncludes += file;
|
|
||||||
}
|
|
||||||
n2 = n2.nextSibling().toElement();
|
|
@ -1,55 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp.orig 2006-06-20 15:45:44.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp 2006-06-20 15:51:13.000000000 +0200
|
|
||||||
@@ -3294,11 +3294,7 @@
|
|
||||||
// filtering opportunity first to ensure all input methods work
|
|
||||||
// properly regardless of application design.
|
|
||||||
|
|
||||||
-#ifndef QT_NO_IM_EXTENSIONS
|
|
||||||
if( keywidget && keywidget->isEnabled() && keywidget->isInputMethodEnabled() ) {
|
|
||||||
-#else
|
|
||||||
- if( keywidget && keywidget->isEnabled() ) {
|
|
||||||
-#endif
|
|
||||||
if( ( event->type==XKeyPress || event->type==XKeyRelease ) &&
|
|
||||||
sm_blockUserInput ) // block user interaction during session management
|
|
||||||
return TRUE;
|
|
||||||
@@ -5220,11 +5216,12 @@
|
|
||||||
} else {
|
|
||||||
key = (int)(long)keyDict->find( keycode );
|
|
||||||
if ( key )
|
|
||||||
- if( !willRepeat ) // Take out key of dictionary only if this call.
|
|
||||||
+ if( !willRepeat && statefulTranslation ) // Take out key of dictionary only if this call.
|
|
||||||
keyDict->take( keycode );
|
|
||||||
long s = (long)textDict->find( keycode );
|
|
||||||
if ( s ) {
|
|
||||||
- textDict->take( keycode );
|
|
||||||
+ if( statefulTranslation )
|
|
||||||
+ textDict->take( keycode );
|
|
||||||
ascii = (char)(s-256);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--- qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp.orig 2006-06-20 15:46:49.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp 2006-06-20 15:48:14.000000000 +0200
|
|
||||||
@@ -2699,11 +2699,10 @@
|
|
||||||
{
|
|
||||||
QInputContext *qic = 0;
|
|
||||||
|
|
||||||
-#if !defined(QT_NO_IM_EXTENSIONS)
|
|
||||||
if ( isInputMethodEnabled() ) {
|
|
||||||
+#if !defined(QT_NO_IM_EXTENSIONS)
|
|
||||||
qic = icHolderWidget()->ic;
|
|
||||||
#else
|
|
||||||
- {
|
|
||||||
// icHolderWidget is always topLevelWidget
|
|
||||||
QTLWExtra *topdata = icHolderWidget()->topData();
|
|
||||||
qic = (QInputContext *)topdata->xic;
|
|
||||||
@@ -2754,10 +2753,8 @@
|
|
||||||
*/
|
|
||||||
void QWidget::createInputContext()
|
|
||||||
{
|
|
||||||
-#if !defined(QT_NO_IM_EXTENSIONS)
|
|
||||||
if( !isInputMethodEnabled() || QApplication::closingDown() )
|
|
||||||
return;
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
QWidget *icWidget = icHolderWidget();
|
|
||||||
#ifndef QT_NO_IM
|
|
@ -1,11 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/kernel/qfontdatabase_x11.cpp.fonts 2004-08-05 16:42:06.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/src/kernel/qfontdatabase_x11.cpp 2004-09-28 16:11:54.955374161 +0200
|
|
||||||
@@ -975,7 +981,7 @@
|
|
||||||
};
|
|
||||||
const XftDefaultFont defaults[] = {
|
|
||||||
{ "Serif", "serif", FALSE },
|
|
||||||
- { "Sans Serif", "sans-serif", FALSE },
|
|
||||||
+ { "Sans", "sans-serif", FALSE },
|
|
||||||
{ "Monospace", "monospace", TRUE },
|
|
||||||
{ 0, 0, FALSE }
|
|
||||||
};
|
|
@ -1,92 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/src/widgets/qtextedit.cpp.preedit 2006-06-28 17:18:08.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/src/widgets/qtextedit.cpp 2006-06-28 17:20:09.000000000 +0200
|
|
||||||
@@ -1906,9 +1906,6 @@
|
|
||||||
|
|
||||||
void QTextEdit::removeSelectedText( int selNum )
|
|
||||||
{
|
|
||||||
- if(selNum != 0)
|
|
||||||
- resetInputContext();
|
|
||||||
-
|
|
||||||
QTextCursor c1 = doc->selectionStartCursor( selNum );
|
|
||||||
c1.restoreState();
|
|
||||||
QTextCursor c2 = doc->selectionEndCursor( selNum );
|
|
||||||
@@ -3171,7 +3168,6 @@
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- resetInputContext();
|
|
||||||
QTextParagraph *p = doc->paragAt( para );
|
|
||||||
if ( !p )
|
|
||||||
return;
|
|
||||||
@@ -3198,7 +3194,6 @@
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- resetInputContext();
|
|
||||||
for ( int i = 0; i < (int)doc->numSelections(); ++i )
|
|
||||||
doc->removeSelection( i );
|
|
||||||
|
|
||||||
@@ -3240,7 +3235,6 @@
|
|
||||||
if ( d->optimMode )
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
- resetInputContext();
|
|
||||||
QTextParagraph *p = doc->paragAt( para );
|
|
||||||
if ( !p )
|
|
||||||
return;
|
|
||||||
@@ -3285,7 +3279,6 @@
|
|
||||||
if ( isReadOnly() || !doc->commands()->isUndoAvailable() || !undoEnabled )
|
|
||||||
return;
|
|
||||||
|
|
||||||
- resetInputContext();
|
|
||||||
for ( int i = 0; i < (int)doc->numSelections(); ++i )
|
|
||||||
doc->removeSelection( i );
|
|
||||||
|
|
||||||
@@ -3336,7 +3329,6 @@
|
|
||||||
if ( isReadOnly() || !doc->commands()->isRedoAvailable() || !undoEnabled )
|
|
||||||
return;
|
|
||||||
|
|
||||||
- resetInputContext();
|
|
||||||
for ( int i = 0; i < (int)doc->numSelections(); ++i )
|
|
||||||
doc->removeSelection( i );
|
|
||||||
|
|
||||||
@@ -3450,7 +3442,6 @@
|
|
||||||
{
|
|
||||||
if ( isReadOnly() )
|
|
||||||
return;
|
|
||||||
- resetInputContext();
|
|
||||||
normalCopy();
|
|
||||||
removeSelectedText();
|
|
||||||
updateMicroFocusHint();
|
|
||||||
@@ -3938,7 +3929,6 @@
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- resetInputContext();
|
|
||||||
if ( !isModified() && isReadOnly() &&
|
|
||||||
this->context() == context && this->text() == text )
|
|
||||||
return;
|
|
||||||
@@ -4112,7 +4102,6 @@
|
|
||||||
if ( !p )
|
|
||||||
return;
|
|
||||||
|
|
||||||
- resetInputContext();
|
|
||||||
if ( index > p->length() - 1 )
|
|
||||||
index = p->length() - 1;
|
|
||||||
|
|
||||||
@@ -4169,7 +4158,6 @@
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
- resetInputContext();
|
|
||||||
if ( doc->hasSelection( selNum ) ) {
|
|
||||||
doc->removeSelection( selNum );
|
|
||||||
repaintChanged();
|
|
||||||
@@ -5072,7 +5060,6 @@
|
|
||||||
{
|
|
||||||
if ( dc == doc )
|
|
||||||
return;
|
|
||||||
- resetInputContext();
|
|
||||||
doc = dc;
|
|
||||||
delete cursor;
|
|
||||||
cursor = new QTextCursor( doc );
|
|
@ -1,36 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.6/mkspecs/linux-g++/qmake.conf.orig 2006-06-21 15:37:53.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/mkspecs/linux-g++/qmake.conf 2006-06-21 15:38:02.000000000 +0200
|
|
||||||
@@ -84,7 +84,7 @@
|
|
||||||
QMAKE_MOVE = mv -f
|
|
||||||
QMAKE_DEL_FILE = rm -f
|
|
||||||
QMAKE_DEL_DIR = rmdir
|
|
||||||
-QMAKE_STRIP = strip
|
|
||||||
-QMAKE_STRIPFLAGS_LIB += --strip-unneeded
|
|
||||||
+QMAKE_STRIP =
|
|
||||||
+QMAKE_STRIPFLAGS_LIB +=
|
|
||||||
QMAKE_CHK_DIR_EXISTS = test -d
|
|
||||||
QMAKE_MKDIR = mkdir -p
|
|
||||||
--- qt-x11-free-3.3.6/mkspecs/linux-g++-32/qmake.conf.orig 2006-06-21 15:37:09.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/mkspecs/linux-g++-32/qmake.conf 2006-06-21 15:37:19.000000000 +0200
|
|
||||||
@@ -84,7 +84,7 @@
|
|
||||||
QMAKE_MOVE = mv -f
|
|
||||||
QMAKE_DEL_FILE = rm -f
|
|
||||||
QMAKE_DEL_DIR = rmdir
|
|
||||||
-QMAKE_STRIP = strip
|
|
||||||
-QMAKE_STRIPFLAGS_LIB += --strip-unneeded
|
|
||||||
+QMAKE_STRIP =
|
|
||||||
+QMAKE_STRIPFLAGS_LIB +=
|
|
||||||
QMAKE_CHK_DIR_EXISTS = test -d
|
|
||||||
QMAKE_MKDIR = mkdir -p
|
|
||||||
--- qt-x11-free-3.3.6/mkspecs/linux-g++-64/qmake.conf.orig 2006-06-21 15:36:23.000000000 +0200
|
|
||||||
+++ qt-x11-free-3.3.6/mkspecs/linux-g++-64/qmake.conf 2006-06-21 15:36:56.000000000 +0200
|
|
||||||
@@ -87,7 +87,7 @@
|
|
||||||
QMAKE_MOVE = mv -f
|
|
||||||
QMAKE_DEL_FILE = rm -f
|
|
||||||
QMAKE_DEL_DIR = rmdir
|
|
||||||
-QMAKE_STRIP = strip
|
|
||||||
-QMAKE_STRIPFLAGS_LIB += --strip-unneeded
|
|
||||||
+QMAKE_STRIP =
|
|
||||||
+QMAKE_STRIPFLAGS_LIB +=
|
|
||||||
QMAKE_CHK_DIR_EXISTS = test -d
|
|
||||||
QMAKE_MKDIR = mkdir -p
|
|
@ -1,14 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.7/src/tools/qsettings.cpp.tn 2006-11-09 20:53:25.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.7/src/tools/qsettings.cpp 2006-11-09 20:59:53.000000000 +0100
|
|
||||||
@@ -994,7 +994,10 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QFile file( filename + ".tmp" );
|
|
||||||
- if (! file.open(IO_WriteOnly)) {
|
|
||||||
+ mode_t old_umask = umask(0022);
|
|
||||||
+ bool f = file.open(IO_WriteOnly);
|
|
||||||
+ umask(old_umask);
|
|
||||||
+ if (! f) {
|
|
||||||
|
|
||||||
#ifdef QT_CHECK_STATE
|
|
||||||
qWarning("QSettings::sync: failed to open '%s' for writing",
|
|
@ -1,70 +0,0 @@
|
|||||||
diff -Nur qt-x11-free-3.3.8/src/sql/drivers/mysql/qsql_mysql.cpp qt-x11-free-3.3.8-me/src/sql/drivers/mysql/qsql_mysql.cpp
|
|
||||||
--- qt-x11-free-3.3.8/src/sql/drivers/mysql/qsql_mysql.cpp 2007-01-11 14:38:34.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.8-snapshot-me/src/sql/drivers/mysql/qsql_mysql.cpp 2007-05-22 17:15:26.000000000 +0200
|
|
||||||
@@ -37,7 +37,6 @@
|
|
||||||
#include "qsql_mysql.h"
|
|
||||||
#include <private/qsqlextension_p.h>
|
|
||||||
|
|
||||||
-#include <qapplication.h>
|
|
||||||
#include <qdatetime.h>
|
|
||||||
#include <qvaluevector.h>
|
|
||||||
#include <qsqlrecord.h>
|
|
||||||
@@ -52,6 +51,9 @@
|
|
||||||
|
|
||||||
QPtrDict<QSqlOpenExtension> *qSqlOpenExtDict();
|
|
||||||
|
|
||||||
+static int qMySqlConnectionCount = 0;
|
|
||||||
+static bool qMySqlInitHandledByUser = FALSE;
|
|
||||||
+
|
|
||||||
class QMYSQLOpenExtension : public QSqlOpenExtension
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
@@ -354,9 +356,8 @@
|
|
||||||
{
|
|
||||||
#ifndef Q_NO_MYSQL_EMBEDDED
|
|
||||||
# if MYSQL_VERSION_ID >= 40000
|
|
||||||
- static bool init = FALSE;
|
|
||||||
- if ( init )
|
|
||||||
- return;
|
|
||||||
+ if ( qMySqlInitHandledByUser || qMySqlConnectionCount > 1 )
|
|
||||||
+ return;
|
|
||||||
|
|
||||||
// this should only be called once
|
|
||||||
// has no effect on client/server library
|
|
||||||
@@ -366,8 +367,6 @@
|
|
||||||
qWarning( "QMYSQLDriver::qServerInit: unable to start server." );
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
- qAddPostRoutine(qServerEnd);
|
|
||||||
- init = TRUE;
|
|
||||||
|
|
||||||
# endif // MYSQL_VERSION_ID
|
|
||||||
#endif // Q_NO_MYSQL_EMBEDDED
|
|
||||||
@@ -392,8 +391,10 @@
|
|
||||||
d->mysql = (MYSQL *) con;
|
|
||||||
setOpen( TRUE );
|
|
||||||
setOpenError( FALSE );
|
|
||||||
+ if (qMySqlConnectionCount == 1)
|
|
||||||
+ qMySqlInitHandledByUser = TRUE;
|
|
||||||
} else {
|
|
||||||
- qServerInit();
|
|
||||||
+ qServerInit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -402,10 +403,15 @@
|
|
||||||
qSqlOpenExtDict()->insert( this, new QMYSQLOpenExtension(this) );
|
|
||||||
d = new QMYSQLDriverPrivate();
|
|
||||||
d->mysql = 0;
|
|
||||||
+ qMySqlConnectionCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
QMYSQLDriver::~QMYSQLDriver()
|
|
||||||
{
|
|
||||||
+ qMySqlConnectionCount--;
|
|
||||||
+ if (qMySqlConnectionCount == 0 && !qMySqlInitHandledByUser)
|
|
||||||
+ qServerEnd();
|
|
||||||
+
|
|
||||||
delete d;
|
|
||||||
if ( !qSqlOpenExtDict()->isEmpty() ) {
|
|
||||||
QSqlOpenExtension *ext = qSqlOpenExtDict()->take( this );
|
|
@ -1,40 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.8/src/widgets/qtextedit.cpp.im 2007-03-19 10:19:10.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.8/src/widgets/qtextedit.cpp 2007-03-19 10:19:47.000000000 +0100
|
|
||||||
@@ -5059,6 +5059,10 @@
|
|
||||||
|
|
||||||
void QTextEdit::setDocument( QTextDocument *dc )
|
|
||||||
{
|
|
||||||
+ if ( dc == 0 ) {
|
|
||||||
+ qWarning( "Q3TextEdit::setDocument() called with null Q3TextDocument pointer" );
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
if ( dc == doc )
|
|
||||||
return;
|
|
||||||
resetInputContext();
|
|
||||||
--- qt-x11-free-3.3.8/src/widgets/qlineedit.cpp.im 2007-03-19 10:20:03.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.8/src/widgets/qlineedit.cpp 2007-03-19 10:22:11.000000000 +0100
|
|
||||||
@@ -457,10 +457,10 @@
|
|
||||||
\property QLineEdit::text
|
|
||||||
\brief the line edit's text
|
|
||||||
|
|
||||||
- Setting this property clears the selection, clears the undo/redo
|
|
||||||
- history, moves the cursor to the end of the line and resets the
|
|
||||||
- \c modified property to FALSE. The text is not validated when
|
|
||||||
- inserted with setText().
|
|
||||||
+ Note that setting this property clears the selection, clears the
|
|
||||||
+ undo/redo history, moves the cursor to the end of the line and
|
|
||||||
+ resets the \c modified property to FALSE. The text is not
|
|
||||||
+ validated when inserted with setText().
|
|
||||||
|
|
||||||
The text is truncated to maxLength() length.
|
|
||||||
|
|
||||||
@@ -1014,6 +1014,9 @@
|
|
||||||
/*!
|
|
||||||
Selects text from position \a start and for \a length characters.
|
|
||||||
|
|
||||||
+ Note that this function sets the cursor's position to the end of
|
|
||||||
+ the selection regardless of its current position.
|
|
||||||
+
|
|
||||||
\sa deselect() selectAll() getSelection() cursorForward() cursorBackward()
|
|
||||||
*/
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
|||||||
--- qt-x11-free-3.3.8/src/kernel/qwidget_x11.cpp 2007-02-02 15:01:13.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.7/src/kernel/qwidget_x11.cpp 2006-10-19 16:25:16.000000000 +0200
|
|
||||||
@@ -1442,7 +1442,16 @@
|
|
||||||
QWidget *tlw = topLevelWidget();
|
|
||||||
if ( tlw->isVisible() && !tlw->topData()->embedded && !qt_deferred_map_contains(tlw) ) {
|
|
||||||
XSetInputFocus( x11Display(), tlw->winId(), RevertToNone, qt_x_time);
|
|
||||||
- focusInputContext();
|
|
||||||
+
|
|
||||||
+#ifndef QT_NO_XIM
|
|
||||||
+ // trigger input context creation if it hasn't happened already
|
|
||||||
+ createInputContext();
|
|
||||||
+
|
|
||||||
+ if (tlw->topData()->xic) {
|
|
||||||
+ QInputContext *qic = (QInputContext *) tlw->topData()->xic;
|
|
||||||
+ qic->setFocus();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2717,16 +2726,14 @@
|
|
||||||
{
|
|
||||||
#ifndef QT_NO_XIM
|
|
||||||
QWidget *tlw = topLevelWidget();
|
|
||||||
- if (!tlw->isPopup() || isInputMethodEnabled()) {
|
|
||||||
- QTLWExtra *topdata = tlw->topData();
|
|
||||||
+ QTLWExtra *topdata = tlw->topData();
|
|
||||||
|
|
||||||
- // trigger input context creation if it hasn't happened already
|
|
||||||
- createInputContext();
|
|
||||||
+ // trigger input context creation if it hasn't happened already
|
|
||||||
+ createInputContext();
|
|
||||||
|
|
||||||
- if (topdata->xic) {
|
|
||||||
- QInputContext *qic = (QInputContext *) topdata->xic;
|
|
||||||
- qic->setFocus();
|
|
||||||
- }
|
|
||||||
+ if (topdata->xic) {
|
|
||||||
+ QInputContext *qic = (QInputContext *) topdata->xic;
|
|
||||||
+ qic->setFocus();
|
|
||||||
}
|
|
||||||
#endif // QT_NO_XIM
|
|
||||||
}
|
|
||||||
--- qt-x11-free-3.3.8/src/widgets/qtextedit.cpp 2007-02-02 15:01:23.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.7/src/widgets/qtextedit.cpp 2006-10-19 16:25:34.000000000 +0200
|
|
||||||
@@ -4972,10 +4972,6 @@
|
|
||||||
|
|
||||||
void QTextEdit::setDocument( QTextDocument *dc )
|
|
||||||
{
|
|
||||||
- if ( dc == 0 ) {
|
|
||||||
- qWarning( "Q3TextEdit::setDocument() called with null Q3TextDocument pointer" );
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
if ( dc == doc )
|
|
||||||
return;
|
|
||||||
resetInputContext();
|
|
||||||
--- qt-x11-free-3.3.8/src/widgets/qlineedit.cpp 2007-02-02 15:01:24.000000000 +0100
|
|
||||||
+++ qt-x11-free-3.3.7/src/widgets/qlineedit.cpp 2006-10-19 16:25:36.000000000 +0200
|
|
||||||
@@ -446,10 +446,10 @@
|
|
||||||
\property QLineEdit::text
|
|
||||||
\brief the line edit's text
|
|
||||||
|
|
||||||
- Note that setting this property clears the selection, clears the
|
|
||||||
- undo/redo history, moves the cursor to the end of the line and
|
|
||||||
- resets the \c modified property to FALSE. The text is not
|
|
||||||
- validated when inserted with setText().
|
|
||||||
+ Setting this property clears the selection, clears the undo/redo
|
|
||||||
+ history, moves the cursor to the end of the line and resets the
|
|
||||||
+ \c modified property to FALSE. The text is not validated when
|
|
||||||
+ inserted with setText().
|
|
||||||
|
|
||||||
The text is truncated to maxLength() length.
|
|
||||||
|
|
||||||
@@ -1002,9 +1002,6 @@
|
|
||||||
/*!
|
|
||||||
Selects text from position \a start and for \a length characters.
|
|
||||||
|
|
||||||
- Note that this function sets the cursor's position to the end of
|
|
||||||
- the selection regardless of its current position.
|
|
||||||
-
|
|
||||||
\sa deselect() selectAll() getSelection() cursorForward() cursorBackward()
|
|
||||||
*/
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user