Compare commits
1224 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cfbbb5d076 | ||
|
|
6f3cdac015 | ||
|
|
b763e2cdaa | ||
|
|
456b19a35a | ||
|
|
6ad897819c | ||
|
|
b256211737 | ||
|
|
4651571ec3 | ||
|
|
a6179ec639 | ||
|
|
b4565e127a | ||
|
|
31df36cbfe | ||
|
|
cd0a5fef30 | ||
|
|
6a5e53a34a | ||
|
|
0dde424db3 | ||
|
|
fcd5e44e15 | ||
|
|
73b34cbe18 | ||
|
|
b463530a72 | ||
|
|
a53a30c7f8 | ||
|
|
988f374151 | ||
|
|
96e95d0a9f | ||
|
|
b4b8a969f4 | ||
|
|
b4120d6f25 | ||
|
|
9a16a83c95 | ||
|
|
e9dfc997a0 | ||
|
|
0f6ec6e76d | ||
|
|
5deb446b50 | ||
|
|
e0d2525a52 | ||
|
|
73d9ee0e62 | ||
|
|
9d900681d7 | ||
|
|
9d2963f469 | ||
|
|
a8b315f41f | ||
|
|
273283db92 | ||
|
|
ef9a92d225 | ||
|
|
7b06b81306 | ||
|
|
1481aac73f | ||
|
|
b246dc21c6 | ||
|
|
0fd83a217b | ||
|
|
b292ecef1f | ||
|
|
f4dfcefbd5 | ||
|
|
194303fc8f | ||
|
|
e5b30eecaf | ||
|
|
f5cc6dbdfa | ||
|
|
b433772b03 | ||
|
|
4e99d8d090 | ||
|
|
0594d4e349 | ||
|
|
756c3a09af | ||
|
|
1d3fc6c0c0 | ||
|
|
a3344ef699 | ||
|
|
68135b53fc | ||
|
|
436547a80e | ||
|
|
9aa26f0d64 | ||
|
|
48791fd514 | ||
|
|
32ec6ad073 | ||
|
|
296c534663 | ||
|
|
cb35b3166e | ||
|
|
7276fbc1d1 | ||
|
|
31863fc1b4 | ||
|
|
f46c1b76d8 | ||
|
|
eaecf396bf | ||
|
|
a628761838 | ||
|
|
126adb6ef3 | ||
|
|
932ad8ad29 | ||
|
|
bcfb7a6cdd | ||
|
|
a9b9699bde | ||
|
|
51b11b36a4 | ||
|
|
59a015fb85 | ||
|
|
bba6657bb5 | ||
|
|
5e41964965 | ||
|
|
04c42b6e53 | ||
|
|
e248c6812e | ||
|
|
ff6983e400 | ||
|
|
1edd94a950 | ||
|
|
a93793dca3 | ||
|
|
483d8f3446 | ||
|
|
58e1481d38 | ||
|
|
64a7fc279c | ||
|
|
e35e112ea9 | ||
|
|
4fa78201a1 | ||
|
|
89d16a5123 | ||
|
|
c7f2c88b18 | ||
|
|
b663f3a00b | ||
|
|
0955a59563 | ||
|
|
286fff4e5f | ||
|
|
24a42839ba | ||
|
|
2a8be23d17 | ||
|
|
d3df4678ca | ||
|
|
a99d14f61c | ||
|
|
c50063397f | ||
|
|
3fd7dbc940 | ||
|
|
b01e20f1d1 | ||
|
|
1e36e40e29 | ||
|
|
205d0eb4da | ||
|
|
61525f0662 | ||
|
|
6476f6a265 | ||
|
|
d026fd4a04 | ||
|
|
33c43c9264 | ||
|
|
70b13d734d | ||
|
|
c9beb22f7b | ||
|
|
420a09363c | ||
|
|
5ff8fe6971 | ||
|
|
a6151ebb95 | ||
|
|
66becfdab1 | ||
|
|
874b7207b0 | ||
|
|
aa62d0f334 | ||
|
|
8b9601df17 | ||
|
|
c7cf1f531d | ||
|
|
33f7754a71 | ||
|
|
1c993d52b8 | ||
|
|
8725dca380 | ||
|
|
8c7dca8c79 | ||
|
|
021c4d7e2e | ||
|
|
29fe165511 | ||
|
|
e19d620267 | ||
|
|
65ee452a99 | ||
|
|
39acc6488a | ||
|
|
c91be5893b | ||
|
|
e994543ee7 | ||
|
|
dd82b30433 | ||
|
|
bd8e9085ab | ||
|
|
6ab7b87a02 | ||
|
|
a0fc947f89 | ||
|
|
370f0d1d86 | ||
|
|
7c675b34c5 | ||
|
|
d5bc1b66d2 | ||
|
|
19623af04e | ||
|
|
18a6d9803e | ||
|
|
1892c64acc | ||
|
|
59fbfd6205 | ||
|
|
c1958ae9f2 | ||
|
|
14154dac31 | ||
|
|
38af387ee3 | ||
|
|
c9ef2d019e | ||
|
|
7d5d0a19e7 | ||
|
|
a40d0b44e1 | ||
|
|
af8c3fe98e | ||
|
|
59298d9e82 | ||
|
|
132ccf021f | ||
|
|
7cf53a9f60 | ||
|
|
2b83d03604 | ||
|
|
5a5737e3b6 | ||
|
|
a124d17825 | ||
|
|
9d96830571 | ||
|
|
6499088f7f | ||
|
|
3d87ee7716 | ||
|
|
6cbbc789d5 | ||
|
|
5834691e69 | ||
|
|
3a77b7e005 | ||
|
|
ded10365a1 | ||
|
|
3af04c1dce | ||
|
|
fe8ed0a3f6 | ||
|
|
af5f593b6d | ||
|
|
8f33324750 | ||
|
|
aeace5d005 | ||
|
|
a861fa0f92 | ||
|
|
0c33f0e958 | ||
|
|
e4bf7a2a3c | ||
|
|
4403cf0567 | ||
|
|
2ea4cef672 | ||
|
|
ee1bd4cc6d | ||
|
|
349e9cce9a | ||
|
|
2c704dd1a1 | ||
|
|
9dfb837019 | ||
|
|
013456187e | ||
|
|
3d165c1a90 | ||
|
|
c64797fe26 | ||
|
|
0682c4015f | ||
|
|
2b02a4c342 | ||
|
|
4e4a362234 | ||
|
|
e26101adaa | ||
|
|
0f9f9ec788 | ||
|
|
8def2dc162 | ||
|
|
34490abc84 | ||
|
|
8977275f28 | ||
|
|
49c1580b70 | ||
|
|
f43a8675b8 | ||
|
|
0561c7a68d | ||
|
|
7bd7c02a11 | ||
|
|
d48542e1cd | ||
|
|
9bf03f57da | ||
|
|
aba75fdc95 | ||
|
|
8537b1cefa | ||
|
|
34f9e6a0f3 | ||
|
|
a4c3271854 | ||
|
|
e465023051 | ||
|
|
6552a8245b | ||
|
|
64d3350264 | ||
|
|
ae5f82e455 | ||
|
|
6d8010d3d4 | ||
|
|
d88b7a6d6b | ||
|
|
b95bbb5e39 | ||
|
|
a5f516c818 | ||
|
|
fb2bc139bb | ||
|
|
824aeb77c6 | ||
|
|
7a34a5971e | ||
|
|
22cd009ef7 | ||
|
|
68e943506e | ||
|
|
e79647c45d | ||
|
|
b178259235 | ||
|
|
8f8b394c96 | ||
|
|
23db27831c | ||
|
|
a7b21b1644 | ||
|
|
a846518f81 | ||
|
|
c0f9d302ec | ||
|
|
cf210a87d7 | ||
|
|
51da151a6f | ||
|
|
d8702b395d | ||
|
|
5a59a1f542 | ||
|
|
a376dcc190 | ||
|
|
e1ede022f8 | ||
|
|
25a514da8a | ||
|
|
be58a6ce2c | ||
|
|
3c2eb053d6 | ||
|
|
493d79886e | ||
|
|
c2be5f3155 | ||
|
|
c254ebb56c | ||
|
|
4c06f52d77 | ||
|
|
5f360423c5 | ||
|
|
c3b074f6e2 | ||
|
|
e9de907f9e | ||
|
|
393a1261b3 | ||
|
|
e0ea002e0d | ||
|
|
f86351c05f | ||
|
|
98b8f4a9fd | ||
|
|
a5f632d815 | ||
|
|
9ddc11fbb5 | ||
|
|
9e8b2f2521 | ||
|
|
a172dff58b | ||
|
|
f1574cbe4d | ||
|
|
c37e425341 | ||
|
|
07cecfc601 | ||
|
|
2f19600708 | ||
|
|
26799f67a9 | ||
|
|
14147de0c2 | ||
|
|
f38901509e | ||
|
|
432b7ee2bc | ||
|
|
c132b6cfc7 | ||
|
|
f191798faf | ||
|
|
24981f75a0 | ||
|
|
14df59d47c | ||
|
|
415d916129 | ||
|
|
aaa2e0b1cd | ||
|
|
7ce29eecc1 | ||
|
|
71c16bad33 | ||
|
|
d82895127e | ||
|
|
8219a413ff | ||
|
|
b1ff243c57 | ||
|
|
cc79b08441 | ||
|
|
6902813a11 | ||
|
|
abd9242f33 | ||
|
|
1b818f2e46 | ||
|
|
0b7db6888a | ||
|
|
cf14868619 | ||
|
|
bdcb8558e3 | ||
|
|
9e46e5789c | ||
|
|
85e95a765d | ||
|
|
ca4152995a | ||
|
|
eb2a54decf | ||
|
|
eb9efc9fd2 | ||
|
|
5452525143 | ||
|
|
291b044028 | ||
|
|
e4cc5c09a4 | ||
|
|
b21eb01cff | ||
|
|
7eeebd4311 | ||
|
|
609e40718d | ||
|
|
d2d52567ad | ||
|
|
f6b264a34b | ||
|
|
7466f846b7 | ||
|
|
353c7c622e | ||
|
|
2c49983041 | ||
|
|
7fd19d7a36 | ||
|
|
7c77278010 | ||
|
|
7550157d66 | ||
|
|
70d70a0607 | ||
|
|
2c0a4ff143 | ||
|
|
6573e24d59 | ||
|
|
e12140f8da | ||
|
|
3fc80381fd | ||
|
|
7c0526e9b2 | ||
|
|
7cff8c4403 | ||
|
|
442b3d265a | ||
|
|
3db7344f33 | ||
|
|
9c85042de6 | ||
|
|
35eb92138a | ||
|
|
0ab9766253 | ||
|
|
a43f2ba010 | ||
|
|
9ed76387fa | ||
|
|
449c4bc362 | ||
|
|
94a9170808 | ||
|
|
3d0a2d50f0 | ||
|
|
0ce142e58d | ||
|
|
d09a12e0d6 | ||
|
|
f9379adca2 | ||
|
|
e97ed4374f | ||
|
|
e028a5c090 | ||
|
|
b71f28037f | ||
|
|
228f30e055 | ||
|
|
3a1b2871b8 | ||
|
|
e07d7f01a8 | ||
|
|
4e86b3f617 | ||
|
|
81c3558ea1 | ||
|
|
8fd73a935d | ||
|
|
b53a66b7e2 | ||
|
|
d116261e1f | ||
|
|
022327c408 | ||
|
|
ae2b2e7cfc | ||
|
|
767b2e2604 | ||
|
|
f317dd3831 | ||
|
|
0bedb51b33 | ||
|
|
057a50d58e | ||
|
|
f5aba05c93 | ||
|
|
8b9f0402b0 | ||
|
|
aeba575e1c | ||
|
|
e635f9d98e | ||
|
|
2cc409cb65 | ||
|
|
39f0a60792 | ||
|
|
79ff1b669c | ||
|
|
f714f01b45 | ||
|
|
4fafdd98b3 | ||
|
|
0832bad2b6 | ||
|
|
bf4558b21f | ||
|
|
299a97c8ce | ||
|
|
684ffdd234 | ||
|
|
7624a08fef | ||
|
|
c1af0ceafc | ||
|
|
6dd3432ecb | ||
|
|
c22feaab35 | ||
|
|
8183d328e8 | ||
|
|
bd92a61a5f | ||
|
|
50c50448bf | ||
|
|
27e2ae0388 | ||
|
|
c6aca6bb60 | ||
|
|
63013ee2aa | ||
|
|
2476d35142 | ||
|
|
668287b940 | ||
|
|
c21b6f4705 | ||
|
|
d717a2dcfc | ||
|
|
b314f03bf4 | ||
|
|
7edf79de26 | ||
|
|
4ea01b2cf3 | ||
|
|
f1476f31fe | ||
|
|
a51a31466d | ||
|
|
1bede5c3fb | ||
|
|
5445b3d7ec | ||
|
|
6faba61db1 | ||
|
|
3a1ce87c7e | ||
|
|
2e39400e18 | ||
|
|
eaed6d1912 | ||
|
|
21275a1636 | ||
|
|
f601994eff | ||
|
|
53edb2a4fb | ||
|
|
8b3ff3919d | ||
|
|
a8f62fe9af | ||
|
|
ed3c5075dd | ||
|
|
f2f781799a | ||
|
|
41dbd20d56 | ||
|
|
dc898e3f84 | ||
|
|
80fbbc38e3 | ||
|
|
be152f9b61 | ||
|
|
ef4690d511 | ||
|
|
f5e758bd60 | ||
|
|
640f06928f | ||
|
|
6eb777a8af | ||
|
|
0ee9a4790a | ||
|
|
22d046d7fe | ||
|
|
1204a850f3 | ||
|
|
c5cd4174c3 | ||
|
|
ee6b79becf | ||
|
|
a6899f2a9d | ||
|
|
ce58d8887f | ||
|
|
8cd9e34ee3 | ||
|
|
43e241b235 | ||
|
|
69de896589 | ||
|
|
d780dde9e1 | ||
|
|
553628efa1 | ||
|
|
b57180a684 | ||
|
|
3ff5a82e46 | ||
|
|
a233022934 | ||
|
|
53602c400d | ||
|
|
342c64c2f2 | ||
|
|
9379a48e22 | ||
|
|
8009a7f0b1 | ||
|
|
e0ab377f9b | ||
|
|
50101fba11 | ||
|
|
925ed7c70f | ||
|
|
4244349600 | ||
|
|
08bf2e0463 | ||
|
|
1090eba9a8 | ||
|
|
006d46362c | ||
|
|
84504014aa | ||
|
|
3fa5813ea3 | ||
|
|
18dba17f0b | ||
|
|
6d797d5356 | ||
|
|
676316bbd3 | ||
|
|
f64647077f | ||
|
|
b2188f5dc1 | ||
|
|
76c6f49805 | ||
|
|
ca317c6798 | ||
|
|
173cc862a1 | ||
|
|
fd1fabf5c3 | ||
|
|
bd69e6a6cd | ||
|
|
464fa4715f | ||
|
|
9b31aff56c | ||
|
|
a3719d3033 | ||
|
|
372a907e97 | ||
|
|
9dfff27c42 | ||
|
|
f060343a82 | ||
|
|
f7c188c019 | ||
|
|
5cc1318279 | ||
|
|
dca3ea896e | ||
|
|
6754614ac1 | ||
|
|
64b85e7bd8 | ||
|
|
6f39855c08 | ||
|
|
fd92e7150d | ||
|
|
383127cd0b | ||
|
|
227fafb93f | ||
|
|
5b97a58230 | ||
|
|
b043a0a610 | ||
|
|
280f34ec61 | ||
|
|
1ca773c2d7 | ||
|
|
4b394fc847 | ||
|
|
0039418001 | ||
|
|
c8e8cdaaf4 | ||
|
|
8f3e43326b | ||
|
|
f7dbdba267 | ||
|
|
2823c0f485 | ||
|
|
b042cabc5e | ||
|
|
651723b4d4 | ||
|
|
e11e51c252 | ||
|
|
52711beba5 | ||
|
|
a265fb763b | ||
|
|
3bd037b7d9 | ||
|
|
e9c0faba42 | ||
|
|
d7696bd25f | ||
|
|
431227e1af | ||
|
|
71c3f7e93d | ||
|
|
26e9d07718 | ||
|
|
8d6b560ff3 | ||
|
|
62d231aeff | ||
|
|
0d1b73f857 | ||
|
|
ebf0b6ee4d | ||
|
|
d985b95ef9 | ||
|
|
19c44967cb | ||
|
|
00d14e3515 | ||
|
|
c8fdd5e847 | ||
|
|
97aec9ae8e | ||
|
|
05aeaeef9e | ||
|
|
8dae05deaf | ||
|
|
23f2aab4d6 | ||
|
|
3415b6c553 | ||
|
|
83af296cb2 | ||
|
|
aa493ff8db | ||
|
|
7cf479135d | ||
|
|
4a857ac023 | ||
|
|
32eb38073e | ||
|
|
c672066fbc | ||
|
|
f136ee9b57 | ||
|
|
144e4af8bc | ||
|
|
311d782963 | ||
|
|
5c09061e0f | ||
|
|
f7bf35052e | ||
|
|
ca0c7c1649 | ||
|
|
80b94156ed | ||
|
|
14dc863da5 | ||
|
|
c83db6cdf0 | ||
|
|
c9023cadbf | ||
|
|
c4ad589fd5 | ||
|
|
71be77c399 | ||
|
|
2807d69db3 | ||
|
|
76beaf12ef | ||
|
|
512ef3e2ba | ||
|
|
b9b324077f | ||
|
|
8a7d5ce5e1 | ||
|
|
cfc765dc2a | ||
|
|
be512c9422 | ||
|
|
3825a098c8 | ||
|
|
5c5cdf23a8 | ||
|
|
ef159bc35c | ||
|
|
9186f061a2 | ||
|
|
99f489b5ef | ||
|
|
005894eccb | ||
|
|
a91868496a | ||
|
|
b50375abf4 | ||
|
|
d63015e627 | ||
|
|
b31c3f1c1f | ||
|
|
584ff7c29a | ||
|
|
36f712f272 | ||
|
|
04885f1c29 | ||
|
|
089edcf765 | ||
|
|
6cd134d39e | ||
|
|
aa9151a6ee | ||
|
|
52faf1f984 | ||
|
|
85d4a5abc7 | ||
|
|
60d031e311 | ||
|
|
ad0f54b87b | ||
|
|
9ef07cb0f3 | ||
|
|
97b1f34868 | ||
|
|
bee3d5f143 | ||
|
|
eb594da2f2 | ||
|
|
510d84f682 | ||
|
|
21d7eca12a | ||
|
|
3b7aed050d | ||
|
|
30340e521e | ||
|
|
e321034074 | ||
|
|
bcc1fd7efd | ||
|
|
0ee6141cf6 | ||
|
|
9e2fbca594 | ||
|
|
f42de9e52a | ||
|
|
504d6715c1 | ||
|
|
35e09df282 | ||
|
|
59efa6acdd | ||
|
|
b161328682 | ||
|
|
1158ed5795 | ||
|
|
07d99d26b2 | ||
|
|
88dd6372b0 | ||
|
|
2984e22ef0 | ||
|
|
52de413d43 | ||
|
|
dc15124c6f | ||
|
|
058a9090c2 | ||
|
|
cac5d60633 | ||
|
|
dec7a34047 | ||
|
|
7677e2d4e3 | ||
|
|
d241323b08 | ||
|
|
bda09159c3 | ||
|
|
1cb14a16b7 | ||
|
|
b8752210ba | ||
|
|
a485334c37 | ||
|
|
e89782742d | ||
|
|
76cfd8bfac | ||
|
|
c8783d3339 | ||
|
|
df754517dd | ||
|
|
a9fd6b7f85 | ||
|
|
7a82045ca8 | ||
|
|
22adfc67e5 | ||
|
|
a172697d47 | ||
|
|
74764f28bc | ||
|
|
ebb12d5f06 | ||
|
|
5bd3c52c0f | ||
|
|
3452b0493d | ||
|
|
4f33f10511 | ||
|
|
7b3c2751ee | ||
|
|
bcb00d9a43 | ||
|
|
f064d07bda | ||
|
|
60f3f92e95 | ||
|
|
dc12c373dc | ||
|
|
e0f12ce020 | ||
|
|
1686e515d6 | ||
|
|
df0fcfb940 | ||
|
|
e9c960929b | ||
|
|
b27a6568b7 | ||
|
|
f0da89fa20 | ||
|
|
2f5fbcd10a | ||
|
|
431987a2fa | ||
|
|
56f83ad197 | ||
|
|
cb8c608e49 | ||
|
|
ed603fa790 | ||
|
|
f1d791355a | ||
|
|
b227aa06eb | ||
|
|
2cb9f03a66 | ||
|
|
a14cecb0ad | ||
|
|
0f458f1e35 | ||
|
|
323d24db8c | ||
|
|
ad73ed298d | ||
|
|
db3fecc5b9 | ||
|
|
054a625497 | ||
|
|
c68eeaa966 | ||
|
|
d539ebbf5b | ||
|
|
23ebefe8e7 | ||
|
|
5580fe0e1e | ||
|
|
e391bc442a | ||
|
|
48d60bd771 | ||
|
|
e2397bf0da | ||
|
|
1bca4f3eb5 | ||
|
|
22a2867d79 | ||
|
|
ade913a60e | ||
|
|
915d32f59c | ||
|
|
8e324b38a6 | ||
|
|
2462019449 | ||
|
|
8cf52c8e6c | ||
|
|
6877893ed5 | ||
|
|
1207757924 | ||
|
|
9c85d4f6df | ||
|
|
930715665e | ||
|
|
d78acb55a0 | ||
|
|
0ee89f1360 | ||
|
|
a09ee203ec | ||
|
|
ba564088c3 | ||
|
|
6fb69845b0 | ||
|
|
7c4ad1f400 | ||
|
|
43d62c08e3 | ||
|
|
5b9857d9b9 | ||
|
|
8dbdfa7e73 | ||
|
|
96f9b67b51 | ||
|
|
97d26ac9c0 | ||
|
|
a18fab88a1 | ||
|
|
a58a2dc0d3 | ||
|
|
e79842ce94 | ||
|
|
d33088a805 | ||
|
|
66a7add23f | ||
|
|
52177f5e0d | ||
|
|
5795d3d616 | ||
|
|
9245a66e6f | ||
|
|
bf8ad994d4 | ||
|
|
26fb5c90b1 | ||
|
|
ab1ebb072e | ||
|
|
c36d291acc | ||
|
|
bf457d129e | ||
|
|
523190f69a | ||
|
|
23b15254bb | ||
|
|
a55d2f67b0 | ||
|
|
01f279338f | ||
|
|
1dda502bcb | ||
|
|
cabfcbd18d | ||
|
|
e3f70857af | ||
|
|
55d50b3cca | ||
|
|
9dee34ad27 | ||
|
|
f5a00f0c77 | ||
|
|
1075b7ac38 | ||
|
|
d9187472f5 | ||
|
|
b37863a5ba | ||
|
|
03ab18fa7a | ||
|
|
f60d0dc35a | ||
|
|
4163fa5d29 | ||
|
|
4add47946b | ||
|
|
8e621f593e | ||
|
|
5ccc66d855 | ||
|
|
db2ef8ce51 | ||
|
|
7067d36adb | ||
|
|
4bf22639d1 | ||
|
|
334ee81901 | ||
|
|
f2376ad401 | ||
|
|
bbe8d13c6e | ||
|
|
1b00a3eb76 | ||
|
|
6dec212d1d | ||
|
|
731120e26e | ||
|
|
c34a2d65d0 | ||
|
|
5eb614a25b | ||
|
|
1ce5a04406 | ||
|
|
053d34dc47 | ||
|
|
31776e2a25 | ||
|
|
14fbbf1420 | ||
|
|
ea4603e5d1 | ||
|
|
3f2b09422d | ||
|
|
0aae453d77 | ||
|
|
2ef00d23e3 | ||
|
|
dc1a47ad70 | ||
|
|
0ef0359566 | ||
|
|
72a971b0e0 | ||
|
|
c28b1e32e3 | ||
|
|
1821eac1c1 | ||
|
|
aa10abacbc | ||
|
|
4b92872a97 | ||
|
|
e80053c659 | ||
|
|
3c0b6914e0 | ||
|
|
bb008411e0 | ||
|
|
706167bbbd | ||
|
|
0d112810f9 | ||
|
|
8826a10bc8 | ||
|
|
915b442dc1 | ||
|
|
29a0685ee8 | ||
|
|
1a2ef4db60 | ||
|
|
e08006f691 | ||
|
|
abc92d5030 | ||
|
|
c96698e95f | ||
|
|
58b2204651 | ||
|
|
36156a6c49 | ||
|
|
f75e4d314a | ||
|
|
1688512252 | ||
|
|
858e13cad6 | ||
|
|
af14106a63 | ||
|
|
0db1b63b1f | ||
|
|
88ab6f14d3 | ||
|
|
077d897fa4 | ||
|
|
f3e9bb312e | ||
|
|
c9150374d9 | ||
|
|
7f125d95e8 | ||
|
|
cbaca3e4bf | ||
|
|
272f11069f | ||
|
|
c303d0b18c | ||
|
|
1fa2c503a7 | ||
|
|
94ee606f62 | ||
|
|
4db5ea20e8 | ||
|
|
fb19245493 | ||
|
|
693617700b | ||
|
|
76809e128a | ||
|
|
ce10919978 | ||
|
|
9af88217d1 | ||
|
|
b79802789d | ||
|
|
f854a46890 | ||
|
|
8655384f51 | ||
|
|
7611fe60f8 | ||
|
|
e570a91abb | ||
|
|
6439fb4263 | ||
|
|
48473b48e6 | ||
|
|
8a4cda71af | ||
|
|
6c44e85852 | ||
|
|
f0eef60123 | ||
|
|
f59b74622d | ||
|
|
0c721d919c | ||
|
|
1b302d3fad | ||
|
|
d46d1d7fcd | ||
|
|
810eda9cca | ||
|
|
9702e7c456 | ||
|
|
4f38ff9757 | ||
|
|
99686a2fef | ||
|
|
508353fd15 | ||
|
|
bd26ce1db6 | ||
|
|
d86c1486ba | ||
|
|
c3e0a0035e | ||
|
|
f84c787be4 | ||
|
|
fc7dfd7246 | ||
|
|
7862187015 | ||
|
|
991b782b75 | ||
|
|
c4008dff3b | ||
|
|
8afe90224b | ||
|
|
4cdc14d55f | ||
|
|
9d269bd7f2 | ||
|
|
c7bcef426b | ||
|
|
9e89bf34bf | ||
|
|
c4a5c99074 | ||
|
|
2ba9c4b4a7 | ||
|
|
6596dbff31 | ||
|
|
99080af3ee | ||
|
|
7e22b46c1f | ||
|
|
d324a99454 | ||
|
|
17f99f663f | ||
|
|
5bfef8c80a | ||
|
|
92e1d27475 | ||
|
|
94782e914c | ||
|
|
d4b992506a | ||
|
|
2485273247 | ||
|
|
6c64427273 | ||
|
|
48d859b823 | ||
|
|
bb09982b66 | ||
|
|
21a5b038a7 | ||
|
|
0893a3fd39 | ||
|
|
dca9db124b | ||
|
|
58ba8a7c7f | ||
|
|
a979e414fb | ||
|
|
c9f6c7645c | ||
|
|
ceca333309 | ||
|
|
39a4017c33 | ||
|
|
af00ca81e1 | ||
|
|
9112cb4dfa | ||
|
|
80d0efd94a | ||
|
|
ff95a79d98 | ||
|
|
fa2e287687 | ||
|
|
9ed65c5620 | ||
|
|
6c31de64b3 | ||
|
|
3de864cfff | ||
|
|
c1fbdb4fd0 | ||
|
|
cccf35f862 | ||
|
|
7726276fe9 | ||
|
|
9e6e6575de | ||
|
|
8962e0383f | ||
|
|
7985ab786d | ||
|
|
8d69f3daf2 | ||
|
|
b0dd7e1cfd | ||
|
|
786521d5a8 | ||
|
|
093612a46c | ||
|
|
2c6c0fe329 | ||
|
|
a4560cdfbb | ||
|
|
26a040e81b | ||
|
|
625947f9f2 | ||
|
|
fadd58a0fb | ||
|
|
8a544d54ea | ||
|
|
b7abf0b3ce | ||
|
|
2983f3fc14 | ||
|
|
e8486fdf71 | ||
|
|
28cb6f4bb3 | ||
|
|
2937a875a0 | ||
|
|
07f525368d | ||
|
|
3f07c44ea9 | ||
|
|
c3be60198f | ||
|
|
749b6cc635 | ||
|
|
c10c08ddd6 | ||
|
|
ecd5f73dd7 | ||
|
|
117169649b | ||
|
|
ec72283a65 | ||
|
|
f7e927b93c | ||
|
|
b555a979a4 | ||
|
|
a03ab2396e | ||
|
|
d82aeb8245 | ||
|
|
0b4d8433d4 | ||
|
|
71a70a7d5c | ||
|
|
edcce8e6ba | ||
|
|
0388781e8f | ||
|
|
91706f7883 | ||
|
|
b2d679a45c | ||
|
|
d56e8c8e54 | ||
|
|
47635a2434 | ||
|
|
9062060304 | ||
|
|
72bc10a61c | ||
|
|
5a1e1579b3 | ||
|
|
db66618227 | ||
|
|
b3f03d092f | ||
|
|
a02b82056a | ||
|
|
b0b287f7b5 | ||
|
|
9e36bea907 | ||
|
|
d314709af6 | ||
|
|
4f5e69fa2c | ||
|
|
5a1f371e12 | ||
|
|
4ead7b69ea | ||
|
|
dc0149612f | ||
|
|
75a43bb40c | ||
|
|
15674c5bd4 | ||
|
|
1a763044fe | ||
|
|
b8465d289b | ||
|
|
5eefc37b3f | ||
|
|
014165151f | ||
|
|
ebadb36962 | ||
|
|
cb34cfea45 | ||
|
|
1cdb47d960 | ||
|
|
20c6acfc8d | ||
|
|
6aa000f65b | ||
|
|
68ebc77a9a | ||
|
|
fd705ce7c7 | ||
|
|
b0e836e231 | ||
|
|
9306b266a0 | ||
|
|
77f411c77a | ||
|
|
fa16a54b21 | ||
|
|
438b78a27d | ||
|
|
d5ef8448bb | ||
|
|
0c9b046af0 | ||
|
|
f2626b6183 | ||
|
|
9c30ae02ee | ||
|
|
96245d4efb | ||
|
|
d9bfa563d0 | ||
|
|
480b5862d4 | ||
|
|
27f96820c8 | ||
|
|
c40875ad51 | ||
|
|
6379faaa90 | ||
|
|
2e570136f5 | ||
|
|
299b3bed96 | ||
|
|
9c81336830 | ||
|
|
b61a200036 | ||
|
|
094785bd68 | ||
|
|
017d02b9de | ||
|
|
8815ccf5c4 | ||
|
|
b17ad131ea | ||
|
|
c0df6f9622 | ||
|
|
54e1caa428 | ||
|
|
1f4b524558 | ||
|
|
3bfa69fa53 | ||
|
|
6d33c783d0 | ||
|
|
2b5140c974 | ||
|
|
f9c4977306 | ||
|
|
2da37ba038 | ||
|
|
095ea84611 | ||
|
|
e756b2e50d | ||
|
|
dc2ae6c0a5 | ||
|
|
25a4e8e7de | ||
|
|
bb4c98b783 | ||
|
|
69e594f04d | ||
|
|
ffa112d586 | ||
|
|
102faa3037 | ||
|
|
7741f5a09a | ||
|
|
b5f30143ed | ||
|
|
6aab48ead0 | ||
|
|
f90c154472 | ||
|
|
1f264ddb4b | ||
|
|
b5f4a5689b | ||
|
|
3cc22eed44 | ||
|
|
7c2414ec7e | ||
|
|
3e05518881 | ||
|
|
d8c00cd537 | ||
|
|
88a18a28d5 | ||
|
|
86794ce008 | ||
|
|
cbc593bc22 | ||
|
|
5ab8120689 | ||
|
|
9a212b3120 | ||
|
|
b53f602891 | ||
|
|
afc6aa8126 | ||
|
|
e47246927f | ||
|
|
8b8070e4b7 | ||
|
|
a32be5d7e6 | ||
|
|
611104b737 | ||
|
|
754a107f10 | ||
|
|
5a7335cc98 | ||
|
|
f1ca0eebc6 | ||
|
|
afd0726912 | ||
|
|
08e62bab9a | ||
|
|
5556ae9f80 | ||
|
|
91bfe9f0c0 | ||
|
|
bf70fbb696 | ||
|
|
86fcb8b66f | ||
|
|
ad9da2727d | ||
|
|
375eb8ebce | ||
|
|
17d5afcae2 | ||
|
|
a82cbf29a2 | ||
|
|
8f9493ddf2 | ||
|
|
d55728c941 | ||
|
|
b81826fc7e | ||
|
|
207c485856 | ||
|
|
6c6dab9d63 | ||
|
|
9586305cc4 | ||
|
|
07380c1e64 | ||
|
|
634e95eba1 | ||
|
|
88312319c4 | ||
|
|
1803e1b57c | ||
|
|
9f58645eca | ||
|
|
a20c7ed214 | ||
|
|
ddfa756ac7 | ||
|
|
4e5629bed1 | ||
|
|
7ddf0dff8f | ||
|
|
920c1c4c83 | ||
|
|
3688c1a2d3 | ||
|
|
1da67a2298 | ||
|
|
07461459d4 | ||
|
|
4d17ff973e | ||
|
|
3846a59bab | ||
|
|
d98622b2ea | ||
|
|
671565245e | ||
|
|
88537fb4cc | ||
|
|
dc8d64d6f2 | ||
|
|
2aeb7042d0 | ||
|
|
ccaa0af7d0 | ||
|
|
05eb4113d9 | ||
|
|
06b1362999 | ||
|
|
a71b892c97 | ||
|
|
182b6f7a3c | ||
|
|
d7ded58f51 | ||
|
|
4c76d9fe31 | ||
|
|
56fb725a7e | ||
|
|
9979e2a443 | ||
|
|
64d3314a64 | ||
|
|
db1eeb0651 | ||
|
|
a7190d11c2 | ||
|
|
2cdac4704c | ||
|
|
704dd8327f | ||
|
|
77db52ac9a | ||
|
|
fabc5a9117 | ||
|
|
b80fb88aff | ||
|
|
1fdfb18c37 | ||
|
|
a47528fd59 | ||
|
|
7d1bad41f3 | ||
|
|
c344880b4e | ||
|
|
b3c3a7c35d | ||
|
|
245c177e4b | ||
|
|
13db79db63 | ||
|
|
f02812c0d6 | ||
|
|
a38d119f16 | ||
|
|
d1b0ae62a5 | ||
|
|
a24ec1583b | ||
|
|
15ab20fdfb | ||
|
|
d5dad3422b | ||
|
|
7b2f8949dd | ||
|
|
552113131c | ||
|
|
70b8f8f7ef | ||
|
|
32e00d1f43 | ||
|
|
30930e643f | ||
|
|
87c33fa21a | ||
|
|
768b192ddb | ||
|
|
4abbe4cb52 | ||
|
|
eeae39d359 | ||
|
|
659d24c9ab | ||
|
|
8efc350127 | ||
|
|
ccbe6c816b | ||
|
|
2870b58638 | ||
|
|
2c51d76c1f | ||
|
|
8a84056d0a | ||
|
|
ad0c0b8eb3 | ||
|
|
f90f2858c8 | ||
|
|
ba0bc468d6 | ||
|
|
57874f7ece | ||
|
|
521807f33d | ||
|
|
9f88efd2bb | ||
|
|
511eb79331 | ||
|
|
38f34f4f6f | ||
|
|
2980659ab1 | ||
|
|
e1463ab57c | ||
|
|
5d90ca35c2 | ||
|
|
3fb86e1c6f | ||
|
|
b83122dc05 | ||
|
|
5a10e9b0b4 | ||
|
|
5559242ea9 | ||
|
|
b61043dcfa | ||
|
|
eb81d45024 | ||
|
|
e6251f0248 | ||
|
|
f839379d01 | ||
|
|
775ccf39e7 | ||
|
|
89e57c6978 | ||
|
|
64eec8a97a | ||
|
|
0e2f3271b9 | ||
|
|
ed08baccd9 | ||
|
|
8432ea3574 | ||
|
|
a3113386df | ||
|
|
254538bf77 | ||
|
|
3459dc480a | ||
|
|
209a2d1ba0 | ||
|
|
64b9599866 | ||
|
|
2d655446ba | ||
|
|
896769df69 | ||
|
|
6087131ab6 | ||
|
|
ff5eb4adfe | ||
|
|
9a0fd43df2 | ||
|
|
8bb24a936f | ||
|
|
0bbe09a28e | ||
|
|
318192b937 | ||
|
|
6012f096c9 | ||
|
|
b0915a69de | ||
|
|
7371e3f7cf | ||
|
|
2f744db943 | ||
|
|
e0324064bc | ||
|
|
4ca42d9785 | ||
|
|
3ea8cfc02f | ||
|
|
e02a94080a | ||
|
|
5d57716ef8 | ||
|
|
f59cb0e05d | ||
|
|
790d8e324b | ||
|
|
9cf9abd5b0 | ||
|
|
fdc40111f8 | ||
|
|
3e49e2387c | ||
|
|
55dec3a798 | ||
|
|
05d7260e19 | ||
|
|
7c00940470 | ||
|
|
6b02119bb1 | ||
|
|
8e28e22bcf | ||
|
|
52c0933bc0 | ||
|
|
ac10ac6450 | ||
|
|
0b952dcc85 | ||
|
|
48c3d8e1cf | ||
|
|
e4dc06b7d5 | ||
|
|
53c90cebb2 | ||
|
|
fecefc6cdf | ||
|
|
3ab623e391 | ||
|
|
f052710b85 | ||
|
|
13e8bace97 | ||
|
|
583a5e4ea4 | ||
|
|
a8b67d2064 | ||
|
|
f54cc70238 | ||
|
|
1ff2076cdd | ||
|
|
98918137a8 | ||
|
|
e2847d9637 | ||
|
|
369b4a605e | ||
|
|
c750139c85 | ||
|
|
7f58482d4e | ||
|
|
5f6ed88b7a | ||
|
|
aa291863bb | ||
|
|
d15319b717 | ||
|
|
2152424541 | ||
|
|
a166051b60 | ||
|
|
87195bc3cd | ||
|
|
eebf34dd5f | ||
|
|
a129392bb4 | ||
|
|
1ef996ca3c | ||
|
|
6aedf8f066 | ||
|
|
103b97301d | ||
|
|
4a7a667f5f | ||
|
|
ab8d94d195 | ||
|
|
5fb86cf7da | ||
|
|
3e6fc7417d | ||
|
|
a2dbfaf43d | ||
|
|
64d4b76384 | ||
|
|
787170c4cd | ||
|
|
fea49ed621 | ||
|
|
ce793bd3ee | ||
|
|
42cc6ad6c6 | ||
|
|
786ade734c | ||
|
|
3f9d39ffce | ||
|
|
e81657cba8 | ||
|
|
a5b08ea931 | ||
|
|
e510d5beba | ||
|
|
447fae8d4b | ||
|
|
d0f0d4c77f | ||
|
|
bbda677728 | ||
|
|
0ca420918b | ||
|
|
abe6c28bc2 | ||
|
|
2358be732d | ||
|
|
262e59869f | ||
|
|
3e84cc9b17 | ||
|
|
5d38185448 | ||
|
|
2f758b9b50 | ||
|
|
ca166c9a1e | ||
|
|
442ec1b624 | ||
|
|
99a54565a3 | ||
|
|
212241ffda | ||
|
|
a1cf2315a0 | ||
|
|
5398a160ad | ||
|
|
7872c2c19e | ||
|
|
b83ee1e5f9 | ||
|
|
52a2e1e628 | ||
|
|
6c7e858286 | ||
|
|
918514d51d | ||
|
|
c2d1e3eeb0 | ||
|
|
ca5db10bda | ||
|
|
81c809e27a | ||
|
|
3744742804 | ||
|
|
f0715f434e | ||
|
|
0437677b12 | ||
|
|
c74ccbb86e | ||
|
|
1164ceb4fc | ||
|
|
1f2b8a6545 | ||
|
|
53535f03cf | ||
|
|
db2da1de42 | ||
|
|
889b2714d5 | ||
|
|
504c0fdc27 | ||
|
|
5ec01aac61 | ||
|
|
44e4b94acb | ||
|
|
56ebb3dd0e | ||
|
|
1b8c38f6e1 | ||
|
|
3edebfb81c | ||
|
|
828d70c6d7 | ||
|
|
dddf587aec | ||
|
|
441bf26a2e | ||
|
|
91960a2132 | ||
|
|
437aaccc19 | ||
|
|
ec7c50ef00 | ||
|
|
a381fd288c | ||
|
|
a0790f1000 | ||
|
|
e80e585639 | ||
|
|
743cb1fc96 | ||
|
|
2610a43e1c | ||
|
|
55d8a684c7 | ||
|
|
9d4ce36199 | ||
|
|
fb91fd7e3c | ||
|
|
2deeab4c4f | ||
|
|
23bc606c79 | ||
|
|
430957b036 | ||
|
|
8aced27009 | ||
|
|
f2d6439bc7 | ||
|
|
5d84495b77 | ||
|
|
96d5ea96fd | ||
|
|
3cc413e84f | ||
|
|
4573659deb | ||
|
|
a8f663ce5e | ||
|
|
a3ca0bf898 | ||
|
|
aaa40bdc0a | ||
|
|
d346be96c2 | ||
|
|
4c0814a176 | ||
|
|
521f9e2f15 | ||
|
|
26a2cfe62a | ||
|
|
9ddea3f4e1 | ||
|
|
a65cb51d49 | ||
|
|
317d7a1f54 | ||
|
|
b9c0d226c0 | ||
|
|
1783b5c85e | ||
|
|
5a257fe95f | ||
|
|
b2e624c50c | ||
|
|
c950bd540b | ||
|
|
4149124b2b | ||
|
|
0f2c739473 | ||
|
|
4dfc4fbdaf | ||
|
|
f59b9e52d4 | ||
|
|
ac8e00010a | ||
|
|
dfb8fa9b5a | ||
|
|
56100a017a | ||
|
|
ffb6df5f42 | ||
|
|
7f44184f61 | ||
|
|
0f8823b4a4 | ||
|
|
5ebbf00f0a | ||
|
|
dbf204b5b9 | ||
|
|
8fdcb60c87 | ||
|
|
98a11cedf0 | ||
|
|
b6bd3ef4f4 | ||
|
|
4227a63f48 | ||
|
|
5449ec0a30 | ||
|
|
fd5ceee925 | ||
|
|
17e219fbce | ||
|
|
054057a640 | ||
|
|
4dfb500732 | ||
|
|
eb60a7ed54 | ||
|
|
52aa225713 | ||
|
|
570c185935 | ||
|
|
04d6c99a71 | ||
|
|
901395db67 | ||
|
|
bdab7cc8ff | ||
|
|
57fc8f183a | ||
|
|
97ddbb5ff2 | ||
|
|
0311ffe023 | ||
|
|
0740876d0e | ||
|
|
2672a3afef | ||
|
|
6641ae85ff | ||
|
|
913c5241ae | ||
|
|
a6d741b6a4 | ||
|
|
22fc55f716 | ||
|
|
58b4b410fa | ||
|
|
76f71b8f9c | ||
|
|
9860acfcbe | ||
|
|
bd6b799d26 | ||
|
|
784e4a81eb | ||
|
|
5952c6abbb | ||
|
|
f3ae93af95 | ||
|
|
d36d6172d2 | ||
|
|
667504d791 | ||
|
|
3f01b42652 | ||
|
|
5c1b0b005e | ||
|
|
f76c439897 | ||
|
|
ebf8bf0000 | ||
|
|
9ebcd66d43 | ||
|
|
dfe5459437 | ||
|
|
d4a1a03614 | ||
|
|
9453332cce | ||
|
|
f1bf642c98 | ||
|
|
8bbab02215 | ||
|
|
813b2c0aff | ||
|
|
d3ab2fe19c | ||
|
|
773df067e8 | ||
|
|
8c32d2d516 | ||
|
|
48b9521cbb | ||
|
|
b6025e44a9 | ||
|
|
df2e122b5c | ||
|
|
3ec9e6c5e8 | ||
|
|
ee606d1684 | ||
|
|
842b1decc8 | ||
|
|
28398e250a | ||
|
|
121f787136 | ||
|
|
9eb324dbaf | ||
|
|
894be790bf | ||
|
|
6bb34d7dd4 | ||
|
|
18ebec28c9 | ||
|
|
3b2e4623f3 | ||
|
|
4d9fdb1c1b | ||
|
|
b442a3a4ea | ||
|
|
ae42f286bb | ||
|
|
1af579b1a2 | ||
|
|
064ff39ad7 | ||
|
|
b90e1211cf | ||
|
|
e7196ee985 | ||
|
|
5564df4ac9 | ||
|
|
d64c88d4d1 | ||
|
|
252ace6681 | ||
|
|
1ffd36814a | ||
|
|
4353a5f88c | ||
|
|
3146c790a7 | ||
|
|
904ad6620f |
@@ -1,7 +1,7 @@
|
||||
## Makefile.am for GTK+
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
SRC_SUBDIRS = gdk gtk modules demos tests perf examples
|
||||
SRC_SUBDIRS = gdk gtk libgail-util modules demos tests perf examples
|
||||
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
@@ -145,6 +145,7 @@ DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-gtk-doc \
|
||||
--enable-man \
|
||||
--disable-rebuilds \
|
||||
--disable-maintainer-mode \
|
||||
--enable-introspection
|
||||
|
||||
GITIGNOREFILES = \
|
||||
|
||||
371
NEWS
371
NEWS
@@ -1,3 +1,374 @@
|
||||
Overview of Changes in GTK+ 3.2.2
|
||||
=================================
|
||||
|
||||
* Bugs fixed:
|
||||
658772 Directory paths for resource directories are hard-coded
|
||||
661858 Add annotations for some GtkRadio* constructors
|
||||
661859 Add annotations for some GtkSymbolicColor constructors
|
||||
661997 Gtk crashes when changing the TreeView model while rubber...
|
||||
662160 gtk_print_operation_cancel fails
|
||||
662177 Toolbar returns invalid paths for toolbar items
|
||||
662670 Pressing "Enter" in print dialog box will not cause printing
|
||||
662691 menuitem: Always treat submenus as popup
|
||||
662870 Fix introspection annotations for GtkRadioToolButton
|
||||
662953 x11: Fix window manager change detection
|
||||
663073 gtk_dialog_new_with_buttons should be G_GNUC_NULL_TERMINATED
|
||||
663138 iconview: layout items immediately when setting a GtkTreeModel
|
||||
663396 With multiple master devices, right clicking may show popup...
|
||||
663605 Fix event->state of many event types on quartz
|
||||
663694 GtkTreeViewAccessibleCellInfo are leaked
|
||||
663825 calling gtk_progress_bar_set_fraction with a fraction > 1.0...
|
||||
|
||||
* Translation updates:
|
||||
Brazilian Portuguese
|
||||
British English
|
||||
Japanese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.2.1
|
||||
=================================
|
||||
|
||||
* GtkCellRendererAccel can show virtual modifiers
|
||||
|
||||
* CSS improvements:
|
||||
- 'transparent' can be used a color
|
||||
|
||||
* OS X improvements:
|
||||
- Disable mnemonics
|
||||
- Make Option work as a modifier
|
||||
- Cleanup of modifiers: Alt/Option is MOD1, Command is MOD2
|
||||
- Fix keyval <> Unicode and lowercase/uppercase mapping
|
||||
|
||||
* Improvements of cross-platform key and button event handling:
|
||||
- Support '<Primary>' in accelerator strings
|
||||
- Use approprivate modifiers for extending and modifying
|
||||
selections, depending on the platform
|
||||
- Use the appropriate button for triggering context menus,
|
||||
depending on the platform
|
||||
|
||||
* Bugs fixed:
|
||||
628936 gtk build fails because of objective-c elements
|
||||
653289 GtkCellRendererText "edited" signal not emitted...
|
||||
655057 rendering issues with map plugin
|
||||
657770 Write to released memory in gtkdnd-quartz.c
|
||||
658767 Drag and Drop NSEvent capture is racy
|
||||
658772 Directory paths for resource directories are hard-coded
|
||||
659022 gtk_tree_model_filter_clear_cache_helper: assertion failed
|
||||
659655 3 errors in Spanish translation of gtk+
|
||||
660687 roxterm X crashes with accessibility enabled
|
||||
660730 Use of "struct stat" breaks Windows
|
||||
|
||||
* Translation updates
|
||||
Catalan (Valencian)
|
||||
Czech
|
||||
Dutch
|
||||
Esperanto
|
||||
Galician
|
||||
Latvian
|
||||
Spanish
|
||||
Traditional Chinese
|
||||
Vietnamese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.2
|
||||
===============================
|
||||
|
||||
* GtkFontChooser:
|
||||
- More speed ups. The font chooser will now load
|
||||
instanteously, even if you have thousands of fonts
|
||||
|
||||
* Bug fixes
|
||||
659826 new broadband connection weirdness in assistant
|
||||
659966 Fix module blacklisting
|
||||
640741 Fix return value fo gtk_tree_view_column_cell_get_position
|
||||
Assertion in the treeview accessible code
|
||||
Fix erroneous beeping in textview keynav
|
||||
|
||||
* Translation updates
|
||||
Assamese
|
||||
Basque
|
||||
Brazilian Portuguese
|
||||
Bulgarian
|
||||
Catalan
|
||||
Czech
|
||||
Danish
|
||||
French
|
||||
Galician
|
||||
German
|
||||
Hungarian
|
||||
Japanese
|
||||
Korean
|
||||
Latvian
|
||||
Lithuanian
|
||||
Oriya
|
||||
Polish
|
||||
Portuguese
|
||||
Russian
|
||||
Slovenian
|
||||
Spanish
|
||||
Swedish
|
||||
Telugu
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.92
|
||||
==================================
|
||||
|
||||
* GtkIconView:
|
||||
- Cells will now be prelighted, if you set the
|
||||
GtkCellRendererPixbuf::follow-state property.
|
||||
|
||||
* GtkFontChooser:
|
||||
- Speed up population of the font list somewhat.
|
||||
More speedups are expected in 3.2
|
||||
|
||||
* Bugs fixed:
|
||||
615501 GtkIconView does not support prelight cells
|
||||
658981 Inability to effectively clear string indicator in stf imp...
|
||||
659241 GtkPaned initially allocates space for separator, even if...
|
||||
659247 link-button: Reset the mouse cursor when destroyed
|
||||
|
||||
* Translation updates:
|
||||
Asturian
|
||||
Belarussian
|
||||
Brazilian Portuguese
|
||||
British English
|
||||
Bulgarian
|
||||
French
|
||||
Galician
|
||||
German
|
||||
Latvian
|
||||
Portuguese
|
||||
Punjabi
|
||||
Russian
|
||||
Serbian
|
||||
Slovenian
|
||||
Swedish
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.90
|
||||
==================================
|
||||
|
||||
* GtkAppChooserButton: A new function has been added
|
||||
that makes it possible to have the button select the
|
||||
default app (as opposed to the most-recently-used app).
|
||||
|
||||
* A lot of feedback on the the tree model refactoring has
|
||||
been incorporated via new test cases and bug fixes
|
||||
|
||||
* The filechooser search has been ported to tracker 0.12
|
||||
and is using the tracker DBus API directly now.
|
||||
|
||||
* The new fontchooser API has been reworked a bit to make
|
||||
it follow the same pattern we use else where. GtkFontChooser
|
||||
is now an interface that is implemented by GtkFontChooserButton,
|
||||
GtkFontChooserDialog and GtkFontChooserWidget (to which the
|
||||
original GtkFontChooser has been renamed).
|
||||
|
||||
* Bugs fixed
|
||||
514843 gtkfilechooser should be more robust to malformed URIs...
|
||||
617583 Dead accents keys don't work in GTK+ applications on OSX
|
||||
642706 No way to select the default entry
|
||||
657353 GtkTreeModelFilter hangs when filtering
|
||||
657627 new font chooser API inconsistent
|
||||
658272 Port gtksearchenginetracker.c to tracker 0.11/0.12
|
||||
658379 Disabled devices still added to list on startup
|
||||
658398 Use of uninitialized variable reported by Valgrind
|
||||
658507 better comboboxes for right to left languages
|
||||
658600 Geany crashes when reopening file chooser dialog
|
||||
658696 Crash when inserting a new node
|
||||
658774 Regression: GtkFileChooserButtons do not expand
|
||||
|
||||
* Translation updates:
|
||||
Belarusian
|
||||
British English
|
||||
French
|
||||
Galician
|
||||
Indonesian
|
||||
Italian
|
||||
Latvian
|
||||
Norwegian bokmål
|
||||
Persian
|
||||
Polish
|
||||
Portuguese
|
||||
Punjabi
|
||||
Simplified Chinese
|
||||
Slovenian
|
||||
Spanish
|
||||
Swedish
|
||||
Tamil
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.18
|
||||
==================================
|
||||
|
||||
* GtkFileChooser:
|
||||
- It is no possible to go to the containing folder of a
|
||||
selected file in recent files or search results.
|
||||
|
||||
* Bugs fixed
|
||||
530253 typo ifaces under gtk_tree_view_set_reorderable
|
||||
566202 GTK_SELECTION_MULTIPLE description unclear
|
||||
581435 gtk_tree_view_set_drag_dest_row() needs more documentation
|
||||
655631 Description of x and y parameters in gtk_render_arrow is in...
|
||||
657793 Support NULL sibling in gtk_grid_attach_next_to
|
||||
657882 gtk_css_provider_propagate_error's signature not updated...
|
||||
657963 themingengine: remove xthickness FIXME from gtk_render_line()
|
||||
657985 reeview: add GTK_STYLE_CLASS_SEPARATOR for tree view separators
|
||||
658008 Centered text alignment in GtkAssistant is wrong
|
||||
658077 Add theming support to GtkPathBar
|
||||
658111 gtk_label_set_pattern() is reset by a call to gtk_box_pack_...
|
||||
658168 Gtk-Message: Failed to load module "gail"
|
||||
658200 gtk_toolbar_finalize() does stuff it shouldn't
|
||||
Fix colord support in the print dialog
|
||||
|
||||
* Translation updates
|
||||
Belarusian
|
||||
Brazilian Portuguese
|
||||
Esperanto
|
||||
Galician
|
||||
Korean
|
||||
Lithuanian
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.16
|
||||
==================================
|
||||
|
||||
* Make distcheck work again, and fix errors that crept in by
|
||||
lack of a working distcheck.
|
||||
|
||||
* Bugs fixed:
|
||||
656223 GtkToolShell: Move vfunc default results to default impl...
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.14
|
||||
==================================
|
||||
|
||||
* GtkTreeView:
|
||||
- The GtkTreeModelFilter and GtkTreeModelSort implementations
|
||||
have been improved and a comprehensive test suite has been added.
|
||||
|
||||
* GtkFileChooser:
|
||||
- The selected file(s) can now be copied to the clipboard
|
||||
|
||||
* Bugs fixed:
|
||||
656851 Allow use of GVariant in GtkListStore
|
||||
344858 gtk_menu_item_new_with_label() created widget with refcount 2
|
||||
349502 option to copy full path in "Save AS"/"Open file" dialogs
|
||||
621076 GtkTreeModelFilter does not emit all signals in some situations
|
||||
634136 GtkTable::children accessor
|
||||
649588 crash when sending a notification: "Gdk-CRITICAL **: gdk_visual_...
|
||||
650762 gtk_misc_set_alignment replacement with the new API functions
|
||||
651827 Crash in check_application()
|
||||
656986 GtkSwitch is unusable when added to primary toolbar.
|
||||
657146 Missing files in POTFILEs.in
|
||||
657260 Gtk should use AtkWindow and remove that hack on GailUtil
|
||||
657359 Crash when specifying data length in gtk_css_provider_load_...
|
||||
657384 missing accessors for GdkEvent structures
|
||||
|
||||
* Translation updates:
|
||||
Galician
|
||||
German
|
||||
Gujarati
|
||||
Indonesian
|
||||
Norwegian bokmål
|
||||
Persian
|
||||
Russian
|
||||
Serbian
|
||||
Spanish
|
||||
Swedish
|
||||
Traditional Chinese
|
||||
Uighur
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.12
|
||||
==================================
|
||||
|
||||
* GtkFontChooserDialog: A newly designed font selection dialog
|
||||
that is intended to replace GtkFontSelectionDialog
|
||||
|
||||
* Drawing of focus rectangles is now optional; it can be turned
|
||||
off altogether, or until actual keyboard interaction happens,
|
||||
with the gtk-visible-focus setting.
|
||||
|
||||
* OS X: Fixes for 10.7 (Lion)
|
||||
|
||||
* Bugs fixed:
|
||||
407885 A new GtkFontSelectionDialog
|
||||
508601 Copying from GTK+ applications causes crash
|
||||
599664 The print dialog should not block while looking for an...
|
||||
645258 Add gtk_text_iter_assign API
|
||||
649567 hide focus rectangles when not keynavigating
|
||||
652991 Remove local copy of introspection.m4
|
||||
653817 Would like GtkGrid methods to insert rows/columns
|
||||
653964 Installing MinGW32 build misses gdk/win32 headers
|
||||
655074 Fix crash with undecorated windows on MacOS Lion
|
||||
655122 Crash when resizing window on MacOS Lion
|
||||
655173 small memory leak in GtkStyleProperty
|
||||
655495 Make X11-specific functions introspectable
|
||||
655496 X11-specific objects methods are introspected as static functions
|
||||
655545 condition can never be true in gtk_tree_view_real_set_cursor
|
||||
655822 Removal of GSettings key causes crash on upgrades
|
||||
656098 Tweak GtkAppChooser's short description
|
||||
656421 3.1.10: G_DISABLE_DEPRECATED detection breaks compilation
|
||||
|
||||
* Translation updates
|
||||
Brazilian Portuguese
|
||||
Bulgarian
|
||||
Russian
|
||||
Spanish
|
||||
Swedish
|
||||
Traditional Chinese
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.10
|
||||
==================================
|
||||
|
||||
* Assorted file chooser improvements/redesign:
|
||||
- Remove the expander in Save mode
|
||||
- Move the path bar up in Save mode
|
||||
- Remember the last opened directory
|
||||
- Start in recently-used mode when no folder is set
|
||||
- Update recent-files when confirming in the file chooser
|
||||
|
||||
* Accessibility:
|
||||
- Gail has been merged into GTK+ and is no longer a module
|
||||
- A testsuite for a11y functionality has been added
|
||||
|
||||
* Theming:
|
||||
- Icon view cells can now have a border
|
||||
|
||||
* GtkMountOperation can now show processes on OpenBSD
|
||||
|
||||
* Gdk input devices now expose their XInput2 device ID
|
||||
via gdk_x11_device_get_id()
|
||||
|
||||
* Bugs fixed:
|
||||
653450 gtkfilechooser crashes when adding favorite
|
||||
653705 GtkAssistant doesn't notice destroyed pages
|
||||
653947 Crash in gdk/x11/gdkdevicemanager-xi2.c:get_event_window
|
||||
654125 gdkoffscreenwindow set any impl handlers to null...
|
||||
654179 iconview: make it possible for selected cells to render...
|
||||
654428 focusable labels are emitting inappropriate object:text-sel...
|
||||
654678 Message dialog's primary text font increases on every call...
|
||||
654695 Memory corruption in gtk_theming_engine_register_property()
|
||||
654720 void return issues cause compile issues for GTK 3.1.8
|
||||
655009 Clamp border radius following CSS specs
|
||||
654266 No longer possible to set empty text on a GtkProgressBar
|
||||
|
||||
* Translation updates:
|
||||
Galician
|
||||
German
|
||||
Hebrew
|
||||
Latvian
|
||||
Lithuanian
|
||||
Norwegian bokmål
|
||||
Persian
|
||||
Polish
|
||||
Slovenian
|
||||
Spanish
|
||||
Uighur
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.1.8
|
||||
=================================
|
||||
|
||||
|
||||
@@ -27,6 +27,13 @@ Installation
|
||||
See the file 'INSTALL'
|
||||
|
||||
|
||||
Release notes for 3.2
|
||||
=====================
|
||||
|
||||
* The accessible implementations for GTK+ widgets have been integrated
|
||||
into libgtk itself, and the gail module does not exist anymore. This
|
||||
change should not affect applications very much.
|
||||
|
||||
Release notes for 3.0
|
||||
=====================
|
||||
|
||||
|
||||
12
README.win32
12
README.win32
@@ -156,11 +156,17 @@ Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
|
||||
makefile.msc in gdk and gtk. Be prepared to manually edit various
|
||||
makefile.msc files, and the makefile snippets in build/win32.
|
||||
|
||||
There are also VS 2008 solution and project files to build GTK+, which
|
||||
There are also VS 2008/2010 solution and project files to build GTK+, which
|
||||
are maintained by Chun-wei Fan. They should build GTK+ out of the box,
|
||||
provided that the afore-mentioned dependencies are installed. They will
|
||||
build GDK with the Win32 backend, GTK+ itself and the gtk-demo program.
|
||||
(The GAIL and GAIL-util sources are not built by this method yet)
|
||||
build GDK with the Win32 backend, GTK+ itself (with GAIL/a11y built in),
|
||||
the GAIL-Util library and the gtk-demo program.
|
||||
|
||||
Please refer to the following GNOME Live! page for a more detailed ouline
|
||||
on the process of building the GTK+ stack and its dependencies with Visual
|
||||
C++:
|
||||
|
||||
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
|
||||
|
||||
Alternative 1 also generates Microsoft import libraries (.lib), if you
|
||||
have lib.exe available. It might also work for cross-compilation from
|
||||
|
||||
@@ -7,6 +7,8 @@ test -n "$srcdir" || srcdir=.
|
||||
olddir=`pwd`
|
||||
cd "$srcdir"
|
||||
|
||||
mkdir -p m4
|
||||
|
||||
GTKDOCIZE=`which gtkdocize`
|
||||
if test -z $GTKDOCIZE; then
|
||||
echo "*** No GTK-Doc found, please install it ***"
|
||||
|
||||
@@ -16,4 +16,10 @@ EXTRA_DIST += \
|
||||
gtk.vcxproj.filtersin \
|
||||
gtk3-demo.vcxproj \
|
||||
gtk3-demo.vcxproj.filters \
|
||||
libgail.vcxproj \
|
||||
libgail.vcxproj.filters \
|
||||
libgail.vcxprojin \
|
||||
libgail.vcxproj.filtersin \
|
||||
gailutil.vcxproj \
|
||||
gailutil.vcxproj.filters \
|
||||
install.vcxproj
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
Note that all this is rather experimental.
|
||||
Please do not compile this package (GTK+) in paths that contain
|
||||
spaces in them-as strange problems may occur during compilation or during
|
||||
the use of the library.
|
||||
|
||||
A more detailed outline for instructions on building the GTK+ with Visual
|
||||
C++ can be found in the following GNOME Live! page:
|
||||
|
||||
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
|
||||
|
||||
This VS10 solution and the projects it includes are intented to be used
|
||||
in a GTK+ source tree unpacked from a tarball. In a git checkout you
|
||||
first need to use some Unix-like environment or manual work to expand
|
||||
the files needed, like config.h.win32.in into config.h.win32 and the
|
||||
.vcprojin files here into corresponding actual .vcproj files.
|
||||
.vcxprojin and .vcxproj.filtersin files here into corresponding actual
|
||||
.vcxproj and vcxproj.filters files.
|
||||
|
||||
You will need the parts from below in the GTK+ stack: GDK-Pixbuf, Pango,
|
||||
ATK and GLib. External dependencies are at least Cairo
|
||||
@@ -20,8 +28,8 @@ to different CRTs can be kept at a minimum.
|
||||
zlib, libpng, and Cairo do contain support for compiling under VS10
|
||||
using VS project files and/or makefiles at this time of writing, For the
|
||||
GTK+ stack, VS10 project files are either available under
|
||||
$(srcroot)/build/vs10 in the case of GLib (stable/unstable), ATK**
|
||||
(2.x stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
|
||||
$(srcroot)/build/vs10 in the case of GLib (stable/unstable), ATK
|
||||
(stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
|
||||
unstable version of Pango. There is no known official VS10 build
|
||||
support for fontconfig (along with freetype and expat) and
|
||||
gettext-runtime, so please use the binaries from:
|
||||
@@ -48,11 +56,11 @@ The recommended build order for these dependencies:
|
||||
-(for GDK-Pixbuf, if not using GDI+) jasper [jpeg-2000 library]
|
||||
-(optional for GLib) PCRE (version 8.12 or later, use of CMake to
|
||||
build PCRE is recommended-see build/win32/vs10/README.txt of GLib)
|
||||
-GLib ***
|
||||
-GLib **
|
||||
-Cairo (inclusive of Cairo-GObject)
|
||||
-ATK-2.x** ***
|
||||
-Pango***
|
||||
-GDK-Pixbuf***
|
||||
-ATK**
|
||||
-Pango**
|
||||
-GDK-Pixbuf**
|
||||
(note the last 3 dependencies are not interdependent, so the last 3
|
||||
dependencies can be built in any order)
|
||||
|
||||
@@ -71,19 +79,8 @@ from a specific GLib source tree.
|
||||
are referred to by components in Cairo and Pango mainly.
|
||||
Decide whether you need fontconfig support prior to building Cairo
|
||||
and Pango.
|
||||
|
||||
**Regarding ATK-2.x: prior to compiling ATK-2.x, please open atkprops
|
||||
in VS under "Properties Manager" view (it is under any one of the
|
||||
build configurations, right-click on atkprops and select "Properties").
|
||||
Navigate to "User Macros", and edit the following fields:
|
||||
AtkApiVersion -> 2.0
|
||||
AtkLibToolCompatibleDllSuffix -> -2.0-0
|
||||
AtkSeperateVS10DLLSuffix -> -2-vs10
|
||||
Sorry this change did not make it upstream prior to ATK-2.0.0 release-
|
||||
this will be in the subsequent releases of ATK-2.x and was committed
|
||||
upstream.
|
||||
|
||||
***:Put the sources of the packages marked with *** in <root>\<package-
|
||||
**:Put the sources of the packages marked with ** in <root>\<package-
|
||||
source-tree>, and build with VS10 from there.
|
||||
|
||||
--Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
181
build/win32/vs10/gailutil.vcxproj
Normal file
181
build/win32/vs10/gailutil.vcxproj
Normal file
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}</ProjectGuid>
|
||||
<RootNamespace>gailutil</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>..\..\..\libgail-util\gailutil.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>$(TargetDir)$(ProjectName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\libgail-util\gailmisc.c" />
|
||||
<ClCompile Include="..\..\..\libgail-util\gailtextutil.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="gdk.vcxproj">
|
||||
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gtk.vcxproj">
|
||||
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f5}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
25
build/win32/vs10/gailutil.vcxproj.filters
Normal file
25
build/win32/vs10/gailutil.vcxproj.filters
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\libgail-util\gailmisc.c">
|
||||
<Filter>Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\libgail-util\gailtextutil.c">
|
||||
<Filter>Sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -3,7 +3,7 @@
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<GlibEtcInstallRoot>..\..\..\..\..\vs10\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>$(GlibEtcInstallRoot)</CopyDir>
|
||||
<DefDir>$(SolutionDir)$(Configuration)\$(Platform)\obj</DefDir>
|
||||
<DefDir>$(SolutionDir)$(Configuration)\$(Platform)\obj\$(ProjectName)</DefDir>
|
||||
<GtkApiVersion>3.0</GtkApiVersion>
|
||||
<GtkBinaryVersion>2.10.0</GtkBinaryVersion>
|
||||
<GtkDummyPrefix>\"/dummy\"</GtkDummyPrefix>
|
||||
@@ -102,6 +102,23 @@ copy ..\..\..\gdk\win32\gdkwin32.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
|
||||
copy ..\..\..\gdk\gdkwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk
|
||||
|
||||
|
||||
mkdir $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32cursor.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32display.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32displaymanager.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32dnd.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32keys.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32screen.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
copy ..\..\..\gdk\win32\gdkwin32window.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gdk\win32
|
||||
|
||||
|
||||
mkdir $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
|
||||
|
||||
copy ..\..\..\gtk\gtk.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
|
||||
@@ -527,11 +544,22 @@ copy ..\..\..\gtk\gtkwidgetpath.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
|
||||
copy ..\..\..\gtk\gtkwindow.h $(CopyDir)\include\gtk-$(GtkApiVersion)\gtk
|
||||
|
||||
|
||||
mkdir $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
|
||||
|
||||
copy ..\..\..\libgail-util\gail-util.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
|
||||
|
||||
copy ..\..\..\libgail-util\gailmisc.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
|
||||
|
||||
copy ..\..\..\libgail-util\gailtextutil.h $(CopyDir)\include\gail-$(GtkApiVersion)\libgail-util
|
||||
|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h $(CopyDir)\include\gtk-3.0\gdk
|
||||
|
||||
|
||||
copy $(Configuration)\$(Platform)\bin\*-$(GtkApiVersion).lib $(CopyDir)\lib
|
||||
|
||||
copy $(Configuration)\$(Platform)\bin\gailutil.lib $(CopyDir)\lib
|
||||
|
||||
|
||||
mkdir $(CopyDir)\share\glib-2.0\schemas
|
||||
|
||||
@@ -559,7 +587,7 @@ $(CopyDir)\bin\glib-compile-schemas.exe $(CopyDir)\share\glib-2.0\schemas
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-2.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>HAVE_CONFIG_H;G_DISABLE_DEPRECATED;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
|
||||
</ClCompile>
|
||||
|
||||
@@ -8,6 +8,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk", "gtk.vcxproj", "{FC5A
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-demo", "gtk3-demo.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgail", "libgail.vcxproj", "{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil", "gailutil.vcxproj", "{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcxproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}"
|
||||
EndProject
|
||||
Global
|
||||
@@ -50,6 +54,22 @@ Global
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|Win32.Build.0 = Release|Win32
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.ActiveCfg = Release|x64
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.Build.0 = Release|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.Build.0 = Debug|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.Build.0 = Release|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.ActiveCfg = Release|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.Build.0 = Release|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.Build.0 = Debug|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.Build.0 = Release|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.ActiveCfg = Release|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.Build.0 = Release|x64
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-2.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -100,7 +100,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-2.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -125,7 +125,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-2.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -145,7 +145,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>atk-2.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>atk-1.0.lib;pangowin32-1.0.lib;imm32.lib;winspool.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll</OutputFile>
|
||||
<ModuleDefinitionFile>$(IntDir)gtk.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -198,6 +198,10 @@
|
||||
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f7}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="libgail.vcxproj">
|
||||
<Project>{f756b0db-40a1-4e9f-be1f-8f02cb86ea46}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -105,6 +105,10 @@
|
||||
<Project>{fc5aadb5-95cd-4bf0-ba8b-0c16fe7073f5}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="gailutil.vcxproj">
|
||||
<Project>{29e3e814-1ba3-4ad7-a3a7-3669cb80a942}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
20
build/win32/vs10/libgail.vcxproj.filtersin
Normal file
20
build/win32/vs10/libgail.vcxproj.filtersin
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Sources">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Headers">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
#include "libgail.vs10.sourcefiles.filters"
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
126
build/win32/vs10/libgail.vcxprojin
Normal file
126
build/win32/vs10/libgail.vcxprojin
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}</ProjectGuid>
|
||||
<RootNamespace>libgail</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="gtk+.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;G_ENABLE_DEBUG;$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>$(GtkDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
#include "libgail.vs10.sourcefiles"
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -10,4 +10,7 @@ EXTRA_DIST += \
|
||||
gtk.vcproj \
|
||||
gtk.vcprojin \
|
||||
gtk3-demo.vcproj \
|
||||
libgail.vcproj \
|
||||
libgail.vcprojin \
|
||||
gailutil.vcproj \
|
||||
install.vcproj
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
Note that all this is rather experimental.
|
||||
Please do not compile this package (GTK+) in paths that contain
|
||||
spaces in them-as strange problems may occur during compilation or during
|
||||
the use of the library.
|
||||
|
||||
A more detailed outline for instructions on building the GTK+ with Visual
|
||||
C++ can be found in the following GNOME Live! page:
|
||||
|
||||
https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
|
||||
|
||||
This VS9 solution and the projects it includes are intented to be used
|
||||
in a GTK+ source tree unpacked from a tarball. In a git checkout you
|
||||
@@ -7,7 +14,7 @@ the files needed, like config.h.win32.in into config.h.win32 and the
|
||||
.vcprojin files here into corresponding actual .vcproj files.
|
||||
|
||||
You will need the parts from below in the GTK+ stack: GDK-Pixbuf, Pango,
|
||||
ATK (2.x)** and GLib. External dependencies are at least Cairo
|
||||
ATK and GLib. External dependencies are at least Cairo
|
||||
(with Cairo-GObject support, meaning Cairo 1.10.x or later), zlib, libpng,
|
||||
gettext-runtime, fontconfig*, freetype*, expat*. See the
|
||||
build/win32/vs9/README.txt file in glib for details where to unpack them.
|
||||
@@ -20,8 +27,8 @@ to different CRTs can be kept at a minimum.
|
||||
zlib, libpng, and Cairo do contain support for compiling under VS9
|
||||
using VS project files and/or makefiles at this time of writing, For the
|
||||
GTK+ stack, VS9 project files are either available under
|
||||
$(srcroot)/build/vs9 in the case of GLib (stable/unstable), ATK**
|
||||
(2.x stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
|
||||
$(srcroot)/build/vs9 in the case of GLib (stable/unstable), ATK
|
||||
(stable/unstable) and GDK-Pixbuf (unstable), and should be in the next
|
||||
unstable version of Pango. There is no known official VS9 build
|
||||
support for fontconfig (along with freetype and expat) and
|
||||
gettext-runtime, so please use the binaries from:
|
||||
@@ -48,11 +55,11 @@ The recommended build order for these dependencies:
|
||||
-(for GDK-Pixbuf, if not using GDI+) jasper [jpeg-2000 library])
|
||||
-(optional for GLib) PCRE (version 8.12 or later, use of CMake to
|
||||
build PCRE is recommended-see build/win32/vs9/README.txt of GLib)
|
||||
-GLib ***
|
||||
-GLib **
|
||||
-Cairo (inclusive of Cairo-GObject)
|
||||
-ATK-2.x** ***
|
||||
-Pango***
|
||||
-GDK-Pixbuf***
|
||||
-ATK**
|
||||
-Pango**
|
||||
-GDK-Pixbuf**
|
||||
(note the last 3 dependencies are not interdependent, so the last 3
|
||||
dependencies can be built in any order)
|
||||
|
||||
@@ -72,18 +79,7 @@ from a specific GLib source tree.
|
||||
Decide whether you need fontconfig support prior to building Cairo
|
||||
and Pango.
|
||||
|
||||
**Regarding ATK-2.x: prior to compiling ATK-2.x, please open atkprops
|
||||
in VS under "Properties Manager" view (it is under any one of the
|
||||
build configurations, right-click on atkprops and select "Properties").
|
||||
Navigate to "User Macros", and edit the following fields:
|
||||
AtkApiVersion -> 2.0
|
||||
AtkLibToolCompatibleDllSuffix -> -2.0-0
|
||||
AtkSeperateVS9DLLSuffix -> -2-vs9
|
||||
Sorry this change did not make it upstream prior to ATK-2.0.0 release-
|
||||
this will be in the subsequent releases of ATK-2.x and was committed
|
||||
upstream.
|
||||
|
||||
***:Put the sources of the packages marked with *** in <root>\<package-
|
||||
**:Put the sources of the packages marked with ** in <root>\<package-
|
||||
source-tree>, and build with VS9 from there.
|
||||
|
||||
--Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
183
build/win32/vs9/gailutil.vcproj
Normal file
183
build/win32/vs9/gailutil.vcproj
Normal file
@@ -0,0 +1,183 @@
|
||||
<?xml version="1.0" encoding="big5"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="gailutil"
|
||||
ProjectGUID="{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
|
||||
RootNamespace="gailutil"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
AdditionalDependencies="atk-1.0.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
GenerateDebugInformation="true"
|
||||
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName).lib"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-1.0.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName).lib"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
PreprocessorDefinitions="GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
AdditionalDependencies="atk-1.0.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
GenerateDebugInformation="true"
|
||||
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName).lib"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
PreprocessorDefinitions="GTK_DISABLE_DEPRECATED;GDK_DISABLE_DEPRECATED"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-1.0.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="..\..\..\libgail-util\gailutil.def"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
ImportLibrary="$(TargetDir)$(ProjectName).lib"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Sources"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File RelativePath="..\..\..\libgail-util\gailmisc.c" />
|
||||
<File RelativePath="..\..\..\libgail-util\gailtextutil.c" />
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Headers"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -10,6 +10,7 @@ EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk", "gtk.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46} = {F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-demo", "gtk3-demo.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}"
|
||||
@@ -18,11 +19,20 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtk3-demo", "gtk3-demo.vcpr
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgail", "libgail.vcproj", "{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gailutil", "gailutil.vcproj", "{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj", "{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FB}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F7}
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073F5}
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC} = {FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942} = {29E3E814-1BA3-4AD7-A3A7-3669CB80A942}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
@@ -73,6 +83,22 @@ Global
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|Win32.Build.0 = Release|Win32
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.ActiveCfg = Release|x64
|
||||
{FC5AADB5-95CD-4BF0-BA8B-0C16FE7073FC}.Release|x64.Build.0 = Release|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Debug|x64.Build.0 = Debug|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|Win32.Build.0 = Release|Win32
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.ActiveCfg = Release|x64
|
||||
{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}.Release|x64.Build.0 = Release|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Debug|x64.Build.0 = Debug|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|Win32.Build.0 = Release|Win32
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.ActiveCfg = Release|x64
|
||||
{29E3E814-1BA3-4AD7-A3A7-3669CB80A942}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-2.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0"
|
||||
AdditionalIncludeDirectories="..\..\..;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\cairo;$(GlibEtcInstallRoot)\include\atk-1.0;$(GlibEtcInstallRoot)\include\pango-1.0;$(GlibEtcInstallRoot)\include\gdk-pixbuf-2.0"
|
||||
PreprocessorDefinitions="HAVE_CONFIG_H;G_DISABLE_DEPRECATED;G_DISABLE_SINGLE_INCLUDES;ATK_DISABLE_SINGLE_INCLUDES;GDK_PIXBUF_DISABLE_SINGLE_INCLUDES;GTK_DISABLE_SINGLE_INCLUDES"
|
||||
ForcedIncludeFiles="msvc_recommended_pragmas.h"
|
||||
/>
|
||||
@@ -105,6 +105,15 @@ copy ..\..\..\gdk\gdkvisual.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk
&#
|
||||
copy ..\..\..\gdk\win32\gdkwin32.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkwindow.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
|
||||
mkdir $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32cursor.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32display.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32displaymanager.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32dnd.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32keys.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32screen.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
copy ..\..\..\gdk\win32\gdkwin32window.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk\win32

|
||||
|
||||
mkdir $(OutDir)\include\gtk-$(GtkApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtk.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkaboutdialog.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk

|
||||
@@ -318,9 +327,15 @@ copy ..\..\..\gtk\gtkwidget.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk
&#
|
||||
copy ..\..\..\gtk\gtkwidgetpath.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk

|
||||
copy ..\..\..\gtk\gtkwindow.h $(OutDir)\include\gtk-$(GtkApiVersion)\gtk

|
||||
|
||||
mkdir $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util

|
||||
copy ..\..\..\libgail-util\gail-util.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util

|
||||
copy ..\..\..\libgail-util\gailmisc.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util

|
||||
copy ..\..\..\libgail-util\gailtextutil.h $(OutDir)\include\gail-$(GtkApiVersion)\libgail-util

|
||||
|
||||
copy ..\..\..\gdk\gdkconfig.h $(OutDir)\include\gtk-3.0\gdk

|
||||
|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\*-$(GtkApiVersion).lib $(OutDir)\lib

|
||||
copy $(ConfigurationName)\$(PlatformName)\bin\gailutil.lib $(OutDir)\lib

|
||||
|
||||
mkdir $(OutDir)\share\glib-2.0\schemas

|
||||
copy ..\..\..\gtk\org.gtk.Settings.FileChooser.gschema.xml $(OutDir)\share\glib-2.0\schemas

|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-2.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
@@ -72,7 +72,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-2.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
@@ -107,7 +107,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-2.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
@@ -137,7 +137,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="atk-2.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
AdditionalDependencies="atk-1.0.lib pangowin32-1.0.lib imm32.lib winspool.lib comctl32.lib"
|
||||
OutputFile="$(OutDir)\$(GtkDllPrefix)$(ProjectName)-win32$(GtkDllSuffix).dll"
|
||||
LinkIncremental="2"
|
||||
ModuleDefinitionFile="$(IntDir)\gtk.def"
|
||||
|
||||
134
build/win32/vs9/libgail.vcprojin
Normal file
134
build/win32/vs9/libgail.vcprojin
Normal file
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="big5"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="libgail"
|
||||
ProjectGUID="{F756B0DB-40A1-4E9F-BE1F-8F02CB86EA46}"
|
||||
RootNamespace="libgail"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="_DEBUG;G_ENABLE_DEBUG;$(GtkDefines)"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
PreprocessorDefinitions="$(GtkDefines)"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
InheritedPropertySheets=".\gtk+.vsprops"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="$(GtkDefines)"
|
||||
AdditionalIncludeDirectories="..\..\..\gtk;..\..\..\gdk;..\..\..\gdk\win32"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Sources"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
#include "libgail.sourcefiles"
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Headers"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -112,11 +112,15 @@
|
||||
/* Have the Xrandr extension library */
|
||||
/* #undef HAVE_RANDR */
|
||||
|
||||
/* Define to 1 if shm.h is available */
|
||||
/* #undef HAVE_SHM_H */
|
||||
/* Define to 1 if rint() is available */
|
||||
#ifndef _MSC_VER
|
||||
#define HAVE_RINT 1
|
||||
#endif
|
||||
|
||||
/* Define to 1 if sigsetjmp is available */
|
||||
/* #undef HAVE_SIGSETJMP */
|
||||
/* Define to 1 if round() is available */
|
||||
#ifndef _MSC_VER
|
||||
#define HAVE_ROUND 1
|
||||
#endif
|
||||
|
||||
/* Have the sockaddr_un.sun_len member */
|
||||
/* #undef HAVE_SOCKADDR_UN_SUN_LEN */
|
||||
@@ -128,6 +132,9 @@
|
||||
#ifndef _MSC_VER
|
||||
#define HAVE_STDINT_H 1
|
||||
#else
|
||||
#if (_MSC_VER >= 1600) /* VS 2010+ ships with stdint.h */
|
||||
#define HAVE_STDINT_H 1
|
||||
#endif
|
||||
/* #undef HAVE_STDINT_H */
|
||||
#endif
|
||||
|
||||
@@ -135,7 +142,9 @@
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#ifndef _MSC_VER
|
||||
#define HAVE_STRINGS_H 1
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
86
configure.ac
86
configure.ac
@@ -9,9 +9,9 @@
|
||||
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
|
||||
|
||||
m4_define([gtk_major_version], [3])
|
||||
m4_define([gtk_minor_version], [1])
|
||||
m4_define([gtk_micro_version], [8])
|
||||
m4_define([gtk_interface_age], [0])
|
||||
m4_define([gtk_minor_version], [2])
|
||||
m4_define([gtk_micro_version], [2])
|
||||
m4_define([gtk_interface_age], [2])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
m4_define([gtk_version],
|
||||
@@ -39,11 +39,11 @@ AC_CONFIG_AUX_DIR([build-aux])
|
||||
m4_define([gtk_binary_version], [3.0.0])
|
||||
|
||||
# required versions of other packages
|
||||
m4_define([glib_required_version], [2.29.4])
|
||||
m4_define([pango_required_version], [1.24.0])
|
||||
m4_define([atk_required_version], [1.30])
|
||||
m4_define([glib_required_version], [2.29.14])
|
||||
m4_define([pango_required_version], [1.29.0])
|
||||
m4_define([atk_required_version], [2.1.5])
|
||||
m4_define([cairo_required_version], [1.10.0])
|
||||
m4_define([gdk_pixbuf_required_version], [2.22.0])
|
||||
m4_define([gdk_pixbuf_required_version], [2.23.5])
|
||||
m4_define([introspection_required_version], [0.10.1])
|
||||
GLIB_REQUIRED_VERSION=glib_required_version
|
||||
PANGO_REQUIRED_VERSION=pango_required_version
|
||||
@@ -62,7 +62,7 @@ AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
|
||||
# Save this value here, since automake will set cflags later
|
||||
cflags_set=${CFLAGS+set}
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
|
||||
AM_INIT_AUTOMAKE([1.11 -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
|
||||
# Support silent build rules. Disable
|
||||
@@ -165,6 +165,9 @@ case $host in
|
||||
*-*-linux*)
|
||||
os_linux=yes
|
||||
;;
|
||||
*-*-openbsd*)
|
||||
os_openbsd=yes
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl
|
||||
@@ -315,6 +318,11 @@ if test -z "$backend_set"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(quartz-relocation,
|
||||
[AS_HELP_STRING([--enable-quartz-relocation],
|
||||
[enable bundle-based relocation functions])],
|
||||
[quartz_relocation=yes])
|
||||
|
||||
cairo_backends=
|
||||
backend_immodules=
|
||||
GDK_BACKENDS=
|
||||
@@ -324,7 +332,7 @@ GDK_WINDOWING=
|
||||
GIO_PACKAGE=gio-2.0
|
||||
PANGO_PACKAGES="pango pangocairo"
|
||||
|
||||
if test "x$enable_x11_backend" = xyes; then
|
||||
if test "$enable_x11_backend" = "yes"; then
|
||||
# GDK calls the xlib backend "x11," cairo calls it "xlib." Other
|
||||
# backend names are identical.
|
||||
cairo_backends="$cairo_backends cairo-xlib"
|
||||
@@ -337,7 +345,7 @@ if test "x$enable_x11_backend" = xyes; then
|
||||
#define GDK_WINDOWING_X11"
|
||||
fi
|
||||
|
||||
if test "x$enable_win32_backend" = xyes; then
|
||||
if test "$enable_win32_backend" = "yes"; then
|
||||
cairo_backends="$cairo_backends cairo-win32"
|
||||
GDK_BACKENDS="$GDK_BACKENDS win32"
|
||||
backend_immodules="$backend_immodules,ime"
|
||||
@@ -357,6 +365,10 @@ if test "x$enable_quartz_backend" = xyes; then
|
||||
#define GDK_WINDOWING_QUARTZ"
|
||||
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
|
||||
AM_CONDITIONAL(USE_QUARTZ, true)
|
||||
if test "x$quartz_relocation" = xyes; then
|
||||
AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
|
||||
fi
|
||||
|
||||
else
|
||||
AM_CONDITIONAL(USE_QUARTZ, false)
|
||||
fi
|
||||
@@ -380,7 +392,7 @@ if test "x$enable_wayland_backend" == "xyes"; then
|
||||
GIO_PACKAGE=gio-unix-2.0
|
||||
GDK_WINDOWING="$GDK_WINDOWING
|
||||
#define GDK_WINDOWING_WAYLAND"
|
||||
WAYLAND_PACKAGES="wayland-client xkbcommon wayland-egl"
|
||||
WAYLAND_PACKAGES="wayland-client xkbcommon wayland-egl egl"
|
||||
AM_CONDITIONAL(USE_WAYLAND, true)
|
||||
else
|
||||
AM_CONDITIONAL(USE_WAYLAND, false)
|
||||
@@ -750,6 +762,18 @@ if test $gtk_uxtheme_h = yes; then
|
||||
fi
|
||||
AC_MSG_RESULT($gtk_uxtheme_h)
|
||||
|
||||
# Check for round()
|
||||
AC_CHECK_LIB(m,round,have_round=yes,have_round=no)
|
||||
if test $have_round = yes; then
|
||||
AC_DEFINE(HAVE_ROUND, 1, [Define to 1 if round() is available])
|
||||
fi
|
||||
|
||||
# Check for rint()
|
||||
AC_CHECK_LIB(m,rint,have_rint=yes,have_rint=no)
|
||||
if test $have_rint = yes; then
|
||||
AC_DEFINE(HAVE_RINT, 1, [Define to 1 if rint() is available])
|
||||
fi
|
||||
|
||||
# Checks for gdkspawn
|
||||
AC_CHECK_HEADERS(crt_externs.h)
|
||||
AC_CHECK_FUNCS(_NSGetEnviron)
|
||||
@@ -1248,7 +1272,7 @@ LDFLAGS="$saved_ldflags"
|
||||
|
||||
GDK_PACKAGES="$PANGO_PACKAGES $GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES gdk-pixbuf-2.0 $cairo_backends cairo-gobject"
|
||||
|
||||
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES`"
|
||||
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES` $MATH_LIB"
|
||||
GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS"
|
||||
#
|
||||
# If we aren't writing explicit dependencies, then don't put the extra libraries we need
|
||||
@@ -1300,8 +1324,12 @@ if test "x$enable_x11_backend" = xyes; then
|
||||
GTK_PACKAGES="$GTK_PACKAGES pangoft2"
|
||||
fi
|
||||
GTK_EXTRA_LIBS=
|
||||
if test x"$os_openbsd" = xyes; then
|
||||
GTK_EXTRA_LIBS="$GTK_EXTRA_LIBS -lkvm"
|
||||
fi
|
||||
|
||||
GTK_EXTRA_CFLAGS=
|
||||
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS"
|
||||
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $MATH_LIB"
|
||||
GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES $GTK_PACKAGES` $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
|
||||
|
||||
if test x"$os_win32" = xyes; then
|
||||
@@ -1521,7 +1549,7 @@ GOBJECT_INTROSPECTION_CHECK(introspection_required_version)
|
||||
|
||||
AC_ARG_ENABLE(packagekit,
|
||||
[AS_HELP_STRING([--enable-packagekit=@<:@yes/no/auto@:>@],
|
||||
[build packagekit open-with module [default=auto]])],
|
||||
[build PackageKit open-with module [default=auto]])],
|
||||
[enable_packagekit="$enableval"],
|
||||
[enable_packagekit=auto])
|
||||
if test "$enable_packagekit" = "auto"; then
|
||||
@@ -1532,7 +1560,7 @@ if test "$enable_packagekit" = "auto"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([Whether to use PackageKit])
|
||||
AC_MSG_CHECKING([whether to use PackageKit])
|
||||
build_packagekit=no
|
||||
if test "x$enable_packagekit" != "xno"; then
|
||||
if test "$os_win32" != "yes"; then
|
||||
@@ -1555,22 +1583,26 @@ AC_ARG_ENABLE(colord,
|
||||
[build colord support code [default=auto]])],
|
||||
[enable_colord="$enableval"],
|
||||
[enable_colord=auto])
|
||||
|
||||
AC_MSG_CHECKING([whether to use colord])
|
||||
if test "$enable_colord" = "auto"; then
|
||||
if test "$os_win32" = "yes"; then
|
||||
enable_colord=no
|
||||
else
|
||||
enable_colord=yes
|
||||
fi
|
||||
fi
|
||||
if test "$enable_colord" != "no"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([Whether to use colord])
|
||||
have_colord=no
|
||||
if test "x$enable_colord" != "xno"; then
|
||||
if test "$enable_colord" != "no"; then
|
||||
if test "$os_win32" != "yes"; then
|
||||
PKG_CHECK_MODULES(COLORD, colord >= 0.1.9,
|
||||
have_colord=yes, have_colord=no)
|
||||
if test "enable_colord" = "yes"; then
|
||||
if test "have_colord" = "no"; then
|
||||
if test "$enable_colord" = "yes"; then
|
||||
if test "$have_colord" = "no"; then
|
||||
AC_MSG_ERROR([--enable-colord specified, but not available])
|
||||
fi
|
||||
fi
|
||||
@@ -1578,9 +1610,8 @@ if test "x$enable_colord" != "xno"; then
|
||||
AC_MSG_ERROR([colord support is not available on win32])
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([$have_colord])
|
||||
|
||||
if test "have_colord" = "yes"; then
|
||||
if test "$have_colord" = "yes"; then
|
||||
AC_DEFINE(HAVE_COLORD, 1, [define if we have colord])
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_COLORD, test "x$have_colord" = "xyes")
|
||||
@@ -1708,6 +1739,7 @@ demos/gtk-demo/geninclude.pl
|
||||
demos/pixbuf-demo/Makefile
|
||||
examples/Makefile
|
||||
tests/Makefile
|
||||
tests/a11y/Makefile
|
||||
tests/css/Makefile
|
||||
tests/css/parser/Makefile
|
||||
tests/reftests/Makefile
|
||||
@@ -1737,12 +1769,10 @@ gtk/Makefile
|
||||
gtk/makefile.msc
|
||||
gtk/gtkversion.h
|
||||
gtk/gtk-win32.rc
|
||||
gtk/a11y/Makefile
|
||||
gtk/tests/Makefile
|
||||
libgail-util/Makefile
|
||||
modules/Makefile
|
||||
modules/other/Makefile
|
||||
modules/other/gail/Makefile
|
||||
modules/other/gail/libgail-util/Makefile
|
||||
modules/other/gail/tests/Makefile
|
||||
modules/engines/Makefile
|
||||
modules/engines/pixbuf/Makefile
|
||||
modules/engines/ms-windows/Makefile
|
||||
@@ -1769,7 +1799,7 @@ echo " GTK+ $GTK_VERSION"
|
||||
echo " ==========="
|
||||
echo ""
|
||||
echo " GDK backends: $GDK_BACKENDS"
|
||||
if test "x$enable_x11_backend" = "xyes"; then
|
||||
if test "$enable_x11_backend" = "yes"; then
|
||||
echo " X11 extensions: $X_EXTENSIONS"
|
||||
fi
|
||||
echo " Print backends: $PRINT_BACKENDS"
|
||||
|
||||
@@ -46,7 +46,7 @@ demos = \
|
||||
tree_store.c \
|
||||
ui_manager.c
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-DDEMOCODEDIR="\"$(democodedir)\"" \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir)/gdk \
|
||||
@@ -73,7 +73,7 @@ EXTRA_DIST += \
|
||||
demo.ui
|
||||
|
||||
demos.h: @REBUILD@ $(demos) geninclude.pl
|
||||
(here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
|
||||
$(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
|
||||
|
||||
gtk3_demo_SOURCES = \
|
||||
$(demos) \
|
||||
|
||||
@@ -25,8 +25,8 @@ activate_action (GtkAction *action)
|
||||
GtkSettings *settings = gtk_settings_get_default ();
|
||||
|
||||
g_object_set (G_OBJECT (settings),
|
||||
"gtk-application-prefer-dark-theme", value,
|
||||
NULL);
|
||||
"gtk-application-prefer-dark-theme", value,
|
||||
NULL);
|
||||
return;
|
||||
}
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
@@ -69,7 +69,7 @@ activate_radio_action (GtkAction *action, GtkRadioAction *current)
|
||||
|
||||
static void
|
||||
about_cb (GtkAction *action,
|
||||
GtkWidget *window)
|
||||
GtkWidget *window)
|
||||
{
|
||||
GdkPixbuf *pixbuf, *transparent;
|
||||
gchar *filename;
|
||||
@@ -102,21 +102,21 @@ about_cb (GtkAction *action,
|
||||
}
|
||||
|
||||
gtk_show_about_dialog (GTK_WINDOW (window),
|
||||
"program-name", "GTK+ Code Demos",
|
||||
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ()),
|
||||
"copyright", "(C) 1997-2009 The GTK+ Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK+ functions.",
|
||||
"authors", authors,
|
||||
"documenters", documentors,
|
||||
"logo", transparent,
|
||||
"program-name", "GTK+ Code Demos",
|
||||
"version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d",
|
||||
PACKAGE_VERSION,
|
||||
gtk_get_major_version (),
|
||||
gtk_get_minor_version (),
|
||||
gtk_get_micro_version ()),
|
||||
"copyright", "(C) 1997-2009 The GTK+ Team",
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK+ functions.",
|
||||
"authors", authors,
|
||||
"documenters", documentors,
|
||||
"logo", transparent,
|
||||
"title", "About GTK+ Code Demos",
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
g_object_unref (transparent);
|
||||
}
|
||||
@@ -249,9 +249,9 @@ static const gchar *ui_info =
|
||||
" <menu action='PreferencesMenu'>"
|
||||
" <menuitem action='DarkTheme'/>"
|
||||
" <menu action='ColorMenu'>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" </menu>"
|
||||
" <menu action='ShapeMenu'>"
|
||||
" <menuitem action='Square'/>"
|
||||
@@ -317,10 +317,10 @@ register_stock_icons (void)
|
||||
pixbuf = NULL;
|
||||
filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
|
||||
if (filename)
|
||||
{
|
||||
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
|
||||
g_free (filename);
|
||||
}
|
||||
{
|
||||
pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
/* Register icon to accompany stock item */
|
||||
if (pixbuf != NULL)
|
||||
@@ -355,8 +355,8 @@ update_statusbar (GtkTextBuffer *buffer,
|
||||
GtkTextIter iter;
|
||||
|
||||
gtk_statusbar_pop (statusbar, 0); /* clear any previous message,
|
||||
* underflow is allowed
|
||||
*/
|
||||
* underflow is allowed
|
||||
*/
|
||||
|
||||
count = gtk_text_buffer_get_char_count (buffer);
|
||||
|
||||
@@ -407,7 +407,7 @@ do_appwindow (GtkWidget *do_widget)
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Application Window");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (window), "document-open");
|
||||
|
||||
@@ -416,7 +416,7 @@ do_appwindow (GtkWidget *do_widget)
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
table = gtk_table_new (1, 5, FALSE);
|
||||
table = gtk_grid_new ();
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), table);
|
||||
|
||||
@@ -425,60 +425,52 @@ do_appwindow (GtkWidget *do_widget)
|
||||
|
||||
action_group = gtk_action_group_new ("AppWindowActions");
|
||||
open_action = g_object_new (tool_menu_action_get_type (),
|
||||
"name", "Open",
|
||||
"label", "_Open",
|
||||
"tooltip", "Open a file",
|
||||
"stock-id", GTK_STOCK_OPEN,
|
||||
NULL);
|
||||
"name", "Open",
|
||||
"label", "_Open",
|
||||
"tooltip", "Open a file",
|
||||
"stock-id", GTK_STOCK_OPEN,
|
||||
NULL);
|
||||
gtk_action_group_add_action (action_group, open_action);
|
||||
g_object_unref (open_action);
|
||||
gtk_action_group_add_actions (action_group,
|
||||
entries, n_entries,
|
||||
window);
|
||||
entries, n_entries,
|
||||
window);
|
||||
gtk_action_group_add_toggle_actions (action_group,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (action_group,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (action_group,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_SQUARE,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_SQUARE,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
|
||||
merge = gtk_ui_manager_new ();
|
||||
g_object_set_data_full (G_OBJECT (window), "ui-manager", merge,
|
||||
g_object_unref);
|
||||
g_object_unref);
|
||||
gtk_ui_manager_insert_action_group (merge, action_group, 0);
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (merge));
|
||||
gtk_ui_manager_get_accel_group (merge));
|
||||
|
||||
if (!gtk_ui_manager_add_ui_from_string (merge, ui_info, -1, &error))
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
bar = gtk_ui_manager_get_widget (merge, "/MenuBar");
|
||||
gtk_widget_show (bar);
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
bar,
|
||||
/* X direction */ /* Y direction */
|
||||
0, 1, 0, 1,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), bar, 0, 0, 1, 1);
|
||||
|
||||
bar = gtk_ui_manager_get_widget (merge, "/ToolBar");
|
||||
gtk_widget_show (bar);
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
bar,
|
||||
/* X direction */ /* Y direction */
|
||||
0, 1, 1, 2,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
gtk_widget_set_halign (bar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), bar, 0, 1, 1, 1);
|
||||
|
||||
/* Create document
|
||||
*/
|
||||
@@ -495,12 +487,8 @@ do_appwindow (GtkWidget *do_widget)
|
||||
g_signal_connect (infobar, "response",
|
||||
G_CALLBACK (gtk_widget_hide), NULL);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
infobar,
|
||||
/* X direction */ /* Y direction */
|
||||
0, 1, 2, 3,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
gtk_widget_set_halign (infobar, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), infobar, 0, 2, 1, 1);
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
|
||||
@@ -511,12 +499,11 @@ do_appwindow (GtkWidget *do_widget)
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
sw,
|
||||
/* X direction */ /* Y direction */
|
||||
0, 1, 3, 4,
|
||||
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
|
||||
0, 0);
|
||||
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
|
||||
gtk_widget_set_valign (sw, GTK_ALIGN_FILL);
|
||||
gtk_widget_set_hexpand (sw, TRUE);
|
||||
gtk_widget_set_vexpand (sw, TRUE);
|
||||
gtk_grid_attach (GTK_GRID (table), sw, 0, 3, 1, 1);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
200, 200);
|
||||
@@ -530,16 +517,12 @@ do_appwindow (GtkWidget *do_widget)
|
||||
/* Create statusbar */
|
||||
|
||||
statusbar = gtk_statusbar_new ();
|
||||
gtk_table_attach (GTK_TABLE (table),
|
||||
statusbar,
|
||||
/* X direction */ /* Y direction */
|
||||
0, 1, 4, 5,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
gtk_widget_set_halign (sw, GTK_ALIGN_FILL);
|
||||
gtk_grid_attach (GTK_GRID (table), statusbar, 0, 4, 1, 1);
|
||||
|
||||
/* Show text widget info in the statusbar */
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
|
||||
|
||||
|
||||
g_signal_connect_object (buffer,
|
||||
"changed",
|
||||
G_CALLBACK (update_statusbar),
|
||||
@@ -569,4 +552,3 @@ do_appwindow (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@ create_page1 (GtkWidget *assistant)
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
|
||||
gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0);
|
||||
g_signal_connect (G_OBJECT (entry), "changed",
|
||||
G_CALLBACK (on_entry_changed), assistant);
|
||||
@@ -146,22 +147,19 @@ create_page3 (GtkWidget *assistant)
|
||||
static void
|
||||
create_page4 (GtkWidget *assistant)
|
||||
{
|
||||
GtkWidget *page;
|
||||
|
||||
page = gtk_alignment_new (0.5, 0.5, 0.5, 0.0);
|
||||
|
||||
progress_bar = gtk_progress_bar_new ();
|
||||
gtk_container_add (GTK_CONTAINER (page), progress_bar);
|
||||
gtk_widget_set_halign (progress_bar, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (progress_bar, GTK_ALIGN_CENTER);
|
||||
|
||||
gtk_widget_show_all (page);
|
||||
gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
|
||||
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_PROGRESS);
|
||||
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Applying changes");
|
||||
gtk_widget_show (progress_bar);
|
||||
gtk_assistant_append_page (GTK_ASSISTANT (assistant), progress_bar);
|
||||
gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), progress_bar, GTK_ASSISTANT_PAGE_PROGRESS);
|
||||
gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), progress_bar, "Applying changes");
|
||||
|
||||
/* This prevents the assistant window from being
|
||||
* closed while we're "busy" applying changes.
|
||||
*/
|
||||
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, FALSE);
|
||||
gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), progress_bar, FALSE);
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
|
||||
@@ -33,7 +33,7 @@ do_builder (GtkWidget *do_widget)
|
||||
static GtkWidget *window = NULL;
|
||||
GError *err = NULL;
|
||||
gchar *filename;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
builder = gtk_builder_new ();
|
||||
@@ -41,16 +41,16 @@ do_builder (GtkWidget *do_widget)
|
||||
gtk_builder_add_from_file (builder, filename, &err);
|
||||
g_free (filename);
|
||||
if (err)
|
||||
{
|
||||
g_error ("ERROR: %s\n", err->message);
|
||||
return NULL;
|
||||
}
|
||||
{
|
||||
g_error ("ERROR: %s\n", err->message);
|
||||
return NULL;
|
||||
}
|
||||
gtk_builder_connect_signals (builder, NULL);
|
||||
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
@@ -58,7 +58,7 @@ do_builder (GtkWidget *do_widget)
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
static GtkWidget *
|
||||
create_bbox (gint horizontal,
|
||||
char *title,
|
||||
gint spacing,
|
||||
gint layout)
|
||||
char *title,
|
||||
gint spacing,
|
||||
gint layout)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
GtkWidget *bbox;
|
||||
GtkWidget *button;
|
||||
|
||||
|
||||
frame = gtk_frame_new (title);
|
||||
|
||||
if (horizontal)
|
||||
@@ -27,13 +27,13 @@ create_bbox (gint horizontal,
|
||||
|
||||
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
|
||||
gtk_box_set_spacing (GTK_BOX (bbox), spacing);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_OK);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_HELP);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
@@ -49,68 +49,68 @@ do_button_box (GtkWidget *do_widget)
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *frame_horz;
|
||||
GtkWidget *frame_vert;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), main_vbox);
|
||||
|
||||
|
||||
frame_horz = gtk_frame_new ("Horizontal Button Boxes");
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
|
||||
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
frame_vert = gtk_frame_new ("Vertical Button Boxes");
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
|
||||
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
@@ -118,7 +118,7 @@ do_button_box (GtkWidget *do_widget)
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
@@ -95,8 +95,8 @@ find_toplevel_at_pointer (GdkDisplay *display)
|
||||
|
||||
static gboolean
|
||||
button_release_event_cb (GtkWidget *widget,
|
||||
GdkEventButton *event,
|
||||
gboolean *clicked)
|
||||
GdkEventButton *event,
|
||||
gboolean *clicked)
|
||||
{
|
||||
*clicked = TRUE;
|
||||
return TRUE;
|
||||
@@ -108,7 +108,7 @@ button_release_event_cb (GtkWidget *widget,
|
||||
*/
|
||||
static GtkWidget *
|
||||
query_for_toplevel (GdkScreen *screen,
|
||||
const char *prompt)
|
||||
const char *prompt)
|
||||
{
|
||||
GdkDisplay *display = gdk_screen_get_display (screen);
|
||||
GtkWidget *popup, *label, *frame;
|
||||
@@ -132,31 +132,31 @@ query_for_toplevel (GdkScreen *screen,
|
||||
cursor = gdk_cursor_new_for_display (display, GDK_CROSSHAIR);
|
||||
|
||||
if (gdk_pointer_grab (gtk_widget_get_window (popup), FALSE,
|
||||
GDK_BUTTON_RELEASE_MASK,
|
||||
NULL,
|
||||
cursor,
|
||||
GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
|
||||
GDK_BUTTON_RELEASE_MASK,
|
||||
NULL,
|
||||
cursor,
|
||||
GDK_CURRENT_TIME) == GDK_GRAB_SUCCESS)
|
||||
{
|
||||
gboolean clicked = FALSE;
|
||||
|
||||
g_signal_connect (popup, "button-release-event",
|
||||
G_CALLBACK (button_release_event_cb), &clicked);
|
||||
G_CALLBACK (button_release_event_cb), &clicked);
|
||||
|
||||
/* Process events until clicked is set by button_release_event_cb.
|
||||
* We pass in may_block=TRUE since we want to wait if there
|
||||
* are no events currently.
|
||||
*/
|
||||
while (!clicked)
|
||||
g_main_context_iteration (NULL, TRUE);
|
||||
g_main_context_iteration (NULL, TRUE);
|
||||
|
||||
toplevel = find_toplevel_at_pointer (gdk_screen_get_display (screen));
|
||||
if (toplevel == popup)
|
||||
toplevel = NULL;
|
||||
toplevel = NULL;
|
||||
}
|
||||
|
||||
g_object_unref (cursor);
|
||||
gtk_widget_destroy (popup);
|
||||
gdk_flush (); /* Really release the grab */
|
||||
gdk_flush (); /* Really release the grab */
|
||||
|
||||
return toplevel;
|
||||
}
|
||||
@@ -171,8 +171,8 @@ query_change_display (ChangeDisplayInfo *info)
|
||||
GtkWidget *toplevel;
|
||||
|
||||
toplevel = query_for_toplevel (screen,
|
||||
"Please select the toplevel\n"
|
||||
"to move to the new screen");
|
||||
"Please select the toplevel\n"
|
||||
"to move to the new screen");
|
||||
|
||||
if (toplevel)
|
||||
gtk_window_set_screen (GTK_WINDOW (toplevel), info->current_screen);
|
||||
@@ -193,19 +193,19 @@ fill_screens (ChangeDisplayInfo *info)
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < n_screens; i++)
|
||||
{
|
||||
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
|
||||
GtkTreeIter iter;
|
||||
{
|
||||
GdkScreen *screen = gdk_display_get_screen (info->current_display, i);
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
|
||||
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
|
||||
SCREEN_COLUMN_NUMBER, i,
|
||||
SCREEN_COLUMN_SCREEN, screen,
|
||||
-1);
|
||||
gtk_list_store_append (GTK_LIST_STORE (info->screen_model), &iter);
|
||||
gtk_list_store_set (GTK_LIST_STORE (info->screen_model), &iter,
|
||||
SCREEN_COLUMN_NUMBER, i,
|
||||
SCREEN_COLUMN_SCREEN, screen,
|
||||
-1);
|
||||
|
||||
if (i == 0)
|
||||
gtk_tree_selection_select_iter (info->screen_selection, &iter);
|
||||
}
|
||||
if (i == 0)
|
||||
gtk_tree_selection_select_iter (info->screen_selection, &iter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,8 +215,8 @@ fill_screens (ChangeDisplayInfo *info)
|
||||
*/
|
||||
static void
|
||||
response_cb (GtkDialog *dialog,
|
||||
gint response_id,
|
||||
ChangeDisplayInfo *info)
|
||||
gint response_id,
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
if (response_id == GTK_RESPONSE_OK)
|
||||
query_change_display (info);
|
||||
@@ -230,7 +230,7 @@ response_cb (GtkDialog *dialog,
|
||||
*/
|
||||
static void
|
||||
open_display_cb (GtkWidget *button,
|
||||
ChangeDisplayInfo *info)
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *dialog;
|
||||
@@ -240,11 +240,11 @@ open_display_cb (GtkWidget *button,
|
||||
GdkDisplay *result = NULL;
|
||||
|
||||
dialog = gtk_dialog_new_with_buttons ("Open Display",
|
||||
GTK_WINDOW (info->window),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
GTK_WINDOW (info->window),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
|
||||
display_entry = gtk_entry_new ();
|
||||
@@ -264,25 +264,25 @@ open_display_cb (GtkWidget *button,
|
||||
{
|
||||
gint response_id = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (response_id != GTK_RESPONSE_OK)
|
||||
break;
|
||||
break;
|
||||
|
||||
new_screen_name = gtk_editable_get_chars (GTK_EDITABLE (display_entry),
|
||||
0, -1);
|
||||
0, -1);
|
||||
|
||||
if (strcmp (new_screen_name, "") != 0)
|
||||
{
|
||||
result = gdk_display_open (new_screen_name);
|
||||
if (!result)
|
||||
{
|
||||
gchar *error_msg =
|
||||
g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
|
||||
new_screen_name);
|
||||
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
|
||||
g_free (error_msg);
|
||||
}
|
||||
{
|
||||
result = gdk_display_open (new_screen_name);
|
||||
if (!result)
|
||||
{
|
||||
gchar *error_msg =
|
||||
g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
|
||||
new_screen_name);
|
||||
gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
|
||||
g_free (error_msg);
|
||||
}
|
||||
|
||||
g_free (new_screen_name);
|
||||
}
|
||||
g_free (new_screen_name);
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
@@ -293,7 +293,7 @@ open_display_cb (GtkWidget *button,
|
||||
*/
|
||||
static void
|
||||
close_display_cb (GtkWidget *button,
|
||||
ChangeDisplayInfo *info)
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
if (info->current_display)
|
||||
gdk_display_close (info->current_display);
|
||||
@@ -305,7 +305,7 @@ close_display_cb (GtkWidget *button,
|
||||
*/
|
||||
static void
|
||||
display_changed_cb (GtkTreeSelection *selection,
|
||||
ChangeDisplayInfo *info)
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
@@ -314,8 +314,8 @@ display_changed_cb (GtkTreeSelection *selection,
|
||||
g_object_unref (info->current_display);
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
gtk_tree_model_get (model, &iter,
|
||||
DISPLAY_COLUMN_DISPLAY, &info->current_display,
|
||||
-1);
|
||||
DISPLAY_COLUMN_DISPLAY, &info->current_display,
|
||||
-1);
|
||||
else
|
||||
info->current_display = NULL;
|
||||
|
||||
@@ -327,7 +327,7 @@ display_changed_cb (GtkTreeSelection *selection,
|
||||
*/
|
||||
static void
|
||||
screen_changed_cb (GtkTreeSelection *selection,
|
||||
ChangeDisplayInfo *info)
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
@@ -336,8 +336,8 @@ screen_changed_cb (GtkTreeSelection *selection,
|
||||
g_object_unref (info->current_screen);
|
||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
||||
gtk_tree_model_get (model, &iter,
|
||||
SCREEN_COLUMN_SCREEN, &info->current_screen,
|
||||
-1);
|
||||
SCREEN_COLUMN_SCREEN, &info->current_screen,
|
||||
-1);
|
||||
else
|
||||
info->current_screen = NULL;
|
||||
}
|
||||
@@ -349,10 +349,10 @@ screen_changed_cb (GtkTreeSelection *selection,
|
||||
*/
|
||||
static void
|
||||
create_frame (ChangeDisplayInfo *info,
|
||||
const char *title,
|
||||
GtkWidget **frame,
|
||||
GtkWidget **tree_view,
|
||||
GtkWidget **button_vbox)
|
||||
const char *title,
|
||||
GtkWidget **frame,
|
||||
GtkWidget **tree_view,
|
||||
GtkWidget **button_vbox)
|
||||
{
|
||||
GtkTreeSelection *selection;
|
||||
GtkWidget *scrollwin;
|
||||
@@ -366,9 +366,9 @@ create_frame (ChangeDisplayInfo *info,
|
||||
|
||||
scrollwin = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
|
||||
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin),
|
||||
GTK_SHADOW_IN);
|
||||
GTK_SHADOW_IN);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
|
||||
|
||||
*tree_view = gtk_tree_view_new ();
|
||||
@@ -397,7 +397,8 @@ left_align_button_new (const char *label)
|
||||
GtkWidget *button = gtk_button_new_with_mnemonic (label);
|
||||
GtkWidget *child = gtk_bin_get_child (GTK_BIN (button));
|
||||
|
||||
gtk_misc_set_alignment (GTK_MISC (child), 0., 0.5);
|
||||
gtk_widget_set_halign (child, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (child, GTK_ALIGN_CENTER);
|
||||
|
||||
return button;
|
||||
}
|
||||
@@ -425,20 +426,20 @@ create_display_frame (ChangeDisplayInfo *info)
|
||||
gtk_box_pack_start (GTK_BOX (button_vbox), button, FALSE, FALSE, 0);
|
||||
|
||||
info->display_model = (GtkTreeModel *)gtk_list_store_new (DISPLAY_NUM_COLUMNS,
|
||||
G_TYPE_STRING,
|
||||
GDK_TYPE_DISPLAY);
|
||||
G_TYPE_STRING,
|
||||
GDK_TYPE_DISPLAY);
|
||||
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->display_model);
|
||||
|
||||
column = gtk_tree_view_column_new_with_attributes ("Name",
|
||||
gtk_cell_renderer_text_new (),
|
||||
"text", DISPLAY_COLUMN_NAME,
|
||||
NULL);
|
||||
gtk_cell_renderer_text_new (),
|
||||
"text", DISPLAY_COLUMN_NAME,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||
g_signal_connect (selection, "changed",
|
||||
G_CALLBACK (display_changed_cb), info);
|
||||
G_CALLBACK (display_changed_cb), info);
|
||||
|
||||
return frame;
|
||||
}
|
||||
@@ -456,20 +457,20 @@ create_screen_frame (ChangeDisplayInfo *info)
|
||||
create_frame (info, "Screen", &frame, &tree_view, &button_vbox);
|
||||
|
||||
info->screen_model = (GtkTreeModel *)gtk_list_store_new (SCREEN_NUM_COLUMNS,
|
||||
G_TYPE_INT,
|
||||
GDK_TYPE_SCREEN);
|
||||
G_TYPE_INT,
|
||||
GDK_TYPE_SCREEN);
|
||||
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), info->screen_model);
|
||||
|
||||
column = gtk_tree_view_column_new_with_attributes ("Number",
|
||||
gtk_cell_renderer_text_new (),
|
||||
"text", SCREEN_COLUMN_NUMBER,
|
||||
NULL);
|
||||
gtk_cell_renderer_text_new (),
|
||||
"text", SCREEN_COLUMN_NUMBER,
|
||||
NULL);
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
|
||||
|
||||
info->screen_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||
g_signal_connect (info->screen_selection, "changed",
|
||||
G_CALLBACK (screen_changed_cb), info);
|
||||
G_CALLBACK (screen_changed_cb), info);
|
||||
|
||||
return frame;
|
||||
}
|
||||
@@ -479,8 +480,8 @@ create_screen_frame (ChangeDisplayInfo *info)
|
||||
*/
|
||||
static void
|
||||
display_closed_cb (GdkDisplay *display,
|
||||
gboolean is_error,
|
||||
ChangeDisplayInfo *info)
|
||||
gboolean is_error,
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
gboolean valid;
|
||||
@@ -492,13 +493,13 @@ display_closed_cb (GdkDisplay *display,
|
||||
GdkDisplay *tmp_display;
|
||||
|
||||
gtk_tree_model_get (info->display_model, &iter,
|
||||
DISPLAY_COLUMN_DISPLAY, &tmp_display,
|
||||
-1);
|
||||
DISPLAY_COLUMN_DISPLAY, &tmp_display,
|
||||
-1);
|
||||
if (tmp_display == display)
|
||||
{
|
||||
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
|
||||
break;
|
||||
}
|
||||
{
|
||||
gtk_list_store_remove (GTK_LIST_STORE (info->display_model), &iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,27 +509,27 @@ display_closed_cb (GdkDisplay *display,
|
||||
*/
|
||||
static void
|
||||
add_display (ChangeDisplayInfo *info,
|
||||
GdkDisplay *display)
|
||||
GdkDisplay *display)
|
||||
{
|
||||
const gchar *name = gdk_display_get_name (display);
|
||||
GtkTreeIter iter;
|
||||
|
||||
gtk_list_store_append (GTK_LIST_STORE (info->display_model), &iter);
|
||||
gtk_list_store_set (GTK_LIST_STORE (info->display_model), &iter,
|
||||
DISPLAY_COLUMN_NAME, name,
|
||||
DISPLAY_COLUMN_DISPLAY, display,
|
||||
-1);
|
||||
DISPLAY_COLUMN_NAME, name,
|
||||
DISPLAY_COLUMN_DISPLAY, display,
|
||||
-1);
|
||||
|
||||
g_signal_connect (display, "closed",
|
||||
G_CALLBACK (display_closed_cb), info);
|
||||
G_CALLBACK (display_closed_cb), info);
|
||||
}
|
||||
|
||||
/* Called when a new display is opened
|
||||
*/
|
||||
static void
|
||||
display_opened_cb (GdkDisplayManager *manager,
|
||||
GdkDisplay *display,
|
||||
ChangeDisplayInfo *info)
|
||||
GdkDisplay *display,
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
add_display (info, display);
|
||||
}
|
||||
@@ -550,7 +551,7 @@ initialize_displays (ChangeDisplayInfo *info)
|
||||
g_slist_free (tmp_list);
|
||||
|
||||
g_signal_connect (manager, "display-opened",
|
||||
G_CALLBACK (display_opened_cb), info);
|
||||
G_CALLBACK (display_opened_cb), info);
|
||||
}
|
||||
|
||||
/* Cleans up when the toplevel is destroyed; we remove the
|
||||
@@ -565,13 +566,13 @@ destroy_info (ChangeDisplayInfo *info)
|
||||
GSList *tmp_list;
|
||||
|
||||
g_signal_handlers_disconnect_by_func (manager,
|
||||
display_opened_cb,
|
||||
info);
|
||||
display_opened_cb,
|
||||
info);
|
||||
|
||||
for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next)
|
||||
g_signal_handlers_disconnect_by_func (tmp_list->data,
|
||||
display_closed_cb,
|
||||
info);
|
||||
display_closed_cb,
|
||||
info);
|
||||
|
||||
g_slist_free (tmp_list);
|
||||
|
||||
@@ -589,7 +590,7 @@ destroy_info (ChangeDisplayInfo *info)
|
||||
|
||||
static void
|
||||
destroy_cb (GObject *object,
|
||||
ChangeDisplayInfo **info)
|
||||
ChangeDisplayInfo **info)
|
||||
{
|
||||
destroy_info (*info);
|
||||
*info = NULL;
|
||||
@@ -612,18 +613,18 @@ do_changedisplay (GtkWidget *do_widget)
|
||||
info = g_new0 (ChangeDisplayInfo, 1);
|
||||
|
||||
info->window = gtk_dialog_new_with_buttons ("Change Screen or display",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
"Change", GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
"Change", GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (info->window), 300, 400);
|
||||
|
||||
g_signal_connect (info->window, "response",
|
||||
G_CALLBACK (response_cb), info);
|
||||
G_CALLBACK (response_cb), info);
|
||||
g_signal_connect (info->window, "destroy",
|
||||
G_CALLBACK (destroy_cb), &info);
|
||||
G_CALLBACK (destroy_cb), &info);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (info->window));
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
/* Combo boxes
|
||||
/* Combo boxes
|
||||
*
|
||||
* The ComboBox widget allows to select one option out of a list.
|
||||
* The ComboBoxEntry additionally allows the user to enter a value
|
||||
* that is not in the list of options.
|
||||
* that is not in the list of options.
|
||||
*
|
||||
* How the options are displayed is controlled by cell renderers.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
enum
|
||||
enum
|
||||
{
|
||||
PIXBUF_COL,
|
||||
TEXT_COL
|
||||
@@ -20,16 +20,16 @@ strip_underscore (const gchar *text)
|
||||
{
|
||||
gchar *p, *q;
|
||||
gchar *result;
|
||||
|
||||
|
||||
result = g_strdup (text);
|
||||
p = q = result;
|
||||
while (*p)
|
||||
while (*p)
|
||||
{
|
||||
if (*p != '_')
|
||||
{
|
||||
*q = *p;
|
||||
q++;
|
||||
}
|
||||
{
|
||||
*q = *p;
|
||||
q++;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*q = '\0';
|
||||
@@ -46,7 +46,7 @@ create_stock_icon_store (void)
|
||||
GTK_STOCK_NEW,
|
||||
GTK_STOCK_CLEAR,
|
||||
NULL,
|
||||
GTK_STOCK_OPEN
|
||||
GTK_STOCK_OPEN
|
||||
};
|
||||
|
||||
GtkStockItem item;
|
||||
@@ -58,50 +58,50 @@ create_stock_icon_store (void)
|
||||
gint i;
|
||||
|
||||
cellview = gtk_cell_view_new ();
|
||||
|
||||
|
||||
store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (stock_id); i++)
|
||||
{
|
||||
if (stock_id[i])
|
||||
{
|
||||
pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i],
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
gtk_stock_lookup (stock_id[i], &item);
|
||||
label = strip_underscore (item.label);
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
PIXBUF_COL, pixbuf,
|
||||
TEXT_COL, label,
|
||||
-1);
|
||||
g_object_unref (pixbuf);
|
||||
g_free (label);
|
||||
}
|
||||
{
|
||||
pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i],
|
||||
GTK_ICON_SIZE_BUTTON);
|
||||
gtk_stock_lookup (stock_id[i], &item);
|
||||
label = strip_underscore (item.label);
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
PIXBUF_COL, pixbuf,
|
||||
TEXT_COL, label,
|
||||
-1);
|
||||
g_object_unref (pixbuf);
|
||||
g_free (label);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
PIXBUF_COL, NULL,
|
||||
TEXT_COL, "separator",
|
||||
-1);
|
||||
}
|
||||
{
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
PIXBUF_COL, NULL,
|
||||
TEXT_COL, "separator",
|
||||
-1);
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_destroy (cellview);
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
/* A GtkCellLayoutDataFunc that demonstrates how one can control
|
||||
* sensitivity of rows. This particular function does nothing
|
||||
* sensitivity of rows. This particular function does nothing
|
||||
* useful and just makes the second row insensitive.
|
||||
*/
|
||||
static void
|
||||
set_sensitive (GtkCellLayout *cell_layout,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreePath *path;
|
||||
gint *indices;
|
||||
@@ -116,13 +116,13 @@ set_sensitive (GtkCellLayout *cell_layout,
|
||||
}
|
||||
|
||||
/* A GtkTreeViewRowSeparatorFunc that demonstrates how rows can be
|
||||
* rendered as separators. This particular function does nothing
|
||||
* rendered as separators. This particular function does nothing
|
||||
* useful and just turns the fourth row into a separator.
|
||||
*/
|
||||
static gboolean
|
||||
is_separator (GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreePath *path;
|
||||
gboolean result;
|
||||
@@ -141,11 +141,11 @@ create_capital_store (void)
|
||||
gchar *group;
|
||||
gchar *capital;
|
||||
} capitals[] = {
|
||||
{ "A - B", NULL },
|
||||
{ "A - B", NULL },
|
||||
{ NULL, "Albany" },
|
||||
{ NULL, "Annapolis" },
|
||||
{ NULL, "Atlanta" },
|
||||
{ NULL, "Augusta" },
|
||||
{ NULL, "Augusta" },
|
||||
{ NULL, "Austin" },
|
||||
{ NULL, "Baton Rouge" },
|
||||
{ NULL, "Bismarck" },
|
||||
@@ -199,36 +199,36 @@ create_capital_store (void)
|
||||
{ NULL, "Trenton" },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
GtkTreeIter iter, iter2;
|
||||
GtkTreeStore *store;
|
||||
gint i;
|
||||
|
||||
store = gtk_tree_store_new (1, G_TYPE_STRING);
|
||||
|
||||
|
||||
for (i = 0; capitals[i].group || capitals[i].capital; i++)
|
||||
{
|
||||
if (capitals[i].group)
|
||||
{
|
||||
gtk_tree_store_append (store, &iter, NULL);
|
||||
gtk_tree_store_set (store, &iter, 0, capitals[i].group, -1);
|
||||
}
|
||||
{
|
||||
gtk_tree_store_append (store, &iter, NULL);
|
||||
gtk_tree_store_set (store, &iter, 0, capitals[i].group, -1);
|
||||
}
|
||||
else if (capitals[i].capital)
|
||||
{
|
||||
gtk_tree_store_append (store, &iter2, &iter);
|
||||
gtk_tree_store_set (store, &iter2, 0, capitals[i].capital, -1);
|
||||
}
|
||||
{
|
||||
gtk_tree_store_append (store, &iter2, &iter);
|
||||
gtk_tree_store_set (store, &iter2, 0, capitals[i].capital, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
static void
|
||||
is_capital_sensitive (GtkCellLayout *cell_layout,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
gboolean sensitive;
|
||||
|
||||
@@ -274,8 +274,8 @@ struct _MaskEntryClass
|
||||
static void mask_entry_editable_init (GtkEditableInterface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (MaskEntry, mask_entry, GTK_TYPE_ENTRY,
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
|
||||
mask_entry_editable_init));
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
|
||||
mask_entry_editable_init));
|
||||
|
||||
|
||||
static void
|
||||
@@ -286,10 +286,10 @@ mask_entry_set_background (MaskEntry *entry)
|
||||
if (entry->mask)
|
||||
{
|
||||
if (!g_regex_match_simple (entry->mask, gtk_entry_get_text (GTK_ENTRY (entry)), 0, 0))
|
||||
{
|
||||
gtk_widget_override_color (GTK_WIDGET (entry), 0, &error_color);
|
||||
return;
|
||||
}
|
||||
{
|
||||
gtk_widget_override_color (GTK_WIDGET (entry), 0, &error_color);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
gtk_widget_override_color (GTK_WIDGET (entry), 0, NULL);
|
||||
@@ -338,58 +338,58 @@ do_combobox (GtkWidget *do_widget)
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Combo boxes");
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
/* A combobox demonstrating cell renderers, separators and
|
||||
* insensitive rows
|
||||
* insensitive rows
|
||||
*/
|
||||
frame = gtk_frame_new ("Some stock icons");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
model = create_stock_icon_store ();
|
||||
combo = gtk_combo_box_new_with_model (model);
|
||||
g_object_unref (model);
|
||||
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||
|
||||
|
||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
"pixbuf", PIXBUF_COL,
|
||||
NULL);
|
||||
"pixbuf", PIXBUF_COL,
|
||||
NULL);
|
||||
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
|
||||
renderer,
|
||||
set_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
renderer,
|
||||
set_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
"text", TEXT_COL,
|
||||
NULL);
|
||||
"text", TEXT_COL,
|
||||
NULL);
|
||||
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
|
||||
renderer,
|
||||
set_sensitive,
|
||||
NULL, NULL);
|
||||
renderer,
|
||||
set_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
|
||||
is_separator, NULL, NULL);
|
||||
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
|
||||
is_separator, NULL, NULL);
|
||||
|
||||
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
|
||||
|
||||
|
||||
/* A combobox demonstrating trees.
|
||||
*/
|
||||
frame = gtk_frame_new ("Where are we ?");
|
||||
@@ -398,7 +398,7 @@ do_combobox (GtkWidget *do_widget)
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
model = create_capital_store ();
|
||||
combo = gtk_combo_box_new_with_model (model);
|
||||
g_object_unref (model);
|
||||
@@ -407,12 +407,12 @@ do_combobox (GtkWidget *do_widget)
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
"text", 0,
|
||||
NULL);
|
||||
"text", 0,
|
||||
NULL);
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
|
||||
renderer,
|
||||
is_capital_sensitive,
|
||||
NULL, NULL);
|
||||
renderer,
|
||||
is_capital_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
path = gtk_tree_path_new_from_indices (0, 8, -1);
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
@@ -423,18 +423,18 @@ do_combobox (GtkWidget *do_widget)
|
||||
*/
|
||||
frame = gtk_frame_new ("Editable");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
combo = gtk_combo_box_text_new_with_entry ();
|
||||
fill_combo_entry (combo);
|
||||
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||
|
||||
|
||||
entry = g_object_new (TYPE_MASK_ENTRY, NULL);
|
||||
MASK_ENTRY (entry)->mask = "^([0-9]*|One|Two|2\302\275|Three)$";
|
||||
|
||||
|
||||
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
|
||||
gtk_container_add (GTK_CONTAINER (combo), entry);
|
||||
|
||||
@@ -464,7 +464,7 @@ do_combobox (GtkWidget *do_widget)
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
@@ -11,17 +11,17 @@ static GtkWidget *entry2 = NULL;
|
||||
|
||||
static void
|
||||
message_dialog_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
static gint i = 1;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_OK,
|
||||
"This message box has been popped up the following\n"
|
||||
"number of times:");
|
||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_OK,
|
||||
"This message box has been popped up the following\n"
|
||||
"number of times:");
|
||||
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
||||
"%d", i);
|
||||
gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
@@ -31,7 +31,7 @@ message_dialog_clicked (GtkButton *button,
|
||||
|
||||
static void
|
||||
interactive_dialog_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *dialog;
|
||||
@@ -44,13 +44,13 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
gint response;
|
||||
|
||||
dialog = gtk_dialog_new_with_buttons ("Interactive Dialog",
|
||||
GTK_WINDOW (window),
|
||||
GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_OK,
|
||||
GTK_RESPONSE_OK,
|
||||
GTK_WINDOW (window),
|
||||
GTK_DIALOG_MODAL| GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_OK,
|
||||
GTK_RESPONSE_OK,
|
||||
"_Non-stock Button",
|
||||
GTK_RESPONSE_CANCEL,
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
||||
|
||||
@@ -61,29 +61,25 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);
|
||||
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
table = gtk_grid_new ();
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
|
||||
label = gtk_label_new_with_mnemonic ("_Entry 1");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 0, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
|
||||
local_entry1 = gtk_entry_new ();
|
||||
gtk_entry_set_text (GTK_ENTRY (local_entry1), gtk_entry_get_text (GTK_ENTRY (entry1)));
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), local_entry1, 1, 2, 0, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), local_entry1, 1, 0, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry1);
|
||||
|
||||
label = gtk_label_new_with_mnemonic ("E_ntry 2");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 1, 2);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
|
||||
|
||||
local_entry2 = gtk_entry_new ();
|
||||
gtk_entry_set_text (GTK_ENTRY (local_entry2), gtk_entry_get_text (GTK_ENTRY (entry2)));
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), local_entry2, 1, 2, 1, 2);
|
||||
gtk_grid_attach (GTK_GRID (table), local_entry2, 1, 1, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry2);
|
||||
|
||||
|
||||
gtk_widget_show_all (hbox);
|
||||
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
|
||||
@@ -106,12 +102,12 @@ do_dialog (GtkWidget *do_widget)
|
||||
GtkWidget *button;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Dialogs");
|
||||
|
||||
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
@@ -129,7 +125,7 @@ do_dialog (GtkWidget *do_widget)
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
button = gtk_button_new_with_mnemonic ("_Message Dialog");
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (message_dialog_clicked), NULL);
|
||||
G_CALLBACK (message_dialog_clicked), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL),
|
||||
@@ -142,33 +138,27 @@ do_dialog (GtkWidget *do_widget)
|
||||
|
||||
button = gtk_button_new_with_mnemonic ("_Interactive Dialog");
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (interactive_dialog_clicked), NULL);
|
||||
G_CALLBACK (interactive_dialog_clicked), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), vbox2, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0);
|
||||
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
table = gtk_grid_new ();
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 4);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (table), 4);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), table, FALSE, FALSE, 0);
|
||||
|
||||
label = gtk_label_new_with_mnemonic ("_Entry 1");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 0, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
|
||||
|
||||
entry1 = gtk_entry_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), entry1, 1, 2, 0, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), entry1, 1, 0, 1, 1);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry1);
|
||||
|
||||
label = gtk_label_new_with_mnemonic ("E_ntry 2");
|
||||
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 1, 2);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
|
||||
|
||||
entry2 = gtk_entry_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), entry2, 1, 2, 1, 2);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry2);
|
||||
gtk_grid_attach (GTK_GRID (table), entry2, 1, 1, 1, 1);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
@@ -176,7 +166,7 @@ do_dialog (GtkWidget *do_widget)
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* GtkCellRenderer::editing-started signal to do custom setup of the
|
||||
* editable widget.
|
||||
*
|
||||
* The cell renderers used in this demo are GtkCellRendererText,
|
||||
* The cell renderers used in this demo are GtkCellRendererText,
|
||||
* GtkCellRendererCombo and GtkCellRendererProgress.
|
||||
*/
|
||||
|
||||
@@ -205,7 +205,7 @@ editing_started (GtkCellRenderer *cell,
|
||||
const gchar *path,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
||||
separator_row, NULL, NULL);
|
||||
}
|
||||
|
||||
@@ -259,7 +259,7 @@ cell_edited (GtkCellRendererText *cell,
|
||||
}
|
||||
|
||||
static void
|
||||
add_columns (GtkTreeView *treeview,
|
||||
add_columns (GtkTreeView *treeview,
|
||||
GtkTreeModel *items_model,
|
||||
GtkTreeModel *numbers_model)
|
||||
{
|
||||
@@ -306,8 +306,6 @@ add_columns (GtkTreeView *treeview,
|
||||
-1, "Yummy", renderer,
|
||||
"value", COLUMN_ITEM_YUMMY,
|
||||
NULL);
|
||||
|
||||
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
||||
@@ -20,17 +20,17 @@ do_entry_buffer (GtkWidget *do_widget)
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryBuffer",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
@@ -64,5 +64,3 @@ do_entry_buffer (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ create_completion_model (void)
|
||||
{
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
|
||||
store = gtk_list_store_new (1, G_TYPE_STRING);
|
||||
|
||||
/* Append one word */
|
||||
@@ -29,7 +29,7 @@ create_completion_model (void)
|
||||
/* And another word */
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, "totally", -1);
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
@@ -43,51 +43,51 @@ do_entry_completion (GtkWidget *do_widget)
|
||||
GtkWidget *entry;
|
||||
GtkEntryCompletion *completion;
|
||||
GtkTreeModel *completion_model;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), "Completion demo, try writing <b>total</b> or <b>gnome</b> for example.");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), "Completion demo, try writing <b>total</b> or <b>gnome</b> for example.");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
/* Create our entry */
|
||||
entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
|
||||
/* Create our entry */
|
||||
entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
|
||||
|
||||
/* Create the completion object */
|
||||
completion = gtk_entry_completion_new ();
|
||||
/* Create the completion object */
|
||||
completion = gtk_entry_completion_new ();
|
||||
|
||||
/* Assign the completion to the entry */
|
||||
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
|
||||
g_object_unref (completion);
|
||||
|
||||
/* Create a tree model and use it as the completion model */
|
||||
completion_model = create_completion_model ();
|
||||
gtk_entry_completion_set_model (completion, completion_model);
|
||||
g_object_unref (completion_model);
|
||||
|
||||
/* Use model column 0 as the text column */
|
||||
gtk_entry_completion_set_text_column (completion, 0);
|
||||
}
|
||||
/* Assign the completion to the entry */
|
||||
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
|
||||
g_object_unref (completion);
|
||||
|
||||
/* Create a tree model and use it as the completion model */
|
||||
completion_model = create_completion_model ();
|
||||
gtk_entry_completion_set_model (completion, completion_model);
|
||||
g_object_unref (completion_model);
|
||||
|
||||
/* Use model column 0 as the text column */
|
||||
gtk_entry_completion_set_text_column (completion, 0);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show_all (window);
|
||||
@@ -96,5 +96,3 @@ do_entry_completion (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,21 +17,21 @@ do_expander (GtkWidget *do_widget)
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *expander;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkExpander",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
@@ -57,5 +57,3 @@ do_expander (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/* Text Widget/Hypertext
|
||||
*
|
||||
* Usually, tags modify the appearance of text in the view, e.g. making it
|
||||
* bold or colored or underlined. But tags are not restricted to appearance.
|
||||
* They can also affect the behavior of mouse and key presses, as this demo
|
||||
* Usually, tags modify the appearance of text in the view, e.g. making it
|
||||
* bold or colored or underlined. But tags are not restricted to appearance.
|
||||
* They can also affect the behavior of mouse and key presses, as this demo
|
||||
* shows.
|
||||
*/
|
||||
|
||||
@@ -12,19 +12,19 @@
|
||||
/* Inserts a piece of text into the buffer, giving it the usual
|
||||
* appearance of a hyperlink in a web browser: blue and underlined.
|
||||
* Additionally, attaches some data on the tag, to make it recognizable
|
||||
* as a link.
|
||||
* as a link.
|
||||
*/
|
||||
static void
|
||||
insert_link (GtkTextBuffer *buffer,
|
||||
GtkTextIter *iter,
|
||||
gchar *text,
|
||||
static void
|
||||
insert_link (GtkTextBuffer *buffer,
|
||||
GtkTextIter *iter,
|
||||
gchar *text,
|
||||
gint page)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"foreground", "blue",
|
||||
"underline", PANGO_UNDERLINE_SINGLE,
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"foreground", "blue",
|
||||
"underline", PANGO_UNDERLINE_SINGLE,
|
||||
NULL);
|
||||
g_object_set_data (G_OBJECT (tag), "page", GINT_TO_POINTER (page));
|
||||
gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, tag, NULL);
|
||||
@@ -34,7 +34,7 @@ insert_link (GtkTextBuffer *buffer,
|
||||
* hypertext app, this method would parse a file to identify the links.
|
||||
*/
|
||||
static void
|
||||
show_page (GtkTextBuffer *buffer,
|
||||
show_page (GtkTextBuffer *buffer,
|
||||
gint page)
|
||||
{
|
||||
GtkTextIter iter;
|
||||
@@ -51,7 +51,7 @@ show_page (GtkTextBuffer *buffer,
|
||||
}
|
||||
else if (page == 2)
|
||||
{
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"A tag is an attribute that can be applied to some range of text. "
|
||||
"For example, a tag might be called \"bold\" and make the text inside "
|
||||
"the tag bold. However, the tag concept is more general than that; "
|
||||
@@ -60,27 +60,27 @@ show_page (GtkTextBuffer *buffer,
|
||||
"user can't edit it, or countless other things.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
}
|
||||
else if (page == 3)
|
||||
else if (page == 3)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext:\n", -1, tag, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"machine-readable text that is not sequential but is organized "
|
||||
"so that related items of information are connected.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Looks at all tags covering the position of iter in the text view,
|
||||
/* Looks at all tags covering the position of iter in the text view,
|
||||
* and if one of them is a link, follow it by showing the page identified
|
||||
* by the data attached to it.
|
||||
*/
|
||||
static void
|
||||
follow_if_link (GtkWidget *text_view,
|
||||
follow_if_link (GtkWidget *text_view,
|
||||
GtkTextIter *iter)
|
||||
{
|
||||
GSList *tags = NULL, *tagp = NULL;
|
||||
@@ -98,7 +98,7 @@ follow_if_link (GtkWidget *text_view,
|
||||
}
|
||||
}
|
||||
|
||||
if (tags)
|
||||
if (tags)
|
||||
g_slist_free (tags);
|
||||
}
|
||||
|
||||
@@ -113,10 +113,10 @@ key_press_event (GtkWidget *text_view,
|
||||
|
||||
switch (event->keyval)
|
||||
{
|
||||
case GDK_KEY_Return:
|
||||
case GDK_KEY_Return:
|
||||
case GDK_KEY_KP_Enter:
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
|
||||
gtk_text_buffer_get_insert (buffer));
|
||||
follow_if_link (text_view, &iter);
|
||||
break;
|
||||
@@ -154,7 +154,7 @@ event_after (GtkWidget *text_view,
|
||||
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
|
||||
return FALSE;
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
event->x, event->y, &x, &y);
|
||||
|
||||
@@ -169,7 +169,7 @@ static gboolean hovering_over_link = FALSE;
|
||||
static GdkCursor *hand_cursor = NULL;
|
||||
static GdkCursor *regular_cursor = NULL;
|
||||
|
||||
/* Looks at all tags covering the position (x, y) in the text view,
|
||||
/* Looks at all tags covering the position (x, y) in the text view,
|
||||
* and if one of them is a link, change the cursor to the "hands" cursor
|
||||
* typically used by web browsers.
|
||||
*/
|
||||
@@ -183,14 +183,14 @@ set_cursor_if_appropriate (GtkTextView *text_view,
|
||||
gboolean hovering = FALSE;
|
||||
|
||||
gtk_text_view_get_iter_at_location (text_view, &iter, x, y);
|
||||
|
||||
|
||||
tags = gtk_text_iter_get_tags (&iter);
|
||||
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
||||
{
|
||||
GtkTextTag *tag = tagp->data;
|
||||
gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
||||
|
||||
if (page != 0)
|
||||
if (page != 0)
|
||||
{
|
||||
hovering = TRUE;
|
||||
break;
|
||||
@@ -207,11 +207,11 @@ set_cursor_if_appropriate (GtkTextView *text_view,
|
||||
gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), regular_cursor);
|
||||
}
|
||||
|
||||
if (tags)
|
||||
if (tags)
|
||||
g_slist_free (tags);
|
||||
}
|
||||
|
||||
/* Update the cursor image if the pointer moved.
|
||||
/* Update the cursor image if the pointer moved.
|
||||
*/
|
||||
static gboolean
|
||||
motion_notify_event (GtkWidget *text_view,
|
||||
@@ -219,7 +219,7 @@ motion_notify_event (GtkWidget *text_view,
|
||||
{
|
||||
gint x, y;
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
event->x, event->y, &x, &y);
|
||||
|
||||
@@ -242,7 +242,7 @@ visibility_notify_event (GtkWidget *text_view,
|
||||
gdk_window_get_pointer (gtk_widget_get_window (text_view),
|
||||
&wx, &wy, NULL);
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
wx, wy, &bx, &by);
|
||||
|
||||
@@ -264,13 +264,13 @@ do_hypertext (GtkWidget *do_widget)
|
||||
|
||||
hand_cursor = gdk_cursor_new (GDK_HAND2);
|
||||
regular_cursor = gdk_cursor_new (GDK_XTERM);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
450, 450);
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
@@ -279,17 +279,17 @@ do_hypertext (GtkWidget *do_widget)
|
||||
|
||||
view = gtk_text_view_new ();
|
||||
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
|
||||
g_signal_connect (view, "key-press-event",
|
||||
g_signal_connect (view, "key-press-event",
|
||||
G_CALLBACK (key_press_event), NULL);
|
||||
g_signal_connect (view, "event-after",
|
||||
g_signal_connect (view, "event-after",
|
||||
G_CALLBACK (event_after), NULL);
|
||||
g_signal_connect (view, "motion-notify-event",
|
||||
g_signal_connect (view, "motion-notify-event",
|
||||
G_CALLBACK (motion_notify_event), NULL);
|
||||
g_signal_connect (view, "visibility-notify-event",
|
||||
g_signal_connect (view, "visibility-notify-event",
|
||||
G_CALLBACK (visibility_notify_event), NULL);
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
||||
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
@@ -314,4 +314,3 @@ do_hypertext (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,23 +85,23 @@ fill_store (GtkListStore *store)
|
||||
|
||||
/* We ignore hidden files that start with a '.' */
|
||||
if (name[0] != '.')
|
||||
{
|
||||
path = g_build_filename (parent, name, NULL);
|
||||
{
|
||||
path = g_build_filename (parent, name, NULL);
|
||||
|
||||
is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);
|
||||
is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);
|
||||
|
||||
display_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
|
||||
display_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
COL_PATH, path,
|
||||
COL_DISPLAY_NAME, display_name,
|
||||
COL_IS_DIRECTORY, is_dir,
|
||||
COL_PIXBUF, is_dir ? folder_pixbuf : file_pixbuf,
|
||||
-1);
|
||||
g_free (path);
|
||||
g_free (display_name);
|
||||
}
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter,
|
||||
COL_PATH, path,
|
||||
COL_DISPLAY_NAME, display_name,
|
||||
COL_IS_DIRECTORY, is_dir,
|
||||
COL_PIXBUF, is_dir ? folder_pixbuf : file_pixbuf,
|
||||
-1);
|
||||
g_free (path);
|
||||
g_free (display_name);
|
||||
}
|
||||
|
||||
name = g_dir_read_name (dir);
|
||||
}
|
||||
@@ -110,9 +110,9 @@ fill_store (GtkListStore *store)
|
||||
|
||||
static gint
|
||||
sort_func (GtkTreeModel *model,
|
||||
GtkTreeIter *a,
|
||||
GtkTreeIter *b,
|
||||
gpointer user_data)
|
||||
GtkTreeIter *a,
|
||||
GtkTreeIter *b,
|
||||
gpointer user_data)
|
||||
{
|
||||
gboolean is_dir_a, is_dir_b;
|
||||
gchar *name_a, *name_b;
|
||||
@@ -124,14 +124,14 @@ sort_func (GtkTreeModel *model,
|
||||
|
||||
|
||||
gtk_tree_model_get (model, a,
|
||||
COL_IS_DIRECTORY, &is_dir_a,
|
||||
COL_DISPLAY_NAME, &name_a,
|
||||
-1);
|
||||
COL_IS_DIRECTORY, &is_dir_a,
|
||||
COL_DISPLAY_NAME, &name_a,
|
||||
-1);
|
||||
|
||||
gtk_tree_model_get (model, b,
|
||||
COL_IS_DIRECTORY, &is_dir_b,
|
||||
COL_DISPLAY_NAME, &name_b,
|
||||
-1);
|
||||
COL_IS_DIRECTORY, &is_dir_b,
|
||||
COL_DISPLAY_NAME, &name_b,
|
||||
-1);
|
||||
|
||||
if (!is_dir_a && is_dir_b)
|
||||
ret = 1;
|
||||
@@ -154,26 +154,26 @@ create_store (void)
|
||||
GtkListStore *store;
|
||||
|
||||
store = gtk_list_store_new (NUM_COLS,
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_STRING,
|
||||
GDK_TYPE_PIXBUF,
|
||||
G_TYPE_BOOLEAN);
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_STRING,
|
||||
GDK_TYPE_PIXBUF,
|
||||
G_TYPE_BOOLEAN);
|
||||
|
||||
/* Set sort column and function */
|
||||
gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),
|
||||
sort_func,
|
||||
NULL, NULL);
|
||||
sort_func,
|
||||
NULL, NULL);
|
||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
|
||||
GTK_SORT_ASCENDING);
|
||||
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
|
||||
GTK_SORT_ASCENDING);
|
||||
|
||||
return store;
|
||||
}
|
||||
|
||||
static void
|
||||
item_activated (GtkIconView *icon_view,
|
||||
GtkTreePath *tree_path,
|
||||
gpointer user_data)
|
||||
GtkTreePath *tree_path,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkListStore *store;
|
||||
gchar *path;
|
||||
@@ -183,11 +183,11 @@ item_activated (GtkIconView *icon_view,
|
||||
store = GTK_LIST_STORE (user_data);
|
||||
|
||||
gtk_tree_model_get_iter (GTK_TREE_MODEL (store),
|
||||
&iter, tree_path);
|
||||
&iter, tree_path);
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
|
||||
COL_PATH, &path,
|
||||
COL_IS_DIRECTORY, &is_dir,
|
||||
-1);
|
||||
COL_PATH, &path,
|
||||
COL_IS_DIRECTORY, &is_dir,
|
||||
-1);
|
||||
|
||||
if (!is_dir)
|
||||
{
|
||||
@@ -207,7 +207,7 @@ item_activated (GtkIconView *icon_view,
|
||||
|
||||
static void
|
||||
up_clicked (GtkToolItem *item,
|
||||
gpointer user_data)
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkListStore *store;
|
||||
gchar *dir_name;
|
||||
@@ -223,12 +223,12 @@ up_clicked (GtkToolItem *item,
|
||||
|
||||
/* Maybe de-sensitize the up button */
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (up_button),
|
||||
strcmp (parent, "/") != 0);
|
||||
strcmp (parent, "/") != 0);
|
||||
}
|
||||
|
||||
static void
|
||||
home_clicked (GtkToolItem *item,
|
||||
gpointer user_data)
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkListStore *store;
|
||||
|
||||
@@ -241,7 +241,7 @@ home_clicked (GtkToolItem *item,
|
||||
|
||||
/* Sensitize the up button */
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (up_button),
|
||||
TRUE);
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void close_window(void)
|
||||
@@ -267,96 +267,96 @@ do_iconview (GtkWidget *do_widget)
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 650, 400);
|
||||
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "GtkIconView demo");
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (close_window), NULL);
|
||||
G_CALLBACK (close_window), NULL);
|
||||
|
||||
error = NULL;
|
||||
if (!load_pixbufs (&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load an image: %s",
|
||||
error->message);
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load an image: %s",
|
||||
error->message);
|
||||
|
||||
g_error_free (error);
|
||||
g_error_free (error);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
else
|
||||
{
|
||||
GtkWidget *sw;
|
||||
GtkWidget *icon_view;
|
||||
GtkListStore *store;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *tool_bar;
|
||||
GtkToolItem *home_button;
|
||||
{
|
||||
GtkWidget *sw;
|
||||
GtkWidget *icon_view;
|
||||
GtkListStore *store;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *tool_bar;
|
||||
GtkToolItem *home_button;
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
tool_bar = gtk_toolbar_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);
|
||||
tool_bar = gtk_toolbar_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);
|
||||
|
||||
up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
|
||||
gtk_tool_item_set_is_important (up_button, TRUE);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);
|
||||
up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);
|
||||
gtk_tool_item_set_is_important (up_button, TRUE);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);
|
||||
|
||||
home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
|
||||
gtk_tool_item_set_is_important (home_button, TRUE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
|
||||
home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
|
||||
gtk_tool_item_set_is_important (home_button, TRUE);
|
||||
gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);
|
||||
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_SHADOW_ETCHED_IN);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_SHADOW_ETCHED_IN);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
/* Create the store and fill it with the contents of '/' */
|
||||
parent = g_strdup ("/");
|
||||
store = create_store ();
|
||||
fill_store (store);
|
||||
/* Create the store and fill it with the contents of '/' */
|
||||
parent = g_strdup ("/");
|
||||
store = create_store ();
|
||||
fill_store (store);
|
||||
|
||||
icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
|
||||
GTK_SELECTION_MULTIPLE);
|
||||
g_object_unref (store);
|
||||
icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));
|
||||
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
|
||||
GTK_SELECTION_MULTIPLE);
|
||||
g_object_unref (store);
|
||||
|
||||
/* Connect to the "clicked" signal of the "Up" tool button */
|
||||
g_signal_connect (up_button, "clicked",
|
||||
G_CALLBACK (up_clicked), store);
|
||||
/* Connect to the "clicked" signal of the "Up" tool button */
|
||||
g_signal_connect (up_button, "clicked",
|
||||
G_CALLBACK (up_clicked), store);
|
||||
|
||||
/* Connect to the "clicked" signal of the "Home" tool button */
|
||||
g_signal_connect (home_button, "clicked",
|
||||
G_CALLBACK (home_clicked), store);
|
||||
/* Connect to the "clicked" signal of the "Home" tool button */
|
||||
g_signal_connect (home_button, "clicked",
|
||||
G_CALLBACK (home_clicked), store);
|
||||
|
||||
/* We now set which model columns that correspond to the text
|
||||
* and pixbuf of each item
|
||||
*/
|
||||
gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), COL_DISPLAY_NAME);
|
||||
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), COL_PIXBUF);
|
||||
/* We now set which model columns that correspond to the text
|
||||
* and pixbuf of each item
|
||||
*/
|
||||
gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), COL_DISPLAY_NAME);
|
||||
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), COL_PIXBUF);
|
||||
|
||||
/* Connect to the "item-activated" signal */
|
||||
g_signal_connect (icon_view, "item-activated",
|
||||
G_CALLBACK (item_activated), store);
|
||||
gtk_container_add (GTK_CONTAINER (sw), icon_view);
|
||||
/* Connect to the "item-activated" signal */
|
||||
g_signal_connect (icon_view, "item-activated",
|
||||
G_CALLBACK (item_activated), store);
|
||||
gtk_container_add (GTK_CONTAINER (sw), icon_view);
|
||||
|
||||
gtk_widget_grab_focus (icon_view);
|
||||
}
|
||||
gtk_widget_grab_focus (icon_view);
|
||||
}
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
@@ -369,4 +369,3 @@ do_iconview (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,10 +47,10 @@ create_store (void)
|
||||
|
||||
static void
|
||||
set_cell_color (GtkCellLayout *cell_layout,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *tree_model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
gchar *text;
|
||||
GdkColor color;
|
||||
@@ -76,9 +76,9 @@ set_cell_color (GtkCellLayout *cell_layout,
|
||||
|
||||
static void
|
||||
edited (GtkCellRendererText *cell,
|
||||
gchar *path_string,
|
||||
gchar *text,
|
||||
gpointer data)
|
||||
gchar *path_string,
|
||||
gchar *text,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
@@ -89,7 +89,7 @@ edited (GtkCellRendererText *cell,
|
||||
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
||||
COL_TEXT, text, -1);
|
||||
COL_TEXT, text, -1);
|
||||
|
||||
gtk_tree_path_free (path);
|
||||
}
|
||||
@@ -106,11 +106,11 @@ do_iconview_edit (GtkWidget *do_widget)
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Editing and Drag-and-Drop");
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
store = create_store ();
|
||||
fill_store (store);
|
||||
@@ -119,29 +119,29 @@ do_iconview_edit (GtkWidget *do_widget)
|
||||
g_object_unref (store);
|
||||
|
||||
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),
|
||||
GTK_SELECTION_SINGLE);
|
||||
GTK_SELECTION_SINGLE);
|
||||
gtk_icon_view_set_item_orientation (GTK_ICON_VIEW (icon_view),
|
||||
GTK_ORIENTATION_HORIZONTAL);
|
||||
GTK_ORIENTATION_HORIZONTAL);
|
||||
gtk_icon_view_set_columns (GTK_ICON_VIEW (icon_view), 2);
|
||||
gtk_icon_view_set_reorderable (GTK_ICON_VIEW (icon_view), TRUE);
|
||||
|
||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view),
|
||||
renderer, TRUE);
|
||||
renderer, TRUE);
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (icon_view),
|
||||
renderer,
|
||||
set_cell_color,
|
||||
NULL, NULL);
|
||||
renderer,
|
||||
set_cell_color,
|
||||
NULL, NULL);
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view),
|
||||
renderer, TRUE);
|
||||
renderer, TRUE);
|
||||
g_object_set (renderer, "editable", TRUE, NULL);
|
||||
g_signal_connect (renderer, "edited", G_CALLBACK (edited), icon_view);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view),
|
||||
renderer,
|
||||
"text", COL_TEXT,
|
||||
NULL);
|
||||
renderer,
|
||||
"text", COL_TEXT,
|
||||
NULL);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), icon_view);
|
||||
}
|
||||
@@ -156,4 +156,3 @@ do_iconview_edit (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ static FILE* image_stream = NULL;
|
||||
|
||||
static void
|
||||
progressive_prepared_callback (GdkPixbufLoader *loader,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkWidget *image;
|
||||
@@ -44,11 +44,11 @@ progressive_prepared_callback (GdkPixbufLoader *loader,
|
||||
|
||||
static void
|
||||
progressive_updated_callback (GdkPixbufLoader *loader,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gpointer data)
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gpointer data)
|
||||
{
|
||||
GtkWidget *image;
|
||||
|
||||
@@ -86,97 +86,97 @@ progressive_timeout (gpointer data)
|
||||
bytes_read = fread (buf, 1, 256, image_stream);
|
||||
|
||||
if (ferror (image_stream))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failure reading image file 'alphatest.png': %s",
|
||||
g_strerror (errno));
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failure reading image file 'alphatest.png': %s",
|
||||
g_strerror (errno));
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
load_timeout = 0;
|
||||
load_timeout = 0;
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
|
||||
if (!gdk_pixbuf_loader_write (pixbuf_loader,
|
||||
buf, bytes_read,
|
||||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
buf, bytes_read,
|
||||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load image: %s",
|
||||
error->message);
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load image: %s",
|
||||
error->message);
|
||||
|
||||
g_error_free (error);
|
||||
g_error_free (error);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
load_timeout = 0;
|
||||
load_timeout = 0;
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
|
||||
if (feof (image_stream))
|
||||
{
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
{
|
||||
fclose (image_stream);
|
||||
image_stream = NULL;
|
||||
|
||||
/* Errors can happen on close, e.g. if the image
|
||||
* file was truncated we'll know on close that
|
||||
* it was incomplete.
|
||||
*/
|
||||
error = NULL;
|
||||
if (!gdk_pixbuf_loader_close (pixbuf_loader,
|
||||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
/* Errors can happen on close, e.g. if the image
|
||||
* file was truncated we'll know on close that
|
||||
* it was incomplete.
|
||||
*/
|
||||
error = NULL;
|
||||
if (!gdk_pixbuf_loader_close (pixbuf_loader,
|
||||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load image: %s",
|
||||
error->message);
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load image: %s",
|
||||
error->message);
|
||||
|
||||
g_error_free (error);
|
||||
g_error_free (error);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
|
||||
load_timeout = 0;
|
||||
load_timeout = 0;
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
}
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -190,55 +190,55 @@ progressive_timeout (gpointer data)
|
||||
*/
|
||||
filename = demo_find_file ("alphatest.png", &error);
|
||||
if (error)
|
||||
{
|
||||
error_message = g_strdup (error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
{
|
||||
error_message = g_strdup (error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
else
|
||||
{
|
||||
image_stream = g_fopen (filename, "rb");
|
||||
g_free (filename);
|
||||
{
|
||||
image_stream = g_fopen (filename, "rb");
|
||||
g_free (filename);
|
||||
|
||||
if (!image_stream)
|
||||
error_message = g_strdup_printf ("Unable to open image file 'alphatest.png': %s",
|
||||
g_strerror (errno));
|
||||
}
|
||||
if (!image_stream)
|
||||
error_message = g_strdup_printf ("Unable to open image file 'alphatest.png': %s",
|
||||
g_strerror (errno));
|
||||
}
|
||||
|
||||
if (image_stream == NULL)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"%s", error_message);
|
||||
g_free (error_message);
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"%s", error_message);
|
||||
g_free (error_message);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
load_timeout = 0;
|
||||
load_timeout = 0;
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
|
||||
if (pixbuf_loader)
|
||||
{
|
||||
gdk_pixbuf_loader_close (pixbuf_loader, NULL);
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
}
|
||||
{
|
||||
gdk_pixbuf_loader_close (pixbuf_loader, NULL);
|
||||
g_object_unref (pixbuf_loader);
|
||||
pixbuf_loader = NULL;
|
||||
}
|
||||
|
||||
pixbuf_loader = gdk_pixbuf_loader_new ();
|
||||
|
||||
g_signal_connect (pixbuf_loader, "area-prepared",
|
||||
G_CALLBACK (progressive_prepared_callback), image);
|
||||
G_CALLBACK (progressive_prepared_callback), image);
|
||||
|
||||
g_signal_connect (pixbuf_loader, "area-updated",
|
||||
G_CALLBACK (progressive_updated_callback), image);
|
||||
G_CALLBACK (progressive_updated_callback), image);
|
||||
}
|
||||
|
||||
/* leave timeout installed */
|
||||
@@ -256,13 +256,13 @@ start_progressive_loading (GtkWidget *image)
|
||||
* pauses in the reading process.
|
||||
*/
|
||||
load_timeout = gdk_threads_add_timeout (150,
|
||||
progressive_timeout,
|
||||
image);
|
||||
progressive_timeout,
|
||||
image);
|
||||
}
|
||||
|
||||
static void
|
||||
cleanup_callback (GObject *object,
|
||||
gpointer data)
|
||||
gpointer data)
|
||||
{
|
||||
if (load_timeout)
|
||||
{
|
||||
@@ -314,7 +314,6 @@ do_images (GtkWidget *do_widget)
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *image;
|
||||
GtkWidget *label;
|
||||
GtkWidget *align;
|
||||
GtkWidget *button;
|
||||
GdkPixbuf *pixbuf;
|
||||
GIcon *gicon;
|
||||
@@ -325,13 +324,13 @@ do_images (GtkWidget *do_widget)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Images");
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (cleanup_callback), NULL);
|
||||
G_CALLBACK (cleanup_callback), NULL);
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
|
||||
|
||||
@@ -341,17 +340,14 @@ do_images (GtkWidget *do_widget)
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label),
|
||||
"<u>Image loaded from a file</u>");
|
||||
"<u>Image loaded from a file</u>");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
* the window
|
||||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
/* demo_find_file() looks in the current directory first,
|
||||
* so you can run gtk-demo without installing GTK, then looks
|
||||
@@ -360,34 +356,34 @@ do_images (GtkWidget *do_widget)
|
||||
pixbuf = NULL;
|
||||
filename = demo_find_file ("gtk-logo-rgb.gif", &error);
|
||||
if (filename)
|
||||
{
|
||||
pixbuf = gdk_pixbuf_new_from_file (filename, &error);
|
||||
g_free (filename);
|
||||
}
|
||||
{
|
||||
pixbuf = gdk_pixbuf_new_from_file (filename, &error);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
if (error)
|
||||
{
|
||||
/* This code shows off error handling. You can just use
|
||||
* gtk_image_new_from_file() instead if you don't want to report
|
||||
* errors to the user. If the file doesn't load when using
|
||||
* gtk_image_new_from_file(), a "missing image" icon will
|
||||
* be displayed instead.
|
||||
*/
|
||||
GtkWidget *dialog;
|
||||
{
|
||||
/* This code shows off error handling. You can just use
|
||||
* gtk_image_new_from_file() instead if you don't want to report
|
||||
* errors to the user. If the file doesn't load when using
|
||||
* gtk_image_new_from_file(), a "missing image" icon will
|
||||
* be displayed instead.
|
||||
*/
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Unable to open image file 'gtk-logo-rgb.gif': %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Unable to open image file 'gtk-logo-rgb.gif': %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
|
||||
image = gtk_image_new_from_pixbuf (pixbuf);
|
||||
|
||||
@@ -398,17 +394,14 @@ do_images (GtkWidget *do_widget)
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label),
|
||||
"<u>Animation loaded from a file</u>");
|
||||
"<u>Animation loaded from a file</u>");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
* the window
|
||||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
filename = demo_find_file ("floppybuddy.gif", NULL);
|
||||
image = gtk_image_new_from_file (filename);
|
||||
@@ -420,17 +413,14 @@ do_images (GtkWidget *do_widget)
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label),
|
||||
"<u>Symbolic themed icon</u>");
|
||||
"<u>Symbolic themed icon</u>");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
* the window
|
||||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
gicon = g_themed_icon_new_with_default_fallbacks ("battery-caution-charging-symbolic");
|
||||
image = gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_DIALOG);
|
||||
@@ -442,17 +432,14 @@ do_images (GtkWidget *do_widget)
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label),
|
||||
"<u>Progressive image loading</u>");
|
||||
"<u>Progressive image loading</u>");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
* the window
|
||||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
/* Create an empty image for now; the progressive loader
|
||||
* will create the pixbuf and fill it in.
|
||||
|
||||
@@ -15,10 +15,10 @@ on_bar_response (GtkInfoBar *info_bar,
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
|
||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_OK,
|
||||
"You clicked a button on an info bar");
|
||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_OK,
|
||||
"You clicked a button on an info bar");
|
||||
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
||||
"Your response has id %d", response_id);
|
||||
gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
|
||||
@@ -54,11 +54,11 @@ do_links (GtkWidget *do_widget)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Links");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 12);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
label = gtk_label_new ("Some <a href=\"http://en.wikipedia.org/wiki/Text\""
|
||||
"title=\"plain text\">text</a> may be marked up\n"
|
||||
|
||||
@@ -43,9 +43,9 @@ get_democodedir (void)
|
||||
{
|
||||
result = g_win32_get_package_installation_directory_of_module (NULL);
|
||||
if (result == NULL)
|
||||
result = "unknown-location";
|
||||
result = "unknown-location";
|
||||
|
||||
result = g_strconcat (result, "\\share\\gtk-2.0\\demo", NULL);
|
||||
result = g_strconcat (result, "\\share\\gtk-3.0\\demo", NULL);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -59,19 +59,19 @@ get_democodedir (void)
|
||||
* demo_find_file:
|
||||
* @base: base filename
|
||||
* @err: location to store error, or %NULL.
|
||||
*
|
||||
*
|
||||
* Looks for @base first in the current directory, then in the
|
||||
* location GTK+ where it will be installed on make install,
|
||||
* returns the first file found.
|
||||
*
|
||||
*
|
||||
* Return value: the filename, if found or %NULL
|
||||
**/
|
||||
*/
|
||||
gchar *
|
||||
demo_find_file (const char *base,
|
||||
GError **err)
|
||||
GError **err)
|
||||
{
|
||||
g_return_val_if_fail (err == NULL || *err == NULL, NULL);
|
||||
|
||||
|
||||
if (g_file_test ("gtk-logo-rgb.gif", G_FILE_TEST_EXISTS) &&
|
||||
g_file_test (base, G_FILE_TEST_EXISTS))
|
||||
return g_strdup (base);
|
||||
@@ -79,12 +79,12 @@ demo_find_file (const char *base,
|
||||
{
|
||||
char *filename = g_build_filename (DEMOCODEDIR, base, NULL);
|
||||
if (!g_file_test (filename, G_FILE_TEST_EXISTS))
|
||||
{
|
||||
g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NOENT,
|
||||
"Cannot find demo data file \"%s\"", base);
|
||||
g_free (filename);
|
||||
return NULL;
|
||||
}
|
||||
{
|
||||
g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NOENT,
|
||||
"Cannot find demo data file \"%s\"", base);
|
||||
g_free (filename);
|
||||
return NULL;
|
||||
}
|
||||
return filename;
|
||||
}
|
||||
}
|
||||
@@ -98,12 +98,12 @@ window_closed_cb (GtkWidget *window, gpointer data)
|
||||
|
||||
gtk_tree_model_get_iter (cbdata->model, &iter, cbdata->path);
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (cbdata->model), &iter,
|
||||
STYLE_COLUMN, &style,
|
||||
-1);
|
||||
STYLE_COLUMN, &style,
|
||||
-1);
|
||||
if (style == PANGO_STYLE_ITALIC)
|
||||
gtk_tree_store_set (GTK_TREE_STORE (cbdata->model), &iter,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
|
||||
gtk_tree_path_free (cbdata->path);
|
||||
g_free (cbdata);
|
||||
@@ -113,17 +113,17 @@ gboolean
|
||||
read_line (FILE *stream, GString *str)
|
||||
{
|
||||
int n_read = 0;
|
||||
|
||||
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
flockfile (stream);
|
||||
#endif
|
||||
|
||||
g_string_truncate (str, 0);
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
|
||||
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
c = getc_unlocked (stream);
|
||||
#else
|
||||
@@ -131,31 +131,31 @@ read_line (FILE *stream, GString *str)
|
||||
#endif
|
||||
|
||||
if (c == EOF)
|
||||
goto done;
|
||||
goto done;
|
||||
else
|
||||
n_read++;
|
||||
n_read++;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case '\r':
|
||||
case '\n':
|
||||
{
|
||||
{
|
||||
case '\r':
|
||||
case '\n':
|
||||
{
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
int next_c = getc_unlocked (stream);
|
||||
int next_c = getc_unlocked (stream);
|
||||
#else
|
||||
int next_c = getc (stream);
|
||||
int next_c = getc (stream);
|
||||
#endif
|
||||
|
||||
if (!(next_c == EOF ||
|
||||
(c == '\r' && next_c == '\n') ||
|
||||
(c == '\n' && next_c == '\r')))
|
||||
ungetc (next_c, stream);
|
||||
|
||||
goto done;
|
||||
}
|
||||
default:
|
||||
g_string_append_c (str, c);
|
||||
}
|
||||
|
||||
if (!(next_c == EOF ||
|
||||
(c == '\r' && next_c == '\n') ||
|
||||
(c == '\n' && next_c == '\r')))
|
||||
ungetc (next_c, stream);
|
||||
|
||||
goto done;
|
||||
}
|
||||
default:
|
||||
g_string_append_c (str, c);
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
@@ -333,10 +333,10 @@ static gchar *control[] =
|
||||
};
|
||||
void
|
||||
parse_chars (gchar *text,
|
||||
gchar **end_ptr,
|
||||
gint *state,
|
||||
gchar **tag,
|
||||
gboolean start)
|
||||
gchar **end_ptr,
|
||||
gint *state,
|
||||
gchar **tag,
|
||||
gboolean start)
|
||||
{
|
||||
gint i;
|
||||
gchar *next_token;
|
||||
@@ -346,11 +346,11 @@ parse_chars (gchar *text,
|
||||
{
|
||||
*end_ptr = strstr (text, "*/");
|
||||
if (*end_ptr)
|
||||
{
|
||||
*end_ptr += 2;
|
||||
*state = STATE_NORMAL;
|
||||
*tag = "comment";
|
||||
}
|
||||
{
|
||||
*end_ptr += 2;
|
||||
*state = STATE_NORMAL;
|
||||
*tag = "comment";
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -362,9 +362,9 @@ parse_chars (gchar *text,
|
||||
{
|
||||
*end_ptr = strstr (text, "*/");
|
||||
if (*end_ptr)
|
||||
*end_ptr += 2;
|
||||
*end_ptr += 2;
|
||||
else
|
||||
*state = STATE_IN_COMMENT;
|
||||
*state = STATE_IN_COMMENT;
|
||||
*tag = "comment";
|
||||
return;
|
||||
}
|
||||
@@ -381,29 +381,29 @@ parse_chars (gchar *text,
|
||||
if (start && * text != '\t' && *text != ' ' && *text != '{' && *text != '}')
|
||||
{
|
||||
if (strstr (text, "("))
|
||||
{
|
||||
*end_ptr = strstr (text, "(");
|
||||
*tag = "function";
|
||||
return;
|
||||
}
|
||||
{
|
||||
*end_ptr = strstr (text, "(");
|
||||
*tag = "function";
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* check for types */
|
||||
for (i = 0; types[i] != NULL; i++)
|
||||
if (!strncmp (text, types[i], strlen (types[i])) ||
|
||||
(start && types[i][0] == ' ' && !strncmp (text, types[i] + 1, strlen (types[i]) - 1)))
|
||||
{
|
||||
*end_ptr = text + strlen (types[i]);
|
||||
*tag = "type";
|
||||
return;
|
||||
*end_ptr = text + strlen (types[i]);
|
||||
*tag = "type";
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for control */
|
||||
for (i = 0; control[i] != NULL; i++)
|
||||
if (!strncmp (text, control[i], strlen (control[i])))
|
||||
{
|
||||
*end_ptr = text + strlen (control[i]);
|
||||
*tag = "control";
|
||||
return;
|
||||
*end_ptr = text + strlen (control[i]);
|
||||
*tag = "control";
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for string */
|
||||
@@ -414,18 +414,18 @@ parse_chars (gchar *text,
|
||||
*end_ptr = text + 1;
|
||||
*tag = "string";
|
||||
while (**end_ptr != '\000')
|
||||
{
|
||||
if (**end_ptr == '\"' && !maybe_escape)
|
||||
{
|
||||
*end_ptr += 1;
|
||||
return;
|
||||
}
|
||||
if (**end_ptr == '\\')
|
||||
maybe_escape = TRUE;
|
||||
else
|
||||
maybe_escape = FALSE;
|
||||
*end_ptr += 1;
|
||||
}
|
||||
{
|
||||
if (**end_ptr == '\"' && !maybe_escape)
|
||||
{
|
||||
*end_ptr += 1;
|
||||
return;
|
||||
}
|
||||
if (**end_ptr == '\\')
|
||||
maybe_escape = TRUE;
|
||||
else
|
||||
maybe_escape = FALSE;
|
||||
*end_ptr += 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -434,36 +434,36 @@ parse_chars (gchar *text,
|
||||
{
|
||||
next_token = strstr (text, tokens[i]);
|
||||
if (next_token)
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; types[i] != NULL; i++)
|
||||
{
|
||||
next_token = strstr (text, types[i]);
|
||||
if (next_token)
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; control[i] != NULL; i++)
|
||||
{
|
||||
next_token = strstr (text, control[i]);
|
||||
if (next_token)
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
{
|
||||
if (*end_ptr)
|
||||
*end_ptr = (*end_ptr<next_token)?*end_ptr:next_token;
|
||||
else
|
||||
*end_ptr = next_token;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,25 +488,25 @@ fontify (void)
|
||||
start_ptr = text = gtk_text_iter_get_text (&start_iter, &next_iter);
|
||||
|
||||
do
|
||||
{
|
||||
parse_chars (start_ptr, &end_ptr, &state, &tag, start);
|
||||
{
|
||||
parse_chars (start_ptr, &end_ptr, &state, &tag, start);
|
||||
|
||||
start = FALSE;
|
||||
if (end_ptr)
|
||||
{
|
||||
tmp_iter = start_iter;
|
||||
gtk_text_iter_forward_chars (&tmp_iter, end_ptr - start_ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_iter = next_iter;
|
||||
}
|
||||
if (tag)
|
||||
gtk_text_buffer_apply_tag_by_name (source_buffer, tag, &start_iter, &tmp_iter);
|
||||
start = FALSE;
|
||||
if (end_ptr)
|
||||
{
|
||||
tmp_iter = start_iter;
|
||||
gtk_text_iter_forward_chars (&tmp_iter, end_ptr - start_ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_iter = next_iter;
|
||||
}
|
||||
if (tag)
|
||||
gtk_text_buffer_apply_tag_by_name (source_buffer, tag, &start_iter, &tmp_iter);
|
||||
|
||||
start_iter = tmp_iter;
|
||||
start_ptr = end_ptr;
|
||||
}
|
||||
start_iter = tmp_iter;
|
||||
start_ptr = end_ptr;
|
||||
}
|
||||
while (end_ptr);
|
||||
|
||||
g_free (text);
|
||||
@@ -533,7 +533,7 @@ load_file (const gchar *filename)
|
||||
|
||||
g_free (current_file);
|
||||
current_file = g_strdup (filename);
|
||||
|
||||
|
||||
gtk_text_buffer_get_bounds (info_buffer, &start, &end);
|
||||
gtk_text_buffer_delete (info_buffer, &start, &end);
|
||||
|
||||
@@ -564,101 +564,101 @@ load_file (const gchar *filename)
|
||||
gchar *p = buffer->str;
|
||||
gchar *q;
|
||||
gchar *r;
|
||||
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
/* Reading title */
|
||||
while (*p == '/' || *p == '*' || g_ascii_isspace (*p))
|
||||
p++;
|
||||
r = p;
|
||||
while (*r != '/' && strlen (r))
|
||||
r++;
|
||||
if (strlen (r) > 0)
|
||||
p = r + 1;
|
||||
q = p + strlen (p);
|
||||
while (q > p && g_ascii_isspace (*(q - 1)))
|
||||
q--;
|
||||
{
|
||||
case 0:
|
||||
/* Reading title */
|
||||
while (*p == '/' || *p == '*' || g_ascii_isspace (*p))
|
||||
p++;
|
||||
r = p;
|
||||
while (*r != '/' && strlen (r))
|
||||
r++;
|
||||
if (strlen (r) > 0)
|
||||
p = r + 1;
|
||||
q = p + strlen (p);
|
||||
while (q > p && g_ascii_isspace (*(q - 1)))
|
||||
q--;
|
||||
|
||||
if (q > p)
|
||||
{
|
||||
int len_chars = g_utf8_pointer_to_offset (p, q);
|
||||
if (q > p)
|
||||
{
|
||||
int len_chars = g_utf8_pointer_to_offset (p, q);
|
||||
|
||||
end = start;
|
||||
end = start;
|
||||
|
||||
g_assert (strlen (p) >= q - p);
|
||||
gtk_text_buffer_insert (info_buffer, &end, p, q - p);
|
||||
start = end;
|
||||
g_assert (strlen (p) >= q - p);
|
||||
gtk_text_buffer_insert (info_buffer, &end, p, q - p);
|
||||
start = end;
|
||||
|
||||
gtk_text_iter_backward_chars (&start, len_chars);
|
||||
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
|
||||
gtk_text_iter_backward_chars (&start, len_chars);
|
||||
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
|
||||
|
||||
start = end;
|
||||
|
||||
state++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
/* Reading body of info section */
|
||||
while (g_ascii_isspace (*p))
|
||||
p++;
|
||||
if (*p == '*' && *(p + 1) == '/')
|
||||
{
|
||||
gtk_text_buffer_get_iter_at_offset (source_buffer, &start, 0);
|
||||
state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
int len;
|
||||
|
||||
while (*p == '*' || g_ascii_isspace (*p))
|
||||
p++;
|
||||
start = end;
|
||||
|
||||
len = strlen (p);
|
||||
while (g_ascii_isspace (*(p + len - 1)))
|
||||
len--;
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (in_para)
|
||||
gtk_text_buffer_insert (info_buffer, &start, " ", 1);
|
||||
state++;
|
||||
}
|
||||
break;
|
||||
|
||||
g_assert (strlen (p) >= len);
|
||||
gtk_text_buffer_insert (info_buffer, &start, p, len);
|
||||
in_para = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
|
||||
in_para = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
/* Reading body of info section */
|
||||
while (g_ascii_isspace (*p))
|
||||
p++;
|
||||
if (*p == '*' && *(p + 1) == '/')
|
||||
{
|
||||
gtk_text_buffer_get_iter_at_offset (source_buffer, &start, 0);
|
||||
state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
int len;
|
||||
|
||||
case 2:
|
||||
/* Skipping blank lines */
|
||||
while (g_ascii_isspace (*p))
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
p = buffer->str;
|
||||
state++;
|
||||
/* Fall through */
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
||||
case 3:
|
||||
/* Reading program body */
|
||||
gtk_text_buffer_insert (source_buffer, &start, p, -1);
|
||||
gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
|
||||
break;
|
||||
}
|
||||
while (*p == '*' || g_ascii_isspace (*p))
|
||||
p++;
|
||||
|
||||
len = strlen (p);
|
||||
while (g_ascii_isspace (*(p + len - 1)))
|
||||
len--;
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (in_para)
|
||||
gtk_text_buffer_insert (info_buffer, &start, " ", 1);
|
||||
|
||||
g_assert (strlen (p) >= len);
|
||||
gtk_text_buffer_insert (info_buffer, &start, p, len);
|
||||
in_para = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_text_buffer_insert (info_buffer, &start, "\n", 1);
|
||||
in_para = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
/* Skipping blank lines */
|
||||
while (g_ascii_isspace (*p))
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
p = buffer->str;
|
||||
state++;
|
||||
/* Fall through */
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
||||
case 3:
|
||||
/* Reading program body */
|
||||
gtk_text_buffer_insert (source_buffer, &start, p, -1);
|
||||
gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose (file);
|
||||
|
||||
|
||||
fontify ();
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
@@ -667,7 +667,7 @@ load_file (const gchar *filename)
|
||||
void
|
||||
row_activated_cb (GtkTreeView *tree_view,
|
||||
GtkTreePath *path,
|
||||
GtkTreeViewColumn *column)
|
||||
GtkTreeViewColumn *column)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
PangoStyle style;
|
||||
@@ -676,39 +676,39 @@ row_activated_cb (GtkTreeView *tree_view,
|
||||
GtkTreeModel *model;
|
||||
|
||||
model = gtk_tree_view_get_model (tree_view);
|
||||
|
||||
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (model),
|
||||
&iter,
|
||||
FUNC_COLUMN, &func,
|
||||
STYLE_COLUMN, &style,
|
||||
-1);
|
||||
&iter,
|
||||
FUNC_COLUMN, &func,
|
||||
STYLE_COLUMN, &style,
|
||||
-1);
|
||||
|
||||
if (func)
|
||||
{
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&iter,
|
||||
STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
|
||||
-1);
|
||||
&iter,
|
||||
STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
|
||||
-1);
|
||||
window = (func) (gtk_widget_get_toplevel (GTK_WIDGET (tree_view)));
|
||||
|
||||
|
||||
if (window != NULL)
|
||||
{
|
||||
CallbackData *cbdata;
|
||||
|
||||
cbdata = g_new (CallbackData, 1);
|
||||
cbdata->model = model;
|
||||
cbdata->path = gtk_tree_path_copy (path);
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (window_closed_cb), cbdata);
|
||||
}
|
||||
{
|
||||
CallbackData *cbdata;
|
||||
|
||||
cbdata = g_new (CallbackData, 1);
|
||||
cbdata->model = model;
|
||||
cbdata->path = gtk_tree_path_copy (path);
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (window_closed_cb), cbdata);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
selection_cb (GtkTreeSelection *selection,
|
||||
GtkTreeModel *model)
|
||||
GtkTreeModel *model)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GValue value = {0, };
|
||||
@@ -717,8 +717,8 @@ selection_cb (GtkTreeSelection *selection,
|
||||
return;
|
||||
|
||||
gtk_tree_model_get_value (model, &iter,
|
||||
FILENAME_COLUMN,
|
||||
&value);
|
||||
FILENAME_COLUMN,
|
||||
&value);
|
||||
if (g_value_get_string (&value))
|
||||
load_file (g_value_get_string (&value));
|
||||
g_value_unset (&value);
|
||||
@@ -726,7 +726,7 @@ selection_cb (GtkTreeSelection *selection,
|
||||
|
||||
static GtkWidget *
|
||||
create_text (GtkTextBuffer **buffer,
|
||||
gboolean is_source)
|
||||
gboolean is_source)
|
||||
{
|
||||
GtkWidget *scrolled_window;
|
||||
GtkWidget *text_view;
|
||||
@@ -734,20 +734,20 @@ create_text (GtkTextBuffer **buffer,
|
||||
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
text_view = gtk_text_view_new ();
|
||||
|
||||
|
||||
*buffer = gtk_text_buffer_new (NULL);
|
||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), *buffer);
|
||||
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
|
||||
|
||||
|
||||
if (is_source)
|
||||
{
|
||||
font_desc = pango_font_description_from_string ("monospace");
|
||||
@@ -767,7 +767,7 @@ create_text (GtkTextBuffer **buffer,
|
||||
gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (text_view),
|
||||
2);
|
||||
}
|
||||
|
||||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
@@ -790,7 +790,7 @@ create_tree (void)
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
|
||||
|
||||
gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
|
||||
GTK_SELECTION_BROWSE);
|
||||
GTK_SELECTION_BROWSE);
|
||||
gtk_widget_set_size_request (tree_view, 200, -1);
|
||||
|
||||
/* this code only supports 1 level of children. If we
|
||||
@@ -803,46 +803,46 @@ create_tree (void)
|
||||
gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
|
||||
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&iter,
|
||||
TITLE_COLUMN, d->title,
|
||||
FILENAME_COLUMN, d->filename,
|
||||
FUNC_COLUMN, d->func,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
&iter,
|
||||
TITLE_COLUMN, d->title,
|
||||
FILENAME_COLUMN, d->filename,
|
||||
FUNC_COLUMN, d->func,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
|
||||
d++;
|
||||
|
||||
if (!children)
|
||||
continue;
|
||||
|
||||
while (children->title)
|
||||
{
|
||||
GtkTreeIter child_iter;
|
||||
continue;
|
||||
|
||||
gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
|
||||
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&child_iter,
|
||||
TITLE_COLUMN, children->title,
|
||||
FILENAME_COLUMN, children->filename,
|
||||
FUNC_COLUMN, children->func,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
|
||||
children++;
|
||||
}
|
||||
while (children->title)
|
||||
{
|
||||
GtkTreeIter child_iter;
|
||||
|
||||
gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
|
||||
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&child_iter,
|
||||
TITLE_COLUMN, children->title,
|
||||
FILENAME_COLUMN, children->filename,
|
||||
FUNC_COLUMN, children->func,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
|
||||
children++;
|
||||
}
|
||||
}
|
||||
|
||||
cell = gtk_cell_renderer_text_new ();
|
||||
|
||||
column = gtk_tree_view_column_new_with_attributes ("Widget (double click for demo)",
|
||||
cell,
|
||||
"text", TITLE_COLUMN,
|
||||
"style", STYLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
cell,
|
||||
"text", TITLE_COLUMN,
|
||||
"style", STYLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
|
||||
GTK_TREE_VIEW_COLUMN (column));
|
||||
GTK_TREE_VIEW_COLUMN (column));
|
||||
|
||||
gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter);
|
||||
gtk_tree_selection_select_iter (GTK_TREE_SELECTION (selection), &iter);
|
||||
@@ -852,11 +852,11 @@ create_tree (void)
|
||||
|
||||
gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
|
||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
|
||||
|
||||
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
GTK_POLICY_NEVER,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
|
||||
|
||||
label = gtk_label_new ("Widget (double click for demo)");
|
||||
@@ -895,21 +895,21 @@ setup_default_icon (void)
|
||||
if (err)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (NULL, 0,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to read icon file: %s",
|
||||
err->message);
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to read icon file: %s",
|
||||
err->message);
|
||||
g_error_free (err);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
}
|
||||
|
||||
if (pixbuf)
|
||||
{
|
||||
GList *list;
|
||||
GList *list;
|
||||
GdkPixbuf *transparent;
|
||||
|
||||
/* The gtk-logo-rgb icon has a white background, make it transparent */
|
||||
@@ -943,15 +943,15 @@ main (int argc, char **argv)
|
||||
g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/immodules.cache", TRUE);
|
||||
}
|
||||
/* -- End of hack -- */
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
setup_default_icon ();
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos");
|
||||
g_signal_connect_after (window, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
@@ -963,8 +963,8 @@ main (int argc, char **argv)
|
||||
gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
|
||||
create_text (&info_buffer, FALSE),
|
||||
gtk_label_new_with_mnemonic ("_Info"));
|
||||
create_text (&info_buffer, FALSE),
|
||||
gtk_label_new_with_mnemonic ("_Info"));
|
||||
|
||||
gtk_text_buffer_create_tag (info_buffer, "title",
|
||||
"font", "Sans 18",
|
||||
@@ -972,8 +972,8 @@ main (int argc, char **argv)
|
||||
g_object_unref (info_buffer);
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
|
||||
create_text (&source_buffer, TRUE),
|
||||
gtk_label_new_with_mnemonic ("_Source"));
|
||||
create_text (&source_buffer, TRUE),
|
||||
gtk_label_new_with_mnemonic ("_Source"));
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (source_buffer, "comment",
|
||||
@@ -998,13 +998,12 @@ main (int argc, char **argv)
|
||||
"foreground", "DarkGoldenrod4",
|
||||
NULL);
|
||||
g_object_unref (source_buffer);
|
||||
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
load_file (testgtk_demos[0].filename);
|
||||
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
static GtkWidget *
|
||||
create_menu (gint depth,
|
||||
gboolean tearoff)
|
||||
gboolean tearoff)
|
||||
{
|
||||
GtkWidget *menu;
|
||||
GtkWidget *menuitem;
|
||||
@@ -61,7 +61,7 @@ create_menu (gint depth,
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
if (i == 3)
|
||||
gtk_widget_set_sensitive (menuitem, FALSE);
|
||||
gtk_widget_set_sensitive (menuitem, FALSE);
|
||||
|
||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (depth - 1, TRUE));
|
||||
}
|
||||
@@ -106,10 +106,10 @@ do_menus (GtkWidget *do_widget)
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Menus");
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK(gtk_widget_destroyed), &window);
|
||||
G_CALLBACK(gtk_widget_destroyed), &window);
|
||||
|
||||
accel_group = gtk_accel_group_new ();
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
|
||||
@@ -152,13 +152,13 @@ do_menus (GtkWidget *do_widget)
|
||||
|
||||
button = gtk_button_new_with_label ("Flip");
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (change_orientation), menubar);
|
||||
G_CALLBACK (change_orientation), menubar);
|
||||
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
||||
gtk_widget_show (button);
|
||||
|
||||
button = gtk_button_new_with_label ("Close");
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK(gtk_widget_destroy), window);
|
||||
G_CALLBACK(gtk_widget_destroy), window);
|
||||
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
||||
gtk_widget_set_can_default (button, TRUE);
|
||||
gtk_widget_grab_default (button);
|
||||
|
||||
@@ -613,4 +613,3 @@ do_offscreen_window (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -524,4 +524,3 @@ do_offscreen_window2 (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ do_overlay (GtkWidget *do_widget)
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
450, 450);
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
void
|
||||
toggle_resize (GtkWidget *widget,
|
||||
GtkWidget *child)
|
||||
GtkWidget *child)
|
||||
{
|
||||
GtkWidget *parent;
|
||||
GtkPaned *paned;
|
||||
@@ -43,7 +43,7 @@ toggle_resize (GtkWidget *widget,
|
||||
|
||||
void
|
||||
toggle_shrink (GtkWidget *widget,
|
||||
GtkWidget *child)
|
||||
GtkWidget *child)
|
||||
{
|
||||
GtkWidget *parent;
|
||||
GtkPaned *paned;
|
||||
@@ -70,10 +70,10 @@ toggle_shrink (GtkWidget *widget,
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
create_pane_options (GtkPaned *paned,
|
||||
const gchar *frame_label,
|
||||
const gchar *label1,
|
||||
const gchar *label2)
|
||||
create_pane_options (GtkPaned *paned,
|
||||
const gchar *frame_label,
|
||||
const gchar *label1,
|
||||
const gchar *label2)
|
||||
{
|
||||
GtkWidget *child1, *child2;
|
||||
GtkWidget *frame;
|
||||
@@ -86,47 +86,38 @@ create_pane_options (GtkPaned *paned,
|
||||
|
||||
frame = gtk_frame_new (frame_label);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
|
||||
|
||||
table = gtk_table_new (3, 2, TRUE);
|
||||
|
||||
table = gtk_grid_new ();
|
||||
gtk_container_add (GTK_CONTAINER (frame), table);
|
||||
|
||||
|
||||
label = gtk_label_new (label1);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label,
|
||||
0, 1, 0, 1);
|
||||
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 1, 2);
|
||||
gtk_grid_attach (GTK_GRID (table), check_button, 0, 1, 1, 1);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), child1);
|
||||
G_CALLBACK (toggle_resize), child1);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 2, 3);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
gtk_grid_attach (GTK_GRID (table), check_button, 0, 2, 1, 1);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_shrink), child1);
|
||||
G_CALLBACK (toggle_shrink), child1);
|
||||
|
||||
label = gtk_label_new (label2);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label,
|
||||
1, 2, 0, 1);
|
||||
|
||||
gtk_grid_attach (GTK_GRID (table), label, 1, 0, 1, 1);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
1, 2, 1, 2);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
gtk_grid_attach (GTK_GRID (table), check_button, 1, 1, 1, 1);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), child2);
|
||||
G_CALLBACK (toggle_resize), child2);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
1, 2, 2, 3);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
gtk_grid_attach (GTK_GRID (table), check_button, 1, 2, 1, 1);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_shrink), child2);
|
||||
G_CALLBACK (toggle_shrink), child2);
|
||||
|
||||
return frame;
|
||||
}
|
||||
@@ -145,10 +136,10 @@ do_panes (GtkWidget *do_widget)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Panes");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
@@ -167,7 +158,7 @@ do_panes (GtkWidget *do_widget)
|
||||
gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
|
||||
gtk_widget_set_size_request (frame, 60, 60);
|
||||
gtk_paned_add1 (GTK_PANED (hpaned), frame);
|
||||
|
||||
|
||||
button = gtk_button_new_with_mnemonic ("_Hi there");
|
||||
gtk_container_add (GTK_CONTAINER(frame), button);
|
||||
|
||||
@@ -184,18 +175,18 @@ do_panes (GtkWidget *do_widget)
|
||||
/* Now create toggle buttons to control sizing */
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_pane_options (GTK_PANED (hpaned),
|
||||
"Horizontal",
|
||||
"Left",
|
||||
"Right"),
|
||||
FALSE, FALSE, 0);
|
||||
create_pane_options (GTK_PANED (hpaned),
|
||||
"Horizontal",
|
||||
"Left",
|
||||
"Right"),
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_pane_options (GTK_PANED (vpaned),
|
||||
"Vertical",
|
||||
"Top",
|
||||
"Bottom"),
|
||||
FALSE, FALSE, 0);
|
||||
create_pane_options (GTK_PANED (vpaned),
|
||||
"Vertical",
|
||||
"Top",
|
||||
"Bottom"),
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
gtk_widget_show_all (vbox);
|
||||
}
|
||||
|
||||
@@ -25,45 +25,54 @@ do_pickers (GtkWidget *do_widget)
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
table = gtk_table_new (5, 2, FALSE);
|
||||
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 10);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 3);
|
||||
table = gtk_grid_new ();
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 3);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
|
||||
gtk_container_add (GTK_CONTAINER (window), table);
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 10);
|
||||
|
||||
label = gtk_label_new ("Color:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_hexpand (label, TRUE);
|
||||
picker = gtk_color_button_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 0, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), picker, 1, 0, 1, 1);
|
||||
|
||||
label = gtk_label_new ("Font:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_hexpand (label, TRUE);
|
||||
picker = gtk_font_button_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 1, 2);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), picker, 1, 1, 1, 1);
|
||||
|
||||
label = gtk_label_new ("File:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_hexpand (label, TRUE);
|
||||
picker = gtk_file_chooser_button_new ("Pick a File",
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 2, 3);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), picker, 1, 2, 1, 1);
|
||||
|
||||
label = gtk_label_new ("Folder:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
picker = gtk_file_chooser_button_new ("Pick a Folder",
|
||||
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 3, 4);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), picker, 1, 3, 1, 1);
|
||||
|
||||
label = gtk_label_new ("Mail:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_hexpand (label, TRUE);
|
||||
picker = gtk_app_chooser_button_new ("x-scheme-handler/mailto");
|
||||
gtk_app_chooser_button_set_show_dialog_item (GTK_APP_CHOOSER_BUTTON (picker), TRUE);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 4, 5);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 4, 5);
|
||||
gtk_grid_attach (GTK_GRID (table), label, 0, 4, 1, 1);
|
||||
gtk_grid_attach (GTK_GRID (table), picker, 1, 4, 1, 1);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -71,7 +71,7 @@ load_pixbufs (GError **error)
|
||||
|
||||
background = gdk_pixbuf_new_from_file (filename, error);
|
||||
g_free (filename);
|
||||
|
||||
|
||||
if (!background)
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
|
||||
@@ -83,10 +83,10 @@ load_pixbufs (GError **error)
|
||||
filename = demo_find_file (image_names[i], error);
|
||||
if (!filename)
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
|
||||
|
||||
images[i] = gdk_pixbuf_new_from_file (filename, error);
|
||||
g_free (filename);
|
||||
|
||||
|
||||
if (!images[i])
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ typedef struct
|
||||
|
||||
static void
|
||||
begin_print (GtkPrintOperation *operation,
|
||||
GtkPrintContext *context,
|
||||
gpointer user_data)
|
||||
GtkPrintContext *context,
|
||||
gpointer user_data)
|
||||
{
|
||||
PrintData *data = (PrintData *)user_data;
|
||||
char *contents;
|
||||
@@ -55,9 +55,9 @@ begin_print (GtkPrintOperation *operation,
|
||||
|
||||
static void
|
||||
draw_page (GtkPrintOperation *operation,
|
||||
GtkPrintContext *context,
|
||||
gint page_nr,
|
||||
gpointer user_data)
|
||||
GtkPrintContext *context,
|
||||
gint page_nr,
|
||||
gpointer user_data)
|
||||
{
|
||||
PrintData *data = (PrintData *)user_data;
|
||||
cairo_t *cr;
|
||||
@@ -132,8 +132,8 @@ draw_page (GtkPrintOperation *operation,
|
||||
|
||||
static void
|
||||
end_print (GtkPrintOperation *operation,
|
||||
GtkPrintContext *context,
|
||||
gpointer user_data)
|
||||
GtkPrintContext *context,
|
||||
gpointer user_data)
|
||||
{
|
||||
PrintData *data = (PrintData *)user_data;
|
||||
|
||||
@@ -159,11 +159,11 @@ do_printing (GtkWidget *do_widget)
|
||||
data->font_size = 12.0;
|
||||
|
||||
g_signal_connect (G_OBJECT (operation), "begin-print",
|
||||
G_CALLBACK (begin_print), data);
|
||||
G_CALLBACK (begin_print), data);
|
||||
g_signal_connect (G_OBJECT (operation), "draw-page",
|
||||
G_CALLBACK (draw_page), data);
|
||||
G_CALLBACK (draw_page), data);
|
||||
g_signal_connect (G_OBJECT (operation), "end-print",
|
||||
G_CALLBACK (end_print), data);
|
||||
G_CALLBACK (end_print), data);
|
||||
|
||||
gtk_print_operation_set_use_full_page (operation, FALSE);
|
||||
gtk_print_operation_set_unit (operation, GTK_UNIT_POINTS);
|
||||
@@ -195,14 +195,14 @@ do_printing (GtkWidget *do_widget)
|
||||
GtkWidget *dialog;
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (do_widget),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"%s", error->message);
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"%s", error->message);
|
||||
g_error_free (error);
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ create_fancy_attr_list_for_layout (PangoLayout *layout)
|
||||
for (p = text; (p = strstr (p, HEART)); p += strlen (HEART))
|
||||
{
|
||||
PangoAttribute *attr;
|
||||
|
||||
|
||||
attr = pango_attr_shape_new_with_data (&ink_rect,
|
||||
&logical_rect,
|
||||
GUINT_TO_POINTER (g_utf8_get_char (p)),
|
||||
@@ -152,7 +152,7 @@ rotated_text_draw (GtkWidget *widget,
|
||||
|
||||
/* Inform Pango to re-layout the text with the new transformation matrix */
|
||||
pango_cairo_update_layout (cr, layout);
|
||||
|
||||
|
||||
pango_layout_get_pixel_size (layout, &width, &height);
|
||||
cairo_move_to (cr, - width / 2, - RADIUS * .9);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
@@ -166,7 +166,7 @@ rotated_text_draw (GtkWidget *widget,
|
||||
g_object_unref (layout);
|
||||
g_object_unref (context);
|
||||
cairo_pattern_destroy (pattern);
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
*
|
||||
* GtkSizeGroup provides a mechanism for grouping a number of
|
||||
* widgets together so they all request the same amount of space.
|
||||
* This is typically useful when you want a column of widgets to
|
||||
* This is typically useful when you want a column of widgets to
|
||||
* have the same size, but you can't use a GtkTable widget.
|
||||
*
|
||||
*
|
||||
* Note that size groups only affect the amount of space requested,
|
||||
* not the size that the widgets finally receive. If you want the
|
||||
* widgets in a GtkSizeGroup to actually be the same size, you need
|
||||
@@ -26,7 +26,7 @@ create_combo_box (const char **strings)
|
||||
const char **str;
|
||||
|
||||
combo_box = gtk_combo_box_text_new ();
|
||||
|
||||
|
||||
for (str = strings; *str; str++)
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), *str);
|
||||
|
||||
@@ -36,34 +36,30 @@ create_combo_box (const char **strings)
|
||||
}
|
||||
|
||||
static void
|
||||
add_row (GtkTable *table,
|
||||
int row,
|
||||
GtkSizeGroup *size_group,
|
||||
const char *label_text,
|
||||
const char **options)
|
||||
add_row (GtkGrid *table,
|
||||
int row,
|
||||
GtkSizeGroup *size_group,
|
||||
const char *label_text,
|
||||
const char **options)
|
||||
{
|
||||
GtkWidget *combo_box;
|
||||
GtkWidget *label;
|
||||
|
||||
label = gtk_label_new_with_mnemonic (label_text);
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0, 1);
|
||||
gtk_table_attach (GTK_TABLE (table), label,
|
||||
0, 1, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_END);
|
||||
gtk_widget_set_hexpand (label, TRUE);
|
||||
gtk_grid_attach (table, label, 0, row, 1, 1);
|
||||
|
||||
combo_box = create_combo_box (options);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo_box);
|
||||
gtk_size_group_add_widget (size_group, combo_box);
|
||||
gtk_table_attach (GTK_TABLE (table), combo_box,
|
||||
1, 2, row, row + 1,
|
||||
0, 0,
|
||||
0, 0);
|
||||
gtk_grid_attach (table, combo_box, 1, row, 1, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
toggle_grouping (GtkToggleButton *check_button,
|
||||
GtkSizeGroup *size_group)
|
||||
GtkSizeGroup *size_group)
|
||||
{
|
||||
GtkSizeGroupMode new_mode;
|
||||
|
||||
@@ -75,7 +71,7 @@ toggle_grouping (GtkToggleButton *check_button,
|
||||
new_mode = GTK_SIZE_GROUP_HORIZONTAL;
|
||||
else
|
||||
new_mode = GTK_SIZE_GROUP_NONE;
|
||||
|
||||
|
||||
gtk_size_group_set_mode (size_group, new_mode);
|
||||
}
|
||||
|
||||
@@ -92,29 +88,29 @@ do_sizegroup (GtkWidget *do_widget)
|
||||
static const char *color_options[] = {
|
||||
"Red", "Green", "Blue", NULL
|
||||
};
|
||||
|
||||
|
||||
static const char *dash_options[] = {
|
||||
"Solid", "Dashed", "Dotted", NULL
|
||||
};
|
||||
|
||||
|
||||
static const char *end_options[] = {
|
||||
"Square", "Round", "Arrow", NULL
|
||||
};
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkSizeGroup",
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
GTK_WINDOW (do_widget),
|
||||
0,
|
||||
GTK_STOCK_CLOSE,
|
||||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
@@ -123,42 +119,40 @@ do_sizegroup (GtkWidget *do_widget)
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
||||
|
||||
/* Create one frame holding color options
|
||||
*/
|
||||
|
||||
/* Create one frame holding color options */
|
||||
frame = gtk_frame_new ("Color Options");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
table = gtk_grid_new ();
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 5);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 5);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 5);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame), table);
|
||||
|
||||
add_row (GTK_TABLE (table), 0, size_group, "_Foreground", color_options);
|
||||
add_row (GTK_TABLE (table), 1, size_group, "_Background", color_options);
|
||||
add_row (GTK_GRID (table), 0, size_group, "_Foreground", color_options);
|
||||
add_row (GTK_GRID (table), 1, size_group, "_Background", color_options);
|
||||
|
||||
/* And another frame holding line style options
|
||||
*/
|
||||
/* And another frame holding line style options */
|
||||
frame = gtk_frame_new ("Line Options");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
table = gtk_grid_new ();
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 5);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 5);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
|
||||
gtk_grid_set_row_spacing (GTK_GRID (table), 5);
|
||||
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame), table);
|
||||
|
||||
add_row (GTK_TABLE (table), 0, size_group, "_Dashing", dash_options);
|
||||
add_row (GTK_TABLE (table), 1, size_group, "_Line ends", end_options);
|
||||
add_row (GTK_GRID (table), 0, size_group, "_Dashing", dash_options);
|
||||
add_row (GTK_GRID (table), 1, size_group, "_Line ends", end_options);
|
||||
|
||||
/* And a check button to turn grouping on and off */
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Enable grouping");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), check_button, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_grouping), size_group);
|
||||
G_CALLBACK (toggle_grouping), size_group);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -93,5 +93,3 @@ do_spinner (GtkWidget *do_widget)
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ stock_item_info_free (StockItemInfo *info)
|
||||
g_free (info->accel_str);
|
||||
if (info->small_icon)
|
||||
g_object_unref (info->small_icon);
|
||||
|
||||
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ stock_item_info_copy (StockItemInfo *src)
|
||||
info->id = g_strdup (src->id);
|
||||
info->macro = g_strdup (src->macro);
|
||||
info->accel_str = g_strdup (src->accel_str);
|
||||
|
||||
|
||||
info->item = src->item;
|
||||
|
||||
info->small_icon = src->small_icon;
|
||||
@@ -82,9 +82,9 @@ id_to_macro (const gchar *id)
|
||||
/* gtk-foo-bar -> GTK_STOCK_FOO_BAR */
|
||||
|
||||
macro = g_string_new (NULL);
|
||||
|
||||
|
||||
cp = id;
|
||||
|
||||
|
||||
if (strncmp (cp, "gtk-", 4) == 0)
|
||||
{
|
||||
g_string_append (macro, "GTK_STOCK_");
|
||||
@@ -94,11 +94,11 @@ id_to_macro (const gchar *id)
|
||||
while (*cp)
|
||||
{
|
||||
if (*cp == '-')
|
||||
g_string_append_c (macro, '_');
|
||||
g_string_append_c (macro, '_');
|
||||
else if (g_ascii_islower (*cp))
|
||||
g_string_append_c (macro, g_ascii_toupper (*cp));
|
||||
g_string_append_c (macro, g_ascii_toupper (*cp));
|
||||
else
|
||||
g_string_append_c (macro, *cp);
|
||||
g_string_append_c (macro, *cp);
|
||||
|
||||
cp++;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ create_model (void)
|
||||
GtkListStore *store;
|
||||
GSList *ids;
|
||||
GSList *tmp_list;
|
||||
|
||||
|
||||
store = gtk_list_store_new (2, STOCK_ITEM_INFO_TYPE, G_TYPE_STRING);
|
||||
|
||||
ids = gtk_stock_list_ids ();
|
||||
@@ -124,9 +124,9 @@ create_model (void)
|
||||
GtkStockItem item;
|
||||
GtkTreeIter iter;
|
||||
GtkIconSet *icon_set;
|
||||
|
||||
|
||||
info.id = tmp_list->data;
|
||||
|
||||
|
||||
if (gtk_stock_lookup (info.id, &item))
|
||||
{
|
||||
info.item = item;
|
||||
@@ -165,19 +165,19 @@ create_model (void)
|
||||
++i;
|
||||
}
|
||||
g_free (sizes);
|
||||
|
||||
info.small_icon = gtk_widget_render_icon_pixbuf (window,
|
||||
|
||||
info.small_icon = gtk_widget_render_icon_pixbuf (window,
|
||||
info.id,
|
||||
size);
|
||||
|
||||
|
||||
if (size != GTK_ICON_SIZE_MENU)
|
||||
{
|
||||
/* Make the result the proper size for our thumbnail */
|
||||
gint w, h;
|
||||
GdkPixbuf *scaled;
|
||||
|
||||
|
||||
gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
|
||||
|
||||
|
||||
scaled = gdk_pixbuf_scale_simple (info.small_icon,
|
||||
w, h,
|
||||
GDK_INTERP_BILINEAR);
|
||||
@@ -200,7 +200,7 @@ create_model (void)
|
||||
}
|
||||
|
||||
info.macro = id_to_macro (info.id);
|
||||
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, &info, 1, info.id, -1);
|
||||
|
||||
@@ -208,10 +208,10 @@ create_model (void)
|
||||
g_free (info.accel_str);
|
||||
if (info.small_icon)
|
||||
g_object_unref (info.small_icon);
|
||||
|
||||
|
||||
tmp_list = g_slist_next (tmp_list);
|
||||
}
|
||||
|
||||
|
||||
g_slist_foreach (ids, (GFunc)g_free, NULL);
|
||||
g_slist_free (ids);
|
||||
|
||||
@@ -235,16 +235,16 @@ get_largest_size (const char *id)
|
||||
for (i = 0; i < n_sizes; i++)
|
||||
{
|
||||
gint width, height;
|
||||
|
||||
|
||||
gtk_icon_size_lookup (sizes[i], &width, &height);
|
||||
|
||||
if (width * height > best_pixels)
|
||||
{
|
||||
best_size = sizes[i];
|
||||
best_pixels = width * height;
|
||||
}
|
||||
{
|
||||
best_size = sizes[i];
|
||||
best_pixels = width * height;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
g_free (sizes);
|
||||
|
||||
return best_size;
|
||||
@@ -257,7 +257,7 @@ selection_changed (GtkTreeSelection *selection)
|
||||
StockItemDisplay *display;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
|
||||
treeview = gtk_tree_selection_get_tree_view (selection);
|
||||
display = g_object_get_data (G_OBJECT (treeview), "stock-display");
|
||||
|
||||
@@ -265,7 +265,7 @@ selection_changed (GtkTreeSelection *selection)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
gchar *str;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, &iter,
|
||||
0, &info,
|
||||
-1);
|
||||
@@ -313,21 +313,21 @@ selection_changed (GtkTreeSelection *selection)
|
||||
|
||||
static void
|
||||
macro_set_func_text (GtkTreeViewColumn *tree_column,
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
GtkCellRenderer *cell,
|
||||
GtkTreeModel *model,
|
||||
GtkTreeIter *iter,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->macro,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
@@ -339,15 +339,15 @@ id_set_func (GtkTreeViewColumn *tree_column,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->id,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
@@ -359,15 +359,15 @@ accel_set_func (GtkTreeViewColumn *tree_column,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->accel_str,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
@@ -379,21 +379,21 @@ label_set_func (GtkTreeViewColumn *tree_column,
|
||||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->item.label,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_stock_browser (GtkWidget *do_widget)
|
||||
{
|
||||
{
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
@@ -401,7 +401,6 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *sw;
|
||||
GtkWidget *treeview;
|
||||
GtkWidget *align;
|
||||
GtkTreeModel *model;
|
||||
GtkCellRenderer *cell_renderer;
|
||||
StockItemDisplay *display;
|
||||
@@ -410,7 +409,7 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Stock Icons and Items");
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), -1, 500);
|
||||
|
||||
@@ -427,31 +426,31 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
|
||||
|
||||
model = create_model ();
|
||||
|
||||
|
||||
treeview = gtk_tree_view_new_with_model (model);
|
||||
|
||||
g_object_unref (model);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (sw), treeview);
|
||||
|
||||
|
||||
column = gtk_tree_view_column_new ();
|
||||
gtk_tree_view_column_set_title (column, "Macro");
|
||||
|
||||
cell_renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_tree_view_column_pack_start (column,
|
||||
cell_renderer,
|
||||
FALSE);
|
||||
cell_renderer,
|
||||
FALSE);
|
||||
gtk_tree_view_column_set_attributes (column, cell_renderer,
|
||||
"stock_id", 1, NULL);
|
||||
"stock_id", 1, NULL);
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_column_pack_start (column,
|
||||
cell_renderer,
|
||||
TRUE);
|
||||
cell_renderer,
|
||||
TRUE);
|
||||
gtk_tree_view_column_set_cell_data_func (column, cell_renderer,
|
||||
macro_set_func_text, NULL, NULL);
|
||||
macro_set_func_text, NULL, NULL);
|
||||
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview),
|
||||
column);
|
||||
column);
|
||||
|
||||
cell_renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview),
|
||||
@@ -479,12 +478,10 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
id_set_func,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
|
||||
gtk_box_pack_end (GTK_BOX (hbox), align, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Selected Item");
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_widget_set_valign (frame, GTK_ALIGN_START);
|
||||
gtk_box_pack_end (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
@@ -495,7 +492,7 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
"stock-display",
|
||||
display,
|
||||
g_free); /* free display with treeview */
|
||||
|
||||
|
||||
display->type_label = gtk_label_new (NULL);
|
||||
display->macro_label = gtk_label_new (NULL);
|
||||
display->id_label = gtk_label_new (NULL);
|
||||
@@ -507,7 +504,7 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->icon_image,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->label_accel_label,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->macro_label,
|
||||
@@ -517,11 +514,11 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
|
||||
|
||||
|
||||
g_signal_connect (selection,
|
||||
"changed",
|
||||
G_CALLBACK (selection_changed),
|
||||
NULL);
|
||||
"changed",
|
||||
G_CALLBACK (selection_changed),
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
@@ -529,7 +526,7 @@ do_stock_browser (GtkWidget *do_widget)
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Text Widget/Automatic scrolling
|
||||
*
|
||||
* This example demonstrates how to use the gravity of
|
||||
* This example demonstrates how to use the gravity of
|
||||
* GtkTextMarks to keep a text view scrolled to the bottom
|
||||
* while appending text.
|
||||
*/
|
||||
@@ -20,14 +20,14 @@ scroll_to_end (GtkTextView *textview)
|
||||
static int count;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (textview);
|
||||
|
||||
/* Get "end" mark. It's located at the end of buffer because
|
||||
|
||||
/* Get "end" mark. It's located at the end of buffer because
|
||||
* of right gravity
|
||||
*/
|
||||
mark = gtk_text_buffer_get_mark (buffer, "end");
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
|
||||
|
||||
/* and insert some text at its position, the iter will be
|
||||
/* and insert some text at its position, the iter will be
|
||||
* revalidated after insertion to point to the end of inserted text
|
||||
*/
|
||||
spaces = g_strnfill (count++, ' ');
|
||||
@@ -43,7 +43,7 @@ scroll_to_end (GtkTextView *textview)
|
||||
*/
|
||||
gtk_text_view_scroll_mark_onscreen (textview, mark);
|
||||
|
||||
/* Emulate typewriter behavior, shift to the left if we
|
||||
/* Emulate typewriter behavior, shift to the left if we
|
||||
* are far enough to the right.
|
||||
*/
|
||||
if (count > 150)
|
||||
@@ -64,7 +64,7 @@ scroll_to_bottom (GtkTextView *textview)
|
||||
static int count;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (textview);
|
||||
|
||||
|
||||
/* Get end iterator */
|
||||
gtk_text_buffer_get_end_iter (buffer, &iter);
|
||||
|
||||
@@ -80,17 +80,17 @@ scroll_to_bottom (GtkTextView *textview)
|
||||
-1);
|
||||
g_free (spaces);
|
||||
|
||||
/* Move the iterator to the beginning of line, so we don't scroll
|
||||
* in horizontal direction
|
||||
/* Move the iterator to the beginning of line, so we don't scroll
|
||||
* in horizontal direction
|
||||
*/
|
||||
gtk_text_iter_set_line_offset (&iter, 0);
|
||||
|
||||
|
||||
/* and place the mark at iter. the mark will stay there after we
|
||||
* insert some text at the end because it has right gravity.
|
||||
*/
|
||||
mark = gtk_text_buffer_get_mark (buffer, "scroll");
|
||||
gtk_text_buffer_move_mark (buffer, mark, &iter);
|
||||
|
||||
|
||||
/* Scroll the mark onscreen.
|
||||
*/
|
||||
gtk_text_view_scroll_mark_onscreen (textview, mark);
|
||||
@@ -114,30 +114,30 @@ setup_scroll (GtkTextView *textview,
|
||||
gtk_text_buffer_get_end_iter (buffer, &iter);
|
||||
|
||||
if (to_end)
|
||||
{
|
||||
/* If we want to scroll to the end, including horizontal scrolling,
|
||||
* then we just create a mark with right gravity at the end of the
|
||||
* buffer. It will stay at the end unless explicitely moved with
|
||||
* gtk_text_buffer_move_mark.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
|
||||
}
|
||||
{
|
||||
/* If we want to scroll to the end, including horizontal scrolling,
|
||||
* then we just create a mark with right gravity at the end of the
|
||||
* buffer. It will stay at the end unless explicitely moved with
|
||||
* gtk_text_buffer_move_mark.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If we want to scroll to the bottom, but not scroll horizontally,
|
||||
* then an end mark won't do the job. Just create a mark so we can
|
||||
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
|
||||
* explicitely when needed. Use left gravity so the mark stays where
|
||||
* we put it after inserting new text.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
|
||||
}
|
||||
{
|
||||
/* If we want to scroll to the bottom, but not scroll horizontally,
|
||||
* then an end mark won't do the job. Just create a mark so we can
|
||||
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
|
||||
* explicitely when needed. Use left gravity so the mark stays where
|
||||
* we put it after inserting new text.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -163,7 +163,7 @@ create_text_view (GtkWidget *hbox,
|
||||
timeout = setup_scroll (GTK_TEXT_VIEW (textview), to_end);
|
||||
|
||||
/* Remove the timeout in destroy handler, so we don't try to
|
||||
* scroll destroyed widget.
|
||||
* scroll destroyed widget.
|
||||
*/
|
||||
g_signal_connect (textview, "destroy",
|
||||
G_CALLBACK (remove_timeout),
|
||||
@@ -181,9 +181,9 @@ do_textscroll (GtkWidget *do_widget)
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
|
||||
gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
@@ -193,9 +193,9 @@ do_textscroll (GtkWidget *do_widget)
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
gtk_widget_show_all (window);
|
||||
gtk_widget_show_all (window);
|
||||
else
|
||||
gtk_widget_destroy (window);
|
||||
gtk_widget_destroy (window);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
@@ -561,7 +561,6 @@ recursive_attach_view (int depth,
|
||||
GtkWidget *child_view;
|
||||
GtkWidget *event_box;
|
||||
GdkRGBA color;
|
||||
GtkWidget *align;
|
||||
|
||||
if (depth > 4)
|
||||
return;
|
||||
@@ -573,11 +572,10 @@ recursive_attach_view (int depth,
|
||||
gdk_rgba_parse (&color, "black");
|
||||
gtk_widget_override_background_color (event_box, 0, &color);
|
||||
|
||||
align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (align), 1);
|
||||
gtk_widget_set_halign (child_view, GTK_ALIGN_FILL);
|
||||
gtk_widget_set_valign (child_view, GTK_ALIGN_FILL);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (event_box), align);
|
||||
gtk_container_add (GTK_CONTAINER (align), child_view);
|
||||
gtk_container_add (GTK_CONTAINER (event_box), child_view);
|
||||
|
||||
gtk_text_view_add_child_at_anchor (view, event_box, anchor);
|
||||
|
||||
@@ -634,4 +632,3 @@ easter_egg_callback (GtkWidget *button,
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
|
||||
|
||||
@@ -170,14 +170,14 @@ create_model (void)
|
||||
|
||||
/* create tree store */
|
||||
model = gtk_tree_store_new (NUM_COLUMNS,
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN);
|
||||
G_TYPE_STRING,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN,
|
||||
G_TYPE_BOOLEAN);
|
||||
|
||||
/* add data to the tree store */
|
||||
while (month->label)
|
||||
@@ -186,35 +186,35 @@ create_model (void)
|
||||
|
||||
gtk_tree_store_append (model, &iter, NULL);
|
||||
gtk_tree_store_set (model, &iter,
|
||||
HOLIDAY_NAME_COLUMN, month->label,
|
||||
ALEX_COLUMN, FALSE,
|
||||
HAVOC_COLUMN, FALSE,
|
||||
TIM_COLUMN, FALSE,
|
||||
OWEN_COLUMN, FALSE,
|
||||
DAVE_COLUMN, FALSE,
|
||||
VISIBLE_COLUMN, FALSE,
|
||||
WORLD_COLUMN, FALSE,
|
||||
-1);
|
||||
HOLIDAY_NAME_COLUMN, month->label,
|
||||
ALEX_COLUMN, FALSE,
|
||||
HAVOC_COLUMN, FALSE,
|
||||
TIM_COLUMN, FALSE,
|
||||
OWEN_COLUMN, FALSE,
|
||||
DAVE_COLUMN, FALSE,
|
||||
VISIBLE_COLUMN, FALSE,
|
||||
WORLD_COLUMN, FALSE,
|
||||
-1);
|
||||
|
||||
/* add children */
|
||||
while (holiday->label)
|
||||
{
|
||||
GtkTreeIter child_iter;
|
||||
{
|
||||
GtkTreeIter child_iter;
|
||||
|
||||
gtk_tree_store_append (model, &child_iter, &iter);
|
||||
gtk_tree_store_set (model, &child_iter,
|
||||
HOLIDAY_NAME_COLUMN, holiday->label,
|
||||
ALEX_COLUMN, holiday->alex,
|
||||
HAVOC_COLUMN, holiday->havoc,
|
||||
TIM_COLUMN, holiday->tim,
|
||||
OWEN_COLUMN, holiday->owen,
|
||||
DAVE_COLUMN, holiday->dave,
|
||||
VISIBLE_COLUMN, TRUE,
|
||||
WORLD_COLUMN, holiday->world_holiday,
|
||||
-1);
|
||||
gtk_tree_store_append (model, &child_iter, &iter);
|
||||
gtk_tree_store_set (model, &child_iter,
|
||||
HOLIDAY_NAME_COLUMN, holiday->label,
|
||||
ALEX_COLUMN, holiday->alex,
|
||||
HAVOC_COLUMN, holiday->havoc,
|
||||
TIM_COLUMN, holiday->tim,
|
||||
OWEN_COLUMN, holiday->owen,
|
||||
DAVE_COLUMN, holiday->dave,
|
||||
VISIBLE_COLUMN, TRUE,
|
||||
WORLD_COLUMN, holiday->world_holiday,
|
||||
-1);
|
||||
|
||||
holiday++;
|
||||
}
|
||||
holiday++;
|
||||
}
|
||||
|
||||
month++;
|
||||
}
|
||||
@@ -224,8 +224,8 @@ create_model (void)
|
||||
|
||||
static void
|
||||
item_toggled (GtkCellRendererToggle *cell,
|
||||
gchar *path_str,
|
||||
gpointer data)
|
||||
gchar *path_str,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreeModel *model = (GtkTreeModel *)data;
|
||||
GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
|
||||
@@ -245,7 +245,7 @@ item_toggled (GtkCellRendererToggle *cell,
|
||||
|
||||
/* set new value */
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model), &iter, column,
|
||||
toggle_item, -1);
|
||||
toggle_item, -1);
|
||||
|
||||
/* clean up */
|
||||
gtk_tree_path_free (path);
|
||||
@@ -264,10 +264,10 @@ add_columns (GtkTreeView *treeview)
|
||||
g_object_set (renderer, "xalign", 0.0, NULL);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Holiday",
|
||||
renderer, "text",
|
||||
HOLIDAY_NAME_COLUMN,
|
||||
NULL);
|
||||
-1, "Holiday",
|
||||
renderer, "text",
|
||||
HOLIDAY_NAME_COLUMN,
|
||||
NULL);
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
@@ -279,18 +279,18 @@ add_columns (GtkTreeView *treeview)
|
||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Alex",
|
||||
renderer,
|
||||
"active",
|
||||
ALEX_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
"activatable",
|
||||
WORLD_COLUMN, NULL);
|
||||
-1, "Alex",
|
||||
renderer,
|
||||
"active",
|
||||
ALEX_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
"activatable",
|
||||
WORLD_COLUMN, NULL);
|
||||
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
@@ -302,17 +302,17 @@ add_columns (GtkTreeView *treeview)
|
||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Havoc",
|
||||
renderer,
|
||||
"active",
|
||||
HAVOC_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
-1, "Havoc",
|
||||
renderer,
|
||||
"active",
|
||||
HAVOC_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
@@ -324,18 +324,18 @@ add_columns (GtkTreeView *treeview)
|
||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Tim",
|
||||
renderer,
|
||||
"active",
|
||||
TIM_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
"activatable",
|
||||
WORLD_COLUMN, NULL);
|
||||
-1, "Tim",
|
||||
renderer,
|
||||
"active",
|
||||
TIM_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
"activatable",
|
||||
WORLD_COLUMN, NULL);
|
||||
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
@@ -347,17 +347,17 @@ add_columns (GtkTreeView *treeview)
|
||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Owen",
|
||||
renderer,
|
||||
"active",
|
||||
OWEN_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
-1, "Owen",
|
||||
renderer,
|
||||
"active",
|
||||
OWEN_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
|
||||
@@ -369,17 +369,17 @@ add_columns (GtkTreeView *treeview)
|
||||
g_signal_connect (renderer, "toggled", G_CALLBACK (item_toggled), model);
|
||||
|
||||
col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
|
||||
-1, "Dave",
|
||||
renderer,
|
||||
"active",
|
||||
DAVE_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
-1, "Dave",
|
||||
renderer,
|
||||
"active",
|
||||
DAVE_COLUMN,
|
||||
"visible",
|
||||
VISIBLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
|
||||
gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
GTK_TREE_VIEW_COLUMN_FIXED);
|
||||
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50);
|
||||
gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
|
||||
}
|
||||
@@ -397,25 +397,25 @@ do_tree_store (GtkWidget *do_widget)
|
||||
/* create window, etc */
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Card planning sheet");
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
gtk_label_new ("Jonathan's Holiday Card Planning Sheet"),
|
||||
FALSE, FALSE, 0);
|
||||
gtk_label_new ("Jonathan's Holiday Card Planning Sheet"),
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_SHADOW_ETCHED_IN);
|
||||
GTK_SHADOW_ETCHED_IN);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
/* create model */
|
||||
@@ -426,7 +426,7 @@ do_tree_store (GtkWidget *do_widget)
|
||||
g_object_unref (model);
|
||||
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
|
||||
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
|
||||
GTK_SELECTION_MULTIPLE);
|
||||
GTK_SELECTION_MULTIPLE);
|
||||
|
||||
add_columns (GTK_TREE_VIEW (treeview));
|
||||
|
||||
@@ -434,7 +434,7 @@ do_tree_store (GtkWidget *do_widget)
|
||||
|
||||
/* expand all rows after the treeview widget has been realized */
|
||||
g_signal_connect (treeview, "realize",
|
||||
G_CALLBACK (gtk_tree_view_expand_all), NULL);
|
||||
G_CALLBACK (gtk_tree_view_expand_all), NULL);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 650, 400);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ activate_action (GtkAction *action)
|
||||
static void
|
||||
activate_radio_action (GtkAction *action, GtkRadioAction *current)
|
||||
{
|
||||
g_message ("Radio action \"%s\" selected",
|
||||
gtk_action_get_name (GTK_ACTION (current)));
|
||||
g_message ("Radio action \"%s\" selected",
|
||||
gtk_action_get_name (GTK_ACTION (current)));
|
||||
}
|
||||
|
||||
static GtkActionEntry entries[] = {
|
||||
@@ -27,30 +27,30 @@ static GtkActionEntry entries[] = {
|
||||
{ "HelpMenu", NULL, "_Help" }, /* name, stock id, label */
|
||||
{ "New", GTK_STOCK_NEW, /* name, stock id */
|
||||
"_New", "<control>N", /* label, accelerator */
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Open", GTK_STOCK_OPEN, /* name, stock id */
|
||||
"_Open","<control>O", /* label, accelerator */
|
||||
"_Open","<control>O", /* label, accelerator */
|
||||
"Open a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Save", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"Save current file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "SaveAs", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save to a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Quit", GTK_STOCK_QUIT, /* name, stock id */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"Quit", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "About", NULL, /* name, stock id */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Logo", "demo-gtk-logo", /* name, stock id */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
"GTK+", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
};
|
||||
@@ -59,9 +59,9 @@ static guint n_entries = G_N_ELEMENTS (entries);
|
||||
|
||||
static GtkToggleActionEntry toggle_entries[] = {
|
||||
{ "Bold", GTK_STOCK_BOLD, /* name, stock id */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"Bold", /* tooltip */
|
||||
G_CALLBACK (activate_action),
|
||||
G_CALLBACK (activate_action),
|
||||
TRUE }, /* is_active */
|
||||
};
|
||||
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
|
||||
@@ -74,13 +74,13 @@ enum {
|
||||
|
||||
static GtkRadioActionEntry color_entries[] = {
|
||||
{ "Red", NULL, /* name, stock id */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"Blood", COLOR_RED }, /* tooltip, value */
|
||||
{ "Green", NULL, /* name, stock id */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"Grass", COLOR_GREEN }, /* tooltip, value */
|
||||
{ "Blue", NULL, /* name, stock id */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"Sky", COLOR_BLUE }, /* tooltip, value */
|
||||
};
|
||||
static guint n_color_entries = G_N_ELEMENTS (color_entries);
|
||||
@@ -93,18 +93,18 @@ enum {
|
||||
|
||||
static GtkRadioActionEntry shape_entries[] = {
|
||||
{ "Square", NULL, /* name, stock id */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"Square", SHAPE_SQUARE }, /* tooltip, value */
|
||||
{ "Rectangle", NULL, /* name, stock id */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"Rectangle", SHAPE_RECTANGLE }, /* tooltip, value */
|
||||
{ "Oval", NULL, /* name, stock id */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
};
|
||||
static guint n_shape_entries = G_N_ELEMENTS (shape_entries);
|
||||
|
||||
static const gchar *ui_info =
|
||||
static const gchar *ui_info =
|
||||
"<ui>"
|
||||
" <menubar name='MenuBar'>"
|
||||
" <menu action='FileMenu'>"
|
||||
@@ -117,9 +117,9 @@ static const gchar *ui_info =
|
||||
" </menu>"
|
||||
" <menu action='PreferencesMenu'>"
|
||||
" <menu action='ColorMenu'>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" <menuitem action='Red'/>"
|
||||
" <menuitem action='Green'/>"
|
||||
" <menuitem action='Blue'/>"
|
||||
" </menu>"
|
||||
" <menu action='ShapeMenu'>"
|
||||
" <menuitem action='Square'/>"
|
||||
@@ -144,7 +144,7 @@ GtkWidget *
|
||||
do_ui_manager (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *box1;
|
||||
@@ -158,68 +158,66 @@ do_ui_manager (GtkWidget *do_widget)
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "delete-event",
|
||||
G_CALLBACK (gtk_true), NULL);
|
||||
G_CALLBACK (gtk_true), NULL);
|
||||
|
||||
actions = gtk_action_group_new ("Actions");
|
||||
gtk_action_group_add_actions (actions, entries, n_entries, NULL);
|
||||
gtk_action_group_add_toggle_actions (actions,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_OVAL,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_toggle_actions (actions,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_OVAL,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
|
||||
ui = gtk_ui_manager_new ();
|
||||
gtk_ui_manager_insert_action_group (ui, actions, 0);
|
||||
g_object_unref (actions);
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (ui));
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (ui));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "UI Manager");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
|
||||
|
||||
if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error))
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
box1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), box1);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (box1),
|
||||
gtk_ui_manager_get_widget (ui, "/MenuBar"),
|
||||
FALSE, FALSE, 0);
|
||||
gtk_ui_manager_get_widget (ui, "/MenuBar"),
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
label = gtk_label_new ("Type\n<alt>\nto start");
|
||||
gtk_widget_set_size_request (label, 200, 200);
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_CENTER);
|
||||
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
||||
gtk_box_pack_start (GTK_BOX (box1), label, TRUE, TRUE, 0);
|
||||
|
||||
|
||||
separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
|
||||
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
|
||||
|
||||
|
||||
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
||||
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
|
||||
|
||||
button = gtk_button_new_with_label ("close");
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy), window);
|
||||
G_CALLBACK (gtk_widget_destroy), window);
|
||||
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
||||
gtk_widget_set_can_default (button, TRUE);
|
||||
gtk_widget_grab_default (button);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
## Makefile.am for gtk+/demos
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir)/gdk \
|
||||
-DGDK_DISABLE_DEPRECATED \
|
||||
|
||||
@@ -8,7 +8,6 @@ EXTRA_DIST += \
|
||||
developers.txt \
|
||||
dnd_internals.txt \
|
||||
focus_tracking.txt \
|
||||
generation.txt \
|
||||
gtkdocs_fix \
|
||||
make-todo \
|
||||
refcounting.txt \
|
||||
|
||||
@@ -1,177 +0,0 @@
|
||||
Overview:
|
||||
========
|
||||
|
||||
This file describes the way that autogeneration
|
||||
works within the GTK+ source code.
|
||||
|
||||
The following files in the gdk/ subdirectory
|
||||
are autogenerated:
|
||||
|
||||
gdkkeysyms.h
|
||||
gdkcursors.h
|
||||
|
||||
The following files in the gtk/ subdirectory
|
||||
are autogenerated:
|
||||
|
||||
gtk.defs
|
||||
Description of GTK+ types (and some functions) in a lisp-style
|
||||
format.
|
||||
gtktypebuiltins.h
|
||||
Header file including declarations for internal types
|
||||
gtktypebuiltins_vars.c
|
||||
Variables for type values for internal types.
|
||||
gtktypebuiltins_ids.c
|
||||
Arrays holding information about each internal type.
|
||||
gtktypebuiltins_evals.c
|
||||
Arrays holding mapping between enumeration values
|
||||
and strings.
|
||||
|
||||
gtkmarshal.c
|
||||
gtkmarshal.h
|
||||
Autogenerated signal marshallers
|
||||
|
||||
GDK
|
||||
===
|
||||
|
||||
gdkkeysyms.h and gdkcursors.h are generated from
|
||||
the corresponding header files
|
||||
|
||||
X11/cursorfont.h
|
||||
X11/keysymdef.h
|
||||
|
||||
by some simple sed scripts. These are not actually
|
||||
run automatically because we want all the keysyms
|
||||
even on systems with a limited set.
|
||||
So the Gdk rule to generate both files (X-derived-headers)
|
||||
only needs to be rerun for every new release of the X Window
|
||||
System.
|
||||
|
||||
GTK+ - type definitions
|
||||
=======================
|
||||
|
||||
The type definitions are generated from several sources:
|
||||
|
||||
gtk-boxed.defs - definitions for boxed types
|
||||
GTK+ header files
|
||||
GDK header files
|
||||
|
||||
The makeenums.pl script does a heuristic parse of
|
||||
the header files and extracts all enumerations declarations.
|
||||
It also recognizes a number of pseudo-comments in the
|
||||
header files:
|
||||
|
||||
Two of these apply to individual enumeration values:
|
||||
|
||||
/*< skip >*/
|
||||
|
||||
This enumeration value should be skipped.
|
||||
|
||||
/*< nick=NICK >*/
|
||||
|
||||
The nickname for this value should NICK instead of the
|
||||
normally guessed value. For instance:
|
||||
|
||||
typedef enum {
|
||||
GTK_TARGET_SAME_APP = 1 << 0, /*< nick=same-app >*/
|
||||
GTK_TARGET_SAME_WIDGET = 1 << 1 /*< nick=same-widget >*/
|
||||
} GtkTargetFlags;
|
||||
|
||||
makes the nicks "same-app" and "same-widget", instead of
|
||||
"app" and "widget" that would normally be used.
|
||||
|
||||
The other two apply to entire enumeration declarations.
|
||||
|
||||
/*< prefix=PREFIX >*/
|
||||
|
||||
Specifies the prefix to be removed from the enumeration
|
||||
values to generate nicknames.
|
||||
|
||||
/*< flags >*/
|
||||
|
||||
Specifies that this enumeration is used as a bitfield.
|
||||
(makenums.pl normally guesses this from the presence of values
|
||||
with << operators). For instance:
|
||||
|
||||
typedef enum /*< flags >*/
|
||||
{
|
||||
GDK_IM_PREEDIT_AREA = 0x0001,
|
||||
GDK_IM_PREEDIT_CALLBACKS = 0x0002,
|
||||
[ ... ]
|
||||
} GdkIMStyle;
|
||||
|
||||
makeenums.pl can be run into two modes:
|
||||
|
||||
1) Generate the gtktypebuiltins_eval.c file (this
|
||||
contains arrays holding the mapping of
|
||||
string <=> enumeration value)
|
||||
|
||||
2) Generate the enumeration portion of gtk.defs.
|
||||
|
||||
The enumeration portion is added to the boxed type
|
||||
declarations in gtk-boxed.defs to create gtk.defs.
|
||||
|
||||
The makeetypes.awk program takes the gtk.defs file, and
|
||||
from that generates various files depending on the
|
||||
third parameter passed to it:
|
||||
|
||||
macros: gtktypebuiltins.h
|
||||
variables: gtktypebuiltins_vars.c
|
||||
entries: gtktypebuiltins_ids.c
|
||||
|
||||
GTK+ - marshallers
|
||||
==================
|
||||
|
||||
The files gtkmarshal.c and gtkmarshal.h include declarations
|
||||
and definitions for the marshallers needed inside of
|
||||
GTK+. The marshallers to be generated are listed in
|
||||
the file gtkmashal.list, which is processed
|
||||
by genmarshal.pl.
|
||||
|
||||
The format of this file is a list of lines:
|
||||
|
||||
<retval-type>:<arg1-type>,<arg2-type>,<arg3-type>
|
||||
|
||||
e.g.:
|
||||
|
||||
BOOL:POINTER,STRING,STRING,POINTER
|
||||
|
||||
A marshaller is generated for each line in the file.
|
||||
The possible types are:
|
||||
|
||||
NONE
|
||||
BOOL
|
||||
CHAR
|
||||
INT
|
||||
UINT
|
||||
LONG
|
||||
ULONG
|
||||
FLOAT
|
||||
DOUBLE
|
||||
STRING
|
||||
ENUM
|
||||
FLAGS
|
||||
BOXED
|
||||
POINTER
|
||||
OBJECT
|
||||
FOREIGN (gpointer data, GtkDestroyNotify notify)
|
||||
C_CALLBACK (GtkFunction func, gpointer func_data)
|
||||
SIGNAL (GtkSignalFunc f, gpointer data)
|
||||
ARGS (gint n_args, GtkArg *args)
|
||||
CALLBACK (GtkCallBackMarshal marshall,
|
||||
gpointer data,
|
||||
GtkDestroyNotify Notify)
|
||||
|
||||
Some of these types map to multiple return values - these
|
||||
are marked above with the return types in parentheses.
|
||||
|
||||
NOTES
|
||||
=====
|
||||
|
||||
When autogenerating GTK+ files, the autogenerated
|
||||
files are often rebuild resulting in the same result.
|
||||
|
||||
To prevent unnecessary rebuilds of the entire directory, some files
|
||||
that multiple other source files depend on are not actually written
|
||||
to directly. Instead, an intermediate file is written, which
|
||||
is then compared to the old file, and only if it is different
|
||||
is it copied into the final location.
|
||||
@@ -37,7 +37,7 @@ EXTRA_HFILES= \
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/gdk \
|
||||
|
||||
@@ -57,6 +57,10 @@
|
||||
<title>Index of new symbols in 3.0</title>
|
||||
<xi:include href="xml/api-index-3.0.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="api-index-3-2" role="3.2">
|
||||
<title>Index of new symbols in 3.2</title>
|
||||
<xi:include href="xml/api-index-3.2.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
|
||||
@@ -761,11 +761,16 @@ gdk_event_put
|
||||
gdk_event_new
|
||||
gdk_event_copy
|
||||
gdk_event_free
|
||||
gdk_event_get_time
|
||||
gdk_event_get_state
|
||||
gdk_event_get_axis
|
||||
gdk_event_get_button
|
||||
gdk_event_get_click_count
|
||||
gdk_event_get_coords
|
||||
gdk_event_get_keycode
|
||||
gdk_event_get_keyval
|
||||
gdk_event_get_root_coords
|
||||
gdk_event_get_scroll_direction
|
||||
gdk_event_get_state
|
||||
gdk_event_get_time
|
||||
gdk_event_request_motions
|
||||
gdk_events_get_angle
|
||||
gdk_events_get_center
|
||||
@@ -928,6 +933,8 @@ GDK_POINTER_TO_XID
|
||||
GDK_XID_TO_POINTER
|
||||
gdk_x11_lookup_xdisplay
|
||||
gdk_x11_get_server_time
|
||||
gdk_x11_device_get_id
|
||||
gdk_x11_device_manager_lookup
|
||||
gdk_x11_display_get_user_time
|
||||
gdk_x11_display_broadcast_startup_message
|
||||
gdk_x11_display_get_startup_notification_id
|
||||
|
||||
@@ -94,7 +94,7 @@ IGNORE_HFILES= \
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/gdk \
|
||||
|
||||
@@ -219,6 +219,8 @@
|
||||
<xi:include href="xml/gtkfilechooserwidget.xml" />
|
||||
<xi:include href="xml/gtkfilefilter.xml" />
|
||||
<xi:include href="xml/gtkfontbutton.xml" />
|
||||
<xi:include href="xml/gtkfontchooser.xml" />
|
||||
<xi:include href="xml/gtkfontchooserdlg.xml" />
|
||||
<xi:include href="xml/gtkfontsel.xml" />
|
||||
<xi:include href="xml/gtkfontseldlg.xml" />
|
||||
</chapter>
|
||||
|
||||
@@ -305,6 +305,7 @@ gtk_adjustment_get_lower
|
||||
gtk_adjustment_get_page_increment
|
||||
gtk_adjustment_get_page_size
|
||||
gtk_adjustment_get_step_increment
|
||||
gtk_adjustment_get_minimum_increment
|
||||
gtk_adjustment_get_upper
|
||||
gtk_adjustment_set_lower
|
||||
gtk_adjustment_set_page_increment
|
||||
@@ -354,6 +355,7 @@ gtk_assistant_get_nth_page
|
||||
gtk_assistant_prepend_page
|
||||
gtk_assistant_append_page
|
||||
gtk_assistant_insert_page
|
||||
gtk_assistant_remove_page
|
||||
GtkAssistantPageFunc
|
||||
gtk_assistant_set_forward_page_func
|
||||
GtkAssistantPageType
|
||||
@@ -901,6 +903,7 @@ gtk_container_child_get_property
|
||||
gtk_container_child_set_property
|
||||
gtk_container_child_get_valist
|
||||
gtk_container_child_set_valist
|
||||
gtk_container_child_notify
|
||||
gtk_container_forall
|
||||
gtk_container_get_border_width
|
||||
gtk_container_set_border_width
|
||||
@@ -1475,6 +1478,77 @@ GtkFontSelectionDialogPrivate
|
||||
gtk_font_selection_dialog_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkfontchooser</FILE>
|
||||
<TITLE>GtkFontChooser</TITLE>
|
||||
GtkFontChooser
|
||||
gtk_font_chooser_get_font_family
|
||||
gtk_font_chooser_get_font_face
|
||||
gtk_font_chooser_get_font_size
|
||||
gtk_font_chooser_get_font
|
||||
gtk_font_chooser_set_font
|
||||
gtk_font_chooser_get_font_desc
|
||||
gtk_font_chooser_set_font_desc
|
||||
gtk_font_chooser_get_preview_text
|
||||
gtk_font_chooser_set_preview_text
|
||||
gtk_font_chooser_get_show_preview_entry
|
||||
gtk_font_chooser_set_show_preview_entry
|
||||
GtkFontFilterFunc
|
||||
gtk_font_chooser_set_filter_func
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GtkFontChooserIface
|
||||
GTK_TYPE_FONT_CHOOSER
|
||||
GTK_FONT_CHOOSER
|
||||
GTK_FONT_CHOOSER_IFACE
|
||||
GTK_IS_FONT_CHOOSER
|
||||
GTK_IS_FONT_CHOOSER_IFACE
|
||||
GTK_FONT_CHOOSER_GET_IFACE
|
||||
|
||||
<SUBSECTION Private>
|
||||
gtk_font_chooser_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkfontchooserwidget</FILE>
|
||||
<TITLE>GtkFontChooserWidget</TITLE>
|
||||
GtkFontChooserWidget
|
||||
gtk_font_chooser_widget_new
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GtkFontChooserWidgetClass
|
||||
GTK_TYPE_FONT_CHOOSER_WIDGET
|
||||
GTK_FONT_CHOOSER_WIDGET
|
||||
GTK_FONT_CHOOSER_WIDGET_CLASS
|
||||
GTK_IS_FONT_CHOOSER_WIDGET
|
||||
GTK_IS_FONT_CHOOSER_WIDGET_CLASS
|
||||
GTK_FONT_CHOOSER_WIDGET_GET_CLASS
|
||||
|
||||
<SUBSECTION Private>
|
||||
GtkFontChooserWidgetPrivate
|
||||
gtk_font_chooser_widget_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkfontchooserdlg</FILE>
|
||||
<TITLE>GtkFontChooserDialog</TITLE>
|
||||
GtkFontChooserDialog
|
||||
gtk_font_chooser_dialog_new
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GtkFontChooserDialogClass
|
||||
GTK_TYPE_FONT_CHOOSER_DIALOG
|
||||
GTK_FONT_CHOOSER_DIALOG
|
||||
GTK_FONT_CHOOSER_DIALOG_CLASS
|
||||
GTK_IS_FONT_CHOOSER_DIALOG
|
||||
GTK_IS_FONT_CHOOSER_DIALOG_CLASS
|
||||
GTK_FONT_CHOOSER_DIALOG_GET_CLASS
|
||||
|
||||
<SUBSECTION Private>
|
||||
GtkFontChooserDialogPrivate
|
||||
gtk_font_chooser_dialog_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkframe</FILE>
|
||||
<TITLE>GtkFrame</TITLE>
|
||||
@@ -3268,6 +3342,7 @@ gtk_text_buffer_get_type
|
||||
GtkTextIter
|
||||
gtk_text_iter_get_buffer
|
||||
gtk_text_iter_copy
|
||||
gtk_text_iter_assign
|
||||
gtk_text_iter_free
|
||||
gtk_text_iter_get_offset
|
||||
gtk_text_iter_get_line
|
||||
@@ -4228,6 +4303,7 @@ gtk_tree_view_column_cell_is_visible
|
||||
gtk_tree_view_column_focus_cell
|
||||
gtk_tree_view_column_queue_resize
|
||||
gtk_tree_view_column_get_tree_view
|
||||
gtk_tree_view_column_get_x_offset
|
||||
<SUBSECTION Standard>
|
||||
GTK_TREE_VIEW_COLUMN
|
||||
GTK_IS_TREE_VIEW_COLUMN
|
||||
@@ -5050,6 +5126,8 @@ gtk_widget_style_get
|
||||
gtk_widget_style_get_property
|
||||
gtk_widget_style_get_valist
|
||||
gtk_widget_style_attach
|
||||
gtk_widget_class_set_accessible_type
|
||||
gtk_widget_class_set_accessible_role
|
||||
gtk_widget_get_accessible
|
||||
gtk_widget_child_focus
|
||||
gtk_widget_child_notify
|
||||
@@ -5108,6 +5186,7 @@ gtk_widget_unset_state_flags
|
||||
gtk_widget_get_state_flags
|
||||
gtk_widget_has_default
|
||||
gtk_widget_has_focus
|
||||
gtk_widget_has_visible_focus
|
||||
gtk_widget_has_grab
|
||||
gtk_widget_has_rc_style
|
||||
gtk_widget_is_drawable
|
||||
@@ -5290,6 +5369,8 @@ gtk_window_get_opacity
|
||||
gtk_window_set_opacity
|
||||
gtk_window_get_mnemonics_visible
|
||||
gtk_window_set_mnemonics_visible
|
||||
gtk_window_get_focus_visible
|
||||
gtk_window_set_focus_visible
|
||||
gtk_window_set_has_resize_grip
|
||||
gtk_window_get_has_resize_grip
|
||||
gtk_window_resize_grip_is_visible
|
||||
@@ -5417,6 +5498,7 @@ GTK_CHECK_VERSION
|
||||
GtkWidgetPath
|
||||
gtk_widget_path_append_type
|
||||
gtk_widget_path_append_with_siblings
|
||||
gtk_widget_path_append_for_widget
|
||||
gtk_widget_path_copy
|
||||
gtk_widget_path_ref
|
||||
gtk_widget_path_unref
|
||||
@@ -5527,6 +5609,7 @@ GTK_STYLE_CLASS_BACKGROUND
|
||||
GTK_STYLE_CLASS_BUTTON
|
||||
GTK_STYLE_CLASS_CALENDAR
|
||||
GTK_STYLE_CLASS_CELL
|
||||
GTK_STYLE_CLASS_COMBOBOX_ENTRY
|
||||
GTK_STYLE_CLASS_CHECK
|
||||
GTK_STYLE_CLASS_DEFAULT
|
||||
GTK_STYLE_CLASS_ENTRY
|
||||
@@ -5676,6 +5759,19 @@ gtk_css_provider_new
|
||||
gtk_css_provider_to_string
|
||||
GTK_CSS_PROVIDER_ERROR
|
||||
GtkCssProviderError
|
||||
<SUBSECTION>
|
||||
GtkCssSection
|
||||
GtkCssSectionType
|
||||
gtk_css_section_get_end_line
|
||||
gtk_css_section_get_end_position
|
||||
gtk_css_section_get_file
|
||||
gtk_css_section_get_parent
|
||||
gtk_css_section_get_section_type
|
||||
gtk_css_section_get_start_line
|
||||
gtk_css_section_get_start_position
|
||||
gtk_css_section_get_type
|
||||
gtk_css_section_ref
|
||||
gtk_css_section_unref
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_CSS_PROVIDER
|
||||
GTK_CSS_PROVIDER
|
||||
@@ -5686,6 +5782,7 @@ GTK_IS_CSS_PROVIDER_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_css_provider_get_type
|
||||
gtk_css_provider_error_quark
|
||||
gtk_css_section_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -5724,6 +5821,7 @@ GTK_THEMING_ENGINE_GET_CLASS
|
||||
GTK_IS_THEMING_ENGINE
|
||||
GTK_IS_THEMING_ENGINE_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkThemingEnginePrivate
|
||||
GTK_TYPE_THEMING_ENGINE
|
||||
gtk_theming_engine_get_type
|
||||
</SECTION>
|
||||
@@ -6910,6 +7008,10 @@ GtkGrid
|
||||
gtk_grid_new
|
||||
gtk_grid_attach
|
||||
gtk_grid_attach_next_to
|
||||
gtk_grid_get_child_at
|
||||
gtk_grid_insert_row
|
||||
gtk_grid_insert_column
|
||||
gtk_grid_insert_next_to
|
||||
gtk_grid_set_row_homogeneous
|
||||
gtk_grid_get_row_homogeneous
|
||||
gtk_grid_set_row_spacing
|
||||
@@ -6988,6 +7090,8 @@ gtk_app_chooser_button_new
|
||||
gtk_app_chooser_button_append_custom_item
|
||||
gtk_app_chooser_button_append_separator
|
||||
gtk_app_chooser_button_set_active_custom_item
|
||||
gtk_app_chooser_button_get_show_default_item
|
||||
gtk_app_chooser_button_set_show_default_item
|
||||
gtk_app_chooser_button_get_show_dialog_item
|
||||
gtk_app_chooser_button_set_show_dialog_item
|
||||
gtk_app_chooser_button_get_heading
|
||||
@@ -7091,11 +7195,7 @@ GtkLockButtonPrivate
|
||||
GtkOverlay
|
||||
|
||||
gtk_overlay_new
|
||||
gtk_overlay_set_relative_widget
|
||||
gtk_overlay_get_relative_widget
|
||||
gtk_overlay_add
|
||||
gtk_overlay_set_offset
|
||||
gtk_overlay_get_offset
|
||||
gtk_overlay_add_overlay
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_OVERLAY
|
||||
|
||||
@@ -66,6 +66,9 @@ gtk_file_chooser_widget_get_type
|
||||
gtk_file_filter_get_type
|
||||
gtk_fixed_get_type
|
||||
gtk_font_button_get_type
|
||||
gtk_font_chooser_get_type
|
||||
gtk_font_chooser_dialog_get_type
|
||||
gtk_font_chooser_widget_get_type
|
||||
gtk_font_selection_dialog_get_type
|
||||
gtk_font_selection_get_type
|
||||
gtk_frame_get_type
|
||||
|
||||
@@ -704,8 +704,8 @@ cairo_arc (cr, 1.5, 1.5, 1.5, 0, 2 * M_PI);
|
||||
cairo_fill (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
pixbuf = gdk_pixbuf_get_from_surface (NULL, s,
|
||||
0, 0, 0, 0,
|
||||
pixbuf = gdk_pixbuf_get_from_surface (s,
|
||||
0, 0,
|
||||
3, 3);
|
||||
|
||||
cairo_surface_destroy (s);
|
||||
|
||||
@@ -9,20 +9,20 @@ DOC_MODULE=gail-libgail-util3
|
||||
DOC_MAIN_SGML_FILE=gail-libgail-util-docs.sgml
|
||||
|
||||
# The directory containing the source code (if it contains documentation).
|
||||
DOC_SOURCE_DIR=../../../modules/other/gail/libgail-util
|
||||
DOC_SOURCE_DIR=../../../libgail-util
|
||||
|
||||
# Used for dependencies
|
||||
HFILE_GLOB = $(top_srcdir)/modules/other/gail/libgail-util/*.h
|
||||
CFILE_GLOB = $(top_srcdir)/modules/other/gail/libgail-util/*.c
|
||||
HFILE_GLOB = $(top_srcdir)/libgail-util/*.h
|
||||
CFILE_GLOB = $(top_srcdir)/libgail-util/*.c
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir) \
|
||||
$(DEP_CFLAGS)
|
||||
|
||||
GTKDOC_LIBS = $(top_builddir)/modules/other/gail/libgail-util/libgailutil.la
|
||||
GTKDOC_LIBS = $(top_builddir)/libgail-util/libgailutil.la
|
||||
|
||||
# gtkdoc-mkdb related varaibles
|
||||
MKDB_OPTIONS =
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_builddir)/gdk \
|
||||
-I$(top_srcdir)/gdk \
|
||||
|
||||
@@ -35,7 +35,7 @@ OLD_EXAMPLES = \
|
||||
tictactoe \
|
||||
wheelbarrow
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/gdk \
|
||||
-I$(top_builddir)/gdk \
|
||||
|
||||
@@ -25,14 +25,13 @@ EXTRA_DIST += \
|
||||
gdk.def \
|
||||
gdkmarshalers.list \
|
||||
gdkwindowimpl.h \
|
||||
makeenums.pl \
|
||||
makefile.msc \
|
||||
gdk.symbols \
|
||||
gdkenumtypes.c.template \
|
||||
gdkenumtypes.h.template \
|
||||
abicheck.sh
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" \
|
||||
-DGDK_COMPILATION \
|
||||
-I$(top_srcdir) \
|
||||
@@ -195,7 +194,7 @@ Gdk_3_0_gir_SCANNERFLAGS = \
|
||||
Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 cairo-1.0
|
||||
Gdk_3_0_gir_LIBS = libgdk-3.la
|
||||
Gdk_3_0_gir_FILES = $(introspection_files)
|
||||
Gdk_3_0_gir_CFLAGS = $(INCLUDES)
|
||||
Gdk_3_0_gir_CFLAGS = $(AM_CPPFLAGS)
|
||||
Gdk_3_0_gir_EXPORT_PACKAGES = gdk-3.0
|
||||
INTROSPECTION_GIRS += Gdk-3.0.gir
|
||||
|
||||
@@ -248,7 +247,7 @@ GdkX11_3_0_gir_SCANNERFLAGS = \
|
||||
GdkX11_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 xlib-2.0
|
||||
GdkX11_3_0_gir_LIBS = libgdk-3.la
|
||||
GdkX11_3_0_gir_FILES = $(x11_introspection_files)
|
||||
GdkX11_3_0_gir_CFLAGS = $(INCLUDES) -L$(top_builddir)/gdk
|
||||
GdkX11_3_0_gir_CFLAGS = $(AM_CPPFLAGS) -L$(top_builddir)/gdk
|
||||
GdkX11_3_0_gir_EXPORT_PACKAGES = gdk-x11-3.0
|
||||
INTROSPECTION_GIRS += GdkX11-3.0.gir
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ include $(top_srcdir)/Makefile.decl
|
||||
libgdkincludedir = $(includedir)/gtk-3.0/gdk
|
||||
libgdkbroadwayincludedir = $(includedir)/gtk-3.0/gdk/broadway
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" \
|
||||
-DGDK_COMPILATION \
|
||||
-I$(top_srcdir) \
|
||||
|
||||
@@ -87,19 +87,6 @@ gdk_broadway_display_manager_lookup_keyval (GdkDisplayManager *manager,
|
||||
return _gdk_keyval_from_name (name);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_broadway_display_manager_keyval_convert_case (GdkDisplayManager *manager,
|
||||
guint symbol,
|
||||
guint *lower,
|
||||
guint *upper)
|
||||
{
|
||||
/* FIXME implement this */
|
||||
if (lower)
|
||||
*lower = symbol;
|
||||
if (upper)
|
||||
*upper = symbol;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_broadway_display_manager_init (GdkBroadwayDisplayManager *manager)
|
||||
{
|
||||
@@ -129,7 +116,6 @@ gdk_broadway_display_manager_class_init (GdkBroadwayDisplayManagerClass *class)
|
||||
manager_class->get_atom_name = _gdk_broadway_display_manager_get_atom_name;
|
||||
manager_class->lookup_keyval = gdk_broadway_display_manager_lookup_keyval;
|
||||
manager_class->get_keyval_name = gdk_broadway_display_manager_get_keyval_name;
|
||||
manager_class->keyval_convert_case = gdk_broadway_display_manager_keyval_convert_case;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -156,10 +156,15 @@ gdk_event_copy
|
||||
gdk_event_free
|
||||
gdk_event_get
|
||||
gdk_event_get_axis
|
||||
gdk_event_get_button
|
||||
gdk_event_get_click_count
|
||||
gdk_event_get_coords
|
||||
gdk_event_get_device
|
||||
gdk_event_get_keycode
|
||||
gdk_event_get_keyval
|
||||
gdk_event_get_root_coords
|
||||
gdk_event_get_screen
|
||||
gdk_event_get_scroll_direction
|
||||
gdk_event_get_source_device
|
||||
gdk_event_get_state
|
||||
gdk_event_get_time
|
||||
@@ -513,7 +518,9 @@ gdk_x11_cursor_get_type
|
||||
gdk_x11_cursor_get_xcursor
|
||||
gdk_x11_cursor_get_xdisplay
|
||||
gdk_x11_device_core_get_type
|
||||
gdk_x11_device_get_id
|
||||
gdk_x11_device_manager_core_get_type
|
||||
gdk_x11_device_manager_lookup
|
||||
gdk_x11_device_manager_xi2_get_type
|
||||
gdk_x11_device_manager_xi_get_type
|
||||
gdk_x11_device_xi2_get_type
|
||||
|
||||
@@ -1275,9 +1275,14 @@ gdk_display_pointer_is_grabbed (GdkDisplay *display)
|
||||
|
||||
if (gdk_device_get_source (device) == GDK_SOURCE_MOUSE &&
|
||||
gdk_display_device_is_grabbed (display, device))
|
||||
return TRUE;
|
||||
{
|
||||
g_list_free (devices);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free (devices);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "gdkconfig.h"
|
||||
#include "gdkdisplaymanagerprivate.h"
|
||||
#include "gdkinternals.h"
|
||||
#include "gdkkeysprivate.h"
|
||||
#include "gdkmarshalers.h"
|
||||
#include "gdkintl.h"
|
||||
|
||||
@@ -136,6 +137,8 @@ gdk_display_manager_class_init (GdkDisplayManagerClass *klass)
|
||||
object_class->set_property = gdk_display_manager_set_property;
|
||||
object_class->get_property = gdk_display_manager_get_property;
|
||||
|
||||
klass->keyval_convert_case = _gdk_display_manager_real_keyval_convert_case;
|
||||
|
||||
/**
|
||||
* GdkDisplayManager::display-opened:
|
||||
* @manager: the object on which the signal is emitted
|
||||
|
||||
186
gdk/gdkevents.c
186
gdk/gdkevents.c
@@ -949,6 +949,192 @@ gdk_event_get_root_coords (const GdkEvent *event,
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_button:
|
||||
* @event: a #GdkEvent
|
||||
* @button: (out): location to store mouse button number
|
||||
*
|
||||
* Extract the button number from an event.
|
||||
*
|
||||
* Return value: %TRUE if the event delivered a button number
|
||||
*
|
||||
* Since: 3.2
|
||||
**/
|
||||
gboolean
|
||||
gdk_event_get_button (const GdkEvent *event,
|
||||
guint *button)
|
||||
{
|
||||
gboolean fetched = TRUE;
|
||||
guint number = 0;
|
||||
|
||||
g_return_val_if_fail (event != NULL, FALSE);
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_BUTTON_PRESS:
|
||||
case GDK_2BUTTON_PRESS:
|
||||
case GDK_3BUTTON_PRESS:
|
||||
case GDK_BUTTON_RELEASE:
|
||||
number = event->button.button;
|
||||
break;
|
||||
default:
|
||||
fetched = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (button)
|
||||
*button = number;
|
||||
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_click_count:
|
||||
* @event: a #GdkEvent
|
||||
* @click_count: (out): location to store click count
|
||||
*
|
||||
* Extracts the click count from an event.
|
||||
*
|
||||
* Return value: %TRUE if the event delivered a click count
|
||||
*
|
||||
* Since: 3.2
|
||||
*/
|
||||
gboolean
|
||||
gdk_event_get_click_count (const GdkEvent *event,
|
||||
guint *click_count)
|
||||
{
|
||||
gboolean fetched = TRUE;
|
||||
guint number = 0;
|
||||
|
||||
g_return_val_if_fail (event != NULL, FALSE);
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_BUTTON_PRESS:
|
||||
case GDK_BUTTON_RELEASE:
|
||||
number = 1;
|
||||
break;
|
||||
case GDK_2BUTTON_PRESS:
|
||||
number = 2;
|
||||
break;
|
||||
case GDK_3BUTTON_PRESS:
|
||||
number = 3;
|
||||
break;
|
||||
default:
|
||||
fetched = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (click_count)
|
||||
*click_count = number;
|
||||
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_keyval:
|
||||
* @event: a #GdkEvent
|
||||
* @keyval: (out): location to store the keyval
|
||||
*
|
||||
* Extracts the keyval from an event.
|
||||
*
|
||||
* Return value: %TRUE if the event delivered a key symbol
|
||||
*
|
||||
* Since: 3.2
|
||||
*/
|
||||
gboolean
|
||||
gdk_event_get_keyval (const GdkEvent *event,
|
||||
guint *keyval)
|
||||
{
|
||||
gboolean fetched = TRUE;
|
||||
guint number = 0;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_KEY_PRESS:
|
||||
case GDK_KEY_RELEASE:
|
||||
number = event->key.keyval;
|
||||
break;
|
||||
default:
|
||||
fetched = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (keyval)
|
||||
*keyval = number;
|
||||
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_keycode:
|
||||
* @event: a #GdkEvent
|
||||
* @keycode: (out): location to store the keycode
|
||||
*
|
||||
* Extracts the hardware keycode from an event.
|
||||
*
|
||||
* Return value: %TRUE if the event delivered a hardware keycode
|
||||
*
|
||||
* Since: 3.2
|
||||
*/
|
||||
gboolean
|
||||
gdk_event_get_keycode (const GdkEvent *event,
|
||||
guint16 *keycode)
|
||||
{
|
||||
gboolean fetched = TRUE;
|
||||
guint16 number = 0;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_KEY_PRESS:
|
||||
case GDK_KEY_RELEASE:
|
||||
number = event->key.hardware_keycode;
|
||||
break;
|
||||
default:
|
||||
fetched = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (keycode)
|
||||
*keycode = number;
|
||||
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_scroll_direction:
|
||||
* @event: a #GdkEvent
|
||||
* @direction: (out): location to store the scroll direction
|
||||
*
|
||||
* Extracts the scroll direction from an event.
|
||||
*
|
||||
* Return value: %TRUE if the event delivered a scroll direction
|
||||
*
|
||||
* Since: 3.2
|
||||
*/
|
||||
gboolean
|
||||
gdk_event_get_scroll_direction (const GdkEvent *event,
|
||||
GdkScrollDirection *direction)
|
||||
{
|
||||
gboolean fetched = TRUE;
|
||||
GdkScrollDirection dir = 0;
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_SCROLL:
|
||||
dir = event->scroll.direction;
|
||||
break;
|
||||
default:
|
||||
fetched = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (direction)
|
||||
*direction = dir;
|
||||
|
||||
return fetched;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_event_get_axis:
|
||||
* @event: a #GdkEvent
|
||||
|
||||
@@ -1054,9 +1054,19 @@ gboolean gdk_event_get_state (const GdkEvent *event,
|
||||
gboolean gdk_event_get_coords (const GdkEvent *event,
|
||||
gdouble *x_win,
|
||||
gdouble *y_win);
|
||||
gboolean gdk_event_get_root_coords (const GdkEvent *event,
|
||||
gdouble *x_root,
|
||||
gdouble *y_root);
|
||||
gboolean gdk_event_get_root_coords (const GdkEvent *event,
|
||||
gdouble *x_root,
|
||||
gdouble *y_root);
|
||||
gboolean gdk_event_get_button (const GdkEvent *event,
|
||||
guint *button);
|
||||
gboolean gdk_event_get_click_count (const GdkEvent *event,
|
||||
guint *click_count);
|
||||
gboolean gdk_event_get_keyval (const GdkEvent *event,
|
||||
guint *keyval);
|
||||
gboolean gdk_event_get_keycode (const GdkEvent *event,
|
||||
guint16 *keycode);
|
||||
gboolean gdk_event_get_scroll_direction (const GdkEvent *event,
|
||||
GdkScrollDirection *direction);
|
||||
gboolean gdk_event_get_axis (const GdkEvent *event,
|
||||
GdkAxisUse axis_use,
|
||||
gdouble *value);
|
||||
|
||||
127
gdk/gdkkeys.c
127
gdk/gdkkeys.c
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkkeysprivate.h"
|
||||
#include "gdkdisplay.h"
|
||||
#include "gdkdisplaymanagerprivate.h"
|
||||
@@ -649,3 +650,129 @@ gdk_keyval_from_name (const gchar *keyval_name)
|
||||
return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->lookup_keyval (manager,
|
||||
keyval_name);
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_display_manager_real_keyval_convert_case (GdkDisplayManager *manager,
|
||||
guint symbol,
|
||||
guint *lower,
|
||||
guint *upper)
|
||||
{
|
||||
guint xlower = symbol;
|
||||
guint xupper = symbol;
|
||||
|
||||
/* Check for directly encoded 24-bit UCS characters: */
|
||||
if ((symbol & 0xff000000) == 0x01000000)
|
||||
{
|
||||
if (lower)
|
||||
*lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff));
|
||||
if (upper)
|
||||
*upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff));
|
||||
return;
|
||||
}
|
||||
|
||||
switch (symbol >> 8)
|
||||
{
|
||||
case 0: /* Latin 1 */
|
||||
if ((symbol >= GDK_KEY_A) && (symbol <= GDK_KEY_Z))
|
||||
xlower += (GDK_KEY_a - GDK_KEY_A);
|
||||
else if ((symbol >= GDK_KEY_a) && (symbol <= GDK_KEY_z))
|
||||
xupper -= (GDK_KEY_a - GDK_KEY_A);
|
||||
else if ((symbol >= GDK_KEY_Agrave) && (symbol <= GDK_KEY_Odiaeresis))
|
||||
xlower += (GDK_KEY_agrave - GDK_KEY_Agrave);
|
||||
else if ((symbol >= GDK_KEY_agrave) && (symbol <= GDK_KEY_odiaeresis))
|
||||
xupper -= (GDK_KEY_agrave - GDK_KEY_Agrave);
|
||||
else if ((symbol >= GDK_KEY_Ooblique) && (symbol <= GDK_KEY_Thorn))
|
||||
xlower += (GDK_KEY_oslash - GDK_KEY_Ooblique);
|
||||
else if ((symbol >= GDK_KEY_oslash) && (symbol <= GDK_KEY_thorn))
|
||||
xupper -= (GDK_KEY_oslash - GDK_KEY_Ooblique);
|
||||
break;
|
||||
|
||||
case 1: /* Latin 2 */
|
||||
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||
if (symbol == GDK_KEY_Aogonek)
|
||||
xlower = GDK_KEY_aogonek;
|
||||
else if (symbol >= GDK_KEY_Lstroke && symbol <= GDK_KEY_Sacute)
|
||||
xlower += (GDK_KEY_lstroke - GDK_KEY_Lstroke);
|
||||
else if (symbol >= GDK_KEY_Scaron && symbol <= GDK_KEY_Zacute)
|
||||
xlower += (GDK_KEY_scaron - GDK_KEY_Scaron);
|
||||
else if (symbol >= GDK_KEY_Zcaron && symbol <= GDK_KEY_Zabovedot)
|
||||
xlower += (GDK_KEY_zcaron - GDK_KEY_Zcaron);
|
||||
else if (symbol == GDK_KEY_aogonek)
|
||||
xupper = GDK_KEY_Aogonek;
|
||||
else if (symbol >= GDK_KEY_lstroke && symbol <= GDK_KEY_sacute)
|
||||
xupper -= (GDK_KEY_lstroke - GDK_KEY_Lstroke);
|
||||
else if (symbol >= GDK_KEY_scaron && symbol <= GDK_KEY_zacute)
|
||||
xupper -= (GDK_KEY_scaron - GDK_KEY_Scaron);
|
||||
else if (symbol >= GDK_KEY_zcaron && symbol <= GDK_KEY_zabovedot)
|
||||
xupper -= (GDK_KEY_zcaron - GDK_KEY_Zcaron);
|
||||
else if (symbol >= GDK_KEY_Racute && symbol <= GDK_KEY_Tcedilla)
|
||||
xlower += (GDK_KEY_racute - GDK_KEY_Racute);
|
||||
else if (symbol >= GDK_KEY_racute && symbol <= GDK_KEY_tcedilla)
|
||||
xupper -= (GDK_KEY_racute - GDK_KEY_Racute);
|
||||
break;
|
||||
|
||||
case 2: /* Latin 3 */
|
||||
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||
if (symbol >= GDK_KEY_Hstroke && symbol <= GDK_KEY_Hcircumflex)
|
||||
xlower += (GDK_KEY_hstroke - GDK_KEY_Hstroke);
|
||||
else if (symbol >= GDK_KEY_Gbreve && symbol <= GDK_KEY_Jcircumflex)
|
||||
xlower += (GDK_KEY_gbreve - GDK_KEY_Gbreve);
|
||||
else if (symbol >= GDK_KEY_hstroke && symbol <= GDK_KEY_hcircumflex)
|
||||
xupper -= (GDK_KEY_hstroke - GDK_KEY_Hstroke);
|
||||
else if (symbol >= GDK_KEY_gbreve && symbol <= GDK_KEY_jcircumflex)
|
||||
xupper -= (GDK_KEY_gbreve - GDK_KEY_Gbreve);
|
||||
else if (symbol >= GDK_KEY_Cabovedot && symbol <= GDK_KEY_Scircumflex)
|
||||
xlower += (GDK_KEY_cabovedot - GDK_KEY_Cabovedot);
|
||||
else if (symbol >= GDK_KEY_cabovedot && symbol <= GDK_KEY_scircumflex)
|
||||
xupper -= (GDK_KEY_cabovedot - GDK_KEY_Cabovedot);
|
||||
break;
|
||||
|
||||
case 3: /* Latin 4 */
|
||||
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||
if (symbol >= GDK_KEY_Rcedilla && symbol <= GDK_KEY_Tslash)
|
||||
xlower += (GDK_KEY_rcedilla - GDK_KEY_Rcedilla);
|
||||
else if (symbol >= GDK_KEY_rcedilla && symbol <= GDK_KEY_tslash)
|
||||
xupper -= (GDK_KEY_rcedilla - GDK_KEY_Rcedilla);
|
||||
else if (symbol == GDK_KEY_ENG)
|
||||
xlower = GDK_KEY_eng;
|
||||
else if (symbol == GDK_KEY_eng)
|
||||
xupper = GDK_KEY_ENG;
|
||||
else if (symbol >= GDK_KEY_Amacron && symbol <= GDK_KEY_Umacron)
|
||||
xlower += (GDK_KEY_amacron - GDK_KEY_Amacron);
|
||||
else if (symbol >= GDK_KEY_amacron && symbol <= GDK_KEY_umacron)
|
||||
xupper -= (GDK_KEY_amacron - GDK_KEY_Amacron);
|
||||
break;
|
||||
|
||||
case 6: /* Cyrillic */
|
||||
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||
if (symbol >= GDK_KEY_Serbian_DJE && symbol <= GDK_KEY_Serbian_DZE)
|
||||
xlower -= (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje);
|
||||
else if (symbol >= GDK_KEY_Serbian_dje && symbol <= GDK_KEY_Serbian_dze)
|
||||
xupper += (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje);
|
||||
else if (symbol >= GDK_KEY_Cyrillic_YU && symbol <= GDK_KEY_Cyrillic_HARDSIGN)
|
||||
xlower -= (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu);
|
||||
else if (symbol >= GDK_KEY_Cyrillic_yu && symbol <= GDK_KEY_Cyrillic_hardsign)
|
||||
xupper += (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu);
|
||||
break;
|
||||
|
||||
case 7: /* Greek */
|
||||
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||
if (symbol >= GDK_KEY_Greek_ALPHAaccent && symbol <= GDK_KEY_Greek_OMEGAaccent)
|
||||
xlower += (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent);
|
||||
else if (symbol >= GDK_KEY_Greek_alphaaccent && symbol <= GDK_KEY_Greek_omegaaccent &&
|
||||
symbol != GDK_KEY_Greek_iotaaccentdieresis &&
|
||||
symbol != GDK_KEY_Greek_upsilonaccentdieresis)
|
||||
xupper -= (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent);
|
||||
else if (symbol >= GDK_KEY_Greek_ALPHA && symbol <= GDK_KEY_Greek_OMEGA)
|
||||
xlower += (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA);
|
||||
else if (symbol >= GDK_KEY_Greek_alpha && symbol <= GDK_KEY_Greek_omega &&
|
||||
symbol != GDK_KEY_Greek_finalsmallsigma)
|
||||
xupper -= (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA);
|
||||
break;
|
||||
}
|
||||
|
||||
if (lower)
|
||||
*lower = xlower;
|
||||
if (upper)
|
||||
*upper = xupper;
|
||||
}
|
||||
|
||||
@@ -106,15 +106,6 @@ gboolean gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
|
||||
guint **keyvals,
|
||||
gint *n_entries);
|
||||
|
||||
/**
|
||||
* gdk_keymap_get_direction:
|
||||
* @keymap: a #GdkKeymap or %NULL to use the default keymap.
|
||||
*
|
||||
* Returns the direction of the keymap.
|
||||
*
|
||||
* Returns: the direction of the keymap, %PANGO_DIRECTION_LTR or
|
||||
* %PANGO_DIRECTION_RTL.
|
||||
*/
|
||||
PangoDirection gdk_keymap_get_direction (GdkKeymap *keymap);
|
||||
gboolean gdk_keymap_have_bidi_layouts (GdkKeymap *keymap);
|
||||
gboolean gdk_keymap_get_caps_lock_state (GdkKeymap *keymap);
|
||||
@@ -128,15 +119,6 @@ gboolean gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
|
||||
*/
|
||||
gchar* gdk_keyval_name (guint keyval) G_GNUC_CONST;
|
||||
|
||||
/**
|
||||
* gdk_keyval_from_name:
|
||||
* @keyval_name: a key name.
|
||||
*
|
||||
* Converts a key name to a key value.
|
||||
*
|
||||
* Returns: the corresponding key value, or %GDK_VoidSymbol if the key name is
|
||||
* not a valid key.
|
||||
*/
|
||||
guint gdk_keyval_from_name (const gchar *keyval_name);
|
||||
void gdk_keyval_convert_case (guint symbol,
|
||||
guint *lower,
|
||||
|
||||
@@ -75,6 +75,11 @@ struct _GdkKeymap
|
||||
GdkDisplay *display;
|
||||
};
|
||||
|
||||
void _gdk_display_manager_real_keyval_convert_case (GdkDisplayManager *manager,
|
||||
guint symbol,
|
||||
guint *lower,
|
||||
guint *upper);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
@@ -690,6 +690,12 @@ gdk_offscreen_window_set_string (GdkWindow *window,
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_offscreen_window_set_list (GdkWindow *window,
|
||||
GList *list)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_offscreen_window_set_wmfunctions (GdkWindow *window,
|
||||
GdkWMFunction functions)
|
||||
@@ -763,8 +769,8 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
|
||||
impl_class->set_override_redirect = NULL;
|
||||
impl_class->set_accept_focus = NULL;
|
||||
impl_class->set_focus_on_map = gdk_offscreen_window_set_boolean;
|
||||
impl_class->set_icon_list = NULL;
|
||||
impl_class->set_icon_name = NULL;
|
||||
impl_class->set_icon_list = gdk_offscreen_window_set_list;
|
||||
impl_class->set_icon_name = gdk_offscreen_window_set_string;
|
||||
impl_class->iconify = gdk_offscreen_window_do_nothing;
|
||||
impl_class->deiconify = gdk_offscreen_window_do_nothing;
|
||||
impl_class->stick = gdk_offscreen_window_do_nothing;
|
||||
|
||||
@@ -356,12 +356,11 @@ gdk_pango_context_get_for_screen (GdkScreen *screen)
|
||||
PangoContext *context;
|
||||
const cairo_font_options_t *options;
|
||||
double dpi;
|
||||
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
|
||||
|
||||
fontmap = pango_cairo_font_map_get_default ();
|
||||
|
||||
context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
|
||||
context = pango_font_map_create_context (fontmap);
|
||||
|
||||
options = gdk_screen_get_font_options (screen);
|
||||
pango_cairo_context_set_font_options (context, options);
|
||||
|
||||
@@ -287,13 +287,14 @@ gdk_screen_get_monitor_at_point (GdkScreen *screen,
|
||||
* gdk_screen_get_monitor_at_window:
|
||||
* @screen: a #GdkScreen.
|
||||
* @window: a #GdkWindow
|
||||
* @returns: the monitor number in which most of @window is located,
|
||||
* or if @window does not intersect any monitors, a monitor,
|
||||
* close to @window.
|
||||
*
|
||||
* Returns the number of the monitor in which the largest area of the
|
||||
* Returns the number of the monitor in which the largest area of the
|
||||
* bounding rectangle of @window resides.
|
||||
*
|
||||
* Returns: the monitor number in which most of @window is located,
|
||||
* or if @window does not intersect any monitors, a monitor,
|
||||
* close to @window.
|
||||
*
|
||||
* Since: 2.2
|
||||
**/
|
||||
gint
|
||||
|
||||
@@ -2043,7 +2043,7 @@ gdk_window_destroy (GdkWindow *window)
|
||||
/**
|
||||
* gdk_window_set_user_data:
|
||||
* @window: a #GdkWindow
|
||||
* @user_data: (allow-none): user data
|
||||
* @user_data: (allow-none) (type GObject.Object): user data
|
||||
*
|
||||
* For most purposes this function is deprecated in favor of
|
||||
* g_object_set_data(). However, for historical reasons GTK+ stores
|
||||
@@ -2408,9 +2408,6 @@ gdk_window_peek_children (GdkWindow *window)
|
||||
* doing. Pass %NULL for @window to get all events for all windows,
|
||||
* instead of events for a specific window.
|
||||
*
|
||||
* See gdk_display_add_client_message_filter() if you are interested
|
||||
* in X ClientMessage events.
|
||||
*
|
||||
* If you are interested in X GenericEvents, bear in mind that
|
||||
* XGetEventData() has been already called on the event, and
|
||||
* XFreeEventData() must not be called within @function.
|
||||
@@ -10705,7 +10702,7 @@ gdk_drag_begin_for_device (GdkWindow *window,
|
||||
void
|
||||
gdk_test_render_sync (GdkWindow *window)
|
||||
{
|
||||
return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->sync_rendering (window);
|
||||
GDK_WINDOW_IMPL_GET_CLASS (window->impl)->sync_rendering (window);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
279
gdk/makeenums.pl
279
gdk/makeenums.pl
@@ -1,279 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# Information about the current enumeration
|
||||
|
||||
my $flags; # Is enumeration a bitmask
|
||||
my $seenbitshift; # Have we seen bitshift operators?
|
||||
my $prefix; # Prefix for this enumeration
|
||||
my $enumname; # Name for this enumeration
|
||||
my $firstenum = 1; # Is this the first enumeration in file?
|
||||
my @entries; # [ $name, $val ] for each entry
|
||||
|
||||
sub parse_options {
|
||||
my $opts = shift;
|
||||
my @opts;
|
||||
|
||||
for $opt (split /\s*,\s*/, $opts) {
|
||||
my ($key,$val) = $opt =~ /\s*(\w+)(?:=(\S+))?/;
|
||||
defined $val or $val = 1;
|
||||
push @opts, $key, $val;
|
||||
}
|
||||
@opts;
|
||||
}
|
||||
sub parse_entries {
|
||||
my $file = shift;
|
||||
|
||||
while (<$file>) {
|
||||
# Read lines until we have no open comments
|
||||
while (m@/\*
|
||||
([^*]|\*(?!/))*$
|
||||
@x) {
|
||||
my $new;
|
||||
defined ($new = <$file>) || die "Unmatched comment";
|
||||
$_ .= $new;
|
||||
}
|
||||
# Now strip comments
|
||||
s@/\*(?!<)
|
||||
([^*]+|\*(?!/))*
|
||||
\*/@@gx;
|
||||
|
||||
s@\n@ @;
|
||||
|
||||
next if m@^\s*$@;
|
||||
|
||||
# Handle include files
|
||||
if (/^\#include\s*<([^>]*)>/ ) {
|
||||
my $file= "../$1";
|
||||
open NEWFILE, $file or die "Cannot open include file $file: $!\n";
|
||||
|
||||
if (parse_entries (\*NEWFILE)) {
|
||||
return 1;
|
||||
} else {
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
if (/^\s*\}\s*(\w+)/) {
|
||||
$enumname = $1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (m@^\s*
|
||||
(\w+)\s* # name
|
||||
(?:=( # value
|
||||
(?:[^,/]|/(?!\*))*
|
||||
))?,?\s*
|
||||
(?:/\*< # options
|
||||
(([^*]|\*(?!/))*)
|
||||
>\*/)?
|
||||
\s*$
|
||||
@x) {
|
||||
my ($name, $value, $options) = ($1,$2,$3);
|
||||
|
||||
if (!defined $flags && defined $value && $value =~ /<</) {
|
||||
$seenbitshift = 1;
|
||||
}
|
||||
if (defined $options) {
|
||||
my %options = parse_options($options);
|
||||
if (!defined $options{skip}) {
|
||||
push @entries, [ $name, $options{nick} ];
|
||||
}
|
||||
} else {
|
||||
push @entries, [ $name ];
|
||||
}
|
||||
} else {
|
||||
print STDERR "Can't understand: $_\n";
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
my $gen_arrays = 0;
|
||||
my $gen_defs = 0;
|
||||
my $gen_includes = 0;
|
||||
my $gen_cfile = 0;
|
||||
|
||||
# Parse arguments
|
||||
|
||||
if (@ARGV) {
|
||||
if ($ARGV[0] eq "arrays") {
|
||||
shift @ARGV;
|
||||
$gen_arrays = 1;
|
||||
} elsif ($ARGV[0] eq "defs") {
|
||||
shift @ARGV;
|
||||
$gen_defs = 1;
|
||||
} elsif ($ARGV[0] eq "include") {
|
||||
shift @ARGV;
|
||||
$gen_includes = 1;
|
||||
} elsif ($ARGV[0] eq "cfile") {
|
||||
shift @ARGV;
|
||||
$gen_cfile = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($gen_defs) {
|
||||
print ";; generated by makeenums.pl ; -*- scheme -*-\n\n";
|
||||
} else {
|
||||
print "/* Generated by makeenums.pl */\n\n";
|
||||
}
|
||||
|
||||
if ($gen_includes) {
|
||||
print "#ifndef __GDK_ENUM_TYPES_H__\n";
|
||||
print "#define __GDK_ENUM_TYPES_H__\n";
|
||||
}
|
||||
|
||||
if ($gen_cfile) {
|
||||
print "#include \"gdk.h\"\n";
|
||||
}
|
||||
|
||||
ENUMERATION:
|
||||
while (<>) {
|
||||
if (eof) {
|
||||
close (ARGV); # reset line numbering
|
||||
$firstenum = 1; # Flag to print filename at next enum
|
||||
}
|
||||
|
||||
if (m@^\s*typedef\s+enum\s*
|
||||
({)?\s*
|
||||
(?:/\*<
|
||||
(([^*]|\*(?!/))*)
|
||||
>\*/)?
|
||||
@x) {
|
||||
print "\n";
|
||||
if (defined $2) {
|
||||
my %options = parse_options($2);
|
||||
$prefix = $options{prefix};
|
||||
$flags = $options{flags};
|
||||
} else {
|
||||
$prefix = undef;
|
||||
$flags = undef;
|
||||
}
|
||||
# Didn't have trailing '{' look on next lines
|
||||
if (!defined $1) {
|
||||
while (<>) {
|
||||
if (s/^\s*\{//) {
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$seenbitshift = 0;
|
||||
@entries = ();
|
||||
|
||||
# Now parse the entries
|
||||
parse_entries (\*ARGV);
|
||||
|
||||
# figure out if this was a flags or enums enumeration
|
||||
|
||||
if (!defined $flags) {
|
||||
$flags = $seenbitshift;
|
||||
}
|
||||
|
||||
# Autogenerate a prefix
|
||||
|
||||
if (!defined $prefix) {
|
||||
for (@entries) {
|
||||
my $name = $_->[0];
|
||||
if (defined $prefix) {
|
||||
my $tmp = ~ ($name ^ $prefix);
|
||||
($tmp) = $tmp =~ /(^\xff*)/;
|
||||
$prefix = $prefix & $tmp;
|
||||
} else {
|
||||
$prefix = $name;
|
||||
}
|
||||
}
|
||||
# Trim so that it ends in an underscore
|
||||
$prefix =~ s/_[^_]*$/_/;
|
||||
}
|
||||
|
||||
for $entry (@entries) {
|
||||
my ($name,$nick) = @{$entry};
|
||||
if (!defined $nick) {
|
||||
($nick = $name) =~ s/^$prefix//;
|
||||
$nick =~ tr/_/-/;
|
||||
$nick = lc($nick);
|
||||
@{$entry} = ($name, $nick);
|
||||
}
|
||||
}
|
||||
|
||||
# Spit out the output
|
||||
|
||||
my $valuename = $enumname;
|
||||
$valuename =~ s/([^A-Z])([A-Z])/$1_$2/g;
|
||||
$valuename =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
|
||||
$valuename = lc($valuename);
|
||||
|
||||
my $typemacro = $enumname;
|
||||
$typemacro =~ s/([^A-Z])([A-Z])/$1_$2/g;
|
||||
$typemacro =~ s/([A-Z][A-Z])([A-Z][0-9a-z])/$1_$2/g;
|
||||
$typemacro = uc($valuename);
|
||||
$typemacro =~ s/GDK_/GDK_TYPE_/g;
|
||||
|
||||
if ($gen_defs) {
|
||||
if ($firstenum) {
|
||||
print qq(\n; enumerations from "$ARGV"\n);
|
||||
$firstenum = 0;
|
||||
}
|
||||
|
||||
print "\n(define-".($flags ? "flags" : "enum")." $enumname";
|
||||
|
||||
for (@entries) {
|
||||
my ($name,$nick) = @{$_};
|
||||
print "\n ($nick $name)";
|
||||
}
|
||||
print ")\n";
|
||||
|
||||
} elsif ($gen_arrays) {
|
||||
|
||||
print "static const GtkEnumValue _${valuename}_values[] = {\n";
|
||||
for (@entries) {
|
||||
my ($name,$nick) = @{$_};
|
||||
print qq( { $name, "$name", "$nick" },\n);
|
||||
}
|
||||
print " { 0, NULL, NULL }\n";
|
||||
print "};\n";
|
||||
} elsif ($gen_includes) {
|
||||
print "GType ${valuename}_get_type (void);\n";
|
||||
print "#define ${typemacro} ${valuename}_get_type ()\n";
|
||||
} elsif ($gen_cfile) {
|
||||
print (<<EOF);
|
||||
GType
|
||||
${valuename}_get_type (void)
|
||||
{
|
||||
static GType etype = 0;
|
||||
if (etype == 0)
|
||||
{
|
||||
EOF
|
||||
if ($flags) {
|
||||
print " static const GFlagsValue values[] = {\n";
|
||||
} else {
|
||||
print " static const GEnumValue values[] = {\n";
|
||||
}
|
||||
for (@entries) {
|
||||
my ($name,$nick) = @{$_};
|
||||
print qq( { $name, "$name", "$nick" },\n);
|
||||
}
|
||||
print " { 0, NULL, NULL }\n";
|
||||
print " };\n";
|
||||
|
||||
if ($flags) {
|
||||
print " etype = g_flags_register_static (\"$enumname\", values);\n";
|
||||
} else {
|
||||
print " etype = g_enum_register_static (\"$enumname\", values);\n";
|
||||
}
|
||||
|
||||
print (<<EOF);
|
||||
}
|
||||
return etype;
|
||||
}
|
||||
EOF
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($gen_includes) {
|
||||
print "#endif /* __GDK_ENUMS_H__ */\n";
|
||||
}
|
||||
@@ -165,6 +165,11 @@
|
||||
window->width = content_rect.size.width;
|
||||
window->height = content_rect.size.height;
|
||||
|
||||
/* Certain resize operations (e.g. going fullscreen), also move the
|
||||
* origin of the window.
|
||||
*/
|
||||
_gdk_quartz_window_update_position (window);
|
||||
|
||||
[[self contentView] setFrame:NSMakeRect (0, 0, window->width, window->height)];
|
||||
|
||||
_gdk_window_update_size (window);
|
||||
|
||||
@@ -3,7 +3,7 @@ include $(top_srcdir)/Makefile.decl
|
||||
libgdkincludedir = $(includedir)/gtk-3.0/gdk
|
||||
libgdkquartzincludedir = $(includedir)/gtk-3.0/gdk/quartz
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" \
|
||||
-DGDK_COMPILATION \
|
||||
-I$(top_srcdir) \
|
||||
|
||||
@@ -214,7 +214,8 @@ gdk_quartz_device_core_query_state_helper (GdkWindow *window,
|
||||
toplevel = gdk_window_get_effective_toplevel (window);
|
||||
|
||||
if (mask)
|
||||
*mask = _gdk_quartz_events_get_current_event_mask ();
|
||||
*mask = _gdk_quartz_events_get_current_keyboard_modifiers () |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
/* Get the y coordinate, needs to be flipped. */
|
||||
if (window == _gdk_root)
|
||||
@@ -267,7 +268,6 @@ gdk_quartz_device_core_query_state (GdkDevice *device,
|
||||
gint *win_y,
|
||||
GdkModifierType *mask)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
GdkWindow *found_window;
|
||||
NSPoint point;
|
||||
gint x_tmp, y_tmp;
|
||||
@@ -275,10 +275,6 @@ gdk_quartz_device_core_query_state (GdkDevice *device,
|
||||
found_window = gdk_quartz_device_core_query_state_helper (window, device,
|
||||
win_x, win_y,
|
||||
mask);
|
||||
if (!found_window)
|
||||
return FALSE;
|
||||
|
||||
display = gdk_window_get_display (window);
|
||||
|
||||
if (root_window)
|
||||
*root_window = _gdk_root;
|
||||
@@ -358,7 +354,8 @@ gdk_quartz_device_core_window_at_position (GdkDevice *device,
|
||||
*win_y = found_window ? y_tmp : -1;
|
||||
|
||||
if (mask)
|
||||
*mask = _gdk_quartz_events_get_current_event_mask ();
|
||||
*mask = _gdk_quartz_events_get_current_keyboard_modifiers () |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
return found_window;
|
||||
}
|
||||
|
||||
@@ -91,19 +91,6 @@ gdk_quartz_display_manager_lookup_keyval (GdkDisplayManager *manager,
|
||||
return _gdk_keyval_from_name (name);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_quartz_display_manager_keyval_convert_case (GdkDisplayManager *manager,
|
||||
guint symbol,
|
||||
guint *lower,
|
||||
guint *upper)
|
||||
{
|
||||
/* FIXME implement this */
|
||||
if (lower)
|
||||
*lower = symbol;
|
||||
if (upper)
|
||||
*upper = symbol;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_quartz_display_manager_init (GdkQuartzDisplayManager *manager)
|
||||
{
|
||||
@@ -144,7 +131,6 @@ gdk_quartz_display_manager_class_init (GdkQuartzDisplayManagerClass *class)
|
||||
manager_class->get_atom_name = _gdk_quartz_display_manager_get_atom_name;
|
||||
manager_class->lookup_keyval = gdk_quartz_display_manager_lookup_keyval;
|
||||
manager_class->get_keyval_name = gdk_quartz_display_manager_get_keyval_name;
|
||||
manager_class->keyval_convert_case = gdk_quartz_display_manager_keyval_convert_case;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -124,7 +124,7 @@ static NSAutoreleasePool *autorelease_pool;
|
||||
* a run loop iteration, so we need to detect that and avoid triggering
|
||||
* our "run the GLib main looop while the run loop is active machinery.
|
||||
*/
|
||||
static gboolean getting_events;
|
||||
static gint getting_events = 0;
|
||||
|
||||
/************************************************************
|
||||
********* Select Thread *********
|
||||
@@ -207,9 +207,12 @@ signal_main_thread (void)
|
||||
*/
|
||||
if (!run_loop_polling_async)
|
||||
CFRunLoopSourceSignal (select_main_thread_source);
|
||||
|
||||
if (CFRunLoopIsWaiting (main_thread_run_loop))
|
||||
CFRunLoopWakeUp (main_thread_run_loop);
|
||||
|
||||
/* Don't check for CFRunLoopIsWaiting() here because it causes a
|
||||
* race condition (the loop could go into waiting state right after
|
||||
* we checked).
|
||||
*/
|
||||
CFRunLoopWakeUp (main_thread_run_loop);
|
||||
}
|
||||
|
||||
static void *
|
||||
@@ -632,17 +635,18 @@ gdk_event_check (GSource *source)
|
||||
|
||||
GDK_THREADS_ENTER ();
|
||||
|
||||
/* Refresh the autorelease pool if we're at the base CFRunLoop level
|
||||
* (indicated by current_loop_level) and the base g_main_loop level
|
||||
* (indicated by g_main_depth()). Messing with the autorelease pool at
|
||||
* any level of nesting can cause access to deallocated memory because
|
||||
* autorelease_pool is static and releasing a pool will cause all
|
||||
* pools allocated inside of it to be released as well.
|
||||
*/
|
||||
/* Refresh the autorelease pool if we're at the base CFRunLoop level
|
||||
* (indicated by current_loop_level) and the base g_main_loop level
|
||||
* (indicated by g_main_depth()). Messing with the autorelease pool at
|
||||
* any level of nesting can cause access to deallocated memory because
|
||||
* autorelease_pool is static and releasing a pool will cause all pools
|
||||
* allocated inside of it to be released as well.
|
||||
*/
|
||||
if (current_loop_level == 0 && g_main_depth() == 0)
|
||||
{
|
||||
if (autorelease_pool)
|
||||
[autorelease_pool release];
|
||||
[autorelease_pool drain];
|
||||
|
||||
autorelease_pool = [[NSAutoreleasePool alloc] init];
|
||||
}
|
||||
|
||||
@@ -710,12 +714,12 @@ poll_func (GPollFD *ufds,
|
||||
else
|
||||
limit_date = [NSDate dateWithTimeIntervalSinceNow:timeout_/1000.0];
|
||||
|
||||
getting_events = TRUE;
|
||||
getting_events++;
|
||||
event = [NSApp nextEventMatchingMask: NSAnyEventMask
|
||||
untilDate: limit_date
|
||||
inMode: NSDefaultRunLoopMode
|
||||
dequeue: YES];
|
||||
getting_events = FALSE;
|
||||
getting_events--;
|
||||
|
||||
if (n_ready < 0)
|
||||
n_ready = select_thread_collect_poll (ufds, nfds);
|
||||
@@ -776,8 +780,6 @@ query_main_context (GMainContext *context,
|
||||
static void
|
||||
run_loop_entry (void)
|
||||
{
|
||||
current_loop_level++;
|
||||
|
||||
if (acquired_loop_level == -1)
|
||||
{
|
||||
if (g_main_context_acquire (NULL))
|
||||
@@ -926,16 +928,13 @@ run_loop_after_waiting (void)
|
||||
static void
|
||||
run_loop_exit (void)
|
||||
{
|
||||
g_return_if_fail (current_loop_level > 0);
|
||||
|
||||
if (current_loop_level == acquired_loop_level)
|
||||
/* + 1 because we decrement current_loop_level separately in observer_callback() */
|
||||
if ((current_loop_level + 1) == acquired_loop_level)
|
||||
{
|
||||
g_main_context_release (NULL);
|
||||
acquired_loop_level = -1;
|
||||
GDK_NOTE (EVENTLOOP, g_print ("EventLoop: Ended tracking run loop activity\n"));
|
||||
}
|
||||
|
||||
current_loop_level--;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -943,9 +942,22 @@ run_loop_observer_callback (CFRunLoopObserverRef observer,
|
||||
CFRunLoopActivity activity,
|
||||
void *info)
|
||||
{
|
||||
if (getting_events) /* Activity we triggered */
|
||||
switch (activity)
|
||||
{
|
||||
case kCFRunLoopEntry:
|
||||
current_loop_level++;
|
||||
break;
|
||||
case kCFRunLoopExit:
|
||||
g_return_if_fail (current_loop_level > 0);
|
||||
current_loop_level--;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (getting_events > 0) /* Activity we triggered */
|
||||
return;
|
||||
|
||||
|
||||
switch (activity)
|
||||
{
|
||||
case kCFRunLoopEntry:
|
||||
|
||||
@@ -33,12 +33,14 @@
|
||||
|
||||
#include "gdkscreen.h"
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkquartz.h"
|
||||
#include "gdkquartzdisplay.h"
|
||||
#include "gdkprivate-quartz.h"
|
||||
#include "gdkquartzdevicemanager-core.h"
|
||||
|
||||
#define GRIP_WIDTH 15
|
||||
#define GRIP_HEIGHT 15
|
||||
#define GDK_LION_RESIZE 5
|
||||
|
||||
#define WINDOW_IS_TOPLEVEL(window) \
|
||||
(GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && \
|
||||
@@ -48,9 +50,6 @@
|
||||
/* This is the window corresponding to the key window */
|
||||
static GdkWindow *current_keyboard_window;
|
||||
|
||||
/* This is the event mask and button state from the last event */
|
||||
static GdkEventMask current_event_mask;
|
||||
static int current_button_state;
|
||||
|
||||
static void append_event (GdkEvent *event,
|
||||
gboolean windowing);
|
||||
@@ -193,6 +192,25 @@ get_mouse_button_from_ns_event (NSEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
static GdkModifierType
|
||||
get_mouse_button_modifiers_from_ns_buttons (NSUInteger nsbuttons)
|
||||
{
|
||||
GdkModifierType modifiers = 0;
|
||||
|
||||
if (nsbuttons & (1 << 0))
|
||||
modifiers |= GDK_BUTTON1_MASK;
|
||||
if (nsbuttons & (1 << 1))
|
||||
modifiers |= GDK_BUTTON3_MASK;
|
||||
if (nsbuttons & (1 << 2))
|
||||
modifiers |= GDK_BUTTON2_MASK;
|
||||
if (nsbuttons & (1 << 3))
|
||||
modifiers |= GDK_BUTTON4_MASK;
|
||||
if (nsbuttons & (1 << 4))
|
||||
modifiers |= GDK_BUTTON5_MASK;
|
||||
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
static GdkModifierType
|
||||
get_mouse_button_modifiers_from_ns_event (NSEvent *event)
|
||||
{
|
||||
@@ -208,25 +226,30 @@ get_mouse_button_modifiers_from_ns_event (NSEvent *event)
|
||||
}
|
||||
|
||||
static GdkModifierType
|
||||
get_keyboard_modifiers_from_ns_event (NSEvent *nsevent)
|
||||
get_keyboard_modifiers_from_ns_flags (NSUInteger nsflags)
|
||||
{
|
||||
GdkModifierType modifiers = 0;
|
||||
int nsflags;
|
||||
|
||||
nsflags = [nsevent modifierFlags];
|
||||
|
||||
if (nsflags & NSAlphaShiftKeyMask)
|
||||
modifiers |= GDK_LOCK_MASK;
|
||||
if (nsflags & NSShiftKeyMask)
|
||||
modifiers |= GDK_SHIFT_MASK;
|
||||
if (nsflags & NSControlKeyMask)
|
||||
modifiers |= GDK_CONTROL_MASK;
|
||||
if (nsflags & NSCommandKeyMask)
|
||||
if (nsflags & NSAlternateKeyMask)
|
||||
modifiers |= GDK_MOD1_MASK;
|
||||
if (nsflags & NSCommandKeyMask)
|
||||
modifiers |= GDK_MOD2_MASK;
|
||||
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
static GdkModifierType
|
||||
get_keyboard_modifiers_from_ns_event (NSEvent *nsevent)
|
||||
{
|
||||
return get_keyboard_modifiers_from_ns_flags ([nsevent modifierFlags]);
|
||||
}
|
||||
|
||||
/* Return an event mask from an NSEvent */
|
||||
static GdkEventMask
|
||||
get_event_mask_from_ns_event (NSEvent *nsevent)
|
||||
@@ -357,7 +380,8 @@ generate_motion_event (GdkWindow *window)
|
||||
event->motion.x_root = x_root;
|
||||
event->motion.y_root = y_root;
|
||||
/* FIXME event->axes */
|
||||
event->motion.state = 0;
|
||||
event->motion.state = _gdk_quartz_events_get_current_keyboard_modifiers () |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = _gdk_display->core_pointer;
|
||||
|
||||
@@ -442,7 +466,8 @@ _gdk_quartz_events_send_enter_notify_event (GdkWindow *window)
|
||||
event->crossing.y_root = y_root;
|
||||
event->crossing.mode = GDK_CROSSING_NORMAL;
|
||||
event->crossing.detail = GDK_NOTIFY_ANCESTOR;
|
||||
event->crossing.state = 0;
|
||||
event->crossing.state = _gdk_quartz_events_get_current_keyboard_modifiers () |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
gdk_event_set_device (event, _gdk_display->core_pointer);
|
||||
|
||||
@@ -647,30 +672,6 @@ find_toplevel_for_mouse_event (NSEvent *nsevent,
|
||||
|
||||
toplevel_impl = (GdkWindowImplQuartz *)toplevel->impl;
|
||||
|
||||
if ([toplevel_impl->toplevel showsResizeIndicator])
|
||||
{
|
||||
NSRect frame;
|
||||
|
||||
/* If the resize indicator is visible and the event
|
||||
* is in the lower right 15x15 corner, we leave these
|
||||
* events to Cocoa as to be handled as resize events.
|
||||
* Applications may have widgets in this area. These
|
||||
* will most likely be larger than 15x15 and for
|
||||
* scroll bars there are also other means to move
|
||||
* the scroll bar. Since the resize indicator is
|
||||
* the only way of resizing windows on Mac OS, it
|
||||
* is too important to not make functional.
|
||||
*/
|
||||
frame = [toplevel_impl->view bounds];
|
||||
if (x_tmp > frame.size.width - GRIP_WIDTH
|
||||
&& x_tmp < frame.size.width
|
||||
&& y_tmp > frame.size.height - GRIP_HEIGHT
|
||||
&& y_tmp < frame.size.height)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
*x = x_tmp;
|
||||
*y = y_tmp;
|
||||
}
|
||||
@@ -770,7 +771,8 @@ fill_crossing_event (GdkWindow *toplevel,
|
||||
event->crossing.y_root = y_root;
|
||||
event->crossing.mode = mode;
|
||||
event->crossing.detail = detail;
|
||||
event->crossing.state = get_keyboard_modifiers_from_ns_event (nsevent);
|
||||
event->crossing.state = get_keyboard_modifiers_from_ns_event (nsevent) |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
gdk_event_set_device (event, _gdk_display->core_pointer);
|
||||
|
||||
@@ -788,9 +790,9 @@ fill_button_event (GdkWindow *window,
|
||||
{
|
||||
GdkEventType type;
|
||||
gint state;
|
||||
gint button;
|
||||
|
||||
state = get_keyboard_modifiers_from_ns_event (nsevent);
|
||||
state = get_keyboard_modifiers_from_ns_event (nsevent) |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
switch ([nsevent type])
|
||||
{
|
||||
@@ -798,18 +800,19 @@ fill_button_event (GdkWindow *window,
|
||||
case NSRightMouseDown:
|
||||
case NSOtherMouseDown:
|
||||
type = GDK_BUTTON_PRESS;
|
||||
state &= ~get_mouse_button_modifiers_from_ns_event (nsevent);
|
||||
break;
|
||||
|
||||
case NSLeftMouseUp:
|
||||
case NSRightMouseUp:
|
||||
case NSOtherMouseUp:
|
||||
type = GDK_BUTTON_RELEASE;
|
||||
state |= get_mouse_button_modifiers_from_ns_event (nsevent);
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
button = get_mouse_button_from_ns_event (nsevent);
|
||||
|
||||
event->any.type = type;
|
||||
event->button.window = window;
|
||||
@@ -820,7 +823,7 @@ fill_button_event (GdkWindow *window,
|
||||
event->button.y_root = y_root;
|
||||
/* FIXME event->axes */
|
||||
event->button.state = state;
|
||||
event->button.button = button;
|
||||
event->button.button = get_mouse_button_from_ns_event (nsevent);
|
||||
event->button.device = _gdk_display->core_pointer;
|
||||
}
|
||||
|
||||
@@ -833,22 +836,6 @@ fill_motion_event (GdkWindow *window,
|
||||
gint x_root,
|
||||
gint y_root)
|
||||
{
|
||||
GdkModifierType state;
|
||||
|
||||
state = get_keyboard_modifiers_from_ns_event (nsevent);
|
||||
|
||||
switch ([nsevent type])
|
||||
{
|
||||
case NSLeftMouseDragged:
|
||||
case NSRightMouseDragged:
|
||||
case NSOtherMouseDragged:
|
||||
state |= get_mouse_button_modifiers_from_ns_event (nsevent);
|
||||
break;
|
||||
|
||||
case NSMouseMoved:
|
||||
break;
|
||||
}
|
||||
|
||||
event->any.type = GDK_MOTION_NOTIFY;
|
||||
event->motion.window = window;
|
||||
event->motion.time = get_time_from_ns_event (nsevent);
|
||||
@@ -857,7 +844,8 @@ fill_motion_event (GdkWindow *window,
|
||||
event->motion.x_root = x_root;
|
||||
event->motion.y_root = y_root;
|
||||
/* FIXME event->axes */
|
||||
event->motion.state = state;
|
||||
event->motion.state = get_keyboard_modifiers_from_ns_event (nsevent) |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = _gdk_display->core_pointer;
|
||||
}
|
||||
@@ -934,7 +922,7 @@ fill_key_event (GdkWindow *window,
|
||||
{
|
||||
case GDK_KEY_Meta_R:
|
||||
case GDK_KEY_Meta_L:
|
||||
mask = GDK_MOD1_MASK;
|
||||
mask = GDK_MOD2_MASK;
|
||||
break;
|
||||
case GDK_KEY_Shift_R:
|
||||
case GDK_KEY_Shift_L:
|
||||
@@ -945,7 +933,7 @@ fill_key_event (GdkWindow *window,
|
||||
break;
|
||||
case GDK_KEY_Alt_R:
|
||||
case GDK_KEY_Alt_L:
|
||||
mask = GDK_MOD5_MASK;
|
||||
mask = GDK_MOD1_MASK;
|
||||
break;
|
||||
case GDK_KEY_Control_R:
|
||||
case GDK_KEY_Control_L:
|
||||
@@ -961,7 +949,7 @@ fill_key_event (GdkWindow *window,
|
||||
event->key.state |= mask;
|
||||
}
|
||||
|
||||
event->key.state |= current_button_state;
|
||||
event->key.state |= _gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
|
||||
event->key.string = NULL;
|
||||
|
||||
@@ -1058,10 +1046,99 @@ synthesize_crossing_event (GdkWindow *window,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
GdkEventMask
|
||||
_gdk_quartz_events_get_current_event_mask (void)
|
||||
GdkModifierType
|
||||
_gdk_quartz_events_get_current_keyboard_modifiers (void)
|
||||
{
|
||||
return current_event_mask;
|
||||
if (gdk_quartz_osx_version () >= GDK_OSX_SNOW_LEOPARD)
|
||||
{
|
||||
return get_keyboard_modifiers_from_ns_flags ([NSClassFromString(@"NSEvent") modifierFlags]);
|
||||
}
|
||||
else
|
||||
{
|
||||
guint carbon_modifiers = GetCurrentKeyModifiers ();
|
||||
GdkModifierType modifiers = 0;
|
||||
|
||||
if (carbon_modifiers & alphaLock)
|
||||
modifiers |= GDK_LOCK_MASK;
|
||||
if (carbon_modifiers & shiftKey)
|
||||
modifiers |= GDK_SHIFT_MASK;
|
||||
if (carbon_modifiers & controlKey)
|
||||
modifiers |= GDK_CONTROL_MASK;
|
||||
if (carbon_modifiers & optionKey)
|
||||
modifiers |= GDK_MOD1_MASK;
|
||||
if (carbon_modifiers & cmdKey)
|
||||
modifiers |= GDK_MOD2_MASK;
|
||||
|
||||
return modifiers;
|
||||
}
|
||||
}
|
||||
|
||||
GdkModifierType
|
||||
_gdk_quartz_events_get_current_mouse_modifiers (void)
|
||||
{
|
||||
if (gdk_quartz_osx_version () >= GDK_OSX_SNOW_LEOPARD)
|
||||
{
|
||||
return get_mouse_button_modifiers_from_ns_buttons ([NSClassFromString(@"NSEvent") pressedMouseButtons]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return get_mouse_button_modifiers_from_ns_buttons (GetCurrentButtonState ());
|
||||
}
|
||||
}
|
||||
|
||||
/* Detect window resizing */
|
||||
|
||||
static gboolean
|
||||
test_resize (NSEvent *event, GdkWindow *toplevel, gint x, gint y)
|
||||
{
|
||||
GdkWindowImplQuartz *toplevel_impl;
|
||||
gboolean lion;
|
||||
/* Resizing only begins if an NSLeftMouseButton event is received in
|
||||
* the resizing area. Handle anything else.
|
||||
*/
|
||||
if ([event type] != NSLeftMouseDown)
|
||||
return FALSE;
|
||||
|
||||
toplevel_impl = (GdkWindowImplQuartz *)toplevel->impl;
|
||||
if ([toplevel_impl->toplevel showsResizeIndicator])
|
||||
{
|
||||
NSRect frame;
|
||||
|
||||
/* If the resize indicator is visible and the event
|
||||
* is in the lower right 15x15 corner, we leave these
|
||||
* events to Cocoa as to be handled as resize events.
|
||||
* Applications may have widgets in this area. These
|
||||
* will most likely be larger than 15x15 and for
|
||||
* scroll bars there are also other means to move
|
||||
* the scroll bar. Since the resize indicator is
|
||||
* the only way of resizing windows on Mac OS, it
|
||||
* is too important to not make functional.
|
||||
*/
|
||||
frame = [toplevel_impl->view bounds];
|
||||
if (x > frame.size.width - GRIP_WIDTH
|
||||
&& x < frame.size.width
|
||||
&& y > frame.size.height - GRIP_HEIGHT
|
||||
&& y < frame.size.height)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
/* If we're on Lion and within 5 pixels of an edge,
|
||||
* then assume that the user wants to resize, and
|
||||
* return NULL to let Quartz get on with it. We check
|
||||
* the selector isRestorable to see if we're on 10.7.
|
||||
* This extra check is in case the user starts
|
||||
* dragging before GDK recognizes the grab.
|
||||
*/
|
||||
|
||||
lion = gdk_quartz_osx_version() >= GDK_OSX_LION;
|
||||
if (lion && (x < GDK_LION_RESIZE ||
|
||||
x > toplevel->width - GDK_LION_RESIZE ||
|
||||
y > toplevel->height - GDK_LION_RESIZE))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1093,25 +1170,6 @@ gdk_event_translate (GdkEvent *event,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Keep track of button state, since we don't get that information
|
||||
* for key events.
|
||||
*/
|
||||
switch (event_type)
|
||||
{
|
||||
case NSLeftMouseDown:
|
||||
case NSRightMouseDown:
|
||||
case NSOtherMouseDown:
|
||||
current_button_state |= get_mouse_button_modifiers_from_ns_event (nsevent);
|
||||
break;
|
||||
case NSLeftMouseUp:
|
||||
case NSRightMouseUp:
|
||||
case NSOtherMouseUp:
|
||||
current_button_state &= ~get_mouse_button_modifiers_from_ns_event (nsevent);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (_gdk_default_filters)
|
||||
{
|
||||
/* Apply global filters */
|
||||
@@ -1147,6 +1205,9 @@ gdk_event_translate (GdkEvent *event,
|
||||
window = find_window_for_ns_event (nsevent, &x, &y, &x_root, &y_root);
|
||||
if (!window)
|
||||
return FALSE;
|
||||
/* Quartz handles resizing on its own, so we want to stay out of the way. */
|
||||
if (test_resize(nsevent, window, x, y))
|
||||
return FALSE;
|
||||
|
||||
/* Apply any window filters. */
|
||||
if (GDK_IS_WINDOW (window))
|
||||
@@ -1196,8 +1257,6 @@ gdk_event_translate (GdkEvent *event,
|
||||
}
|
||||
}
|
||||
|
||||
current_event_mask = get_event_mask_from_ns_event (nsevent);
|
||||
|
||||
return_val = TRUE;
|
||||
|
||||
switch (event_type)
|
||||
|
||||
@@ -21,7 +21,24 @@
|
||||
#include "config.h"
|
||||
#include "gdktypes.h"
|
||||
#include "gdkprivate.h"
|
||||
#include "gdkquartz.h"
|
||||
|
||||
GdkDisplay *_gdk_display = NULL;
|
||||
GdkScreen *_gdk_screen = NULL;
|
||||
GdkWindow *_gdk_root = NULL;
|
||||
|
||||
GdkOSXVersion
|
||||
gdk_quartz_osx_version (void)
|
||||
{
|
||||
gint minor;
|
||||
OSErr err = Gestalt(gestaltSystemVersionMinor, &minor);
|
||||
g_return_val_if_fail(err == noErr, GDK_OSX_UNSUPPORTED);
|
||||
|
||||
if (minor < GDK_OSX_MIN)
|
||||
return GDK_OSX_UNSUPPORTED;
|
||||
else if (minor > GDK_OSX_CURRENT)
|
||||
return GDK_OSX_NEW;
|
||||
else
|
||||
return minor;
|
||||
|
||||
}
|
||||
|
||||
@@ -205,7 +205,60 @@ const static struct {
|
||||
{ 0x001d, GDK_KEY_Right },
|
||||
{ 0x001e, GDK_KEY_Up },
|
||||
{ 0x001f, GDK_KEY_Down },
|
||||
{ 0x007f, GDK_KEY_Delete }
|
||||
{ 0x007f, GDK_KEY_Delete },
|
||||
{ 0xf027, GDK_KEY_dead_acute },
|
||||
{ 0xf060, GDK_KEY_dead_grave },
|
||||
{ 0xf300, GDK_KEY_dead_grave },
|
||||
{ 0xf0b4, GDK_KEY_dead_acute },
|
||||
{ 0xf301, GDK_KEY_dead_acute },
|
||||
{ 0xf385, GDK_KEY_dead_acute },
|
||||
{ 0xf05e, GDK_KEY_dead_circumflex },
|
||||
{ 0xf2c6, GDK_KEY_dead_circumflex },
|
||||
{ 0xf302, GDK_KEY_dead_circumflex },
|
||||
{ 0xf07e, GDK_KEY_dead_tilde },
|
||||
{ 0xf303, GDK_KEY_dead_tilde },
|
||||
{ 0xf342, GDK_KEY_dead_perispomeni },
|
||||
{ 0xf0af, GDK_KEY_dead_macron },
|
||||
{ 0xf304, GDK_KEY_dead_macron },
|
||||
{ 0xf2d8, GDK_KEY_dead_breve },
|
||||
{ 0xf306, GDK_KEY_dead_breve },
|
||||
{ 0xf2d9, GDK_KEY_dead_abovedot },
|
||||
{ 0xf307, GDK_KEY_dead_abovedot },
|
||||
{ 0xf0a8, GDK_KEY_dead_diaeresis },
|
||||
{ 0xf308, GDK_KEY_dead_diaeresis },
|
||||
{ 0xf2da, GDK_KEY_dead_abovering },
|
||||
{ 0xf30A, GDK_KEY_dead_abovering },
|
||||
{ 0xf022, GDK_KEY_dead_doubleacute },
|
||||
{ 0xf2dd, GDK_KEY_dead_doubleacute },
|
||||
{ 0xf30B, GDK_KEY_dead_doubleacute },
|
||||
{ 0xf2c7, GDK_KEY_dead_caron },
|
||||
{ 0xf30C, GDK_KEY_dead_caron },
|
||||
{ 0xf0be, GDK_KEY_dead_cedilla },
|
||||
{ 0xf327, GDK_KEY_dead_cedilla },
|
||||
{ 0xf2db, GDK_KEY_dead_ogonek },
|
||||
{ 0xf328, GDK_KEY_dead_ogonek },
|
||||
{ 0xfe5d, GDK_KEY_dead_iota },
|
||||
{ 0xf323, GDK_KEY_dead_belowdot },
|
||||
{ 0xf309, GDK_KEY_dead_hook },
|
||||
{ 0xf31B, GDK_KEY_dead_horn },
|
||||
{ 0xf02d, GDK_KEY_dead_stroke },
|
||||
{ 0xf335, GDK_KEY_dead_stroke },
|
||||
{ 0xf336, GDK_KEY_dead_stroke },
|
||||
{ 0xf313, GDK_KEY_dead_abovecomma },
|
||||
/* { 0xf313, GDK_KEY_dead_psili }, */
|
||||
{ 0xf314, GDK_KEY_dead_abovereversedcomma },
|
||||
/* { 0xf314, GDK_KEY_dead_dasia }, */
|
||||
{ 0xf30F, GDK_KEY_dead_doublegrave },
|
||||
{ 0xf325, GDK_KEY_dead_belowring },
|
||||
{ 0xf2cd, GDK_KEY_dead_belowmacron },
|
||||
{ 0xf331, GDK_KEY_dead_belowmacron },
|
||||
{ 0xf32D, GDK_KEY_dead_belowcircumflex },
|
||||
{ 0xf330, GDK_KEY_dead_belowtilde },
|
||||
{ 0xf32E, GDK_KEY_dead_belowbreve },
|
||||
{ 0xf324, GDK_KEY_dead_belowdiaeresis },
|
||||
{ 0xf311, GDK_KEY_dead_invertedbreve },
|
||||
{ 0xf02c, GDK_KEY_dead_belowcomma },
|
||||
{ 0xf326, GDK_KEY_dead_belowcomma }
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -306,18 +359,10 @@ maybe_update_keymap (void)
|
||||
p[j] = GDK_KEY_ISO_Left_Tab;
|
||||
|
||||
if (!found)
|
||||
{
|
||||
guint tmp;
|
||||
|
||||
tmp = gdk_unicode_to_keyval (uc);
|
||||
if (tmp != (uc | 0x01000000))
|
||||
p[j] = tmp;
|
||||
else
|
||||
p[j] = 0;
|
||||
}
|
||||
p[j] = gdk_unicode_to_keyval (uc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (p[3] == p[2])
|
||||
p[3] = 0;
|
||||
if (p[2] == p[1])
|
||||
@@ -353,10 +398,10 @@ maybe_update_keymap (void)
|
||||
UniChar uc;
|
||||
|
||||
key_code = modifiers[j] | i;
|
||||
err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
|
||||
err = UCKeyTranslate (chr_data, i, kUCKeyActionDisplay,
|
||||
(modifiers[j] >> 8) & 0xFF,
|
||||
LMGetKbdType(),
|
||||
kUCKeyTranslateNoDeadKeysMask,
|
||||
0,
|
||||
&state, 4, &nChars, chars);
|
||||
|
||||
|
||||
@@ -368,8 +413,22 @@ maybe_update_keymap (void)
|
||||
{
|
||||
int k;
|
||||
gboolean found = FALSE;
|
||||
|
||||
uc = chars[0];
|
||||
|
||||
/* A few <Shift><Option>keys return two
|
||||
* characters, the first of which is U+00a0,
|
||||
* which isn't interesting; so we return the
|
||||
* second. More sophisticated handling is the
|
||||
* job of a GtkIMContext.
|
||||
*
|
||||
* If state isn't zero, it means that it's a
|
||||
* dead key of some sort. Some of those are
|
||||
* enumerated in the special_ucs_table with the
|
||||
* high nibble set to f to push it into the
|
||||
* private use range. Here we do the same.
|
||||
*/
|
||||
if (state != 0)
|
||||
chars[nChars - 1] |= 0xf000;
|
||||
uc = chars[nChars - 1];
|
||||
|
||||
for (k = 0; k < G_N_ELEMENTS (special_ucs_table); k++)
|
||||
{
|
||||
@@ -386,20 +445,12 @@ maybe_update_keymap (void)
|
||||
*/
|
||||
if (found && p[j] == GDK_KEY_Tab && modifiers[j] == shiftKey)
|
||||
p[j] = GDK_KEY_ISO_Left_Tab;
|
||||
|
||||
|
||||
if (!found)
|
||||
{
|
||||
guint tmp;
|
||||
|
||||
tmp = gdk_unicode_to_keyval (uc);
|
||||
if (tmp != (uc | 0x01000000))
|
||||
p[j] = tmp;
|
||||
else
|
||||
p[j] = 0;
|
||||
}
|
||||
p[j] = gdk_unicode_to_keyval (uc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (p[3] == p[2])
|
||||
p[3] = 0;
|
||||
if (p[2] == p[1])
|
||||
@@ -494,8 +545,8 @@ gdk_quartz_keymap_get_entries_for_keyval (GdkKeymap *keymap,
|
||||
(*n_keys)++;
|
||||
|
||||
key.keycode = i / KEYVALS_PER_KEYCODE;
|
||||
key.group = 0;
|
||||
key.level = i % KEYVALS_PER_KEYCODE;
|
||||
key.group = (i % KEYVALS_PER_KEYCODE) >= 2;
|
||||
key.level = i % 2;
|
||||
|
||||
g_array_append_val (keys_array, key);
|
||||
}
|
||||
@@ -550,7 +601,7 @@ gdk_quartz_keymap_get_entries_for_keycode (GdkKeymap *keymap,
|
||||
GdkKeymapKey key;
|
||||
|
||||
key.keycode = hardware_keycode;
|
||||
key.group = i / 2;
|
||||
key.group = i >= 2;
|
||||
key.level = i % 2;
|
||||
|
||||
g_array_append_val (keys_array, key);
|
||||
@@ -606,6 +657,11 @@ translate_keysym (guint hardware_keycode,
|
||||
tmp_keyval = upper;
|
||||
}
|
||||
|
||||
if (effective_group)
|
||||
*effective_group = group;
|
||||
if (effective_level)
|
||||
*effective_level = level;
|
||||
|
||||
return tmp_keyval;
|
||||
}
|
||||
|
||||
@@ -660,14 +716,17 @@ static void
|
||||
gdk_quartz_keymap_add_virtual_modifiers (GdkKeymap *keymap,
|
||||
GdkModifierType *state)
|
||||
{
|
||||
/* FIXME: For now, we've mimiced the Windows backend. */
|
||||
if (*state & GDK_MOD2_MASK)
|
||||
*state |= GDK_META_MASK;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gdk_quartz_keymap_map_virtual_modifiers (GdkKeymap *keymap,
|
||||
GdkModifierType *state)
|
||||
{
|
||||
/* FIXME: For now, we've mimiced the Windows backend. */
|
||||
if (*state & GDK_META_MASK)
|
||||
*state |= GDK_MOD2_MASK;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,9 @@ typedef enum {
|
||||
void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
|
||||
gboolean got_focus);
|
||||
void _gdk_quartz_events_send_map_event (GdkWindow *window);
|
||||
GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
|
||||
|
||||
GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
|
||||
GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers (void);
|
||||
|
||||
void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
/* gdkquartz.h
|
||||
*
|
||||
* Copyright (C) 2005-2007 Imendio AB
|
||||
@@ -41,6 +42,20 @@ typedef unsigned int NSUInteger;
|
||||
typedef float CGFloat;
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GDK_OSX_UNSUPPORTED = 0,
|
||||
GDK_OSX_MIN = 4,
|
||||
GDK_OSX_TIGER = 4,
|
||||
GDK_OSX_LEOPARD = 5,
|
||||
GDK_OSX_SNOW_LEOPARD = 6,
|
||||
GDK_OSX_LION = 7,
|
||||
GDK_OSX_CURRENT = 7,
|
||||
GDK_OSX_NEW = 99
|
||||
} GdkOSXVersion;
|
||||
|
||||
GdkOSXVersion gdk_quartz_osx_version (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#define __GDKQUARTZ_H_INSIDE__
|
||||
|
||||
@@ -121,10 +121,8 @@ make_list (const gchar *text,
|
||||
}
|
||||
|
||||
if (list)
|
||||
*list = g_new (gchar *, n_strings + 1);
|
||||
*list = g_new0 (gchar *, n_strings + 1);
|
||||
|
||||
(*list)[n_strings] = NULL;
|
||||
|
||||
i = n_strings;
|
||||
tmp_list = strings;
|
||||
while (tmp_list)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user