Compare commits
541 Commits
METACITY_2
...
METACITY_2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
036fe284c2 | ||
![]() |
a1cc5fea1f | ||
![]() |
9442d21f44 | ||
![]() |
a0cd86d2ac | ||
![]() |
157aa0af6d | ||
![]() |
88cd978837 | ||
![]() |
e146c24483 | ||
![]() |
41b6f0803e | ||
![]() |
68ac59ff6d | ||
![]() |
c2abbce2ed | ||
![]() |
38cd6a6c1f | ||
![]() |
ac365b4ead | ||
![]() |
a06d96316e | ||
![]() |
6e8c233d6a | ||
![]() |
c627368ea1 | ||
![]() |
8524f510c6 | ||
![]() |
39e389cc5b | ||
![]() |
d079ef538c | ||
![]() |
203046237c | ||
![]() |
7a5606d241 | ||
![]() |
c4768a3b9f | ||
![]() |
51468bfb56 | ||
![]() |
f7b0c532aa | ||
![]() |
4c9bfecac5 | ||
![]() |
5dc36e1201 | ||
![]() |
6a86912554 | ||
![]() |
7405f040e8 | ||
![]() |
5ed940e101 | ||
![]() |
11f18a25c2 | ||
![]() |
d819b99d99 | ||
![]() |
8201b0361a | ||
![]() |
f97f20e3b0 | ||
![]() |
fc4ef3417f | ||
![]() |
c1348f0322 | ||
![]() |
647f75c4e8 | ||
![]() |
348795b94d | ||
![]() |
bb539466d5 | ||
![]() |
ab9bdf228b | ||
![]() |
c91475f20f | ||
![]() |
445b6ae6ed | ||
![]() |
2e9857b560 | ||
![]() |
8c1a5c6a11 | ||
![]() |
7a9da7eb69 | ||
![]() |
788cbc91b2 | ||
![]() |
9cb0b6ff52 | ||
![]() |
22d5f3fa57 | ||
![]() |
627dcede64 | ||
![]() |
fbefdce4c1 | ||
![]() |
77785ac321 | ||
![]() |
922b490499 | ||
![]() |
ee49194cf5 | ||
![]() |
f2bf9703db | ||
![]() |
1866268c94 | ||
![]() |
b7ee7bdd9b | ||
![]() |
ba3cf5dfad | ||
![]() |
f186d90dd3 | ||
![]() |
671b69a251 | ||
![]() |
fd01dbaaea | ||
![]() |
4854710de2 | ||
![]() |
493408167b | ||
![]() |
a8f1a61242 | ||
![]() |
4c3a5883d7 | ||
![]() |
6904b7a5d7 | ||
![]() |
7d67a9aee9 | ||
![]() |
b1b8d51264 | ||
![]() |
3ee8a903e8 | ||
![]() |
27fac47e76 | ||
![]() |
6144787b3e | ||
![]() |
c1e7ead397 | ||
![]() |
48f1dd5a7e | ||
![]() |
ff0fa107a4 | ||
![]() |
acd81439eb | ||
![]() |
b625ed254d | ||
![]() |
334370f5d1 | ||
![]() |
66c031315d | ||
![]() |
a49f986c67 | ||
![]() |
b1fb765d8e | ||
![]() |
9e72d661d6 | ||
![]() |
03ccf99dbb | ||
![]() |
85e67d1d49 | ||
![]() |
c2403a0c62 | ||
![]() |
839082aae8 | ||
![]() |
98753ed946 | ||
![]() |
0ee05e6617 | ||
![]() |
c5d86fae01 | ||
![]() |
0037a5fccc | ||
![]() |
1ea071fc18 | ||
![]() |
bc1e74153c | ||
![]() |
65a10829fd | ||
![]() |
0c0e102023 | ||
![]() |
914c93ae0d | ||
![]() |
a1c3a05b43 | ||
![]() |
f53e03f0a2 | ||
![]() |
0e8c8ba825 | ||
![]() |
f19aff7818 | ||
![]() |
52d14ee16d | ||
![]() |
4774a798a7 | ||
![]() |
28793c9f81 | ||
![]() |
3109a67a71 | ||
![]() |
d4662bb6a2 | ||
![]() |
13a8cdcbb3 | ||
![]() |
d2a4800e75 | ||
![]() |
ba19215cd4 | ||
![]() |
cf48407972 | ||
![]() |
f227fc4872 | ||
![]() |
0407545283 | ||
![]() |
0fd855f492 | ||
![]() |
177202e2d1 | ||
![]() |
18d9d15a1a | ||
![]() |
49cc773eb4 | ||
![]() |
8bd3cdff14 | ||
![]() |
2095cce3ab | ||
![]() |
5128bd4f28 | ||
![]() |
9c82331009 | ||
![]() |
347cfab7dd | ||
![]() |
dbfc9d25f6 | ||
![]() |
28cf8cc407 | ||
![]() |
b3283ce82b | ||
![]() |
b238584c1e | ||
![]() |
129fde88fa | ||
![]() |
13f3cb0b9a | ||
![]() |
2154d9e920 | ||
![]() |
8736f61579 | ||
![]() |
233237f098 | ||
![]() |
4fb40b57a9 | ||
![]() |
6e4c88ad93 | ||
![]() |
5631cbe22d | ||
![]() |
92fe1574ec | ||
![]() |
b4534658f3 | ||
![]() |
3cd7574749 | ||
![]() |
203b701d78 | ||
![]() |
14f8e1c553 | ||
![]() |
e6c16a77f1 | ||
![]() |
6f9048d69c | ||
![]() |
416bc2432c | ||
![]() |
51de9ef860 | ||
![]() |
af17cddf1c | ||
![]() |
12ae5cc4fe | ||
![]() |
bd00b58949 | ||
![]() |
deaebc5d2e | ||
![]() |
7f6a2ebc76 | ||
![]() |
7d9e4ee37d | ||
![]() |
7adbca2fdb | ||
![]() |
3848fa17e5 | ||
![]() |
f9a0c6d456 | ||
![]() |
7ec8054491 | ||
![]() |
34fe81fabd | ||
![]() |
dacf784498 | ||
![]() |
24e63a0d2d | ||
![]() |
6bf62be4d0 | ||
![]() |
77820c9697 | ||
![]() |
175efedd45 | ||
![]() |
81f8dad99e | ||
![]() |
aa70e34e34 | ||
![]() |
41fca4cf37 | ||
![]() |
0ef47a44c1 | ||
![]() |
91b5f24da8 | ||
![]() |
bd0a531253 | ||
![]() |
7988361eab | ||
![]() |
a1a030e418 | ||
![]() |
c05e6d079c | ||
![]() |
b3549979c6 | ||
![]() |
6039694eff | ||
![]() |
12ffd29542 | ||
![]() |
1aee3eff35 | ||
![]() |
9d31fa61ed | ||
![]() |
377e822c13 | ||
![]() |
c2ff92d3fa | ||
![]() |
ed22f38e7e | ||
![]() |
d341b8ea5e | ||
![]() |
795d2caf8b | ||
![]() |
f6036b9860 | ||
![]() |
82cefd12ad | ||
![]() |
7ab715fa71 | ||
![]() |
163e236cd0 | ||
![]() |
0107da404c | ||
![]() |
c94c482283 | ||
![]() |
09501c9fab | ||
![]() |
941e4bf967 | ||
![]() |
60d710a71f | ||
![]() |
5dbe941495 | ||
![]() |
e9388f4345 | ||
![]() |
a8c5c002fb | ||
![]() |
327e3cb6b5 | ||
![]() |
0bdfa0f494 | ||
![]() |
c500de4e38 | ||
![]() |
b55dbe10bb | ||
![]() |
01c0a95136 | ||
![]() |
8fea7a4128 | ||
![]() |
4f93a1a273 | ||
![]() |
c5c68fcbe8 | ||
![]() |
0c7be52675 | ||
![]() |
fff75cd9ae | ||
![]() |
76735c18a1 | ||
![]() |
1f435cc1fc | ||
![]() |
a5d2bdea55 | ||
![]() |
565a04793e | ||
![]() |
f167d55625 | ||
![]() |
3405f3d8c8 | ||
![]() |
f141692ca2 | ||
![]() |
fe292078fe | ||
![]() |
224040cd1a | ||
![]() |
4026ea7b42 | ||
![]() |
53b9e49ca4 | ||
![]() |
8547d1e8ed | ||
![]() |
b095ecc195 | ||
![]() |
3bbf402684 | ||
![]() |
f8ff76efdd | ||
![]() |
3673472cd7 | ||
![]() |
b455ac62d2 | ||
![]() |
4916fedc28 | ||
![]() |
81eeb9c0d5 | ||
![]() |
2d895ce875 | ||
![]() |
eacd442787 | ||
![]() |
b8a9ed1d3a | ||
![]() |
117f0e5663 | ||
![]() |
f13a8e6ab9 | ||
![]() |
fa1195b7f1 | ||
![]() |
3d9f2868fc | ||
![]() |
17bf5ea13a | ||
![]() |
8d3432b8b7 | ||
![]() |
3fcbbfbbd2 | ||
![]() |
2caa49bca8 | ||
![]() |
a8912c4fb9 | ||
![]() |
7f8ad91af6 | ||
![]() |
53a7cbe6af | ||
![]() |
b9c6ba8536 | ||
![]() |
4e653cc49f | ||
![]() |
c17d58237e | ||
![]() |
48261330de | ||
![]() |
300be6e03b | ||
![]() |
0c83442709 | ||
![]() |
d372cf598a | ||
![]() |
5fa7c76ba0 | ||
![]() |
77644a32d7 | ||
![]() |
fb588c6075 | ||
![]() |
6a586e8929 | ||
![]() |
58ef1592a5 | ||
![]() |
9730f15411 | ||
![]() |
f3e64f181d | ||
![]() |
0130c0d5b6 | ||
![]() |
1e325bcbdf | ||
![]() |
941a9a9a7f | ||
![]() |
38b4f08b2b | ||
![]() |
fe1ea6ac34 | ||
![]() |
932fb56ea9 | ||
![]() |
18dfce2873 | ||
![]() |
915192ca9f | ||
![]() |
f2b400b82c | ||
![]() |
e629364582 | ||
![]() |
3299427097 | ||
![]() |
7d239b0d45 | ||
![]() |
9836007f5e | ||
![]() |
87cceaf992 | ||
![]() |
f77dba7ac2 | ||
![]() |
d19de0c1ee | ||
![]() |
142b64fff9 | ||
![]() |
a9b20427a5 | ||
![]() |
0e02cf9b07 | ||
![]() |
5f4c3f817b | ||
![]() |
80e838aed5 | ||
![]() |
b4c369931d | ||
![]() |
1b00ca6158 | ||
![]() |
4b8a05b803 | ||
![]() |
fe816afa1d | ||
![]() |
b93a94506b | ||
![]() |
d1ef896c73 | ||
![]() |
ed5c34d335 | ||
![]() |
429a8ccd15 | ||
![]() |
a8c3d1614f | ||
![]() |
ac10c309ea | ||
![]() |
e021e06178 | ||
![]() |
8c6f3853b0 | ||
![]() |
e7196621bc | ||
![]() |
f8a5ef7c9f | ||
![]() |
85631aec0f | ||
![]() |
401b716cf5 | ||
![]() |
3d4adc8be9 | ||
![]() |
210206b699 | ||
![]() |
c0c05d51ea | ||
![]() |
9d9576612b | ||
![]() |
abdb3fd8b9 | ||
![]() |
b3f766c618 | ||
![]() |
41e93f71be | ||
![]() |
79076b2997 | ||
![]() |
3684bd2da4 | ||
![]() |
d0e22bf63d | ||
![]() |
8450d97341 | ||
![]() |
3043d2a2be | ||
![]() |
3ca31c7b04 | ||
![]() |
8802ac2fe9 | ||
![]() |
61c7487172 | ||
![]() |
3782c482ef | ||
![]() |
8c487ddbb2 | ||
![]() |
07939f235f | ||
![]() |
abfccf5002 | ||
![]() |
df83c15583 | ||
![]() |
83010879f1 | ||
![]() |
c35fd86b3b | ||
![]() |
932fd0dcff | ||
![]() |
2a53302ab9 | ||
![]() |
44a4c1c9fb | ||
![]() |
04956ecf18 | ||
![]() |
2d41d65cf2 | ||
![]() |
7e41ffdda5 | ||
![]() |
54c15a2583 | ||
![]() |
8aae0a7723 | ||
![]() |
f23d8a3774 | ||
![]() |
aad6f37f8a | ||
![]() |
404a61b571 | ||
![]() |
0312a3e474 | ||
![]() |
c25a5c99ec | ||
![]() |
ac5759af24 | ||
![]() |
9bee48dcd2 | ||
![]() |
73d9143d76 | ||
![]() |
230d78d8b4 | ||
![]() |
fbc3563b21 | ||
![]() |
4c8557055c | ||
![]() |
2f43d436c8 | ||
![]() |
a9a69ac807 | ||
![]() |
8e7fe42b5e | ||
![]() |
d70219b88d | ||
![]() |
806fa75a70 | ||
![]() |
1177b13338 | ||
![]() |
ea2d79fbfb | ||
![]() |
f60624ac5b | ||
![]() |
836a1f7b08 | ||
![]() |
a660fd3805 | ||
![]() |
d5cea091bf | ||
![]() |
0bd1727eab | ||
![]() |
8bd2822e69 | ||
![]() |
7a340792c9 | ||
![]() |
8e77d5b28d | ||
![]() |
8e79100b92 | ||
![]() |
18b63e9b5f | ||
![]() |
48b6e8dd67 | ||
![]() |
fb872b8f1e | ||
![]() |
94be13a003 | ||
![]() |
ea1c807d69 | ||
![]() |
1df98bd6a4 | ||
![]() |
6c192b67a9 | ||
![]() |
4a792d207c | ||
![]() |
1daf7543eb | ||
![]() |
b4890a3d22 | ||
![]() |
7b031a1c28 | ||
![]() |
ca098b2416 | ||
![]() |
cb5134de8d | ||
![]() |
e5009396f8 | ||
![]() |
53a116333c | ||
![]() |
13918cea25 | ||
![]() |
03f14bd5dd | ||
![]() |
8828532d14 | ||
![]() |
146ad60c7f | ||
![]() |
6da40d919b | ||
![]() |
a4d657a324 | ||
![]() |
4419430a57 | ||
![]() |
11ba3be6b9 | ||
![]() |
286af99def | ||
![]() |
a409a0a098 | ||
![]() |
ee7cfc8824 | ||
![]() |
af8d3c16bf | ||
![]() |
9d1549e1ff | ||
![]() |
845ecdc3af | ||
![]() |
1c5ef4a50f | ||
![]() |
212a9f26ab | ||
![]() |
e61015cb42 | ||
![]() |
c96ae75437 | ||
![]() |
a8e2f45b1c | ||
![]() |
33383e1f4f | ||
![]() |
b9e1a9159e | ||
![]() |
5dc41f8c94 | ||
![]() |
4aaf053760 | ||
![]() |
b718f79c47 | ||
![]() |
72b08c82b1 | ||
![]() |
3880951458 | ||
![]() |
3229882183 | ||
![]() |
f4cc847f83 | ||
![]() |
a63d5801ae | ||
![]() |
4b774eb18e | ||
![]() |
d052782caf | ||
![]() |
c2a6eeaf5e | ||
![]() |
931d70d87f | ||
![]() |
f28cd718f8 | ||
![]() |
623e4dc05c | ||
![]() |
89e47e2431 | ||
![]() |
83e18f8da4 | ||
![]() |
42951ec68f | ||
![]() |
a99ece5a5e | ||
![]() |
6bb78dcb0b | ||
![]() |
855de7253d | ||
![]() |
e7dc04d28e | ||
![]() |
4564236abf | ||
![]() |
e7758d64d8 | ||
![]() |
71c83da805 | ||
![]() |
2891388813 | ||
![]() |
194c514b45 | ||
![]() |
69255114d9 | ||
![]() |
43f0c34cf8 | ||
![]() |
aa2af695d7 | ||
![]() |
539285ca78 | ||
![]() |
dda8866f30 | ||
![]() |
618115931e | ||
![]() |
20d599819b | ||
![]() |
a8583668eb | ||
![]() |
4b0fd1b7d8 | ||
![]() |
3789229a70 | ||
![]() |
14c046d18d | ||
![]() |
386ffb4752 | ||
![]() |
fa51a94a69 | ||
![]() |
ef3f8c18a1 | ||
![]() |
f4e327f69c | ||
![]() |
b61359506c | ||
![]() |
2a9dc7272b | ||
![]() |
bcc3f56193 | ||
![]() |
6bec74017f | ||
![]() |
618a9f03b3 | ||
![]() |
98886f3d94 | ||
![]() |
7b690d6bc1 | ||
![]() |
67ce5927e1 | ||
![]() |
f29afe115d | ||
![]() |
6fa4345514 | ||
![]() |
d0523744b7 | ||
![]() |
848ccb3249 | ||
![]() |
988e5f49dd | ||
![]() |
118d962b2d | ||
![]() |
1bf37776c3 | ||
![]() |
908715bd84 | ||
![]() |
c241036c06 | ||
![]() |
280a01c5de | ||
![]() |
4ef11cfbd3 | ||
![]() |
8a023b00f2 | ||
![]() |
ab9ff657c7 | ||
![]() |
34cfd6fafd | ||
![]() |
c691288b14 | ||
![]() |
46c9134992 | ||
![]() |
eb3449f5c7 | ||
![]() |
211de6cfac | ||
![]() |
4e2434c082 | ||
![]() |
2d60c6b878 | ||
![]() |
f71386bdb5 | ||
![]() |
4e3a658b8e | ||
![]() |
bf683f6e50 | ||
![]() |
cb8b2fd433 | ||
![]() |
8780fd5e44 | ||
![]() |
0fd533eee1 | ||
![]() |
dc7e1007b0 | ||
![]() |
976968e07e | ||
![]() |
d986898234 | ||
![]() |
1d8db8825f | ||
![]() |
7c377a0193 | ||
![]() |
fe9e1cdb05 | ||
![]() |
d6e8c6c3ed | ||
![]() |
029e3fc0ae | ||
![]() |
c27cdff29c | ||
![]() |
cf2da99859 | ||
![]() |
3fe42e647a | ||
![]() |
1d06b1f5e8 | ||
![]() |
20479df535 | ||
![]() |
c585fa5036 | ||
![]() |
1aed84c9d7 | ||
![]() |
8cacb2afef | ||
![]() |
2cfd418b03 | ||
![]() |
e4c4d8b4d8 | ||
![]() |
fc74911256 | ||
![]() |
3d0535569d | ||
![]() |
4dc7e6a4ed | ||
![]() |
e84b5bfed0 | ||
![]() |
c9366989a0 | ||
![]() |
eb3c38e3ad | ||
![]() |
5196fb1ec5 | ||
![]() |
353408e30b | ||
![]() |
cc6b0e03fb | ||
![]() |
38cd0f28ef | ||
![]() |
3d118513c5 | ||
![]() |
d35c086240 | ||
![]() |
27e7d0c529 | ||
![]() |
a9294e2906 | ||
![]() |
446cc65f5d | ||
![]() |
0a94728234 | ||
![]() |
aa87fe4140 | ||
![]() |
5944e94710 | ||
![]() |
2b468a45b3 | ||
![]() |
d7cff41d1b | ||
![]() |
b4d0db909b | ||
![]() |
b595f1e99c | ||
![]() |
ed467aad59 | ||
![]() |
73224faec0 | ||
![]() |
bd5436097e | ||
![]() |
a462ba5798 | ||
![]() |
b1ff50f45f | ||
![]() |
5a6bbef8ac | ||
![]() |
309e254b1d | ||
![]() |
10dd09687b | ||
![]() |
69bbbbc6ca | ||
![]() |
1a6c98c79b | ||
![]() |
952e883456 | ||
![]() |
c652788542 | ||
![]() |
696ef85e64 | ||
![]() |
007e8c013c | ||
![]() |
cd07c25706 | ||
![]() |
3802f157b6 | ||
![]() |
a871830927 | ||
![]() |
5545e49581 | ||
![]() |
e98e38d32e | ||
![]() |
2d74cdc026 | ||
![]() |
7c343fc22d | ||
![]() |
1dc74bbc8c | ||
![]() |
618a6b38c3 | ||
![]() |
e8b016984b | ||
![]() |
8bbccb91f7 | ||
![]() |
9c2e546f53 | ||
![]() |
12ac1d6a4b | ||
![]() |
2ccb7f7bfa | ||
![]() |
389eb410c7 | ||
![]() |
f0c4d2c57b | ||
![]() |
4c4943312a | ||
![]() |
d616aeb828 | ||
![]() |
92c63dfdc5 | ||
![]() |
f9678266c7 | ||
![]() |
e3db5a0be6 | ||
![]() |
49e1802c7a | ||
![]() |
eb4941d005 | ||
![]() |
371f0b732f | ||
![]() |
bdd9e28878 | ||
![]() |
1f05ddcd0e | ||
![]() |
78604b64bc | ||
![]() |
7c4af65ec1 | ||
![]() |
e6083f64fb | ||
![]() |
b996cd03be | ||
![]() |
36287b9417 | ||
![]() |
6d8efc90e0 | ||
![]() |
d53af7196c | ||
![]() |
667c74bc4d | ||
![]() |
c5c59b1761 | ||
![]() |
5fb20624c4 | ||
![]() |
8f2b9cb4a9 | ||
![]() |
0418146249 | ||
![]() |
6e70013412 | ||
![]() |
ff33209e1f | ||
![]() |
98791271e1 | ||
![]() |
8eac4fa3ce |
21
HACKING
21
HACKING
@@ -42,18 +42,17 @@ Minimal Building/Testing Environment
|
||||
build a development version of Metacity -- odds are, you may be able
|
||||
to build metacity from CVS without building any other modules.
|
||||
|
||||
As long as you have gtk+ >= 2.10 with your distro (gtk+ >= 2.6 if
|
||||
you manually revert the change from bug 348633), you should be able
|
||||
to install your distro's development packages (e.g. gtk2-devel,
|
||||
GConf2-devel, startup-notification-devel on Fedora; also, remember
|
||||
to install the gnome-common package which is needed for building cvs
|
||||
versions of Gnome modules like Metacity) as well as the standard
|
||||
development tools (gcc, autoconf, automake, pkg-config, intltool,
|
||||
and libtool) and be ready to build and test Metacity. Steps to do
|
||||
so:
|
||||
As long as you have gtk+ >= 2.10 and GConf with your distro (gtk+ >=
|
||||
2.6 if you manually revert the change from bug 348633), you should
|
||||
be able to install your distro's development packages
|
||||
(e.g. gtk2-devel, GConf2-devel, startup-notification-devel on
|
||||
Fedora; also, remember to install the gnome-common package which is
|
||||
needed for building cvs versions of Gnome modules like Metacity) as
|
||||
well as the standard development tools (gcc, autoconf, automake,
|
||||
pkg-config, intltool, and libtool) and be ready to build and test
|
||||
Metacity. Steps to do so:
|
||||
|
||||
$ cvs -q -z3 -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome \
|
||||
checkout metacity
|
||||
$ svn checkout http://svn.gnome.org/svn/metacity/trunk metacity
|
||||
$ cd metacity
|
||||
$ ./autogen.sh --prefix /usr
|
||||
$ make
|
||||
|
17
MAINTAINERS
17
MAINTAINERS
@@ -1,13 +1,20 @@
|
||||
Currently active maintainers
|
||||
--------------------------------
|
||||
Elijah Newren (newren gmail com)
|
||||
|
||||
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 (thomas thurman org uk)
|
||||
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. ;-)
|
||||
@@ -15,7 +22,10 @@ Thomas Thurman (thomas thurman org uk)
|
||||
|
||||
Semi-active maintainers
|
||||
--------------------------------
|
||||
Havoc Pennington (hp redhat com)
|
||||
|
||||
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.
|
||||
@@ -23,6 +33,7 @@ Havoc Pennington (hp redhat com)
|
||||
|
||||
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
|
||||
|
545
NEWS
545
NEWS
@@ -1,3 +1,541 @@
|
||||
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
|
||||
=======
|
||||
|
||||
Thanks to Elijah Newren and Thomas Thurman for improvements in this version.
|
||||
|
||||
Contrary to rumour, this release does not add tabbing to everything.
|
||||
|
||||
- Display theme name in title bar of theme viewer (Thomas) (#430198)
|
||||
- Allow toggling of non-compositor effects (Thomas) (#92867)
|
||||
- Add some extra null checks (Thomas) (#422242)
|
||||
- Check for double-freeing at the time of workspace freeing (Elijah) (#361804)
|
||||
- Don't generate log messages unless we're logging (Thomas)
|
||||
- Two windows which don't belong to any application can't be considered to
|
||||
belong to the same application (Thomas)
|
||||
- Various tidyings (Thomas)
|
||||
|
||||
Translations
|
||||
Yavor Doganov (bg), Gabor Kelemen (hu), Kjartan Maraas (nb), Matej
|
||||
Urbančič (sl), Daniel Nylander (sv), Theppitak Karoonboonyanan (th)
|
||||
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Commenting and tidying (Thomas)
|
||||
- Fix possible compositor crash (Thomas) (#530702)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Yavor Doganov (bg), Jorge González (es), Kjartan Maraas (nb),
|
||||
Yannig Marchegay (Kokoyaya) (oc), Theppitak Karoonboonyanan (th), Clytie
|
||||
Siddall (vi)
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Commenting and tidying (Thomas)
|
||||
- Fix possible compositor crash (Thomas) (#530702)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Yavor Doganov (bg), Jorge González (es), Kjartan Maraas (nb),
|
||||
Yannig Marchegay (Kokoyaya) (oc), Theppitak Karoonboonyanan (th), Clytie
|
||||
Siddall (vi)
|
||||
|
||||
2.23.34
|
||||
=======
|
||||
|
||||
Thanks to Thomas Thurman for improvements in this version.
|
||||
|
||||
- Various commenting (Thomas)
|
||||
- Ensure you can turn off compositor with "configure" (Thomas)
|
||||
- Ensure you can turn off gconf with "configure" (Thomas) (#530870)
|
||||
|
||||
Translations
|
||||
Clytie Siddall (vi)
|
||||
|
||||
2.23.21
|
||||
=======
|
||||
|
||||
Thanks to Robert Escriva, Iain Holmes, Matt Krai, Thomas Thurman,
|
||||
and Chris Wang for improvements in this version.
|
||||
|
||||
- Add shadow ability for menus and tooltips (Iain) (#517442) (#517524)
|
||||
- Fix possible crashes in compositor (Iain) (#534569) (#528787)
|
||||
- Major reorganisation of compositor code (Iain)
|
||||
- Initial version of XRender backend for the compositor (Iain)
|
||||
- New basic public API for compositor (Iain)
|
||||
- Window decoration updates colour when GTK theme changes (Robert) (#511826)
|
||||
- Minor code cleanup for pedantic compilers (Thomas)
|
||||
- Further code cleanup for pedantic compilers (Matt) (#526049)
|
||||
- The atom list appears only once in the code (Thomas) (#530843)
|
||||
- Don't attempt to read attributes of invalid windows (Chris) (#530485)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Gabor Kelemen (hu), Kjartan Maraas (nb), Tino Meinen (nl),
|
||||
Theppitak Karoonboonyanan (th)
|
||||
2.23.13
|
||||
=======
|
||||
|
||||
Thanks to Erwann Chenede and Carlos Garnacho for improvements
|
||||
in this version.
|
||||
|
||||
- Re-enable cascading (Erwann) (#529925)
|
||||
- Propagate opacity to frame windows (spec compliance!) (Carlos)
|
||||
|
||||
Translations
|
||||
- None this time!
|
||||
|
||||
2.23.8
|
||||
======
|
||||
|
||||
Thanks to Lucas Rocha, Iain Holmes, and Jens Granseuer for improvements
|
||||
in this version.
|
||||
|
||||
* No need to symlink to .desktop files (Lucas)
|
||||
* Fixes to compositor's dealings with overlay windows (Iain)
|
||||
* C89 fixes (Jens)
|
||||
|
||||
Translators:
|
||||
Khaled Hosny (ar), Amitakhya Phukan (as), Ihar Hrachyshka (be@latin),
|
||||
Petr Kovar (cs), Rhys Jones (cy), Kenneth Nielsen (da), Andre Klapper (de),
|
||||
Jorge González (es), Iñaki Larrañaga Murgoitio (eu), Ilkka Tuohela (fi),
|
||||
Claude Paroz (fr), Seán de Búrca (ga), Ignacio Casal Quinteiro (gl),
|
||||
Yuval Tanny (he), Gabor Kelemen (hu), Luca Ferretti (it), Takeshi AIHANA (ja),
|
||||
Shankar Prasad (kn), Changwoo Ryu (ko), Arangel Angov (mk), sandeep shedmake (mr),
|
||||
Kjartan Maraas (nb), Nabin Gautam (ne), Wouter Bolsterlee (nl),
|
||||
Eskild Hustvedt (nn), Yannig Marchegay (Kokoyaya) (oc), Tomasz Dominikowski (pl),
|
||||
Duarte Loreto (pt), Vasiliy Faronov (ru), Daniel Nylander (sv),
|
||||
Theppitak Karoonboonyanan (th), Baris Cicek (tr), Maxim Dziumanenko (uk),
|
||||
Clytie Siddall (vi), Woodman Tuen (zh_HK), Woodman Tuen (zh_TW)
|
||||
2.23.5
|
||||
======
|
||||
|
||||
Thanks to Lucas Rocha, Owen Taylor, and Thomas Thurman for improvements in this
|
||||
version.
|
||||
|
||||
- Updates of useless preferences don't crash (Thomas) (#526016)
|
||||
- Compliance with new gnome-session (Lucas) (#525051)
|
||||
- Preview widget doesn't crash on broken themes (Thomas) (Launchpad 199402)
|
||||
- Initially iconic windows don't unminimise (Owen) (#491090)
|
||||
- Move ~/.metacity to ~/.config/metacity (Thomas) (#518596)
|
||||
- Metacity doesn't stay around when replaced (Thomas)
|
||||
- Extra check for null return in a function (Thomas)
|
||||
- Displays are singletons, simplifying code (Thomas) (#499301)
|
||||
|
||||
Translations
|
||||
Jorge González (es), Eskild Hustvedt (nn), Baris Cicek (tr), Clytie Siddall (vi)
|
||||
|
||||
2.23.3
|
||||
======
|
||||
|
||||
Thanks to Marco Pesenti Gritti, Iain Holmes, Josh Lee, Thomas Thurman, and
|
||||
Matthew Wilson for improvements in this version.
|
||||
|
||||
- Workspaces whose name is the same as the standard name, plus some string,
|
||||
are not cut off. (Thomas) (#453678)
|
||||
- Improve compositor performance (Iain) (#522166)
|
||||
- Draw wallpaper correctly when we start up with compositor
|
||||
(Iain) (#522599)
|
||||
- Several other smaller compositor fixes (Iain)
|
||||
- Don't draw shadows on shaped windows unless they have frames
|
||||
(Iain) (#505333)
|
||||
- Newly-created keep-above windows get focus (Marco) (#519188)
|
||||
- Allow moving workspace when dragging with modifier key (Matthew)
|
||||
(#474195)
|
||||
|
||||
Translations
|
||||
Kenneth Nielsen (da), Gabor Kelemen (hu), Vasiliy Faronov (ru), Daniel
|
||||
Nylander (sv), Maxim Dziumanenko (uk), Woodman Tuen (zh_HK)
|
||||
|
||||
2.23.2
|
||||
======
|
||||
|
||||
Removed some debug statements introduced in 2.23.1. Brown paper bag release.
|
||||
|
||||
|
||||
2.23.1
|
||||
======
|
||||
|
||||
Thanks to Cosimo Cecchi, Jens Granseuer, Jim Huang, Andrea Del Signore, and
|
||||
Thomas Thurman for improvements in this version.
|
||||
|
||||
(Cosimo's patch was very similar to another received from Jason Ribero.)
|
||||
|
||||
- Allow horizontal and vertical maximisation using the mouse (Cosimo/Jason)
|
||||
(#358674)
|
||||
- Allow "spacer" as a value for buttons, for blank space (Andrea) (#509165)
|
||||
- Remove unused code (Jim)
|
||||
- refactor preferences handling (Thomas)
|
||||
- make sure we're valid C89 (Jens) (#518917)
|
||||
- some messing with tool scripts (Thomas)
|
||||
|
||||
Translations
|
||||
Jorge González (es), Claude Paroz (fr), Woodman Tuen (zh_HK), Woodman
|
||||
Tuen (zh_TW)
|
||||
|
||||
2.23.0
|
||||
======
|
||||
|
||||
Thanks to Matthias Clasen, Mikkel Kamstrup Erlandsen, Jim Huang, Thomas Thurman,
|
||||
and Thomas Wood for improvements in this version.
|
||||
|
||||
- the preview widget can draw shaped windows properly! (Thomas W, #460018)
|
||||
- refactored handling of boolean and enumerated gconf preferences;
|
||||
refactoring of string and integer preferences will follow shortly (Thomas T)
|
||||
- Applications asking to move and resize windows at the same time have
|
||||
both their requests granted (Mikkel) (#448183)
|
||||
- Windows marked "skip taskbar" don't appear in the ctrl-alt-tab list
|
||||
(Matthias) (#106249)
|
||||
- fix session management detection (Thomas T) (#328210)
|
||||
- when resizing with the keyboard, the cursor stays on a window edge if
|
||||
you escape, whichever direction you were going (Thomas T) (#436257)
|
||||
- fix major breakage when gconf was turned off in configure (Jim) (#515019)
|
||||
- fix major breakage when verbose was turned off in configure (Jim) (#515152)
|
||||
- fix name of verbose option in help (Thomas T)
|
||||
- various bits of messing around with release scripts (Thomas T)
|
||||
|
||||
Translations
|
||||
Ihar Hrachyshka (be@latin), Ilkka Tuohela (fi), Ignacio Casal Quinteiro (gl),
|
||||
Shankar Prasad (kn), Changwoo Ryu (ko), Nabin Gautam (ne), Wouter Bolsterlee (nl)
|
||||
|
||||
2.21.13
|
||||
=======
|
||||
|
||||
Thanks to Michael Meeks and Thomas Thurman for improvements in this version.
|
||||
|
||||
- Only use compositor version if we have a compositor (Thomas) (#514453)
|
||||
- Remove workaround for a problem in an ancient GTK version (Thomas) (#513737)
|
||||
- Compositor efficiency fixes (Michael)
|
||||
- Various tools added (Thomas)
|
||||
|
||||
Translations
|
||||
Amitakhya Phukan (as), Rhys Jones (cy), Andre Klapper (de), Takeshi AIHANA (ja),
|
||||
Arangel Angov (mk), Tomasz Dominikowski (pl), Duarte Loreto (pt)
|
||||
|
||||
2.21.8
|
||||
======
|
||||
|
||||
Thanks to Paolo Borelli, Iain Holmes, Havoc Pennington, Christian Persch, Thomas
|
||||
Thurman, and Alex R.M. Turner for improvements in this version.
|
||||
|
||||
- Windows on other workspaces which need attention appear in the alt-tab
|
||||
list too (Alex) (#333548)
|
||||
- Remove deprecated function call (Christian) (#512561)
|
||||
- New release script (Thomas)
|
||||
- Made a start at improving the general number of comments (Thomas)
|
||||
- Updated copyright year to 2008, and some other tiny fixes (Thomas)
|
||||
- Don't do anything unusual when the compositor frees a window (Iain)
|
||||
- Mapping windows doesn't mark them as damaged (Iain)
|
||||
- Compositor uses the overlay window and not the root window (Iain)
|
||||
- Fixed several list leaks (Paolo)
|
||||
- Fixed warnings about printf formats (Havoc)
|
||||
- Move source files into subdirectories of the src directory (Havoc)
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Ihar Hrachyshka (be@latin), Petr Kovar (cs), Andre
|
||||
Klapper (de), Jorge González (es), Iñaki Larrañaga Murgoitio (eu), Seán de
|
||||
Búrca (ga), Yuval Tanny (he), Luca Ferretti (it), Takeshi AIHANA (ja), Arangel
|
||||
Angov (mk), sandeep shedmake (mr), Kjartan Maraas (nb), Yannig
|
||||
Marchegay (Kokoyaya) (oc), Daniel Nylander (sv), Theppitak Karoonboonyanan (th),
|
||||
Baris Cicek (tr), Clytie Siddall (vi)
|
||||
2.21.5
|
||||
======
|
||||
|
||||
Thanks to Iain Holmes and Thomas Thurman for improvements in this version.
|
||||
This contains the new compositor; downstream maintainers should note that
|
||||
its GConf key is initially turned off in src/metacity.schemas.in and consider
|
||||
whether to turn it on by default in their packages.
|
||||
|
||||
- merge compositor branch! (Iain) (499081)
|
||||
- print "Subversion" and not "CVS" when building (Thomas)
|
||||
|
||||
Translations
|
||||
Jorge González (es), Kjartan Maraas (nb), Daniel Nylander (sv)
|
||||
|
||||
2.21.3
|
||||
======
|
||||
|
||||
Thanks to Matthias Clasen, Martin Meyer, Kjartan Maraas, Thomas Thurman,
|
||||
and Lucas Rocha for improvements in this version.
|
||||
|
||||
- remove dead code (pointed out by Kjartan) (501365)
|
||||
- rewrote long key binding description for the sake of
|
||||
the translators (Thomas) (474889)
|
||||
- check for null before adding menu (Matthias) (496054)
|
||||
- let keys which end a grab also begin a grab (Thomas) (112560)
|
||||
- check the right variable in theme sanity check (Martin) (501362)
|
||||
- get session ID from environment if it's not passed in on the command
|
||||
line (Lucas) (498033)
|
||||
|
||||
Translations
|
||||
Ihar Hrachyshka (be@latin), Petr Kovar (cs), Jorge González (es),
|
||||
Ignacio Casal Quinteiro (gl), Rodrigo Flores (pt_BR), Pavol Šimo (sk),
|
||||
Matej Urbančič (sl)
|
||||
|
||||
2.21.2
|
||||
======
|
||||
|
||||
Thanks to Benjamin Gramlich, Thomas Thurman, and Peter Bloomfield
|
||||
for improvements in this release.
|
||||
|
||||
- Theme parser is compliant to XDG Base Directory Specification
|
||||
in searching for theme files. (Benjamin) (#480026)
|
||||
- Some source files which didn't get used were removed (Thomas)
|
||||
(#496947)
|
||||
- Fullscreen and maximise windows don't try to save their position
|
||||
(Peter) (#461927)
|
||||
|
||||
Translations
|
||||
Matej Urbančič (sl)
|
||||
|
||||
2.21.1
|
||||
======
|
||||
|
||||
Thanks to Elijah Newren, Alex R.M. Turner, Peter Bloomfield, Iain Holmes,
|
||||
Jans Granseuer, Federico Mena Quintero and Thomas Thurman for improvements
|
||||
in this release.
|
||||
|
||||
- Add --sync option, like all other GTK apps (Iain)
|
||||
- Don't save window's position if it's maximised (Peter) (#461927)
|
||||
- Memory leak fix in preview (Jans) (#469682)
|
||||
- Truncate tab popup string correctly, and refactor function (Alex)
|
||||
- Windows which pop up under always-on-top windows don't get the
|
||||
focus, but do get the "needs attention" hint (Thomas) (#486445)
|
||||
- Fix error in function call which caused focus problems (Federico)
|
||||
(partial fix of #488468)
|
||||
|
||||
Translations
|
||||
Djihed Afifi (ar), Metin Amiroff (az), Alexander Shopov (bg),
|
||||
Jordi Mallach (ca), David Lodge (en_GB), Jorge González (es),
|
||||
Iñaki Larrañaga Murgoitio (eu), Vincent Untz (fr), Alastair McKinstry (ga),
|
||||
Ankit Patel (gu), Rajesh Ranjan (hi), auto (hr), Changwoo Ryu (ko),
|
||||
Raivis Dejus (lv), Wouter Bolsterlee (nl), Gora Mohanty (or),
|
||||
ASB (pa), wadim dziedzic (pl), Duarte Loreto (pt),
|
||||
Og Maciel (pt_BR), Peter Tuhársky (sk), Matej Urbančič (sl),
|
||||
Daniel Nylander (sv), Maxim Dziumanenko (uk), Funda Wang (zh_CN)
|
||||
|
||||
2.20.0
|
||||
======
|
||||
|
||||
Thanks to Alexey Rusakov for the fix in this release.
|
||||
|
||||
- prevent a crash on logout with metacity subsequently not being
|
||||
restored in future sessions (Alexey) [#433253]
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Ihar Hrachyshka (be@latin), Ask Hjorth Larsen (da),
|
||||
Adam Weinberger (en_CA), Iñaki Larrañaga Murgoitio (eu), Ilkka
|
||||
Tuohela (fi), Vincent Untz (fr), Ankit Patel (gu), Gabor Kelemen (hu),
|
||||
Luca Ferretti (it), Takeshi AIHANA (ja), Žygimantas Beručka (lt), Jovan
|
||||
Naumovski (mk), Ani Peter (ml), Og Maciel (pt_BR), Duarte Loreto (pt),
|
||||
Mugurel Tudor (ro), Nickolay V. Shmyrev (ru), Peter Tuhársky (sk), Горан
|
||||
Ракић (sr), Daniel Nylander (sv), Dr.T.Vasudevan (ta), Maxim
|
||||
Dziumanenko (uk), Clytie Siddall (vi)
|
||||
|
||||
2.19.55
|
||||
=======
|
||||
|
||||
Thanks to Frederic Crozat, Matthias Clasen, and Thomas Thurman for improvements
|
||||
in this release.
|
||||
|
||||
- Noninteger auto-raise delay is not assumed to be zero (Thomas) (#377491)
|
||||
- Fix mangled window title in "Force Quit" (Frederic) (#462734)
|
||||
- "Close" can appear at any point in the window menu, and now appears
|
||||
at the bottom (Thomas) (#104026)
|
||||
- Windows which are always on top have "stick" insensitive (Thomas) (#460997)
|
||||
- All bitfields in window structure are together for optimisation (Thomas)
|
||||
(#450271)
|
||||
- Use the correct directory when installing keybindings (Matthias) (#454055)
|
||||
|
||||
Translations
|
||||
Alexander Shopov (bg), Jorge González (es), Iñaki Larrañaga Murgoitio (eu),
|
||||
Ilkka Tuohela (fi), Theppitak Karoonboonyanan (th)
|
||||
|
||||
2.19.34
|
||||
=======
|
||||
|
||||
Thanks to Rob Bradford, Cosimo Cecchi, Yair Hershkovitz and Thomas Thurman
|
||||
for improvements in this release.
|
||||
|
||||
- Fix a bug where the window can be focused without being raised
|
||||
if the maximize is aborted. (Rob) [#459027]
|
||||
- Unset fullscreen is an allowed action where relevant. (Cosimo) [#449427]
|
||||
- Reverse window buttons and align them to the left for RTL locales.
|
||||
(Yair) [#92212]
|
||||
- Put all bitfields in window data together to help with optimisation.
|
||||
(Thomas) [#450271]
|
||||
|
||||
Translations
|
||||
Jorge Gonzalez (es), Ilkka Tyohela (fi), Gabor Kelemen (hu),
|
||||
Takeshi AIHANA (ja), Kjartan Maraas (nb), Vincent van Adrighem (nl),
|
||||
Daniel Nylander (sv), Theppitak Karoonbooyana (th),
|
||||
Nguyễn Thái Ngọc Duy (vi)
|
||||
|
||||
2.19.21
|
||||
=======
|
||||
|
||||
Thanks to Damien Carbery and Thomas Thurman for improvements in
|
||||
this release.
|
||||
|
||||
- Fixed build on Solaris (Damien) [#397296, #446535]
|
||||
- Only activate windows which change their startup ID if the
|
||||
new ID differs from the old. (This fixes the bug where KDE
|
||||
apps gained the attention hint when switching workspaces.)
|
||||
(Thomas) [#400167]
|
||||
- Open new windows on the current xinerama. (Thomas) [#145503].
|
||||
|
||||
Translations
|
||||
Tshewang Norbu (dz), Jorge González (es), Funda Wang (zh_CN)
|
||||
|
||||
2.19.13
|
||||
=======
|
||||
|
||||
Thanks to Elijah Newren and Thomas Thurman for improvements in
|
||||
this release.
|
||||
|
||||
- Updated the description of raise_on_click (Elijah) [#445447,
|
||||
#389923]
|
||||
- Refactor queueing code in window.c (Thomas) [#376760]
|
||||
- Added switch_group to the keybindings file (Thomas) [#444879]
|
||||
- New window information accessor function (Thomas) [#377495]
|
||||
|
||||
2.19.8
|
||||
======
|
||||
|
||||
@@ -12,6 +550,13 @@ improvements in this release.
|
||||
[#433400]
|
||||
- Fix window menu layout for RTL scripts (Thomas) [#433400]
|
||||
|
||||
Translations
|
||||
Khaled Hosny (ar), Ihar Hrachyshka (be@latin), Jovan Naumovski (mk),
|
||||
Theppitak Karoonboonyanan (th)
|
||||
|
||||
[ Apologies to these translators who didn't get credited in the
|
||||
version of 2.19.8 that shipped. ]
|
||||
|
||||
2.19.5
|
||||
======
|
||||
|
||||
|
@@ -1,11 +1,11 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="metacity"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.7
|
||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
&& test -d $srcdir/src) || {
|
||||
@@ -15,7 +15,8 @@ REQUIRED_AUTOMAKE_VERSION=1.7
|
||||
}
|
||||
|
||||
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
|
||||
|
67
configure.in
67
configure.in
@@ -1,7 +1,7 @@
|
||||
AC_PREREQ(2.50)
|
||||
|
||||
m4_define([metacity_major_version], [2])
|
||||
m4_define([metacity_minor_version], [19])
|
||||
m4_define([metacity_minor_version], [25])
|
||||
# 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], [8])
|
||||
@@ -11,7 +11,7 @@ m4_define([metacity_version],
|
||||
AC_INIT([metacity], [metacity_version],
|
||||
[http://bugzilla.gnome.org/enter_bug.cgi?product=metacity])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/display.c)
|
||||
AC_CONFIG_SRCDIR(src/core/display.c)
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
@@ -120,7 +120,7 @@ if test x$enable_gconf = xyes; then
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(verbose-mode,
|
||||
AC_HELP_STRING([--disable-verbose],
|
||||
AC_HELP_STRING([--disable-verbose-mode],
|
||||
[disable metacity's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
|
||||
enable_verbose_mode=yes)
|
||||
|
||||
@@ -176,6 +176,10 @@ else
|
||||
AC_MSG_ERROR("Pango 1.2.0 or greater based on Xft2 is required")
|
||||
fi
|
||||
|
||||
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
||||
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
||||
AC_SUBST(GNOME_KEYBINDINGS_KEYSDIR)
|
||||
|
||||
STARTUP_NOTIFICATION_VERSION=0.7
|
||||
AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION])
|
||||
if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then
|
||||
@@ -207,28 +211,28 @@ fi
|
||||
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 "Not building compositing manager by default now, must enable explicitly to get it."
|
||||
have_xcomposite=no
|
||||
echo "Building compositing manager by default now."
|
||||
have_xcomposite=yes
|
||||
else
|
||||
have_xcomposite=no
|
||||
fi
|
||||
|
||||
if test x$have_xcomposite = xyes; then
|
||||
echo "Building with CompositeExt"
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage cm"
|
||||
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
|
||||
METACITY_PC_MODULES="$METACITY_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage"
|
||||
AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, , [Building with compositing manager support])
|
||||
echo "Building with compositing manager"
|
||||
|
||||
## force on render also
|
||||
have_xrender=yes
|
||||
@@ -409,7 +413,7 @@ 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_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||
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"
|
||||
@@ -422,7 +426,7 @@ case "$METACITY_LIBS" in
|
||||
*)
|
||||
AC_CHECK_LIB(SM, SmcSaveYourselfDone,
|
||||
[AC_CHECK_HEADERS(X11/SM/SMlib.h,
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=no)],
|
||||
METACITY_LIBS="-lSM -lICE $METACITY_LIBS" found_sm=yes)],
|
||||
, $METACITY_LIBS)
|
||||
;;
|
||||
esac
|
||||
@@ -455,12 +459,6 @@ fi
|
||||
|
||||
AC_SUBST(GDK_PIXBUF_CSOURCE)
|
||||
|
||||
## hack to work with old GTK versions for now
|
||||
save_LDFLAGS=$LDFLAGS
|
||||
LDFLAGS="$METACITY_LIBS $LDFLAGS"
|
||||
AC_CHECK_FUNCS(gdk_pixbuf_new_from_stream)
|
||||
LDFLAGS=$save_LDFLAGS
|
||||
|
||||
if test x$enable_gconf = xyes; then
|
||||
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||
if test x"$GCONFTOOL" = xno; then
|
||||
@@ -473,9 +471,28 @@ 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"
|
||||
fi
|
||||
|
||||
# Warnings are there for a reason
|
||||
CFLAGS="$CFLAGS -Wall -Werror -ansi"
|
||||
|
||||
# Use gnome-doc-utils:
|
||||
GNOME_DOC_INIT([0.9.0])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
doc/Makefile
|
||||
doc/creating_themes/Makefile
|
||||
doc/man/Makefile
|
||||
src/Makefile
|
||||
src/wm-tester/Makefile
|
||||
@@ -528,7 +545,7 @@ if test $(( $(echo $METACITY_MINOR_VERSION) %2)) == "1"; then
|
||||
stable_version=$(( ($METACITY_MINOR_VERSION / 2) * 2))
|
||||
echo "This is the UNSTABLE branch of metacity"
|
||||
echo -n "Use 2.$stable_version.x for stable "
|
||||
echo "(gnome-2-$stable_version branch in CVS)"
|
||||
echo "(gnome-2-$stable_version branch in Subversion)"
|
||||
else
|
||||
echo "This is the stable branch of metacity"
|
||||
fi
|
||||
|
@@ -1,4 +1,4 @@
|
||||
SUBDIRS = man
|
||||
SUBDIRS = man creating_themes
|
||||
|
||||
EXTRA_DIST=theme-format.txt metacity-theme.dtd dialogs.txt code-overview.txt \
|
||||
how-to-get-focus-right.txt
|
||||
|
286
doc/creating_themes/C/creating-metacity-themes.xml
Normal file
286
doc/creating_themes/C/creating-metacity-themes.xml
Normal file
@@ -0,0 +1,286 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://docbook.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
]>
|
||||
|
||||
<book id="index">
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<title>Understanding Metacity Themes</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Thomas</firstname>
|
||||
<surname>Thurman</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<abstract>
|
||||
|
||||
<para>
|
||||
We very much appreciate any reports of inaccuracies or other errors in
|
||||
this document. Contributions are also most welcome. Post your
|
||||
suggestions, critiques or addenda to the <ulink
|
||||
url="mailto:tthurman@gnome.org">team</ulink>.</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder>Thomas Thurman</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
</para>
|
||||
</legalnotice>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="sec-introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>This is an article about how to theme Metacity. It is a work in progress, and I have had to dig deeply to find some answers; I may well have made mistakes and I welcome corrections and suggestions.</para>
|
||||
<para>GNOME lets you theme a bunch of different things, but we're only talking about <literal>window border</literal> themes here, which some people call Metacity themes; <ulink url="http://en.wikipedia.org/wiki/Metacity#Themes">Wikipedia begins a sentence</ulink> with "Despite the incomplete state of Metacity theme development documentation", and though there <emphasis>is</emphasis> <ulink url="http://svn.gnome.org/viewvc/metacity/trunk/doc/theme-format.txt?view=markup">documentation in the source</ulink>, apparently not many people find it, and it's written more for programmers than theme designers. Glynn Foster also wrote <ulink url="http://developer.gnome.org/doc/tutorials/metacity/metacity-themes.html">a very good introduction to Metacity themes</ulink> (<ulink url="http://home.arcor.de/rybaczyk/documents/tutorials/metacity/metacity-themes.de.html">[de]</ulink>) six years ago, but things have changed a little since then. <ulink url="http://lists.freedesktop.org/archives/compiz/2006-September/000445.html">Metacity themes can also be used by Compiz</ulink>, and perhaps by other window managers for all I know.</para>
|
||||
|
||||
<para>So, a Metacity theme is a set of instructions about how to "decorate" (draw the borders around) a window. Presumably you don't want to style all windows identically, so the format lets you specify details for different kinds of window:</para>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>state:</term><listitem><para>Every window must be in exactly one of these states: <literal>normal</literal>, <literal>dialog</literal>, <literal>modal dialog</literal> (i.e. a dialogue which means you can't interact with the rest of the program while it's up), <literal>menu</literal> (torn off from the main application, not that people do that much these days), <literal>utility</literal> (that is, palettes and toolboxes and things), and <literal>border</literal>. X also allows a window to explicitly ask to be undecorated, but of course we don't provide for those in a list of decoration instructions.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>focused</term><listitem><para>Every window is either the active window (which X people call "focused"), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>maximized</term><listitem><para>Every window is either (fully) maximised (horizontal and vertical only don't count), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>shaded</term><listitem><para>Every window is either rolled up to show just its titlebar (which techies call "shaded" for some reason I can't fathom), or it isn't.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>If a window is not fully maximised and not shaded,</emphasis> it either allows horizontal resizing, or it doesn't.</para></listitem>
|
||||
<listitem><para><emphasis>If a window is not fully maximised and not shaded,</emphasis> it either allows vertical resizing, or it doesn't.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>What's in the file</title>
|
||||
|
||||
<para>The files must be called either</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>~/.themes/<varname>N</varname>/metacity-1/metacity-theme-<varname>V</varname>.xml
|
||||
for a theme used only by you, or</para></listitem>
|
||||
<listitem><para>/usr/share/themes/<varname>N</varname>/metacity-1/metacity-theme-<varname>V</varname>.xml
|
||||
for a theme installed for all users.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>where <varname>N</varname> is the name of the theme and <varname>V</varname> is the version of the format. Version 2, <ulink url="http://svn.gnome.org/viewvc/metacity?view=revision&revision=2973">introduced in October 2006</ulink>, adds a few extra features, but it's rarely used. Version 1 is the original format. The formats are fixed once they're stable for both backwards and forwards compatibility; <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=482165">new features</ulink> can't be added without introducing a new version number, which is why improvements come out rarely and in large clumps. <literal>metacity-1</literal> in the names is a fossil and doesn't mean version 1 of anything.</para>
|
||||
|
||||
<para>The metacity-theme-V.xml files are <ulink url="http://blogs.gnome.org/tthurman/2008/02/14/gmarkup/">GMarkup files</ulink>, which are very similar to XML. For now, you actually have to write these in a text editor or something; you can either start with a blank page, or modify a theme someone else has made. (I am thinking of writing a general theme editor program, but that'll have to wait until I've reduced Metacity's open bug queue a little.) If you want to see a fully-fledged one, you can look at <ulink url="http://svn.gnome.org/viewvc/metacity/trunk/src/themes/Atlanta/metacity-theme-1.xml?view=markup">the current version of "Atlanta"</ulink>, one of the simplest themes, but even that is quite complicated-looking at first.</para>
|
||||
<para>So, let's talk about what actually goes inside the files. As in any XML file, <!-<!-- x -->- … <!-- x -->> are comments. At its most basic, it would go:</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<metacity_theme>
|
||||
<!-<!-- x -->- Helper stuff: -<!-- x -->->
|
||||
<info …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
<constant …> <!-<!-- x -->- maybe; to be explained -<!-- x -->->
|
||||
|
||||
<draw_ops …> <!-<!-- x -->- maybe; to be explained -<!-- x -->->
|
||||
|
||||
<!-<!-- x -->- Things we build the top level onto: -<!-- x -->->
|
||||
<frame_geometry …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
|
||||
<frame_style …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
<frame_style_set …> <!-<!-- x -->- to be explained -<!-- x -->->
|
||||
|
||||
<!-<!-- x -->- And the top level: -<!-- x -->->
|
||||
|
||||
<window type="normal" style_set="…" />
|
||||
<window type="dialog" style_set="…" />
|
||||
<window type="modal_dialog" style_set="…" />
|
||||
|
||||
<window type="menu" style_set="…" />
|
||||
<window type="utility" style_set="…" />
|
||||
<window type="border" style_set="…" />
|
||||
|
||||
</metacity_theme>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Matching windows</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>window</term><listitem><para>You see that at the top level we have a list of <window> tags, one for each window state we discussed above. The style_set argument of each of these gives the name of a frame_style_set.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>frame_style_set:</term><listitem><para>tells Metacity how to draw windows according to whether they're focused or not, maximised or not, shaded or not, and allowing resizing vertically, horizontally, both, or neither. It looks like this:</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<frame_style_set>
|
||||
<frame focus="F" state="S" resize="R" style="N"/>
|
||||
<frame… />
|
||||
|
||||
…
|
||||
</frame_style_set>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>where:</para>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>F</term><listitem><para>is yes for focused, no for unfocused.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>S</term><listitem><para>combines the shaded and maximized flags: normal, maximized, shaded, or maximized_and_shaded.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>R</term><listitem><para>represents resize permissions that the window gives us: none, vertical, horizontal, or both. Frame settings for maximised windows, which can't be resized, don't have this attribute.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<varname>N</varname> is the name of a <literal>frame_style</literal> to apply to a window which has these attributes.</para>
|
||||
|
||||
<para>A <literal>frame_style_set</literal> tag may also have a "parent" tag, which should be the name of another <literal>frame_style_set</literal>. This means that if Metacity wants to know about a kind of window which that <literal>frame_style_set</literal> doesn't describe, it should look in the parent. Most of the more complicated tags in Metacity theme files also have a "parent" attribute which work the same way. This is particularly useful because, taken together, all the <literal>frame_style_set</literal>s in a theme file must be capable of matching every possible kind of window; if a window turns up that they can't match, there will be an error at runtime.</para>
|
||||
|
||||
<para>Let's recap what we've seen so far. The combination of a <literal>window</literal>, which matches a window's state (normal, dialog, and so forth), with an entry in the corresponding <literal>frame_style_set</literal>, which matches its focus, shadedness, maximisedness, and resize permissions where relevant, will allow you to make a list of rules to match any window against. The next piece of this puzzle lets you specify what Metacity should do with such windows once it's matched them.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Actually drawing stuff</title>
|
||||
|
||||
<para><literal>frame_style:</literal> This is probably the most complicated part of the whole system. A <literal>frame_style</literal> a series of <emphasis><literal>piece</literal></emphasis>s and <emphasis><literal>button</literal></emphasis>s. It looks like this:</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
<frame_style name="…" geometry="G">
|
||||
<piece position="P">
|
||||
<draw_ops>
|
||||
</draw_ops>
|
||||
</piece>
|
||||
…
|
||||
<button function="F" state="S" draw_ops="D"/>
|
||||
|
||||
<draw_ops>
|
||||
</draw_ops>
|
||||
</button>
|
||||
…
|
||||
</frame_style>
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>The <literal>pieces</literal> are pieces of the window frame. When Metacity draws a window frame, it renders its various pieces always in the same order. The bolded parts are all the possible values of P:</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>the <literal>entire_background</literal>, covering the whole frame</para></listitem>
|
||||
|
||||
<listitem><para>the <literal>titlebar</literal>, covering the entire background of the titlebar</para></listitem>
|
||||
<listitem><para>the <literal>titlebar_middle</literal>, the part of the titlebar that doesn't touch its edges</para></listitem>
|
||||
<listitem><para>the <literal>left_titlebar_edge</literal>, <literal>right_titlebar_edge</literal>, <literal>top_titlebar_edge</literal>, and <literal>bottom_titlebar_edge</literal></para></listitem>
|
||||
|
||||
<listitem><para>the <literal>title</literal>, just exactly that area which is covered by the text on the titlebar</para></listitem>
|
||||
<listitem><para>the <literal>left_edge</literal>, <literal>right_edge</literal>, and <literal>bottom_edge</literal> of the frame (yes, there is no top_edge: it's identical to top_titlebar_edge, isn't it?)</para></listitem>
|
||||
<listitem><para>the <literal>overlay</literal>, which covers everything– the same as entire_background, but done last instead of first.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para><emphasis>What</emphasis> Metacity draws in these pieces is decided by the theme. If a <literal>frame_style</literal> or its parents don't specify a particular piece, nothing will be drawn for that piece. You have two ways to specify what to draw: one is that the <literal>piece</literal> tag can have a <literal>draw_ops</literal> tag inside it which lists a sequence of drawing operations in Metacity's custom format. <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=107012">You might ask why we don't use SVG</ulink>; one answer is that SVG support wasn't very strong when this format was designed, and another answer is that these days you can use SVG all you like; just include it as an image and Metacity will know what to do.</para>
|
||||
|
||||
<para>An alternative to including a draw_ops tag inside a piece tag is to add a draw_ops attribute to the piece tag. Then you can add a draw_ops tag at top level (inside the metacity_theme tag) with a name attribute, and Metacity will use that. This is useful if you use similar draw_ops over and over.</para>
|
||||
<para>I'm not going to document draw_ops at present, because this is already very long. I will write it up later and link it from here.</para>
|
||||
<para>The <literal>button</literal> tag tells Metacity how, but not where, to draw buttons. Buttons are drawn after all the pieces are finished, and the way to draw them is also given using draw_ops. You ought to provide buttons for all the possible kinds of button; if you don't give one it won't be drawn, which is unfortunate for the user who wants to use it:</para>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para><literal>left_left_background</literal>, <literal>left_middle_background</literal>, and <literal>left_right_background</literal> don't represent buttons as such, but the background behind them, assuming there can be at most three buttons on the left. These days there can be more, so the extra ones also use left_middle_background.</para></listitem>
|
||||
|
||||
<listitem><para><literal>right_left_background</literal>, <literal>right_middle_background</literal>, and <literal>right_right_background</literal> similarly.</para></listitem>
|
||||
<listitem><para><literal>close</literal>, <literal>minimize</literal>, <literal>maximize</literal> are the obvious original three buttons.</para></listitem>
|
||||
<listitem><para><literal>menu</literal> is the menu button you can click to get a list of actions you can perform on the window.</para></listitem>
|
||||
|
||||
<listitem><para><literal>shade</literal>, <literal>above</literal>, <literal>stick</literal> are similar to the original buttons but only allowed in version 2</para></listitem>
|
||||
<listitem><para><literal>unshade</literal>, <literal>unabove</literal>, <literal>unstick</literal> are the toggled versions of these buttons. Again, version 2 only.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>The reason there are toggled versions of shade, above, and stick, and not maximize, is that by the time you get this far you've probably already decided whether you're drawing a maximised window. So if you <emphasis>are</emphasis> drawing a maximised window, you can make the button called "maximize" look how you want the restore button to be; otherwise, make it look like you want the maximise button to be.</para>
|
||||
<para>For each button tag you should also set a "state" attribute; this time the state is either <literal>normal</literal> (the way you see it most of the time), <literal>pressed</literal>, or <literal>prelight</literal> (this makes the buttons subtly light up when you hover over them). You only really need "normal", but the others are good to have too.</para>
|
||||
|
||||
<para>The "geometry" attribute of a <literal>frame_style</literal> tag is the name of a…</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Geometry</title>
|
||||
|
||||
<para>The <literal>geometry</literal> tag defines the sizes of things around the window. It is important, but not easy to explain, and again this file has gone on too long. I'll write it up later.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Other things which lie around a file</title>
|
||||
|
||||
<para>The most important other thing in a theme file is the metadata held in the <literal>info</literal> tag. This contains a set of tags each of which contains some text explaining something about the theme itself, in a sort of <ulink url="http://en.wikipedia.org/wiki/Dublin_Core">Dublin Core</ulink> sort of way. (Next time around, we should probably use the actual Dublin Core.) The tags are <literal>name</literal>, <literal>author</literal>, <literal>copyright</literal>, <literal>date</literal>, and <literal>description</literal>.</para>
|
||||
|
||||
<para>Version 1 of the format had a <literal>menu_icon</literal> tag at top level, which let themes specify the icons beside options in the menu you get from the menu icon. This has become redundant; the icons are taken from the icon theme! The tag can still be used in all formats, but does nothing and is deprecated.</para>
|
||||
<para>Version 2 of the format has a <literal>fallback</literal> tag at top level, which let the theme specify what icon a window should be considered to have if it doesn't provide an icon of its own. This should also be taken from the icon theme, <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=524343">if anyone fancies fixing it</ulink>, and the tag should also then be deprecated. It shouldn't be hard.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>When you're working on a theme</title>
|
||||
|
||||
<para>When you're editing a theme, you can view it without using it on the whole desktop using
|
||||
<command>metacity-theme-viewer YourThemeName</command></para>
|
||||
<para>and view it on the whole desktop using
|
||||
<command>gconftool -<!-- x -->-type=string -<!-- x -->-set /apps/metacity/general/theme YourThemeName</command></para>
|
||||
|
||||
<para>Whenever you change the selected theme in GConf, Metacity will load the newly-chosen theme. This is how control-center does it. But when you change a theme, as you're working on it, you might want to ask Metacity to reload the theme which is currently used on the whole desktop to reflect your changes. You can do this using the little-known <command>metacity-message</command> program, with the command <literal>metacity-message reload-theme</literal>. This works by sending the ClientMessage <literal>_METACITY_RELOAD_THEME_MESSAGE</literal> to the root window, in case you're interested.</para>
|
||||
|
||||
<para>Once you're done with your theme, consider submitting it to <ulink url="http://art.gnome.org/themes/metacity/">the art.gnome.org site</ulink>, or <ulink url="http://www.gnome-look.org/index.php?xcontentmode=101">the gnome-look site</ulink>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>The future</title>
|
||||
|
||||
<para>Please feel free to link to this so people don't have to keep asking the basic questions and can start asking the deeper ones. One of the important deeper ones is: where should we go in the future? Since this format is becoming something of a de facto standard between window managers, should we set up some kind of freedesktop.org standards discussion? Would it be useful to spin off Metacity's theme parsing code into a separate, LGPL-licensed library so that other applications could use it more easily?</para>
|
||||
<para>What would a version 3 of this format look like? Could we simplify the window / frame_style_set system? (I can imagine abolishing both, and being able to write <literal><frame_style for="normal+unfocused+maximized">…</literal> and having Metacity assume it applied to all resize permissions and shadednesses.) Maybe we should try to do everything with SVG we can? Getting more wild and handwavey, is it worth keeping XML-like? Maybe if other window managers were dealing with the files, .ini-style files would be more universally useful? Or perhaps not. And then of course we need a decent graphical editor for it. I have a few ideas, but if anyone fancies jumping in...</para>
|
||||
</chapter>
|
||||
|
||||
</book>
|
||||
|
||||
|
24
doc/creating_themes/Makefile.am
Normal file
24
doc/creating_themes/Makefile.am
Normal file
@@ -0,0 +1,24 @@
|
||||
### This part of Makefile.am can be customized by you.
|
||||
|
||||
# gnome-doc-utils standard variables:
|
||||
include $(top_srcdir)/gnome-doc-utils.make
|
||||
dist-hook: doc-dist-hook
|
||||
|
||||
# The name of the directory in /usr/share/gnome/help/,
|
||||
# and the name of the main .xml file:
|
||||
DOC_MODULE = creating-metacity-themes
|
||||
|
||||
# The names of any files included via entity declarations.
|
||||
DOC_ENTITIES =
|
||||
|
||||
# The names of any files included by xincluded (preferred):
|
||||
DOC_INCLUDES =
|
||||
|
||||
# The names of any pictures:
|
||||
DOC_FIGURES =
|
||||
|
||||
# The names of any locales for which documentation translations exist:
|
||||
DOC_LINGUAS =
|
||||
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
man_MANS = metacity.1 metacity-theme-viewer.1 metacity-window-demo.1
|
||||
man_MANS = metacity.1 metacity-theme-viewer.1 \
|
||||
metacity-window-demo.1 metacity-message.1
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
60
doc/man/metacity-message.1
Normal file
60
doc/man/metacity-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 METACITY\-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
|
||||
METACITY\-MESSAGE \- a command to send a message to Metacity
|
||||
.SH SYNOPSIS
|
||||
.B METACITY\-MESSAGE
|
||||
[restart|reload\-theme|enable\-keybindings|disable\-keybindings]
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly the
|
||||
.B metacity\-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.
|
||||
\fBmetacity\-message\fP send a specified message to \fBmetacity\fP(1).
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B restart
|
||||
Restart \fBmetacity\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 metacity (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).
|
710
metacity.doap
Normal file
710
metacity.doap
Normal file
@@ -0,0 +1,710 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<Project
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns="http://usefulinc.com/ns/doap#"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:admin="http://webns.net/mvcb/">
|
||||
|
||||
<name>The Metacity Window Manager</name>
|
||||
<shortname>Metacity</shortname>
|
||||
|
||||
<!-- It's a blog. Metacity has no homepage. -->
|
||||
<homepage rdf:resource="http://blogs.gnome.org/metacity/" />
|
||||
|
||||
<!-- The date when the source control was initialised. -->
|
||||
<created>2001-05-30</created>
|
||||
|
||||
<shortdesc xml:lang="en">
|
||||
A simple GTK+ window manager that tries not to get in your way.
|
||||
</shortdesc>
|
||||
<description xml:lang="en">
|
||||
A window manager for GNOME, with a focus on simplicity and usability
|
||||
rather than novelties or gimmicks. It uses GTK+ 2 for drawing window frames,
|
||||
so that it inherits colours, fonts, and so on from the GTK+ theme. Its author
|
||||
has characterised it as a "boring window manager for the adult in you.
|
||||
Many window managers are like Marshmallow Froot Loops; Metacity is like Cheerios."
|
||||
</description>
|
||||
|
||||
<!-- I haven't found anything appropriate; I made this up. -->
|
||||
<category>window-manager</category>
|
||||
|
||||
<wiki rdf:resource="http://live.gnome.org/Metacity" />
|
||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=metacity" />
|
||||
<screenshots rdf:resource="http://commons.wikimedia.org/wiki/Image:Metacity-screenshot.png" />
|
||||
|
||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/metacity-devel-list" />
|
||||
|
||||
<programming-language>C</programming-language>
|
||||
<license rdf:resource="http://usefulinc.com/doap/licenses/gpl" />
|
||||
<download-page rdf:resource="http://download.gnome.org/sources/metacity/" />
|
||||
|
||||
<repository>
|
||||
<SVNRepository>
|
||||
<location rdf:resource="http://svn.gnome.org/svn/metacity" />
|
||||
<browse rdf:resource="http://svn.gnome.org/viewvc/metacity/" />
|
||||
</SVNRepository>
|
||||
</repository>
|
||||
|
||||
<author>
|
||||
<foaf:Person>
|
||||
<foaf:name>Havoc Pennington</foaf:name>
|
||||
</foaf:Person>
|
||||
</author>
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Elijah Newren</foaf:name>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Thomas Thurman</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:tthurman@gnome.org"/>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
|
||||
<release><Version>
|
||||
<name>2.25.1 release</name>
|
||||
<created>2008-09-01</created>
|
||||
<branch></branch>
|
||||
<revision>2.25.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.25.0 release</name>
|
||||
<created>2008-08-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.25.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.25/2.25.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.89 release</name>
|
||||
<created>2008-08-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.89</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.89.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.89.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.55 release</name>
|
||||
<created>2008-07-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.34 release</name>
|
||||
<created>2008-06-02</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.21 release</name>
|
||||
<created>2008-05-26</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.13 release</name>
|
||||
<created>2008-04-27</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.8 release</name>
|
||||
<created>2008-04-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.5 release</name>
|
||||
<created>2008-04-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.3 release</name>
|
||||
<created>2008-03-21</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.2 release</name>
|
||||
<created>2008-03-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.1 release</name>
|
||||
<created>2008-03-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.23.0 release</name>
|
||||
<created>2008-02-26</created>
|
||||
<branch></branch>
|
||||
<revision>2.23.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.23/2.23.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.13 release</name>
|
||||
<created>2008-02-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.8 release</name>
|
||||
<created>2008-02-03</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.5 release</name>
|
||||
<created>2007-12-19</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.3 release</name>
|
||||
<created>2007-12-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.2 release</name>
|
||||
<created>2007-11-17</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.21.1 release</name>
|
||||
<created>2007-11-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.21.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.21/2.21.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.20.0 release</name>
|
||||
<created>2007-09-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.20.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.20/2.20.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.20/2.20.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.55 release</name>
|
||||
<created>2007-08-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.34 release</name>
|
||||
<created>2007-07-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.21 release</name>
|
||||
<created>2007-06-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.13 release</name>
|
||||
<created>2007-06-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.8 release</name>
|
||||
<created>2007-06-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.5 release</name>
|
||||
<created>2007-04-23</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.3 release</name>
|
||||
<created>2007-04-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.2 release</name>
|
||||
<created>2007-04-09</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.19.1 release</name>
|
||||
<created>2007-04-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.19.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.19/2.19.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.3 release</name>
|
||||
<created>2006-12-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.2 release</name>
|
||||
<created>2006-11-06</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.1 release</name>
|
||||
<created>2006-10-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.17.0 release</name>
|
||||
<created>2006-10-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.17.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.17/2.17.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.2 release</name>
|
||||
<created>2006-09-18</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.1 release</name>
|
||||
<created>2006-09-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.16.0 release</name>
|
||||
<created>2006-09-04</created>
|
||||
<branch></branch>
|
||||
<revision>2.16.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.16/2.16.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.34 release</name>
|
||||
<created>2006-08-21</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.21 release</name>
|
||||
<created>2006-08-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.13 release</name>
|
||||
<created>2006-07-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.8 release</name>
|
||||
<created>2006-07-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.5 release</name>
|
||||
<created>2006-06-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.3 release</name>
|
||||
<created>2006-05-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.2 release</name>
|
||||
<created>2006-04-25</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.1 release</name>
|
||||
<created>2006-04-25</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.15.0 release</name>
|
||||
<created>2006-04-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.15.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.15/2.15.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.89 release</name>
|
||||
<created>2006-02-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.89</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.89.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.89.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.55 release</name>
|
||||
<created>2006-01-30</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.55</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.55.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.55.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.34 release</name>
|
||||
<created>2006-01-20</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.34</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.34.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.34.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.21 release</name>
|
||||
<created>2006-01-16</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.21</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.21.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.21.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.13 release</name>
|
||||
<created>2006-01-10</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.13</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.13.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.13.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.8 release</name>
|
||||
<created>2006-01-02</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.8</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.8.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.8.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.5 release</name>
|
||||
<created>2005-12-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.3 release</name>
|
||||
<created>2005-11-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.2 release</name>
|
||||
<created>2005-11-19</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.1 release</name>
|
||||
<created>2005-11-14</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.13.0 release</name>
|
||||
<created>2005-10-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.13.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.13/2.13.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.12.1 release</name>
|
||||
<created>2005-10-03</created>
|
||||
<branch></branch>
|
||||
<revision>2.12.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.12.0 release</name>
|
||||
<created>2005-09-05</created>
|
||||
<branch></branch>
|
||||
<revision>2.12.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.12/2.12.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.3 release</name>
|
||||
<created>2005-08-22</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.2 release</name>
|
||||
<created>2005-08-08</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.1 release</name>
|
||||
<created>2005-07-24</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.11.0 release</name>
|
||||
<created>2005-07-12</created>
|
||||
<branch></branch>
|
||||
<revision>2.11.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.11/2.11.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.2 release</name>
|
||||
<created>2005-06-27</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.2</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.2.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.2.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.1 release</name>
|
||||
<created>2005-04-11</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.1</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.1.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.1.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.10.0 release</name>
|
||||
<created>2005-03-07</created>
|
||||
<branch></branch>
|
||||
<revision>2.10.0</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.0.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.10/2.10.0.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.5 release</name>
|
||||
<created>2004-09-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.5 release</name>
|
||||
<created>2004-09-13</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.5</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.5.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.4 release</name>
|
||||
<created>2004-08-29</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.4</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.4.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.4.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<release><Version>
|
||||
<name>2.8.3 release</name>
|
||||
<created>2004-08-15</created>
|
||||
<branch></branch>
|
||||
<revision>2.8.3</revision>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.3.tar.gz"/>
|
||||
<file-release rdf:resource="http://download.gnome.org/sources/metacity/2.8/2.8.3.tar.bz2"/>
|
||||
</Version></release>
|
||||
|
||||
<!-- earlier ones not yet documented, and will have to be added by hand -->
|
||||
|
||||
</Project>
|
945
po/ChangeLog
945
po/ChangeLog
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,8 @@
|
||||
#
|
||||
am
|
||||
ar
|
||||
as
|
||||
ast
|
||||
az
|
||||
be
|
||||
be@latin
|
||||
@@ -10,6 +12,7 @@ bn
|
||||
bn_IN
|
||||
bs
|
||||
ca
|
||||
ca@valencia
|
||||
cs
|
||||
cy
|
||||
da
|
||||
@@ -37,8 +40,10 @@ is
|
||||
it
|
||||
ja
|
||||
ka
|
||||
kn
|
||||
ko
|
||||
ku
|
||||
la
|
||||
lt
|
||||
lv
|
||||
mg
|
||||
@@ -60,11 +65,12 @@ pt_BR
|
||||
ro
|
||||
ru
|
||||
rw
|
||||
si
|
||||
sk
|
||||
sl
|
||||
sq
|
||||
sr
|
||||
sr@Latn
|
||||
sr@latin
|
||||
sv
|
||||
ta
|
||||
th
|
||||
|
@@ -2,27 +2,31 @@
|
||||
# Please keep this file sorted alphabetically.
|
||||
src/50-metacity-desktop-key.xml.in
|
||||
src/50-metacity-key.xml.in
|
||||
src/tools/metacity-message.c
|
||||
src/delete.c
|
||||
src/display.c
|
||||
src/errors.c
|
||||
src/frames.c
|
||||
src/keybindings.c
|
||||
src/main.c
|
||||
src/menu.c
|
||||
src/metaaccellabel.c
|
||||
src/metacity-dialog.c
|
||||
src/core/core.c
|
||||
src/core/delete.c
|
||||
src/core/display.c
|
||||
src/core/errors.c
|
||||
src/core/keybindings.c
|
||||
src/core/main.c
|
||||
src/core/prefs.c
|
||||
src/core/screen.c
|
||||
src/core/schema-bindings.c
|
||||
src/core/session.c
|
||||
src/core/util.c
|
||||
src/core/window.c
|
||||
src/core/window-props.c
|
||||
src/core/xprops.c
|
||||
src/include/all-keybindings.h
|
||||
src/metacity.desktop.in
|
||||
src/metacity.schemas.in
|
||||
src/prefs.c
|
||||
src/resizepopup.c
|
||||
src/screen.c
|
||||
src/session.c
|
||||
src/theme-parser.c
|
||||
src/theme-viewer.c
|
||||
src/theme.c
|
||||
src/util.c
|
||||
src/window-props.c
|
||||
src/window.c
|
||||
src/workspace.c
|
||||
src/xprops.c
|
||||
src/metacity.schemas.in.in
|
||||
src/metacity-wm.desktop.in
|
||||
src/tools/metacity-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
|
||||
|
||||
|
2
po/POTFILES.skip
Normal file
2
po/POTFILES.skip
Normal file
@@ -0,0 +1,2 @@
|
||||
src/metacity.schemas.in
|
||||
|
3517
po/be@latin.po
3517
po/be@latin.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
2814
po/en_CA.po
2814
po/en_CA.po
File diff suppressed because it is too large
Load Diff
6827
po/pt_BR.po
6827
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2140
po/zh_CN.po
2140
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
2123
po/zh_HK.po
2123
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
2156
po/zh_TW.po
2156
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
|
||||
|
@@ -151,6 +151,9 @@
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_windows" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_group" />
|
||||
|
||||
<KeyListEntry
|
||||
name="/apps/metacity/global_keybindings/switch_panels" />
|
||||
|
||||
|
270
src/Makefile.am
270
src/Makefile.am
@@ -2,136 +2,149 @@ lib_LTLIBRARIES = libmetacity-private.la
|
||||
|
||||
SUBDIRS=wm-tester tools themes
|
||||
|
||||
INCLUDES=@METACITY_CFLAGS@ -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
|
||||
INCLUDES=-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 @METACITY_CFLAGS@
|
||||
|
||||
metacity_SOURCES= \
|
||||
async-getprop.c \
|
||||
async-getprop.h \
|
||||
bell.h \
|
||||
bell.c \
|
||||
boxes.h \
|
||||
boxes.c \
|
||||
common.h \
|
||||
c-screen.c \
|
||||
c-screen.h \
|
||||
c-window.c \
|
||||
c-window.h \
|
||||
compositor.c \
|
||||
compositor.h \
|
||||
constraints.c \
|
||||
constraints.h \
|
||||
core.c \
|
||||
core.h \
|
||||
delete.c \
|
||||
display.c \
|
||||
display.h \
|
||||
draw-workspace.c \
|
||||
draw-workspace.h \
|
||||
edge-resistance.c \
|
||||
edge-resistance.h \
|
||||
effects.c \
|
||||
effects.h \
|
||||
errors.c \
|
||||
errors.h \
|
||||
eventqueue.c \
|
||||
eventqueue.h \
|
||||
fixedtip.c \
|
||||
fixedtip.h \
|
||||
frame.c \
|
||||
frame.h \
|
||||
frames.c \
|
||||
frames.h \
|
||||
gradient.c \
|
||||
gradient.h \
|
||||
group.c \
|
||||
group.h \
|
||||
group-private.h \
|
||||
group-props.c \
|
||||
group-props.h \
|
||||
iconcache.c \
|
||||
iconcache.h \
|
||||
core/async-getprop.c \
|
||||
core/async-getprop.h \
|
||||
core/atomnames.h \
|
||||
core/bell.c \
|
||||
core/bell.h \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
compositor/compositor.c \
|
||||
compositor/compositor-private.h \
|
||||
compositor/compositor-xrender.c \
|
||||
compositor/compositor-xrender.h \
|
||||
include/compositor.h \
|
||||
core/constraints.c \
|
||||
core/constraints.h \
|
||||
core/core.c \
|
||||
core/delete.c \
|
||||
core/display.c \
|
||||
core/display-private.h \
|
||||
include/display.h \
|
||||
ui/draw-workspace.c \
|
||||
ui/draw-workspace.h \
|
||||
core/edge-resistance.c \
|
||||
core/edge-resistance.h \
|
||||
core/effects.c \
|
||||
core/effects.h \
|
||||
core/errors.c \
|
||||
include/errors.h \
|
||||
core/eventqueue.c \
|
||||
core/eventqueue.h \
|
||||
core/frame.c \
|
||||
core/frame-private.h \
|
||||
include/frame.h \
|
||||
ui/gradient.c \
|
||||
ui/gradient.h \
|
||||
core/group-private.h \
|
||||
core/group-props.c \
|
||||
core/group-props.h \
|
||||
core/group.c \
|
||||
core/group.h \
|
||||
core/iconcache.c \
|
||||
core/iconcache.h \
|
||||
core/keybindings.c \
|
||||
core/keybindings.h \
|
||||
core/main.c \
|
||||
include/main.h \
|
||||
core/metacity-Xatomtype.h \
|
||||
core/place.c \
|
||||
core/place.h \
|
||||
core/prefs.c \
|
||||
include/prefs.h \
|
||||
core/screen.c \
|
||||
core/screen-private.h \
|
||||
include/screen.h \
|
||||
include/types.h \
|
||||
core/session.c \
|
||||
core/session.h \
|
||||
core/stack.c \
|
||||
core/stack.h \
|
||||
core/util.c \
|
||||
include/util.h \
|
||||
core/window-props.c \
|
||||
core/window-props.h \
|
||||
core/window.c \
|
||||
core/window-private.h \
|
||||
include/window.h \
|
||||
core/workspace.c \
|
||||
core/workspace.h \
|
||||
core/xprops.c \
|
||||
include/xprops.h \
|
||||
include/common.h \
|
||||
include/core.h \
|
||||
include/ui.h \
|
||||
inlinepixbufs.h \
|
||||
keybindings.c \
|
||||
keybindings.h \
|
||||
main.c \
|
||||
main.h \
|
||||
menu.c \
|
||||
menu.h \
|
||||
metaaccellabel.c \
|
||||
metaaccellabel.h \
|
||||
metacity-Xatomtype.h \
|
||||
place.c \
|
||||
place.h \
|
||||
prefs.c \
|
||||
prefs.h \
|
||||
resizepopup.c \
|
||||
resizepopup.h \
|
||||
screen.c \
|
||||
screen.h \
|
||||
session.c \
|
||||
session.h \
|
||||
spring-model.c \
|
||||
spring-model.h \
|
||||
stack.c \
|
||||
stack.h \
|
||||
tabpopup.c \
|
||||
tabpopup.h \
|
||||
theme.c \
|
||||
theme.h \
|
||||
theme-parser.c \
|
||||
theme-parser.h \
|
||||
themewidget.c \
|
||||
themewidget.h \
|
||||
ui.c \
|
||||
ui.h \
|
||||
util.c \
|
||||
util.h \
|
||||
window.c \
|
||||
window.h \
|
||||
window-props.c \
|
||||
window-props.h \
|
||||
workspace.c \
|
||||
workspace.h \
|
||||
xprops.c \
|
||||
xprops.h
|
||||
ui/fixedtip.c \
|
||||
ui/fixedtip.h \
|
||||
ui/frames.c \
|
||||
ui/frames.h \
|
||||
ui/menu.c \
|
||||
ui/menu.h \
|
||||
ui/metaaccellabel.c \
|
||||
ui/metaaccellabel.h \
|
||||
ui/resizepopup.c \
|
||||
include/resizepopup.h \
|
||||
ui/tabpopup.c \
|
||||
include/tabpopup.h \
|
||||
ui/theme-parser.c \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.c \
|
||||
ui/theme.h \
|
||||
ui/themewidget.c \
|
||||
ui/themewidget.h \
|
||||
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= \
|
||||
boxes.c \
|
||||
boxes.h \
|
||||
gradient.c \
|
||||
gradient.h \
|
||||
preview-widget.c \
|
||||
preview-widget.h \
|
||||
theme.c \
|
||||
theme.h \
|
||||
theme-parser.c \
|
||||
theme-parser.h \
|
||||
util.c \
|
||||
util.h \
|
||||
common.h
|
||||
libmetacity_private_la_SOURCES= \
|
||||
core/boxes.c \
|
||||
include/boxes.h \
|
||||
ui/gradient.c \
|
||||
ui/gradient.h \
|
||||
core/util.c \
|
||||
include/util.h \
|
||||
include/common.h \
|
||||
ui/preview-widget.c \
|
||||
ui/preview-widget.h \
|
||||
ui/theme-parser.c \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.c \
|
||||
ui/theme.h
|
||||
|
||||
libmetacity_private_la_LDFLAGS = -no-undefined
|
||||
libmetacity_private_la_LIBADD = @METACITY_LIBS@
|
||||
|
||||
libmetacityincludedir = $(includedir)/metacity-1/metacity-private
|
||||
|
||||
libmetacityinclude_HEADERS = \
|
||||
boxes.h \
|
||||
common.h \
|
||||
gradient.h \
|
||||
preview-widget.h \
|
||||
theme.h \
|
||||
theme-parser.h \
|
||||
util.h
|
||||
libmetacityinclude_HEADERS = \
|
||||
include/boxes.h \
|
||||
ui/gradient.h \
|
||||
include/util.h \
|
||||
include/common.h \
|
||||
ui/preview-widget.h \
|
||||
ui/theme-parser.h \
|
||||
ui/theme.h
|
||||
|
||||
metacity_theme_viewer_SOURCES= \
|
||||
theme-viewer.c
|
||||
ui/theme-viewer.c
|
||||
|
||||
metacity_dialog_SOURCES= \
|
||||
metacity-dialog.c
|
||||
ui/metacity-dialog.c
|
||||
|
||||
schema_bindings_SOURCES = \
|
||||
core/schema-bindings.c \
|
||||
metacity.schemas.in.in
|
||||
|
||||
schema_bindings_LDADD = @METACITY_LIBS@
|
||||
metacity.schemas.in: schema_bindings ${srcdir}/metacity.schemas.in.in
|
||||
@echo Generating keybinding schemas... ${srcdir}/metacity.schemas.in.in
|
||||
${builddir}/schema_bindings ${srcdir}/metacity.schemas.in.in ${builddir}/metacity.schemas.in
|
||||
|
||||
bin_PROGRAMS=metacity metacity-theme-viewer
|
||||
libexec_PROGRAMS=metacity-dialog
|
||||
@@ -141,21 +154,27 @@ metacity_LDADD=@METACITY_LIBS@ $(EFENCE)
|
||||
metacity_theme_viewer_LDADD= @METACITY_LIBS@ libmetacity-private.la
|
||||
metacity_dialog_LDADD=@METACITY_LIBS@
|
||||
|
||||
testboxes_SOURCES=util.h util.c boxes.h boxes.c testboxes.c
|
||||
testgradient_SOURCES=gradient.h gradient.c testgradient.c
|
||||
testasyncgetprop_SOURCES=async-getprop.h async-getprop.c testasyncgetprop.c
|
||||
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
|
||||
testasyncgetprop_SOURCES=core/async-getprop.h core/async-getprop.c core/testasyncgetprop.c
|
||||
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop schema_bindings
|
||||
|
||||
testboxes_LDADD= @METACITY_LIBS@
|
||||
testgradient_LDADD= @METACITY_LIBS@
|
||||
testasyncgetprop_LDADD= @METACITY_LIBS@
|
||||
|
||||
desktopfilesdir=$(datadir)/gnome/wm-properties
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
desktopfilesdir=$(datadir)/applications
|
||||
desktopfiles_in_files=metacity.desktop.in
|
||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||
desktopfiles_DATA = $(desktopfiles_files)
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
wmpropertiesdir=$(datadir)/gnome/wm-properties
|
||||
wmproperties_in_files=metacity-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
|
||||
@@ -163,7 +182,7 @@ schema_DATA = $(schema_in_files:.schemas.in=.schemas)
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
|
||||
xmldir = $(datadir)/control-center/keybindings
|
||||
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)
|
||||
|
||||
@@ -176,25 +195,26 @@ 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 metacity.desktop metacity-wm.desktop metacity.schemas metacity.schemas.in 50-metacity-desktop-key.xml 50-metacity-key.xml
|
||||
|
||||
inlinepixbufs.h: $(IMAGES)
|
||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
pkgconfig_DATA = libmetacity-private.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
|
||||
|
55
src/api.c
55
src/api.c
@@ -1,55 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity misc. public entry points */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
* 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 "api.h"
|
||||
#include "display.h"
|
||||
#include "colors.h"
|
||||
|
||||
PangoContext*
|
||||
meta_get_pango_context (Screen *xscreen,
|
||||
const PangoFontDescription *desc)
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
screen = meta_screen_for_x_screen (xscreen);
|
||||
|
||||
g_return_val_if_fail (screen != NULL, NULL);
|
||||
|
||||
return meta_screen_get_pango_context (screen,
|
||||
desc,
|
||||
/* FIXME, from the frame window */
|
||||
PANGO_DIRECTION_LTR);
|
||||
}
|
||||
|
||||
gulong
|
||||
meta_get_x_pixel (Screen *xscreen, const PangoColor *color)
|
||||
{
|
||||
MetaScreen *screen;
|
||||
|
||||
screen = meta_screen_for_x_screen (xscreen);
|
||||
|
||||
g_return_val_if_fail (screen != NULL, 0);
|
||||
|
||||
return meta_screen_get_x_pixel (screen, color);
|
||||
}
|
||||
|
64
src/api.h
64
src/api.h
@@ -1,64 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity misc. public entry points */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
* 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 META_API_H
|
||||
#define META_API_H
|
||||
|
||||
/* don't add any internal headers here; api.h is an installed/public
|
||||
* header. Only theme.h is also installed.
|
||||
*/
|
||||
#include <X11/Xlib.h>
|
||||
#include <pango/pangox.h>
|
||||
|
||||
/* Colors/state stuff matches GTK since we get the info from
|
||||
* the GTK UI slave
|
||||
*/
|
||||
typedef struct _MetaUIColors MetaUIColors;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
META_STATE_NORMAL,
|
||||
META_STATE_ACTIVE,
|
||||
META_STATE_PRELIGHT,
|
||||
META_STATE_SELECTED,
|
||||
META_STATE_INSENSITIVE
|
||||
} MetaUIState;
|
||||
|
||||
struct _MetaUIColors
|
||||
{
|
||||
PangoColor fg[5];
|
||||
PangoColor bg[5];
|
||||
PangoColor light[5];
|
||||
PangoColor dark[5];
|
||||
PangoColor mid[5];
|
||||
PangoColor text[5];
|
||||
PangoColor base[5];
|
||||
PangoColor text_aa[5];
|
||||
};
|
||||
|
||||
PangoContext* meta_get_pango_context (Screen *xscreen,
|
||||
const PangoFontDescription *desc);
|
||||
gulong meta_get_x_pixel (Screen *xscreen,
|
||||
const PangoColor *color);
|
||||
|
||||
#endif
|
677
src/c-screen.c
677
src/c-screen.c
@@ -1,677 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2006 Red Hat, Inc.
|
||||
*
|
||||
* 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>
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
#include <cm/ws.h>
|
||||
#include <cm/stacker.h>
|
||||
#include <cm/wsint.h>
|
||||
#include <cm/drawable-node.h>
|
||||
#include <cm/state.h>
|
||||
#include <cm/magnifier.h>
|
||||
#include <cm/square.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "screen.h"
|
||||
#include "c-screen.h"
|
||||
#include "c-window.h"
|
||||
|
||||
struct MetaCompScreen
|
||||
{
|
||||
WsDisplay *display;
|
||||
CmStacker *stacker;
|
||||
CmMagnifier *magnifier;
|
||||
|
||||
WsWindow *gl_window;
|
||||
WsWindow *root_window;
|
||||
|
||||
WsScreen *screen;
|
||||
MetaScreen *meta_screen;
|
||||
|
||||
int repaint_id;
|
||||
int idle_id;
|
||||
|
||||
WsWindow *selection_window;
|
||||
|
||||
GHashTable *windows_by_xid;
|
||||
};
|
||||
|
||||
static MetaCompWindow *
|
||||
meta_comp_window_lookup (MetaCompScreen *info,
|
||||
Window xid)
|
||||
{
|
||||
MetaCompWindow *window;
|
||||
|
||||
window = g_hash_table_lookup (info->windows_by_xid, (gpointer)xid);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
MetaCompWindow *
|
||||
meta_comp_screen_lookup_window (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
return meta_comp_window_lookup (info, xwindow);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
update_frame_counter (void)
|
||||
{
|
||||
#define BUFSIZE 128
|
||||
static GTimer *timer;
|
||||
static double buffer [BUFSIZE];
|
||||
static int next = 0;
|
||||
|
||||
if (!timer)
|
||||
timer = g_timer_new ();
|
||||
|
||||
buffer[next++] = g_timer_elapsed (timer, NULL);
|
||||
|
||||
if (next == BUFSIZE)
|
||||
{
|
||||
int i;
|
||||
double total;
|
||||
|
||||
next = 0;
|
||||
|
||||
total = 0.0;
|
||||
for (i = 1; i < BUFSIZE; ++i)
|
||||
total += buffer[i] - buffer[i - 1];
|
||||
|
||||
g_print ("frames per second: %f\n", 1 / (total / (BUFSIZE - 1)));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
dump_stacking_order (GList *nodes)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = nodes; list != NULL; list = list->next)
|
||||
{
|
||||
CmDrawableNode *node = list->data;
|
||||
|
||||
if (node)
|
||||
g_print ("%lx, ", WS_RESOURCE_XID (node->drawable));
|
||||
}
|
||||
g_print ("\n");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
repaint (gpointer data)
|
||||
{
|
||||
MetaCompScreen *info = data;
|
||||
CmState *state;
|
||||
#if 0
|
||||
g_print ("repaint\n");
|
||||
#endif
|
||||
glViewport (0, 0,
|
||||
info->meta_screen->rect.width,
|
||||
info->meta_screen->rect.height);
|
||||
|
||||
glLoadIdentity();
|
||||
|
||||
#if 0
|
||||
glClearColor (0, 0, 0, 1.0);
|
||||
glClear (GL_COLOR_BUFFER_BIT);
|
||||
#endif
|
||||
|
||||
ws_window_raise (info->gl_window);
|
||||
|
||||
#if 0
|
||||
glDisable (GL_TEXTURE_2D);
|
||||
glDisable (GL_TEXTURE_RECTANGLE_ARB);
|
||||
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
|
||||
glColor4f (0.0, 1.0, 0.0, 1.0);
|
||||
glRectf (-1.0, -1.0, 1.0, 1.0);
|
||||
glFinish();
|
||||
#endif
|
||||
|
||||
state = cm_state_new ();
|
||||
|
||||
cm_state_disable_depth_buffer_update (state);
|
||||
|
||||
cm_node_render (CM_NODE (info->magnifier), state);
|
||||
|
||||
cm_state_enable_depth_buffer_update (state);
|
||||
|
||||
g_object_unref (state);
|
||||
|
||||
ws_window_gl_swap_buffers (info->gl_window);
|
||||
glFinish();
|
||||
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
info->idle_id = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static MetaCompWindow *
|
||||
find_comp_window (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
return meta_comp_window_lookup (info, xwindow);
|
||||
}
|
||||
|
||||
static CmNode *
|
||||
find_node (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaCompWindow *window = meta_comp_window_lookup (info, xwindow);
|
||||
|
||||
if (window)
|
||||
return meta_comp_window_get_node (window);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static GList *all_screen_infos;
|
||||
|
||||
MetaCompScreen *
|
||||
meta_comp_screen_get_by_xwindow (Window xwindow)
|
||||
{
|
||||
GList *list;
|
||||
|
||||
for (list = all_screen_infos; list != NULL; list = list->next)
|
||||
{
|
||||
MetaCompScreen *info = list->data;
|
||||
|
||||
if (find_node (info, xwindow))
|
||||
return info;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MetaCompScreen *
|
||||
meta_comp_screen_new (WsDisplay *display,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
MetaCompScreen *scr_info = g_new0 (MetaCompScreen, 1);
|
||||
|
||||
scr_info->screen = ws_display_get_screen_from_number (
|
||||
display, screen->number);
|
||||
scr_info->root_window = ws_screen_get_root_window (scr_info->screen);
|
||||
scr_info->display = display;
|
||||
scr_info->meta_screen = screen;
|
||||
scr_info->windows_by_xid = g_hash_table_new (g_direct_hash, g_direct_equal);
|
||||
|
||||
all_screen_infos = g_list_prepend (all_screen_infos, scr_info);
|
||||
|
||||
return scr_info;
|
||||
}
|
||||
|
||||
static char *
|
||||
make_selection_name (MetaCompScreen *info)
|
||||
{
|
||||
char *buffer;
|
||||
|
||||
buffer = g_strdup_printf ("_NET_WM_CM_S%d", info->meta_screen->number);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static void
|
||||
on_selection_clear (WsWindow *window,
|
||||
WsSelectionClearEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
MetaCompScreen *info = data;
|
||||
char *buffer = make_selection_name (info);
|
||||
|
||||
if (strcmp (event->selection, buffer))
|
||||
{
|
||||
/* We lost the selection */
|
||||
meta_comp_screen_unredirect (info);
|
||||
}
|
||||
}
|
||||
|
||||
static WsWindow *
|
||||
claim_selection (MetaCompScreen *info)
|
||||
{
|
||||
WsWindow *window = ws_window_new (info->root_window);
|
||||
char *buffer = make_selection_name (info);
|
||||
|
||||
#if 0
|
||||
g_print ("selection window: %lx\n", WS_RESOURCE_XID (window));
|
||||
#endif
|
||||
|
||||
ws_window_own_selection (window, buffer, WS_CURRENT_TIME);
|
||||
|
||||
g_signal_connect (window, "selection_clear_event", G_CALLBACK (on_selection_clear), info);
|
||||
|
||||
g_free (buffer);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
static void
|
||||
queue_paint (CmNode *node,
|
||||
MetaCompScreen *info)
|
||||
{
|
||||
#if 0
|
||||
g_print ("queueing %s\n", G_OBJECT_TYPE_NAME (node));
|
||||
#endif
|
||||
meta_comp_screen_queue_paint (info);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_redirect (MetaCompScreen *info)
|
||||
{
|
||||
WsWindow *root = ws_screen_get_root_window (info->screen);
|
||||
WsRectangle source;
|
||||
WsRectangle target;
|
||||
WsServerRegion *region;
|
||||
int screen_w;
|
||||
int screen_h;
|
||||
CmSquare *square;
|
||||
|
||||
#if 0
|
||||
g_print ("redirecting %lx\n", WS_RESOURCE_XID (root));
|
||||
#endif
|
||||
|
||||
ws_window_redirect_subwindows (root);
|
||||
info->gl_window = ws_screen_get_gl_window (info->screen);
|
||||
/* FIXME: This should probably happen in libcm */
|
||||
ws_window_set_override_redirect (info->gl_window, TRUE);
|
||||
region = ws_server_region_new (info->display);
|
||||
ws_window_set_input_shape (info->gl_window, region);
|
||||
g_object_unref (G_OBJECT (region));
|
||||
|
||||
ws_display_begin_error_trap (info->display);
|
||||
|
||||
ws_window_unredirect (info->gl_window);
|
||||
|
||||
ws_display_end_error_trap (info->display);
|
||||
|
||||
info->selection_window = claim_selection (info);
|
||||
|
||||
ws_window_map (info->gl_window);
|
||||
|
||||
info->stacker = cm_stacker_new ();
|
||||
|
||||
square = cm_square_new (0.3, 0.3, 0.8, 1.0);
|
||||
|
||||
cm_stacker_add_child (info->stacker, CM_NODE (square));
|
||||
|
||||
g_object_unref (square);
|
||||
|
||||
screen_w = ws_screen_get_width (info->screen);
|
||||
screen_h = ws_screen_get_height (info->screen);
|
||||
|
||||
#if 0
|
||||
g_print ("width: %d height %d\n", screen_w, screen_h);
|
||||
#endif
|
||||
|
||||
source.x = (screen_w - (screen_w / 4)) / 2;
|
||||
source.y = screen_h / 16;
|
||||
source.width = screen_w / 4;
|
||||
source.height = screen_h / 16;
|
||||
|
||||
target.x = 0;
|
||||
target.y = screen_h - screen_h / 4;
|
||||
target.width = screen_w;
|
||||
target.height = screen_h / 4;
|
||||
|
||||
info->magnifier = cm_magnifier_new (CM_NODE (info->stacker), &source, &target);
|
||||
|
||||
if (g_getenv ("USE_MAGNIFIER"))
|
||||
cm_magnifier_set_active (info->magnifier, TRUE);
|
||||
else
|
||||
cm_magnifier_set_active (info->magnifier, FALSE);
|
||||
|
||||
info->repaint_id =
|
||||
g_signal_connect (info->magnifier, "need_repaint",
|
||||
G_CALLBACK (queue_paint), info);
|
||||
|
||||
ws_display_sync (info->display);
|
||||
}
|
||||
|
||||
static void
|
||||
listify (gpointer key,
|
||||
gpointer value,
|
||||
gpointer data)
|
||||
{
|
||||
GList **windows = data;
|
||||
|
||||
*windows = g_list_prepend (*windows, (gpointer)value);
|
||||
}
|
||||
|
||||
static void
|
||||
free_all_windows (MetaCompScreen *info)
|
||||
{
|
||||
GList *windows = NULL, *list;
|
||||
|
||||
g_hash_table_foreach (info->windows_by_xid, listify, &windows);
|
||||
|
||||
for (list = windows; list != NULL; list = list->next)
|
||||
{
|
||||
MetaCompWindow *window = list->data;
|
||||
|
||||
meta_comp_window_free (window);
|
||||
}
|
||||
|
||||
g_list_free (windows);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_unredirect (MetaCompScreen *info)
|
||||
{
|
||||
WsScreen *ws_screen = info->screen;
|
||||
WsWindow *root = ws_screen_get_root_window (ws_screen);
|
||||
|
||||
g_signal_handler_disconnect (info->magnifier, info->repaint_id);
|
||||
g_object_unref (info->magnifier);
|
||||
|
||||
ws_window_unredirect_subwindows (root);
|
||||
ws_screen_release_gl_window (ws_screen);
|
||||
|
||||
free_all_windows (info);
|
||||
|
||||
ws_display_sync (info->display);
|
||||
|
||||
/* FIXME: libcm needs a way to guarantee that a window is destroyed,
|
||||
* without relying on ref counting having it as a side effect
|
||||
*/
|
||||
g_object_unref (info->selection_window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_queue_paint (MetaCompScreen *info)
|
||||
{
|
||||
#if 0
|
||||
g_print ("queuing\n");
|
||||
#endif
|
||||
if (!info->idle_id)
|
||||
info->idle_id = g_idle_add (repaint, info);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_restack (MetaCompScreen *info,
|
||||
Window window,
|
||||
Window above_this)
|
||||
{
|
||||
MetaCompWindow *comp_window = find_comp_window (info, window);
|
||||
MetaCompWindow *above_comp_window = find_comp_window (info, above_this);
|
||||
CmNode *window_node = find_node (info, window);
|
||||
CmNode *above_node = find_node (info, above_this);
|
||||
|
||||
if ((comp_window && meta_comp_window_stack_frozen (comp_window)) ||
|
||||
(above_comp_window && meta_comp_window_stack_frozen (above_comp_window)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
if (window_node == above_node)
|
||||
return;
|
||||
|
||||
if (window_node && above_this == WS_RESOURCE_XID (info->gl_window))
|
||||
{
|
||||
cm_stacker_raise_child (info->stacker, window_node);
|
||||
}
|
||||
else if (window_node && above_this == None)
|
||||
{
|
||||
cm_stacker_lower_child (info->stacker, window_node);
|
||||
}
|
||||
else if (window_node && above_node)
|
||||
{
|
||||
cm_stacker_restack_child (info->stacker, window_node, above_node);
|
||||
}
|
||||
#if 0
|
||||
else
|
||||
g_print ("nothing happened\n");
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
g_print ("done restacking; new order:\n");
|
||||
#endif
|
||||
#if 0
|
||||
dump_stacking_order (info->stacker->children);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_raise_window (MetaCompScreen *info,
|
||||
Window window)
|
||||
{
|
||||
CmNode *node = find_node (info, window);
|
||||
|
||||
if (node)
|
||||
cm_stacker_raise_child (info->stacker, node);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_set_size (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
MetaCompWindow *comp_window = meta_comp_window_lookup (info, xwindow);
|
||||
|
||||
if (comp_window)
|
||||
{
|
||||
WsRectangle rect;
|
||||
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
|
||||
meta_comp_window_set_size (comp_window, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_child_titles (WsWindow *window)
|
||||
{
|
||||
GList *children = ws_window_query_subwindows (window);
|
||||
GList *list;
|
||||
int i;
|
||||
|
||||
g_print ("window: %lx %s\n", WS_RESOURCE_XID (window), ws_window_query_title (window));
|
||||
|
||||
i = 0;
|
||||
for (list = children; list != NULL; list = list->next)
|
||||
{
|
||||
WsWindow *child = list->data;
|
||||
|
||||
g_print (" %d adding: %lx %s\n", i++, WS_RESOURCE_XID (child), ws_window_query_title (child));
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MetaCompScreen *cscreen;
|
||||
XID xid;
|
||||
} DestroyData;
|
||||
|
||||
static void
|
||||
on_window_destroy (MetaCompWindow *comp_window,
|
||||
gpointer closure)
|
||||
{
|
||||
DestroyData *data = closure;
|
||||
CmNode *node = meta_comp_window_get_node (comp_window);
|
||||
|
||||
cm_stacker_remove_child (data->cscreen->stacker, node);
|
||||
g_hash_table_remove (data->cscreen->windows_by_xid, (gpointer)data->xid);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_add_window (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
WsDrawable *drawable;
|
||||
MetaCompWindow *comp_window;
|
||||
DestroyData *data;
|
||||
|
||||
ws_display_begin_error_trap (info->display);
|
||||
|
||||
comp_window = meta_comp_window_lookup (info, xwindow);
|
||||
|
||||
if (comp_window)
|
||||
goto out;
|
||||
|
||||
drawable = WS_DRAWABLE (ws_window_lookup (info->display, xwindow));
|
||||
|
||||
if (ws_window_query_input_only (WS_WINDOW (drawable)))
|
||||
goto out;
|
||||
|
||||
if (WS_WINDOW (drawable) == info->gl_window ||
|
||||
WS_WINDOW (drawable) == info->screen->overlay_window)
|
||||
{
|
||||
#if 0
|
||||
g_print ("gl window\n");
|
||||
#endif
|
||||
goto out;
|
||||
}
|
||||
|
||||
data = g_new (DestroyData, 1);
|
||||
data->cscreen = info;
|
||||
data->xid = WS_RESOURCE_XID (drawable);
|
||||
|
||||
comp_window = meta_comp_window_new (info->meta_screen, drawable,
|
||||
on_window_destroy, data);
|
||||
|
||||
g_hash_table_insert (info->windows_by_xid, (gpointer)WS_RESOURCE_XID (drawable), comp_window);
|
||||
|
||||
cm_stacker_add_child (info->stacker, meta_comp_window_get_node (comp_window));
|
||||
|
||||
out:
|
||||
if (comp_window)
|
||||
{
|
||||
/* This function is called both when windows are created and when they
|
||||
* are mapped, so for now we have this silly function.
|
||||
*/
|
||||
meta_comp_window_refresh_attrs (comp_window);
|
||||
}
|
||||
|
||||
ws_display_end_error_trap (info->display);
|
||||
|
||||
#if 0
|
||||
g_print ("done checking\n");
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_comp_screen_remove_window (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaCompWindow *comp_window = meta_comp_window_lookup (info, xwindow);
|
||||
|
||||
if (comp_window)
|
||||
meta_comp_window_free (comp_window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_set_updates (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gboolean updates)
|
||||
{
|
||||
MetaCompWindow *comp_window = meta_comp_window_lookup (info, xwindow);
|
||||
|
||||
meta_comp_window_set_updates (comp_window, updates);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
meta_comp_screen_set_patch (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
CmPoint points[4][4])
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_patch (node, points);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_unset_patch (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_unset_patch (node);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_set_alpha (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gdouble alpha)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
#if 0
|
||||
g_print ("alpha: %f\n", alpha);
|
||||
#endif
|
||||
cm_drawable_node_set_alpha (node, alpha);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_get_real_size (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
WsRectangle *size)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (!size)
|
||||
return;
|
||||
|
||||
cm_drawable_node_get_clipbox (node, size);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_unmap (MetaCompScreen *info,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaCompWindow *window = find_comp_window (info, xwindow);
|
||||
|
||||
if (window)
|
||||
meta_comp_window_hide (window);
|
||||
}
|
||||
|
||||
void
|
||||
meta_comp_screen_set_target_rect (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
WsRectangle *rect)
|
||||
{
|
||||
CmDrawableNode *node = CM_DRAWABLE_NODE (find_node (info, xwindow));
|
||||
|
||||
if (node)
|
||||
cm_drawable_node_set_scale_rect (node, rect);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -1,53 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
#include "screen.h"
|
||||
#include "c-window.h"
|
||||
|
||||
typedef struct MetaCompScreen MetaCompScreen;
|
||||
|
||||
MetaCompScreen *meta_comp_screen_new (WsDisplay *display,
|
||||
MetaScreen *screen);
|
||||
MetaCompScreen *meta_comp_screen_get_by_xwindow (Window xwindow);
|
||||
void meta_comp_screen_destroy (MetaCompScreen *scr_info);
|
||||
void meta_comp_screen_redirect (MetaCompScreen *info);
|
||||
void meta_comp_screen_unredirect (MetaCompScreen *info);
|
||||
void meta_comp_screen_add_window (MetaCompScreen *scr_info,
|
||||
Window xwindow);
|
||||
void meta_comp_screen_remove_window (MetaCompScreen *scr_info,
|
||||
Window xwindow);
|
||||
void meta_comp_screen_restack (MetaCompScreen *scr_info,
|
||||
Window window,
|
||||
Window above_this);
|
||||
void meta_comp_screen_set_size (MetaCompScreen *info,
|
||||
Window window,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
void meta_comp_screen_raise_window (MetaCompScreen *scr_info,
|
||||
Window window);
|
||||
void meta_comp_screen_queue_paint (MetaCompScreen *info);
|
||||
void meta_comp_screen_set_updates (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gboolean updates);
|
||||
void meta_comp_screen_set_patch (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
CmPoint points[4][4]);
|
||||
void meta_comp_screen_unset_patch (MetaCompScreen *info,
|
||||
Window xwindow);
|
||||
void meta_comp_screen_set_alpha (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gdouble alpha);
|
||||
void meta_comp_screen_get_real_size (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
WsRectangle *size);
|
||||
void meta_comp_screen_set_target_rect (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
WsRectangle *rect);
|
||||
void meta_comp_screen_set_explode (MetaCompScreen *info,
|
||||
Window xwindow,
|
||||
gdouble level);
|
||||
void meta_comp_screen_unmap (MetaCompScreen *info,
|
||||
Window xwindow);
|
||||
MetaCompWindow *meta_comp_screen_lookup_window (MetaCompScreen *info,
|
||||
Window xwindow);
|
1259
src/c-window.c
1259
src/c-window.c
File diff suppressed because it is too large
Load Diff
@@ -1,72 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* Copyright (C) 2006 Red Hat, Inc.
|
||||
*
|
||||
* 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 <cm/node.h>
|
||||
#include "display.h"
|
||||
#include "effects.h"
|
||||
|
||||
#ifndef C_WINDOW_H
|
||||
#define C_WINDOW_H
|
||||
|
||||
typedef struct _MetaCompWindow MetaCompWindow;
|
||||
|
||||
typedef void (* MetaCompWindowDestroy) (MetaCompWindow *window,
|
||||
gpointer closure);
|
||||
|
||||
MetaCompWindow *meta_comp_window_new (MetaScreen *screen,
|
||||
WsDrawable *drawable,
|
||||
MetaCompWindowDestroy destroy,
|
||||
gpointer data);
|
||||
CmNode *meta_comp_window_get_node (MetaCompWindow *window);
|
||||
gboolean meta_comp_window_free (MetaCompWindow *window);
|
||||
void meta_comp_window_set_size (MetaCompWindow *window,
|
||||
WsRectangle *size);
|
||||
|
||||
void meta_comp_window_hide (MetaCompWindow *comp_window);
|
||||
void meta_comp_window_show (MetaCompWindow *comp_window);
|
||||
void meta_comp_window_refresh_attrs (MetaCompWindow *comp_window);
|
||||
void meta_comp_window_set_updates (MetaCompWindow *comp_window,
|
||||
gboolean updates);
|
||||
|
||||
void meta_comp_window_explode (MetaCompWindow *comp_window,
|
||||
MetaEffect *effect);
|
||||
void meta_comp_window_shrink (MetaCompWindow *comp_window,
|
||||
MetaEffect *effect);
|
||||
void meta_comp_window_unshrink (MetaCompWindow *comp_window,
|
||||
MetaEffect *effect);
|
||||
void meta_comp_window_run_focus (MetaCompWindow *comp_window,
|
||||
MetaEffect *effect);
|
||||
void meta_comp_window_restack (MetaCompWindow *comp_window,
|
||||
MetaCompWindow *above);
|
||||
void meta_comp_window_freeze_stack (MetaCompWindow *comp_window);
|
||||
void meta_comp_window_thaw_stack (MetaCompWindow *comp_window);
|
||||
gboolean meta_comp_window_stack_frozen (MetaCompWindow *comp_window);
|
||||
void meta_comp_window_run_minimize (MetaCompWindow *window,
|
||||
MetaEffect *effect);
|
||||
void meta_comp_window_run_unminimize (MetaCompWindow *comp_window,
|
||||
MetaEffect *effect);
|
||||
|
||||
#if 0
|
||||
void meta_comp_window_set_explode (MetaCompWindow *comp_window,
|
||||
double level);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
370
src/colors.c
370
src/colors.c
@@ -1,370 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity RGB color stuff */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
* 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 "colors.h"
|
||||
|
||||
|
||||
static void
|
||||
visual_decompose_mask (gulong mask,
|
||||
gint *shift,
|
||||
gint *prec)
|
||||
{
|
||||
/* This code is from GTK+, (C) GTK+ Team */
|
||||
*shift = 0;
|
||||
*prec = 0;
|
||||
|
||||
while (!(mask & 0x1))
|
||||
{
|
||||
(*shift)++;
|
||||
mask >>= 1;
|
||||
}
|
||||
|
||||
while (mask & 0x1)
|
||||
{
|
||||
(*prec)++;
|
||||
mask >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_init_visual_info (MetaScreen *screen)
|
||||
{
|
||||
Visual *xvisual;
|
||||
int nxvisuals;
|
||||
XVisualInfo *visual_list;
|
||||
XVisualInfo visual_template;
|
||||
|
||||
/* root window visual */
|
||||
xvisual = DefaultVisual (screen->display->xdisplay,
|
||||
screen->number);
|
||||
|
||||
visual_template.visualid = XVisualIDFromVisual (xvisual);
|
||||
visual_list = XGetVisualInfo (screen->display->xdisplay,
|
||||
VisualIDMask, &visual_template, &nxvisuals);
|
||||
|
||||
if (nxvisuals != 1)
|
||||
meta_warning ("Matched weird number of visuals %d\n", nxvisuals);
|
||||
|
||||
screen->visual_info = *visual_list;
|
||||
|
||||
meta_verbose ("Using visual class %d\n", screen->visual_info.class);
|
||||
|
||||
XFree (visual_list);
|
||||
}
|
||||
|
||||
gulong
|
||||
meta_screen_get_x_pixel (MetaScreen *screen,
|
||||
const PangoColor *color)
|
||||
{
|
||||
/* This code is derived from GTK+, (C) GTK+ Team */
|
||||
gulong pixel;
|
||||
|
||||
if (screen->visual_info.class == TrueColor ||
|
||||
screen->visual_info.class == DirectColor)
|
||||
{
|
||||
int red_prec, red_shift, green_prec, green_shift, blue_prec, blue_shift;
|
||||
|
||||
visual_decompose_mask (screen->visual_info.red_mask,
|
||||
&red_shift, &red_prec);
|
||||
visual_decompose_mask (screen->visual_info.green_mask,
|
||||
&green_shift, &green_prec);
|
||||
visual_decompose_mask (screen->visual_info.blue_mask,
|
||||
&blue_shift, &blue_prec);
|
||||
|
||||
pixel = (((color->red >> (16 - red_prec)) << red_shift) +
|
||||
((color->green >> (16 - green_prec)) << green_shift) +
|
||||
((color->blue >> (16 - blue_prec)) << blue_shift));
|
||||
}
|
||||
else
|
||||
{
|
||||
#define INTENSITY(r, g, b) ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)
|
||||
double r, g, b;
|
||||
|
||||
r = color->red / (double) 0xffff;
|
||||
g = color->green / (double) 0xffff;
|
||||
b = color->blue / (double) 0xffff;
|
||||
|
||||
/* Now this is a low-bloat GdkRGB replacement! */
|
||||
if (INTENSITY (r, g, b) > 0.5)
|
||||
pixel = WhitePixel (screen->display->xdisplay, screen->number);
|
||||
else
|
||||
pixel = BlackPixel (screen->display->xdisplay, screen->number);
|
||||
#undef INTENSITY
|
||||
}
|
||||
|
||||
return pixel;
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_set_ui_colors (MetaScreen *screen,
|
||||
const MetaUIColors *colors)
|
||||
{
|
||||
screen->colors = *colors;
|
||||
meta_screen_queue_frame_redraws (screen);
|
||||
}
|
||||
|
||||
/* Straight out of gtkstyle.c */
|
||||
static PangoColor meta_default_normal_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_active_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_prelight_fg = { 0, 0, 0 };
|
||||
static PangoColor meta_default_selected_fg = { 0xffff, 0xffff, 0xffff };
|
||||
static PangoColor meta_default_insensitive_fg = { 0x7530, 0x7530, 0x7530 };
|
||||
|
||||
static PangoColor meta_default_normal_bg = { 0xd6d6, 0xd6d6, 0xd6d6 };
|
||||
static PangoColor meta_default_active_bg = { 0xc350, 0xc350, 0xc350 };
|
||||
static PangoColor meta_default_prelight_bg = { 0xea60, 0xea60, 0xea60 };
|
||||
static PangoColor meta_default_selected_bg = { 0, 0, 0x9c40 };
|
||||
static PangoColor meta_default_insensitive_bg = { 0xd6d6, 0xd6d6, 0xd6d6 };
|
||||
|
||||
static void
|
||||
rgb_to_hls (gdouble *r,
|
||||
gdouble *g,
|
||||
gdouble *b)
|
||||
{
|
||||
gdouble min;
|
||||
gdouble max;
|
||||
gdouble red;
|
||||
gdouble green;
|
||||
gdouble blue;
|
||||
gdouble h, l, s;
|
||||
gdouble delta;
|
||||
|
||||
red = *r;
|
||||
green = *g;
|
||||
blue = *b;
|
||||
|
||||
if (red > green)
|
||||
{
|
||||
if (red > blue)
|
||||
max = red;
|
||||
else
|
||||
max = blue;
|
||||
|
||||
if (green < blue)
|
||||
min = green;
|
||||
else
|
||||
min = blue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (green > blue)
|
||||
max = green;
|
||||
else
|
||||
max = blue;
|
||||
|
||||
if (red < blue)
|
||||
min = red;
|
||||
else
|
||||
min = blue;
|
||||
}
|
||||
|
||||
l = (max + min) / 2;
|
||||
s = 0;
|
||||
h = 0;
|
||||
|
||||
if (max != min)
|
||||
{
|
||||
if (l <= 0.5)
|
||||
s = (max - min) / (max + min);
|
||||
else
|
||||
s = (max - min) / (2 - max - min);
|
||||
|
||||
delta = max -min;
|
||||
if (red == max)
|
||||
h = (green - blue) / delta;
|
||||
else if (green == max)
|
||||
h = 2 + (blue - red) / delta;
|
||||
else if (blue == max)
|
||||
h = 4 + (red - green) / delta;
|
||||
|
||||
h *= 60;
|
||||
if (h < 0.0)
|
||||
h += 360;
|
||||
}
|
||||
|
||||
*r = h;
|
||||
*g = l;
|
||||
*b = s;
|
||||
}
|
||||
|
||||
static void
|
||||
hls_to_rgb (gdouble *h,
|
||||
gdouble *l,
|
||||
gdouble *s)
|
||||
{
|
||||
gdouble hue;
|
||||
gdouble lightness;
|
||||
gdouble saturation;
|
||||
gdouble m1, m2;
|
||||
gdouble r, g, b;
|
||||
|
||||
lightness = *l;
|
||||
saturation = *s;
|
||||
|
||||
if (lightness <= 0.5)
|
||||
m2 = lightness * (1 + saturation);
|
||||
else
|
||||
m2 = lightness + saturation - lightness * saturation;
|
||||
m1 = 2 * lightness - m2;
|
||||
|
||||
if (saturation == 0)
|
||||
{
|
||||
*h = lightness;
|
||||
*l = lightness;
|
||||
*s = lightness;
|
||||
}
|
||||
else
|
||||
{
|
||||
hue = *h + 120;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
r = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
r = m2;
|
||||
else if (hue < 240)
|
||||
r = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
r = m1;
|
||||
|
||||
hue = *h;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
g = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
g = m2;
|
||||
else if (hue < 240)
|
||||
g = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
g = m1;
|
||||
|
||||
hue = *h - 120;
|
||||
while (hue > 360)
|
||||
hue -= 360;
|
||||
while (hue < 0)
|
||||
hue += 360;
|
||||
|
||||
if (hue < 60)
|
||||
b = m1 + (m2 - m1) * hue / 60;
|
||||
else if (hue < 180)
|
||||
b = m2;
|
||||
else if (hue < 240)
|
||||
b = m1 + (m2 - m1) * (240 - hue) / 60;
|
||||
else
|
||||
b = m1;
|
||||
|
||||
*h = r;
|
||||
*l = g;
|
||||
*s = b;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
style_shade (PangoColor *a,
|
||||
PangoColor *b,
|
||||
gdouble k)
|
||||
{
|
||||
gdouble red;
|
||||
gdouble green;
|
||||
gdouble blue;
|
||||
|
||||
red = (gdouble) a->red / 65535.0;
|
||||
green = (gdouble) a->green / 65535.0;
|
||||
blue = (gdouble) a->blue / 65535.0;
|
||||
|
||||
rgb_to_hls (&red, &green, &blue);
|
||||
|
||||
green *= k;
|
||||
if (green > 1.0)
|
||||
green = 1.0;
|
||||
else if (green < 0.0)
|
||||
green = 0.0;
|
||||
|
||||
blue *= k;
|
||||
if (blue > 1.0)
|
||||
blue = 1.0;
|
||||
else if (blue < 0.0)
|
||||
blue = 0.0;
|
||||
|
||||
hls_to_rgb (&red, &green, &blue);
|
||||
|
||||
b->red = red * 65535.0;
|
||||
b->green = green * 65535.0;
|
||||
b->blue = blue * 65535.0;
|
||||
}
|
||||
|
||||
#define LIGHTNESS_MULT 1.3
|
||||
#define DARKNESS_MULT 0.7
|
||||
void
|
||||
meta_screen_init_ui_colors (MetaScreen *screen)
|
||||
{
|
||||
int i;
|
||||
MetaUIColors *colors;
|
||||
|
||||
colors = &screen->colors;
|
||||
|
||||
colors->fg[META_STATE_NORMAL] = meta_default_normal_fg;
|
||||
colors->fg[META_STATE_ACTIVE] = meta_default_active_fg;
|
||||
colors->fg[META_STATE_PRELIGHT] = meta_default_prelight_fg;
|
||||
colors->fg[META_STATE_SELECTED] = meta_default_selected_fg;
|
||||
colors->fg[META_STATE_INSENSITIVE] = meta_default_insensitive_fg;
|
||||
|
||||
colors->bg[META_STATE_NORMAL] = meta_default_normal_bg;
|
||||
colors->bg[META_STATE_ACTIVE] = meta_default_active_bg;
|
||||
colors->bg[META_STATE_PRELIGHT] = meta_default_prelight_bg;
|
||||
colors->bg[META_STATE_SELECTED] = meta_default_selected_bg;
|
||||
colors->bg[META_STATE_INSENSITIVE] = meta_default_insensitive_bg;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
colors->text[i] = colors->fg[i];
|
||||
colors->base[i].red = G_MAXUSHORT;
|
||||
colors->base[i].green = G_MAXUSHORT;
|
||||
colors->base[i].blue = G_MAXUSHORT;
|
||||
}
|
||||
|
||||
colors->base[META_STATE_SELECTED] = meta_default_selected_bg;
|
||||
colors->base[META_STATE_INSENSITIVE] = meta_default_prelight_bg;
|
||||
colors->text[META_STATE_INSENSITIVE] = meta_default_insensitive_fg;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
style_shade (&colors->bg[i], &colors->light[i], LIGHTNESS_MULT);
|
||||
style_shade (&colors->bg[i], &colors->dark[i], DARKNESS_MULT);
|
||||
|
||||
colors->mid[i].red = (colors->light[i].red + colors->dark[i].red) / 2;
|
||||
colors->mid[i].green = (colors->light[i].green + colors->dark[i].green) / 2;
|
||||
colors->mid[i].blue = (colors->light[i].blue + colors->dark[i].blue) / 2;
|
||||
|
||||
colors->text_aa[i].red = (colors->text[i].red + colors->base[i].red) / 2;
|
||||
colors->text_aa[i].green = (colors->text[i].green + colors->base[i].green) / 2;
|
||||
colors->text_aa[i].blue = (colors->text[i].blue + colors->base[i].blue) / 2;
|
||||
}
|
||||
}
|
1024
src/compositor.c
1024
src/compositor.c
File diff suppressed because it is too large
Load Diff
@@ -1,92 +0,0 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity compositing manager */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2003 Red Hat, Inc.
|
||||
*
|
||||
* 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 META_COMPOSITOR_H
|
||||
#define META_COMPOSITOR_H
|
||||
|
||||
#include "util.h"
|
||||
#include "display.h"
|
||||
#include "spring-model.h"
|
||||
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
#include "cm/deform.h"
|
||||
/* FIXME: Needs namespacing. */
|
||||
void get_patch_points (Model *model, CmPoint points[4][4]);
|
||||
#endif
|
||||
|
||||
typedef void (* MetaAnimationFinishedFunc) (gpointer data);
|
||||
|
||||
/* XXX namespace me */
|
||||
void compute_window_rect (MetaWindow *window, MetaRectangle *rect);
|
||||
|
||||
MetaCompositor* meta_compositor_new (MetaDisplay *display);
|
||||
void meta_compositor_unref (MetaCompositor *compositor);
|
||||
void meta_compositor_process_event (MetaCompositor *compositor,
|
||||
XEvent *xevent,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_add_window (MetaCompositor *compositor,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
void meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
void meta_compositor_set_debug_updates (MetaCompositor *compositor,
|
||||
gboolean debug_updates);
|
||||
|
||||
void meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
|
||||
#if 0
|
||||
void meta_compositor_minimize (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x,
|
||||
int y,
|
||||
int width,
|
||||
int height,
|
||||
MetaAnimationFinishedFunc finished_cb,
|
||||
gpointer finished_data);
|
||||
#endif
|
||||
|
||||
void
|
||||
meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates);
|
||||
void
|
||||
meta_compositor_destroy (MetaCompositor *compositor);
|
||||
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x, int grab_y);
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x, int y);
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
|
||||
#endif /* META_COMPOSITOR_H */
|
54
src/compositor/compositor-private.h
Normal file
54
src/compositor/compositor-private.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* 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 META_COMPOSITOR_PRIVATE_H
|
||||
#define META_COMPOSITOR_PRIVATE_H
|
||||
|
||||
#include "compositor.h"
|
||||
|
||||
struct _MetaCompositor
|
||||
{
|
||||
void (* destroy) (MetaCompositor *compositor);
|
||||
|
||||
void (*manage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*unmanage_screen) (MetaCompositor *compositor,
|
||||
MetaScreen *screen);
|
||||
void (*add_window) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs);
|
||||
void (*remove_window) (MetaCompositor *compositor,
|
||||
Window xwindow);
|
||||
void (*set_updates) (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean update);
|
||||
void (*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);
|
||||
};
|
||||
|
||||
#endif
|
3073
src/compositor/compositor-xrender.c
Normal file
3073
src/compositor/compositor-xrender.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/* Metacity fixed tooltip routine */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2007 Iain Holmes
|
||||
* Based on xcompmgr - (c) 2003 Keith Packard
|
||||
* xfwm4 - (c) 2005-2007 Olivier Fourdan
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
@@ -21,16 +21,11 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_FIXED_TIP_H
|
||||
#define META_FIXED_TIP_H
|
||||
#ifndef META_COMPOSITOR_XRENDER_H_
|
||||
#define META_COMPOSITOR_XRENDER_H_
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
void meta_fixed_tip_show (Display *xdisplay, int screen_number,
|
||||
int root_x, int root_y,
|
||||
const char *markup_text);
|
||||
void meta_fixed_tip_hide (void);
|
||||
#include "types.h"
|
||||
|
||||
MetaCompositor *meta_compositor_xrender_new (MetaDisplay *display);
|
||||
|
||||
#endif
|
159
src/compositor/compositor.c
Normal file
159
src/compositor/compositor.c
Normal file
@@ -0,0 +1,159 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Iain Holmes
|
||||
*
|
||||
* 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 "compositor-private.h"
|
||||
#include "compositor-xrender.h"
|
||||
|
||||
MetaCompositor *
|
||||
meta_compositor_new (MetaDisplay *display)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
/* At some point we would have a way to select between backends */
|
||||
return meta_compositor_xrender_new (display);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_destroy (MetaCompositor *compositor)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->destroy)
|
||||
compositor->destroy (compositor);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_add_window (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
Window xwindow,
|
||||
XWindowAttributes *attrs)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->add_window)
|
||||
compositor->add_window (compositor, window, xwindow, attrs);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_remove_window (MetaCompositor *compositor,
|
||||
Window xwindow)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->remove_window)
|
||||
compositor->remove_window (compositor, xwindow);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_manage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->manage_screen)
|
||||
compositor->manage_screen (compositor, screen);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_unmanage_screen (MetaCompositor *compositor,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->unmanage_screen)
|
||||
compositor->unmanage_screen (compositor, screen);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_updates (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
gboolean updates)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_updates)
|
||||
compositor->set_updates (compositor, window, updates);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
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);
|
||||
#endif
|
||||
}
|
||||
|
||||
Pixmap
|
||||
meta_compositor_get_window_pixmap (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->get_window_pixmap)
|
||||
return compositor->get_window_pixmap (compositor, window);
|
||||
else
|
||||
return None;
|
||||
#else
|
||||
return None;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_set_active_window (MetaCompositor *compositor,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_COMPOSITE_EXTENSIONS
|
||||
if (compositor && compositor->set_active_window)
|
||||
compositor->set_active_window (compositor, screen, window);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* These functions are unused at the moment */
|
||||
void meta_compositor_begin_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
MetaRectangle *initial,
|
||||
int grab_x,
|
||||
int grab_y)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_update_move (MetaCompositor *compositor,
|
||||
MetaWindow *window,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_end_move (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
}
|
||||
|
||||
void meta_compositor_free_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
}
|
166
src/core/atomnames.h
Normal file
166
src/core/atomnames.h
Normal file
@@ -0,0 +1,166 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003, 2004 Red Hat, Inc.
|
||||
* Copyright (C) 2003, 2004 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2008 Thomas Thurman
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file atomnames.h A list of atom names.
|
||||
*
|
||||
* This is a list of the names of all the X atoms that Metacity uses.
|
||||
* Each is wrapped in a macro "item()" which is undefined here; the
|
||||
* idea is that when you need to make a big list of all the X atoms,
|
||||
* you can define item(), include this file, and then undefine it
|
||||
* again.
|
||||
*
|
||||
* If you also define EWMH_ATOMS_ONLY then you will only get _NET_WM_*
|
||||
* atoms rather than all of them.
|
||||
*/
|
||||
|
||||
#ifndef item
|
||||
#error "item(x) must be defined when you include atomnames.h"
|
||||
#endif
|
||||
|
||||
#ifndef EWMH_ATOMS_ONLY
|
||||
|
||||
item(WM_PROTOCOLS)
|
||||
item(WM_TAKE_FOCUS)
|
||||
item(WM_DELETE_WINDOW)
|
||||
item(WM_STATE)
|
||||
item(_MOTIF_WM_HINTS)
|
||||
item(WM_CHANGE_STATE)
|
||||
item(SM_CLIENT_ID)
|
||||
item(WM_CLIENT_LEADER)
|
||||
item(WM_WINDOW_ROLE)
|
||||
item(UTF8_STRING)
|
||||
item(WM_ICON_SIZE)
|
||||
item(_KWM_WIN_ICON)
|
||||
item(_METACITY_RESTART_MESSAGE)
|
||||
item(_METACITY_RELOAD_THEME_MESSAGE)
|
||||
item(_METACITY_SET_KEYBINDINGS_MESSAGE)
|
||||
item(_METACITY_TOGGLE_VERBOSE)
|
||||
item(_GNOME_PANEL_ACTION)
|
||||
item(_GNOME_PANEL_ACTION_MAIN_MENU)
|
||||
item(_GNOME_PANEL_ACTION_RUN_DIALOG)
|
||||
item(_METACITY_SENTINEL)
|
||||
item(_METACITY_VERSION)
|
||||
item(WM_CLIENT_MACHINE)
|
||||
item(MANAGER)
|
||||
item(TARGETS)
|
||||
item(MULTIPLE)
|
||||
item(TIMESTAMP)
|
||||
item(VERSION)
|
||||
item(ATOM_PAIR)
|
||||
|
||||
/* Oddities: These are used, and we need atoms for them,
|
||||
* but when we need all _NET_WM hints (i.e. when we're making
|
||||
* lists of which _NET_WM hints we support in order to advertise
|
||||
* it) we haven't historically listed them. I don't know what
|
||||
* the reason for this is. It may be a bug.
|
||||
*/
|
||||
item(_NET_WM_SYNC_REQUEST)
|
||||
item(_NET_WM_SYNC_REQUEST_COUNTER)
|
||||
item(_NET_WM_VISIBLE_NAME)
|
||||
item(_NET_WM_VISIBLE_ICON_NAME)
|
||||
item(_NET_SUPPORTING_WM_CHECK)
|
||||
|
||||
/* But I suppose it's quite reasonable not to advertise using
|
||||
* _NET_SUPPORTED that we support _NET_SUPPORTED :)
|
||||
*/
|
||||
item(_NET_SUPPORTED)
|
||||
|
||||
#endif /* !EWMH_ATOMS_ONLY */
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
item(_NET_WM_NAME)
|
||||
item(_NET_CLOSE_WINDOW)
|
||||
item(_NET_WM_STATE)
|
||||
item(_NET_WM_STATE_SHADED)
|
||||
item(_NET_WM_STATE_MAXIMIZED_HORZ)
|
||||
item(_NET_WM_STATE_MAXIMIZED_VERT)
|
||||
item(_NET_WM_DESKTOP)
|
||||
item(_NET_NUMBER_OF_DESKTOPS)
|
||||
item(_NET_CURRENT_DESKTOP)
|
||||
item(_NET_WM_WINDOW_TYPE)
|
||||
item(_NET_WM_WINDOW_TYPE_DESKTOP)
|
||||
item(_NET_WM_WINDOW_TYPE_DOCK)
|
||||
item(_NET_WM_WINDOW_TYPE_TOOLBAR)
|
||||
item(_NET_WM_WINDOW_TYPE_MENU)
|
||||
item(_NET_WM_WINDOW_TYPE_DIALOG)
|
||||
item(_NET_WM_WINDOW_TYPE_NORMAL)
|
||||
item(_NET_WM_STATE_MODAL)
|
||||
item(_NET_CLIENT_LIST)
|
||||
item(_NET_CLIENT_LIST_STACKING)
|
||||
item(_NET_WM_STATE_SKIP_TASKBAR)
|
||||
item(_NET_WM_STATE_SKIP_PAGER)
|
||||
item(_NET_WM_ICON_NAME)
|
||||
item(_NET_WM_ICON)
|
||||
item(_NET_WM_ICON_GEOMETRY)
|
||||
item(_NET_WM_MOVERESIZE)
|
||||
item(_NET_ACTIVE_WINDOW)
|
||||
item(_NET_WM_STRUT)
|
||||
item(_NET_WM_STATE_HIDDEN)
|
||||
item(_NET_WM_WINDOW_TYPE_UTILITY)
|
||||
item(_NET_WM_WINDOW_TYPE_SPLASH)
|
||||
item(_NET_WM_STATE_FULLSCREEN)
|
||||
item(_NET_WM_PING)
|
||||
item(_NET_WM_PID)
|
||||
item(_NET_WORKAREA)
|
||||
item(_NET_SHOWING_DESKTOP)
|
||||
item(_NET_DESKTOP_LAYOUT)
|
||||
item(_NET_DESKTOP_NAMES)
|
||||
item(_NET_WM_ALLOWED_ACTIONS)
|
||||
item(_NET_WM_ACTION_MOVE)
|
||||
item(_NET_WM_ACTION_RESIZE)
|
||||
item(_NET_WM_ACTION_SHADE)
|
||||
item(_NET_WM_ACTION_STICK)
|
||||
item(_NET_WM_ACTION_MAXIMIZE_HORZ)
|
||||
item(_NET_WM_ACTION_MAXIMIZE_VERT)
|
||||
item(_NET_WM_ACTION_CHANGE_DESKTOP)
|
||||
item(_NET_WM_ACTION_CLOSE)
|
||||
item(_NET_WM_STATE_ABOVE)
|
||||
item(_NET_WM_STATE_BELOW)
|
||||
item(_NET_STARTUP_ID)
|
||||
item(_NET_WM_STRUT_PARTIAL)
|
||||
item(_NET_WM_ACTION_FULLSCREEN)
|
||||
item(_NET_WM_ACTION_MINIMIZE)
|
||||
item(_NET_FRAME_EXTENTS)
|
||||
item(_NET_REQUEST_FRAME_EXTENTS)
|
||||
item(_NET_WM_USER_TIME)
|
||||
item(_NET_WM_STATE_DEMANDS_ATTENTION)
|
||||
item(_NET_MOVERESIZE_WINDOW)
|
||||
item(_NET_DESKTOP_GEOMETRY)
|
||||
item(_NET_DESKTOP_VIEWPORT)
|
||||
item(_NET_WM_USER_TIME_WINDOW)
|
||||
item(_NET_WM_ACTION_ABOVE)
|
||||
item(_NET_WM_ACTION_BELOW)
|
||||
item(_NET_WM_STATE_STICKY)
|
||||
item(_NET_WM_FULLSCREEN_MONITORS)
|
||||
|
||||
#if 0
|
||||
/* We apparently never use: */
|
||||
/* item(_NET_RESTACK_WINDOW) */
|
||||
#endif
|
||||
|
||||
/* eof atomnames.h */
|
||||
|
@@ -22,13 +22,57 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file bell.c Ring the bell or flash the screen
|
||||
*
|
||||
* Sometimes, X programs "ring the bell", whatever that means. Metacity lets
|
||||
* the user configure the bell to be audible or visible (aka visual), and
|
||||
* if it's visual it can be configured to be frame-flash or fullscreen-flash.
|
||||
* We never get told about audible bells; X handles them just fine by itself.
|
||||
*
|
||||
* Visual bells come in at meta_bell_notify(), which checks we are actually
|
||||
* in visual mode and calls through to bell_visual_notify(). That
|
||||
* function then checks what kind of visual flash you like, and calls either
|
||||
* bell_flash_fullscreen()-- which calls bell_flash_screen() to do
|
||||
* its work-- or bell_flash_frame(), which flashes the focussed window
|
||||
* using bell_flash_window_frame(), unless there is no such window, in
|
||||
* which case it flashes the screen instead. bell_flash_window_frame()
|
||||
* flashes the frame and calls bell_unflash_frame() as a timeout to
|
||||
* remove the flash.
|
||||
*
|
||||
* The visual bell was the result of a discussion in Bugzilla here:
|
||||
* <http://bugzilla.gnome.org/show_bug.cgi?id=99886>.
|
||||
*
|
||||
* Several of the functions in this file are ifdeffed out entirely if we are
|
||||
* found not to have the XKB extension, which is required to do these clever
|
||||
* things with bells; some others are entirely no-ops in that case.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "bell.h"
|
||||
#include "screen.h"
|
||||
#include "screen-private.h"
|
||||
#include "prefs.h"
|
||||
|
||||
/**
|
||||
* Flashes one entire screen. This is done by making a window the size of the
|
||||
* whole screen (or reusing the old one, if it's still around), mapping it,
|
||||
* painting it white and then black, and then unmapping it. We set saveunder so
|
||||
* that all the windows behind it come back immediately.
|
||||
*
|
||||
* Unlike frame flashes, we don't do fullscreen flashes with a timeout; rather,
|
||||
* we do them in one go, because we don't have to rely on the theme code
|
||||
* redrawing the frame for us in order to do the flash.
|
||||
*
|
||||
* \param display The display which owns the screen (rather redundant)
|
||||
* \param screen The screen to flash
|
||||
*
|
||||
* \bug The way I read it, this appears not to do the flash
|
||||
* the first time we flash a particular display. Am I wrong?
|
||||
*
|
||||
* \bug This appears to destroy our current XSync status.
|
||||
*/
|
||||
static void
|
||||
meta_bell_flash_screen (MetaDisplay *display,
|
||||
bell_flash_screen (MetaDisplay *display,
|
||||
MetaScreen *screen)
|
||||
{
|
||||
Window root = screen->xroot;
|
||||
@@ -89,9 +133,19 @@ meta_bell_flash_screen (MetaDisplay *display,
|
||||
XFlush (display->xdisplay);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flashes one screen, or all screens, in response to a bell event.
|
||||
* If the event is on a particular window, flash the screen that
|
||||
* window is on. Otherwise, flash every screen on this display.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
*
|
||||
* \param display The display the event came in on
|
||||
* \param xkb_ev The bell event
|
||||
*/
|
||||
#ifdef HAVE_XKB
|
||||
static void
|
||||
meta_bell_flash_fullscreen (MetaDisplay *display,
|
||||
bell_flash_fullscreen (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
XkbBellNotifyEvent *xkb_bell_ev = (XkbBellNotifyEvent *) xkb_ev;
|
||||
@@ -102,7 +156,7 @@ meta_bell_flash_fullscreen (MetaDisplay *display,
|
||||
{
|
||||
screen = meta_display_screen_for_xwindow (display, xkb_bell_ev->window);
|
||||
if (screen)
|
||||
meta_bell_flash_screen (display, screen);
|
||||
bell_flash_screen (display, screen);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -110,14 +164,28 @@ meta_bell_flash_fullscreen (MetaDisplay *display,
|
||||
while (screen_list)
|
||||
{
|
||||
screen = (MetaScreen *) screen_list->data;
|
||||
meta_bell_flash_screen (display, screen);
|
||||
bell_flash_screen (display, screen);
|
||||
screen_list = screen_list->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a frame be not flashed; this is the timeout half of
|
||||
* bell_flash_window_frame(). This is done simply by clearing the
|
||||
* flash flag and queuing a redraw of the frame.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
*
|
||||
* \param data The frame to unflash, cast to a gpointer so it can go into
|
||||
* a callback function.
|
||||
* \return Always FALSE, so we don't get called again.
|
||||
*
|
||||
* \bug This is the parallel to bell_flash_window_frame(), so it should
|
||||
* really be called meta_bell_unflash_window_frame().
|
||||
*/
|
||||
static gboolean
|
||||
meta_bell_unflash_frame (gpointer data)
|
||||
bell_unflash_frame (gpointer data)
|
||||
{
|
||||
MetaFrame *frame = (MetaFrame *) data;
|
||||
frame->is_flashing = 0;
|
||||
@@ -125,18 +193,36 @@ meta_bell_unflash_frame (gpointer data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a frame flash and then return to normal shortly afterwards.
|
||||
* This is done by setting a flag so that the theme
|
||||
* code will temporarily draw the frame as focussed if it's unfocussed and
|
||||
* vice versa, and then queueing a redraw. Lastly, we create a timeout so
|
||||
* that the flag can be unset and the frame re-redrawn.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
*
|
||||
* \param window The window to flash
|
||||
*/
|
||||
static void
|
||||
meta_bell_flash_window_frame (MetaWindow *window)
|
||||
bell_flash_window_frame (MetaWindow *window)
|
||||
{
|
||||
g_assert (window->frame != NULL);
|
||||
window->frame->is_flashing = 1;
|
||||
meta_frame_queue_draw (window->frame);
|
||||
g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, 100,
|
||||
meta_bell_unflash_frame, window->frame, NULL);
|
||||
bell_unflash_frame, window->frame, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flashes the frame of the focussed window. If there is no focussed window,
|
||||
* flashes the screen.
|
||||
*
|
||||
* \param display The display the bell event came in on
|
||||
* \param xkb_ev The bell event we just received
|
||||
*/
|
||||
static void
|
||||
meta_bell_flash_frame (MetaDisplay *display,
|
||||
bell_flash_frame (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent *) xkb_ev;
|
||||
@@ -150,25 +236,36 @@ meta_bell_flash_frame (MetaDisplay *display,
|
||||
}
|
||||
if (window)
|
||||
{
|
||||
meta_bell_flash_window_frame (window);
|
||||
bell_flash_window_frame (window);
|
||||
}
|
||||
else /* revert to fullscreen flash if there's no focussed window */
|
||||
{
|
||||
meta_bell_flash_fullscreen (display, xkb_ev);
|
||||
bell_flash_fullscreen (display, xkb_ev);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the user some kind of visual bell substitute, in response to a
|
||||
* bell event. What this is depends on the "visual bell type" pref.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
*
|
||||
* \param display The display the bell event came in on
|
||||
* \param xkb_ev The bell event we just received
|
||||
*
|
||||
* \bug This should be merged with meta_bell_notify().
|
||||
*/
|
||||
static void
|
||||
meta_bell_visual_notify (MetaDisplay *display,
|
||||
bell_visual_notify (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
switch (meta_prefs_get_visual_bell_type ())
|
||||
{
|
||||
case META_VISUAL_BELL_FULLSCREEN_FLASH:
|
||||
meta_bell_flash_fullscreen (display, xkb_ev);
|
||||
bell_flash_fullscreen (display, xkb_ev);
|
||||
break;
|
||||
case META_VISUAL_BELL_FRAME_FLASH:
|
||||
meta_bell_flash_frame (display, xkb_ev); /* does nothing yet */
|
||||
bell_flash_frame (display, xkb_ev); /* does nothing yet */
|
||||
break;
|
||||
case META_VISUAL_BELL_INVALID:
|
||||
/* do nothing */
|
||||
@@ -182,9 +279,9 @@ meta_bell_notify (MetaDisplay *display,
|
||||
{
|
||||
/* flash something */
|
||||
if (meta_prefs_get_visual_bell ())
|
||||
meta_bell_visual_notify (display, xkb_ev);
|
||||
bell_visual_notify (display, xkb_ev);
|
||||
}
|
||||
#endif
|
||||
#endif /* HAVE_XKB */
|
||||
|
||||
void
|
||||
meta_bell_set_audible (MetaDisplay *display, gboolean audible)
|
||||
@@ -250,6 +347,14 @@ meta_bell_shutdown (MetaDisplay *display)
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Deals with a frame being destroyed. This is important because if we're
|
||||
* using a visual bell, we might be flashing the edges of the frame, and
|
||||
* so we'd have a timeout function waiting ready to un-flash them. If the
|
||||
* frame's going away, we can tell the timeout not to bother.
|
||||
*
|
||||
* \param frame The frame which is being destroyed
|
||||
*/
|
||||
void
|
||||
meta_bell_notify_frame_destroy (MetaFrame *frame)
|
||||
{
|
108
src/core/bell.h
Normal file
108
src/core/bell.h
Normal file
@@ -0,0 +1,108 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/**
|
||||
* \file bell.h Ring the bell or flash the screen
|
||||
*
|
||||
* Sometimes, X programs "ring the bell", whatever that means. Metacity lets
|
||||
* the user configure the bell to be audible or visible (aka visual), and
|
||||
* if it's visual it can be configured to be frame-flash or fullscreen-flash.
|
||||
* We never get told about audible bells; X handles them just fine by itself.
|
||||
*
|
||||
* The visual bell was the result of a discussion in Bugzilla here:
|
||||
* <http://bugzilla.gnome.org/show_bug.cgi?id=99886>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2002 Sun Microsystems Inc.
|
||||
*
|
||||
* 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 <X11/Xlib.h>
|
||||
#ifdef HAVE_XKB
|
||||
#include <X11/XKBlib.h>
|
||||
#endif
|
||||
#include "display-private.h"
|
||||
#include "frame-private.h"
|
||||
|
||||
#ifdef HAVE_XKB
|
||||
/**
|
||||
* Gives the user some kind of visual bell; in fact, this is our response
|
||||
* to any kind of bell request, but we set it up so that we only get
|
||||
* notified about visual bells, and X deals with audible ones.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
*
|
||||
* \param display The display the bell event came in on
|
||||
* \param xkb_ev The bell event we just received
|
||||
*/
|
||||
void meta_bell_notify (MetaDisplay *display, XkbAnyEvent *xkb_ev);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Turns the bell to audible or visual. This tells X what to do, but
|
||||
* not Metacity; you will need to set the "visual bell" pref for that.
|
||||
*
|
||||
* If the configure script found we had no XKB, this is a no-op.
|
||||
*
|
||||
* \param display The display we're configuring
|
||||
* \param audible True for an audible bell, false for a visual bell
|
||||
*/
|
||||
void meta_bell_set_audible (MetaDisplay *display, gboolean audible);
|
||||
|
||||
/**
|
||||
* Initialises the bell subsystem. This involves intialising
|
||||
* XKB (which, despite being a keyboard extension, is the
|
||||
* place to look for bell notifications), then asking it
|
||||
* to send us bell notifications, and then also switching
|
||||
* off the audible bell if we're using a visual one ourselves.
|
||||
*
|
||||
* Unlike most X extensions we use, we only initialise XKB here
|
||||
* (rather than in main()). It's possible that XKB is not
|
||||
* installed at all, but if that was known at build time
|
||||
* we will have HAVE_XKB undefined, which will cause this
|
||||
* function to be a no-op.
|
||||
*
|
||||
* \param display The display which is opening
|
||||
*
|
||||
* \bug There is a line of code that's never run that tells
|
||||
* XKB to reset the bell status after we quit. Bill H said
|
||||
* (<http://bugzilla.gnome.org/show_bug.cgi?id=99886#c12>)
|
||||
* that XFree86's implementation is broken so we shouldn't
|
||||
* call it, but that was in 2002. Is it working now?
|
||||
*/
|
||||
gboolean meta_bell_init (MetaDisplay *display);
|
||||
|
||||
/**
|
||||
* Shuts down the bell subsystem.
|
||||
*
|
||||
* \param display The display which is closing
|
||||
*
|
||||
* \bug This is never called! If we had XkbSetAutoResetControls
|
||||
* enabled in meta_bell_init(), this wouldn't be a problem, but
|
||||
* we don't.
|
||||
*/
|
||||
void meta_bell_shutdown (MetaDisplay *display);
|
||||
|
||||
/**
|
||||
* Deals with a frame being destroyed. This is important because if we're
|
||||
* using a visual bell, we might be flashing the edges of the frame, and
|
||||
* so we'd have a timeout function waiting ready to un-flash them. If the
|
||||
* frame's going away, we can tell the timeout not to bother.
|
||||
*
|
||||
* \param frame The frame which is being destroyed
|
||||
*/
|
||||
void meta_bell_notify_frame_destroy (MetaFrame *frame);
|
@@ -29,7 +29,6 @@
|
||||
#include "boxes.h"
|
||||
#include "util.h"
|
||||
#include <X11/Xutil.h> /* Just for the definition of the various gravities */
|
||||
#include <stdio.h> /* For snprintf */
|
||||
|
||||
char*
|
||||
meta_rectangle_to_string (const MetaRectangle *rect,
|
||||
@@ -61,7 +60,7 @@ meta_rectangle_region_to_string (GList *region,
|
||||
char *cur = output;
|
||||
|
||||
if (region == NULL)
|
||||
snprintf (output, 10, "(EMPTY)");
|
||||
g_snprintf (output, 10, "(EMPTY)");
|
||||
|
||||
while (tmp)
|
||||
{
|
||||
@@ -114,7 +113,7 @@ meta_rectangle_edge_list_to_string (GList *edge_list,
|
||||
GList *tmp = edge_list;
|
||||
|
||||
if (edge_list == NULL)
|
||||
snprintf (output, 10, "(EMPTY)");
|
||||
g_snprintf (output, 10, "(EMPTY)");
|
||||
|
||||
while (tmp)
|
||||
{
|
||||
@@ -198,6 +197,40 @@ meta_rectangle_equal (const MetaRectangle *src1,
|
||||
(src1->height == src2->height));
|
||||
}
|
||||
|
||||
void
|
||||
meta_rectangle_union (const MetaRectangle *rect1,
|
||||
const MetaRectangle *rect2,
|
||||
MetaRectangle *dest)
|
||||
{
|
||||
int dest_x, dest_y;
|
||||
int dest_w, dest_h;
|
||||
|
||||
dest_x = rect1->x;
|
||||
dest_y = rect1->y;
|
||||
dest_w = rect1->width;
|
||||
dest_h = rect1->height;
|
||||
|
||||
if (rect2->x < dest_x)
|
||||
{
|
||||
dest_w += dest_x - rect2->x;
|
||||
dest_x = rect2->x;
|
||||
}
|
||||
if (rect2->y < dest_y)
|
||||
{
|
||||
dest_h += dest_y - rect2->y;
|
||||
dest_y = rect2->y;
|
||||
}
|
||||
if (rect2->x + rect2->width > dest_x + dest_w)
|
||||
dest_w = rect2->x + rect2->width - dest_x;
|
||||
if (rect2->y + rect2->height > dest_y + dest_h)
|
||||
dest_h = rect2->y + rect2->height - dest_y;
|
||||
|
||||
dest->x = dest_x;
|
||||
dest->y = dest_y;
|
||||
dest->width = dest_w;
|
||||
dest->height = dest_h;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_rectangle_overlap (const MetaRectangle *rect1,
|
||||
const MetaRectangle *rect2)
|
@@ -91,7 +91,7 @@
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PRIORITY_MINIMUM = 0, // Dummy value used for loop start = min(all priorities)
|
||||
PRIORITY_MINIMUM = 0, /* Dummy value used for loop start = min(all priorities) */
|
||||
PRIORITY_ASPECT_RATIO = 0,
|
||||
PRIORITY_ENTIRELY_VISIBLE_ON_SINGLE_XINERAMA = 0,
|
||||
PRIORITY_ENTIRELY_VISIBLE_ON_WORKAREA = 1,
|
||||
@@ -101,7 +101,7 @@ typedef enum
|
||||
PRIORITY_SIZE_HINTS_LIMITS = 3,
|
||||
PRIORITY_TITLEBAR_VISIBLE = 4,
|
||||
PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA = 4,
|
||||
PRIORITY_MAXIMUM = 4 // Dummy value used for loop end = max(all priorities)
|
||||
PRIORITY_MAXIMUM = 4 /* Dummy value used for loop end = max(all priorities) */
|
||||
} ConstraintPriority;
|
||||
|
||||
typedef enum
|
||||
@@ -392,7 +392,27 @@ setup_constraint_info (ConstraintInfo *info,
|
||||
meta_window_get_work_area_for_xinerama (window,
|
||||
xinerama_info->number,
|
||||
&info->work_area_xinerama);
|
||||
info->entire_xinerama = xinerama_info->rect;
|
||||
|
||||
if (!window->fullscreen || window->fullscreen_monitors[0] == -1)
|
||||
{
|
||||
info->entire_xinerama = xinerama_info->rect;
|
||||
}
|
||||
else
|
||||
{
|
||||
int i = 0;
|
||||
long monitor;
|
||||
|
||||
monitor = window->fullscreen_monitors[i];
|
||||
info->entire_xinerama =
|
||||
window->screen->xinerama_infos[monitor].rect;
|
||||
for (i = 1; i <= 3; i++)
|
||||
{
|
||||
monitor = window->fullscreen_monitors[i];
|
||||
meta_rectangle_union (&info->entire_xinerama,
|
||||
&window->screen->xinerama_infos[monitor].rect,
|
||||
&info->entire_xinerama);
|
||||
}
|
||||
}
|
||||
|
||||
cur_workspace = window->screen->active_workspace;
|
||||
info->usable_screen_region =
|
||||
@@ -784,7 +804,9 @@ constrain_fullscreen (MetaWindow *window,
|
||||
/* Determine whether constraint applies; exit if it doesn't */
|
||||
if (!window->fullscreen)
|
||||
return TRUE;
|
||||
|
||||
xinerama = info->entire_xinerama;
|
||||
|
||||
get_size_limits (window, info->fgeom, FALSE, &min_size, &max_size);
|
||||
too_big = !meta_rectangle_could_fit_rect (&xinerama, &min_size);
|
||||
too_small = !meta_rectangle_could_fit_rect (&max_size, &xinerama);
|
||||
@@ -811,6 +833,7 @@ constrain_size_increments (MetaWindow *window,
|
||||
int bh, hi, bw, wi, extra_height, extra_width;
|
||||
int new_width, new_height;
|
||||
gboolean constraint_already_satisfied;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_SIZE_HINTS_INCREMENTS)
|
||||
return TRUE;
|
||||
@@ -852,8 +875,16 @@ constrain_size_increments (MetaWindow *window,
|
||||
if (new_height < window->size_hints.min_height)
|
||||
new_height += ((window->size_hints.min_height - new_height)/hi + 1)*hi;
|
||||
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
/* Resize to the new size */
|
||||
meta_rectangle_resize_with_gravity (&info->orig,
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
@@ -870,6 +901,7 @@ constrain_size_limits (MetaWindow *window,
|
||||
MetaRectangle min_size, max_size;
|
||||
gboolean too_big, too_small, constraint_already_satisfied;
|
||||
int new_width, new_height;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_SIZE_HINTS_LIMITS)
|
||||
return TRUE;
|
||||
@@ -898,7 +930,16 @@ constrain_size_limits (MetaWindow *window,
|
||||
/*** Enforce constraint ***/
|
||||
new_width = CLAMP (info->current.width, min_size.width, max_size.width);
|
||||
new_height = CLAMP (info->current.height, min_size.height, max_size.height);
|
||||
meta_rectangle_resize_with_gravity (&info->orig,
|
||||
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
@@ -917,6 +958,7 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
int fudge, new_width, new_height;
|
||||
double best_width, best_height;
|
||||
double alt_width, alt_height;
|
||||
MetaRectangle *start_rect;
|
||||
|
||||
if (priority > PRIORITY_ASPECT_RATIO)
|
||||
return TRUE;
|
||||
@@ -1022,7 +1064,15 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
break;
|
||||
}
|
||||
|
||||
meta_rectangle_resize_with_gravity (&info->orig,
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
if (info->action_type == ACTION_MOVE_AND_RESIZE)
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
@@ -1042,13 +1092,16 @@ do_screen_and_xinerama_relative_constraints (
|
||||
MetaRectangle how_far_it_can_be_smushed, min_size, max_size;
|
||||
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
/* First, log some debugging information */
|
||||
char spanning_region[1 + 28 * g_list_length (region_spanning_rectangles)];
|
||||
if (meta_is_verbose ())
|
||||
{
|
||||
/* First, log some debugging information */
|
||||
char spanning_region[1 + 28 * g_list_length (region_spanning_rectangles)];
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"screen/xinerama constraint; region_spanning_rectangles: %s\n",
|
||||
meta_rectangle_region_to_string (region_spanning_rectangles, ", ",
|
||||
spanning_region));
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"screen/xinerama constraint; region_spanning_rectangles: %s\n",
|
||||
meta_rectangle_region_to_string (region_spanning_rectangles, ", ",
|
||||
spanning_region));
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Determine whether constraint applies; exit if it doesn't */
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user