Compare commits
625 Commits
METACITY_2
...
override-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a0de6dfd3 | ||
|
|
2bf0b2b6de | ||
|
|
c012105b90 | ||
|
|
f26d503694 | ||
|
|
eed2a2d324 | ||
|
|
9828007a02 | ||
|
|
6e4cd65544 | ||
|
|
08c5095ad7 | ||
|
|
dfb0e4f57b | ||
|
|
29257f107a | ||
|
|
ecde490967 | ||
|
|
51a6467968 | ||
|
|
1f890672bb | ||
|
|
ef966854d5 | ||
|
|
7309b6cfe3 | ||
|
|
3705a224f0 | ||
|
|
2ebedb822d | ||
|
|
d6576d9b70 | ||
|
|
6516c19ec5 | ||
|
|
5518fee61c | ||
|
|
ace0521cba | ||
|
|
0091a3aab5 | ||
|
|
9127993d84 | ||
|
|
268b92a4ec | ||
|
|
29bb4c27e3 | ||
|
|
bd3bdc51b9 | ||
|
|
0123dab87a | ||
|
|
413acc9574 | ||
|
|
ec2370b76d | ||
|
|
204431812b | ||
|
|
627b4484ec | ||
|
|
442991a712 | ||
|
|
7eae5d4eab | ||
|
|
f3914c86b9 | ||
|
|
fafb752827 | ||
|
|
2ed1bf05d1 | ||
|
|
aff4cf1103 | ||
|
|
9883f6e679 | ||
|
|
ea91834407 | ||
|
|
90c35f8181 | ||
|
|
2a8c160569 | ||
|
|
1d5117a607 | ||
|
|
99d0f41d98 | ||
|
|
7b522c0de8 | ||
|
|
cbf4be04fc | ||
|
|
f55509aadd | ||
|
|
7e369d63b3 | ||
|
|
6cf71a06c0 | ||
|
|
49400c08cd | ||
|
|
1624b87b9b | ||
|
|
dcf387c91a | ||
|
|
cb01977029 | ||
|
|
7a7632fa98 | ||
|
|
76a3f9d402 | ||
|
|
96dfeea412 | ||
|
|
a4746d75e6 | ||
|
|
52638b9d8e | ||
|
|
514d00698d | ||
|
|
c4a4de0056 | ||
|
|
28a4be2536 | ||
|
|
6e9803cd9f | ||
|
|
63b1d6642c | ||
|
|
626912a9a4 | ||
|
|
058c884f1f | ||
|
|
2e0cd7af5e | ||
|
|
82706fd958 | ||
|
|
8ccb9e04eb | ||
|
|
ae97ccba80 | ||
|
|
8ab9ed5d4e | ||
|
|
886ce72374 | ||
|
|
a658c8b067 | ||
|
|
ab1e8cbb50 | ||
|
|
cbe6973b66 | ||
|
|
abb825b43e | ||
|
|
f821407060 | ||
|
|
381aca98d0 | ||
|
|
a67de845f6 | ||
|
|
808378129e | ||
|
|
0d75012462 | ||
|
|
32a0cdb2f9 | ||
|
|
68823fd9b2 | ||
|
|
d38b1abb49 | ||
|
|
ebadd21c64 | ||
|
|
f1616a15d0 | ||
|
|
39bee4b9d2 | ||
|
|
3f867e0167 | ||
|
|
4300622c4a | ||
|
|
9ad7381c11 | ||
|
|
e5f287dad5 | ||
|
|
a5fc9fcb79 | ||
|
|
5134d0dee1 | ||
|
|
9abe89a2dc | ||
|
|
79aecf21bb | ||
|
|
4253ff8e12 | ||
|
|
fb7b820187 | ||
|
|
3a2d775196 | ||
|
|
c780fde38e | ||
|
|
a47bb96536 | ||
|
|
0e256a21a5 | ||
|
|
3b864f8af5 | ||
|
|
540fc4b76b | ||
|
|
f78390b094 | ||
|
|
0b635aafae | ||
|
|
8ae90af01f | ||
|
|
31f48c0cf0 | ||
|
|
cd0ef08783 | ||
|
|
4203fd2993 | ||
|
|
54e56a47da | ||
|
|
d8a28621cc | ||
|
|
177bfe38f6 | ||
|
|
b19b2e146a | ||
|
|
92d347f566 | ||
|
|
cafd18bb2c | ||
|
|
ce3e339201 | ||
|
|
a863f0d955 | ||
|
|
d7e84d4e11 | ||
|
|
cb4c9aa64f | ||
|
|
15f4656d9a | ||
|
|
cba863dc5f | ||
|
|
9e3af9b51f | ||
|
|
143e566498 | ||
|
|
000aaaf95d | ||
|
|
3fe6268f10 | ||
|
|
f749f9ceef | ||
|
|
c284a90663 | ||
|
|
50442cf96b | ||
|
|
4bfacf4a39 | ||
|
|
d587a4b859 | ||
|
|
8d5b142664 | ||
|
|
e44664a3b5 | ||
|
|
31599eb282 | ||
|
|
1c978e7333 | ||
|
|
6c4a5fa38c | ||
|
|
1726df6eaf | ||
|
|
4312600248 | ||
|
|
30af106563 | ||
|
|
32c6966e4b | ||
|
|
3e9d7da4da | ||
|
|
58594ef2be | ||
|
|
1c2a88373c | ||
|
|
d039176d75 | ||
|
|
19a0eb1761 | ||
|
|
eea098d22d | ||
|
|
ecfe3a6533 | ||
|
|
8216cbc4f6 | ||
|
|
9a4d1d1375 | ||
|
|
616e140420 | ||
|
|
52ea2fd45d | ||
|
|
050c1e268d | ||
|
|
7afc4310f6 | ||
|
|
39a3bb2c7d | ||
|
|
7eb2843718 | ||
|
|
91490ed713 | ||
|
|
081272c5a9 | ||
|
|
45ecea6330 | ||
|
|
f4bc825cf8 | ||
|
|
fb1fc4e7c6 | ||
|
|
ed3d222327 | ||
|
|
8c0ae7be83 | ||
|
|
c5c202c04e | ||
|
|
5780ffad12 | ||
|
|
6fe40f13a7 | ||
|
|
770a6f0138 | ||
|
|
16d49695ad | ||
|
|
6893ef034b | ||
|
|
6e36d4ed48 | ||
|
|
9b5d91e33b | ||
|
|
c7686b2977 | ||
|
|
3e754a6f35 | ||
|
|
7ba37ce249 | ||
|
|
b2da6d86f3 | ||
|
|
56192d9e48 | ||
|
|
00192b019c | ||
|
|
21416f453a | ||
|
|
ad16804344 | ||
|
|
63744a3dd7 | ||
|
|
e5db44ca90 | ||
|
|
032cbe0dd5 | ||
|
|
7d34a10e4a | ||
|
|
62f1fc62a7 | ||
|
|
c26cb4d2be | ||
|
|
a203fb1037 | ||
|
|
adeec009e7 | ||
|
|
8e6c0bec78 | ||
|
|
69ae9e4a9d | ||
|
|
1381f6d5f2 | ||
|
|
a6c951352f | ||
|
|
0a172cc053 | ||
|
|
f5fa4a3866 | ||
|
|
8cbcbb0655 | ||
|
|
35d9d2864f | ||
|
|
bb5c0d0c34 | ||
|
|
226cdc9645 | ||
|
|
1b35154e2b | ||
|
|
7c69ab987a | ||
|
|
ba03230e72 | ||
|
|
77cb0db9c2 | ||
|
|
ad080410a3 | ||
|
|
dab72c3efa | ||
|
|
32f882093b | ||
|
|
6ac54641c6 | ||
|
|
1d38209520 | ||
|
|
c1f3a5c67d | ||
|
|
6e543fbcfd | ||
|
|
9dee164790 | ||
|
|
b0cc2a8614 | ||
|
|
f4ecc9bab8 | ||
|
|
c3884e9900 | ||
|
|
39c88facc5 | ||
|
|
1dce6b5fa3 | ||
|
|
6b1aa3cf04 | ||
|
|
2e1893f7d3 | ||
|
|
d1fd844bc4 | ||
|
|
db273ce50c | ||
|
|
2338611046 | ||
|
|
7d3a05f2d1 | ||
|
|
a02e0b3c98 | ||
|
|
952d63a127 | ||
|
|
23bed522ab | ||
|
|
813acae961 | ||
|
|
352e2c02dc | ||
|
|
9ebb135ccb | ||
|
|
a96939be0f | ||
|
|
cb3870f9f6 | ||
|
|
25d628aea2 | ||
|
|
aad8eb1999 | ||
|
|
fc6b78a20c | ||
|
|
4b3a8fefb6 | ||
|
|
ec0562550a | ||
|
|
73e14e0bb1 | ||
|
|
822e125492 | ||
|
|
b47cd6a3bc | ||
|
|
95fa3a3879 | ||
|
|
0b978e61aa | ||
|
|
d6b974ba15 | ||
|
|
ec09ac49f6 | ||
|
|
ee738f1d6f | ||
|
|
17c10f60d9 | ||
|
|
24823e19e0 | ||
|
|
c8e967ba1c | ||
|
|
f7aa5f8653 | ||
|
|
6da5a5abcb | ||
|
|
0fdb644454 | ||
|
|
f6a3ba26f9 | ||
|
|
d1920788ac | ||
|
|
fc1ff18ca7 | ||
|
|
5f9a4ab8cc | ||
|
|
920a847508 | ||
|
|
1e17ba1768 | ||
|
|
e17377d407 | ||
|
|
b47459af58 | ||
|
|
986bdac451 | ||
|
|
b5b37d72a3 | ||
|
|
096e3dee8f | ||
|
|
e25282088b | ||
|
|
da36829f96 | ||
|
|
ff5055834b | ||
|
|
b41abfd1f8 | ||
|
|
e1cc242b52 | ||
|
|
4589d1246d | ||
|
|
66a5edd31a | ||
|
|
57dec338ba | ||
|
|
9ecc00a33b | ||
|
|
ae6032e58e | ||
|
|
c4d7e0568f | ||
|
|
c311e96b63 | ||
|
|
b66fbc0369 | ||
|
|
151ddc08ec | ||
|
|
b81c7c48d5 | ||
|
|
e11100e584 | ||
|
|
01027006a7 | ||
|
|
38faa8fe10 | ||
|
|
9abdc6c0fa | ||
|
|
34b483ed75 | ||
|
|
c48c5e44bd | ||
|
|
b943a74476 | ||
|
|
13badba158 | ||
|
|
e1e5cc8f42 | ||
|
|
6e1ed9ad55 | ||
|
|
dd2370d9dd | ||
|
|
45f2ec5f64 | ||
|
|
e7a69b6a13 | ||
|
|
10b12f24f0 | ||
|
|
3b1e91342e | ||
|
|
e7cef5bbcb | ||
|
|
6ddec0d855 | ||
|
|
c0d90e5b76 | ||
|
|
6c22a997e6 | ||
|
|
945c9cb8e0 | ||
|
|
cf2206352f | ||
|
|
4c5f125a6a | ||
|
|
1fd45f10a2 | ||
|
|
3592f8e92e | ||
|
|
036fe284c2 | ||
|
|
a1cc5fea1f | ||
|
|
9442d21f44 | ||
|
|
a0cd86d2ac | ||
|
|
157aa0af6d | ||
|
|
88cd978837 | ||
|
|
e146c24483 | ||
|
|
41b6f0803e | ||
|
|
68ac59ff6d | ||
|
|
c2abbce2ed | ||
|
|
38cd6a6c1f | ||
|
|
ac365b4ead | ||
|
|
e083742426 | ||
|
|
e5fc168a46 | ||
|
|
be7067bc0a | ||
|
|
1ba3b3dd7d | ||
|
|
a06d96316e | ||
|
|
6e8c233d6a | ||
|
|
c627368ea1 | ||
|
|
8524f510c6 | ||
|
|
39e389cc5b | ||
|
|
d079ef538c | ||
|
|
203046237c | ||
|
|
7a5606d241 | ||
|
|
c4768a3b9f | ||
|
|
af8d281556 | ||
|
|
0f73a011ce | ||
|
|
53cea00323 | ||
|
|
b7466365a1 | ||
|
|
3b3226b678 | ||
|
|
ab2e925b65 | ||
|
|
0214ece238 | ||
|
|
a6d04255a8 | ||
|
|
9821453b5f | ||
|
|
c61eb77a70 | ||
|
|
57a2d20d61 | ||
|
|
8c3bcc7229 | ||
|
|
f956853550 | ||
|
|
6849735e9d | ||
|
|
06817df975 | ||
|
|
98ccfea388 | ||
|
|
9a1be03205 | ||
|
|
026008a700 | ||
|
|
b26fc771b1 | ||
|
|
04619df818 | ||
|
|
c1928ead7c | ||
|
|
b43f9aec5a | ||
|
|
79d749fc82 | ||
|
|
bcc5f104db | ||
|
|
99f6b2cdce | ||
|
|
75d3845801 | ||
|
|
c8e0acfef3 | ||
|
|
da55d8e738 | ||
|
|
40c25dc426 | ||
|
|
f3a8b2f12e | ||
|
|
dcd350dd90 | ||
|
|
f826fb1d9a | ||
|
|
123f4df31b | ||
|
|
3211fb04d3 | ||
|
|
17e12ccb6d | ||
|
|
6eab4fb9e8 | ||
|
|
8f8097aa2c | ||
|
|
7a190f33f6 | ||
|
|
7ec7a8fa44 | ||
|
|
93b945ea42 | ||
|
|
0058271aaa | ||
|
|
cfa45beee1 | ||
|
|
51468bfb56 | ||
|
|
f7b0c532aa | ||
|
|
20ce1e77d9 | ||
|
|
368346571a | ||
|
|
7ea4380725 | ||
|
|
15daecacdc | ||
|
|
1b943f8191 | ||
|
|
6d8baea4c2 | ||
|
|
4c9bfecac5 | ||
|
|
6683b5efff | ||
|
|
783e51281a | ||
|
|
5dc36e1201 | ||
|
|
6a86912554 | ||
|
|
7405f040e8 | ||
|
|
5ed940e101 | ||
|
|
11f18a25c2 | ||
|
|
d819b99d99 | ||
|
|
b5ac24e9c1 | ||
|
|
d1635d13cb | ||
|
|
f80e39e2ca | ||
|
|
a7a0a0300f | ||
|
|
685bbb2e64 | ||
|
|
e85f67f564 | ||
|
|
a2b47741ae | ||
|
|
eeb762e1e2 | ||
|
|
6c5fc6b3d6 | ||
|
|
3991e82539 | ||
|
|
312cbf3e04 | ||
|
|
ce2bfc008d | ||
|
|
b2fe0097e6 | ||
|
|
e4501f801e | ||
|
|
7bef175590 | ||
|
|
a4a102726e | ||
|
|
a42ea69d0e | ||
|
|
8f594c93cd | ||
|
|
8f8a193c7e | ||
|
|
c283fbe9b3 | ||
|
|
53d89a7fd5 | ||
|
|
68c2f75558 | ||
|
|
2a3445c865 | ||
|
|
10f9a7f252 | ||
|
|
b1c5a2e221 | ||
|
|
1d6e70a49d | ||
|
|
310970a91b | ||
|
|
07c1003905 | ||
|
|
273d213509 | ||
|
|
8201b0361a | ||
|
|
f97f20e3b0 | ||
|
|
fc4ef3417f | ||
|
|
4d441a6f7b | ||
|
|
c1348f0322 | ||
|
|
647f75c4e8 | ||
|
|
348795b94d | ||
|
|
bb539466d5 | ||
|
|
ab9bdf228b | ||
|
|
c91475f20f | ||
|
|
445b6ae6ed | ||
|
|
2e9857b560 | ||
|
|
3cc7b2c74d | ||
|
|
275cccb136 | ||
|
|
8c1a5c6a11 | ||
|
|
7a9da7eb69 | ||
|
|
788cbc91b2 | ||
|
|
9cb0b6ff52 | ||
|
|
22d5f3fa57 | ||
|
|
627dcede64 | ||
|
|
fbefdce4c1 | ||
|
|
77785ac321 | ||
|
|
922b490499 | ||
|
|
ee49194cf5 | ||
|
|
f2bf9703db | ||
|
|
1866268c94 | ||
|
|
b7ee7bdd9b | ||
|
|
ba3cf5dfad | ||
|
|
f186d90dd3 | ||
|
|
671b69a251 | ||
|
|
fd01dbaaea | ||
|
|
be11a6bf72 | ||
|
|
4854710de2 | ||
|
|
0684ef95c5 | ||
|
|
775cb1f4a4 | ||
|
|
73f90dfd69 | ||
|
|
8a0ffa93eb | ||
|
|
7ddb3a4663 | ||
|
|
493408167b | ||
|
|
a8f1a61242 | ||
|
|
4c3a5883d7 | ||
|
|
9a66ce6b01 | ||
|
|
08c3c187eb | ||
|
|
b422faa4fe | ||
|
|
a8dd848ca4 | ||
|
|
143cb3d60b | ||
|
|
92610f53c3 | ||
|
|
6904b7a5d7 | ||
|
|
30ece059cf | ||
|
|
1e59d63e31 | ||
|
|
7380163eaf | ||
|
|
dc33ad1adf | ||
|
|
b5414c27a3 | ||
|
|
2f790b0165 | ||
|
|
d185a84140 | ||
|
|
749698eb54 | ||
|
|
6323467879 | ||
|
|
d94a34a2c1 | ||
|
|
9005e4a68f | ||
|
|
9e4f5a26dd | ||
|
|
ae906b318a | ||
|
|
8d373e009d | ||
|
|
7d67a9aee9 | ||
|
|
f0364b2eed | ||
|
|
5af56eebd1 | ||
|
|
5f3e27bbd7 | ||
|
|
b1b8d51264 | ||
|
|
3ee8a903e8 | ||
|
|
f6c958ff26 | ||
|
|
27fac47e76 | ||
|
|
6144787b3e | ||
|
|
c1e7ead397 | ||
|
|
c4fe54d004 | ||
|
|
48f1dd5a7e | ||
|
|
ff0fa107a4 | ||
|
|
acd81439eb | ||
|
|
b625ed254d | ||
|
|
334370f5d1 | ||
|
|
66c031315d | ||
|
|
74b34fe239 | ||
|
|
7124a7acc1 | ||
|
|
2fffd6fe9f | ||
|
|
6b1719de1c | ||
|
|
0225449e12 | ||
|
|
1a8e5872d1 | ||
|
|
0e6fba083f | ||
|
|
1178800abb | ||
|
|
f061a6d793 | ||
|
|
976635a22b | ||
|
|
69c0da91e5 | ||
|
|
306a7497fc | ||
|
|
1addb6ddc1 | ||
|
|
0a7fc94799 | ||
|
|
cca5e69c64 | ||
|
|
bbdd7d9b15 | ||
|
|
60695fd89a | ||
|
|
c5d59254af | ||
|
|
2bcd7c839b | ||
|
|
cc50d99712 | ||
|
|
93c316f3b8 | ||
|
|
7983c29f67 | ||
|
|
22f386b35b | ||
|
|
d6e4fc41c2 | ||
|
|
f65d898f80 | ||
|
|
a49f986c67 | ||
|
|
b1fb765d8e | ||
|
|
9e72d661d6 | ||
|
|
03ccf99dbb | ||
|
|
f67f9bbf23 | ||
|
|
85e67d1d49 | ||
|
|
735877d89a | ||
|
|
ee60128334 | ||
|
|
3bbd5e32f2 | ||
|
|
c2403a0c62 | ||
|
|
839082aae8 | ||
|
|
98753ed946 | ||
|
|
0ee05e6617 | ||
|
|
2d4a0c9cbe | ||
|
|
43e3fbc518 | ||
|
|
c58ade6600 | ||
|
|
33ae559eca | ||
|
|
4f1fd37231 | ||
|
|
6654cb65d7 | ||
|
|
19d338cb50 | ||
|
|
0bbe8b8004 | ||
|
|
99d3cc1b2b | ||
|
|
c5d86fae01 | ||
|
|
d6f340eb96 | ||
|
|
bd3d643f96 | ||
|
|
7bd5f61db7 | ||
|
|
0037a5fccc | ||
|
|
1ea071fc18 | ||
|
|
bc1e74153c | ||
|
|
65a10829fd | ||
|
|
0c0e102023 | ||
|
|
914c93ae0d | ||
|
|
a1c3a05b43 | ||
|
|
f53e03f0a2 | ||
|
|
5e76e1b221 | ||
|
|
9b3a0d1ad8 | ||
|
|
d509097967 | ||
|
|
b7bdc5ec69 | ||
|
|
0e8c8ba825 | ||
|
|
f19aff7818 | ||
|
|
52d14ee16d | ||
|
|
4774a798a7 | ||
|
|
28793c9f81 | ||
|
|
3109a67a71 | ||
|
|
d4662bb6a2 | ||
|
|
13a8cdcbb3 | ||
|
|
d2a4800e75 | ||
|
|
ba19215cd4 | ||
|
|
cf48407972 | ||
|
|
f227fc4872 | ||
|
|
0407545283 | ||
|
|
438ac55cb1 | ||
|
|
0fd855f492 | ||
|
|
177202e2d1 | ||
|
|
18d9d15a1a | ||
|
|
49cc773eb4 | ||
|
|
8bd3cdff14 | ||
|
|
2095cce3ab | ||
|
|
5128bd4f28 | ||
|
|
9c82331009 | ||
|
|
347cfab7dd | ||
|
|
dbfc9d25f6 | ||
|
|
28cf8cc407 | ||
|
|
b3283ce82b | ||
|
|
6946d6a4a3 | ||
|
|
2bcb7d73be | ||
|
|
655bfaec80 | ||
|
|
a3f56bb289 | ||
|
|
b48f9ca907 | ||
|
|
8589eab403 | ||
|
|
1ee1842638 | ||
|
|
70afce0325 | ||
|
|
1f29679c0d | ||
|
|
99b547bc1d | ||
|
|
030afac8ab | ||
|
|
121a65e4f4 | ||
|
|
a8bcfb9a0c | ||
|
|
9f9df52ba6 | ||
|
|
676a516ff2 | ||
|
|
b238584c1e | ||
|
|
129fde88fa | ||
|
|
4134949d72 | ||
|
|
e6e6aecb93 | ||
|
|
13f3cb0b9a | ||
|
|
f7f696c310 | ||
|
|
2154d9e920 | ||
|
|
5ebaa15333 | ||
|
|
8736f61579 | ||
|
|
e1965914a3 | ||
|
|
233237f098 | ||
|
|
4fb40b57a9 | ||
|
|
6e4c88ad93 | ||
|
|
5631cbe22d | ||
|
|
92fe1574ec | ||
|
|
b4534658f3 | ||
|
|
3cd7574749 | ||
|
|
203b701d78 | ||
|
|
14f8e1c553 | ||
|
|
e6c16a77f1 | ||
|
|
6f9048d69c | ||
|
|
416bc2432c | ||
|
|
51de9ef860 | ||
|
|
af17cddf1c | ||
|
|
12ae5cc4fe | ||
|
|
bd00b58949 | ||
|
|
deaebc5d2e | ||
|
|
7f6a2ebc76 | ||
|
|
7d9e4ee37d | ||
|
|
7adbca2fdb | ||
|
|
3848fa17e5 | ||
|
|
f9a0c6d456 | ||
|
|
fa2f76d4d4 | ||
|
|
2c6c5a6dd1 | ||
|
|
c29232fd0d | ||
|
|
8fd2f1d22a |
60
.gitignore
vendored
Normal file
60
.gitignore
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
Makefile.in.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
.deps
|
||||
src/metacity-wm.desktop
|
||||
*.o
|
||||
*.a
|
||||
*.lo
|
||||
*.la
|
||||
.libs
|
||||
*.swp
|
||||
tidy-enum-types.[ch]
|
||||
tidy-marshal.[ch]
|
||||
stamp-tidy-enum-types.h
|
||||
stamp-tidy-marshal.h
|
||||
stamp-h1
|
||||
*.gmo
|
||||
*.make
|
||||
*~
|
||||
stamp-it
|
||||
.intltool-merge-cache
|
||||
POTFILES
|
||||
50-metacity-desktop-key.xml
|
||||
50-metacity-key.xml
|
||||
inlinepixbufs.h
|
||||
libmetacity-private.pc
|
||||
metacity
|
||||
metacity-dialog
|
||||
metacity-theme-viewer
|
||||
metacity.desktop
|
||||
metacity.schemas
|
||||
testasyncgetprop
|
||||
testboxes
|
||||
testgradient
|
||||
metacity-grayscale
|
||||
metacity-mag
|
||||
metacity-message
|
||||
metacity-window-demo
|
||||
focus-window
|
||||
test-gravity
|
||||
test-resizing
|
||||
test-size-hints
|
||||
wm-tester
|
||||
INSTALL
|
||||
mkinstalldirs
|
||||
869
ChangeLog
869
ChangeLog
@@ -1,3 +1,872 @@
|
||||
2009-03-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.26.0 release.
|
||||
|
||||
2009-02-04 Neil Jagdish Patel <njpatel@gmail.com>
|
||||
|
||||
* src/core/frame.c: queue resize on window undecorate
|
||||
|
||||
2009-02-03 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* src/include/all-keybindings.h: Fix description, focus the
|
||||
desktop, not desktop backgroung (Closes bug #569649)
|
||||
|
||||
2009-02-02 Matt Kraai <kraai@ftfbs.org>
|
||||
|
||||
* src/core/schema-bindings.c: Wrap g_error calls in braces.
|
||||
|
||||
2009-02-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.233.
|
||||
|
||||
2009-02-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.144 release.
|
||||
|
||||
2009-02-01 Matt Kraai <kraai@ftbfs.org>
|
||||
|
||||
Set prop_hooks_table to NULL after freeing it.
|
||||
|
||||
* src/core/window-props.c:
|
||||
|
||||
2009-01-29 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Window properties are looked up in a hash table rather than
|
||||
by iteration over an array. Saves ~44us per window, but
|
||||
also makes the code cleaner.
|
||||
|
||||
* src/core/display-private.h:
|
||||
* src/core/window-props.c:
|
||||
|
||||
2009-01-27 Matthias Claesen <mclasen@redhat.com>
|
||||
|
||||
* src/core/edge-resistance.c: some lists failed to keep track
|
||||
of their contents and therefore didn't free correctly.
|
||||
Closes #552303.
|
||||
|
||||
2009-01-27 Matthias Claesen <mclasen@redhat.com>
|
||||
|
||||
* src/core/prefs.c: Free name of old theme when new theme
|
||||
is loaded. Closes #552973.
|
||||
|
||||
2009-01-27 Matthias Claesen <mclasen@redhat.com>
|
||||
|
||||
* src/ui/ui.c: free the result of gdk_text_property_to_utf8_list()
|
||||
even when it returns no data.
|
||||
|
||||
2009-01-27 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
GtkStyle is specific to a particular colormap. Metacity
|
||||
uses different colormaps for windows with different
|
||||
visuals, so it must specialize the GtkStyle.
|
||||
|
||||
Closes #568365 and #513944.
|
||||
|
||||
* src/ui/frames.[ch]: Keep a GtkStyle for each MetaUIFrame, which is
|
||||
obtained by calling gtk_style_attach() on the style for the
|
||||
MetaFrames. When the style of the MetaFrames changes, reattach
|
||||
everything. When we call gtk_style_set_background() pass in the
|
||||
right style.
|
||||
|
||||
* src/ui/themes.[ch]: Create a _with_style() variant of functions that
|
||||
previously took the style from widget->style passed in, so we
|
||||
can draw with the right style for the colormap.
|
||||
|
||||
2009-01-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Added a gconf key to swap the meanings of the right and
|
||||
middle buttons when the modifier key is held down.
|
||||
Closes #437910. Thanks to Matt Kraai for looking over
|
||||
the patch.
|
||||
|
||||
* src/core/display.c:
|
||||
* src/core/prefs.c:
|
||||
* src/include/prefs.h:
|
||||
* src/metacity.schemas.in.in:
|
||||
|
||||
2009-01-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
All the window properties are now handled using simple
|
||||
window property handlers. Closes #549886.
|
||||
|
||||
* src/core/window-private.h:
|
||||
* src/core/window-props.c:
|
||||
* src/core/window.c:
|
||||
|
||||
2009-01-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
More of the window properties are checked using simple
|
||||
window property handlers. The ones which remain don't
|
||||
actually look up the new value in the ordinary way, and
|
||||
so are a little trickier to merge. Added an "initial"
|
||||
flag to be on the safe side that the behaviour is the
|
||||
same as before (so we don't do things when a window's
|
||||
first mapped that we only used to do when a property
|
||||
changed). Partial fix for bug #549886.
|
||||
|
||||
* src/core/window-props.c:
|
||||
* src/core/window-props.h:
|
||||
* src/core/window.c:
|
||||
|
||||
2009-01-25 Elijah Newren <newren gmail com>
|
||||
|
||||
* src/core/window.c: add support for _NET_WM_MOVERESIZE_CANCEL.
|
||||
|
||||
2009-01-10 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/theme.[ch]: add meta_theme_draw_frame_by_name, which
|
||||
is needed for the theme editor.
|
||||
|
||||
2008-12-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.144.
|
||||
|
||||
2008-12-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.89 release.
|
||||
|
||||
2008-12-25 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/include/all-keybindings.h: alt-F10 toggles maximisation,
|
||||
alt-F5 only restores. Also rename "unmaximize" to "restore".
|
||||
* src/ui/frames.c: Rename "unmaximize" to "restore".
|
||||
Closes #343824.
|
||||
|
||||
2008-12-25 Frederic Peters <fpeters@0d.be>
|
||||
|
||||
* src/core/main.c: (main): added call to g_thread_init(), as ORBit2
|
||||
stopped doing it and Metacity is using gconf; closes #565517.
|
||||
|
||||
2008-12-24 Yanko Kaneti <yaneti@declera.com>
|
||||
|
||||
* src/metacity.schemas.in.in: add screenshot commands which had
|
||||
mistakenly been removed; closes #564343, Launchpad bug 298463,
|
||||
Red Hat bug 474635, and probably others.
|
||||
|
||||
2008-12-24 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/include/all-keybindings.h: fix move_to_corner_se
|
||||
|
||||
2008-12-21 Colin Walters <walters@verbum.org>
|
||||
|
||||
* src/core/window.c: windows which attempt to present themselves
|
||||
but are offscreen end up demanding attention, unless they
|
||||
are transient, when they move to the current workspace
|
||||
as before. Closes #482354.
|
||||
|
||||
2008-12-19 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/frames.c: when the user double-clicks the title bar,
|
||||
end the grab op. Closes #401028.
|
||||
|
||||
2008-12-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.89.
|
||||
|
||||
2008-12-16 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.55 release.
|
||||
|
||||
2008-12-15 Erwann Chenede <erwann.chenede@sun.com>
|
||||
|
||||
* configure.in: fix build on Solaris. Closes #564123.
|
||||
|
||||
2008-12-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.55.
|
||||
|
||||
2008-12-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.34 release.
|
||||
|
||||
2008-12-02 Matt Kraai <kraai@ftbfs.org>
|
||||
|
||||
* src/core/iconcache.c: patches to fixes for -Wall. Closes #562939.
|
||||
|
||||
2008-12-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.34.
|
||||
|
||||
2008-12-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.21 release.
|
||||
|
||||
2008-12-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: gnome-doc-tools version doesn't need to be so high.
|
||||
* src/compositor/compositor-xrender.c: disable the entire file if the
|
||||
compositor is disabled.
|
||||
* src/core/async-getprop.[ch]: fixes for -Wall
|
||||
* src/core/iconcache.c: fixes for -Wall
|
||||
* src/core/testasyncgetprop.c: fixes for -Wall
|
||||
* src/core/xprops.c: fixes for -Wall
|
||||
|
||||
2008-11-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/announce-wrangler.py: linked language codes to po files
|
||||
* tools/commit-wrangler.py: print revision url
|
||||
|
||||
2008-11-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/announce-wrangler.py: renamed ini file
|
||||
* tools/commit-wrangler.py: rewriting in terms of moap
|
||||
|
||||
2008-11-25 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.21.
|
||||
|
||||
2008-11-25 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.13 release.
|
||||
|
||||
2008-11-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/announce-wrangler.py (added): script to produce announcements
|
||||
|
||||
2008-11-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/xprops.c: add casts (#562106)
|
||||
|
||||
2008-11-25 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* metacity.doap: change to standard description.
|
||||
|
||||
2008-11-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.13.
|
||||
|
||||
2008-11-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.8 release.
|
||||
|
||||
2008-11-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* po/POTFILES.in: add new bindings file
|
||||
|
||||
2008-11-23 Daniel Macks <dmacks@netspace.org>
|
||||
|
||||
reviewed by: Thomas Thurman
|
||||
|
||||
* src/Makefile.am: reorder compiler flags so local includes come last.
|
||||
Closes #562033.
|
||||
|
||||
2008-11-23 Daniel Macks <dmacks@netspace.org>
|
||||
|
||||
reviewed by: Thomas Thurman
|
||||
|
||||
* configure.in: only accept --enable-compositor if we find we can
|
||||
actually composite. Closes #560990.
|
||||
|
||||
2008-11-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/display.c: remove apparently spurious warnings about
|
||||
operations on window "none"
|
||||
|
||||
2008-11-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/util.c: Set _POSIX_C_SOURCE to 200112L as it should always
|
||||
have been, in an attempt to close #561962.
|
||||
|
||||
2008-11-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Set -ansi so people stop complaining about C99.
|
||||
|
||||
2008-11-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c: fix stupid infinite loop when GConf is turned off.
|
||||
|
||||
2008-11-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c: fix two places where there was a warning
|
||||
if GConf was turned off.
|
||||
|
||||
2008-11-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/all-keybindings.h: "backward", not "backwards" throughout.
|
||||
|
||||
2008-11-20 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: turned on -Wall and -Werror in order to
|
||||
trap as many problems as possible.
|
||||
* src/ui/resizepopup.c: added correct #include.
|
||||
* src/ui/theme-viewer.c: initialised variable.
|
||||
* src/core/xprops.c: corrected cast.
|
||||
* src/core/main.c: added warning if chdir() fails.
|
||||
* src/core/schema-bindings.c: checking the return
|
||||
result of fgets().
|
||||
|
||||
2008-11-20 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Merged screen and window keybinding tables so that
|
||||
we can use just one file for the both. Also incidentally
|
||||
closes #528337. Further efficiencies of scale to come.
|
||||
|
||||
* src/include/prefs.h: replace META_PREF_*_KEYBINDINGS
|
||||
with META_PREF_KEYBINDINGS
|
||||
* src/core/keybindings.c: replace *_bindings with key_bindings
|
||||
and similar throughout; all window-based functions are now
|
||||
guaranteed to receive a window so don't need to check for
|
||||
themselves
|
||||
(find_handler): moved so it can also be called from
|
||||
rebuild_binding_table
|
||||
* src/core/display-private.h: replace *_bindings with key_bindings
|
||||
* src/core/prefs.c: update_*_binding becomes update_key_binding;
|
||||
(change_notify): tidy up references to "enormous if statement"
|
||||
since it's almost entirely gone now
|
||||
* src/core/all-keybindings.h: new merged version of
|
||||
screen-bindings.h and window-bindings.h.
|
||||
|
||||
2008-11-16 David Trowbridge <trowbrds@gmail.com>
|
||||
|
||||
This change adds support for the new _NET_WM_FULLSCREEN_MONITORS
|
||||
property and client message. This allows client applications to request
|
||||
that a fullscreen window cover more than one monitor.
|
||||
|
||||
* src/include/boxes.h:
|
||||
* src/core/boxes.c: Add meta_rectangle_union
|
||||
|
||||
* src/core/window-private.h:
|
||||
* src/core/window.c:
|
||||
(meta_window_new_with_attrs, meta_window_free, set_net_wm_state,
|
||||
meta_window_update_fullscreen_monitors, meta_window_client_message): Add
|
||||
MetaWindow property to store fullscreen monitors field, update
|
||||
_NET_WM_FULLSCREEN_MONITORS property on windows, and handle client
|
||||
message.
|
||||
|
||||
* src/core/atomnames.h: Add _NET_WM_FULLSCREEN_MONITORS atom.
|
||||
|
||||
* src/core/constraints.c (setup_constraint_info): If
|
||||
_NET_WM_FULLSCREEN_MONITORS is interesting, use the data stored in
|
||||
MetaWindow::fullscreen_monitors to determine the fullscreen area instead
|
||||
of the basic xinerama_info area.
|
||||
|
||||
2008-11-11 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Removed deprecated calls. Closes #560445.
|
||||
|
||||
* src/core/delete.c: remove deprecated g_strcasecmp.
|
||||
* src/include/main.h: no actual deprecated call, but
|
||||
a mention of one which was out of date.
|
||||
|
||||
2008-11-11 Maxim Ermilov <zaspire@rambler.ru>
|
||||
|
||||
Clean up #includes according to the GNOME Goal.
|
||||
Closes #560449. Patch is 122467.
|
||||
|
||||
* src/core/place.c:
|
||||
* src/ui/draw-workspace.h:
|
||||
* src/ui/gradient.h:
|
||||
* src/ui/metaaccellabel.c:
|
||||
* src/ui/metaaccellabel.h:
|
||||
* src/ui/preview-widget.c:
|
||||
* src/ui/preview-widget.h:
|
||||
* src/ui/resizepopup.c:
|
||||
* src/ui/theme.c:
|
||||
* src/ui/theme.h:
|
||||
* src/ui/themewidget.h:
|
||||
|
||||
2008-11-10 Elijah Newren <newren gmail com>
|
||||
|
||||
* src/metacity.schemas.in.in: updated description of
|
||||
raise_on_click:
|
||||
http://bugzilla.gnome.org/show_bug.cgi?id=445447#c6
|
||||
|
||||
2008-11-08 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: added dependency on Zenity
|
||||
* src/core/keybindings.c: remove error_on_generic_command() and
|
||||
error_on_terminal_command(); rewrite error_on_command
|
||||
in terms of meta_show_dialog()
|
||||
* src/core/util.c: add meta_show_dialog() to call Zenity
|
||||
* src/include/util.h: ditto
|
||||
|
||||
2008-11-03 Olav Vitters <olav@bkor.dhs.org>
|
||||
|
||||
* src/ui/theme-parser.c: Fix build by readding accidentally removed
|
||||
'}'.
|
||||
|
||||
2008-10-29 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/ui/theme-parser.c: variable names in messages should be
|
||||
double-quoted. Closes #558309.
|
||||
|
||||
2008-10-28 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/include/screen-bindings.h: fix accidental name change of
|
||||
run_command_terminal. Closes #557943.
|
||||
|
||||
2008-10-27 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c (titlebar_handler, handle_preference_update_enum):
|
||||
Add initialisation which I missed on the previous checkin. Also
|
||||
an extra comment.
|
||||
|
||||
2008-10-27 Brian Cameron <brian.cameron@sun.com>
|
||||
|
||||
Fix some crashes with the new GDM 2.24. Closes #558058.
|
||||
|
||||
* src/ui/ui.c (meta_ui_parse_modifier): another null check
|
||||
* src/core/prefs.c (titlebar_handler, button_layout_handler):
|
||||
more null checks.
|
||||
|
||||
2008-10-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.c (mouse_button_mods_handler): Ignore values
|
||||
of .../mouse_button_modifier key if the key's missing.
|
||||
Closes Launchpad bug #258054, Launchpad bug #266929.
|
||||
|
||||
2008-10-23 Frederic Peters <fpeters@0d.be>
|
||||
|
||||
* doc/creating_themes/C/creating-metacity-themes.xml: added missing @id
|
||||
on <book> top element.
|
||||
|
||||
2008-10-23 Frederic Peters <fpeters@0d.be>
|
||||
|
||||
* doc/creating_themes/Makefile.am:
|
||||
* doc/creating_themes/C/creating_metacity_themes.xml: renamed document
|
||||
to creating-metacity-themes to match other manuals usage of dashes.
|
||||
|
||||
2008-10-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.8.
|
||||
|
||||
2008-10-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.5 release.
|
||||
|
||||
2008-10-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/schema-bindings.c: fix stupid thinko which
|
||||
caused defaults to be incorrect
|
||||
* src/include/window-bindings.h: "space" needs to be
|
||||
lowercase
|
||||
|
||||
2008-10-23 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Support _NET_WM_STATE_STICKY (i.e. allow third-party apps to decide
|
||||
whether a window is on all workspaces). Bug found by Ka-Hing
|
||||
Cheung. Closes #557536.
|
||||
|
||||
* src/core/window.c (set_net_wm_state): report it
|
||||
* src/core/window.c (meta_window_client_message): set sticky
|
||||
if we receive it
|
||||
* src/core/window-props.c: set sticky if we find it
|
||||
* src/core/atomnames.h: add _NET_WM_STATE_STICKY
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/schema-bindings.c: support builds outside tree properly.
|
||||
* src/Makefile.am: ditto.
|
||||
* po/POTFILES.skip: ditto.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.5.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.3 release.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: bump to 2.25.3 (thought the release script
|
||||
had already done this)
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Fixes to make distcheck work again.
|
||||
|
||||
* src/Makefile.am: include *-binding.h, and make the schema
|
||||
building work when builddir != srcdir
|
||||
* po/POTFILES.in (src/core/keybindings.): include *-binding.h
|
||||
|
||||
2008-10-22 Götz Waschk <waschk@mandriva.org>
|
||||
|
||||
* configure.in: add libm reference. Closes #557357.
|
||||
|
||||
2008-10-22 Murray Cumming <murrayc@murrayc.com>
|
||||
|
||||
* doc/creating_themes/C/creating_metacity_themes.xml:
|
||||
Fixed various tags to make this validate.
|
||||
Bug #557337
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.2 release.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.2 release.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.2 release.
|
||||
|
||||
2008-10-22 Joe Marcus Clarke <marcus@freebsd.org>
|
||||
|
||||
* src/core/main.c (meta_finalize, sigterm_handler): new functions
|
||||
* src/core/main.c (main): add sigterm_handler in case we receive
|
||||
a SIGTERM. Closes #553980.
|
||||
|
||||
2008-10-22 Matthew Martin <mtt.martin@gmail.com>
|
||||
|
||||
* src/core/window.c (meta_window_set_demands_attention): minimised
|
||||
windows are necessarily obscured. Closes #528927.
|
||||
|
||||
2008-10-22 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Slight transformation of the x-macros used in keybindings
|
||||
to make them clearer: write handler names out in full
|
||||
because the old suffix system was confusing to people
|
||||
skim-reading, and switched the order of the last two
|
||||
parameters so more would generally fit on a screen.
|
||||
|
||||
* src/core/keybindings.c, src/core/schema-bindings.c
|
||||
src/core/prefs.c: sympathy changes
|
||||
* src/core/window-bindings.h, src/core/screen-bindings.h:
|
||||
transformation as above
|
||||
|
||||
2008-10-21 Christian Persch <chpe@gnome.org>
|
||||
|
||||
* src/Makefile.am: fix build when schemas are not installed.
|
||||
Closes #557335.
|
||||
|
||||
2008-10-21 Tomas Frydrych <tf@linux.intel.com>
|
||||
|
||||
* src/core/screen-bindings.h: Fix off-by-one error.
|
||||
* src/core/window-bindings.h: Fix off-by-one error.
|
||||
Closes #557201.
|
||||
|
||||
2008-10-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
During a discussion with Rodney Dawes about making life easier
|
||||
for the translators, he pointed out that the short and long
|
||||
forms of almost all the keybindings say much the same thing
|
||||
in different words. I believe this is an unconscionable burden
|
||||
to place on translators, and have therefore merged the short
|
||||
and long descriptions into the short description. The long
|
||||
is now a general explanation of the format, plus possibly a
|
||||
notice about reversibility. Closes #469361, and should solve
|
||||
the l10n issue previously mentioned.
|
||||
|
||||
* src/core/keybindings.c: reflect changes in *-bindings.h
|
||||
* src/core/schema-bindings.c: reflect changes in *-bindings.h
|
||||
* src/core/prefs.c: reflect changes in *-bindings.h
|
||||
* src/core/window-bindings.h: Add flags field, always the same
|
||||
currently, so that it's the same as screen-bindings.h.
|
||||
Also, lose ONLY_BOUND_BY_DEFAULT, since we already had a
|
||||
rather more elegant way to perform the same effect.
|
||||
And merge the long and short descriptions.
|
||||
* src/core/screen-bindings.h (, item): Merge the long and
|
||||
short descriptions.
|
||||
|
||||
2008-10-17 Murray Cumming <murrayc@murrayc.com>
|
||||
|
||||
* configure.in: Call GNOME_DOC_INIT() so we can use the gnome-doc-utils
|
||||
variables in our Makefile.am:
|
||||
* doc/Makefile.am:
|
||||
* doc/creating_themes/Makefile.am
|
||||
* doc/creating_themes/C/creating_metacity_themes.xml:
|
||||
Added this new DocBook document, converted from the HTML here
|
||||
http://blogs.gnome.org/metacity/2008/05/30/themes/
|
||||
This will be installed for yelp and can be translated and hosted on
|
||||
library.gnome.org.
|
||||
|
||||
2008-10-15 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Since Patrick Niklaus's checkin of 2008-08-14 dealt with windows with
|
||||
no icons not using fallback icons, we don't need fallback icons.
|
||||
|
||||
* src/ui/theme.h: remove fallback icons from struct.
|
||||
* src/core/iconcache.c (meta_read_icons): don't look for fallbacks.
|
||||
* src/*/ui.[ch] (meta_ui_get_fallback_icons): removed
|
||||
* src/ui/theme-parser.c (typedef, parse_toplevel_element): don't
|
||||
parse fallback specifications.
|
||||
|
||||
2008-10-13 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* po/POTFILES.in: add screen-bindings.h
|
||||
|
||||
2008-10-13 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* po/POTFILES.in: raw schemas is now .in.in
|
||||
* po/LINGUAS: add Latin
|
||||
|
||||
2008-10-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Make the bindings in src/core/*-bindings.h generate
|
||||
GConf schemas too. Note that there's an i18n issue
|
||||
(documented in schema-bindings.c) which will be fixed
|
||||
next checkin.
|
||||
|
||||
* src/core/schema-bindings.c: major fixup to make it
|
||||
ready for use as part of the actual build process.
|
||||
* src/Makefile.am: added magic to make it call schema-bindings
|
||||
after it builds it.
|
||||
* src/core/window-bindings.h: added comments;
|
||||
also, window menu was listed variously as alt-Space
|
||||
and alt-Print; it should have been alt-Space.
|
||||
* src/metacity.schemas.in.in: renamed from s/\.in$//,
|
||||
sentinel added for the generated bindings,
|
||||
warning at the top now untrue, and removed.
|
||||
|
||||
2008-10-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Fix annoying bug where alt-tab and friends would jump
|
||||
backwards a space on initial movement.
|
||||
|
||||
* src/core/screen-bindings.h: although reversed bindings
|
||||
are necessarily reversible, don't set both bits in the
|
||||
constant, or when we test for them we'll get confused.
|
||||
|
||||
2008-10-12 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
An attempt to make life a little easier for our beloved translators;
|
||||
this has the same behaviour as before, but removes over thirty
|
||||
translation strings.
|
||||
|
||||
* src/core/session.c (start_element_handler): all "attribute not found
|
||||
on element" strings are identical
|
||||
* src/ui/theme-parser.c (locate_attributes): allow attribute names to
|
||||
be preceded with "!" (in the code) to show they're required.
|
||||
(parse_aspect_ratio, parse_distance, parse_toplevel_element,
|
||||
parse_style_element, parse_gradient_element, static, parse_border,
|
||||
parse_style_set_element, parse_draw_op_element): use the new "!"
|
||||
prefix for locate_attributes(), or in some cases just the identical
|
||||
constant, for generating this error.
|
||||
* src/ui/theme.c (check_state, meta_theme_validate): add
|
||||
translator comments
|
||||
* src/ui/resizepopup.c (update_size_window): add
|
||||
translator comments
|
||||
|
||||
2008-10-06 William Lachance <wrlach@gmail.com>
|
||||
|
||||
Pass modified mouse button events down to panel windows
|
||||
instead of dealing with them ourselves. Closes #554428.
|
||||
|
||||
* src/core/display.c (prefs_changed_callback): don't grab mouse
|
||||
buttons on panels
|
||||
* src/core/window.c (meta_window_new_with_attrs): ditto
|
||||
|
||||
2008-10-05 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Second half of the switch to using x-macros for keybindings so that
|
||||
we don't have lots of places with the same information which must
|
||||
stay in the same order. This time it's screen bindings.
|
||||
|
||||
* src/core/screen-bindings.h: New file, containing screen bindings.
|
||||
* src/core/schema-bindings.c: added ability to output screen bindings.
|
||||
* src/core/window-bindings.h: tiny tweak to comment
|
||||
* src/core/keybindings.c: generate function prototypes using s-b.h;
|
||||
several handlers modified to use ints rather than ints cast into
|
||||
pointers, or renamed.
|
||||
* src/include/prefs.h: generate names of bindings using s-b.h;
|
||||
generate screen_handlers using s-b.h;
|
||||
arguments to bindings are ints and not ints cast to pointers;
|
||||
several handler functions renamed to consistent names.
|
||||
* src/core/prefs.c (meta_prefs_set_num_workspaces, init_bindings):
|
||||
generate screen_handlers using s-b.h;
|
||||
generate screen_string_bindings using s-b.h (and add check for
|
||||
null bindings in init_bindings to enable this simply).
|
||||
|
||||
2008-10-05 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* tools/ppa-magic.py: experimental tool for Launchpad upload
|
||||
|
||||
2008-10-05 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* metacity.doap: Havoc is an author; Thomas has an email address;
|
||||
add a ton of release information going back to the early days,
|
||||
although not right to the beginning.
|
||||
|
||||
2008-09-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* autogen.sh: not all versions of /bin/sh can handle this script,
|
||||
so specify one. Also update the error message because we don't
|
||||
use CVS these days.
|
||||
|
||||
2008-09-20 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* po/POTFILES.in: fix name of window-bindings.h
|
||||
|
||||
2008-09-20 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* po/POTFILES.in: added new files and re-sorted
|
||||
|
||||
2008-09-12 Vincent Untz <vuntz@gnome.org>
|
||||
|
||||
Install desktop files in both
|
||||
.../share/applications and .../share/gnome/wm-properties.
|
||||
Copied in from the 2.23.x branch. Closes #549479.
|
||||
|
||||
* src/metacity-wm.desktop.in: new file
|
||||
* src/.cvsignore: include the above
|
||||
* src/Makefile.am: install the above
|
||||
|
||||
2008-09-06 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
An attempt to keep all information about window bindings
|
||||
in the same place. Screen bindings to come.
|
||||
|
||||
* src/core/window-bindings.h: new file, list of all window bindings
|
||||
* src/include/prefs.h: drop all the existing window-binding macros
|
||||
|
||||
* src/core/schema-bindings.c (): output all the schema blocks that
|
||||
would appear in metacity.schema for these window bindings. This
|
||||
ought to become part of the build process, and hopefully will soon.
|
||||
When this works it will also close #469361.
|
||||
|
||||
* src/core/keybindings.c: generate handle_* prototypes using
|
||||
x-macros; populate window_handlers using x-macros; rename several
|
||||
functions to have consistent names; do_handle_move_to_workspace(),
|
||||
handle_move_to_workspace_flip(), and handle_move_to_workspace() all
|
||||
merged into handle_move_to_workspace.
|
||||
|
||||
* src/core/prefs.c: generate window_bindings and window_string_bindings
|
||||
using x-macros; (meta_prefs_set_compositing_manager) fix unrelated
|
||||
problem with use of GConf functions when GConf was disabled.
|
||||
|
||||
* src/core/core.c (meta_core_get_menu_accelerator): binding names
|
||||
given as literals since this is the only place in the code they
|
||||
now appear
|
||||
|
||||
|
||||
2008-09-03 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/metacity.desktop.in: removed invalid "Window Manager" group
|
||||
at request of Matthias Clasen.
|
||||
|
||||
2008-09-02 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Desktop file moved, according to policy change. Closes #549479.
|
||||
|
||||
* src/metacity.desktop.in: Don't display the desktop file
|
||||
* src/Makefile.am: Desktop file goes in apps directory
|
||||
|
||||
2008-09-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.25.2.
|
||||
|
||||
2008-09-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.1 release.
|
||||
|
||||
2008-09-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/workspace.c: When a workspace's list of struts
|
||||
is freed, free the struts too. Closes #549952, and #468075.
|
||||
|
||||
2008-09-01 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Add new move_to_center keybinding, requested by Khanh-Dang Nguyen
|
||||
Thu Lam; closes #549979.
|
||||
|
||||
* src/include/prefs.h (void): add name of new binding
|
||||
* src/core/prefs.c: added pref for it
|
||||
* src/core/keybindings.c (handle_move_to_center): new function
|
||||
* src/metacity.schemas.in: included new binding
|
||||
|
||||
2008-08-31 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/prefs.[ch] (meta_prefs_set_compositing_manager): new
|
||||
function.
|
||||
* src/core/main.c (meta_parse_options): turn the compositing
|
||||
manager on or off as necessary.
|
||||
|
||||
2008-08-30 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* src/core/window.c (process_property_notify): moving all
|
||||
messages about properties to the top, as a start at #549886
|
||||
|
||||
2008-08-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: fix version number which broke
|
||||
|
||||
2008-08-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release version bump to 2.25.1.
|
||||
|
||||
2008-08-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: correct incorrect version number
|
||||
|
||||
2008-08-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.25.1 release.
|
||||
|
||||
2008-08-18 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
Adding doxygen headers to some files.
|
||||
|
||||
* src/core/metacity-Xatomtype.h
|
||||
* src/core/main.c
|
||||
* src/core/screen-private.h
|
||||
* src/core/window-private.h
|
||||
* src/core/keybindings.h
|
||||
* src/core/session.h
|
||||
* src/core/workspace.h
|
||||
* src/core/window-props.h ()
|
||||
|
||||
2008-08-18 Eric Piel <e.a.b.piel@tudelft.nl>
|
||||
|
||||
* src/core/workspace.c (ensure_work_areas_validated): add a copy of
|
||||
each strut in a window to the workspace's strut list, instead of
|
||||
using the copy in the list (which would mean it was double-freed).
|
||||
Believed to fix #468075.
|
||||
|
||||
2008-08-16 Ted Percival <ted@midg3t.net>
|
||||
|
||||
Ensure the user_rect is set sanely for windows that start maximized.
|
||||
Prevents maximized windows from warping across the screen.
|
||||
Fixes bug #504692.
|
||||
|
||||
* src/core/window.c (save_user_placement): renamed version of
|
||||
meta_window_save_user_rect().
|
||||
* src/core/window.c (force_save_user_placement): similar, but will
|
||||
always save user_rect even if the window is maximised or fullscreen.
|
||||
* src/core/window.c (meta_window_move_resize_internal): unplaced
|
||||
windows have force_save_user_placement() called instead of
|
||||
save_user_placement().
|
||||
|
||||
2008-08-14 Patrick Niklaus <marex@compiz-fusion.org>
|
||||
|
||||
Icons for windows are taken from the desktop theme, not from
|
||||
the Metacity theme or from the fallback icon that Metacity
|
||||
provided. Closes #524343.
|
||||
|
||||
* src/ui/ui.c: Use GtkIconTheme to load the default window icon.
|
||||
Assumes the existence of an icon called "window", otherwise
|
||||
falls back to "gtk-missing-image". Fixes #524343.
|
||||
* src/ui/preview-widget: See above.
|
||||
* src/include/common.h: Add META_DEFAULT_ICON_NAME.
|
||||
* src/Makefile.am: Remove default_icon.png from inlinepixbufs.h.
|
||||
* src/default_icon.png: Removed.
|
||||
|
||||
2008-08-14 Akira TAGOH <akira@tagoh.org>
|
||||
|
||||
* doc/man/metacity-message.1: new manual page.
|
||||
* doc/man/Makefile.am: added new reference.
|
||||
|
||||
2008-08-13 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-branch bump to 2.25.0.
|
||||
|
||||
2008-08-04 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.144.
|
||||
|
||||
2008-08-04 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.89 release.
|
||||
|
||||
2008-07-26 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* metacity.doap (added): DOAP file (first pass, anyway).
|
||||
|
||||
2008-07-14 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* configure.in: Post-release bump to 2.23.89.
|
||||
|
||||
2008-07-14 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* NEWS: 2.23.55 release.
|
||||
|
||||
47
MAINTAINERS
47
MAINTAINERS
@@ -1,43 +1,8 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
Tomas Frydrych
|
||||
Email: tf linux intel com
|
||||
Userid: tomasf
|
||||
|
||||
Elijah Newren
|
||||
Email: newren gmail com
|
||||
Userid: newren
|
||||
Owen Taylor
|
||||
Email: otaylor redhat com
|
||||
Userid: otaylor
|
||||
|
||||
- Usually won't touch the theme bugs (isn't interested) or the
|
||||
compositor (until open source nvidia drivers are up to snuff).
|
||||
Tends to be most interested in libwnck/gtk interactions, focus
|
||||
issues, constraints problems, and raising/stacking, but works on
|
||||
just about anything other than themes and the compositor.
|
||||
|
||||
Thomas Thurman
|
||||
Email: thomas thurman org uk
|
||||
Userid: tthurman
|
||||
|
||||
- Responsible for all theme bugs and the compositor (thank goodness
|
||||
Thomas got involved, eh?). I'm sure he'll replace this sentence
|
||||
with his interests when he reads it. ;-)
|
||||
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
- Original author. Doesn't patch metacity anymore, but is active in
|
||||
answering questions, responding to bugs, providing very helpful
|
||||
suggestions and insight, and even assisting with debugging.
|
||||
|
||||
|
||||
Important historical figureheads
|
||||
--------------------------------
|
||||
|
||||
Rob Adams (readams readams net)
|
||||
- Was the main maintainer of metacity for a while; particular areas
|
||||
of focus included xinerama, placement, and an older version of the
|
||||
constraints code. Still responds to bugs every once in a while.
|
||||
|
||||
Søren Sandmann (sandmann redhat com)
|
||||
- Wrote most of the current compositing manager code + libcm
|
||||
|
||||
43
METACITY_MAINTAINERS
Normal file
43
METACITY_MAINTAINERS
Normal file
@@ -0,0 +1,43 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
|
||||
Elijah Newren
|
||||
Email: newren gmail com
|
||||
Userid: newren
|
||||
|
||||
- Usually won't touch the theme bugs (isn't interested) or the
|
||||
compositor (until open source nvidia drivers are up to snuff).
|
||||
Tends to be most interested in libwnck/gtk interactions, focus
|
||||
issues, constraints problems, and raising/stacking, but works on
|
||||
just about anything other than themes and the compositor.
|
||||
|
||||
Thomas Thurman
|
||||
Email: thomas thurman org uk
|
||||
Userid: tthurman
|
||||
|
||||
- Responsible for all theme bugs and the compositor (thank goodness
|
||||
Thomas got involved, eh?). I'm sure he'll replace this sentence
|
||||
with his interests when he reads it. ;-)
|
||||
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
|
||||
Havoc Pennington
|
||||
Email: hp redhat com
|
||||
Userid: hp
|
||||
- Original author. Doesn't patch metacity anymore, but is active in
|
||||
answering questions, responding to bugs, providing very helpful
|
||||
suggestions and insight, and even assisting with debugging.
|
||||
|
||||
|
||||
Important historical figureheads
|
||||
--------------------------------
|
||||
|
||||
Rob Adams (readams readams net)
|
||||
- Was the main maintainer of metacity for a while; particular areas
|
||||
of focus included xinerama, placement, and an older version of the
|
||||
constraints code. Still responds to bugs every once in a while.
|
||||
|
||||
Søren Sandmann (sandmann redhat com)
|
||||
- Wrote most of the current compositing manager code + libcm
|
||||
@@ -1,7 +1,6 @@
|
||||
|
||||
SUBDIRS=src po doc
|
||||
|
||||
EXTRA_DIST = HACKING MAINTAINERS rationales.txt \
|
||||
intltool-extract.in intltool-merge.in intltool-update.in
|
||||
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
|
||||
|
||||
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
||||
|
||||
237
NEWS
237
NEWS
@@ -1,3 +1,240 @@
|
||||
2.26.0
|
||||
======
|
||||
|
||||
Thanks to Luca Ferretti, Matt Kraai, and Neil Jagdish Patel for
|
||||
improvements in this version.
|
||||
|
||||
- queue frame resize on window undecorate (Neil)
|
||||
- fix description of desktop background (Luca) (#569649)
|
||||
- wrap g_error calls in braces (Matt)
|
||||
|
||||
Translations
|
||||
Amitakhya Phukan (as), Mikel González (ast), Ihar Hrachyshka (be@latin), Runa
|
||||
Bhattacharjee (bn_IN), David Planella (ca), Petr Kovar (cs), Ask Hjorth
|
||||
Larsen (da), Christian Kirbach (de), Jennie Petoumenou (el), David Lodge (en_GB),
|
||||
Jorge González (es), Mattias Põldaru (et), Iñaki Larrañaga Murgoitio (eu),
|
||||
Ilkka Tuohela (fi), Claude Paroz (fr), Ankit Patel (gu), Mark Krapivner (he),
|
||||
Rajesh Ranjan (hi), Gabor Kelemen (hu), Luca Ferretti (it), Takeshi AIHANA (ja),
|
||||
Changwoo Ryu (ko), Gintautas Miliauskas (lt), Sangeeta Kumari (mai), Sandeep
|
||||
Shedmake (mr), Wouter Bolsterlee (nl), Manoj Kumar Giri (or), Duarte Loreto (pt),
|
||||
Leonardo Ferreira Fontenelle (pt_BR), Adi Roiban (ro), Yuriy Penkin (ru), Daniel
|
||||
Nylander (sv), I. Felix (ta), Krishna Babu K (te), Theppitak Karoonboonyanan (th),
|
||||
Clytie Siddall (vi), Chao-Hsiung Liao (zh_HK), Chao-Hsiung Liao (zh_TW)
|
||||
|
||||
2.25.144
|
||||
========
|
||||
|
||||
Thanks to Matthias Claesen, Matt Kraai, Elijah Newren, Owen Taylor, and Thomas
|
||||
Thurman for improvements in this version.
|
||||
|
||||
- Optimise window property lookup (Thomas) (#549886)
|
||||
- Fix slip in the above (Matt)
|
||||
- Several memory leaks fixed (Matthias) (#552303, #552973, #552307)
|
||||
- Fix longstanding crasher about colourmaps (Owen) (#568365)
|
||||
- Alt+middle/right buttons can be switched (Thomas) (#437910)
|
||||
- Support _NET_WM_MOVERESIZE_CANCEL (Elijah)
|
||||
- minor fix paving the way for a theme editor (Thomas)
|
||||
|
||||
Translations
|
||||
David Planella (ca), Jorge González (es), Mattias Põldaru (et), saudat
|
||||
mohammed (ha), Yuval Tanny\n (he), Gabor Kelemen (hu), Onye, Sylvester (ig),
|
||||
Changwoo Ryu (ko), Raivis Dejus (lv), Kjartan Maraas (nb), Daniel Nylander (sv),
|
||||
Fajuyitan, Sunday Ayo (yo), 甘露 (Gan Lu) (zh_CN)
|
||||
|
||||
2.25.89
|
||||
=======
|
||||
|
||||
Thanks to Yanko Kaneti, Frederic Peters, Thomas Thurman, and Colin Walters for
|
||||
improvements in this version.
|
||||
|
||||
- The maximisation key is a toggle. (Thomas) (#343824)
|
||||
- "Unmaximise" is now called "restore". (Thomas) (#343824)
|
||||
- New thread handling call for gconf (Frederic) (#565517)
|
||||
- Add screenshot commands back which had been removed (Yanko) (#565343)
|
||||
- move_to_corner_se keybinding fixed (Thomas)
|
||||
- Windows on other workspaces which attempt to present themselves
|
||||
are marked as needing attention (Colin) (#482354)
|
||||
- End the grab op when the user clicks the titlebar (Thomas) (#401028)
|
||||
|
||||
Translations
|
||||
Jorge González (es)
|
||||
|
||||
2.25.55
|
||||
=======
|
||||
|
||||
Thanks to Erwann Chenede for improvements in this version.
|
||||
|
||||
- Fix build on Solaris (Erwann) (#564123)
|
||||
|
||||
Translations
|
||||
Mattias Põldaru (et), Luca Ferretti (it)
|
||||
|
||||
2.25.34
|
||||
=======
|
||||
|
||||
Thanks to Matt Kraai for improvements in this version.
|
||||
|
||||
- Fixes to Thomas's earlier fixes (Matt) (#562939)
|
||||
|
||||
Translations
|
||||
None
|
||||
|
||||
2.25.21
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Fixes to allow building without compositor again (Thomas)
|
||||
- Fixes for -Wall problems (Thomas)
|
||||
- Various tool updates (Thomas)
|
||||
|
||||
Translations: none
|
||||
|
||||
|
||||
2.25.13
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Add casts to fix failure to build from source on 64bit hosts (Thomas) (#562106)
|
||||
- Added script to produce annoucements (Thomas)
|
||||
|
||||
Translations
|
||||
Jorge González (es)
|
||||
|
||||
2.25.8
|
||||
======
|
||||
|
||||
Thanks to Brian Cameron, Maxim Ermilov, Daniel Macks, Elijah Newren, Frederic
|
||||
Peters, Thomas Thurman, David Trowbridge, and Olav Vitters for improvements in
|
||||
this version.
|
||||
|
||||
- Reorder compiler flags (Daniel) (#562033)
|
||||
- Fix compositor switch (Daniel) (#560990)
|
||||
- Remove spurious warnings about operations on window "none" (Thomas)
|
||||
- Fix _POSIX_C_SOURCE which was breaking OS X builds (Thomas) (#561962)
|
||||
- -Werror -Wall and -ansi are now standard compile flags (Thomas)
|
||||
- Merge screen and window keybindings files; fix minor alt-tab bug
|
||||
in the process (Thomas) (#528337)
|
||||
- Support _NET_WM_FULLSCREEN_MONITORS (David)
|
||||
- Remove some deprecated calls (Thomas) (#560445)
|
||||
- Clean up #includes (Maxim) (#560449)
|
||||
- Update description of raise_on_click (Elijah)
|
||||
- First dialogue delegated to zenity (Thomas)
|
||||
- fix theme-parser typo (Olav)
|
||||
- double-quote variable names in messages (Thomas) (#558309)
|
||||
- fix accidental renaming of run_command_terminal (Thomas) (#557943)
|
||||
- some null checks; problems exposed by new GDM (Brian) (#558058)
|
||||
- ignore mouse button modifier if it's missing (Thomas) (Launchpad 258054, Launchpad 266929)
|
||||
- fix docbook markup (Frederic)
|
||||
|
||||
Translations
|
||||
Astur (ast), Jorge González (es), Thomas Thurman (la), Leonardo Ferreira
|
||||
Fontenelle (pt_BR), Daniel Nylander (sv)
|
||||
|
||||
2.25.5
|
||||
======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Allow third-party apps to decide whether a window appears
|
||||
on all workspaces (Thomas) (#557536)
|
||||
- Fixed keybindings script (again) (Thomas)
|
||||
|
||||
Translations
|
||||
David Planella (ca), Robert Millan (ca@valencia)
|
||||
|
||||
2.25.3
|
||||
======
|
||||
|
||||
Brown paper bag release which fixes numerous build problems from last night's
|
||||
release of 2.25.2. Apologies.
|
||||
|
||||
Thanks to Murray Cumming, Thomas Thurman, and Götz Waschk for improvements
|
||||
in this version.
|
||||
|
||||
- Fix distcheck (Thomas) (#557356)
|
||||
- add libm reference (Götz) (#557357)
|
||||
- fix docbook tags (Murray) (#557337)
|
||||
|
||||
Translations
|
||||
Yavor Doganov (bg), David Planella (ca), Robert Millan (ca@valencia), Kenneth
|
||||
Nielsen (da), Hendrik Richter (de), Ivar Smolin (et), Claude Paroz (fr), Seán de
|
||||
Búrca (ga), Launchpad Translations Administrators (hr), Gabor Kelemen (hu),
|
||||
Thomas Thurman (la), Žygimantas Beručka (lt), Kjartan Maraas (nb), Duarte
|
||||
Loreto (pt), Djavan Fagundes (pt_BR), Mugurel Tudor (ro), Pavol Šimo (sk),
|
||||
Laurent Dhima (sq), Горан Ракић (sr), Theppitak Karoonboonyanan (th),
|
||||
Funda Wang (zh_CN)
|
||||
|
||||
2.25.2
|
||||
======
|
||||
|
||||
Thanks to Joe Marcus Clarke, Murray Cumming, Tomas Frydrych, William Lachance,
|
||||
Matthew Martin, Christian Persch, Thomas Thurman, and Vincent Untz for
|
||||
improvements in this version.
|
||||
|
||||
- Add handler for SIGTERM (Joe) (#553980)
|
||||
- Minimised windows are necessarily obscured (Matthew) (#528927)
|
||||
- Build fixes with the above (Christian, Tomas, Thomas) (#557335)
|
||||
(#557201) (#469361)
|
||||
- Changed keybindings to be in a single place (Thomas) (#469361)
|
||||
- Add new document about themes (Murray)
|
||||
- Remove obsolete support for fallback icons (Thomas)
|
||||
- Pass modified mouse events to panels (William) (#554428)
|
||||
- Change where desktop files should go (Vincent) (#549479)
|
||||
|
||||
Translations
|
||||
Yavor Doganov (bg), David Planella (ca), Kenneth Nielsen (da), Hendrik
|
||||
Richter (de), Ivar Smolin (et), Claude Paroz (fr), Seán de Búrca (ga), Launchpad
|
||||
Translations Administrators (hr), Gabor Kelemen (hu), Thomas Thurman (la),
|
||||
Žygimantas Beručka (lt), Kjartan Maraas (nb), Duarte Loreto (pt), Djavan
|
||||
Fagundes (pt_BR), Mugurel Tudor (ro), Pavol Šimo (sk), Laurent Dhima (sq),
|
||||
Горан Ракић (sr), Theppitak Karoonboonyanan (th), Funda Wang (zh_CN)
|
||||
2.25.1
|
||||
======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Fix small memory leak, found by Matthias Clasen (Thomas) (#549952)
|
||||
- Added move_to_center keybinding suggested by
|
||||
Khanh-Dang Nguyen Thu Lam (Thomas) (#549979)
|
||||
- Compositor can be turned on and off from the command line
|
||||
(#545323) (Thomas)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Petr Kovar (cs), Iñaki Larrañaga Murgoitio (eu), Ilkka
|
||||
Tuohela (fi), Žygimantas Beručka (lt), Duarte Loreto (pt), Djavan
|
||||
Fagundes (pt_BR), Laurent Dhima (sq)
|
||||
|
||||
2.25.0
|
||||
======
|
||||
|
||||
Thanks to Patrick Niklaus, Ted Percival, Eric Piel, Akira TAGOH, and Thomas
|
||||
Thurman for improvements in this version.
|
||||
|
||||
- Fix memory allocation problem in struts (Eric) (probably #468075)
|
||||
- Ensure windows which start maximised know where to jump back
|
||||
to, so they don't warp to other screens (Ted) (#504692)
|
||||
- Added header comments to some files (Thomas)
|
||||
- Icons for windows which are uncooperative enough not to provide
|
||||
an icon are taken from the theme, not built in (Patrick) (#524343)
|
||||
- Added manual page for metacity-message (Akira, from Debian downstream)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Petr Kovar (cs), Ilkka Tuohela (fi), Duarte Loreto (pt), Djavan
|
||||
Fagundes (pt_BR)
|
||||
|
||||
2.23.89
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Added DOAP file. (Thomas)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Luca Ferretti (it), Takeshi AIHANA (ja), Wouter
|
||||
Bolsterlee (nl), Vladimir Melo (pt_BR), Daniel Nylander (sv)
|
||||
|
||||
2.23.55
|
||||
=======
|
||||
|
||||
|
||||
84
README
84
README
@@ -12,7 +12,7 @@ The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-,
|
||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x,
|
||||
2.15.x, 2.17.x.
|
||||
|
||||
COMPILING METACITY
|
||||
COMPILING MUTTER
|
||||
===
|
||||
|
||||
You need GTK+ 2.2. For startup notification to work you need
|
||||
@@ -20,6 +20,7 @@ libstartup-notification at
|
||||
http://www.freedesktop.org/software/startup-notification/ or on the
|
||||
GNOME ftp site. You also need GConf 1.2 (unless building a funky
|
||||
extra-small embedded metacity with --disable-gconf, see below).
|
||||
You need Clutter 0.9.3. You need gobject-introspection 0.6.3.
|
||||
|
||||
REPORTING BUGS AND SUBMITTING PATCHES
|
||||
===
|
||||
@@ -36,47 +37,11 @@ Feel free to send patches too; Metacity is relatively small and
|
||||
simple, so if you find a bug or want to add a feature it should be
|
||||
pretty easy. Send me mail, or put the patch in bugzilla.
|
||||
|
||||
See the HACKING file for some notes on hacking Metacity.
|
||||
See the HACKING file for some notes on hacking Mutter.
|
||||
|
||||
SHRINKING METACITY
|
||||
MUTTER FEATURES
|
||||
===
|
||||
|
||||
Not that metacity is huge, but a substantial amount of code is in
|
||||
preferences handling, in static strings that aren't essential, and in
|
||||
the theme engine.
|
||||
|
||||
You can strip about 70K from the metacity binary by compiling with
|
||||
options such as:
|
||||
|
||||
--disable-gconf
|
||||
--disable-sm
|
||||
--disable-verbose
|
||||
--disable-startup-notification
|
||||
|
||||
However the result is no good for desktop use, all prefs have to be
|
||||
hardcoded in the binary, for example. If you wanted to make a really
|
||||
small metacity, here's some additional stuff you might consider
|
||||
implementing:
|
||||
|
||||
- add --disable-themes, which would replace theme.c and theme-parser.c
|
||||
with a hardcoded implementation of the interface in theme.h,
|
||||
should save about 80K. This should be fairly easy.
|
||||
|
||||
- add --disable-gtk, which would implement the interface in ui.h
|
||||
without using GTK. This one is easier than you think because the
|
||||
main part of the window manager doesn't use GTK directly, but is
|
||||
still fairly hard to do. You would probably have to give up some
|
||||
of the features, such as window menus, as menus are pretty complex
|
||||
to implement well. So time may be better spent adding a GTK
|
||||
configure script feature to build GTK with only a small core set of
|
||||
functionality.
|
||||
|
||||
METACITY FEATURES
|
||||
===
|
||||
|
||||
- Boring window manager for the adult in you. Many window managers
|
||||
are like Marshmallow Froot Loops; Metacity is like Cheerios.
|
||||
|
||||
- Uses GTK+ 2.0 for drawing window frames. This means colors, fonts,
|
||||
etc. come from GTK+ theme.
|
||||
|
||||
@@ -132,8 +97,6 @@ METACITY FEATURES
|
||||
Also try the GNOME keyboard shortcuts control panel, or
|
||||
gconf-editor.
|
||||
|
||||
See metacity.schemas for all available bindings.
|
||||
|
||||
- Window keybindings:
|
||||
|
||||
Alt-space window menu
|
||||
@@ -185,13 +148,13 @@ METACITY FEATURES
|
||||
|
||||
- Session management:
|
||||
|
||||
Metacity connects to the session manager and will set itself up to
|
||||
Mutter connects to the session manager and will set itself up to
|
||||
be respawned. It theoretically restores sizes/positions/workspace
|
||||
for session-aware applications.
|
||||
|
||||
- Metacity implements much of the EWMH window manager specification
|
||||
- Mutter implements much of the EWMH window manager specification
|
||||
from freedesktop.org, as well as the older ICCCM. Please refer to
|
||||
the COMPLIANCE file for information on metacity compliance with
|
||||
the COMPLIANCE file for information on mutter compliance with
|
||||
these standards.
|
||||
|
||||
- Uses Pango to render text, so has cool i18n capabilities.
|
||||
@@ -210,7 +173,7 @@ METACITY FEATURES
|
||||
- handles the window manager selection from the ICCCM. Will exit if
|
||||
another WM claims it, and can claim it from another WM if you pass
|
||||
the --replace argument. So if you're running another
|
||||
ICCCM-compliant WM, you can run "metacity --replace" to replace it
|
||||
ICCCM-compliant WM, you can run "mutter --replace" to replace it
|
||||
with Metacity.
|
||||
|
||||
- does basic colormap handling
|
||||
@@ -220,7 +183,7 @@ METACITY FEATURES
|
||||
HOW TO ADD EXTERNAL FEATURES
|
||||
===
|
||||
|
||||
You can write a metacity "plugin" such as a pager, window list, icon
|
||||
You can write a mutter "plugin" such as a pager, window list, icon
|
||||
box, task menu, or even things like "window matching" using the
|
||||
Extended Window Manager Hints. See http://www.freedesktop.org for the
|
||||
EWMH specification. An easy-to-use library called "libwnck" is
|
||||
@@ -228,10 +191,10 @@ available that uses the EWMH and is specifically designed for writing
|
||||
WM accessories.
|
||||
|
||||
You might be interested in existing accessories such as "Devil's Pie"
|
||||
by Ross Burton, which add features to Metacity (or other
|
||||
by Ross Burton, which add features to Mutter (or other
|
||||
EWMH-compliant WMs).
|
||||
|
||||
METACITY BUGS, NON-FEATURES, AND CAVEATS
|
||||
MUTTER BUGS, NON-FEATURES, AND CAVEATS
|
||||
===
|
||||
|
||||
See bugzilla: http://bugzilla.gnome.org/query.cgi
|
||||
@@ -270,26 +233,15 @@ A: If it makes sense to turn on unconditionally, or is genuinely a
|
||||
http://pobox.com/~hp/free-software-ui.html
|
||||
http://pobox.com/~hp/features.html
|
||||
|
||||
Q: Will Metacity be part of GNOME?
|
||||
Q: Will Mutter be part of GNOME?
|
||||
|
||||
A: It is officially part of GNOME as of GNOME 2.2. Prior to that,
|
||||
it was unofficially shipped as the default GNOME WM by several
|
||||
OS vendors.
|
||||
A: It is not officially part of GNOME as of GNOME 2.27. We are
|
||||
hoping to have mutter officially included as of GNOME 2.28.
|
||||
|
||||
Q: Is Metacity a Red Hat project?
|
||||
|
||||
A: Metacity's original creation was in no way funded, endorsed, or
|
||||
encouraged by Red Hat, Inc. - I'm guessing Red Hat would not
|
||||
consider "insufficient number of window managers for Linux" an
|
||||
urgent problem. Just a wild guess though.
|
||||
|
||||
Now that metacity is the default WM however, Red Hat supports some
|
||||
bugfixing and other work.
|
||||
|
||||
Q: Why does Metacity remember the workspace/position of some apps
|
||||
Q: Why does Mutter remember the workspace/position of some apps
|
||||
but not others across logout/login?
|
||||
|
||||
A: Metacity only stores sizes/positions for apps that are session
|
||||
A: Mutter only stores sizes/positions for apps that are session
|
||||
managed. As far as I can determine, there is no way to attempt to
|
||||
remember workspace/position for non-session-aware apps without
|
||||
causing a lot of weird effects.
|
||||
@@ -304,7 +256,7 @@ A: Metacity only stores sizes/positions for apps that are session
|
||||
place. And in fact I see a lot of bugs like this in window managers
|
||||
that try to handle non-session-aware apps.
|
||||
|
||||
However, for session-aware apps, Metacity can tell that the
|
||||
However, for session-aware apps, Mutter can tell that the
|
||||
application instance is from the session and thus restore it
|
||||
reliably, assuming the app properly restores the windows it had
|
||||
open on session save.
|
||||
@@ -456,7 +408,7 @@ A: There are quite a few, though many opportunities remain. Sometimes
|
||||
|
||||
- and much more.
|
||||
|
||||
Q: I think metacity sucks.
|
||||
Q: I think mutter sucks.
|
||||
|
||||
A: Feel free to use any WM you like. The reason metacity follows the
|
||||
ICCCM and EWMH specifications is that it makes metacity a modular,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="metacity"
|
||||
PKG_NAME="mutter"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
@@ -15,7 +15,8 @@ REQUIRED_AUTOMAKE_VERSION=1.10
|
||||
}
|
||||
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common from the GNOME CVS"
|
||||
echo "You need to install gnome-common from GNOME Subversion (or from"
|
||||
echo "your distribution's package manager)."
|
||||
exit 1
|
||||
}
|
||||
USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
|
||||
|
||||
227
configure.in
227
configure.in
@@ -1,15 +1,18 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([metacity_major_version], [2])
|
||||
m4_define([metacity_minor_version], [23])
|
||||
m4_define([mutter_major_version], [2])
|
||||
m4_define([mutter_minor_version], [27])
|
||||
# Fibonacci sequence for micro version numbering:
|
||||
# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987
|
||||
m4_define([metacity_micro_version], [55])
|
||||
m4_define([mutter_micro_version], [0])
|
||||
|
||||
m4_define([metacity_version],
|
||||
[metacity_major_version.metacity_minor_version.metacity_micro_version])
|
||||
AC_INIT([metacity], [metacity_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
|
||||
m4_define([mutter_plugin_api_version], [2])
|
||||
|
||||
AC_INIT([mutter], [mutter_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/core/display.c)
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
@@ -17,10 +20,22 @@ AC_CONFIG_HEADERS(config.h)
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
MUTTER_MAJOR_VERSION=mutter_major_version
|
||||
MUTTER_MINOR_VERSION=mutter_minor_version
|
||||
MUTTER_MICRO_VERSION=mutter_micro_version
|
||||
MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version
|
||||
AC_SUBST(MUTTER_MAJOR_VERSION)
|
||||
AC_SUBST(MUTTER_MINOR_VERSION)
|
||||
AC_SUBST(MUTTER_MICRO_VERSION)
|
||||
AC_SUBST(MUTTER_PLUGIN_API_VERSION)
|
||||
|
||||
MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins"
|
||||
AC_SUBST(MUTTER_PLUGIN_DIR)
|
||||
|
||||
# Honor aclocal flags
|
||||
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
|
||||
|
||||
GETTEXT_PACKAGE=metacity
|
||||
GETTEXT_PACKAGE=mutter
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
|
||||
|
||||
@@ -31,7 +46,7 @@ AC_HEADER_STDC
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
#### Integer sizes
|
||||
#### Integer sizes
|
||||
|
||||
AC_CHECK_SIZEOF(char)
|
||||
AC_CHECK_SIZEOF(short)
|
||||
@@ -107,7 +122,7 @@ if test "x$GCC" = "xyes"; then
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
|
||||
MUTTER_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
|
||||
|
||||
AC_ARG_ENABLE(gconf,
|
||||
AC_HELP_STRING([--disable-gconf],
|
||||
@@ -116,12 +131,12 @@ AC_ARG_ENABLE(gconf,
|
||||
|
||||
if test x$enable_gconf = xyes; then
|
||||
AC_DEFINE(HAVE_GCONF,1,[Build with gconf support])
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES gconf-2.0 >= 1.2.0"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gconf-2.0 >= 1.2.0"
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(verbose-mode,
|
||||
AC_HELP_STRING([--disable-verbose-mode],
|
||||
[disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
[disable mutter's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
enable_verbose_mode=yes)
|
||||
|
||||
if test x$enable_verbose_mode = xyes; then
|
||||
@@ -130,32 +145,42 @@ fi
|
||||
|
||||
AC_ARG_ENABLE(sm,
|
||||
AC_HELP_STRING([--disable-sm],
|
||||
[disable metacity's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
[disable mutter's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
enable_sm=auto)
|
||||
|
||||
AC_ARG_ENABLE(startup-notification,
|
||||
AC_HELP_STRING([--disable-startup-notification],
|
||||
[disable metacity's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
[disable mutter's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
|
||||
enable_startup_notification=auto)
|
||||
|
||||
AC_ARG_ENABLE(compositor,
|
||||
AC_HELP_STRING([--disable-compositor],
|
||||
[disable metacity's compositing manager]),,
|
||||
[disable mutter's compositing manager]),,
|
||||
enable_compositor=auto)
|
||||
|
||||
AC_ARG_ENABLE(clutter,
|
||||
AC_HELP_STRING([--without-clutter],
|
||||
[disable the use of clutter for compositing]),,
|
||||
with_clutter=auto)
|
||||
|
||||
AC_ARG_ENABLE(introspection,
|
||||
AC_HELP_STRING([--without-introspection],
|
||||
[disable the use of GObject introspection]),,
|
||||
with_introspection=auto)
|
||||
|
||||
AC_ARG_ENABLE(xsync,
|
||||
AC_HELP_STRING([--disable-xsync],
|
||||
[disable metacity's use of the XSync extension]),,
|
||||
[disable mutter's use of the XSync extension]),,
|
||||
enable_xsync=auto)
|
||||
|
||||
AC_ARG_ENABLE(render,
|
||||
AC_HELP_STRING([--disable-render],
|
||||
[disable metacity's use of the RENDER extension]),,
|
||||
[disable mutter's use of the RENDER extension]),,
|
||||
enable_render=auto)
|
||||
|
||||
AC_ARG_ENABLE(shape,
|
||||
AC_HELP_STRING([--disable-shape],
|
||||
[disable metacity's use of the shaped window extension]),,
|
||||
[disable mutter's use of the shaped window extension]),,
|
||||
enable_shape=auto)
|
||||
|
||||
## try definining HAVE_BACKTRACE
|
||||
@@ -164,11 +189,11 @@ AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
## here we get the flags we'll actually use
|
||||
# GOptionEntry requires glib-2.6.0
|
||||
# GOptionEntry requires glib-2.6.0
|
||||
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.6.0)
|
||||
# gtk_window_set_icon_name requires gtk2+-2.60
|
||||
PKG_CHECK_MODULES(METACITY_MESSAGE, gtk+-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(METACITY_WINDOW_DEMO, gtk+-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-2.0 >= 2.6.0)
|
||||
|
||||
if $PKG_CONFIG --atleast-version 1.2.0 pangoxft; then
|
||||
echo "pangoxft found"
|
||||
@@ -200,28 +225,19 @@ fi
|
||||
|
||||
if test x$have_startup_notification = xyes; then
|
||||
echo "Building with libstartup-notification"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
|
||||
AC_DEFINE(HAVE_STARTUP_NOTIFICATION, , [Building with startup notification support])
|
||||
else
|
||||
echo "Building without libstartup-notification"
|
||||
fi
|
||||
|
||||
## init this, it gets set either in the compositor check below
|
||||
## init this, it gets set either in the compositor check below
|
||||
## or the render-specific check later
|
||||
have_xrender=no
|
||||
|
||||
XCOMPOSITE_VERSION=0.2
|
||||
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
|
||||
have_xcomposite=yes
|
||||
else
|
||||
have_xcomposite=no
|
||||
fi
|
||||
AC_MSG_RESULT($have_xcomposite)
|
||||
|
||||
if test x$enable_compositor = xyes; then
|
||||
have_xcomposite=yes
|
||||
echo "CompositeExt support forced on"
|
||||
elif test x$enable_compositor = xauto; then
|
||||
echo "Building compositing manager by default now."
|
||||
have_xcomposite=yes
|
||||
@@ -229,10 +245,32 @@ else
|
||||
have_xcomposite=no
|
||||
fi
|
||||
|
||||
if test x$with_clutter = xyes; then
|
||||
have_xcomposite=yes
|
||||
have_clutter=yes
|
||||
elif test x$with_clutter = xauto; then
|
||||
echo "Building clutter compositing manager by default now."
|
||||
have_xcomposite=yes
|
||||
have_clutter=yes
|
||||
else
|
||||
have_clutter=no
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(WITH_CLUTTER, test "$have_clutter" = "yes")
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
echo "Building with CompositeExt"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, , [Building with compositing manager support])
|
||||
AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_ERROR([no. Use --disable-compositor to disable.])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, 1, [Building with compositing manager support])
|
||||
echo "Building with compositing manager"
|
||||
|
||||
## force on render also
|
||||
have_xrender=yes
|
||||
@@ -262,7 +300,7 @@ if test x$have_xcomposite = xno; then
|
||||
|
||||
if test x$have_xrender = xyes; then
|
||||
echo "Building with Render"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xrender >= $XRENDER_VERSION"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xrender >= $XRENDER_VERSION"
|
||||
fi
|
||||
fi ## have_composite
|
||||
|
||||
@@ -270,6 +308,46 @@ if test x$have_xrender = xyes; then
|
||||
AC_DEFINE(HAVE_RENDER, , [Building with Render extension support])
|
||||
fi
|
||||
|
||||
CLUTTER_PACKAGE=clutter-0.9
|
||||
AC_SUBST(CLUTTER_PACKAGE)
|
||||
if test x$have_clutter = xyes; then
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES $CLUTTER_PACKAGE "
|
||||
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)
|
||||
AC_DEFINE(WITH_CLUTTER, , [Building with Clutter compositor])
|
||||
|
||||
dnl Check for the clutter-glx-texture-pixmap header
|
||||
mutter_save_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $CLUTTER_CFLAGS"
|
||||
AC_CHECK_HEADER([clutter/glx/clutter-glx-texture-pixmap.h],
|
||||
[have_glx_texture_pixmap=yes],
|
||||
[have_glx_texture_pixmap=no])
|
||||
CPPFLAGS="$mutter_save_cppflags"
|
||||
|
||||
if test x$have_glx_texture_pixmap = xyes; then
|
||||
AC_DEFINE(HAVE_GLX_TEXTURE_PIXMAP, ,
|
||||
[Is ClutterGLXTexturePixmap available?])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$with_introspection != xno; then
|
||||
PKG_CHECK_MODULES(INTROSPECTION, gobject-introspection-1.0, have_introspection=yes, have_introspection=no)
|
||||
if test x$have_introspection=xyes; then
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0"
|
||||
AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available])
|
||||
G_IR_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||
AC_SUBST(G_IR_SCANNER)
|
||||
G_IR_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||
AC_SUBST(G_IR_COMPILER)
|
||||
G_IR_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||
AC_SUBST(G_IR_GENERATE)
|
||||
GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
|
||||
AC_SUBST(GIRDIR)
|
||||
TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||
AC_SUBST(TYPELIBDIR)
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(WITH_INTROSPECTION, test "$have_introspection" = "yes")
|
||||
|
||||
AC_MSG_CHECKING([Xcursor])
|
||||
if $PKG_CONFIG xcursor; then
|
||||
have_xcursor=yes
|
||||
@@ -280,23 +358,23 @@ if $PKG_CONFIG xcursor; then
|
||||
|
||||
if test x$have_xcursor = xyes; then
|
||||
echo "Building with Xcursor"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcursor"
|
||||
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
|
||||
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES(METACITY, $METACITY_PC_MODULES)
|
||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||
|
||||
AC_PATH_XTRA
|
||||
|
||||
ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
# Check for Xinerama extension (Solaris impl or Xfree impl)
|
||||
metacity_save_cppflags="$CPPFLAGS"
|
||||
mutter_save_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
||||
|
||||
AC_ARG_ENABLE(xinerama,
|
||||
AC_HELP_STRING([--disable-xinerama],
|
||||
[disable metacity's use of the Xinerama extension]),
|
||||
[disable mutter's use of the Xinerama extension]),
|
||||
try_xinerama=$enable_xinerama,try_xinerama=yes)
|
||||
|
||||
use_solaris_xinerama=no
|
||||
@@ -318,7 +396,7 @@ if test "${try_xinerama}" != no; then
|
||||
AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]),
|
||||
use_solaris_xinerama=no,
|
||||
[#include <X11/Xlib.h>])
|
||||
fi
|
||||
fi
|
||||
AC_MSG_CHECKING(for Xinerama support on Solaris)
|
||||
AC_MSG_RESULT($use_solaris_xinerama);
|
||||
;;
|
||||
@@ -327,12 +405,12 @@ if test "${try_xinerama}" != no; then
|
||||
use_xfree_xinerama=yes
|
||||
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
|
||||
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
|
||||
X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
|
||||
X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
|
||||
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
|
||||
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
|
||||
fi
|
||||
AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama])
|
||||
AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
|
||||
AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
|
||||
use_xfree_xinerama=no,
|
||||
[#include <X11/Xlib.h>])],
|
||||
use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
|
||||
@@ -342,7 +420,7 @@ if test "${try_xinerama}" != no; then
|
||||
esac
|
||||
fi
|
||||
|
||||
CPPFLAGS="$metacity_save_cppflags"
|
||||
CPPFLAGS="$mutter_save_cppflags"
|
||||
|
||||
SHAPE_LIBS=
|
||||
found_shape=no
|
||||
@@ -413,21 +491,21 @@ if test "x$found_xsync" = "xyes"; then
|
||||
AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library])
|
||||
fi
|
||||
|
||||
METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||
MUTTER_MESSAGE_LIBS="$MUTTER_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
MUTTER_WINDOW_DEMO_LIBS="$MUTTER_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
MUTTER_PROPS_LIBS="$MUTTER_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
found_sm=no
|
||||
case "$METACITY_LIBS" in
|
||||
case "$MUTTER_LIBS" in
|
||||
*-lSM*)
|
||||
found_sm=yes
|
||||
;;
|
||||
*)
|
||||
AC_CHECK_LIB(SM, SmcSaveYourselfDone,
|
||||
AC_CHECK_LIB(SM, SmcSaveYourselfDone,
|
||||
[AC_CHECK_HEADERS(X11/SM/SMlib.h,
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=yes)],
|
||||
, $METACITY_LIBS)
|
||||
MUTTER_LIBS="-lSM -lICE $MUTTER_LIBS" found_sm=yes)],
|
||||
, $MUTTER_LIBS)
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -446,7 +524,7 @@ if test "$found_sm" = "yes"; then
|
||||
AC_DEFINE(HAVE_SM, , [Building with SM support])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes")
|
||||
AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes")
|
||||
|
||||
HOST_ALIAS=$host_alias
|
||||
AC_SUBST(HOST_ALIAS)
|
||||
@@ -459,7 +537,7 @@ fi
|
||||
|
||||
AC_SUBST(GDK_PIXBUF_CSOURCE)
|
||||
|
||||
if test x$enable_gconf = xyes; then
|
||||
if test x$enable_gconf = xyes; then
|
||||
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||
if test x"$GCONFTOOL" = xno; then
|
||||
AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
|
||||
@@ -471,21 +549,36 @@ else
|
||||
GCONF_SCHEMAS_INSTALL_FALSE=
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(ZENITY, zenity, no)
|
||||
if test x"$ZENITY" = xno; then
|
||||
AC_MSG_ERROR([zenity not found in your path - needed for dialogs])
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(debug,
|
||||
[ --enable-debug enable debugging],,
|
||||
enable_debug=no)
|
||||
if test "x$enable_debug" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -g -O -Wall"
|
||||
CFLAGS="$CFLAGS -g -O"
|
||||
fi
|
||||
|
||||
# Warnings are there for a reason
|
||||
if test "x$GCC" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -Wall -Werror -ansi"
|
||||
fi
|
||||
|
||||
# Use gnome-doc-utils:
|
||||
GNOME_DOC_INIT([0.8.0])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
doc/Makefile
|
||||
doc/man/Makefile
|
||||
src/Makefile
|
||||
src/wm-tester/Makefile
|
||||
src/libmetacity-private.pc
|
||||
src/libmutter-private.pc
|
||||
src/mutter-plugins.pc
|
||||
src/tools/Makefile
|
||||
src/themes/Makefile
|
||||
src/compositor/mutter/plugins/Makefile
|
||||
po/Makefile.in
|
||||
])
|
||||
|
||||
@@ -501,14 +594,14 @@ fi
|
||||
if test x$enable_verbose_mode = xno; then
|
||||
echo "*** WARNING WARNING WARNING WARNING WARNING"
|
||||
echo "*** Building without verbose mode"
|
||||
echo "*** This means there's no way to debug metacity problems."
|
||||
echo "*** Please build normal desktop versions of metacity"
|
||||
echo "*** This means there's no way to debug mutter problems."
|
||||
echo "*** Please build normal desktop versions of mutter"
|
||||
echo "*** with verbose mode enabled so users can use it when they report bugs."
|
||||
fi
|
||||
|
||||
dnl ==========================================================================
|
||||
echo "
|
||||
metacity-$VERSION:
|
||||
mutter-$VERSION:
|
||||
|
||||
prefix: ${prefix}
|
||||
source code location: ${srcdir}
|
||||
@@ -519,20 +612,22 @@ metacity-$VERSION:
|
||||
Solaris Xinerama: ${use_solaris_xinerama}
|
||||
Startup notification: ${have_startup_notification}
|
||||
Compositing manager: ${have_xcomposite}
|
||||
Introspection: ${have_introspection}
|
||||
Session management: ${found_sm}
|
||||
Shape extension: ${found_shape}
|
||||
Resize-and-rotate: ${found_randr}
|
||||
Xsync: ${found_xsync}
|
||||
Render: ${have_xrender}
|
||||
Xcursor: ${have_xcursor}
|
||||
Clutter: ${have_clutter}
|
||||
"
|
||||
|
||||
METACITY_MINOR_VERSION=metacity_minor_version
|
||||
if test $(( $(echo $METACITY_MINOR_VERSION) %2)) == "1"; then
|
||||
stable_version=$(( ($METACITY_MINOR_VERSION / 2) * 2))
|
||||
echo "This is the UNSTABLE branch of metacity"
|
||||
MUTTER_MINOR_VERSION=mutter_minor_version
|
||||
if test $(( $(echo $MUTTER_MINOR_VERSION) %2)) == "1"; then
|
||||
stable_version=$(( ($MUTTER_MINOR_VERSION / 2) * 2))
|
||||
echo "This is the UNSTABLE branch of mutter"
|
||||
echo -n "Use 2.$stable_version.x for stable "
|
||||
echo "(gnome-2-$stable_version branch in Subversion)"
|
||||
else
|
||||
echo "This is the stable branch of metacity"
|
||||
echo "This is the stable branch of mutter"
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SUBDIRS = man
|
||||
SUBDIRS = man
|
||||
|
||||
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt code-overview.txt \
|
||||
EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \
|
||||
how-to-get-focus-right.txt
|
||||
|
||||
@@ -42,5 +42,5 @@ options you can set are:
|
||||
menus zooming, dialogues being semi-transparent, and so on. Try it
|
||||
and see whether you like it.
|
||||
|
||||
If you have any problems, ask on metacity-devel-list@gnome.org, or
|
||||
If you have any problems, ask on mutter-devel-list@gnome.org, or
|
||||
#gnome-hackers on gimpnet, or come and find me (tthurman at gnome) and ask.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
man_MANS = metacity.1 metacity-theme-viewer.1 metacity-window-demo.1
|
||||
man_MANS = mutter.1 mutter-theme-viewer.1 \
|
||||
mutter-window-demo.1 mutter-message.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
60
doc/man/mutter-message.1
Normal file
60
doc/man/mutter-message.1
Normal file
@@ -0,0 +1,60 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.\" -----
|
||||
.\" This file was confirmed to be licenced under the GPL
|
||||
.\" by its author and copyright holder, Akira TAGOH, on June 1st 2008:
|
||||
.\"
|
||||
.\" > I'm comfortable with DFSG-free. that sounds great if you think it's
|
||||
.\" > useful and worth containing it in upstream.
|
||||
.\" ...
|
||||
.\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever,
|
||||
.\" > since I have contributed that for Debian. so GPL is no problem for me.
|
||||
.\" -----
|
||||
.TH MUTTER\-MESSAGE 1 "28 August 2002"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
.\" .nh disable hyphenation
|
||||
.\" .hy enable hyphenation
|
||||
.\" .ad l left justify
|
||||
.\" .ad b justify to both left and right margins
|
||||
.\" .nf disable filling
|
||||
.\" .fi enable filling
|
||||
.\" .br insert line break
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
MUTTER\-MESSAGE \- a command to send a message to Mutter
|
||||
.SH SYNOPSIS
|
||||
.B MUTTER\-MESSAGE
|
||||
[restart|reload\-theme|enable\-keybindings|disable\-keybindings]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly the
|
||||
.B mutter\-message\fP.
|
||||
This manual page was written for the Debian distribution
|
||||
because the original program does not have a manual page.
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBmutter\-message\fP send a specified message to \fBmutter\fP(1).
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B restart
|
||||
Restart \fBmutter\fP(1) which is running.
|
||||
.TP
|
||||
.B reload-theme
|
||||
Reload a theme which is specified on gconf database.
|
||||
.TP
|
||||
.B enable-keybindings
|
||||
Enable all of keybindings which is specified on gconf database.
|
||||
.TP
|
||||
.B disable-keybindings
|
||||
Disable all of keybindings which is specified on gconf database.
|
||||
.SH SEE ALSO
|
||||
.BR mutter (1)
|
||||
.SH AUTHOR
|
||||
This manual page was written by Akira TAGOH <tagoh@debian.org>,
|
||||
for the Debian GNU/Linux system (but may be used by others).
|
||||
@@ -3,21 +3,21 @@
|
||||
.\"
|
||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||
.\"
|
||||
.TH METACITY-THEME-VIEWER 1 "1 June 2004"
|
||||
.TH MUTTER-THEME-VIEWER 1 "1 June 2004"
|
||||
.SH NAME
|
||||
metacity-theme-viewer \- view metacity themes
|
||||
mutter-theme-viewer \- view mutter themes
|
||||
.SH SYNOPSIS
|
||||
.B metacity-theme-viewer
|
||||
.B mutter-theme-viewer
|
||||
[
|
||||
.I THEMENAME
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.\" Putting a newline after each sentence can generate better output.
|
||||
.B metacity-theme-viewer
|
||||
allows you to preview any installed Metacity theme.
|
||||
.B mutter-theme-viewer
|
||||
allows you to preview any installed Mutter theme.
|
||||
.PP
|
||||
When designing a new Metacity theme, you can use
|
||||
.B metacity-theme-viewer
|
||||
When designing a new Mutter theme, you can use
|
||||
.B mutter-theme-viewer
|
||||
to measure the performance of a window frame option, and to preview
|
||||
the option.
|
||||
.SH OPTIONS
|
||||
@@ -32,12 +32,12 @@ It is case-sensitive.
|
||||
.I /usr/share/themes
|
||||
system themes directory
|
||||
.TP
|
||||
.I /usr/share/themes/*/metacity-1/metacity-theme-1.xml
|
||||
.I /usr/share/themes/*/mutter-1/mutter-theme-1.xml
|
||||
theme specification file
|
||||
.SH AUTHOR
|
||||
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
||||
the Debian GNU/Linux system (but may be used by others).
|
||||
.SH "SEE ALSO"
|
||||
.\" Always quote multiple words for .SH
|
||||
.BR metacity (1),
|
||||
.BR metacity-window-demo (1).
|
||||
.BR mutter (1),
|
||||
.BR mutter-window-demo (1).
|
||||
@@ -3,11 +3,11 @@
|
||||
.\"
|
||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
||||
.\"
|
||||
.TH METACITY-WINDOW-DEMO 1 "1 June 2004"
|
||||
.TH MUTTER-WINDOW-DEMO 1 "1 June 2004"
|
||||
.SH NAME
|
||||
metacity-window-demo \- demo of window features
|
||||
mutter-window-demo \- demo of window features
|
||||
.SH SYNOPSIS
|
||||
.B metacity-window-demo
|
||||
.B mutter-window-demo
|
||||
.SH DESCRIPTION
|
||||
.\" Putting a newline after each sentence can generate better output.
|
||||
This program demonstrates various kinds of windows that window
|
||||
@@ -21,5 +21,5 @@ the Debian GNU/Linux system (but may be used by others).
|
||||
.SH "SEE ALSO"
|
||||
.\" Always quote multiple words for .SH
|
||||
.BR x-window-manager (1),
|
||||
.BR metacity (1),
|
||||
.BR metacity-theme-viewer (1).
|
||||
.BR mutter (1),
|
||||
.BR mutter-theme-viewer (1).
|
||||
@@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH METACITY 1 "11 February 2006"
|
||||
.TH MUTTER 1 "11 February 2006"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@@ -16,25 +16,25 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
METACITY \- minimal GTK2 Window Manager
|
||||
MUTTER \- Clutter based compositing GTK2 Window Manager
|
||||
.SH SYNOPSIS
|
||||
.B metacity
|
||||
.B mutter
|
||||
[\-\-display=\fIDISPLAY\fP] [\-\-replace] [\-\-sm\-client\-id=\fIID\fP] [\-\-sm\-disable] [\-\-sm\-save\-file=\fIFILENAME\fP] [\-\-version] [\-\-help]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly
|
||||
.B metacity\fP.
|
||||
.B mutter\fP.
|
||||
.PP
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBmetacity\fP is a minimal X window manager aimed at nontechnical users and is designed to integrate well with the GNOME desktop. \fBmetacity\fP lacks some features that may be expected by traditional UNIX or other technical users; these users may want to investigate other available window managers for use with GNOME or standalone.
|
||||
\fBmutter\fP is a minimal X window manager aimed at nontechnical users and is designed to integrate well with the GNOME desktop. \fBmutter\fP lacks some features that may be expected by traditional UNIX or other technical users; these users may want to investigate other available window managers for use with GNOME or standalone.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-\-display=DISPLAY
|
||||
Connect to X display \fIDISPLAY\fP.
|
||||
.TP
|
||||
.B \-\-replace
|
||||
a window manager which is running is replaced by \fBmetacity\fP. Users are encouraged to change the GNOME window manager by running the new WM with the --replace or -replace option, and subsequently saving the session.
|
||||
a window manager which is running is replaced by \fBmutter\fP. Users are encouraged to change the GNOME window manager by running the new WM with the --replace or -replace option, and subsequently saving the session.
|
||||
.TP
|
||||
.B \-\-sm\-client\-id=ID
|
||||
Specify a session management \fIID\fP.
|
||||
@@ -51,10 +51,10 @@ Print the version number.
|
||||
.B \-?, \-\-help
|
||||
Show summary of options.
|
||||
.SH CONFIGURATION
|
||||
\fBmetacity\fP configuration can be found under \fIPreferences\fP->\fIWindows\fP and \fIPreferences\fP->\fIKeyboard Shortcuts\fP on the menu-panel. Advanced configuration can be achieved directly through gconf editing (gconf-editor or gconftool-2).
|
||||
\fBmutter\fP configuration can be found under \fIPreferences\fP->\fIWindows\fP and \fIPreferences\fP->\fIKeyboard Shortcuts\fP on the menu-panel. Advanced configuration can be achieved directly through gconf editing (gconf-editor or gconftool-2).
|
||||
.SH SEE ALSO
|
||||
.BR metacity-message (1)
|
||||
.BR mutter-message (1)
|
||||
.SH AUTHOR
|
||||
The original manual page was written by Thom May <thom@debian.org>. It was updated by Akira TAGOH <tagoh@debian.org>
|
||||
for the Debian GNU/Linux system (with permission to use by others), and then updated by Luke Morton and Philip O'Brien
|
||||
for inclusion in metacity.
|
||||
for inclusion in mutter.
|
||||
@@ -1,273 +0,0 @@
|
||||
<!--
|
||||
DTD for Metacity themes, as of Metacity 2.4.1
|
||||
Author: Ross Burton <ross@burtonini.com>
|
||||
Copyright (C) 2002 Ross Burton
|
||||
Licensed under the GPL, version 2
|
||||
-->
|
||||
|
||||
<!-- Top-level element -->
|
||||
<!ELEMENT metacity_theme (info,(window|frame_style_set|frame_style|frame_geometry|constant|draw_ops|menu_icon)+)>
|
||||
|
||||
<!-- Theme metadata -->
|
||||
<!ELEMENT info (name?|author?|copyright?|date?|description?)*>
|
||||
<!ELEMENT name (#PCDATA)>
|
||||
<!ELEMENT author (#PCDATA)>
|
||||
<!ELEMENT copyright (#PCDATA)>
|
||||
<!ELEMENT date (#PCDATA)>
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ENTITY % xyrequired "
|
||||
x CDATA #REQUIRED
|
||||
y CDATA #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % xyimplied "
|
||||
x CDATA #IMPLIED
|
||||
y CDATA #IMPLIED
|
||||
">
|
||||
|
||||
<!ENTITY % widthheightrequired "
|
||||
width CDATA #REQUIRED
|
||||
height CDATA #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % widthheightimplied "
|
||||
width CDATA #IMPLIED
|
||||
height CDATA #IMPLIED
|
||||
">
|
||||
|
||||
<!ENTITY % boolean "(true|false)">
|
||||
|
||||
<!ENTITY % piece_positions "
|
||||
(entire_background|titlebar|titlebar_middle|left_titlebar_edge|right_titlebar_edge|top_titlebar_edge|bottom_titlebar_edge|title|left_edge|right_edge|bottom_edge|overlay)
|
||||
">
|
||||
|
||||
<!ENTITY % gtk-state "
|
||||
state (normal|prelight|active|selected|insensitive) #REQUIRED
|
||||
">
|
||||
|
||||
<!ENTITY % gtk-shadow "
|
||||
shadow (none|in|out|etched_in|etched_out) #REQUIRED
|
||||
">
|
||||
|
||||
|
||||
<!-- The actual theme -->
|
||||
|
||||
<!ELEMENT window EMPTY>
|
||||
<!ATTLIST window
|
||||
type (normal|dialog|modal_dialog|menu|utility|border) #REQUIRED
|
||||
style_set CDATA #REQUIRED
|
||||
>
|
||||
|
||||
|
||||
<!ELEMENT frame_style_set (frame+)>
|
||||
<!ATTLIST frame_style_set
|
||||
name CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT frame EMPTY>
|
||||
<!ATTLIST frame
|
||||
focus (yes|no) #REQUIRED
|
||||
state (normal|maximized|shaded|maximized_and_shaded) #REQUIRED
|
||||
resize (both|horizontal|vertical|none) #IMPLIED
|
||||
style CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT frame_style (piece|button)*>
|
||||
<!ATTLIST frame_style
|
||||
name CDATA #REQUIRED
|
||||
geometry CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT piece (draw_ops?)>
|
||||
<!ATTLIST piece
|
||||
position %piece_positions; #REQUIRED
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT button (draw_ops?)>
|
||||
<!ATTLIST button
|
||||
function (menu|minimize|maximize|close|left_left_background|left_middle_background|left_right_background|right_left_background|right_middle_background|right_right_background) #REQUIRED
|
||||
state (normal|prelight|pressed) #REQUIRED
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT frame_geometry (border|(aspect_ratio|distance))+>
|
||||
<!ATTLIST frame_geometry
|
||||
name CDATA #REQUIRED
|
||||
parent CDATA #IMPLIED
|
||||
title_scale (xx-small|x-small|small|medium|large|x-large|xx-large) #IMPLIED
|
||||
has_title (true|false) 'true'
|
||||
rounded_top_left %boolean; #IMPLIED
|
||||
rounded_top_right %boolean; #IMPLIED
|
||||
rounded_bottom_left %boolean; #IMPLIED
|
||||
rounded_bottom_right %boolean; #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT distance EMPTY>
|
||||
<!ATTLIST distance
|
||||
name (left_width|right_width|bottom_height|title_vertical_pad|right_titlebar_edge|left_titlebar_edge|button_width|button_height) #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT border EMPTY>
|
||||
<!ATTLIST border
|
||||
name CDATA #REQUIRED
|
||||
top CDATA #REQUIRED
|
||||
bottom CDATA #REQUIRED
|
||||
left CDATA #REQUIRED
|
||||
right CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT aspect_ratio EMPTY>
|
||||
<!ATTLIST aspect_ratio
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT draw_ops (line|rectangle|arc|tint|gradient|image|gtk_arrow|gtk_box|gtk_vline|icon|title|clip|include|tile)*>
|
||||
<!-- not sure about this.. maybe it should be removed. see #3478 in theme-parser.c -->
|
||||
<!ATTLIST draw_ops
|
||||
name CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT line EMPTY>
|
||||
<!ATTLIST line
|
||||
color CDATA #REQUIRED
|
||||
x1 CDATA #REQUIRED
|
||||
y1 CDATA #REQUIRED
|
||||
x2 CDATA #REQUIRED
|
||||
y2 CDATA #REQUIRED
|
||||
width CDATA #IMPLIED
|
||||
dash_on_length CDATA #IMPLIED
|
||||
dash_off_length CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT rectangle EMPTY>
|
||||
<!ATTLIST rectangle
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
filled %boolean; 'false'
|
||||
>
|
||||
|
||||
<!ELEMENT arc EMPTY>
|
||||
<!ATTLIST arc
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
start_angle CDATA #REQUIRED
|
||||
extent_angle CDATA #REQUIRED
|
||||
filled %boolean; 'false'
|
||||
>
|
||||
|
||||
<!ELEMENT icon EMPTY>
|
||||
<!ATTLIST icon
|
||||
%xyrequired;
|
||||
width CDATA #REQUIRED
|
||||
height CDATA #REQUIRED
|
||||
alpha CDATA #IMPLIED
|
||||
fill_type (tile|scale) 'scale'
|
||||
>
|
||||
|
||||
<!ELEMENT image EMPTY>
|
||||
<!ATTLIST image
|
||||
filename CDATA #REQUIRED
|
||||
colorize CDATA #IMPLIED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #IMPLIED
|
||||
fill_type (tile|scale) 'scale'
|
||||
>
|
||||
|
||||
<!ELEMENT tile EMPTY>
|
||||
<!ATTLIST tile
|
||||
name CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
tile_xoffset CDATA #IMPLIED
|
||||
tile_yoffset CDATA #IMPLIED
|
||||
tile_width CDATA #REQUIRED
|
||||
tile_height CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT clip EMPTY>
|
||||
<!ATTLIST clip
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT title EMPTY>
|
||||
<!ATTLIST title
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT tint EMPTY>
|
||||
<!ATTLIST tint
|
||||
color CDATA #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_box EMPTY>
|
||||
<!ATTLIST gtk_box
|
||||
%gtk-state;
|
||||
%gtk-shadow;
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_arrow EMPTY>
|
||||
<!ATTLIST gtk_arrow
|
||||
%gtk-state;
|
||||
%gtk-shadow;
|
||||
arrow (up|down|left|right) #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
filed CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT gtk_vline EMPTY>
|
||||
<!ATTLIST gtk_vline
|
||||
%gtk-state;
|
||||
x CDATA #REQUIRED
|
||||
y1 CDATA #REQUIRED
|
||||
y2 CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT gradient (color)+>
|
||||
<!ATTLIST gradient
|
||||
type (vertical|horizontal|diagonal) #REQUIRED
|
||||
%xyrequired;
|
||||
%widthheightrequired;
|
||||
alpha CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT color EMPTY>
|
||||
<!ATTLIST color
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT include EMPTY>
|
||||
<!ATTLIST include
|
||||
name CDATA #REQUIRED
|
||||
%xyimplied;
|
||||
%widthheightimplied;
|
||||
>
|
||||
|
||||
<!ELEMENT constant EMPTY>
|
||||
<!ATTLIST constant
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT menu_icon (draw_ops?)>
|
||||
<!ATTLIST menu_icon
|
||||
function (close|maximize|minimize|unmaximize) #REQUIRED
|
||||
%gtk-state;
|
||||
draw_ops CDATA #IMPLIED
|
||||
>
|
||||
32
mutter.doap
Normal file
32
mutter.doap
Normal file
@@ -0,0 +1,32 @@
|
||||
<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:gnome="http://api.gnome.org/doap-extensions#"
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">mutter</name>
|
||||
<shortdesc xml:lang="en">Window and compositing manager based on Clutter</shortdesc>
|
||||
<!--
|
||||
<homepage rdf:resource="http://www.gnome.org/" />
|
||||
-->
|
||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
||||
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Tomas Frydrych</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:tf@linux.intel.com" />
|
||||
<gnome:userid>tomasf</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Owen Taylor</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:otaylor@redhat.com" />
|
||||
<gnome:userid>otaylor</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
</Project>
|
||||
503
po/ChangeLog
503
po/ChangeLog
@@ -1,3 +1,502 @@
|
||||
2009-04-05 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2009-03-30 Baris Cicek <baris@teamforce.name.tr>
|
||||
|
||||
* tr.po: Updated Turkish translation.
|
||||
|
||||
2009-03-28 Simos Xenitellis <simos@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2009-03-27 Simos Xenitellis <simos@gnome.org>
|
||||
|
||||
* el.po: Updated Greek translation.
|
||||
|
||||
2009-03-21 Goran Rakic <grakic@devbase.net>
|
||||
|
||||
* sr.po, sr@latin.po: Updated Serbian translation by Miloš Popović.
|
||||
|
||||
2009-03-19 Tomasz Dominikowski <tdominikowski@aviary.pl>
|
||||
|
||||
* pl.po: Updated Polish translation
|
||||
|
||||
2009-03-19 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2009-03-18 Ignacio Casal Quinteiro <icq@gnome.org>
|
||||
|
||||
* gl.po: Updated Galician translation by Suso Baleato.
|
||||
|
||||
2009-03-18 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek Translation by Fotis Tsamis.
|
||||
|
||||
2009-03-18 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic translation.
|
||||
|
||||
2009-03-17 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2009-03-16 Amitakhya Phukan <amitakhya@svn.gnome.org>
|
||||
|
||||
* as.po: Updated Assamese translations.
|
||||
|
||||
2009-03-15 Rajesh Ranjan <rajeshkajha@yahoo.com>
|
||||
|
||||
* mai.po: added Maithili translation.
|
||||
* LINGUAS: Added Maithili (mai) to the list of Languages.
|
||||
|
||||
2009-03-15 Ankitkumar Patel <ankit@redhat.com>
|
||||
|
||||
* gu.po: Updated Gujarati Translations.
|
||||
|
||||
2009-03-14 Gintautas Miliauskas <gintautas@miliauskas.lt>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2009-03-14 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
|
||||
|
||||
* ru.po: Updated Russian translation by Yuriy Penkin.
|
||||
|
||||
2009-03-14 Sandeep Shedmake <sshedmak@redhat.com>
|
||||
|
||||
* mr.po: Updated Marathi Translations.
|
||||
|
||||
2009-03-14 Rajesh Ranjan <rranjan@redhat.com>
|
||||
|
||||
* hi.po: Updated Hindi Translation.
|
||||
|
||||
2009-03-13 Kostas Papadimas <pkst@gnome.org>
|
||||
|
||||
* el.po: Updated Greek Translation by Jennie Petoumenou.
|
||||
|
||||
2009-03-13 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Mattias Põldaru
|
||||
|
||||
2009-03-12 Manoj Kumar Giri <mgiri@redhat.com>
|
||||
|
||||
* or.po: Updated Oriya Translation.
|
||||
|
||||
2009-03-11 Krishnababu K <kkrothap@redhat.com>
|
||||
|
||||
* te.po: Updated Telugu Translation.
|
||||
* LINGUAS: Added Telugu [te] language.
|
||||
|
||||
2009-03-10 Runa Bhattacharjee <runab@redhat.com>
|
||||
|
||||
* bn_IN.po: Updated partial Bengali India Translation
|
||||
|
||||
2009-03-08 Petr Kovar <pknbe@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2009-03-07 Mark Krapivner <mark125@gmail.com>
|
||||
|
||||
* he.po: Updated Hebrew translation.
|
||||
|
||||
2009-03-06 Milo Casagrande <milo@ubuntu.com>
|
||||
|
||||
* it.po: Updated Italian translation by Luca Ferretti.
|
||||
|
||||
2009-03-04 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* it.po: Updated Italian translation
|
||||
|
||||
2009-03-02 Claude Paroz <claude@2xlibre.net>
|
||||
|
||||
* fr.po: Updated French translation by Frédéric Peters and Claude Paroz.
|
||||
|
||||
2009-03-02 I. Felix <ifelix@redhat.com>
|
||||
|
||||
* ta.po: Tamil Translation updated by Tirumurthi Vasudevan
|
||||
|
||||
2009-02-28 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2009-02-23 Philip Withnall <philip@tecnocode.co.uk>
|
||||
|
||||
* en_GB.po: Updated British English translation.
|
||||
|
||||
2009-02-23 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ca.po: Updated Catalan translation by David Planella.
|
||||
|
||||
2009-02-23 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2009-02-21 Christian Kirbach <Christian.Kirbach@googlemail.com>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2009-02-20 Og Maciel <ogmaciel@gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation by
|
||||
Vladimir Melo.
|
||||
|
||||
2009-02-19 Jani Monoses <jani@ubuntu.com>
|
||||
|
||||
* ro.po: Updated Romanian translation
|
||||
by Adi Roiban <adi@roiban.ro>
|
||||
|
||||
2009-02-19 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2009-02-18 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
|
||||
|
||||
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
|
||||
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
|
||||
|
||||
2009-02-18 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2009-02-17 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2009-02-16 Wouter Bolsterlee <wbolster@svn.gnome.org>
|
||||
|
||||
* nl.po: Updated Dutch translation by Wouter Bolsterlee.
|
||||
|
||||
2009-02-15 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation by Ask H. Larsen
|
||||
|
||||
2009-02-15 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
|
||||
|
||||
* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
|
||||
* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
|
||||
|
||||
2009-02-14 Ihar Hrachyshka <booxter@lacinka.org>
|
||||
|
||||
* be@latin.po: Updated Belarusian Latin translation by Ihar Hrachyshka.
|
||||
|
||||
2009-02-13 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2009-02-12 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2009-02-11 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2009-02-11 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2009-02-10 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ast.po: Updated Asturian translation on behalf of Mikel González.
|
||||
|
||||
2009-02-07 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
2009-02-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2009-02-01 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ca.po: Updated Catalan translation by David Planella.
|
||||
|
||||
2009-01-31 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2009-01-31 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2009-01-29 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2009-01-29 Changwoo Ryu <cwryu@debian.org>
|
||||
|
||||
* ko.po: Updated Korean translation.
|
||||
|
||||
2009-01-24 Raivis DEjus <orvils@gmail.com>
|
||||
|
||||
* lv.po: Updated Latvian translation.
|
||||
|
||||
2009-01-22 Yair Hershkovitz <yairhr@gmail.com>
|
||||
|
||||
* he.po: Updated Hebrew translation.
|
||||
|
||||
2009-01-17 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* ig.po: Added Igbo translation by Sylvester Onye.
|
||||
* yo.po Added Yoruba translation by Sunday Ayo Fajuyitan.
|
||||
* ha.po: Added Hausa translation by Saudat Mohammed.
|
||||
* LINGUAS: added Igbo, Yoruba and Hausa.
|
||||
|
||||
2009-01-17 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2009-01-09 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2009-01-03 甘露(Gan Lu) <rhythm.gan@gmail.com>
|
||||
|
||||
* zh_CN.po: Updated Chinese Simplified translation
|
||||
|
||||
2009-01-03 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Mattias Põldaru
|
||||
|
||||
2008-12-26 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation.
|
||||
|
||||
2008-12-12 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* it.po: Imported updated translation from gnome-2-24 branch.
|
||||
|
||||
2008-12-08 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Mattias Põldaru
|
||||
|
||||
2008-11-23 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-11-14 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* la.po: Updated Latin translation
|
||||
|
||||
2008-11-14 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-11-09 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-11-08 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
* es.po: Updated Spanish translation
|
||||
|
||||
2008-11-03 Leonardo Ferreira Fontenelle <leonardof@gnome.org>
|
||||
|
||||
* pt_BR.po: Merged from branch gnome-2-24. Minor capitalization fix in
|
||||
the Brazilian Portuguese translation.
|
||||
|
||||
2008-10-27 Og Maciel <ogmaciel@gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation by
|
||||
Og Maciel.
|
||||
|
||||
2008-10-27 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2008-10-23 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* LINGUAS: Added ast.
|
||||
* ast.po: Added Asturian translation on behalf of Mikel González.
|
||||
|
||||
2008-10-22 Jordi Mallach <jordi@sindominio.net>
|
||||
|
||||
* ca@valencia.po: New Valencian (Southern Catalan) translation
|
||||
based on the Catalan file.
|
||||
* LINGUAS: Added Valencian (Southern Catalan) (ca@valencia).
|
||||
|
||||
2008-10-22 Jordi Mallach <jordi@sindominio.net>
|
||||
|
||||
* ca.po: Apply Catalan fixes from Robert Millan.
|
||||
|
||||
2008-10-17 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* la.po: Updated Latin translation.
|
||||
|
||||
2008-10-16 Marcel Telka <marcel@telka.sk>
|
||||
|
||||
* sk.po: Updated Slovak translation by Pavol Šimo.
|
||||
|
||||
2008-10-15 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* la.po: Updated Latin translation.
|
||||
|
||||
2008-10-15 Thomas Thurman <tthurman@gnome.org>
|
||||
|
||||
* la.po: Updated Latin translation.
|
||||
|
||||
2008-10-12 Kjartan Maraas <kmaraas@gnome.org>
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-10-12 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation (merged from gnome-2-24 branch).
|
||||
|
||||
2008-10-11 Claude Paroz <claude@2xlibre.net>
|
||||
|
||||
* fr.po: Fixed minimize/unmaximize French translation (sync with 2.24) and
|
||||
complete some other translations.
|
||||
|
||||
2008-09-30 Og Maciel <ogmaciel@gnome.org>
|
||||
|
||||
* pt_BR.po: Updated Brazilian Portuguese translation by Vladimir Melo.
|
||||
|
||||
2008-09-29 Alexander Shopov <ash@contact.bg>
|
||||
|
||||
* bg.po: Updated Bulgarian translation by
|
||||
Alexander Shopov <ash@contact.bg>
|
||||
|
||||
2008-09-27 Gil Forcada <gforcada@gnome.org>
|
||||
|
||||
* ca.po: Updated Catalan translation.
|
||||
|
||||
2008-09-27 Laurent Dhima <laurenti@alblinux.net>
|
||||
|
||||
* sq.po: Updated Albanian Translation.
|
||||
|
||||
2008-09-24 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin
|
||||
|
||||
2008-09-22 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation by Kenneth Nielsen
|
||||
|
||||
2008-09-22 Kenneth Nielsen <k.nielsen81@gmail.com>
|
||||
|
||||
* da.po: Updated Danish translation by Kenneth Nielsen
|
||||
|
||||
2008-09-22 Mugurel Tudor <mugurelu@gnome.ro>
|
||||
|
||||
* ro.po: Updated Romanian translation by
|
||||
Mişu Moldovan <dumol@gnome.ro>
|
||||
|
||||
2008-09-21 Theppitak Karoonboonyanan <thep@linux.thai.net>
|
||||
|
||||
* th.po: Updated Thai translation.
|
||||
|
||||
2008-09-21 Gintautas Miliauskas <gintas@akl.lt>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2008-09-20 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Ivar Smolin
|
||||
|
||||
2008-09-17 Gabor Kelemen <kelemeng@gnome.hu>
|
||||
|
||||
* hu.po: Translation updated.
|
||||
|
||||
2008-09-14 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Fixed Portuguese terminology.
|
||||
|
||||
2008-09-12 Hendrik Richter <hendrikr@gnome.org>
|
||||
|
||||
* de.po: Updated German translation.
|
||||
|
||||
2008-09-12 Goran Rakić <grakic@devbase.net>
|
||||
|
||||
* sr.po, sr@latin.po: Updated Serbian translation (by Miloš Popović).
|
||||
|
||||
2008-09-09 Robert Sedak <robert.sedak@sk.t-com.hr>
|
||||
|
||||
* hr.po: Updated Croatian translation.
|
||||
|
||||
2008-09-08 Priit Laes <plaes at svn dot gnome dot org>
|
||||
|
||||
* et.po: Translation updated by Mattias Põldaru
|
||||
|
||||
2008-09-07 Seán de Búrca <sdeburca@svn.gnome.org>
|
||||
|
||||
* ga.po: Updated Irish translation.
|
||||
|
||||
2008-09-06 Funda Wang <fundawang@gmail.com>
|
||||
|
||||
* zh_CN.po: Updated zh_CN translation.
|
||||
|
||||
2008-09-06 Claude Paroz <claude@2xlibre.net>
|
||||
|
||||
* fr.po: Updated French translation.
|
||||
|
||||
2008-08-24 Gintautas Miliauskas <gintas@akl.lt>
|
||||
|
||||
* lt.po: Updated Lithuanian translation.
|
||||
|
||||
2008-08-23 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
|
||||
|
||||
* eu.po: Updated Basque translation.
|
||||
|
||||
2008-08-21 Laurent Dhima <laurenti@alblinux.net>
|
||||
|
||||
* sq.po: Updated Albanian Translation.
|
||||
|
||||
2008-08-14 Duarte Loreto <happyguy_pt@hotmail.com>
|
||||
|
||||
* pt.po: Updated Portuguese translation.
|
||||
|
||||
2008-08-13 Leonardo Ferreira Fontenelle <leonardof@gnome.org>
|
||||
|
||||
* pt_BR.po: Brazilian Portuguese translation updated by Djavan
|
||||
Fagundes.
|
||||
|
||||
2008-08-13 Ilkka Tuohela <hile@iki.fi>
|
||||
|
||||
* fi.po: Updated Finnish translation.
|
||||
|
||||
2008-08-09 Petr Kovar <pknbe@volny.cz>
|
||||
|
||||
* cs.po: Updated Czech translation.
|
||||
|
||||
2008-08-07 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
|
||||
|
||||
gl.po: Updated Galician translation
|
||||
|
||||
2008-08-6 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2008-08-02 Takeshi AIHANA <takeshi.aihana@gmail.com>
|
||||
|
||||
* ja.po: Updated Japanese translation.
|
||||
|
||||
2008-07-29 Djihed Afifi <djihed@gmail.com>
|
||||
|
||||
* ar.po: Updated Arabic Translation by Khaled Hosny.
|
||||
|
||||
2008-07-29 Wouter Bolsterlee <wbolster@svn.gnome.org>
|
||||
|
||||
* nl.po: Dutch translation updated by Wouter Bolsterlee.
|
||||
|
||||
2008-07-25 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2008-07-24 Leonardo Ferreira Fontenelle <leonardof@gnome.org>
|
||||
|
||||
* pt_BR.po: Terminology fixes by Vladimir Melo.
|
||||
|
||||
2008-07-17 Daniel Nylander <po@danielnylander.se>
|
||||
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2008-07-14 Luca Ferretti <elle.uca@libero.it>
|
||||
|
||||
* it.po: Updated Italian translation.
|
||||
|
||||
2008-07-10 Matej Urbančič <mateju@svn.gnome.org>
|
||||
|
||||
* sl.po: Updated Slovenian Translation.
|
||||
@@ -47,7 +546,7 @@
|
||||
|
||||
* nb.po: Updated Norwegian bokmål translation.
|
||||
|
||||
2008-06-01 Clytie Siddall <clytie@riverland.net.au>
|
||||
2008-06-01 Clytie Siddall <clytie@riverland.net.au>
|
||||
|
||||
* vi.po: Updated Vietnamese translation.
|
||||
|
||||
@@ -133,7 +632,7 @@
|
||||
|
||||
2008-03-07 Maxim Dziumanenko <dziumanenko@gmail.com>
|
||||
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
* uk.po: Updated Ukrainian translation.
|
||||
|
||||
2008-03-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
|
||||
|
||||
|
||||
10
po/LINGUAS
10
po/LINGUAS
@@ -3,6 +3,7 @@
|
||||
am
|
||||
ar
|
||||
as
|
||||
ast
|
||||
az
|
||||
be
|
||||
be@latin
|
||||
@@ -11,6 +12,7 @@ bn
|
||||
bn_IN
|
||||
bs
|
||||
ca
|
||||
ca@valencia
|
||||
cs
|
||||
cy
|
||||
da
|
||||
@@ -28,12 +30,14 @@ fr
|
||||
ga
|
||||
gl
|
||||
gu
|
||||
ha
|
||||
he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
hy
|
||||
id
|
||||
ig
|
||||
is
|
||||
it
|
||||
ja
|
||||
@@ -41,8 +45,10 @@ ka
|
||||
kn
|
||||
ko
|
||||
ku
|
||||
la
|
||||
lt
|
||||
lv
|
||||
mai
|
||||
mg
|
||||
mk
|
||||
ml
|
||||
@@ -67,9 +73,10 @@ sk
|
||||
sl
|
||||
sq
|
||||
sr
|
||||
sr@Latn
|
||||
sr@latin
|
||||
sv
|
||||
ta
|
||||
te
|
||||
th
|
||||
tk
|
||||
tr
|
||||
@@ -77,6 +84,7 @@ uk
|
||||
vi
|
||||
wa
|
||||
xh
|
||||
yo
|
||||
zh_CN
|
||||
zh_HK
|
||||
zh_TW
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# List of source files containing translatable strings.
|
||||
# Please keep this file sorted alphabetically.
|
||||
src/50-metacity-desktop-key.xml.in
|
||||
src/50-metacity-key.xml.in
|
||||
src/core/core.c
|
||||
src/core/delete.c
|
||||
src/core/display.c
|
||||
@@ -12,18 +10,19 @@ src/core/prefs.c
|
||||
src/core/screen.c
|
||||
src/core/session.c
|
||||
src/core/util.c
|
||||
src/core/window-props.c
|
||||
src/core/window.c
|
||||
src/core/window-props.c
|
||||
src/core/xprops.c
|
||||
src/metacity.desktop.in
|
||||
src/metacity.schemas.in
|
||||
src/include/all-keybindings.h
|
||||
src/mutter.desktop.in
|
||||
src/mutter-wm.desktop.in
|
||||
src/mutter.schemas.in
|
||||
src/tools/mutter-message.c
|
||||
src/ui/frames.c
|
||||
src/ui/menu.c
|
||||
src/ui/metaaccellabel.c
|
||||
src/ui/metacity-dialog.c
|
||||
src/ui/resizepopup.c
|
||||
src/ui/theme.c
|
||||
src/ui/theme-parser.c
|
||||
src/ui/theme-viewer.c
|
||||
src/ui/theme.c
|
||||
src/tools/metacity-message.c
|
||||
|
||||
|
||||
2
po/POTFILES.skip
Normal file
2
po/POTFILES.skip
Normal file
@@ -0,0 +1,2 @@
|
||||
src/metacity.schemas.in
|
||||
|
||||
5225
po/be@latin.po
5225
po/be@latin.po
File diff suppressed because it is too large
Load Diff
4727
po/bn_IN.po
4727
po/bn_IN.po
File diff suppressed because it is too large
Load Diff
4079
po/ca@valencia.po
Normal file
4079
po/ca@valencia.po
Normal file
File diff suppressed because it is too large
Load Diff
5716
po/en_GB.po
5716
po/en_GB.po
File diff suppressed because it is too large
Load Diff
4
po/nn.po
4
po/nn.po
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: nn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2008-04-04 13:50+0200\n"
|
||||
"PO-Revision-Date: 2008-04-04 13:59+0200\n"
|
||||
"PO-Revision-Date: 2009-06-16 09:54-0400\n"
|
||||
"Last-Translator: Eskild Hustvedt <eskildh@gnome.org>\n"
|
||||
"Language-Team: Norwegian Nynorsk <i18n-no@lister.ping.uio.no>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -2300,7 +2300,7 @@ msgstr "_Lukk"
|
||||
#: ../src/ui/menu.c:203
|
||||
#, c-format
|
||||
msgid "Workspace %d%n"
|
||||
msgstr "Arbeidsflate %d"
|
||||
msgstr "Arbeidsflate %d%n"
|
||||
|
||||
#: ../src/ui/menu.c:213
|
||||
#, c-format
|
||||
|
||||
6895
po/pt_BR.po
6895
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
3743
po/sr@Latn.po
3743
po/sr@Latn.po
File diff suppressed because it is too large
Load Diff
3815
po/sr@latin.po
Normal file
3815
po/sr@latin.po
Normal file
File diff suppressed because it is too large
Load Diff
5048
po/zh_CN.po
5048
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
2825
po/zh_HK.po
2825
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
3212
po/zh_TW.po
3212
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ testboxes
|
||||
testgradient
|
||||
inlinepixbufs.h
|
||||
metacity.desktop
|
||||
metacity-wm.desktop
|
||||
metacity.schemas
|
||||
libmetacity-private.pc
|
||||
testasyncgetprop
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<KeyListEntries _name="Desktop" wm_name="Metacity" package="metacity">
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/panel_run_dialog" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/panel_main_menu" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_screenshot" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_window_screenshot" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/run_command_terminal" />
|
||||
|
||||
</KeyListEntries>
|
||||
|
||||
@@ -1,269 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<KeyListEntries _name="Window Management" wm_name="Metacity" package="metacity">
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/activate_window_menu" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_fullscreen" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_maximized" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/unmaximize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_shaded" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/close" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/minimize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/begin_move" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/begin_resize" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/toggle_on_all_workspaces"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/raise_or_lower" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/raise" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/lower" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize_vertically" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/maximize_horizontally" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_1"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_2"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_3"
|
||||
value="2"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_4"
|
||||
value="3"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_5"
|
||||
value="4"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_6"
|
||||
value="5"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_7"
|
||||
value="6"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_8"
|
||||
value="7"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_9"
|
||||
value="8"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_10"
|
||||
value="9"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_11"
|
||||
value="10"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_12"
|
||||
value="11"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_left"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_right"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_up"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/window_keybindings/move_to_workspace_down"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_panels" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/cycle_panels" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/show_desktop" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_1"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_2"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_3"
|
||||
value="2"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_4"
|
||||
value="3"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_5"
|
||||
value="4"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_6"
|
||||
value="5"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_7"
|
||||
value="6"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_8"
|
||||
value="7"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_9"
|
||||
value="8"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_10"
|
||||
value="9"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_11"
|
||||
value="10"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_12"
|
||||
value="11"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_left"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_right"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_up"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_to_workspace_down"
|
||||
value="1"
|
||||
key="/apps/metacity/general/num_workspaces"
|
||||
comparison="gt" />
|
||||
|
||||
</KeyListEntries>
|
||||
|
||||
174
src/Makefile.am
174
src/Makefile.am
@@ -1,13 +1,20 @@
|
||||
lib_LTLIBRARIES = libmetacity-private.la
|
||||
lib_LTLIBRARIES = libmutter-private.la
|
||||
|
||||
SUBDIRS=wm-tester tools themes
|
||||
SUBDIRS=wm-tester tools
|
||||
|
||||
INCLUDES=@METACITY_CFLAGS@ -I $(srcdir)/include -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMETACITY_PKGDATADIR=\"$(pkgdatadir)\" -DMETACITY_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"metacity\" -DSN_API_NOT_YET_FROZEN=1
|
||||
if WITH_CLUTTER
|
||||
SUBDIRS += compositor/mutter/plugins
|
||||
endif
|
||||
|
||||
metacity_SOURCES= \
|
||||
INCLUDES=@MUTTER_CFLAGS@ -I $(srcdir)/include -I$(srcdir)/compositor -DMUTTER_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMUTTER_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMUTTER_PKGDATADIR=\"$(pkgdatadir)\" -DMUTTER_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"mutter\" -DSN_API_NOT_YET_FROZEN=1 -DMUTTER_MAJOR_VERSION=$(MUTTER_MAJOR_VERSION) -DMUTTER_MINOR_VERSION=$(MUTTER_MINOR_VERSION) -DMUTTER_MICRO_VERSION=$(MUTTER_MICRO_VERSION) -DMUTTER_PLUGIN_API_VERSION=$(MUTTER_PLUGIN_API_VERSION) -DMUTTER_PKGLIBDIR=\"$(pkglibdir)\" -DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\"
|
||||
|
||||
mutter_SOURCES= \
|
||||
core/async-getprop.c \
|
||||
core/async-getprop.h \
|
||||
core/atomnames.h \
|
||||
core/alttabhandler.c \
|
||||
include/alttabhandler.h \
|
||||
core/alttabhandlerdefault.c \
|
||||
include/alttabhandlerdefault.h \
|
||||
core/bell.c \
|
||||
core/bell.h \
|
||||
core/boxes.c \
|
||||
@@ -43,14 +50,14 @@ metacity_SOURCES= \
|
||||
core/group-props.c \
|
||||
core/group-props.h \
|
||||
core/group.c \
|
||||
core/group.h \
|
||||
include/group.h \
|
||||
core/iconcache.c \
|
||||
core/iconcache.h \
|
||||
core/keybindings.c \
|
||||
core/keybindings.h \
|
||||
core/keybindings-private.h \
|
||||
core/main.c \
|
||||
include/main.h \
|
||||
core/metacity-Xatomtype.h \
|
||||
core/mutter-Xatomtype.h \
|
||||
core/place.c \
|
||||
core/place.h \
|
||||
core/prefs.c \
|
||||
@@ -63,6 +70,8 @@ metacity_SOURCES= \
|
||||
core/session.h \
|
||||
core/stack.c \
|
||||
core/stack.h \
|
||||
core/stack-tracker.c \
|
||||
core/stack-tracker.h \
|
||||
core/util.c \
|
||||
include/util.h \
|
||||
core/window-props.c \
|
||||
@@ -71,7 +80,7 @@ metacity_SOURCES= \
|
||||
core/window-private.h \
|
||||
include/window.h \
|
||||
core/workspace.c \
|
||||
core/workspace.h \
|
||||
core/workspace-private.h \
|
||||
core/xprops.c \
|
||||
include/xprops.h \
|
||||
include/common.h \
|
||||
@@ -96,12 +105,29 @@ metacity_SOURCES= \
|
||||
ui/theme.h \
|
||||
ui/themewidget.c \
|
||||
ui/themewidget.h \
|
||||
ui/ui.c
|
||||
ui/ui.c \
|
||||
include/all-keybindings.h
|
||||
|
||||
# by setting libmetacity_private_la_CFLAGS, the files shared with
|
||||
# metacity proper will be compiled with different names.
|
||||
libmetacity_private_la_CFLAGS =
|
||||
libmetacity_private_la_SOURCES= \
|
||||
if WITH_CLUTTER
|
||||
mutter_SOURCES += \
|
||||
compositor/mutter/compositor-mutter.c \
|
||||
compositor/mutter/mutter-shaped-texture.c \
|
||||
compositor/mutter/mutter-shaped-texture.h \
|
||||
compositor/mutter/mutter-plugin-manager.c \
|
||||
compositor/mutter/mutter-plugin-manager.h \
|
||||
compositor/mutter/tidy/tidy-texture-frame.c \
|
||||
compositor/mutter/tidy/tidy-texture-frame.h \
|
||||
compositor/mutter/mutter-module.c \
|
||||
compositor/mutter/mutter-module.h \
|
||||
compositor/mutter/mutter-plugin.c \
|
||||
include/mutter-plugin.h \
|
||||
include/compositor-mutter.h
|
||||
endif
|
||||
|
||||
# by setting libmutter_private_la_CFLAGS, the files shared with
|
||||
# mutter proper will be compiled with different names.
|
||||
libmutter_private_la_CFLAGS =
|
||||
libmutter_private_la_SOURCES= \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
ui/gradient.c \
|
||||
@@ -116,33 +142,85 @@ libmetacity_private_la_SOURCES= \
|
||||
ui/theme.c \
|
||||
ui/theme.h
|
||||
|
||||
libmetacity_private_la_LDFLAGS = -no-undefined
|
||||
libmetacity_private_la_LIBADD = @METACITY_LIBS@
|
||||
libmutter_private_la_LDFLAGS = -no-undefined
|
||||
libmutter_private_la_LIBADD = @MUTTER_LIBS@
|
||||
|
||||
libmetacityincludedir = $(includedir)/metacity-1/metacity-private
|
||||
libmutterincludedir = $(includedir)/mutter/mutter-private
|
||||
|
||||
libmetacityinclude_HEADERS = \
|
||||
libmutterinclude_base_headers = \
|
||||
include/alttabhandler.h \
|
||||
include/boxes.h \
|
||||
ui/gradient.h \
|
||||
include/util.h \
|
||||
include/common.h \
|
||||
ui/preview-widget.h \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.h
|
||||
ui/theme.h \
|
||||
include/prefs.h \
|
||||
include/window.h \
|
||||
include/workspace.h \
|
||||
include/compositor.h \
|
||||
include/compositor-mutter.h \
|
||||
include/types.h \
|
||||
include/screen.h \
|
||||
include/display.h \
|
||||
include/group.h \
|
||||
include/keybindings.h \
|
||||
include/mutter-plugin.h
|
||||
|
||||
metacity_theme_viewer_SOURCES= \
|
||||
# Excluded from scanning for introspection but installed
|
||||
libmutterinclude_extra_headers = \
|
||||
include/atomnames.h
|
||||
|
||||
libmutterinclude_HEADERS = \
|
||||
$(libmutterinclude_base_headers) \
|
||||
$(libmutterinclude_extra_headers)
|
||||
|
||||
mutter_theme_viewer_SOURCES= \
|
||||
ui/theme-viewer.c
|
||||
|
||||
metacity_dialog_SOURCES= \
|
||||
ui/metacity-dialog.c
|
||||
bin_PROGRAMS=mutter mutter-theme-viewer
|
||||
|
||||
bin_PROGRAMS=metacity metacity-theme-viewer
|
||||
libexec_PROGRAMS=metacity-dialog
|
||||
api_version = $(MUTTER_MAJOR_VERSION).$(MUTTER_MINOR_VERSION)
|
||||
|
||||
if WITH_INTROSPECTION
|
||||
# These files are in package-private directories, even though they may be used
|
||||
# by plugins. If you're writing a plugin, use g-ir-compiler --add-include-path
|
||||
# and g-ir-compiler --includedir.
|
||||
girdir = $(pkglibdir)
|
||||
gir_DATA = Meta-$(api_version).gir
|
||||
|
||||
typelibdir = $(pkglibdir)
|
||||
typelib_DATA = Meta-$(api_version).typelib
|
||||
|
||||
# We need to strip out the attribute that would point back to libmutter-introspect
|
||||
# so that libgirepository looks for symbols in the executable instead
|
||||
Meta-$(api_version).gir: $(G_IR_SCANNER) mutter $(libmutterinclude_HEADERS) $(mutter_SOURCES)
|
||||
$(G_IR_SCANNER) \
|
||||
--namespace=Meta \
|
||||
--nsversion=$(api_version) \
|
||||
--include=GObject-2.0 \
|
||||
--include=Gdk-2.0 \
|
||||
--include=Gtk-2.0 \
|
||||
--include=Clutter-0.9 \
|
||||
--pkg=clutter-0.9 \
|
||||
--pkg=gtk+-2.0 \
|
||||
--include=xfixes-4.0 \
|
||||
--program=./mutter \
|
||||
$(filter %.c,$(mutter_SOURCES)) \
|
||||
$(libmutterinclude_base_headers) \
|
||||
$(INCLUDES) \
|
||||
-o $@
|
||||
|
||||
Meta-$(api_version).typelib: $(G_IR_COMPILER) Meta-$(api_version).gir
|
||||
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(G_IR_COMPILER) Meta-$(api_version).gir -o $@
|
||||
endif
|
||||
|
||||
EFENCE=
|
||||
metacity_LDADD=@METACITY_LIBS@ $(EFENCE)
|
||||
metacity_theme_viewer_LDADD= @METACITY_LIBS@ libmetacity-private.la
|
||||
metacity_dialog_LDADD=@METACITY_LIBS@
|
||||
mutter_LDADD=@MUTTER_LIBS@ libmutter-private.la $(EFENCE)
|
||||
mutter_LDFLAGS=-export-dynamic
|
||||
|
||||
mutter_theme_viewer_LDADD= @MUTTER_LIBS@ libmutter-private.la
|
||||
|
||||
testboxes_SOURCES=include/util.h core/util.c include/boxes.h core/boxes.c core/testboxes.c
|
||||
testgradient_SOURCES=ui/gradient.h ui/gradient.c ui/testgradient.c
|
||||
@@ -150,27 +228,28 @@ testasyncgetprop_SOURCES=core/async-getprop.h core/async-getprop.c core/testasyn
|
||||
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
||||
|
||||
testboxes_LDADD= @METACITY_LIBS@
|
||||
testgradient_LDADD= @METACITY_LIBS@
|
||||
testasyncgetprop_LDADD= @METACITY_LIBS@
|
||||
|
||||
desktopfilesdir=$(datadir)/gnome/wm-properties
|
||||
desktopfiles_in_files=metacity.desktop.in
|
||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||
desktopfiles_DATA = $(desktopfiles_files)
|
||||
testboxes_LDADD= @MUTTER_LIBS@ libmutter-private.la
|
||||
testgradient_LDADD= @MUTTER_LIBS@ libmutter-private.la
|
||||
testasyncgetprop_LDADD= @MUTTER_LIBS@ libmutter-private.la
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
desktopfilesdir=$(datadir)/applications
|
||||
desktopfiles_in_files=mutter.desktop.in
|
||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||
desktopfiles_DATA = $(desktopfiles_files)
|
||||
|
||||
wmpropertiesdir=$(datadir)/gnome/wm-properties
|
||||
wmproperties_in_files=mutter-wm.desktop.in
|
||||
wmproperties_files=$(wmproperties_in_files:.desktop.in=.desktop)
|
||||
wmproperties_DATA = $(wmproperties_files)
|
||||
|
||||
schemadir = @GCONF_SCHEMA_FILE_DIR@
|
||||
schema_in_files = metacity.schemas.in
|
||||
schema_in_files = mutter.schemas.in
|
||||
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
|
||||
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
|
||||
xml_in_files = 50-metacity-desktop-key.xml.in 50-metacity-key.xml.in
|
||||
xml_DATA = $(xml_in_files:.xml.in=.xml)
|
||||
|
||||
@INTLTOOL_SCHEMAS_RULE@
|
||||
|
||||
if GCONF_SCHEMAS_INSTALL
|
||||
@@ -180,26 +259,27 @@ else
|
||||
install-data-local:
|
||||
endif
|
||||
|
||||
IMAGES=default_icon.png stock_maximize.png stock_minimize.png stock_delete.png
|
||||
VARIABLES=default_icon_data $(srcdir)/default_icon.png \
|
||||
stock_maximize_data $(srcdir)/stock_maximize.png \
|
||||
IMAGES=stock_maximize.png stock_minimize.png stock_delete.png
|
||||
VARIABLES=stock_maximize_data $(srcdir)/stock_maximize.png \
|
||||
stock_minimize_data $(srcdir)/stock_minimize.png \
|
||||
stock_delete_data $(srcdir)/stock_delete.png
|
||||
|
||||
BUILT_SOURCES = inlinepixbufs.h
|
||||
CLEANFILES = inlinepixbufs.h metacity.desktop metacity.schemas 50-metacity-desktop-key.xml 50-metacity-key.xml
|
||||
CLEANFILES = inlinepixbufs.h mutter.desktop mutter-wm.desktop mutter.schemas
|
||||
|
||||
inlinepixbufs.h: $(IMAGES)
|
||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
pkgconfig_DATA = libmetacity-private.pc
|
||||
pkgconfig_DATA = libmutter-private.pc mutter-plugins.pc
|
||||
|
||||
EXTRA_DIST=$(desktopfiles_files) \
|
||||
$(wmproperties_files) \
|
||||
$(IMAGES) $(schema_DATA) \
|
||||
$(desktopfiles_in_files) \
|
||||
$(wmproperties_in_files) \
|
||||
$(schema_in_files) \
|
||||
$(xml_in_files) \
|
||||
libmetacity-private.pc.in
|
||||
libmutter-private.pc.in \
|
||||
mutter-plugins.pc.in
|
||||
|
||||
|
||||
@@ -33,22 +33,58 @@ struct _MetaCompositor
|
||||
void (*unmanage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*add_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
MetaWindow *window);
|
||||
void (*remove_window) (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
MetaWindow *window);
|
||||
void (*set_updates) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean update);
|
||||
void (*process_event) (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window);
|
||||
gboolean (*process_event) (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window);
|
||||
Pixmap (*get_window_pixmap) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*set_active_window) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window);
|
||||
void (*map_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*unmap_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*minimize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect);
|
||||
void (*unminimize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect);
|
||||
void (*maximize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect);
|
||||
void (*unmaximize_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect);
|
||||
void (*update_workspace_geometry) (MetaCompositor *compositor,
|
||||
MetaWorkspace *workspace);
|
||||
void (*switch_workspace) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWorkspace *from,
|
||||
MetaWorkspace *to,
|
||||
MetaMotionDirection direction);
|
||||
void (*sync_stack) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
GList *stack);
|
||||
void (*set_window_hidden) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
gboolean hidden);
|
||||
void (*sync_window_geometry) (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void (*sync_screen_size) (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
guint width,
|
||||
guint height);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -22,10 +22,12 @@
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#define _XOPEN_SOURCE 500 /* for usleep() */
|
||||
#define _XOPEN_SOURCE 600 /* for usleep() */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
@@ -81,17 +83,6 @@ composite_at_least_version (MetaDisplay *display,
|
||||
|
||||
#endif
|
||||
|
||||
typedef enum _MetaCompWindowType
|
||||
{
|
||||
META_COMP_WINDOW_NORMAL,
|
||||
META_COMP_WINDOW_DND,
|
||||
META_COMP_WINDOW_DESKTOP,
|
||||
META_COMP_WINDOW_DOCK,
|
||||
META_COMP_WINDOW_MENU,
|
||||
META_COMP_WINDOW_DROP_DOWN_MENU,
|
||||
META_COMP_WINDOW_TOOLTIP,
|
||||
} MetaCompWindowType;
|
||||
|
||||
typedef enum _MetaShadowType
|
||||
{
|
||||
META_SHADOW_SMALL,
|
||||
@@ -922,7 +913,7 @@ window_has_shadow (MetaCompWindow *cw)
|
||||
}
|
||||
|
||||
if (cw->type == META_COMP_WINDOW_MENU ||
|
||||
cw->type == META_COMP_WINDOW_DROP_DOWN_MENU) {
|
||||
cw->type == META_COMP_WINDOW_DROPDOWN_MENU) {
|
||||
meta_verbose ("Window has shadow as it is a menu\n");
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1787,7 +1778,7 @@ get_window_type (MetaDisplay *display,
|
||||
else if (type_atom == compositor->atom_net_wm_window_type_menu)
|
||||
cw->type = META_COMP_WINDOW_MENU;
|
||||
else if (type_atom == compositor->atom_net_wm_window_type_dropdown_menu)
|
||||
cw->type = META_COMP_WINDOW_DROP_DOWN_MENU;
|
||||
cw->type = META_COMP_WINDOW_DROPDOWN_MENU;
|
||||
else if (type_atom == compositor->atom_net_wm_window_type_tooltip)
|
||||
cw->type = META_COMP_WINDOW_TOOLTIP;
|
||||
else
|
||||
@@ -2400,14 +2391,14 @@ process_destroy (MetaCompositorXRender *compositor,
|
||||
destroy_win (compositor->display, event->window, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
process_damage (MetaCompositorXRender *compositor,
|
||||
XDamageNotifyEvent *event)
|
||||
{
|
||||
MetaCompWindow *cw = find_window_in_display (compositor->display,
|
||||
event->drawable);
|
||||
if (cw == NULL)
|
||||
return;
|
||||
return FALSE;
|
||||
|
||||
repair_win (cw);
|
||||
|
||||
@@ -2415,6 +2406,8 @@ process_damage (MetaCompositorXRender *compositor,
|
||||
if (event->more == FALSE)
|
||||
add_repair (compositor->display);
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2452,23 +2445,21 @@ timeout_debug (MetaCompositorXRender *compositor)
|
||||
|
||||
static void
|
||||
xrender_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs)
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
MetaCompositorXRender *xrc = (MetaCompositorXRender *) compositor;
|
||||
MetaScreen *screen = meta_screen_for_x_screen (attrs->screen);
|
||||
MetaScreen *screen = meta_window_get_screen (window);
|
||||
|
||||
meta_error_trap_push (xrc->display);
|
||||
add_win (screen, window, xwindow);
|
||||
add_win (screen, window, meta_window_get_xwindow (window));
|
||||
meta_error_trap_pop (xrc->display, FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
xrender_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow)
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
#endif
|
||||
@@ -2748,7 +2739,7 @@ xrender_free_window (MetaCompositor *compositor,
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
static void
|
||||
static gboolean
|
||||
xrender_process_event (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window)
|
||||
@@ -2809,7 +2800,7 @@ xrender_process_event (MetaCompositor *compositor,
|
||||
else
|
||||
{
|
||||
meta_error_trap_pop (xrc->display, FALSE);
|
||||
return;
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2819,7 +2810,7 @@ xrender_process_event (MetaCompositor *compositor,
|
||||
repair_display (xrc->display);
|
||||
#endif
|
||||
|
||||
return;
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3071,3 +3062,6 @@ meta_compositor_xrender_new (MetaDisplay *display)
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* HAVE_COMPOSITE_EXTENSIONS */
|
||||
|
||||
|
||||
@@ -22,12 +22,24 @@
|
||||
#include <config.h>
|
||||
#include "compositor-private.h"
|
||||
#include "compositor-xrender.h"
|
||||
#include "prefs.h"
|
||||
|
||||
#ifdef WITH_CLUTTER
|
||||
#include "compositor-mutter.h"
|
||||
int meta_compositor_can_use_clutter__ = 0;
|
||||
#endif
|
||||
|
||||
MetaCompositor *
|
||||
meta_compositor_new (MetaDisplay *display)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
#ifdef WITH_CLUTTER
|
||||
/* At some point we would have a way to select between backends */
|
||||
/* return meta_compositor_xrender_new (display); */
|
||||
if (meta_compositor_can_use_clutter__ && !meta_prefs_get_clutter_disabled ())
|
||||
return mutter_new (display);
|
||||
else
|
||||
#endif
|
||||
return meta_compositor_xrender_new (display);
|
||||
#else
|
||||
return NULL;
|
||||
@@ -45,23 +57,21 @@ meta_compositor_destroy (MetaCompositor *compositor)
|
||||
|
||||
void
|
||||
meta_compositor_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs)
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->add_window)
|
||||
compositor->add_window (compositor, window, xwindow, attrs);
|
||||
compositor->add_window (compositor, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow)
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->remove_window)
|
||||
compositor->remove_window (compositor, xwindow);
|
||||
compositor->remove_window (compositor, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -96,14 +106,16 @@ meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *event,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->process_event)
|
||||
compositor->process_event (compositor, event, window);
|
||||
return compositor->process_event (compositor, event, window);
|
||||
else
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -114,7 +126,7 @@ meta_compositor_get_window_pixmap (MetaCompositor *compositor,
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->get_window_pixmap)
|
||||
return compositor->get_window_pixmap (compositor, window);
|
||||
else
|
||||
else
|
||||
return None;
|
||||
#else
|
||||
return None;
|
||||
@@ -127,7 +139,7 @@ meta_compositor_set_active_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_active_window)
|
||||
if (compositor && compositor->set_active_window)
|
||||
compositor->set_active_window (compositor, screen, window);
|
||||
#endif
|
||||
}
|
||||
@@ -136,14 +148,14 @@ meta_compositor_set_active_window (MetaCompositor *compositor,
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x,
|
||||
int grab_x,
|
||||
int grab_y)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
}
|
||||
@@ -153,7 +165,137 @@ void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
void
|
||||
meta_compositor_map_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->map_window)
|
||||
compositor->map_window (compositor, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_unmap_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->unmap_window)
|
||||
compositor->unmap_window (compositor, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_minimize_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->minimize_window)
|
||||
compositor->minimize_window (compositor, window, window_rect, icon_rect);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_unminimize_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect,
|
||||
MetaRectangle *icon_rect)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->unminimize_window)
|
||||
compositor->unminimize_window (compositor, window, window_rect, icon_rect);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_maximize_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->maximize_window)
|
||||
compositor->maximize_window (compositor, window, window_rect);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_unmaximize_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *window_rect)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->unmaximize_window)
|
||||
compositor->unmaximize_window (compositor, window, window_rect);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_update_workspace_geometry (MetaCompositor *compositor,
|
||||
MetaWorkspace *workspace)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->update_workspace_geometry)
|
||||
compositor->update_workspace_geometry (compositor, workspace);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_switch_workspace (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWorkspace *from,
|
||||
MetaWorkspace *to,
|
||||
MetaMotionDirection direction)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->switch_workspace)
|
||||
compositor->switch_workspace (compositor, screen, from, to, direction);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_sync_stack (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
GList *stack)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->sync_stack)
|
||||
compositor->sync_stack (compositor, screen, stack);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_window_hidden (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
gboolean hidden)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_window_hidden)
|
||||
compositor->set_window_hidden (compositor, screen, window, hidden);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_sync_window_geometry (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->sync_window_geometry)
|
||||
compositor->sync_window_geometry (compositor, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_sync_screen_size (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
guint width,
|
||||
guint height)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->sync_screen_size)
|
||||
compositor->sync_screen_size (compositor, screen, width, height);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
10
src/compositor/mutter/README
Normal file
10
src/compositor/mutter/README
Normal file
@@ -0,0 +1,10 @@
|
||||
Intro
|
||||
=====
|
||||
|
||||
Fix me.
|
||||
|
||||
|
||||
Env Vars
|
||||
========
|
||||
|
||||
MUTTER_DISABLE_MIPMAPS - set to disable use of mipmaped windows.
|
||||
2975
src/compositor/mutter/compositor-mutter.c
Normal file
2975
src/compositor/mutter/compositor-mutter.c
Normal file
File diff suppressed because it is too large
Load Diff
208
src/compositor/mutter/mutter-module.c
Normal file
208
src/compositor/mutter/mutter-module.c
Normal file
@@ -0,0 +1,208 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "mutter-plugin.h"
|
||||
#include "mutter-module.h"
|
||||
|
||||
#include <gmodule.h>
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_PATH,
|
||||
};
|
||||
|
||||
struct _MutterModulePrivate
|
||||
{
|
||||
GModule *lib;
|
||||
gchar *path;
|
||||
GType plugin_type;
|
||||
};
|
||||
|
||||
#define MUTTER_MODULE_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUTTER_TYPE_MODULE, MutterModulePrivate))
|
||||
|
||||
G_DEFINE_TYPE (MutterModule, mutter_module, G_TYPE_TYPE_MODULE);
|
||||
|
||||
static gboolean
|
||||
mutter_module_load (GTypeModule *gmodule)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (gmodule)->priv;
|
||||
MutterPluginVersion *info = NULL;
|
||||
GType (*register_type) (GTypeModule *) = NULL;
|
||||
|
||||
if (priv->lib && priv->plugin_type)
|
||||
return TRUE;
|
||||
|
||||
g_assert (priv->path);
|
||||
|
||||
if (!priv->lib &&
|
||||
!(priv->lib = g_module_open (priv->path, 0)))
|
||||
{
|
||||
g_warning ("Could not load library [%s (%s)]",
|
||||
priv->path, g_module_error ());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (g_module_symbol (priv->lib, "mutter_plugin_version",
|
||||
(gpointer *)(void *)&info) &&
|
||||
g_module_symbol (priv->lib, "mutter_plugin_register_type",
|
||||
(gpointer *)(void *)®ister_type) &&
|
||||
info && register_type)
|
||||
{
|
||||
if (info->version_api != MUTTER_PLUGIN_API_VERSION)
|
||||
g_warning ("Plugin API mismatch for [%s]", priv->path);
|
||||
else
|
||||
{
|
||||
GType plugin_type;
|
||||
|
||||
if (!(plugin_type = register_type (gmodule)))
|
||||
{
|
||||
g_warning ("Could not register type for plugin %s",
|
||||
priv->path);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
priv->plugin_type = plugin_type;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
g_warning ("Broken plugin module [%s]", priv->path);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_unload (GTypeModule *gmodule)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (gmodule)->priv;
|
||||
|
||||
g_module_close (priv->lib);
|
||||
|
||||
priv->lib = NULL;
|
||||
priv->plugin_type = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_dispose (GObject *object)
|
||||
{
|
||||
G_OBJECT_CLASS (mutter_module_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_finalize (GObject *object)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
|
||||
g_free (priv->path);
|
||||
priv->path = NULL;
|
||||
|
||||
G_OBJECT_CLASS (mutter_module_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_PATH:
|
||||
g_free (priv->path);
|
||||
priv->path = g_value_dup_string (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_PATH:
|
||||
g_value_set_string (value, priv->path);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_class_init (MutterModuleClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
GTypeModuleClass *gmodule_class = G_TYPE_MODULE_CLASS (klass);
|
||||
|
||||
gobject_class->finalize = mutter_module_finalize;
|
||||
gobject_class->dispose = mutter_module_dispose;
|
||||
gobject_class->set_property = mutter_module_set_property;
|
||||
gobject_class->get_property = mutter_module_get_property;
|
||||
|
||||
gmodule_class->load = mutter_module_load;
|
||||
gmodule_class->unload = mutter_module_unload;
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_PATH,
|
||||
g_param_spec_string ("path",
|
||||
"Path",
|
||||
"Load path",
|
||||
NULL,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_type_class_add_private (gobject_class, sizeof (MutterModulePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_module_init (MutterModule *self)
|
||||
{
|
||||
MutterModulePrivate *priv;
|
||||
|
||||
self->priv = priv = MUTTER_MODULE_GET_PRIVATE (self);
|
||||
|
||||
}
|
||||
|
||||
GType
|
||||
mutter_module_get_plugin_type (MutterModule *module)
|
||||
{
|
||||
MutterModulePrivate *priv = MUTTER_MODULE (module)->priv;
|
||||
|
||||
return priv->plugin_type;
|
||||
}
|
||||
|
||||
57
src/compositor/mutter/mutter-module.h
Normal file
57
src/compositor/mutter/mutter-module.h
Normal file
@@ -0,0 +1,57 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef MUTTER_MODULE_H_
|
||||
#define MUTTER_MODULE_H_
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#define MUTTER_TYPE_MODULE (mutter_module_get_type ())
|
||||
#define MUTTER_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MUTTER_TYPE_MODULE, MutterModule))
|
||||
#define MUTTER_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MUTTER_TYPE_MODULE, MutterModuleClass))
|
||||
#define MUTTER_IS_MODULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MUTTER_MODULE_TYPE))
|
||||
#define MUTTER_IS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MUTTER_TYPE_MODULE))
|
||||
#define MUTTER_MODULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MUTTER_TYPE_MODULE, MutterModuleClass))
|
||||
|
||||
typedef struct _MutterModule MutterModule;
|
||||
typedef struct _MutterModuleClass MutterModuleClass;
|
||||
typedef struct _MutterModulePrivate MutterModulePrivate;
|
||||
|
||||
struct _MutterModule
|
||||
{
|
||||
GTypeModule parent;
|
||||
|
||||
MutterModulePrivate *priv;
|
||||
};
|
||||
|
||||
struct _MutterModuleClass
|
||||
{
|
||||
GTypeModuleClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GType mutter_module_get_type (void);
|
||||
|
||||
GType mutter_module_get_plugin_type (MutterModule *module);
|
||||
|
||||
#endif
|
||||
609
src/compositor/mutter/mutter-plugin-manager.c
Normal file
609
src/compositor/mutter/mutter-plugin-manager.c
Normal file
@@ -0,0 +1,609 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "mutter-plugin-manager.h"
|
||||
#include "prefs.h"
|
||||
#include "errors.h"
|
||||
#include "workspace.h"
|
||||
#include "mutter-module.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
* There is only one instace of each module per the process.
|
||||
*/
|
||||
static GHashTable *plugin_modules = NULL;
|
||||
|
||||
static gboolean mutter_plugin_manager_reload (MutterPluginManager *plugin_mgr);
|
||||
|
||||
struct MutterPluginManager
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
GList /* MutterPluginPending */ *pending_plugin_modules; /* Plugins not yet fully loaded */
|
||||
GList /* MutterPlugin */ *plugins; /* TODO -- maybe use hash table */
|
||||
GList *unload; /* Plugins that are disabled and pending unload */
|
||||
|
||||
guint idle_unload_id;
|
||||
};
|
||||
|
||||
typedef struct MutterPluginPending
|
||||
{
|
||||
MutterModule *module;
|
||||
char *path;
|
||||
char *params;
|
||||
} MutterPluginPending;
|
||||
|
||||
/*
|
||||
* Checks that the plugin is compatible with the WM and sets up the plugin
|
||||
* struct.
|
||||
*/
|
||||
static MutterPlugin *
|
||||
mutter_plugin_load (MutterPluginManager *mgr,
|
||||
MutterModule *module,
|
||||
const gchar *params)
|
||||
{
|
||||
MutterPlugin *plugin = NULL;
|
||||
GType plugin_type = mutter_module_get_plugin_type (module);
|
||||
|
||||
if (!plugin_type)
|
||||
{
|
||||
g_warning ("Plugin type not registered !!!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
plugin = g_object_new (plugin_type,
|
||||
"screen", mgr->screen,
|
||||
"params", params,
|
||||
NULL);
|
||||
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempst to unload a plugin; returns FALSE if plugin cannot be unloaded at
|
||||
* present (e.g., and effect is in progress) and should be scheduled for
|
||||
* removal later.
|
||||
*/
|
||||
static gboolean
|
||||
mutter_plugin_unload (MutterPlugin *plugin)
|
||||
{
|
||||
if (mutter_plugin_running (plugin))
|
||||
{
|
||||
g_object_set (plugin, "disabled", TRUE, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_object_unref (plugin);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Iddle callback to remove plugins that could not be removed directly and are
|
||||
* pending for removal.
|
||||
*/
|
||||
static gboolean
|
||||
mutter_plugin_manager_idle_unload (MutterPluginManager *plugin_mgr)
|
||||
{
|
||||
GList *l = plugin_mgr->unload;
|
||||
gboolean dont_remove = TRUE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
|
||||
if (mutter_plugin_unload (plugin))
|
||||
{
|
||||
/* Remove from list */
|
||||
GList *p = l->prev;
|
||||
GList *n = l->next;
|
||||
|
||||
if (!p)
|
||||
plugin_mgr->unload = n;
|
||||
else
|
||||
p->next = n;
|
||||
|
||||
if (n)
|
||||
n->prev = p;
|
||||
|
||||
g_list_free_1 (l);
|
||||
|
||||
l = n;
|
||||
}
|
||||
else
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
if (!plugin_mgr->unload)
|
||||
{
|
||||
/* If no more unloads are pending, remove the handler as well */
|
||||
dont_remove = FALSE;
|
||||
plugin_mgr->idle_unload_id = 0;
|
||||
}
|
||||
|
||||
return dont_remove;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unloads all plugins
|
||||
*/
|
||||
static void
|
||||
mutter_plugin_manager_unload (MutterPluginManager *plugin_mgr)
|
||||
{
|
||||
GList *plugins = plugin_mgr->plugins;
|
||||
|
||||
while (plugins)
|
||||
{
|
||||
MutterPlugin *plugin = plugins->data;
|
||||
|
||||
/* If the plugin could not be removed, move it to the unload list */
|
||||
if (!mutter_plugin_unload (plugin))
|
||||
{
|
||||
plugin_mgr->unload = g_list_prepend (plugin_mgr->unload, plugin);
|
||||
|
||||
if (!plugin_mgr->idle_unload_id)
|
||||
{
|
||||
plugin_mgr->idle_unload_id = g_idle_add ((GSourceFunc)
|
||||
mutter_plugin_manager_idle_unload,
|
||||
plugin_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
plugins = plugins->next;
|
||||
}
|
||||
|
||||
g_list_free (plugin_mgr->plugins);
|
||||
plugin_mgr->plugins = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_changed_callback (MetaPreference pref,
|
||||
void *data)
|
||||
{
|
||||
MutterPluginManager *plugin_mgr = data;
|
||||
|
||||
if (pref == META_PREF_CLUTTER_PLUGINS)
|
||||
{
|
||||
mutter_plugin_manager_reload (plugin_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
static MutterModule *
|
||||
mutter_plugin_manager_get_module (const gchar *path)
|
||||
{
|
||||
MutterModule *module = g_hash_table_lookup (plugin_modules, path);
|
||||
|
||||
if (!module &&
|
||||
(module = g_object_new (MUTTER_TYPE_MODULE, "path", path, NULL)))
|
||||
{
|
||||
g_hash_table_insert (plugin_modules, g_strdup (path), module);
|
||||
}
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
/*
|
||||
* Loads all plugins listed in gconf registry.
|
||||
*/
|
||||
gboolean
|
||||
mutter_plugin_manager_load (MutterPluginManager *plugin_mgr)
|
||||
{
|
||||
const gchar *dpath = MUTTER_PLUGIN_DIR "/";
|
||||
GSList *plugins, *fallback = NULL;
|
||||
|
||||
plugins = meta_prefs_get_clutter_plugins ();
|
||||
|
||||
if (!plugins)
|
||||
{
|
||||
/*
|
||||
* If no plugins are specified, try to load the default plugin.
|
||||
*/
|
||||
fallback = g_slist_append (fallback, "default");
|
||||
plugins = fallback;
|
||||
}
|
||||
|
||||
while (plugins)
|
||||
{
|
||||
gchar *plugin_string;
|
||||
gchar *params;
|
||||
|
||||
plugin_string = g_strdup (plugins->data);
|
||||
|
||||
if (plugin_string)
|
||||
{
|
||||
MutterModule *module;
|
||||
gchar *path;
|
||||
|
||||
params = strchr (plugin_string, ':');
|
||||
|
||||
if (params)
|
||||
{
|
||||
*params = 0;
|
||||
++params;
|
||||
}
|
||||
|
||||
if (g_path_is_absolute (plugin_string))
|
||||
path = g_strdup (plugin_string);
|
||||
else
|
||||
path = g_strconcat (dpath, plugin_string, ".so", NULL);
|
||||
|
||||
module = mutter_plugin_manager_get_module (path);
|
||||
|
||||
if (module)
|
||||
{
|
||||
gboolean use_succeeded;
|
||||
|
||||
/*
|
||||
* This dlopens the module and registers the plugin type with the
|
||||
* GType system, if the module is not already loaded. When we
|
||||
* create a plugin, the type system also calls g_type_module_use()
|
||||
* to guarantee the module will not be unloaded during the plugin
|
||||
* life time. Consequently we can unuse() the module again.
|
||||
*/
|
||||
use_succeeded = g_type_module_use (G_TYPE_MODULE (module));
|
||||
|
||||
if (use_succeeded)
|
||||
{
|
||||
MutterPluginPending *pending = g_new0 (MutterPluginPending, 1);
|
||||
pending->module = module;
|
||||
pending->path = g_strdup (path);
|
||||
pending->params = g_strdup (params);
|
||||
plugin_mgr->pending_plugin_modules =
|
||||
g_list_prepend (plugin_mgr->pending_plugin_modules, pending);
|
||||
}
|
||||
}
|
||||
else
|
||||
g_warning ("Unable to load plugin module [%s]: %s",
|
||||
path, g_module_error());
|
||||
|
||||
g_free (path);
|
||||
g_free (plugin_string);
|
||||
}
|
||||
|
||||
plugins = plugins->next;
|
||||
}
|
||||
|
||||
|
||||
if (fallback)
|
||||
g_slist_free (fallback);
|
||||
|
||||
if (plugin_mgr->pending_plugin_modules != NULL)
|
||||
{
|
||||
meta_prefs_add_listener (prefs_changed_callback, plugin_mgr);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
mutter_plugin_manager_initialize (MutterPluginManager *plugin_mgr)
|
||||
{
|
||||
GList *iter;
|
||||
|
||||
for (iter = plugin_mgr->pending_plugin_modules; iter; iter = iter->next)
|
||||
{
|
||||
MutterPluginPending *pending = (MutterPluginPending*) iter->data;
|
||||
MutterPlugin *p;
|
||||
|
||||
if ((p = mutter_plugin_load (plugin_mgr, pending->module, pending->params)))
|
||||
{
|
||||
plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, p);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Plugin load for [%s] failed", pending->path);
|
||||
}
|
||||
|
||||
g_type_module_unuse (G_TYPE_MODULE (pending->module));
|
||||
g_free (pending->path);
|
||||
g_free (pending->params);
|
||||
g_free (pending);
|
||||
}
|
||||
g_list_free (plugin_mgr->pending_plugin_modules);
|
||||
plugin_mgr->pending_plugin_modules = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reloads all plugins
|
||||
*/
|
||||
static gboolean
|
||||
mutter_plugin_manager_reload (MutterPluginManager *plugin_mgr)
|
||||
{
|
||||
/* TODO -- brute force; should we build a list of plugins to load and list of
|
||||
* plugins to unload? We are probably not going to have large numbers of
|
||||
* plugins loaded at the same time, so it might not be worth it.
|
||||
*/
|
||||
mutter_plugin_manager_unload (plugin_mgr);
|
||||
return mutter_plugin_manager_load (plugin_mgr);
|
||||
}
|
||||
|
||||
MutterPluginManager *
|
||||
mutter_plugin_manager_new (MetaScreen *screen)
|
||||
{
|
||||
MutterPluginManager *plugin_mgr;
|
||||
|
||||
if (!plugin_modules)
|
||||
{
|
||||
plugin_modules = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
|
||||
NULL);
|
||||
}
|
||||
|
||||
plugin_mgr = g_new0 (MutterPluginManager, 1);
|
||||
|
||||
plugin_mgr->screen = screen;
|
||||
|
||||
return plugin_mgr;
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_manager_kill_effect (MutterPluginManager *plugin_mgr,
|
||||
MutterWindow *actor,
|
||||
unsigned long events)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!mutter_plugin_disabled (plugin)
|
||||
&& (mutter_plugin_features (plugin) & events)
|
||||
&& klass->kill_effect)
|
||||
klass->kill_effect (plugin, actor, events);
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
}
|
||||
|
||||
#define ALL_BUT_SWITCH \
|
||||
MUTTER_PLUGIN_ALL_EFFECTS & \
|
||||
~MUTTER_PLUGIN_SWITCH_WORKSPACE
|
||||
/*
|
||||
* Public method that the compositor hooks into for events that require
|
||||
* no additional parameters.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
mutter_plugin_manager_event_simple (MutterPluginManager *plugin_mgr,
|
||||
MutterWindow *actor,
|
||||
unsigned long event)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!mutter_plugin_disabled (plugin) &&
|
||||
(mutter_plugin_features (plugin) & event))
|
||||
{
|
||||
retval = TRUE;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case MUTTER_PLUGIN_MINIMIZE:
|
||||
if (klass->minimize)
|
||||
{
|
||||
mutter_plugin_manager_kill_effect (
|
||||
plugin_mgr,
|
||||
actor,
|
||||
ALL_BUT_SWITCH);
|
||||
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->minimize (plugin, actor);
|
||||
}
|
||||
break;
|
||||
case MUTTER_PLUGIN_MAP:
|
||||
if (klass->map)
|
||||
{
|
||||
mutter_plugin_manager_kill_effect (
|
||||
plugin_mgr,
|
||||
actor,
|
||||
ALL_BUT_SWITCH);
|
||||
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->map (plugin, actor);
|
||||
}
|
||||
break;
|
||||
case MUTTER_PLUGIN_DESTROY:
|
||||
if (klass->destroy)
|
||||
{
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->destroy (plugin, actor);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_warning ("Incorrect handler called for event %lu", event);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for maximize and unmaximize
|
||||
* events.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
mutter_plugin_manager_event_maximize (MutterPluginManager *plugin_mgr,
|
||||
MutterWindow *actor,
|
||||
unsigned long event,
|
||||
gint target_x,
|
||||
gint target_y,
|
||||
gint target_width,
|
||||
gint target_height)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!mutter_plugin_disabled (plugin) &&
|
||||
(mutter_plugin_features (plugin) & event))
|
||||
{
|
||||
retval = TRUE;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case MUTTER_PLUGIN_MAXIMIZE:
|
||||
if (klass->maximize)
|
||||
{
|
||||
mutter_plugin_manager_kill_effect (
|
||||
plugin_mgr,
|
||||
actor,
|
||||
ALL_BUT_SWITCH);
|
||||
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->maximize (plugin, actor,
|
||||
target_x, target_y,
|
||||
target_width, target_height);
|
||||
}
|
||||
break;
|
||||
case MUTTER_PLUGIN_UNMAXIMIZE:
|
||||
if (klass->unmaximize)
|
||||
{
|
||||
mutter_plugin_manager_kill_effect (
|
||||
plugin_mgr,
|
||||
actor,
|
||||
ALL_BUT_SWITCH);
|
||||
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->unmaximize (plugin, actor,
|
||||
target_x, target_y,
|
||||
target_width, target_height);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_warning ("Incorrect handler called for event %lu", event);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for desktop switching.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
mutter_plugin_manager_switch_workspace (MutterPluginManager *plugin_mgr,
|
||||
const GList **actors,
|
||||
gint from,
|
||||
gint to,
|
||||
MetaMotionDirection direction)
|
||||
{
|
||||
GList *l = plugin_mgr->plugins;
|
||||
gboolean retval = FALSE;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (!mutter_plugin_disabled (plugin) &&
|
||||
(mutter_plugin_features (plugin) & MUTTER_PLUGIN_SWITCH_WORKSPACE) &&
|
||||
(actors && *actors))
|
||||
{
|
||||
if (klass->switch_workspace)
|
||||
{
|
||||
retval = TRUE;
|
||||
mutter_plugin_manager_kill_effect (
|
||||
plugin_mgr,
|
||||
MUTTER_WINDOW ((*actors)->data),
|
||||
MUTTER_PLUGIN_SWITCH_WORKSPACE);
|
||||
|
||||
_mutter_plugin_effect_started (plugin);
|
||||
klass->switch_workspace (plugin, actors, from, to, direction);
|
||||
}
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* The public method that the compositor hooks into for desktop switching.
|
||||
*
|
||||
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
|
||||
* if the return value is FALSE, there will be no subsequent call to the
|
||||
* manager completed() callback, and the compositor must ensure that any
|
||||
* appropriate post-effect cleanup is carried out.
|
||||
*/
|
||||
gboolean
|
||||
mutter_plugin_manager_xevent_filter (MutterPluginManager *plugin_mgr,
|
||||
XEvent *xev)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
if (!plugin_mgr)
|
||||
return FALSE;
|
||||
|
||||
l = plugin_mgr->plugins;
|
||||
|
||||
while (l)
|
||||
{
|
||||
MutterPlugin *plugin = l->data;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (klass->xevent_filter)
|
||||
{
|
||||
if (klass->xevent_filter (plugin, xev) == TRUE)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
l = l->next;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
63
src/compositor/mutter/mutter-plugin-manager.h
Normal file
63
src/compositor/mutter/mutter-plugin-manager.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef MUTTER_PLUGIN_MANAGER_H_
|
||||
#define MUTTER_PLUGIN_MANAGER_H_
|
||||
|
||||
#include "types.h"
|
||||
#include "screen.h"
|
||||
|
||||
#define MUTTER_PLUGIN_FROM_MANAGER_
|
||||
#include "mutter-plugin.h"
|
||||
#undef MUTTER_PLUGIN_FROM_MANAGER_
|
||||
|
||||
typedef struct MutterPluginManager MutterPluginManager;
|
||||
|
||||
MutterPluginManager * mutter_plugin_manager_new (MetaScreen *screen);
|
||||
gboolean mutter_plugin_manager_load (MutterPluginManager *mgr);
|
||||
gboolean mutter_plugin_manager_initialize (MutterPluginManager *plugin_mgr);
|
||||
gboolean mutter_plugin_manager_event_simple (MutterPluginManager *mgr,
|
||||
MutterWindow *actor,
|
||||
unsigned long event);
|
||||
|
||||
gboolean mutter_plugin_manager_event_maximize (MutterPluginManager *mgr,
|
||||
MutterWindow *actor,
|
||||
unsigned long event,
|
||||
gint target_x,
|
||||
gint target_y,
|
||||
gint target_width,
|
||||
gint target_height);
|
||||
void mutter_plugin_manager_update_workspaces (MutterPluginManager *mgr);
|
||||
|
||||
void mutter_plugin_manager_update_workspace (MutterPluginManager *mgr, MetaWorkspace *w);
|
||||
|
||||
gboolean mutter_plugin_manager_switch_workspace (MutterPluginManager *mgr,
|
||||
const GList **actors,
|
||||
gint from,
|
||||
gint to,
|
||||
MetaMotionDirection direction);
|
||||
|
||||
gboolean mutter_plugin_manager_xevent_filter (MutterPluginManager *mgr,
|
||||
XEvent *xev);
|
||||
|
||||
#endif
|
||||
484
src/compositor/mutter/mutter-plugin.c
Normal file
484
src/compositor/mutter/mutter-plugin.c
Normal file
@@ -0,0 +1,484 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Intel Corp.
|
||||
*
|
||||
* Author: Tomas Frydrych <tf@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "mutter-plugin.h"
|
||||
#include "screen.h"
|
||||
#include "display.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xfixes.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
#include <clutter/x11/clutter-x11.h>
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE (MutterPlugin, mutter_plugin, G_TYPE_OBJECT);
|
||||
|
||||
#define MUTTER_PLUGIN_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUTTER_TYPE_PLUGIN, MutterPluginPrivate))
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_SCREEN,
|
||||
PROP_PARAMS,
|
||||
PROP_FEATURES,
|
||||
PROP_DISABLED,
|
||||
PROP_DEBUG_MODE,
|
||||
};
|
||||
|
||||
struct _MutterPluginPrivate
|
||||
{
|
||||
MetaScreen *screen;
|
||||
gchar *params;
|
||||
gulong features;
|
||||
|
||||
gint running;
|
||||
|
||||
gboolean disabled : 1;
|
||||
gboolean debug : 1;
|
||||
};
|
||||
|
||||
static void
|
||||
mutter_plugin_dispose (GObject *object)
|
||||
{
|
||||
G_OBJECT_CLASS (mutter_plugin_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_finalize (GObject *object)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (object)->priv;
|
||||
|
||||
g_free (priv->params);
|
||||
priv->params = NULL;
|
||||
|
||||
G_OBJECT_CLASS (mutter_plugin_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_parse_params (MutterPlugin *plugin)
|
||||
{
|
||||
char *p;
|
||||
gulong features = 0;
|
||||
MutterPluginPrivate *priv = plugin->priv;
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
/*
|
||||
* Feature flags: identify events that the plugin can handle; a plugin can
|
||||
* handle one or more events.
|
||||
*/
|
||||
if (klass->minimize)
|
||||
features |= MUTTER_PLUGIN_MINIMIZE;
|
||||
|
||||
if (klass->maximize)
|
||||
features |= MUTTER_PLUGIN_MAXIMIZE;
|
||||
|
||||
if (klass->unmaximize)
|
||||
features |= MUTTER_PLUGIN_UNMAXIMIZE;
|
||||
|
||||
if (klass->map)
|
||||
features |= MUTTER_PLUGIN_MAP;
|
||||
|
||||
if (klass->destroy)
|
||||
features |= MUTTER_PLUGIN_DESTROY;
|
||||
|
||||
if (klass->switch_workspace)
|
||||
features |= MUTTER_PLUGIN_SWITCH_WORKSPACE;
|
||||
|
||||
if (priv->params)
|
||||
{
|
||||
gboolean debug = FALSE;
|
||||
|
||||
if ((p = strstr (priv->params, "disable:")))
|
||||
{
|
||||
gchar *d = g_strdup (p+8);
|
||||
|
||||
p = strchr (d, ';');
|
||||
|
||||
if (p)
|
||||
*p = 0;
|
||||
|
||||
if (strstr (d, "minimize"))
|
||||
features &= ~ MUTTER_PLUGIN_MINIMIZE;
|
||||
|
||||
if (strstr (d, "maximize"))
|
||||
features &= ~ MUTTER_PLUGIN_MAXIMIZE;
|
||||
|
||||
if (strstr (d, "unmaximize"))
|
||||
features &= ~ MUTTER_PLUGIN_UNMAXIMIZE;
|
||||
|
||||
if (strstr (d, "map"))
|
||||
features &= ~ MUTTER_PLUGIN_MAP;
|
||||
|
||||
if (strstr (d, "destroy"))
|
||||
features &= ~ MUTTER_PLUGIN_DESTROY;
|
||||
|
||||
if (strstr (d, "switch-workspace"))
|
||||
features &= ~MUTTER_PLUGIN_SWITCH_WORKSPACE;
|
||||
|
||||
g_free (d);
|
||||
}
|
||||
|
||||
if (strstr (priv->params, "debug"))
|
||||
debug = TRUE;
|
||||
|
||||
if (debug != priv->debug)
|
||||
{
|
||||
priv->debug = debug;
|
||||
|
||||
g_object_notify (G_OBJECT (plugin), "debug-mode");
|
||||
}
|
||||
}
|
||||
|
||||
if (features != priv->features)
|
||||
{
|
||||
priv->features = features;
|
||||
|
||||
g_object_notify (G_OBJECT (plugin), "features");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_SCREEN:
|
||||
priv->screen = g_value_get_object (value);
|
||||
break;
|
||||
case PROP_PARAMS:
|
||||
priv->params = g_value_dup_string (value);
|
||||
mutter_plugin_parse_params (MUTTER_PLUGIN (object));
|
||||
break;
|
||||
case PROP_DISABLED:
|
||||
priv->disabled = g_value_get_boolean (value);
|
||||
break;
|
||||
case PROP_DEBUG_MODE:
|
||||
priv->debug = g_value_get_boolean (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (object)->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_SCREEN:
|
||||
g_value_set_object (value, priv->screen);
|
||||
break;
|
||||
case PROP_PARAMS:
|
||||
g_value_set_string (value, priv->params);
|
||||
break;
|
||||
case PROP_DISABLED:
|
||||
g_value_set_boolean (value, priv->disabled);
|
||||
break;
|
||||
case PROP_DEBUG_MODE:
|
||||
g_value_set_boolean (value, priv->debug);
|
||||
break;
|
||||
case PROP_FEATURES:
|
||||
g_value_set_ulong (value, priv->features);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
mutter_plugin_class_init (MutterPluginClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
gobject_class->finalize = mutter_plugin_finalize;
|
||||
gobject_class->dispose = mutter_plugin_dispose;
|
||||
gobject_class->set_property = mutter_plugin_set_property;
|
||||
gobject_class->get_property = mutter_plugin_get_property;
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_SCREEN,
|
||||
g_param_spec_object ("screen",
|
||||
"MetaScreen",
|
||||
"MetaScreen",
|
||||
META_TYPE_SCREEN,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_PARAMS,
|
||||
g_param_spec_string ("params",
|
||||
"Parameters",
|
||||
"Plugin Parameters",
|
||||
NULL,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT));
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_FEATURES,
|
||||
g_param_spec_ulong ("features",
|
||||
"Features",
|
||||
"Plugin Features",
|
||||
0 , G_MAXULONG, 0,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_DISABLED,
|
||||
g_param_spec_boolean ("disabled",
|
||||
"Plugin disabled",
|
||||
"Plugin disabled",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_DEBUG_MODE,
|
||||
g_param_spec_boolean ("debug-mode",
|
||||
"Debug Mode",
|
||||
"Debug Mode",
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
g_type_class_add_private (gobject_class, sizeof (MutterPluginPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_plugin_init (MutterPlugin *self)
|
||||
{
|
||||
MutterPluginPrivate *priv;
|
||||
|
||||
self->priv = priv = MUTTER_PLUGIN_GET_PRIVATE (self);
|
||||
}
|
||||
|
||||
gulong
|
||||
mutter_plugin_features (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return priv->features;
|
||||
}
|
||||
|
||||
gboolean
|
||||
mutter_plugin_disabled (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return priv->disabled;
|
||||
}
|
||||
|
||||
gboolean
|
||||
mutter_plugin_running (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return (priv->running > 0);
|
||||
}
|
||||
|
||||
gboolean
|
||||
mutter_plugin_debug_mode (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return priv->debug;
|
||||
}
|
||||
|
||||
const MutterPluginInfo *
|
||||
mutter_plugin_get_info (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginClass *klass = MUTTER_PLUGIN_GET_CLASS (plugin);
|
||||
|
||||
if (klass && klass->plugin_info)
|
||||
return klass->plugin_info (plugin);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
mutter_plugin_get_overlay_group (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return mutter_get_overlay_group_for_screen (priv->screen);
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
mutter_plugin_get_stage (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return mutter_get_stage_for_screen (priv->screen);
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
mutter_plugin_get_window_group (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return mutter_get_window_group_for_screen (priv->screen);
|
||||
}
|
||||
|
||||
/**
|
||||
* _mutter_plugin_effect_started:
|
||||
* @plugin: the plugin
|
||||
*
|
||||
* Mark that an effect has started for the plugin. This is called
|
||||
* internally by MutterPluginManager.
|
||||
*/
|
||||
void
|
||||
_mutter_plugin_effect_started (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
priv->running++;
|
||||
}
|
||||
|
||||
void
|
||||
mutter_plugin_effect_completed (MutterPlugin *plugin,
|
||||
MutterWindow *actor,
|
||||
unsigned long event)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
if (priv->running-- < 0)
|
||||
{
|
||||
g_warning ("Error in running effect accounting, adjusting.");
|
||||
priv->running = 0;
|
||||
}
|
||||
|
||||
if (!actor)
|
||||
{
|
||||
const MutterPluginInfo *info;
|
||||
const gchar *name = NULL;
|
||||
|
||||
if (plugin && (info = mutter_plugin_get_info (plugin)))
|
||||
name = info->name;
|
||||
|
||||
g_warning ("Plugin [%s] passed NULL for actor!",
|
||||
name ? name : "unknown");
|
||||
}
|
||||
|
||||
mutter_window_effect_completed (actor, event);
|
||||
}
|
||||
|
||||
void
|
||||
mutter_plugin_query_screen_size (MutterPlugin *plugin,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
meta_screen_get_size (priv->screen, width, height);
|
||||
}
|
||||
|
||||
void
|
||||
mutter_plugin_set_stage_reactive (MutterPlugin *plugin,
|
||||
gboolean reactive)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
MetaScreen *screen = priv->screen;
|
||||
|
||||
if (reactive)
|
||||
mutter_set_stage_input_region (screen, None);
|
||||
else
|
||||
mutter_empty_stage_input_region (screen);
|
||||
}
|
||||
|
||||
void
|
||||
mutter_plugin_set_stage_input_area (MutterPlugin *plugin,
|
||||
gint x, gint y, gint width, gint height)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
MetaScreen *screen = priv->screen;
|
||||
MetaDisplay *display = meta_screen_get_display (screen);
|
||||
Display *xdpy = meta_display_get_xdisplay (display);
|
||||
XRectangle rect;
|
||||
XserverRegion region;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
region = XFixesCreateRegion (xdpy, &rect, 1);
|
||||
mutter_set_stage_input_region (screen, region);
|
||||
XFixesDestroyRegion (xdpy, region);
|
||||
}
|
||||
|
||||
void
|
||||
mutter_plugin_set_stage_input_region (MutterPlugin *plugin,
|
||||
XserverRegion region)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
MetaScreen *screen = priv->screen;
|
||||
|
||||
mutter_set_stage_input_region (screen, region);
|
||||
}
|
||||
|
||||
GList *
|
||||
mutter_plugin_get_windows (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return mutter_get_windows (priv->screen);
|
||||
}
|
||||
|
||||
Display *
|
||||
mutter_plugin_get_xdisplay (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
MetaDisplay *display = meta_screen_get_display (priv->screen);
|
||||
Display *xdpy = meta_display_get_xdisplay (display);
|
||||
|
||||
return xdpy;
|
||||
}
|
||||
|
||||
/**
|
||||
* mutter_plugin_get_screen:
|
||||
* @plugin: a #MutterPlugin
|
||||
*
|
||||
* Gets the #MetaScreen corresponding to a plugin. Each plugin instance
|
||||
* is associated with exactly one screen; if Metacity is managing
|
||||
* multiple screens, multiple plugin instances will be created.
|
||||
*
|
||||
* Return value: (transfer none): the #MetaScreen for the plugin
|
||||
*/
|
||||
MetaScreen *
|
||||
mutter_plugin_get_screen (MutterPlugin *plugin)
|
||||
{
|
||||
MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv;
|
||||
|
||||
return priv->screen;
|
||||
}
|
||||
|
||||
428
src/compositor/mutter/mutter-shaped-texture.c
Executable file
428
src/compositor/mutter/mutter-shaped-texture.c
Executable file
@@ -0,0 +1,428 @@
|
||||
/*
|
||||
* shaped texture
|
||||
*
|
||||
* An actor to draw a texture clipped to a list of rectangles
|
||||
*
|
||||
* Authored By Neil Roberts <neil@linux.intel.com>
|
||||
*
|
||||
* Copyright (C) 2008 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "mutter-shaped-texture.h"
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <cogl/cogl.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
static void mutter_shaped_texture_dispose (GObject *object);
|
||||
static void mutter_shaped_texture_finalize (GObject *object);
|
||||
|
||||
static void mutter_shaped_texture_paint (ClutterActor *actor);
|
||||
static void mutter_shaped_texture_pick (ClutterActor *actor,
|
||||
const ClutterColor *color);
|
||||
|
||||
static void mutter_shaped_texture_dirty_mask (MutterShapedTexture *stex);
|
||||
|
||||
#ifdef HAVE_GLX_TEXTURE_PIXMAP
|
||||
G_DEFINE_TYPE (MutterShapedTexture, mutter_shaped_texture,
|
||||
CLUTTER_GLX_TYPE_TEXTURE_PIXMAP);
|
||||
#else /* HAVE_GLX_TEXTURE_PIXMAP */
|
||||
G_DEFINE_TYPE (MutterShapedTexture, mutter_shaped_texture,
|
||||
CLUTTER_X11_TYPE_TEXTURE_PIXMAP);
|
||||
#endif /* HAVE_GLX_TEXTURE_PIXMAP */
|
||||
|
||||
#define MUTTER_SHAPED_TEXTURE_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUTTER_TYPE_SHAPED_TEXTURE, \
|
||||
MutterShapedTexturePrivate))
|
||||
|
||||
struct _MutterShapedTexturePrivate
|
||||
{
|
||||
CoglHandle mask_texture;
|
||||
CoglHandle material;
|
||||
#if 1 /* see workaround comment in mutter_shaped_texture_paint */
|
||||
CoglHandle material_workaround;
|
||||
#endif
|
||||
|
||||
guint mask_width, mask_height;
|
||||
|
||||
GArray *rectangles;
|
||||
};
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_class_init (MutterShapedTextureClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = (GObjectClass *) klass;
|
||||
ClutterActorClass *actor_class = (ClutterActorClass *) klass;
|
||||
|
||||
gobject_class->dispose = mutter_shaped_texture_dispose;
|
||||
gobject_class->finalize = mutter_shaped_texture_finalize;
|
||||
|
||||
actor_class->paint = mutter_shaped_texture_paint;
|
||||
actor_class->pick = mutter_shaped_texture_pick;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (MutterShapedTexturePrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_init (MutterShapedTexture *self)
|
||||
{
|
||||
MutterShapedTexturePrivate *priv;
|
||||
|
||||
priv = self->priv = MUTTER_SHAPED_TEXTURE_GET_PRIVATE (self);
|
||||
|
||||
priv->rectangles = g_array_new (FALSE, FALSE, sizeof (XRectangle));
|
||||
|
||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_dispose (GObject *object)
|
||||
{
|
||||
MutterShapedTexture *self = (MutterShapedTexture *) object;
|
||||
MutterShapedTexturePrivate *priv = self->priv;
|
||||
|
||||
mutter_shaped_texture_dirty_mask (self);
|
||||
|
||||
if (priv->material != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_material_unref (priv->material);
|
||||
priv->material = COGL_INVALID_HANDLE;
|
||||
}
|
||||
#if 1 /* see comment in mutter_shaped_texture_paint */
|
||||
if (priv->material_workaround != COGL_INVALID_HANDLE)
|
||||
{
|
||||
cogl_material_unref (priv->material_workaround);
|
||||
priv->material_workaround = COGL_INVALID_HANDLE;
|
||||
}
|
||||
#endif
|
||||
|
||||
G_OBJECT_CLASS (mutter_shaped_texture_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_finalize (GObject *object)
|
||||
{
|
||||
MutterShapedTexture *self = (MutterShapedTexture *) object;
|
||||
MutterShapedTexturePrivate *priv = self->priv;
|
||||
|
||||
g_array_free (priv->rectangles, TRUE);
|
||||
|
||||
G_OBJECT_CLASS (mutter_shaped_texture_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_dirty_mask (MutterShapedTexture *stex)
|
||||
{
|
||||
MutterShapedTexturePrivate *priv = stex->priv;
|
||||
|
||||
if (priv->mask_texture != COGL_INVALID_HANDLE)
|
||||
{
|
||||
GLuint mask_gl_tex;
|
||||
GLenum mask_gl_target;
|
||||
|
||||
cogl_texture_get_gl_texture (priv->mask_texture,
|
||||
&mask_gl_tex, &mask_gl_target);
|
||||
|
||||
if (mask_gl_target == CGL_TEXTURE_RECTANGLE_ARB)
|
||||
glDeleteTextures (1, &mask_gl_tex);
|
||||
|
||||
cogl_texture_unref (priv->mask_texture);
|
||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_ensure_mask (MutterShapedTexture *stex)
|
||||
{
|
||||
MutterShapedTexturePrivate *priv = stex->priv;
|
||||
CoglHandle paint_tex;
|
||||
guint tex_width, tex_height;
|
||||
|
||||
paint_tex = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (stex));
|
||||
|
||||
if (paint_tex == COGL_INVALID_HANDLE)
|
||||
return;
|
||||
|
||||
tex_width = cogl_texture_get_width (paint_tex);
|
||||
tex_height = cogl_texture_get_height (paint_tex);
|
||||
|
||||
/* If the mask texture we have was created for a different size then
|
||||
recreate it */
|
||||
if (priv->mask_texture != COGL_INVALID_HANDLE
|
||||
&& (priv->mask_width != tex_width || priv->mask_height != tex_height))
|
||||
mutter_shaped_texture_dirty_mask (stex);
|
||||
|
||||
/* If we don't have a mask texture yet then create one */
|
||||
if (priv->mask_texture == COGL_INVALID_HANDLE)
|
||||
{
|
||||
guchar *mask_data;
|
||||
const XRectangle *rect;
|
||||
GLenum paint_gl_target;
|
||||
|
||||
/* Create data for an empty image */
|
||||
mask_data = g_malloc0 (tex_width * tex_height);
|
||||
|
||||
/* Cut out a hole for each rectangle */
|
||||
for (rect = (XRectangle *) priv->rectangles->data
|
||||
+ priv->rectangles->len;
|
||||
rect-- > (XRectangle *) priv->rectangles->data;)
|
||||
{
|
||||
gint x1 = rect->x, x2 = x1 + rect->width;
|
||||
gint y1 = rect->y, y2 = y1 + rect->height;
|
||||
guchar *p;
|
||||
|
||||
/* Clip the rectangle to the size of the texture */
|
||||
x1 = CLAMP (x1, 0, (gint) tex_width - 1);
|
||||
x2 = CLAMP (x2, x1, (gint) tex_width);
|
||||
y1 = CLAMP (y1, 0, (gint) tex_height - 1);
|
||||
y2 = CLAMP (y2, y1, (gint) tex_height);
|
||||
|
||||
/* Fill the rectangle */
|
||||
for (p = mask_data + y1 * tex_width + x1;
|
||||
y1 < y2;
|
||||
y1++, p += tex_width)
|
||||
memset (p, 255, x2 - x1);
|
||||
}
|
||||
|
||||
cogl_texture_get_gl_texture (paint_tex, NULL, &paint_gl_target);
|
||||
|
||||
if (paint_gl_target == CGL_TEXTURE_RECTANGLE_ARB)
|
||||
{
|
||||
GLuint tex;
|
||||
|
||||
glGenTextures (1, &tex);
|
||||
glBindTexture (CGL_TEXTURE_RECTANGLE_ARB, tex);
|
||||
glPixelStorei (GL_UNPACK_ROW_LENGTH, tex_width);
|
||||
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
|
||||
glPixelStorei (GL_UNPACK_SKIP_ROWS, 0);
|
||||
glPixelStorei (GL_UNPACK_SKIP_PIXELS, 0);
|
||||
glTexImage2D (CGL_TEXTURE_RECTANGLE_ARB, 0,
|
||||
GL_ALPHA, tex_width, tex_height,
|
||||
0, GL_ALPHA, GL_UNSIGNED_BYTE, mask_data);
|
||||
|
||||
priv->mask_texture
|
||||
= cogl_texture_new_from_foreign (tex,
|
||||
CGL_TEXTURE_RECTANGLE_ARB,
|
||||
tex_width, tex_height,
|
||||
0, 0,
|
||||
COGL_PIXEL_FORMAT_A_8);
|
||||
}
|
||||
else
|
||||
priv->mask_texture = cogl_texture_new_from_data (tex_width, tex_height,
|
||||
COGL_TEXTURE_NONE,
|
||||
COGL_PIXEL_FORMAT_A_8,
|
||||
COGL_PIXEL_FORMAT_ANY,
|
||||
tex_width,
|
||||
mask_data);
|
||||
|
||||
g_free (mask_data);
|
||||
|
||||
priv->mask_width = tex_width;
|
||||
priv->mask_height = tex_height;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_paint (ClutterActor *actor)
|
||||
{
|
||||
MutterShapedTexture *stex = (MutterShapedTexture *) actor;
|
||||
MutterShapedTexturePrivate *priv = stex->priv;
|
||||
CoglHandle paint_tex;
|
||||
guint tex_width, tex_height;
|
||||
ClutterActorBox alloc;
|
||||
CoglHandle material;
|
||||
#if 1 /* please see comment below about workaround */
|
||||
guint depth;
|
||||
#endif
|
||||
|
||||
if (!CLUTTER_ACTOR_IS_REALIZED (CLUTTER_ACTOR (stex)))
|
||||
clutter_actor_realize (CLUTTER_ACTOR (stex));
|
||||
|
||||
paint_tex = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (stex));
|
||||
|
||||
tex_width = cogl_texture_get_width (paint_tex);
|
||||
tex_height = cogl_texture_get_height (paint_tex);
|
||||
|
||||
if (tex_width == 0 || tex_width == 0) /* no contents yet */
|
||||
return;
|
||||
|
||||
/* If there are no rectangles fallback to the regular paint
|
||||
method */
|
||||
if (priv->rectangles->len < 1)
|
||||
{
|
||||
CLUTTER_ACTOR_CLASS (mutter_shaped_texture_parent_class)
|
||||
->paint (actor);
|
||||
return;
|
||||
}
|
||||
|
||||
if (paint_tex == COGL_INVALID_HANDLE)
|
||||
return;
|
||||
|
||||
mutter_shaped_texture_ensure_mask (stex);
|
||||
|
||||
if (priv->material == COGL_INVALID_HANDLE)
|
||||
{
|
||||
priv->material = cogl_material_new ();
|
||||
|
||||
cogl_material_set_layer_combine (priv->material, 1,
|
||||
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
||||
NULL);
|
||||
}
|
||||
material = priv->material;
|
||||
|
||||
#if 1
|
||||
/* This was added as a workaround. It seems that with the intel
|
||||
* drivers when multi-texturing using an RGB TFP texture, the
|
||||
* texture is actually setup internally as an RGBA texture, where
|
||||
* the alpha channel is mostly 0.0 so you only see a shimmer of the
|
||||
* window. This workaround forcibly defines the alpha channel as
|
||||
* 1.0. Maybe there is some clutter/cogl state that is interacting
|
||||
* with this that is being overlooked, but for now this seems to
|
||||
* work. */
|
||||
g_object_get (stex, "pixmap-depth", &depth, NULL);
|
||||
if (depth == 24)
|
||||
{
|
||||
if (priv->material_workaround == COGL_INVALID_HANDLE)
|
||||
{
|
||||
material = priv->material_workaround = cogl_material_new ();
|
||||
|
||||
cogl_material_set_layer_combine (material, 0,
|
||||
"RGB = MODULATE (TEXTURE, PREVIOUS)"
|
||||
"A = REPLACE (PREVIOUS)",
|
||||
NULL);
|
||||
cogl_material_set_layer_combine (material, 1,
|
||||
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
||||
NULL);
|
||||
}
|
||||
|
||||
material = priv->material_workaround;
|
||||
}
|
||||
#endif
|
||||
|
||||
cogl_material_set_layer (material, 0, paint_tex);
|
||||
cogl_material_set_layer (material, 1, priv->mask_texture);
|
||||
|
||||
{
|
||||
CoglColor color;
|
||||
guchar opacity = clutter_actor_get_paint_opacity (actor);
|
||||
cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity);
|
||||
cogl_material_set_color (material, &color);
|
||||
}
|
||||
|
||||
cogl_set_source (material);
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &alloc);
|
||||
cogl_rectangle (0, 0,
|
||||
alloc.x2 - alloc.x1,
|
||||
alloc.y2 - alloc.y1);
|
||||
}
|
||||
|
||||
static void
|
||||
mutter_shaped_texture_pick (ClutterActor *actor,
|
||||
const ClutterColor *color)
|
||||
{
|
||||
MutterShapedTexture *stex = (MutterShapedTexture *) actor;
|
||||
MutterShapedTexturePrivate *priv = stex->priv;
|
||||
|
||||
/* If there are no rectangles then use the regular pick */
|
||||
if (priv->rectangles->len < 1)
|
||||
CLUTTER_ACTOR_CLASS (mutter_shaped_texture_parent_class)
|
||||
->pick (actor, color);
|
||||
else if (clutter_actor_should_pick_paint (actor))
|
||||
{
|
||||
CoglHandle paint_tex;
|
||||
ClutterActorBox alloc;
|
||||
guint tex_width, tex_height;
|
||||
|
||||
paint_tex = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (stex));
|
||||
|
||||
if (paint_tex == COGL_INVALID_HANDLE)
|
||||
return;
|
||||
|
||||
tex_width = cogl_texture_get_width (paint_tex);
|
||||
tex_height = cogl_texture_get_height (paint_tex);
|
||||
|
||||
if (tex_width == 0 || tex_width == 0) /* no contents yet */
|
||||
return;
|
||||
|
||||
mutter_shaped_texture_ensure_mask (stex);
|
||||
|
||||
cogl_set_source_color4ub (color->red, color->green, color->blue,
|
||||
color->alpha);
|
||||
|
||||
clutter_actor_get_allocation_box (actor, &alloc);
|
||||
|
||||
/* Paint the mask rectangle in the given color */
|
||||
cogl_set_source_texture (priv->mask_texture);
|
||||
cogl_rectangle_with_texture_coords (0, 0,
|
||||
alloc.x2 - alloc.x1,
|
||||
alloc.y2 - alloc.y1,
|
||||
0, 0, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
mutter_shaped_texture_new (void)
|
||||
{
|
||||
ClutterActor *self = g_object_new (MUTTER_TYPE_SHAPED_TEXTURE, NULL);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
void
|
||||
mutter_shaped_texture_clear_rectangles (MutterShapedTexture *stex)
|
||||
{
|
||||
MutterShapedTexturePrivate *priv;
|
||||
|
||||
g_return_if_fail (MUTTER_IS_SHAPED_TEXTURE (stex));
|
||||
|
||||
priv = stex->priv;
|
||||
|
||||
g_array_set_size (priv->rectangles, 0);
|
||||
mutter_shaped_texture_dirty_mask (stex);
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||
}
|
||||
|
||||
void
|
||||
mutter_shaped_texture_add_rectangle (MutterShapedTexture *stex,
|
||||
const XRectangle *rect)
|
||||
{
|
||||
g_return_if_fail (MUTTER_IS_SHAPED_TEXTURE (stex));
|
||||
|
||||
mutter_shaped_texture_add_rectangles (stex, 1, rect);
|
||||
}
|
||||
|
||||
void
|
||||
mutter_shaped_texture_add_rectangles (MutterShapedTexture *stex,
|
||||
size_t num_rects,
|
||||
const XRectangle *rects)
|
||||
{
|
||||
MutterShapedTexturePrivate *priv;
|
||||
|
||||
g_return_if_fail (MUTTER_IS_SHAPED_TEXTURE (stex));
|
||||
|
||||
priv = stex->priv;
|
||||
|
||||
g_array_append_vals (priv->rectangles, rects, num_rects);
|
||||
|
||||
mutter_shaped_texture_dirty_mask (stex);
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||
}
|
||||
95
src/compositor/mutter/mutter-shaped-texture.h
Normal file
95
src/compositor/mutter/mutter-shaped-texture.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* shaped texture
|
||||
*
|
||||
* An actor to draw a texture clipped to a list of rectangles
|
||||
*
|
||||
* Authored By Neil Roberts <neil@linux.intel.com>
|
||||
*
|
||||
* Copyright (C) 2008 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __MUTTER_SHAPED_TEXTURE_H__
|
||||
#define __MUTTER_SHAPED_TEXTURE_H__
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#ifdef HAVE_GLX_TEXTURE_PIXMAP
|
||||
#include <clutter/glx/clutter-glx.h>
|
||||
#endif /* HAVE_GLX_TEXTURE_PIXMAP */
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define MUTTER_TYPE_SHAPED_TEXTURE \
|
||||
(mutter_shaped_texture_get_type())
|
||||
#define MUTTER_SHAPED_TEXTURE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
MUTTER_TYPE_SHAPED_TEXTURE, \
|
||||
MutterShapedTexture))
|
||||
#define MUTTER_SHAPED_TEXTURE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
MUTTER_TYPE_SHAPED_TEXTURE, \
|
||||
MutterShapedTextureClass))
|
||||
#define MUTTER_IS_SHAPED_TEXTURE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
|
||||
MUTTER_TYPE_SHAPED_TEXTURE))
|
||||
#define MUTTER_IS_SHAPED_TEXTURE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
|
||||
MUTTER_TYPE_SHAPED_TEXTURE))
|
||||
#define MUTTER_SHAPED_TEXTURE_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
MUTTER_TYPE_SHAPED_TEXTURE, \
|
||||
MutterShapedTextureClass))
|
||||
|
||||
typedef struct _MutterShapedTexture MutterShapedTexture;
|
||||
typedef struct _MutterShapedTextureClass MutterShapedTextureClass;
|
||||
typedef struct _MutterShapedTexturePrivate MutterShapedTexturePrivate;
|
||||
|
||||
struct _MutterShapedTextureClass
|
||||
{
|
||||
#ifdef HAVE_GLX_TEXTURE_PIXMAP
|
||||
ClutterGLXTexturePixmapClass parent_class;
|
||||
#else
|
||||
ClutterX11TexturePixmapClass parent_class;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct _MutterShapedTexture
|
||||
{
|
||||
#ifdef HAVE_GLX_TEXTURE_PIXMAP
|
||||
ClutterGLXTexturePixmap parent;
|
||||
#else
|
||||
ClutterX11TexturePixmap parent;
|
||||
#endif
|
||||
|
||||
MutterShapedTexturePrivate *priv;
|
||||
};
|
||||
|
||||
GType mutter_shaped_texture_get_type (void) G_GNUC_CONST;
|
||||
|
||||
ClutterActor *mutter_shaped_texture_new (void);
|
||||
|
||||
void mutter_shaped_texture_clear_rectangles (MutterShapedTexture *stex);
|
||||
|
||||
void mutter_shaped_texture_add_rectangle (MutterShapedTexture *stex,
|
||||
const XRectangle *rect);
|
||||
void mutter_shaped_texture_add_rectangles (MutterShapedTexture *stex,
|
||||
size_t num_rects,
|
||||
const XRectangle *rects);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MUTTER_SHAPED_TEXTURE_H__ */
|
||||
22
src/compositor/mutter/plugins/Makefile.am
Normal file
22
src/compositor/mutter/plugins/Makefile.am
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
pkglibdir=@MUTTER_PLUGIN_DIR@
|
||||
|
||||
if WITH_CLUTTER
|
||||
|
||||
INCLUDES=@MUTTER_CFLAGS@ -I $(top_srcdir)/src/include -DMUTTER_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMUTTER_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" -DMUTTER_PKGDATADIR=\"$(pkgdatadir)\" -DMUTTER_DATADIR=\"$(datadir)\" -DG_LOG_DOMAIN=\"mutter\" -DSN_API_NOT_YET_FROZEN=1 -DMUTTER_MAJOR_VERSION=$(MUTTER_MAJOR_VERSION) -DMUTTER_MINOR_VERSION=$(MUTTER_MINOR_VERSION) -DMUTTER_MICRO_VERSION=$(MUTTER_MICRO_VERSION) -DMUTTER_PLUGIN_API_VERSION=$(MUTTER_PLUGIN_API_VERSION) -DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\"
|
||||
|
||||
default_la_CFLAGS = -fPIC
|
||||
default_la_SOURCES = default.c
|
||||
default_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||
default_la_LIBADD = @CLUTTER_LIBS@
|
||||
|
||||
pkglib_LTLIBRARIES = default.la
|
||||
|
||||
# post-install hook to remove the .la and .a files we are not interested in
|
||||
# (There is no way to stop libtool generating static libs locally, and we
|
||||
# cannot do this globally because of libmutter-private.so).
|
||||
install-exec-hook:
|
||||
-rm $(DESTDIR)$(pkglibdir)/*.a
|
||||
-rm $(DESTDIR)$(pkglibdir)/*.la
|
||||
|
||||
endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user