Compare commits
1001 Commits
3.7.3
...
wip/resize
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ffe7b5e7d8 | ||
![]() |
91384a32b4 | ||
![]() |
72bd5fb814 | ||
![]() |
46af3ef9f6 | ||
![]() |
d417c615d5 | ||
![]() |
46cbd0bf48 | ||
![]() |
f3b6fead4d | ||
![]() |
80de8ec643 | ||
![]() |
4f7e2a9f3f | ||
![]() |
701e06d55d | ||
![]() |
94f39a493f | ||
![]() |
ddc171220a | ||
![]() |
0313b38dd6 | ||
![]() |
d41fba6558 | ||
![]() |
770b58b367 | ||
![]() |
77838c2ca3 | ||
![]() |
e56cbfbd0f | ||
![]() |
a27fb19473 | ||
![]() |
674bcef6da | ||
![]() |
86c1c30245 | ||
![]() |
283546b379 | ||
![]() |
98e3e5e50f | ||
![]() |
b6a0d4d368 | ||
![]() |
28859c604f | ||
![]() |
9e51d98f4a | ||
![]() |
268a4c92ba | ||
![]() |
71367e14d5 | ||
![]() |
5c99eae8a9 | ||
![]() |
89aa5df711 | ||
![]() |
b9a5d710b7 | ||
![]() |
65dd54a4db | ||
![]() |
b00fa70d91 | ||
![]() |
360d423faa | ||
![]() |
394b44a2c2 | ||
![]() |
ed6821a819 | ||
![]() |
23b0f7be43 | ||
![]() |
7f195aec7a | ||
![]() |
da13e3d237 | ||
![]() |
75184d4c55 | ||
![]() |
eb75306f8a | ||
![]() |
98c4b82907 | ||
![]() |
640102c03b | ||
![]() |
c0d791cd6e | ||
![]() |
41d5e69de5 | ||
![]() |
2dc7371944 | ||
![]() |
ec2c3e1438 | ||
![]() |
c5c3806a04 | ||
![]() |
ac0c7df4a3 | ||
![]() |
d85845426c | ||
![]() |
060e60f2a0 | ||
![]() |
26cf75d5a4 | ||
![]() |
9f5087e97d | ||
![]() |
45624f2edf | ||
![]() |
153f843ea6 | ||
![]() |
f0cd9b0687 | ||
![]() |
1783bf20ec | ||
![]() |
9b24ae2033 | ||
![]() |
0be4622e14 | ||
![]() |
bcd5446cdc | ||
![]() |
04b5232960 | ||
![]() |
f860df4b2d | ||
![]() |
ff8c4b1bcf | ||
![]() |
337c69e223 | ||
![]() |
14841475b5 | ||
![]() |
7283fb320f | ||
![]() |
020cfa7283 | ||
![]() |
83aca0b53d | ||
![]() |
0b055fae2e | ||
![]() |
bc79259398 | ||
![]() |
7ebf5aa69a | ||
![]() |
7499621ecb | ||
![]() |
4de3f7ca29 | ||
![]() |
17462c21e8 | ||
![]() |
c964ef4e01 | ||
![]() |
0dccc440b6 | ||
![]() |
48f7232492 | ||
![]() |
ff5867e4d3 | ||
![]() |
a5d950f453 | ||
![]() |
7615d17293 | ||
![]() |
374e30043b | ||
![]() |
f771bb88d6 | ||
![]() |
7ef8d21e48 | ||
![]() |
c251eb8ec0 | ||
![]() |
1e6b3faa83 | ||
![]() |
e62fe956fd | ||
![]() |
24c5290d7f | ||
![]() |
00c8d3c897 | ||
![]() |
cc13f8f65e | ||
![]() |
47f4c9db7b | ||
![]() |
4c621cc30f | ||
![]() |
756a412436 | ||
![]() |
be16c2fe71 | ||
![]() |
a364c2a96b | ||
![]() |
414259a7f8 | ||
![]() |
283a81eac0 | ||
![]() |
2a145262c7 | ||
![]() |
57728b4322 | ||
![]() |
ef24fb6296 | ||
![]() |
86f057a712 | ||
![]() |
dcd628d289 | ||
![]() |
6038877c4c | ||
![]() |
4e6321c239 | ||
![]() |
304a525744 | ||
![]() |
f26de405dd | ||
![]() |
ed18580118 | ||
![]() |
b65649186d | ||
![]() |
515dc08a97 | ||
![]() |
2e7a56a28f | ||
![]() |
c485637a61 | ||
![]() |
f9f2a82e18 | ||
![]() |
2f4563132a | ||
![]() |
e3a0f2c546 | ||
![]() |
d39baeb8ad | ||
![]() |
f27f6aab78 | ||
![]() |
a66060e21a | ||
![]() |
11aa3c030b | ||
![]() |
bd1bec5617 | ||
![]() |
d9659d4b36 | ||
![]() |
d043d9943b | ||
![]() |
a0ef7c7142 | ||
![]() |
4efe4483fb | ||
![]() |
aec3edb1cc | ||
![]() |
0c5a6ad775 | ||
![]() |
2be5401b1e | ||
![]() |
f16e9b2ee7 | ||
![]() |
06380938d4 | ||
![]() |
87b20d7f2a | ||
![]() |
593db0baee | ||
![]() |
6b66553493 | ||
![]() |
ddaae9c923 | ||
![]() |
0c7a7d7527 | ||
![]() |
6561b53346 | ||
![]() |
def5e86673 | ||
![]() |
0c213c8fee | ||
![]() |
912a0abd26 | ||
![]() |
d694260ad2 | ||
![]() |
8566566451 | ||
![]() |
0ce64e46e8 | ||
![]() |
a8336669a3 | ||
![]() |
f6db756326 | ||
![]() |
27ab516f41 | ||
![]() |
9542b464bf | ||
![]() |
1ebaaa1950 | ||
![]() |
71efbf0330 | ||
![]() |
a6539463be | ||
![]() |
b8e096db82 | ||
![]() |
3e98ffaf99 | ||
![]() |
0a9754f305 | ||
![]() |
965a784c8a | ||
![]() |
2db9f55669 | ||
![]() |
3e73babaf7 | ||
![]() |
66c4555dc7 | ||
![]() |
183ad75603 | ||
![]() |
66fc32ee14 | ||
![]() |
d6396cf2c4 | ||
![]() |
c9b7104117 | ||
![]() |
6bf1a66b7c | ||
![]() |
7e7b671b8e | ||
![]() |
e04a55d1a2 | ||
![]() |
8905bd2280 | ||
![]() |
b09e1399c0 | ||
![]() |
59c8b949ad | ||
![]() |
6dbb3fddce | ||
![]() |
f166240225 | ||
![]() |
91b789c707 | ||
![]() |
14db280fab | ||
![]() |
f7097e6f66 | ||
![]() |
ff89f1e271 | ||
![]() |
6a8a4bfdcd | ||
![]() |
cd35982d4e | ||
![]() |
2f6f0f252c | ||
![]() |
13651949ed | ||
![]() |
fdeb72224c | ||
![]() |
92e36e7076 | ||
![]() |
d74796ee80 | ||
![]() |
3e35cac67a | ||
![]() |
1f7a6bf845 | ||
![]() |
365442c1ff | ||
![]() |
c8d185fc74 | ||
![]() |
9567fa9c6a | ||
![]() |
7a8de0c0af | ||
![]() |
10fead9ba1 | ||
![]() |
d5d5c2167a | ||
![]() |
b9755ea725 | ||
![]() |
39fee9f5a2 | ||
![]() |
d6282716b2 | ||
![]() |
60d9bee3bf | ||
![]() |
a09fa3b0e4 | ||
![]() |
9edff6f250 | ||
![]() |
7d3012fd67 | ||
![]() |
225e20a898 | ||
![]() |
1a62ac9276 | ||
![]() |
45cb151443 | ||
![]() |
55b18f9671 | ||
![]() |
4f4b1bfc37 | ||
![]() |
9348c9bd4b | ||
![]() |
16de7f66fb | ||
![]() |
799c27484d | ||
![]() |
c3b0faec82 | ||
![]() |
9c876722a0 | ||
![]() |
96fc93d744 | ||
![]() |
20545941fa | ||
![]() |
59f79e8294 | ||
![]() |
ac32b9ef95 | ||
![]() |
ba484be754 | ||
![]() |
a318198ab4 | ||
![]() |
e6391c2896 | ||
![]() |
7ea537fad7 | ||
![]() |
03146c2967 | ||
![]() |
0a81314337 | ||
![]() |
fa7a5782c6 | ||
![]() |
e3b64912b6 | ||
![]() |
a0fe392665 | ||
![]() |
0e5f365d55 | ||
![]() |
bfc906cbc4 | ||
![]() |
8e6f8087e8 | ||
![]() |
56207ddb6a | ||
![]() |
8cb9cfb7b8 | ||
![]() |
be698b597b | ||
![]() |
1d61a0f9b5 | ||
![]() |
788bd59857 | ||
![]() |
2391606cc5 | ||
![]() |
7155d7e043 | ||
![]() |
419dfd333a | ||
![]() |
b4535f2622 | ||
![]() |
9b21346427 | ||
![]() |
7b15d21e40 | ||
![]() |
7b597b8c62 | ||
![]() |
7a4adce44f | ||
![]() |
a5f0db5ecb | ||
![]() |
577624adef | ||
![]() |
af46ef3b96 | ||
![]() |
39d26be941 | ||
![]() |
7bfc9109f7 | ||
![]() |
becbad56ef | ||
![]() |
384a34c27d | ||
![]() |
002c5b8f87 | ||
![]() |
1d3dbea20c | ||
![]() |
ebe6e3180e | ||
![]() |
a3de799939 | ||
![]() |
0caf7381bb | ||
![]() |
a42305edab | ||
![]() |
732c059235 | ||
![]() |
ef2b6e7d00 | ||
![]() |
9c1b972ca1 | ||
![]() |
cb33e1942a | ||
![]() |
7009d1e470 | ||
![]() |
c54a19825b | ||
![]() |
8131f34eb6 | ||
![]() |
f29241d90e | ||
![]() |
bad48ea815 | ||
![]() |
66af41f4a9 | ||
![]() |
e30be380dd | ||
![]() |
65f2e29375 | ||
![]() |
98dbba1e17 | ||
![]() |
422648e2eb | ||
![]() |
f0fa4d831a | ||
![]() |
1b600f5867 | ||
![]() |
fd8cc9b7a8 | ||
![]() |
ca5b5e6bc4 | ||
![]() |
ee683ff187 | ||
![]() |
57602adfe7 | ||
![]() |
1481836ed6 | ||
![]() |
309f78ff52 | ||
![]() |
6436459381 | ||
![]() |
65b39212d5 | ||
![]() |
283649b8d7 | ||
![]() |
fa65c380db | ||
![]() |
58b39233f5 | ||
![]() |
82066e02c5 | ||
![]() |
c36aa5e696 | ||
![]() |
29197d40c6 | ||
![]() |
8d5ab6b5b3 | ||
![]() |
a796938b39 | ||
![]() |
3813113f1a | ||
![]() |
1be117e430 | ||
![]() |
622c7a021b | ||
![]() |
4d2d2f285b | ||
![]() |
0924c7d61b | ||
![]() |
2746608eb2 | ||
![]() |
fe26cb5989 | ||
![]() |
602307e694 | ||
![]() |
b2c18c4a78 | ||
![]() |
1e211722c7 | ||
![]() |
461f74ef18 | ||
![]() |
3f022ca963 | ||
![]() |
20e92c5a72 | ||
![]() |
0850da44d7 | ||
![]() |
37ba264190 | ||
![]() |
6c12c928df | ||
![]() |
9c5733caf0 | ||
![]() |
21d8b8310a | ||
![]() |
c46af91d54 | ||
![]() |
d44574f738 | ||
![]() |
a9424255a5 | ||
![]() |
5089a63d76 | ||
![]() |
f9a2c64460 | ||
![]() |
7841042a85 | ||
![]() |
ea1b8cdc22 | ||
![]() |
52b48cfbef | ||
![]() |
644f3e1275 | ||
![]() |
304005e04f | ||
![]() |
025ab35af7 | ||
![]() |
a27744503b | ||
![]() |
1011331caf | ||
![]() |
0ccef81789 | ||
![]() |
4780f74a40 | ||
![]() |
57866fb267 | ||
![]() |
d3bc7570d0 | ||
![]() |
74e43a4702 | ||
![]() |
0764b2058a | ||
![]() |
7a787d7946 | ||
![]() |
eec0f5df47 | ||
![]() |
ba3968a822 | ||
![]() |
762fa0e116 | ||
![]() |
0be57b621b | ||
![]() |
7d88b3593b | ||
![]() |
858db7081a | ||
![]() |
5af7f619c8 | ||
![]() |
e5e35e5a7f | ||
![]() |
6d639ac528 | ||
![]() |
aa3643cdde | ||
![]() |
8a3501ffe1 | ||
![]() |
5ea443eb4b | ||
![]() |
a37a8c6497 | ||
![]() |
ebf6862a10 | ||
![]() |
6c0e16c482 | ||
![]() |
40b1e7312d | ||
![]() |
1c0e6f26e2 | ||
![]() |
f4fc498e65 | ||
![]() |
a8632c2546 | ||
![]() |
600a0f836f | ||
![]() |
0ac142d39e | ||
![]() |
abd368be00 | ||
![]() |
a8ac2cc275 | ||
![]() |
2f14b5cc3f | ||
![]() |
2930612e64 | ||
![]() |
2952d3671d | ||
![]() |
1b5ace8256 | ||
![]() |
2ebecc5370 | ||
![]() |
02144d17e9 | ||
![]() |
71496c8909 | ||
![]() |
594b15abf1 | ||
![]() |
bbe3641844 | ||
![]() |
0cc5cf940b | ||
![]() |
153d8efcf5 | ||
![]() |
be744775c1 | ||
![]() |
5959457c73 | ||
![]() |
0824eb7c96 | ||
![]() |
d945501be6 | ||
![]() |
ca342c4573 | ||
![]() |
4326d0bf3a | ||
![]() |
a6ebc70170 | ||
![]() |
3025cb7c48 | ||
![]() |
17f48baf3a | ||
![]() |
333661a9d8 | ||
![]() |
b9da43b753 | ||
![]() |
097ee776c7 | ||
![]() |
a4a8f1f863 | ||
![]() |
f36a627330 | ||
![]() |
a1087c3f30 | ||
![]() |
aad275b9a2 | ||
![]() |
f0397eab94 | ||
![]() |
392e224831 | ||
![]() |
6867d44573 | ||
![]() |
a841fff2ac | ||
![]() |
26aa10a974 | ||
![]() |
f6144082b1 | ||
![]() |
957513242c | ||
![]() |
17fd25e216 | ||
![]() |
e91268a250 | ||
![]() |
82cb4e8267 | ||
![]() |
68eb87cc58 | ||
![]() |
f3e52d5b18 | ||
![]() |
2b2b2d3191 | ||
![]() |
9461c612de | ||
![]() |
f0280a8868 | ||
![]() |
c749f7b6fb | ||
![]() |
74462133ca | ||
![]() |
7c45d6594c | ||
![]() |
ea916b6c49 | ||
![]() |
a02d734243 | ||
![]() |
735b736110 | ||
![]() |
bbbb9ac53c | ||
![]() |
8dd97b4998 | ||
![]() |
73a9082062 | ||
![]() |
4091f5493d | ||
![]() |
d96b053c9d | ||
![]() |
1f569bef76 | ||
![]() |
1a88176cc0 | ||
![]() |
662c9729bc | ||
![]() |
56a0dd6b2c | ||
![]() |
9dc6028b3d | ||
![]() |
932e913d88 | ||
![]() |
b72315e27a | ||
![]() |
3c7cd1f38c | ||
![]() |
1946c548bf | ||
![]() |
cf181fe109 | ||
![]() |
63b9110f93 | ||
![]() |
ae44bff0b1 | ||
![]() |
23ba3e527f | ||
![]() |
08df9bf559 | ||
![]() |
648639fffe | ||
![]() |
6cc014a941 | ||
![]() |
b7b95123ed | ||
![]() |
153463790a | ||
![]() |
875bbec949 | ||
![]() |
666e5f1f98 | ||
![]() |
e6790038dd | ||
![]() |
e86c53230f | ||
![]() |
4ea4658abf | ||
![]() |
58f6ab0a27 | ||
![]() |
9c0cc664d1 | ||
![]() |
84d26e31f1 | ||
![]() |
64a848fcb7 | ||
![]() |
429583ae8b | ||
![]() |
93ae868987 | ||
![]() |
72a900787f | ||
![]() |
7186841db0 | ||
![]() |
ab080e3e6b | ||
![]() |
ad84aef766 | ||
![]() |
7908eca579 | ||
![]() |
237d990dea | ||
![]() |
78fcfec5c1 | ||
![]() |
1bd3a162f8 | ||
![]() |
918cfdcbda | ||
![]() |
cd76313297 | ||
![]() |
dc8231c2cf | ||
![]() |
4d01eb3a23 | ||
![]() |
35f47b211d | ||
![]() |
77046edf21 | ||
![]() |
488df061c7 | ||
![]() |
21d511e50f | ||
![]() |
15e83f0c2f | ||
![]() |
a23830fd13 | ||
![]() |
c8bf8c17be | ||
![]() |
d82e24981b | ||
![]() |
01b8ffac5d | ||
![]() |
1fa56bd7e0 | ||
![]() |
c3f28b9cdb | ||
![]() |
dc4e1d4cd1 | ||
![]() |
d69553e8f5 | ||
![]() |
0ead0d945a | ||
![]() |
c24d9bf142 | ||
![]() |
a6bf340ff8 | ||
![]() |
35ef7c95b2 | ||
![]() |
348f3007d9 | ||
![]() |
52e2a1226e | ||
![]() |
58622c0515 | ||
![]() |
cb5e1e2776 | ||
![]() |
e965cf32d4 | ||
![]() |
ce5e0b20b5 | ||
![]() |
90854a0f80 | ||
![]() |
2d9dc143fc | ||
![]() |
1e52d2aa9c | ||
![]() |
2734c8547f | ||
![]() |
cc0b093f7a | ||
![]() |
d25275fa8d | ||
![]() |
389e04c715 | ||
![]() |
24074a81d0 | ||
![]() |
c0e7f6d9bf | ||
![]() |
9a13b857f4 | ||
![]() |
776a86a65f | ||
![]() |
76e2455d1b | ||
![]() |
81d9797544 | ||
![]() |
12d6c70000 | ||
![]() |
a7eaf43e18 | ||
![]() |
514fec7275 | ||
![]() |
42a5f4f479 | ||
![]() |
6c1feedbdf | ||
![]() |
2d21fbbd35 | ||
![]() |
7baf687499 | ||
![]() |
a3e44d13d1 | ||
![]() |
65db8efbe8 | ||
![]() |
e48a5cd5f2 | ||
![]() |
698bb24848 | ||
![]() |
67fff237e6 | ||
![]() |
b9247b4b2f | ||
![]() |
0394b4a82b | ||
![]() |
ff7c85c599 | ||
![]() |
c316ad17a4 | ||
![]() |
fc108d5052 | ||
![]() |
8c0d38a1a1 | ||
![]() |
2f9c6c4146 | ||
![]() |
72ca2b218d | ||
![]() |
7360aece74 | ||
![]() |
b5f3238f6f | ||
![]() |
227fb56103 | ||
![]() |
5ae52473c9 | ||
![]() |
7b537d6b8f | ||
![]() |
4494888b82 | ||
![]() |
004ee2d3b5 | ||
![]() |
168ea64a45 | ||
![]() |
73ee491281 | ||
![]() |
95a9655412 | ||
![]() |
72b6699efb | ||
![]() |
3e341e83d9 | ||
![]() |
5b3340e585 | ||
![]() |
6f4f611ba8 | ||
![]() |
450afbaf51 | ||
![]() |
28708e4317 | ||
![]() |
9f64f2cf4f | ||
![]() |
2b1eb206d3 | ||
![]() |
a6dc454c49 | ||
![]() |
c2bf44fa19 | ||
![]() |
2d67b01c3a | ||
![]() |
6014d31dea | ||
![]() |
bf78f067a2 | ||
![]() |
ddb9929dad | ||
![]() |
2098ec2d16 | ||
![]() |
97eece6607 | ||
![]() |
7ac9a6e241 | ||
![]() |
b53bf0e8c2 | ||
![]() |
a26ded47d9 | ||
![]() |
cad9e14463 | ||
![]() |
806d5939e3 | ||
![]() |
0f0c23fbab | ||
![]() |
5d1fcc26c0 | ||
![]() |
cbe5b6b3bc | ||
![]() |
590cf4e832 | ||
![]() |
22ca820c44 | ||
![]() |
b1206ceb66 | ||
![]() |
ad4053ab84 | ||
![]() |
7bd4e6ecb0 | ||
![]() |
deeb1db1ac | ||
![]() |
7eb4bfbea3 | ||
![]() |
59b274f12f | ||
![]() |
e311cef013 | ||
![]() |
e72f81c24f | ||
![]() |
96fa518576 | ||
![]() |
e263b3624c | ||
![]() |
1c34f0b342 | ||
![]() |
2d27873f98 | ||
![]() |
fd40a12213 | ||
![]() |
57406e0a9e | ||
![]() |
1987cbb764 | ||
![]() |
705978405b | ||
![]() |
daba05f6a7 | ||
![]() |
1a7984be43 | ||
![]() |
1b3c77d53a | ||
![]() |
5b0f0d9e5b | ||
![]() |
9816659fa9 | ||
![]() |
3b1b611634 | ||
![]() |
f08921bd0c | ||
![]() |
0089b5769c | ||
![]() |
452be05ea0 | ||
![]() |
69f038f7c7 | ||
![]() |
2d35e07fae | ||
![]() |
95e2d26d03 | ||
![]() |
f506e090ea | ||
![]() |
0697b53826 | ||
![]() |
7d9141c56f | ||
![]() |
519a06b93d | ||
![]() |
0cceddab75 | ||
![]() |
c9830c13b4 | ||
![]() |
9a4783e364 | ||
![]() |
aa15c09d54 | ||
![]() |
62d908be42 | ||
![]() |
6526e9882b | ||
![]() |
ab72352c47 | ||
![]() |
f09b9573f0 | ||
![]() |
3d3ae40f79 | ||
![]() |
ea3d2b4759 | ||
![]() |
542a0886cf | ||
![]() |
bd3d5df9ce | ||
![]() |
91cdfab495 | ||
![]() |
1617323dca | ||
![]() |
bbf9358eba | ||
![]() |
9682a2aea4 | ||
![]() |
c9fbb51775 | ||
![]() |
aa6d887214 | ||
![]() |
13312527de | ||
![]() |
9bd366f2a6 | ||
![]() |
5de346bfef | ||
![]() |
2af20b77b6 | ||
![]() |
9affbf10a6 | ||
![]() |
c0acf3ae6d | ||
![]() |
2c1b20e15f | ||
![]() |
77290b6736 | ||
![]() |
876f81db12 | ||
![]() |
75f3ae14b5 | ||
![]() |
d26f248b0f | ||
![]() |
eeb3dfc991 | ||
![]() |
e66db2eab3 | ||
![]() |
2ae7454f36 | ||
![]() |
4fd3c63da9 | ||
![]() |
909a6607c5 | ||
![]() |
1bde397edf | ||
![]() |
015c05fbf6 | ||
![]() |
8ad5ccd2f8 | ||
![]() |
115cc870c7 | ||
![]() |
3112794d83 | ||
![]() |
3528b067d0 | ||
![]() |
0986b660be | ||
![]() |
3bb5086173 | ||
![]() |
69467842ab | ||
![]() |
57077435ed | ||
![]() |
46de0ed462 | ||
![]() |
5086626805 | ||
![]() |
bbbcd8c631 | ||
![]() |
3b61b85f2c | ||
![]() |
cd20f1bc0b | ||
![]() |
8b52782ed4 | ||
![]() |
849050be95 | ||
![]() |
5c27a91684 | ||
![]() |
764c472edb | ||
![]() |
d0529b7482 | ||
![]() |
8f4621240a | ||
![]() |
e039add240 | ||
![]() |
dbd8d4d598 | ||
![]() |
522542c486 | ||
![]() |
fc67c707e4 | ||
![]() |
c354e7e81b | ||
![]() |
bf40409d97 | ||
![]() |
57d083730e | ||
![]() |
dc242e46c2 | ||
![]() |
7e1d1003c9 | ||
![]() |
3bb33d384f | ||
![]() |
214f31257b | ||
![]() |
bfc87d13cb | ||
![]() |
506ddc3d6c | ||
![]() |
24564c77d6 | ||
![]() |
18a21b67c2 | ||
![]() |
3803fd9511 | ||
![]() |
152d896f75 | ||
![]() |
2f3a5f2001 | ||
![]() |
c3e8646af3 | ||
![]() |
8c17b670fb | ||
![]() |
0e098249b1 | ||
![]() |
12d2e1f600 | ||
![]() |
c20b007985 | ||
![]() |
ef480e9120 | ||
![]() |
8c1c77482d | ||
![]() |
e633606ca9 | ||
![]() |
9a5f243f73 | ||
![]() |
03f55b9485 | ||
![]() |
ef9ef87d91 | ||
![]() |
0ee2c21da7 | ||
![]() |
9b966561c4 | ||
![]() |
8c0779a9db | ||
![]() |
2c901cc015 | ||
![]() |
85e66f69fa | ||
![]() |
a5585327dc | ||
![]() |
268ebb1b18 | ||
![]() |
40e820f551 | ||
![]() |
f9a11b3b18 | ||
![]() |
bd3c357212 | ||
![]() |
b4d108dac6 | ||
![]() |
6585a5760b | ||
![]() |
531be6c413 | ||
![]() |
f0c503b5a9 | ||
![]() |
6fdc23d0b7 | ||
![]() |
4862872c78 | ||
![]() |
ae2e4c5114 | ||
![]() |
06b5be2d13 | ||
![]() |
56fb8a81b3 | ||
![]() |
90a3d613ca | ||
![]() |
c2af13cf31 | ||
![]() |
b0cf0b2442 | ||
![]() |
1c569c2d0e | ||
![]() |
e3855c77af | ||
![]() |
21fe5be026 | ||
![]() |
57bc974a57 | ||
![]() |
3b51405255 | ||
![]() |
73dbb4b9a5 | ||
![]() |
51acc3ee31 | ||
![]() |
a6f206f07c | ||
![]() |
9504fdd2cb | ||
![]() |
b76c3312e9 | ||
![]() |
fd7db8e6b3 | ||
![]() |
b7840bec7d | ||
![]() |
f743539886 | ||
![]() |
15e01152da | ||
![]() |
2103ff6a5c | ||
![]() |
8ab136b7ea | ||
![]() |
5205821fb9 | ||
![]() |
7187206ef5 | ||
![]() |
96221e6c04 | ||
![]() |
7fdfbad6d4 | ||
![]() |
2a5b068863 | ||
![]() |
0c505faded | ||
![]() |
b2dd4f33f7 | ||
![]() |
47b21b3547 | ||
![]() |
c119f98bac | ||
![]() |
d20078574e | ||
![]() |
26bd4fde5c | ||
![]() |
2af49e503f | ||
![]() |
6ea6af6eb4 | ||
![]() |
10df80762c | ||
![]() |
f86032d700 | ||
![]() |
a8eb33f6fd | ||
![]() |
bd19de9429 | ||
![]() |
2ca2838548 | ||
![]() |
df8234c5e3 | ||
![]() |
d03ffd801e | ||
![]() |
7a4c808e43 | ||
![]() |
4f1d62170b | ||
![]() |
e10804727d | ||
![]() |
e430e051b7 | ||
![]() |
696d9d2fa9 | ||
![]() |
f6dd081acd | ||
![]() |
eddd6f8e9b | ||
![]() |
dfa4c7d670 | ||
![]() |
a487d4dd01 | ||
![]() |
c2ecdd0524 | ||
![]() |
50b9042ac2 | ||
![]() |
f5e75de330 | ||
![]() |
1ffe1eae4d | ||
![]() |
970a446bd8 | ||
![]() |
8880dffbdb | ||
![]() |
5b6621811c | ||
![]() |
c2a9ccb7e2 | ||
![]() |
4608cb6027 | ||
![]() |
ad61676af0 | ||
![]() |
c7c1225393 | ||
![]() |
c7dc6928a9 | ||
![]() |
7cfaa6a6a8 | ||
![]() |
673a9e2521 | ||
![]() |
9ef4ac00df | ||
![]() |
46f0cffa53 | ||
![]() |
b6203192b5 | ||
![]() |
992a15e640 | ||
![]() |
f1620abfad | ||
![]() |
591523e473 | ||
![]() |
72769e113a | ||
![]() |
387cb83c8a | ||
![]() |
577e5e2e1a | ||
![]() |
47cf63bebe | ||
![]() |
0e58906194 | ||
![]() |
13c7020b80 | ||
![]() |
5ed6e37e3c | ||
![]() |
9ed3a77102 | ||
![]() |
acd99927f9 | ||
![]() |
13c92f63bb | ||
![]() |
12400caef8 | ||
![]() |
a1b3fdfbd6 | ||
![]() |
4b47c59a04 | ||
![]() |
5d223c189c | ||
![]() |
c5d0923453 | ||
![]() |
41f8fccf6b | ||
![]() |
e02ad64fef | ||
![]() |
8db53af1f8 | ||
![]() |
defaa5876c | ||
![]() |
e7870cb665 | ||
![]() |
64eb42023c | ||
![]() |
e7faef860b | ||
![]() |
4dfbe9a493 | ||
![]() |
6a17bb4cf5 | ||
![]() |
58496de595 | ||
![]() |
f80a15f312 | ||
![]() |
9df2d83aa0 | ||
![]() |
1582448553 | ||
![]() |
eefa62bcd4 | ||
![]() |
e216b6ca0f | ||
![]() |
8a33880c00 | ||
![]() |
7a8c45dda8 | ||
![]() |
af01ddaf5d | ||
![]() |
5ceffe86ee | ||
![]() |
49df033b4e | ||
![]() |
ac3465ffbb | ||
![]() |
884ab602cb | ||
![]() |
d944bda7b9 | ||
![]() |
11f7cfb27b | ||
![]() |
64358d9901 | ||
![]() |
2efed44257 | ||
![]() |
69c72ebb26 | ||
![]() |
00a842f41b | ||
![]() |
460dc9f2ef | ||
![]() |
be46869782 | ||
![]() |
2863eba2e7 | ||
![]() |
e0b698d365 | ||
![]() |
edeac1de09 | ||
![]() |
9281a1c191 | ||
![]() |
a3826987e6 | ||
![]() |
e46c7fd27b | ||
![]() |
0bb8d29be4 | ||
![]() |
1f905bd0e2 | ||
![]() |
cce5ad7cc0 | ||
![]() |
97a4cc8c9b | ||
![]() |
592374bc62 | ||
![]() |
2e0f979613 | ||
![]() |
6d365a700c | ||
![]() |
72a9eb6a3e | ||
![]() |
ae3cfe6c01 | ||
![]() |
da557cb712 | ||
![]() |
c1e41d558f | ||
![]() |
889844b004 | ||
![]() |
6311a3ebc1 | ||
![]() |
0f6c1db2ba | ||
![]() |
e6ec1abbfa | ||
![]() |
42621c960e | ||
![]() |
8e9ae2eb50 | ||
![]() |
ca7843372c | ||
![]() |
1202714428 | ||
![]() |
45addabe5d | ||
![]() |
31abad0ea5 | ||
![]() |
c169d29836 | ||
![]() |
df8ad83cec | ||
![]() |
381a9c2650 | ||
![]() |
dc3529d98a | ||
![]() |
e15bc37225 | ||
![]() |
160150d127 | ||
![]() |
6e02fb80c4 | ||
![]() |
98b0a37442 | ||
![]() |
4d437e32e0 | ||
![]() |
7db236b2a4 | ||
![]() |
377e2ed8a5 | ||
![]() |
99cfbac473 | ||
![]() |
34f06ee9e5 | ||
![]() |
f212723e71 | ||
![]() |
660eceb61a | ||
![]() |
d395d75e26 | ||
![]() |
2aea49a8d0 | ||
![]() |
c996dde5cb | ||
![]() |
4bdd985faf | ||
![]() |
6e831c88a6 | ||
![]() |
0e3d164117 | ||
![]() |
ec6460382c | ||
![]() |
436d3ff8a9 | ||
![]() |
e4269002ce | ||
![]() |
4f2bb583bf | ||
![]() |
702f3fc691 | ||
![]() |
4cad9513b4 | ||
![]() |
24974816a6 | ||
![]() |
773ae8dc65 | ||
![]() |
7f14298126 | ||
![]() |
a39cabfadb | ||
![]() |
4df3e987c6 | ||
![]() |
64c523c534 | ||
![]() |
fba2c49aae | ||
![]() |
e623406c99 | ||
![]() |
de36d51b91 | ||
![]() |
e6d5e98c9d | ||
![]() |
832b7f9431 | ||
![]() |
171a273d11 | ||
![]() |
45b0765f2f | ||
![]() |
2a773e0c85 | ||
![]() |
b5152c3327 | ||
![]() |
d4f8c29221 | ||
![]() |
1b83e8a64c | ||
![]() |
36eb5c305d | ||
![]() |
c72dbeb611 | ||
![]() |
63aec4566d | ||
![]() |
2cafb8be2d | ||
![]() |
64544fa0ed | ||
![]() |
51ccaaaff0 | ||
![]() |
b09f47d17f | ||
![]() |
1dbefc4e36 | ||
![]() |
7f6a77232f | ||
![]() |
580feb0c85 | ||
![]() |
842bc4421c | ||
![]() |
aba87407e9 | ||
![]() |
112ef93e19 | ||
![]() |
c4efd1c789 | ||
![]() |
7e61ef0936 | ||
![]() |
e9709b7ff9 | ||
![]() |
027593faa5 | ||
![]() |
491c5b622e | ||
![]() |
5e9621ed80 | ||
![]() |
f5de1c78af | ||
![]() |
b0774d795c | ||
![]() |
034ab77c30 | ||
![]() |
a6a9d3f448 | ||
![]() |
a215852d3c | ||
![]() |
264a0bbd15 | ||
![]() |
55a4d0e0cb | ||
![]() |
d900d83522 | ||
![]() |
e8b0c11703 | ||
![]() |
3d337a98d9 | ||
![]() |
3e38a48c40 | ||
![]() |
5876f2e3e5 | ||
![]() |
aeb589c176 | ||
![]() |
14dd766e11 | ||
![]() |
24ff4b5622 | ||
![]() |
7f3362bdce | ||
![]() |
6b5cf2eb61 | ||
![]() |
fb0cd80332 | ||
![]() |
579bf2105e | ||
![]() |
995e8040dd | ||
![]() |
0503f6bb9a | ||
![]() |
87fe9685b5 | ||
![]() |
2d9b8bb2d0 | ||
![]() |
74b1a9e2b9 | ||
![]() |
fcc178ee8c | ||
![]() |
d8696c17be | ||
![]() |
b07aea467e | ||
![]() |
04ef448927 | ||
![]() |
790bfcad9a | ||
![]() |
fbfab93c63 | ||
![]() |
70c0d39fa7 | ||
![]() |
7d43bde019 | ||
![]() |
7743c70d47 | ||
![]() |
c9343e3ee3 | ||
![]() |
3abaf506a6 | ||
![]() |
9de142db09 | ||
![]() |
2942b22ccf | ||
![]() |
94e6e55ef7 | ||
![]() |
34fc234fd7 | ||
![]() |
c3ffd28bb6 | ||
![]() |
1c680be11a | ||
![]() |
a362c08f4e | ||
![]() |
380154af0a | ||
![]() |
d482590c84 | ||
![]() |
b3c572b8e3 | ||
![]() |
c64eb94724 | ||
![]() |
d8f569eaf5 | ||
![]() |
57c31a56f4 | ||
![]() |
8b21df92f0 | ||
![]() |
e914595062 | ||
![]() |
a2a3188331 | ||
![]() |
453020c315 | ||
![]() |
d794db876a | ||
![]() |
b33b4a8e2c | ||
![]() |
6f74a63bbd | ||
![]() |
5298d1c8d0 | ||
![]() |
493f619adc | ||
![]() |
a613a55658 | ||
![]() |
3fe5a676c2 | ||
![]() |
19420f147f | ||
![]() |
32b7743735 | ||
![]() |
093e101252 | ||
![]() |
6f873be7fa | ||
![]() |
f37dd25e92 | ||
![]() |
d48df249c9 | ||
![]() |
e48c3dac87 | ||
![]() |
3516902fae | ||
![]() |
66185a468c | ||
![]() |
84930f1d78 | ||
![]() |
07273a075d | ||
![]() |
3900aa10f8 | ||
![]() |
d8058138ab | ||
![]() |
ac49259fc7 | ||
![]() |
12dbb90a5a | ||
![]() |
90f2a3ae4c | ||
![]() |
867e10dbcc | ||
![]() |
9a57626556 | ||
![]() |
b9e21b76ae | ||
![]() |
2ecc50af53 | ||
![]() |
1cebe19bbe | ||
![]() |
71055556ee | ||
![]() |
4d9d66da65 | ||
![]() |
30bdadb519 | ||
![]() |
c388ccf477 | ||
![]() |
a2d54bb2ab | ||
![]() |
cefadb55b1 | ||
![]() |
06e31e4c03 | ||
![]() |
869a137c2f | ||
![]() |
f4e4a05a9e | ||
![]() |
df15843407 | ||
![]() |
d8eb47e2b7 | ||
![]() |
e28a36affd | ||
![]() |
53534b4ded | ||
![]() |
079dd60e3d | ||
![]() |
5d12f00b3b | ||
![]() |
95f3bb3b81 | ||
![]() |
2bfe6d2da5 | ||
![]() |
27e0e44d8b | ||
![]() |
7e5fb3e1a0 | ||
![]() |
2ac17cc7ba | ||
![]() |
7b32b7fcd1 | ||
![]() |
2fcd75eadd | ||
![]() |
8094c0ab23 | ||
![]() |
831cf9a83a | ||
![]() |
47be4fdf07 | ||
![]() |
9b34545bd5 | ||
![]() |
e5317cc7a0 | ||
![]() |
b8887a6c3a | ||
![]() |
a6c51addac | ||
![]() |
54a3847a5e | ||
![]() |
5a8473e226 | ||
![]() |
5c33b0d768 | ||
![]() |
22a3126a2b | ||
![]() |
9596c24f83 | ||
![]() |
86d6baf30f | ||
![]() |
3a3be74e37 | ||
![]() |
f57d64337b | ||
![]() |
e69fcc860c | ||
![]() |
afbca61524 | ||
![]() |
66d37e06ba | ||
![]() |
7e2d6cb6ec | ||
![]() |
b9f775fe02 | ||
![]() |
90cf43da9f | ||
![]() |
bab51cbbe4 | ||
![]() |
e782426736 | ||
![]() |
1071e9970f | ||
![]() |
5d64bdf3d9 | ||
![]() |
8012a315e3 | ||
![]() |
acd6df34da | ||
![]() |
6431abbc85 | ||
![]() |
57ff0f7071 | ||
![]() |
2a2ac52726 | ||
![]() |
a91eeb24d4 | ||
![]() |
581960abc8 | ||
![]() |
3a307b5d24 | ||
![]() |
4e21d5d610 | ||
![]() |
02c2cf1960 | ||
![]() |
748064678f | ||
![]() |
982d554450 | ||
![]() |
0e5f8997cf | ||
![]() |
6111d3ee4a | ||
![]() |
3876a1a192 |
38
.gitignore
vendored
38
.gitignore
vendored
@@ -23,7 +23,7 @@ src/50-mutter-navigation.xml
|
|||||||
src/50-mutter-system.xml
|
src/50-mutter-system.xml
|
||||||
src/50-mutter-windows.xml
|
src/50-mutter-windows.xml
|
||||||
src/mutter-wm.desktop
|
src/mutter-wm.desktop
|
||||||
src/mutter.desktop
|
src/mutter-wayland.desktop
|
||||||
*.o
|
*.o
|
||||||
*.a
|
*.a
|
||||||
*.lo
|
*.lo
|
||||||
@@ -46,13 +46,13 @@ POTFILES
|
|||||||
po/*.pot
|
po/*.pot
|
||||||
50-metacity-desktop-key.xml
|
50-metacity-desktop-key.xml
|
||||||
50-metacity-key.xml
|
50-metacity-key.xml
|
||||||
inlinepixbufs.h
|
libmutter-wayland.pc
|
||||||
libmutter.pc
|
mutter-wayland
|
||||||
mutter
|
mutter-launch
|
||||||
mutter-theme-viewer
|
|
||||||
mutter.desktop
|
|
||||||
org.gnome.mutter.gschema.valid
|
org.gnome.mutter.gschema.valid
|
||||||
org.gnome.mutter.gschema.xml
|
org.gnome.mutter.gschema.xml
|
||||||
|
org.gnome.mutter.wayland.gschema.valid
|
||||||
|
org.gnome.mutter.wayland.gschema.xml
|
||||||
testasyncgetprop
|
testasyncgetprop
|
||||||
testboxes
|
testboxes
|
||||||
testgradient
|
testgradient
|
||||||
@@ -62,6 +62,7 @@ mutter-message
|
|||||||
mutter-window-demo
|
mutter-window-demo
|
||||||
focus-window
|
focus-window
|
||||||
test-attached
|
test-attached
|
||||||
|
test-focus
|
||||||
test-gravity
|
test-gravity
|
||||||
test-resizing
|
test-resizing
|
||||||
test-size-hints
|
test-size-hints
|
||||||
@@ -74,4 +75,29 @@ src/mutter-enum-types.[ch]
|
|||||||
src/stamp-mutter-enum-types.h
|
src/stamp-mutter-enum-types.h
|
||||||
src/mutter-marshal.[ch]
|
src/mutter-marshal.[ch]
|
||||||
src/stamp-mutter-marshal.h
|
src/stamp-mutter-marshal.h
|
||||||
|
src/meta-dbus-xrandr.[ch]
|
||||||
|
src/meta-dbus-idle-monitor.[ch]
|
||||||
src/mutter-plugins.pc
|
src/mutter-plugins.pc
|
||||||
|
src/wayland/gtk-shell-protocol.c
|
||||||
|
src/wayland/gtk-shell-server-protocol.h
|
||||||
|
src/wayland/xdg-shell-protocol.c
|
||||||
|
src/wayland/xdg-shell-server-protocol.h
|
||||||
|
src/wayland/xserver-protocol.c
|
||||||
|
src/wayland/xserver-server-protocol.h
|
||||||
|
doc/reference/*.args
|
||||||
|
doc/reference/*.bak
|
||||||
|
doc/reference/*.hierarchy
|
||||||
|
doc/reference/*.interfaces
|
||||||
|
doc/reference/*.prerequisites
|
||||||
|
doc/reference/*.signals
|
||||||
|
doc/reference/*.stamp
|
||||||
|
doc/reference/html/
|
||||||
|
doc/reference/xml/
|
||||||
|
doc/reference/meta-decl-list.txt
|
||||||
|
doc/reference/meta-decl.txt
|
||||||
|
doc/reference/meta-overrides.txt
|
||||||
|
doc/reference/meta-undeclared.txt
|
||||||
|
doc/reference/meta-undocumented.txt
|
||||||
|
doc/reference/meta-unused.txt
|
||||||
|
doc/reference/meta-docs.sgml
|
||||||
|
doc/reference/meta.types
|
||||||
|
41
COPYING
41
COPYING
@@ -1,12 +1,12 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
The licenses for most software are designed to take away your
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
|||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
0. This License applies to any program or other work which contains
|
||||||
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
|||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
|||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
@@ -225,7 +225,7 @@ impose that choice.
|
|||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
|||||||
of preserving the free status of all derivatives of our free software and
|
of preserving the free status of all derivatives of our free software and
|
||||||
of promoting the sharing and reuse of software generally.
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
NO WARRANTY
|
NO WARRANTY
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
possible use to the public, the best way to achieve this is to make it
|
possible use to the public, the best way to achieve this is to make it
|
||||||
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License along
|
||||||
along with this program; if not, write to the Free Software
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
If the program is interactive, make it output a short notice like this
|
||||||
when it starts in an interactive mode:
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
||||||
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
||||||
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
|
|||||||
This General Public License does not permit incorporating your program into
|
This General Public License does not permit incorporating your program into
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
consider it more useful to permit linking proprietary applications with the
|
consider it more useful to permit linking proprietary applications with the
|
||||||
library. If this is what you want to do, use the GNU Library General
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
|
@@ -1,6 +1,10 @@
|
|||||||
|
|
||||||
SUBDIRS=src po doc
|
SUBDIRS=src protocol po doc
|
||||||
|
|
||||||
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
|
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
|
||||||
|
|
||||||
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
|
||||||
|
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
390
NEWS
390
NEWS
@@ -1,3 +1,393 @@
|
|||||||
|
3.11.90
|
||||||
|
=======
|
||||||
|
* Fix double-scaling on high DPI resolutions [Adel; #723931]
|
||||||
|
* Make tile previews a compositor effect [Stefano, Florian; #665758]
|
||||||
|
* Misc. bug fixes and cleanups [Ryan, Giovanni, Jasper, Adel; #722530, #724257,
|
||||||
|
#724258, #720631, #724364, #724472]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Marek Chalupa, Stefano Facchini, Adel Gadllah,
|
||||||
|
Ryan Lortie, Florian Müllner, Jasper St. Pierre, Rico Tzschichholz
|
||||||
|
|
||||||
|
3.11.5
|
||||||
|
======
|
||||||
|
* Fix CSD titlebars being placed off-screen [Jasper; #719772]
|
||||||
|
* Add support for subsurfaces [Jonas; #705502]
|
||||||
|
* Expose MetaWindow:skip-taskbar property [Florian; #723307]
|
||||||
|
* Fix legacy tray icons showing up blank [Adel; #721596]
|
||||||
|
* Fix configuration of cloned monitors [Adel; #710610]
|
||||||
|
* Misc bug fixes and cleanups [Jasper, Adel, Marek, Jonas; #720631, #723468,
|
||||||
|
#720818, #723563, #723564]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jonas Ådahl, Marek Ch, Adel Gadllah, Florian Müllner, Jasper St. Pierre
|
||||||
|
|
||||||
|
3.11.4
|
||||||
|
======
|
||||||
|
* Don't leave focus on windows that are being unmanaged [Owen; #711618]
|
||||||
|
* Reduce server grabs [Daniel Drake; #721345, #721709]
|
||||||
|
* Improve heuristic to determine display output name [Cosimo Cecchi; #721674]
|
||||||
|
* Atomically unmaximize both directions [Jasper; #722108]
|
||||||
|
* Misc bug fixes [Debarshi, Andika, Florian; #721517, #721674, #722347]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Cosimo Cecchi, Daniel Drake, Florian Müllner, Debarshi Ray, Jasper St. Pierre,
|
||||||
|
Andika Triwidada, Owen W. Taylor
|
||||||
|
|
||||||
|
3.11.3
|
||||||
|
======
|
||||||
|
* Fix focus issues with external OSKs[Jasper; #715030]
|
||||||
|
* Add a MetaCullable interface [Jasper; #714706]
|
||||||
|
* Fix window keybindings [Rui; #719724]
|
||||||
|
* Fix settings keyboard/pointer focus for new clients [Rui; #719725]
|
||||||
|
* Fix window group paint volume [Owen; #719669]
|
||||||
|
* Fix frame extents problems [Owen; #714707]
|
||||||
|
* Add shortcut to move windows between monitors [Florian; #671054]
|
||||||
|
* Fix problems with focus tracking [Owen; #720558]
|
||||||
|
* Misc. bug fixes and cleanups: [Rui, Colin, Lionel, Jasper, Owen; #712833,
|
||||||
|
#719557, #719695, #719833, #678989, #720417, #720630]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Lionel Landwerlin, Rui Matos, Alberto Milone, Florian Müllner,
|
||||||
|
Jasper St. Pierre, Rico Tzschichholz, Owen W. Taylor, Colin Walters
|
||||||
|
|
||||||
|
3.11.2
|
||||||
|
======
|
||||||
|
* Support setting a NULL opaque region [Andreas; #711518]
|
||||||
|
* Sync keymap from X to wayland [Giovanni; #707446]
|
||||||
|
* Implement support for subsurfaces [Jonas; #705502]
|
||||||
|
* Don't focus the no-focus-window for globally active windows [Jasper; #710296]
|
||||||
|
* Support "hotplug_mode_update" property [Marc-André; #711216]
|
||||||
|
* Fix resize operations using mouse-button-modifier [Lionel; #710251]
|
||||||
|
* Fix position of attached modals for CSD windows [Giovanni, Owen; #707194]
|
||||||
|
* Misc. bug fixes [Rui, Jasper, Neil, Florian; #712247, #711731]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Andreas Heider, Lionel Landwerlin, Marc-André Lureau,
|
||||||
|
Rui Matos, Florian Müllner, Neil Roberts, Sindhu S, Jasper St. Pierre,
|
||||||
|
Rico Tzschichholz, Owen W. Taylor, Jonas Ådahl
|
||||||
|
|
||||||
|
3.11.1
|
||||||
|
======
|
||||||
|
* Fix tile previews getting stuck on right click during drags [Lionel; #704759]
|
||||||
|
* Use new UPower API [Bastien]
|
||||||
|
* Set hot spot when cursor set from wl_buffer [Jonas; #709593]
|
||||||
|
* Expose min-backlight-step [Asad; #710380]
|
||||||
|
* Misc. bug fixes and cleanups [Jasper, Olav, Magdalen; #709776]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Magdalen Berns, Lionel Landwerlin, Asad Mehmood, Bastien Nocera,
|
||||||
|
Jasper St. Pierre, Olav Vitters, Jonas Ådahl
|
||||||
|
|
||||||
|
3.10.1
|
||||||
|
======
|
||||||
|
* Don't apply fullscreen workarounds to CSD windows [Giovanni; #708718]
|
||||||
|
* Fix hangs during DND operations [Adel; #709340]
|
||||||
|
* Misc bug fixes [Dan, Giovanni, Jasper; #708813, #708420]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Adel Gadllah, Dan Horák, Hans Petter Jansson,
|
||||||
|
Jasper St. Pierre
|
||||||
|
|
||||||
|
3.10.0.1
|
||||||
|
========
|
||||||
|
* Fix bug when a window changed size twice in a single frame - this
|
||||||
|
can happen with GTK+ client-side decorations [Giovanni, Owen; #708367]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Owen Taylor
|
||||||
|
|
||||||
|
3.10.0
|
||||||
|
======
|
||||||
|
* Update dependencies [Giovanni; #708210]
|
||||||
|
|
||||||
|
3.9.92
|
||||||
|
======
|
||||||
|
* Constrain the pointer position onto visible monitors [Giovanni; #706655]
|
||||||
|
* Fix keyboard state handling in face of event compression [Giovanni; #706963]
|
||||||
|
* Extend the MetaCursorTracker API with query pointer and cursor visibility [Giovanni; #707474]
|
||||||
|
* Be stricter in checking and exposing the wayland protocol version [#707851]
|
||||||
|
* Don't require plugins to pass event to Clutter [Giovanni; #707482]
|
||||||
|
* Move the --wayland option from the binary to the library [Giovanni; #707897]
|
||||||
|
* Implement running from gnome-session (environment variable setting, process group
|
||||||
|
handling, Clutter backend variables) [Giovanni; #706421]
|
||||||
|
* Add support for more cursor types [Giovanni; #707919]
|
||||||
|
* Drop man pages for removed utilities [Kalev; #706579]
|
||||||
|
* Implement monitor configuration on KMS [Giovanni; #706308]
|
||||||
|
* Implement HW cursors [Giovanni; #707573]
|
||||||
|
* Implement minimal support for resizing and maximizing wayland clients [Giovanni; #707401]
|
||||||
|
* Implement transient hints for wayland clients [Giovanni; #707401]
|
||||||
|
* Implement popup menu surfaces and grabs [Giovanni; #707863]
|
||||||
|
* Immediately fire idle watches that are already expired [Giovanni; #707302]
|
||||||
|
* Remove holes generated by disabling the laptop lid [Giovanni; #707473]
|
||||||
|
* Misc bug fixes [Giovanni, Pavel, Adel; #707649, #706124, #707584, #707851, #707929,
|
||||||
|
#708070]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Adel Gadllah, Giovanni Campagna, Kalev Lember, Pavel Vasin
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Мирослав Николић po/sr, sr@latin.po, Мирослав Николић [sr, sr@latin],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW], Yuri Myasoedov [ru],
|
||||||
|
Ville-Pekka Vainio [fi], Changwoo Ryu [ko], A S Alam [pa],
|
||||||
|
Mattias Põldaru [et], Rūdolfs Mazurs [lv], Ihar Hrachyshka [be],
|
||||||
|
Nilamdyuti Goswami [as], Andika Triwidada [id], Baurzhan Muftakhidinov [kk],
|
||||||
|
Benjamin Steinwender [de]
|
||||||
|
|
||||||
|
3.9.91
|
||||||
|
======
|
||||||
|
* Drop man pages for removed utilities [Kalev; #706579]
|
||||||
|
* Add support for idle tracking [Giovanni, Cosimo; #706005, #707250]
|
||||||
|
* Skip CRTC reconfigurations that have no effect [Giovanni; #706672]
|
||||||
|
* Ignore skip-taskbar hints on parentless dialogs [Giovanni; #673399]
|
||||||
|
* Don't save pixbuf data in user data [Tim; #706777]
|
||||||
|
* Don't queue redraws for obscured regions [Adel; #703332]
|
||||||
|
* Suppor the opaque region hints for wayland clients [Jasper; #707019]
|
||||||
|
* Turn blending off when drawing entirely opaque regions [Jasper; #707019]
|
||||||
|
* Check event timestamps before reconfiguring [Giovanni; #706735]
|
||||||
|
* Merge the DBus API for display configuration in the wayland branch [Giovanni]
|
||||||
|
* Install an X IO error handler for XWayland [Giovanni; #706962]
|
||||||
|
* Use the clutter xkbcommon integration for the wayland keyboard [Giovanni; #705862]
|
||||||
|
* Add a setuid helper for running on KMS+evdev [Giovanni, Colin; #705861]
|
||||||
|
* Add keybindings for switching VT [Giovanni; #705861]
|
||||||
|
* Implement plugin modality when running as a wayland compositor [Giovanni; #705917]
|
||||||
|
* Add support for the application menu for wayland clients [Giovanni; #707128]
|
||||||
|
* Several Coverity spotted fixes [Jasper]
|
||||||
|
* Don't create a dummy texture for the texture template [Neil; #707458]
|
||||||
|
* Use a more conservative paint volume for obscured windows [Adel]
|
||||||
|
* Misc bug fixes [Giovanni, Colin, Seán, Jasper, Cosimo; #706582, #706598,
|
||||||
|
#706787, #706729, #706825, #707081, #707090, #707267, #706982, #706289]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Colin Guthrie, Kalev Lember,
|
||||||
|
Tim Lunn, Jasper St. Pierre, Neil Roberts, Rico Tzschichholz, Seán de Búrca
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Piotr Drąg [pl], Alexandre Franke [fr], Kjartan Maraas [nb],
|
||||||
|
Milo Casagrande [it], Balázs Úr [hu], Seán de Búrca [ga], Fran Diéguez [gl],
|
||||||
|
Daniel Mustieles [es], Aurimas Černius [lt], Gil Forcada [ca]
|
||||||
|
|
||||||
|
3.9.90
|
||||||
|
======
|
||||||
|
* First release from the wayland branch, includes basic support for running
|
||||||
|
as a wayland compositor [Robert, Neil, Giovanni]
|
||||||
|
* Add support for _GTK_FRAME_EXTENTS [Jasper; #705766]
|
||||||
|
* Fix quick consecutive <super> presses breaking keyboard input [Alban; #666101]
|
||||||
|
* Work towards running as wayland compositor [Giovanni]
|
||||||
|
- Add DBus API for display configuration
|
||||||
|
[#705670, #706231, #706233, #706322, #706382]
|
||||||
|
- Add abstraction layer for cursor tracking [#705911]
|
||||||
|
- Add support for plugin modality under wayland [#705917]
|
||||||
|
* Disable GTK+ scaling [Alexander; #706388]
|
||||||
|
* Disable blending while updating tower [Robert]
|
||||||
|
* Misc bug fixes and cleanups [Adel, Jasper, Giovanni, Colin, Rico, Florian;
|
||||||
|
#703332, #704437, #706207]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Robert Bragg, Giovanni Campagna, Alban Crequy, Adel Gadllah,
|
||||||
|
Alexander Larsson, Florian Müllner, Jasper St. Pierre, Neil Roberts,
|
||||||
|
Rico Tzschichholz, Colin Walters
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Jiro Matsuzawa [ja], Kjartan Maraas [nb], Matej Urbančič [sl],
|
||||||
|
Marek Černocký [cs], Daniel Mustieles [es], Rafael Ferreira [pt_BR],
|
||||||
|
Yaron Shahrabani [he], Ján Kyselica [sk]
|
||||||
|
|
||||||
|
3.9.5
|
||||||
|
=====
|
||||||
|
* Don't select for touch events on the stage [Jasper; #697192]
|
||||||
|
* Don't queue redraws for obscured regions [Adel; #703332]
|
||||||
|
* Export timestamp of global keybinding events [Bastien; #704858]
|
||||||
|
* Misc bug fixes and cleanups [Jasper, Rico; #703970]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Adel Gadllah, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz
|
||||||
|
|
||||||
|
3.9.4
|
||||||
|
=====
|
||||||
|
* Tweak window shadows [Allan; #702141]
|
||||||
|
* Ignore our own focus events for focus prediction [Jasper; #701017]
|
||||||
|
* Add API to query if the stage is focused [Jasper; #700735]
|
||||||
|
* Add API to query the monitor for a given position [Adel]
|
||||||
|
* Don't force attached dialogs to be border-only [Florian; #702764]
|
||||||
|
* Allow slicing of backgrounds to avoid texture size limits [Ray; #702283]
|
||||||
|
* Miscellaneous bug fixes and cleanups [Adel; #701224, #702564]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Allan Day, Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode
|
||||||
|
|
||||||
|
3.9.3
|
||||||
|
=====
|
||||||
|
* Ensure events are always reported to the grab window [Rui; #701219]
|
||||||
|
* Use new clutter_stage_set_paint_callback() function to prevent dropping
|
||||||
|
frames with frame synced toolkits [Owen; #698794]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Rui Matos, Owen W. Taylor
|
||||||
|
|
||||||
|
3.9.2
|
||||||
|
=====
|
||||||
|
* Add meta_window_can_close() function [Jasper; #699269]
|
||||||
|
* Add support for string-array preferences [Florian; #700223]
|
||||||
|
* Fix a potential race condition with _NET_WM_MOVERESIZE [Jasper; #699777]
|
||||||
|
* Fix shade window action [Stef; #693714]
|
||||||
|
* Remove overlay_group [Giovanni; #700735]
|
||||||
|
* Improve tracking of the focus window [Dan, Jasper; #647706]
|
||||||
|
* Add API to freeze/unfreeze the keyboard [Rui; #697001]
|
||||||
|
* Grab and emit a signal when XK_ISO_Next_Group is pressed [Rui; #697002]
|
||||||
|
* Misc bug fixes and cleanups [Dieter, Jasper, Rui; #699636, #700735, #697000]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Rui Matos, Florian Müllner, Jasper St. Pierre,
|
||||||
|
Dieter Verfaillie, Stef Walter, Dan Winship
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Kjartan Maraas [nb], Ján Kyselica [sk]
|
||||||
|
|
||||||
|
3.9.1
|
||||||
|
=====
|
||||||
|
* Fix miscellaneous memory leaks [Pavel; #698710]
|
||||||
|
* Misc fixes and cleanups [Stef, Simon; #698179, #697758]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Simon McVittie, Pavel Vasin, Stef Walter
|
||||||
|
|
||||||
|
3.8.1
|
||||||
|
=====
|
||||||
|
* Fix crash when getting default font [Bastien; #696814]
|
||||||
|
* Fix ungrabbing of keybindings [Rui; #697003]
|
||||||
|
* Misc fixes and cleanups [Jasper, Simon; #697758]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Jasper Lievisse Adriaanse, Rui Matos, Simon McVittie, Bastien Nocera
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Guillaume Desmottes [fr], Shankar Prasad [kn], Bruce Cowan [en_GB],
|
||||||
|
Andika Triwidada [id], Yaron Shahrabani [he], Kjartan Maraas [nb],
|
||||||
|
Gheyret Kenji [ug]
|
||||||
|
|
||||||
|
3.8.0
|
||||||
|
=====
|
||||||
|
* Address major memory leak when changing backgrounds [Ray; #696157]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Sandeep Sheshrao Shedmake [mr], Victor Ibragimov [tg], Gabor Kelemen [hu],
|
||||||
|
Ville-Pekka Vainio [fi], Rajesh Ranjan [hi], Dr.T.Vasudevan [ta],
|
||||||
|
ManojKumar Giri [or], Yuri Myasoedov [ru], Petr Kovar [cs],
|
||||||
|
Jiro Matsuzawa [ja], Krishnababu Krothapalli [te], Ani Peter [ml],
|
||||||
|
Inaki Larranaga Murgoitio [eu]
|
||||||
|
|
||||||
|
3.7.92
|
||||||
|
======
|
||||||
|
* Build and improve reference docs [Tomeu; #676856, #695641, #695935]
|
||||||
|
* Add tracking of whether there are fullscreen windows [Owen; 649748]
|
||||||
|
* Misc bug fixes and cleanups [Adel, Giovanni, Owen, Jasper, Florian; #695269,
|
||||||
|
#695711, #694046, #695813, #695881, #676856, #696053, #682779, #696089,
|
||||||
|
#696091, #696087]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Adel Gadllah, Florian Müllner, Jasper St. Pierre,
|
||||||
|
Tomeu Vizoso, Owen W. Taylor
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW], Rafael Ferreira [pt_BR],
|
||||||
|
Ihar Hrachyshka [be], Nilamdyuti Goswami [as], Matej Urbančič [sl],
|
||||||
|
Dimitris Spingos [el], Jan Kyselica [sk], Khaled Hosny [ar],
|
||||||
|
Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], Sweta Kothari [gu],
|
||||||
|
Milo Casagrande [it], Changwoo Ryu [ko], Gil Forcada [ca],
|
||||||
|
Carles Ferrando [ca@valencia], Mattias Põldaru [et], Alexandre Franke [fr],
|
||||||
|
Ask H. Larsen [da], Rūdolfs Mazurs [lv], Nguyễn Thái Ngọc Duy [vi]
|
||||||
|
|
||||||
|
3.7.91
|
||||||
|
======
|
||||||
|
* Fix windows being treated as remote after hostname changes [Ray; #688716]
|
||||||
|
* Add meta_window_get_all_monitors() method [Adel; #646861]
|
||||||
|
* Add grab API for externally defined accelerators [Florian; #643111]
|
||||||
|
* Make session registration an explicit step [Ray; #694876]
|
||||||
|
* Avoid unnecessary stage redraws [Adel; #694988, #695006]
|
||||||
|
* Misc fixes [Giovanni, Ray, Jasper, Rui, Pavel, Owen; #694801, #694725,
|
||||||
|
#694641, #694393, #678917, #695093, #694837, #695135, #694771, #694321]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||||
|
Jasper St. Pierre, Ray Strode, Owen Taylor, Pavel Vasin
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Daniel Mustieles [es], Yaron Shahrabani [he], A S Alam [pa], Piotr Drąg [pl],
|
||||||
|
Gheyret Kenji [ug], Alexandre Franke [fr], Milo Casagrande [it],
|
||||||
|
Fran Diéguez [gl], Dimitris Spingos [el], Мирослав Николић [sr, sr@latin],
|
||||||
|
Chao-Hsiung Liao [zh_HK, zh_TW], Nguyễn Thái Ngọc Duy [vi],
|
||||||
|
Aurimas Černius [lt], Mario Blättermann [de], Kjartan Maraas [nb]
|
||||||
|
|
||||||
|
3.7.90
|
||||||
|
======
|
||||||
|
* Support _NET_WM_OPAQUE_REGION [Jasper, Adel; #679901]
|
||||||
|
* Add wrapper for XI2.3 pointer barriers [Jasper; #677215]
|
||||||
|
* Update style of resize popups [Cosimo; #692741]
|
||||||
|
* Implement compositor <-> application frame synchronization [Owen; #685463]
|
||||||
|
* Handle animated backgrounds [Ray; #682427]
|
||||||
|
* Add a new window group for override-redirect windows [Gayan; #633620]
|
||||||
|
* Pass on pointer events on guard window to Clutter [Jasper; #681540]
|
||||||
|
* Show correct shortcut in window menus [Giovanni; #694045]
|
||||||
|
* Don't put minimized windows at the back of alt-tab [Jasper; #693991]
|
||||||
|
* Misc bug fixes and cleanups [Jasper, Rico, Adel, Florian, Rui, Giovanni,
|
||||||
|
Owen; #692679, #693354, #690581, #693439, #692718, #693475, #693482, #693540,
|
||||||
|
#690580, #680990, #693833, #693922, #693854, #694224]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||||
|
Gayan Perera, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Fran Diéguez [gl], A S Alam [pa], Alexandre Franke [fr], Aurimas Černius [lt],
|
||||||
|
Мирослав Николић [sr, sr@latin], Fran Diéguez [gl], Piotr Drąg [pl],
|
||||||
|
Luca Ferretti [it], Daniel Mustieles [es]
|
||||||
|
|
||||||
|
3.7.5
|
||||||
|
=====
|
||||||
|
* Don't allow multiline window titles [Jon; #683056]
|
||||||
|
* Make meta_window_located_on_workspace() public [Jasper; #691744]
|
||||||
|
* Request XI2.3 [Colin; #692877]
|
||||||
|
* Add meta_window_set_icon_geometry() method [Florian; #692997]
|
||||||
|
* Require XFixes 5.0 [Jasper; #677215]
|
||||||
|
* Change unredirection hints to match spec changes [Adel; #693064]
|
||||||
|
* Improve unredict heuristicts [Adel; #683786]
|
||||||
|
* Misc bug fixes and cleanups [Florian, Jasper, Adel; #691874, #679901,
|
||||||
|
#692952, #693042]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Adel Gadllah, William Jon McCann, Florian Müllner, Jasper St. Pierre,
|
||||||
|
Colin Walters
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Daniel Mustieles [es], Ihar Hrachyshka [be], Nilamdyuti Goswami [as],
|
||||||
|
Gheyret Kenji [ug], Kjartan Maraas [nb], Yaron Shahrabani [he],
|
||||||
|
Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK,zh_TW], Milo Casagrande [it]
|
||||||
|
|
||||||
|
3.7.4
|
||||||
|
=====
|
||||||
|
* Add support for bypass compositor hints [Adel; #683020]
|
||||||
|
* Make automaximization optional [Adel; #680990]
|
||||||
|
* Add method for checking if the application is responding [Giovanni; #684340]
|
||||||
|
* Expose the xinput opcode [Jasper; #690590]
|
||||||
|
* Rebrand "minimize" as "hide" [Florian; #682887]
|
||||||
|
* Misc bug fixes and cleanups [Giovanni, Ray, Jasper, Matthias, Debarshi,
|
||||||
|
Florian, Rui; #690454, #690573, #690593, #690956, #691363, #690609, #690317,
|
||||||
|
#689263]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Giovanni Campagna, Matthias Clasen, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||||
|
Debarshi Ray, Jasper St. Pierre, Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Mattias Põldaru [et], Yaron Shahrabani [he], Daniel Mustieles [es],
|
||||||
|
Khaled Hosny [ar], Fran Diéguez [gl], A S Alam [pa], Piotr Drąg [pl],
|
||||||
|
Rafael Ferreira [pt_BR], Nilamdyuti Goswami [as], Alexander Shopov [bg],
|
||||||
|
Matej Urbančič [sl]
|
||||||
|
|
||||||
3.7.3
|
3.7.3
|
||||||
=====
|
=====
|
||||||
* Fix maximized windows jumping to other monitors [Alban; #556696]
|
* Fix maximized windows jumping to other monitors [Alban; #556696]
|
||||||
|
18
README
18
README
@@ -1,16 +1,10 @@
|
|||||||
Metacity is not a meta-City as in an urban center, but rather
|
The original codebase named "Metacity" is not a meta-City as in an
|
||||||
Meta-ness as in the state of being meta. i.e. metacity : meta as
|
urban center, but rather Meta-ness as in the state of being
|
||||||
opacity : opaque. Also it may have something to do with the Meta key
|
meta. i.e. metacity : meta as opacity : opaque. Also it may have
|
||||||
on UNIX keyboards.
|
something to do with the Meta key on UNIX keyboards.
|
||||||
|
|
||||||
The first release of Metacity was version 2.3. Metacity has no need for
|
Since then, it has been renamed mutter after a rebase on top of
|
||||||
your petty hangups about version numbers.
|
clutter as a compositing manager.
|
||||||
|
|
||||||
The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-,
|
|
||||||
2.10.x, 2.12.x, 2.14.x, 2.16.x.
|
|
||||||
|
|
||||||
Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x,
|
|
||||||
2.15.x, 2.17.x.
|
|
||||||
|
|
||||||
COMPILING MUTTER
|
COMPILING MUTTER
|
||||||
===
|
===
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
# Run this to generate all the initial makefiles, etc.
|
# Run this to generate all the initial makefiles, etc.
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
srcdir=`dirname $0`
|
||||||
test -z "$srcdir" && srcdir=.
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
PKG_NAME="mutter"
|
PKG_NAME="mutter"
|
||||||
REQUIRED_AUTOMAKE_VERSION=1.10
|
REQUIRED_AUTOMAKE_VERSION=1.13
|
||||||
|
|
||||||
(test -f $srcdir/configure.ac \
|
(test -f $srcdir/configure.ac \
|
||||||
&& test -d $srcdir/src) || {
|
&& test -d $srcdir/src) || {
|
||||||
|
83
configure.ac
83
configure.ac
@@ -1,8 +1,9 @@
|
|||||||
AC_PREREQ(2.50)
|
AC_PREREQ(2.50)
|
||||||
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [7])
|
m4_define([mutter_minor_version], [11])
|
||||||
m4_define([mutter_micro_version], [3])
|
m4_define([mutter_micro_version], [90])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
@@ -15,10 +16,14 @@ AC_INIT([mutter], [mutter_version],
|
|||||||
AC_CONFIG_SRCDIR(src/core/display.c)
|
AC_CONFIG_SRCDIR(src/core/display.c)
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar])
|
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar])
|
||||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
||||||
AM_MAINTAINER_MODE([enable])
|
AM_MAINTAINER_MODE([enable])
|
||||||
|
|
||||||
|
# Change pkglibdir and pkgdatadir to mutter-wayland instead of mutter
|
||||||
|
PACKAGE="mutter-wayland"
|
||||||
|
AC_SUBST([PACKAGE], [$PACKAGE])
|
||||||
|
|
||||||
MUTTER_MAJOR_VERSION=mutter_major_version
|
MUTTER_MAJOR_VERSION=mutter_major_version
|
||||||
MUTTER_MINOR_VERSION=mutter_minor_version
|
MUTTER_MINOR_VERSION=mutter_minor_version
|
||||||
MUTTER_MICRO_VERSION=mutter_micro_version
|
MUTTER_MICRO_VERSION=mutter_micro_version
|
||||||
@@ -34,7 +39,7 @@ AC_SUBST(MUTTER_PLUGIN_DIR)
|
|||||||
# Honor aclocal flags
|
# Honor aclocal flags
|
||||||
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
|
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
|
||||||
|
|
||||||
GETTEXT_PACKAGE=mutter
|
GETTEXT_PACKAGE=mutter-wayland
|
||||||
AC_SUBST(GETTEXT_PACKAGE)
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
|
||||||
|
|
||||||
@@ -71,10 +76,12 @@ MUTTER_PC_MODULES="
|
|||||||
gio-2.0 >= 2.25.10
|
gio-2.0 >= 2.25.10
|
||||||
pango >= 1.2.0
|
pango >= 1.2.0
|
||||||
cairo >= 1.10.0
|
cairo >= 1.10.0
|
||||||
gsettings-desktop-schemas >= 3.3.0
|
gsettings-desktop-schemas >= 3.7.3
|
||||||
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
||||||
$CLUTTER_PACKAGE >= 1.9.10
|
$CLUTTER_PACKAGE >= 1.17.5
|
||||||
cogl-1.0 >= 1.9.6
|
cogl-1.0 >= 1.17.1
|
||||||
|
upower-glib >= 0.99.0
|
||||||
|
gnome-desktop-3.0
|
||||||
"
|
"
|
||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
@@ -113,14 +120,32 @@ AC_ARG_ENABLE(shape,
|
|||||||
[disable mutter's use of the shaped window extension]),,
|
[disable mutter's use of the shaped window extension]),,
|
||||||
enable_shape=auto)
|
enable_shape=auto)
|
||||||
|
|
||||||
|
## Wayland support requires the xserver.xml protocol extension found in the weston
|
||||||
|
## repository but since there aren't currently established conventions for
|
||||||
|
## installing and discovering these we simply require a location to be given
|
||||||
|
## explicitly...
|
||||||
|
AC_ARG_WITH([wayland-protocols],
|
||||||
|
[AS_HELP_STRING([--with-wayland-protocols], [Location for wayland extension protocol specs])],
|
||||||
|
[
|
||||||
|
],
|
||||||
|
[])
|
||||||
|
|
||||||
|
AC_ARG_WITH([xwayland-path],
|
||||||
|
[AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])],
|
||||||
|
[XWAYLAND_PATH="$withval"],
|
||||||
|
[XWAYLAND_PATH="$bindir/Xorg"])
|
||||||
|
|
||||||
AM_GLIB_GNU_GETTEXT
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
## here we get the flags we'll actually use
|
## here we get the flags we'll actually use
|
||||||
# GRegex requires Glib-2.14.0
|
# GRegex requires Glib-2.14.0
|
||||||
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
|
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
|
||||||
# gtk_window_set_icon_name requires gtk2+-2.6.0
|
PKG_CHECK_MODULES(MUTTER_LAUNCH, libdrm libsystemd-login)
|
||||||
PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-3.0)
|
|
||||||
PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-3.0)
|
saved_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $MUTTER_LAUNCH"
|
||||||
|
AC_CHECK_FUNCS([sd_session_get_vt])
|
||||||
|
LIBS="$saved_LIBS"
|
||||||
|
|
||||||
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
# Unconditionally use this dir to avoid a circular dep with gnomecc
|
||||||
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
|
||||||
@@ -185,22 +210,20 @@ if test x$found_introspection != xno; then
|
|||||||
AC_SUBST(META_GIR)
|
AC_SUBST(META_GIR)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([Xcursor])
|
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
|
||||||
if $PKG_CONFIG xcursor; then
|
|
||||||
have_xcursor=yes
|
|
||||||
else
|
|
||||||
have_xcursor=no
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($have_xcursor)
|
|
||||||
|
|
||||||
if test x$have_xcursor = xyes; then
|
AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
|
||||||
echo "Building with Xcursor"
|
AS_IF([test "x$WAYLAND_SCANNER" = "xno"],
|
||||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
|
AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
|
||||||
AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support])
|
AC_SUBST([WAYLAND_SCANNER])
|
||||||
fi
|
AC_SUBST(XWAYLAND_PATH)
|
||||||
|
|
||||||
|
MUTTER_PC_MODULES="$MUTTER_PC_MODULES clutter-wayland-1.0 clutter-wayland-compositor-1.0 clutter-egl-1.0 wayland-server libdrm"
|
||||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||||
|
|
||||||
|
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
||||||
|
AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
|
||||||
|
|
||||||
# This is used for plugins
|
# This is used for plugins
|
||||||
AC_SUBST(CLUTTER_PACKAGE)
|
AC_SUBST(CLUTTER_PACKAGE)
|
||||||
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)
|
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)
|
||||||
@@ -304,9 +327,6 @@ if test "x$found_xsync" = "xyes"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
||||||
MUTTER_MESSAGE_LIBS="$MUTTER_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
|
||||||
MUTTER_WINDOW_DEMO_LIBS="$MUTTER_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
|
|
||||||
MUTTER_PROPS_LIBS="$MUTTER_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
|
|
||||||
|
|
||||||
found_sm=no
|
found_sm=no
|
||||||
case "$MUTTER_LIBS" in
|
case "$MUTTER_LIBS" in
|
||||||
@@ -361,8 +381,7 @@ if test "x$enable_debug" = "xyes"; then
|
|||||||
CFLAGS="$CFLAGS -g -O"
|
CFLAGS="$CFLAGS -g -O"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For fix-meta-rectangle.py
|
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
||||||
AM_PATH_PYTHON([2.5])
|
|
||||||
|
|
||||||
#### Warnings (last since -Werror can disturb other tests)
|
#### Warnings (last since -Werror can disturb other tests)
|
||||||
|
|
||||||
@@ -434,12 +453,12 @@ AC_CONFIG_FILES([
|
|||||||
Makefile
|
Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
doc/man/Makefile
|
doc/man/Makefile
|
||||||
|
doc/reference/Makefile
|
||||||
|
doc/reference/meta-docs.sgml
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/wm-tester/Makefile
|
src/libmutter-wayland.pc
|
||||||
src/libmutter.pc
|
|
||||||
src/mutter-plugins.pc
|
|
||||||
src/tools/Makefile
|
|
||||||
src/compositor/plugins/Makefile
|
src/compositor/plugins/Makefile
|
||||||
|
protocol/Makefile
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -455,7 +474,7 @@ fi
|
|||||||
|
|
||||||
dnl ==========================================================================
|
dnl ==========================================================================
|
||||||
echo "
|
echo "
|
||||||
mutter-$VERSION
|
mutter-wayland-$VERSION
|
||||||
|
|
||||||
prefix: ${prefix}
|
prefix: ${prefix}
|
||||||
source code location: ${srcdir}
|
source code location: ${srcdir}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
SUBDIRS = man
|
SUBDIRS = man reference
|
||||||
|
|
||||||
EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \
|
EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \
|
||||||
how-to-get-focus-right.txt
|
how-to-get-focus-right.txt
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
man_MANS = mutter.1 mutter-theme-viewer.1 \
|
man_MANS = mutter.1
|
||||||
mutter-window-demo.1 mutter-message.1
|
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS)
|
EXTRA_DIST = $(man_MANS)
|
||||||
|
@@ -1,60 +0,0 @@
|
|||||||
.\" Hey, EMACS: -*- nroff -*-
|
|
||||||
.\" First parameter, NAME, should be all caps
|
|
||||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
|
||||||
.\" other parameters are allowed: see man(7), man(1)
|
|
||||||
.\" -----
|
|
||||||
.\" This file was confirmed to be licenced under the GPL
|
|
||||||
.\" by its author and copyright holder, Akira TAGOH, on June 1st 2008:
|
|
||||||
.\"
|
|
||||||
.\" > I'm comfortable with DFSG-free. that sounds great if you think it's
|
|
||||||
.\" > useful and worth containing it in upstream.
|
|
||||||
.\" ...
|
|
||||||
.\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever,
|
|
||||||
.\" > since I have contributed that for Debian. so GPL is no problem for me.
|
|
||||||
.\" -----
|
|
||||||
.TH MUTTER\-MESSAGE 1 "28 August 2002"
|
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
|
||||||
.\"
|
|
||||||
.\" Some roff macros, for reference:
|
|
||||||
.\" .nh disable hyphenation
|
|
||||||
.\" .hy enable hyphenation
|
|
||||||
.\" .ad l left justify
|
|
||||||
.\" .ad b justify to both left and right margins
|
|
||||||
.\" .nf disable filling
|
|
||||||
.\" .fi enable filling
|
|
||||||
.\" .br insert line break
|
|
||||||
.\" .sp <n> insert n+1 empty lines
|
|
||||||
.\" for manpage-specific macros, see man(7)
|
|
||||||
.SH NAME
|
|
||||||
MUTTER\-MESSAGE \- a command to send a message to Mutter
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B MUTTER\-MESSAGE
|
|
||||||
[restart|reload\-theme|enable\-keybindings|disable\-keybindings]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
This manual page documents briefly the
|
|
||||||
.B mutter\-message\fP.
|
|
||||||
This manual page was written for the Debian distribution
|
|
||||||
because the original program does not have a manual page.
|
|
||||||
.PP
|
|
||||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
|
||||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
|
||||||
.\" respectively.
|
|
||||||
\fBmutter\-message\fP send a specified message to \fBmutter\fP(1).
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.B restart
|
|
||||||
Restart \fBmutter\fP(1) which is running.
|
|
||||||
.TP
|
|
||||||
.B reload-theme
|
|
||||||
Reload a theme which is specified on gsettings database.
|
|
||||||
.TP
|
|
||||||
.B enable-keybindings
|
|
||||||
Enable all of keybindings which is specified on gsettings database.
|
|
||||||
.TP
|
|
||||||
.B disable-keybindings
|
|
||||||
Disable all of keybindings which is specified on gsettings database.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR mutter (1)
|
|
||||||
.SH AUTHOR
|
|
||||||
This manual page was written by Akira TAGOH <tagoh@debian.org>,
|
|
||||||
for the Debian GNU/Linux system (but may be used by others).
|
|
@@ -1,43 +0,0 @@
|
|||||||
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
|
|
||||||
.\" other parms are allowed: see man(7), man(1)
|
|
||||||
.\"
|
|
||||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
|
||||||
.\"
|
|
||||||
.TH MUTTER-THEME-VIEWER 1 "1 June 2004"
|
|
||||||
.SH NAME
|
|
||||||
mutter-theme-viewer \- view mutter themes
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B mutter-theme-viewer
|
|
||||||
[
|
|
||||||
.I THEMENAME
|
|
||||||
]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.\" Putting a newline after each sentence can generate better output.
|
|
||||||
.B mutter-theme-viewer
|
|
||||||
allows you to preview any installed Mutter theme.
|
|
||||||
.PP
|
|
||||||
When designing a new Mutter theme, you can use
|
|
||||||
.B mutter-theme-viewer
|
|
||||||
to measure the performance of a window frame option, and to preview
|
|
||||||
the option.
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.I THEMENAME
|
|
||||||
Name of the theme to be shown (\fIAtlanta\fR by default).
|
|
||||||
It is case-sensitive.
|
|
||||||
.SH FILES
|
|
||||||
.br
|
|
||||||
.nf
|
|
||||||
.TP
|
|
||||||
.I /usr/share/themes
|
|
||||||
system themes directory
|
|
||||||
.TP
|
|
||||||
.I /usr/share/themes/*/mutter-1/mutter-theme-1.xml
|
|
||||||
theme specification file
|
|
||||||
.SH AUTHOR
|
|
||||||
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
|
||||||
the Debian GNU/Linux system (but may be used by others).
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
.\" Always quote multiple words for .SH
|
|
||||||
.BR mutter (1),
|
|
||||||
.BR mutter-window-demo (1).
|
|
@@ -1,25 +0,0 @@
|
|||||||
.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection
|
|
||||||
.\" other parms are allowed: see man(7), man(1)
|
|
||||||
.\"
|
|
||||||
.\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>.
|
|
||||||
.\"
|
|
||||||
.TH MUTTER-WINDOW-DEMO 1 "1 June 2004"
|
|
||||||
.SH NAME
|
|
||||||
mutter-window-demo \- demo of window features
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B mutter-window-demo
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.\" Putting a newline after each sentence can generate better output.
|
|
||||||
This program demonstrates various kinds of windows that window
|
|
||||||
managers and window manager themes should handle.
|
|
||||||
.PP
|
|
||||||
Be sure to tear off the menu and toolbar, those are also a special
|
|
||||||
kind of window.
|
|
||||||
.SH AUTHOR
|
|
||||||
This manual page was written by Jose M. Moya <josem@die.upm.es>, for
|
|
||||||
the Debian GNU/Linux system (but may be used by others).
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
.\" Always quote multiple words for .SH
|
|
||||||
.BR x-window-manager (1),
|
|
||||||
.BR mutter (1),
|
|
||||||
.BR mutter-theme-viewer (1).
|
|
166
doc/reference/Makefile.am
Normal file
166
doc/reference/Makefile.am
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
# We require automake 1.6 at least.
|
||||||
|
AUTOMAKE_OPTIONS = 1.6
|
||||||
|
|
||||||
|
# This is a blank Makefile.am for using gtk-doc.
|
||||||
|
# Copy this to your project's API docs directory and modify the variables to
|
||||||
|
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||||
|
# of using the various options.
|
||||||
|
|
||||||
|
# The name of the module, e.g. 'glib'.
|
||||||
|
DOC_MODULE=meta
|
||||||
|
|
||||||
|
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
||||||
|
#DOC_MODULE_VERSION=2
|
||||||
|
|
||||||
|
|
||||||
|
# The top-level SGML file. You can change this if you want to.
|
||||||
|
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||||
|
|
||||||
|
# Directories containing the source code, relative to $(srcdir).
|
||||||
|
# gtk-doc will search all .c and .h files beneath these paths
|
||||||
|
# for inline comments documenting functions and macros.
|
||||||
|
# e.g. DOC_SOURCE_DIR=../../../gtk ../../../gdk
|
||||||
|
DOC_SOURCE_DIR=../../src/
|
||||||
|
|
||||||
|
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||||
|
SCANGOBJ_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-scan.
|
||||||
|
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||||
|
SCAN_OPTIONS=--rebuild-types
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkdb.
|
||||||
|
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mktmpl
|
||||||
|
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||||
|
MKTMPL_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-mkhtml
|
||||||
|
MKHTML_OPTIONS=
|
||||||
|
|
||||||
|
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||||
|
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||||
|
FIXXREF_OPTIONS=
|
||||||
|
|
||||||
|
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||||
|
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||||
|
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||||
|
HFILE_GLOB=$(top_srcdir)/src/*/*.h
|
||||||
|
CFILE_GLOB=$(top_srcdir)/src/*/*.c
|
||||||
|
|
||||||
|
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||||
|
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||||
|
EXTRA_HFILES=
|
||||||
|
|
||||||
|
# Header files or dirs to ignore when scanning. Use base file/dir names
|
||||||
|
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
|
||||||
|
IGNORE_HFILES= \
|
||||||
|
async-getprop.h \
|
||||||
|
atoms.h \
|
||||||
|
bell.h \
|
||||||
|
boxes-private.h \
|
||||||
|
clutter-utils.h \
|
||||||
|
cogl-utils.h \
|
||||||
|
compositor-private.h \
|
||||||
|
constraints.h \
|
||||||
|
core.h \
|
||||||
|
display-private.h \
|
||||||
|
draw-workspace.h \
|
||||||
|
edge-resistance.h \
|
||||||
|
eventqueue.h \
|
||||||
|
frame.h \
|
||||||
|
frames.h \
|
||||||
|
group-private.h \
|
||||||
|
group-props.h \
|
||||||
|
iconcache.h \
|
||||||
|
inlinepixbufs.h \
|
||||||
|
keybindings-private.h \
|
||||||
|
menu.h \
|
||||||
|
metaaccellabel.h \
|
||||||
|
meta-background-actor-private.h \
|
||||||
|
meta-background-group-private.h \
|
||||||
|
meta-module.h \
|
||||||
|
meta-plugin-manager.h \
|
||||||
|
meta-shadow-factory-private.h \
|
||||||
|
meta-texture-rectangle.h \
|
||||||
|
meta-texture-tower.h \
|
||||||
|
meta-window-actor-private.h \
|
||||||
|
meta-window-group.h \
|
||||||
|
meta-window-shape.h \
|
||||||
|
mutter-enum-types.h \
|
||||||
|
mutter-Xatomtype.h \
|
||||||
|
place.h \
|
||||||
|
preview-widget.h \
|
||||||
|
region-utils.h \
|
||||||
|
resizepopup.h \
|
||||||
|
screen-private.h \
|
||||||
|
session.h \
|
||||||
|
stack.h \
|
||||||
|
stack-tracker.h \
|
||||||
|
stamp-mutter-enum-types.h \
|
||||||
|
tabpopup.h \
|
||||||
|
theme.h \
|
||||||
|
theme-private.h \
|
||||||
|
tile-preview.h \
|
||||||
|
ui.h \
|
||||||
|
window-private.h \
|
||||||
|
window-props.h \
|
||||||
|
workspace-private.h \
|
||||||
|
xprops.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
MKDB_OPTIONS+=--ignore-files="$(IGNORE_HFILES)"
|
||||||
|
|
||||||
|
# Images to copy into HTML directory.
|
||||||
|
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||||
|
HTML_IMAGES=
|
||||||
|
|
||||||
|
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||||
|
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||||
|
content_files= \
|
||||||
|
mutter-overview.xml \
|
||||||
|
running-mutter.xml \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||||
|
# These files must be listed here *and* in content_files
|
||||||
|
# e.g. expand_content_files=running.sgml
|
||||||
|
expand_content_files= \
|
||||||
|
mutter-overview.xml \
|
||||||
|
running-mutter.xml \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||||
|
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||||
|
# signals and properties.
|
||||||
|
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||||
|
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||||
|
GTKDOC_CFLAGS=$(MUTTER_CFLAGS)
|
||||||
|
GTKDOC_LIBS=$(MUTTER_LIBS) $(top_builddir)/src/libmutter-wayland.la
|
||||||
|
|
||||||
|
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||||
|
include $(top_srcdir)/gtk-doc.make
|
||||||
|
|
||||||
|
# Other files to distribute
|
||||||
|
# e.g. EXTRA_DIST += version.xml.in
|
||||||
|
EXTRA_DIST +=
|
||||||
|
|
||||||
|
# Files not to distribute
|
||||||
|
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
||||||
|
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
||||||
|
DISTCLEANFILES = $(DOC_MODULES).types
|
||||||
|
|
||||||
|
# Comment this out if you want 'make check' to test you doc status
|
||||||
|
# and run some sanity checks
|
||||||
|
if ENABLE_GTK_DOC
|
||||||
|
TESTS_ENVIRONMENT = cd $(srcdir) && \
|
||||||
|
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
|
||||||
|
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
|
||||||
|
#TESTS = $(GTKDOC_CHECK)
|
||||||
|
endif
|
||||||
|
|
||||||
|
-include $(top_srcdir)/git.mk
|
59
doc/reference/meta-docs.sgml.in
Normal file
59
doc/reference/meta-docs.sgml.in
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||||
|
[
|
||||||
|
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||||
|
<!ENTITY version "@VERSION@">
|
||||||
|
]>
|
||||||
|
<book id="index">
|
||||||
|
<bookinfo>
|
||||||
|
<title>Mutter Reference Manual</title>
|
||||||
|
<releaseinfo>
|
||||||
|
This document is for Mutter &version;.
|
||||||
|
The latest version of this documentation can be found on-line at
|
||||||
|
<ulink role="online-location" url="http://developer.gnome.org/meta/">http://developer.gnome.org/meta/</ulink>.
|
||||||
|
</releaseinfo>
|
||||||
|
</bookinfo>
|
||||||
|
|
||||||
|
<xi:include href="xml/mutter-overview.xml"/>
|
||||||
|
<xi:include href="xml/running-mutter.xml"/>
|
||||||
|
|
||||||
|
<part id="core-reference">
|
||||||
|
<title>Mutter Core Reference</title>
|
||||||
|
<xi:include href="xml/main.xml"/>
|
||||||
|
<xi:include href="xml/common.xml"/>
|
||||||
|
<xi:include href="xml/gradient.xml"/>
|
||||||
|
<xi:include href="xml/prefs.xml"/>
|
||||||
|
<xi:include href="xml/util.xml"/>
|
||||||
|
<xi:include href="xml/errors.xml"/>
|
||||||
|
<xi:include href="xml/meta-plugin.xml"/>
|
||||||
|
<xi:include href="xml/barrier.xml"/>
|
||||||
|
<xi:include href="xml/boxes.xml"/>
|
||||||
|
<xi:include href="xml/compositor.xml"/>
|
||||||
|
<xi:include href="xml/display.xml"/>
|
||||||
|
<xi:include href="xml/group.xml"/>
|
||||||
|
<xi:include href="xml/keybindings.xml"/>
|
||||||
|
<xi:include href="xml/meta-background-actor.xml"/>
|
||||||
|
<xi:include href="xml/meta-shadow-factory.xml"/>
|
||||||
|
<xi:include href="xml/meta-shaped-texture.xml"/>
|
||||||
|
<xi:include href="xml/meta-window-actor.xml"/>
|
||||||
|
<xi:include href="xml/screen.xml"/>
|
||||||
|
<xi:include href="xml/window.xml"/>
|
||||||
|
<xi:include href="xml/workspace.xml"/>
|
||||||
|
</part>
|
||||||
|
|
||||||
|
<chapter id="object-tree">
|
||||||
|
<title>Object Hierarchy</title>
|
||||||
|
<xi:include href="xml/tree_index.sgml"/>
|
||||||
|
</chapter>
|
||||||
|
<index id="api-index-full">
|
||||||
|
<title>API Index</title>
|
||||||
|
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
<index id="deprecated-api-index" role="deprecated">
|
||||||
|
<title>Index of deprecated API</title>
|
||||||
|
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
||||||
|
</index>
|
||||||
|
|
||||||
|
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||||
|
</book>
|
683
doc/reference/meta-sections.txt
Normal file
683
doc/reference/meta-sections.txt
Normal file
@@ -0,0 +1,683 @@
|
|||||||
|
<SECTION>
|
||||||
|
<FILE>barrier</FILE>
|
||||||
|
<TITLE>MetaBarrier</TITLE>
|
||||||
|
MetaBarrier
|
||||||
|
MetaBarrierClass
|
||||||
|
meta_barrier_is_active
|
||||||
|
meta_barrier_destroy
|
||||||
|
meta_barrier_release
|
||||||
|
MetaBarrierDirection
|
||||||
|
MetaBarrierEvent
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_BARRIER
|
||||||
|
META_BARRIER_CLASS
|
||||||
|
META_BARRIER_GET_CLASS
|
||||||
|
META_IS_BARRIER
|
||||||
|
META_IS_BARRIER_CLASS
|
||||||
|
META_TYPE_BARRIER
|
||||||
|
META_TYPE_BARRIER_EVENT
|
||||||
|
MetaBarrierPrivate
|
||||||
|
meta_barrier_event_get_type
|
||||||
|
meta_barrier_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>boxes</FILE>
|
||||||
|
MetaRectangle
|
||||||
|
MetaStrut
|
||||||
|
MetaEdgeType
|
||||||
|
MetaEdge
|
||||||
|
meta_rectangle_copy
|
||||||
|
meta_rectangle_free
|
||||||
|
meta_rect
|
||||||
|
meta_rectangle_area
|
||||||
|
meta_rectangle_intersect
|
||||||
|
meta_rectangle_equal
|
||||||
|
meta_rectangle_union
|
||||||
|
meta_rectangle_overlap
|
||||||
|
meta_rectangle_vert_overlap
|
||||||
|
meta_rectangle_horiz_overlap
|
||||||
|
meta_rectangle_could_fit_rect
|
||||||
|
meta_rectangle_contains_rect
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_TYPE_RECTANGLE
|
||||||
|
meta_rectangle_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>common</FILE>
|
||||||
|
META_VIRTUAL_CORE_POINTER_ID
|
||||||
|
META_VIRTUAL_CORE_KEYBOARD_ID
|
||||||
|
MetaFrameFlags
|
||||||
|
MetaMenuOp
|
||||||
|
MetaWindowMenuFunc
|
||||||
|
MetaGrabOp
|
||||||
|
MetaCursor
|
||||||
|
MetaFrameType
|
||||||
|
MetaVirtualModifier
|
||||||
|
MetaDirection
|
||||||
|
MetaMotionDirection
|
||||||
|
MetaSide
|
||||||
|
MetaButtonFunction
|
||||||
|
MAX_BUTTONS_PER_CORNER
|
||||||
|
MetaButtonLayout
|
||||||
|
MetaFrameBorders
|
||||||
|
meta_frame_borders_clear
|
||||||
|
META_ICON_WIDTH
|
||||||
|
META_ICON_HEIGHT
|
||||||
|
META_MINI_ICON_WIDTH
|
||||||
|
META_MINI_ICON_HEIGHT
|
||||||
|
META_DEFAULT_ICON_NAME
|
||||||
|
META_PRIORITY_RESIZE
|
||||||
|
META_PRIORITY_BEFORE_REDRAW
|
||||||
|
META_PRIORITY_REDRAW
|
||||||
|
META_PRIORITY_PREFS_NOTIFY
|
||||||
|
POINT_IN_RECT
|
||||||
|
MetaStackLayer
|
||||||
|
MetaWindowMenu
|
||||||
|
MetaResizePopup
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>compositor</FILE>
|
||||||
|
MetaCompEffect
|
||||||
|
MetaCompositor
|
||||||
|
meta_compositor_new
|
||||||
|
meta_compositor_destroy
|
||||||
|
meta_compositor_manage_screen
|
||||||
|
meta_compositor_unmanage_screen
|
||||||
|
meta_compositor_window_shape_changed
|
||||||
|
meta_compositor_process_event
|
||||||
|
meta_compositor_filter_keybinding
|
||||||
|
meta_compositor_add_window
|
||||||
|
meta_compositor_remove_window
|
||||||
|
meta_compositor_show_window
|
||||||
|
meta_compositor_hide_window
|
||||||
|
meta_compositor_switch_workspace
|
||||||
|
meta_compositor_maximize_window
|
||||||
|
meta_compositor_unmaximize_window
|
||||||
|
meta_compositor_sync_window_geometry
|
||||||
|
meta_compositor_set_updates_frozen
|
||||||
|
meta_compositor_queue_frame_drawn
|
||||||
|
meta_compositor_sync_stack
|
||||||
|
meta_compositor_sync_screen_size
|
||||||
|
meta_compositor_flash_screen
|
||||||
|
meta_get_stage_for_screen
|
||||||
|
meta_get_overlay_group_for_screen
|
||||||
|
meta_get_overlay_window
|
||||||
|
meta_get_window_actors
|
||||||
|
meta_get_window_group_for_screen
|
||||||
|
meta_get_top_window_group_for_screen
|
||||||
|
meta_disable_unredirect_for_screen
|
||||||
|
meta_enable_unredirect_for_screen
|
||||||
|
meta_set_stage_input_region
|
||||||
|
meta_empty_stage_input_region
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>display</FILE>
|
||||||
|
MetaTabList
|
||||||
|
MetaTabShowType
|
||||||
|
meta_XFree
|
||||||
|
meta_display_get_compositor_version
|
||||||
|
meta_display_get_xinput_opcode
|
||||||
|
meta_display_supports_extended_barriers
|
||||||
|
meta_display_get_xdisplay
|
||||||
|
meta_display_get_compositor
|
||||||
|
meta_display_get_screens
|
||||||
|
meta_display_has_shape
|
||||||
|
meta_display_screen_for_root
|
||||||
|
meta_display_get_focus_window
|
||||||
|
meta_display_xwindow_is_a_no_focus_window
|
||||||
|
meta_display_get_damage_event_base
|
||||||
|
meta_display_get_shape_event_base
|
||||||
|
meta_display_xserver_time_is_before
|
||||||
|
meta_display_get_last_user_time
|
||||||
|
meta_display_get_current_time
|
||||||
|
meta_display_get_current_time_roundtrip
|
||||||
|
meta_display_get_ignored_modifier_mask
|
||||||
|
meta_display_get_tab_list
|
||||||
|
meta_display_get_tab_next
|
||||||
|
meta_display_get_tab_current
|
||||||
|
meta_display_begin_grab_op
|
||||||
|
meta_display_end_grab_op
|
||||||
|
meta_display_get_grab_op
|
||||||
|
meta_display_add_keybinding
|
||||||
|
meta_display_remove_keybinding
|
||||||
|
meta_display_get_keybinding_action
|
||||||
|
meta_display_set_input_focus_window
|
||||||
|
meta_display_focus_the_no_focus_window
|
||||||
|
meta_display_sort_windows_by_stacking
|
||||||
|
meta_display_get_leader_window
|
||||||
|
meta_display_add_ignored_crossing_serial
|
||||||
|
meta_display_unmanage_screen
|
||||||
|
meta_display_clear_mouse_mode
|
||||||
|
MetaDisplay
|
||||||
|
MetaDisplayClass
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_DISPLAY
|
||||||
|
META_DISPLAY_CLASS
|
||||||
|
META_DISPLAY_GET_CLASS
|
||||||
|
META_IS_DISPLAY
|
||||||
|
META_IS_DISPLAY_CLASS
|
||||||
|
META_TYPE_DISPLAY
|
||||||
|
meta_display_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>errors</FILE>
|
||||||
|
meta_error_trap_push
|
||||||
|
meta_error_trap_pop
|
||||||
|
meta_error_trap_push_with_return
|
||||||
|
meta_error_trap_pop_with_return
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>gradient</FILE>
|
||||||
|
MetaGradientType
|
||||||
|
meta_gradient_create_simple
|
||||||
|
meta_gradient_create_multi
|
||||||
|
meta_gradient_create_interwoven
|
||||||
|
meta_gradient_add_alpha
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>group</FILE>
|
||||||
|
MetaGroup
|
||||||
|
meta_window_get_group
|
||||||
|
meta_window_compute_group
|
||||||
|
meta_window_shutdown_group
|
||||||
|
meta_window_group_leader_changed
|
||||||
|
meta_display_lookup_group
|
||||||
|
meta_group_list_windows
|
||||||
|
meta_group_update_layers
|
||||||
|
meta_group_get_startup_id
|
||||||
|
meta_group_get_size
|
||||||
|
meta_group_property_notify
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>keybindings</FILE>
|
||||||
|
MetaKeyBinding
|
||||||
|
META_TYPE_KEY_BINDING
|
||||||
|
meta_key_binding_get_name
|
||||||
|
meta_key_binding_get_modifiers
|
||||||
|
meta_key_binding_get_mask
|
||||||
|
meta_key_binding_is_builtin
|
||||||
|
meta_keybindings_set_custom_handler
|
||||||
|
meta_screen_ungrab_all_keys
|
||||||
|
meta_screen_grab_all_keys
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>main</FILE>
|
||||||
|
meta_get_option_context
|
||||||
|
meta_init
|
||||||
|
meta_run
|
||||||
|
meta_get_replace_current_wm
|
||||||
|
meta_set_wm_name
|
||||||
|
meta_set_gnome_wm_keybindings
|
||||||
|
MetaExitCode
|
||||||
|
meta_exit
|
||||||
|
meta_quit
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-background</FILE>
|
||||||
|
<TITLE>MetaBackground</TITLE>
|
||||||
|
MetaBackgroundEffects
|
||||||
|
MetaBackground
|
||||||
|
MetaBackgroundClass
|
||||||
|
meta_background_new
|
||||||
|
meta_background_copy
|
||||||
|
meta_background_load_gradient
|
||||||
|
meta_background_load_color
|
||||||
|
meta_background_load_still_frame
|
||||||
|
meta_background_load_file_async
|
||||||
|
meta_background_load_file_finish
|
||||||
|
meta_background_get_filename
|
||||||
|
meta_background_get_style
|
||||||
|
meta_background_get_shading
|
||||||
|
meta_background_get_color
|
||||||
|
meta_background_get_second_color
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_BACKGROUND
|
||||||
|
META_BACKGROUND_CLASS
|
||||||
|
META_BACKGROUND_GET_CLASS
|
||||||
|
META_IS_BACKGROUND
|
||||||
|
META_IS_BACKGROUND_CLASS
|
||||||
|
META_TYPE_BACKGROUND
|
||||||
|
MetaBackgroundPrivate
|
||||||
|
meta_background_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-background-actor</FILE>
|
||||||
|
<TITLE>MetaBackgroundActor</TITLE>
|
||||||
|
MetaBackgroundActor
|
||||||
|
MetaBackgroundActorClass
|
||||||
|
meta_background_actor_new_for_screen
|
||||||
|
MetaSnippetHook
|
||||||
|
meta_background_actor_add_glsl_snippet
|
||||||
|
meta_background_actor_set_uniform_float
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_BACKGROUND_ACTOR
|
||||||
|
META_BACKGROUND_ACTOR_CLASS
|
||||||
|
META_BACKGROUND_ACTOR_GET_CLASS
|
||||||
|
META_IS_BACKGROUND_ACTOR
|
||||||
|
META_IS_BACKGROUND_ACTOR_CLASS
|
||||||
|
META_TYPE_BACKGROUND_ACTOR
|
||||||
|
MetaBackgroundActorPrivate
|
||||||
|
meta_background_actor_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-background-group</FILE>
|
||||||
|
<TITLE>MetaBackgroundGroup</TITLE>
|
||||||
|
MetaBackgroundGroupClass
|
||||||
|
meta_background_group_new
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_BACKGROUND_GROUP
|
||||||
|
META_BACKGROUND_GROUP_CLASS
|
||||||
|
META_BACKGROUND_GROUP_GET_CLASS
|
||||||
|
META_IS_BACKGROUND_GROUP
|
||||||
|
META_IS_BACKGROUND_GROUP_CLASS
|
||||||
|
META_TYPE_BACKGROUND_GROUP
|
||||||
|
MetaBackgroundGroupPrivate
|
||||||
|
meta_background_group_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-plugin</FILE>
|
||||||
|
<TITLE>MetaPlugin</TITLE>
|
||||||
|
MetaPlugin
|
||||||
|
MetaPluginClass
|
||||||
|
MetaPluginInfo
|
||||||
|
meta_plugin_running
|
||||||
|
meta_plugin_debug_mode
|
||||||
|
meta_plugin_get_info
|
||||||
|
MetaPluginVersion
|
||||||
|
META_PLUGIN_DECLARE
|
||||||
|
meta_plugin_switch_workspace_completed
|
||||||
|
meta_plugin_minimize_completed
|
||||||
|
meta_plugin_maximize_completed
|
||||||
|
meta_plugin_unmaximize_completed
|
||||||
|
meta_plugin_map_completed
|
||||||
|
meta_plugin_destroy_completed
|
||||||
|
MetaModalOptions
|
||||||
|
meta_plugin_begin_modal
|
||||||
|
meta_plugin_end_modal
|
||||||
|
meta_plugin_get_screen
|
||||||
|
meta_plugin_manager_set_plugin_type
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_PLUGIN
|
||||||
|
META_IS_PLUGIN_CLASS
|
||||||
|
META_PLUGIN
|
||||||
|
META_PLUGIN_CLASS
|
||||||
|
META_PLUGIN_GET_CLASS
|
||||||
|
META_TYPE_PLUGIN
|
||||||
|
MetaPluginPrivate
|
||||||
|
meta_plugin_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-shadow-factory</FILE>
|
||||||
|
MetaShadowParams
|
||||||
|
meta_shadow_factory_get_default
|
||||||
|
meta_shadow_factory_set_params
|
||||||
|
meta_shadow_factory_get_params
|
||||||
|
MetaShadowFactory
|
||||||
|
MetaShadowFactoryClass
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_SHADOW_FACTORY
|
||||||
|
META_IS_SHADOW_FACTORY_CLASS
|
||||||
|
META_SHADOW_FACTORY
|
||||||
|
META_SHADOW_FACTORY_CLASS
|
||||||
|
META_SHADOW_FACTORY_GET_CLASS
|
||||||
|
META_TYPE_SHADOW_FACTORY
|
||||||
|
meta_shadow_factory_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-shaped-texture</FILE>
|
||||||
|
<TITLE>MetaShapedTexture</TITLE>
|
||||||
|
MetaShapedTexture
|
||||||
|
MetaShapedTextureClass
|
||||||
|
meta_shaped_texture_new
|
||||||
|
meta_shaped_texture_set_create_mipmaps
|
||||||
|
meta_shaped_texture_update_area
|
||||||
|
meta_shaped_texture_set_pixmap
|
||||||
|
meta_shaped_texture_get_texture
|
||||||
|
meta_shaped_texture_set_mask_texture
|
||||||
|
meta_shaped_texture_set_clip_region
|
||||||
|
meta_shaped_texture_get_image
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_SHAPED_TEXTURE
|
||||||
|
META_IS_SHAPED_TEXTURE_CLASS
|
||||||
|
META_SHAPED_TEXTURE
|
||||||
|
META_SHAPED_TEXTURE_CLASS
|
||||||
|
META_SHAPED_TEXTURE_GET_CLASS
|
||||||
|
META_TYPE_SHAPED_TEXTURE
|
||||||
|
MetaShapedTexturePrivate
|
||||||
|
meta_shaped_texture_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-window-actor</FILE>
|
||||||
|
<TITLE>MetaWindowActor</TITLE>
|
||||||
|
MetaWindowActor
|
||||||
|
MetaWindowActorClass
|
||||||
|
meta_window_actor_get_x_window
|
||||||
|
meta_window_actor_get_workspace
|
||||||
|
meta_window_actor_get_meta_window
|
||||||
|
meta_window_actor_get_texture
|
||||||
|
meta_window_actor_is_override_redirect
|
||||||
|
meta_window_actor_get_description
|
||||||
|
meta_window_actor_showing_on_its_workspace
|
||||||
|
meta_window_actor_is_destroyed
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_WINDOW_ACTOR
|
||||||
|
META_IS_WINDOW_ACTOR_CLASS
|
||||||
|
META_TYPE_WINDOW_ACTOR
|
||||||
|
META_WINDOW_ACTOR
|
||||||
|
META_WINDOW_ACTOR_CLASS
|
||||||
|
META_WINDOW_ACTOR_GET_CLASS
|
||||||
|
MetaWindowActorPrivate
|
||||||
|
meta_window_actor_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>meta-cullable</FILE>
|
||||||
|
<TITLE>MetaCullable</TITLE>
|
||||||
|
MetaCullable
|
||||||
|
MetaCullableInterface
|
||||||
|
meta_cullable_cull_out
|
||||||
|
meta_cullable_reset_culling
|
||||||
|
meta_cullable_cull_out_children
|
||||||
|
meta_cullable_reset_culling_children
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_TYPE_CULLABLE
|
||||||
|
META_CULLABLE
|
||||||
|
META_IS_CULLABLE
|
||||||
|
META_CULLABLE_GET_IFACE
|
||||||
|
meta_cullable_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>prefs</FILE>
|
||||||
|
MetaPreference
|
||||||
|
MetaPrefsChangedFunc
|
||||||
|
meta_prefs_add_listener
|
||||||
|
meta_prefs_remove_listener
|
||||||
|
meta_prefs_init
|
||||||
|
meta_prefs_override_preference_schema
|
||||||
|
meta_preference_to_string
|
||||||
|
meta_prefs_get_mouse_button_mods
|
||||||
|
meta_prefs_get_mouse_button_resize
|
||||||
|
meta_prefs_get_mouse_button_menu
|
||||||
|
meta_prefs_get_focus_mode
|
||||||
|
meta_prefs_get_focus_new_windows
|
||||||
|
meta_prefs_get_attach_modal_dialogs
|
||||||
|
meta_prefs_get_raise_on_click
|
||||||
|
meta_prefs_get_theme
|
||||||
|
meta_prefs_get_titlebar_font
|
||||||
|
meta_prefs_get_num_workspaces
|
||||||
|
meta_prefs_get_dynamic_workspaces
|
||||||
|
meta_prefs_get_disable_workarounds
|
||||||
|
meta_prefs_get_auto_raise
|
||||||
|
meta_prefs_get_auto_raise_delay
|
||||||
|
meta_prefs_get_focus_change_on_pointer_rest
|
||||||
|
meta_prefs_get_gnome_accessibility
|
||||||
|
meta_prefs_get_gnome_animations
|
||||||
|
meta_prefs_get_edge_tiling
|
||||||
|
meta_prefs_get_auto_maximize
|
||||||
|
meta_prefs_get_button_layout
|
||||||
|
meta_prefs_get_action_double_click_titlebar
|
||||||
|
meta_prefs_get_action_middle_click_titlebar
|
||||||
|
meta_prefs_get_action_right_click_titlebar
|
||||||
|
meta_prefs_set_num_workspaces
|
||||||
|
meta_prefs_get_workspace_name
|
||||||
|
meta_prefs_change_workspace_name
|
||||||
|
meta_prefs_get_cursor_theme
|
||||||
|
meta_prefs_get_cursor_size
|
||||||
|
meta_prefs_get_compositing_manager
|
||||||
|
meta_prefs_get_force_fullscreen
|
||||||
|
meta_prefs_set_force_fullscreen
|
||||||
|
meta_prefs_get_workspaces_only_on_primary
|
||||||
|
meta_prefs_get_no_tab_popup
|
||||||
|
meta_prefs_set_no_tab_popup
|
||||||
|
meta_prefs_get_draggable_border_width
|
||||||
|
meta_prefs_get_ignore_request_hide_titlebar
|
||||||
|
meta_prefs_set_ignore_request_hide_titlebar
|
||||||
|
MetaKeyBindingAction
|
||||||
|
MetaKeyBindingFlags
|
||||||
|
MetaKeyCombo
|
||||||
|
MetaKeyHandlerFunc
|
||||||
|
meta_prefs_get_keybindings
|
||||||
|
meta_prefs_get_keybinding_action
|
||||||
|
meta_prefs_get_window_binding
|
||||||
|
meta_prefs_get_overlay_binding
|
||||||
|
meta_prefs_get_visual_bell
|
||||||
|
meta_prefs_bell_is_audible
|
||||||
|
meta_prefs_get_visual_bell_type
|
||||||
|
MetaKeyHandler
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
meta_key_binding_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>screen</FILE>
|
||||||
|
MetaScreen
|
||||||
|
MetaScreenClass
|
||||||
|
meta_screen_get_screen_number
|
||||||
|
meta_screen_get_display
|
||||||
|
meta_screen_get_xroot
|
||||||
|
meta_screen_get_size
|
||||||
|
meta_screen_get_compositor_data
|
||||||
|
meta_screen_set_compositor_data
|
||||||
|
meta_screen_for_x_screen
|
||||||
|
meta_screen_set_cm_selection
|
||||||
|
meta_screen_unset_cm_selection
|
||||||
|
meta_screen_get_startup_sequences
|
||||||
|
meta_screen_get_workspaces
|
||||||
|
meta_screen_get_n_workspaces
|
||||||
|
meta_screen_get_workspace_by_index
|
||||||
|
meta_screen_remove_workspace
|
||||||
|
meta_screen_append_new_workspace
|
||||||
|
meta_screen_get_active_workspace_index
|
||||||
|
meta_screen_get_active_workspace
|
||||||
|
meta_screen_get_n_monitors
|
||||||
|
meta_screen_get_primary_monitor
|
||||||
|
meta_screen_get_current_monitor
|
||||||
|
meta_screen_get_monitor_geometry
|
||||||
|
meta_screen_get_monitor_index_for_rect
|
||||||
|
meta_screen_focus_default_window
|
||||||
|
MetaScreenCorner
|
||||||
|
meta_screen_override_workspace_layout
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_SCREEN
|
||||||
|
META_IS_SCREEN_CLASS
|
||||||
|
META_SCREEN
|
||||||
|
META_SCREEN_CLASS
|
||||||
|
META_SCREEN_GET_CLASS
|
||||||
|
META_TYPE_SCREEN
|
||||||
|
meta_screen_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>util</FILE>
|
||||||
|
meta_is_verbose
|
||||||
|
meta_set_verbose
|
||||||
|
meta_is_debugging
|
||||||
|
meta_set_debugging
|
||||||
|
meta_is_syncing
|
||||||
|
meta_set_syncing
|
||||||
|
meta_set_replace_current_wm
|
||||||
|
meta_debug_spew_real
|
||||||
|
meta_verbose_real
|
||||||
|
meta_bug
|
||||||
|
meta_warning
|
||||||
|
meta_fatal
|
||||||
|
MetaDebugTopic
|
||||||
|
meta_topic_real
|
||||||
|
meta_add_verbose_topic
|
||||||
|
meta_remove_verbose_topic
|
||||||
|
meta_push_no_msg_prefix
|
||||||
|
meta_pop_no_msg_prefix
|
||||||
|
meta_unsigned_long_equal
|
||||||
|
meta_unsigned_long_hash
|
||||||
|
meta_frame_type_to_string
|
||||||
|
meta_gravity_to_string
|
||||||
|
_
|
||||||
|
N_
|
||||||
|
meta_g_utf8_strndup
|
||||||
|
meta_free_gslist_and_elements
|
||||||
|
meta_show_dialog
|
||||||
|
meta_debug_spew
|
||||||
|
meta_verbose
|
||||||
|
meta_topic
|
||||||
|
MetaLaterType
|
||||||
|
meta_later_add
|
||||||
|
meta_later_remove
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>window</FILE>
|
||||||
|
MetaWindow
|
||||||
|
MetaWindowClass
|
||||||
|
MetaWindowType
|
||||||
|
MetaMaximizeFlags
|
||||||
|
meta_window_get_frame
|
||||||
|
meta_window_has_focus
|
||||||
|
meta_window_appears_focused
|
||||||
|
meta_window_is_shaded
|
||||||
|
meta_window_is_monitor_sized
|
||||||
|
meta_window_is_override_redirect
|
||||||
|
meta_window_is_skip_taskbar
|
||||||
|
meta_window_get_rect
|
||||||
|
meta_window_get_input_rect
|
||||||
|
meta_window_get_frame_rect
|
||||||
|
meta_window_get_outer_rect
|
||||||
|
meta_window_client_rect_to_frame_rect
|
||||||
|
meta_window_frame_rect_to_client_rect
|
||||||
|
meta_window_get_screen
|
||||||
|
meta_window_get_display
|
||||||
|
meta_window_get_xwindow
|
||||||
|
meta_window_get_window_type
|
||||||
|
meta_window_get_window_type_atom
|
||||||
|
meta_window_get_workspace
|
||||||
|
meta_window_get_monitor
|
||||||
|
meta_window_is_on_all_workspaces
|
||||||
|
meta_window_located_on_workspace
|
||||||
|
meta_window_is_hidden
|
||||||
|
meta_window_activate
|
||||||
|
meta_window_activate_with_workspace
|
||||||
|
meta_window_get_description
|
||||||
|
meta_window_get_wm_class
|
||||||
|
meta_window_get_wm_class_instance
|
||||||
|
meta_window_showing_on_its_workspace
|
||||||
|
meta_window_get_gtk_application_id
|
||||||
|
meta_window_get_gtk_unique_bus_name
|
||||||
|
meta_window_get_gtk_application_object_path
|
||||||
|
meta_window_get_gtk_window_object_path
|
||||||
|
meta_window_get_gtk_app_menu_object_path
|
||||||
|
meta_window_get_gtk_menubar_object_path
|
||||||
|
meta_window_move
|
||||||
|
meta_window_move_frame
|
||||||
|
meta_window_move_resize_frame
|
||||||
|
meta_window_move_to_monitor
|
||||||
|
meta_window_resize
|
||||||
|
meta_window_set_demands_attention
|
||||||
|
meta_window_unset_demands_attention
|
||||||
|
meta_window_get_startup_id
|
||||||
|
meta_window_change_workspace_by_index
|
||||||
|
meta_window_change_workspace
|
||||||
|
meta_window_get_compositor_private
|
||||||
|
meta_window_set_compositor_private
|
||||||
|
meta_window_configure_notify
|
||||||
|
meta_window_get_role
|
||||||
|
meta_window_get_layer
|
||||||
|
meta_window_find_root_ancestor
|
||||||
|
meta_window_is_ancestor_of_transient
|
||||||
|
MetaWindowForeachFunc
|
||||||
|
meta_window_foreach_transient
|
||||||
|
meta_window_foreach_ancestor
|
||||||
|
meta_window_get_maximized
|
||||||
|
meta_window_is_fullscreen
|
||||||
|
meta_window_is_on_primary_monitor
|
||||||
|
meta_window_requested_bypass_compositor
|
||||||
|
meta_window_requested_dont_bypass_compositor
|
||||||
|
meta_window_is_mapped
|
||||||
|
meta_window_toplevel_is_mapped
|
||||||
|
meta_window_get_icon_geometry
|
||||||
|
meta_window_set_icon_geometry
|
||||||
|
meta_window_maximize
|
||||||
|
meta_window_unmaximize
|
||||||
|
meta_window_minimize
|
||||||
|
meta_window_unminimize
|
||||||
|
meta_window_raise
|
||||||
|
meta_window_lower
|
||||||
|
meta_window_get_title
|
||||||
|
meta_window_get_transient_for
|
||||||
|
meta_window_get_transient_for_as_xid
|
||||||
|
meta_window_delete
|
||||||
|
meta_window_get_stable_sequence
|
||||||
|
meta_window_get_user_time
|
||||||
|
meta_window_get_pid
|
||||||
|
meta_window_get_client_machine
|
||||||
|
meta_window_is_remote
|
||||||
|
meta_window_is_modal
|
||||||
|
meta_window_is_attached_dialog
|
||||||
|
meta_window_get_mutter_hints
|
||||||
|
meta_window_get_frame_type
|
||||||
|
meta_window_get_frame_bounds
|
||||||
|
meta_window_get_tile_match
|
||||||
|
meta_window_make_fullscreen
|
||||||
|
meta_window_unmake_fullscreen
|
||||||
|
meta_window_make_above
|
||||||
|
meta_window_unmake_above
|
||||||
|
meta_window_shade
|
||||||
|
meta_window_unshade
|
||||||
|
meta_window_stick
|
||||||
|
meta_window_unstick
|
||||||
|
meta_window_kill
|
||||||
|
meta_window_focus
|
||||||
|
meta_window_check_alive
|
||||||
|
meta_window_get_work_area_current_monitor
|
||||||
|
meta_window_get_work_area_for_monitor
|
||||||
|
meta_window_get_work_area_all_monitors
|
||||||
|
meta_window_begin_grab_op
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_WINDOW
|
||||||
|
META_IS_WINDOW_CLASS
|
||||||
|
META_TYPE_WINDOW
|
||||||
|
META_WINDOW
|
||||||
|
META_WINDOW_CLASS
|
||||||
|
META_WINDOW_GET_CLASS
|
||||||
|
meta_window_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>workspace</FILE>
|
||||||
|
MetaWorkspace
|
||||||
|
MetaWorkspaceClass
|
||||||
|
meta_workspace_index
|
||||||
|
meta_workspace_get_screen
|
||||||
|
meta_workspace_list_windows
|
||||||
|
meta_workspace_get_work_area_for_monitor
|
||||||
|
meta_workspace_get_work_area_all_monitors
|
||||||
|
meta_workspace_activate
|
||||||
|
meta_workspace_activate_with_focus
|
||||||
|
meta_workspace_update_window_hints
|
||||||
|
meta_workspace_set_builtin_struts
|
||||||
|
meta_workspace_get_neighbor
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
META_IS_WORKSPACE
|
||||||
|
META_IS_WORKSPACE_CLASS
|
||||||
|
META_TYPE_WORKSPACE
|
||||||
|
META_WORKSPACE
|
||||||
|
META_WORKSPACE_CLASS
|
||||||
|
META_WORKSPACE_GET_CLASS
|
||||||
|
meta_workspace_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
15
doc/reference/mutter-overview.xml
Normal file
15
doc/reference/mutter-overview.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<part id="mutter-overview">
|
||||||
|
|
||||||
|
<title>Overview</title>
|
||||||
|
|
||||||
|
<partintro>
|
||||||
|
|
||||||
|
<para>Mutter is a GObject-based library for creating compositing window managers.</para>
|
||||||
|
|
||||||
|
<para>Compositors that wish to use Mutter must implement a subclass of #MetaPlugin and register it with meta_plugin_manager_set_plugin_type() before calling meta_init() but after g_type_init().</para>
|
||||||
|
|
||||||
|
<para>#MetaPlugin provides virtual functions that allow to override default behavior in the window management code, such as the effect to perform when a window is created or when switching workspaces.</para>
|
||||||
|
|
||||||
|
</partintro>
|
||||||
|
|
||||||
|
</part>
|
100
doc/reference/running-mutter.xml
Normal file
100
doc/reference/running-mutter.xml
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<part id="running-mutter">
|
||||||
|
|
||||||
|
<title>Running Mutter</title>
|
||||||
|
|
||||||
|
<partintro>
|
||||||
|
|
||||||
|
<section id="environment-variables">
|
||||||
|
<title>Environment Variables</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Mutter automatically checks environment variables during
|
||||||
|
its initialization. These environment variables are meant
|
||||||
|
as debug tools or overrides for default behaviours:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_VERBOSE</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Enable verbose mode, in which more information is printed to the console. Mutter needs to be built with the --enable-verbose-mode option (enabled by default). For more fine-grained control of the output, see meta_add_verbose_topic().</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DEBUG</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Traps and prints X errors to the console.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_G_FATAL_WARNINGS</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Causes any logging from the domains Mutter, Gtk, Gdk, Pango or GLib to terminate the process (only when using the log functions in GLib).</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_USE_LOGFILE</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Log all messages to a temporary file.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DEBUG_XINERAMA</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Log extra information about support of the XINERAMA extension.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DEBUG_SM</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Log extra information about session management.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DEBUG_BUTTON_GRABS</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Log extra information about button grabs.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_SYNC</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Call XSync after each X call.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DISPLAY</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Name of the X11 display to use.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>META_DISABLE_MIPMAPS</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Disable use of mipmaps for the textures that back window pixmaps.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_USE_STATIC_GRAVITY</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Enable support for clients with static bit-gravity.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_WM_CLASS_FILTER</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Comma-separated list of WM_CLASS names to which to restrict Mutter to.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>MUTTER_DISABLE_FALLBACK_COLOR</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Disable fallback for themed colors, for easier detection of typographical errors.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</partintro>
|
||||||
|
</part>
|
@@ -21,6 +21,7 @@ environment.</description>
|
|||||||
-->
|
-->
|
||||||
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-shell-list" />
|
||||||
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
<download-page rdf:resource="http://download.gnome.org/sources/mutter/" />
|
||||||
|
<download-page rdf:resource="http://download.gnome.org/sources/mutter-wayland/" />
|
||||||
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
<bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" />
|
||||||
|
|
||||||
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
<category rdf:resource="http://api.gnome.org/doap-extensions#desktop" />
|
||||||
|
@@ -44,6 +44,7 @@ is
|
|||||||
it
|
it
|
||||||
ja
|
ja
|
||||||
ka
|
ka
|
||||||
|
kk
|
||||||
kn
|
kn
|
||||||
ko
|
ko
|
||||||
ku
|
ku
|
||||||
@@ -80,6 +81,7 @@ sr@latin
|
|||||||
sv
|
sv
|
||||||
ta
|
ta
|
||||||
te
|
te
|
||||||
|
tg
|
||||||
th
|
th
|
||||||
tk
|
tk
|
||||||
tr
|
tr
|
||||||
|
@@ -4,6 +4,7 @@ src/50-mutter-navigation.xml.in
|
|||||||
src/50-mutter-system.xml.in
|
src/50-mutter-system.xml.in
|
||||||
src/50-mutter-windows.xml.in
|
src/50-mutter-windows.xml.in
|
||||||
src/compositor/compositor.c
|
src/compositor/compositor.c
|
||||||
|
src/compositor/meta-background.c
|
||||||
src/core/bell.c
|
src/core/bell.c
|
||||||
src/core/core.c
|
src/core/core.c
|
||||||
src/core/delete.c
|
src/core/delete.c
|
||||||
@@ -11,6 +12,7 @@ src/core/display.c
|
|||||||
src/core/errors.c
|
src/core/errors.c
|
||||||
src/core/keybindings.c
|
src/core/keybindings.c
|
||||||
src/core/main.c
|
src/core/main.c
|
||||||
|
src/core/monitor.c
|
||||||
src/core/mutter.c
|
src/core/mutter.c
|
||||||
src/core/prefs.c
|
src/core/prefs.c
|
||||||
src/core/screen.c
|
src/core/screen.c
|
||||||
@@ -19,15 +21,12 @@ src/core/util.c
|
|||||||
src/core/window.c
|
src/core/window.c
|
||||||
src/core/window-props.c
|
src/core/window-props.c
|
||||||
src/core/xprops.c
|
src/core/xprops.c
|
||||||
src/mutter.desktop.in
|
src/mutter-wayland.desktop.in
|
||||||
src/mutter-wm.desktop.in
|
|
||||||
src/org.gnome.mutter.gschema.xml.in
|
src/org.gnome.mutter.gschema.xml.in
|
||||||
src/tools/mutter-message.c
|
src/org.gnome.mutter.wayland.gschema.xml.in
|
||||||
src/ui/frames.c
|
src/ui/frames.c
|
||||||
src/ui/menu.c
|
src/ui/menu.c
|
||||||
src/ui/metaaccellabel.c
|
src/ui/metaaccellabel.c
|
||||||
src/ui/resizepopup.c
|
src/ui/resizepopup.c
|
||||||
src/ui/theme.c
|
src/ui/theme.c
|
||||||
src/ui/theme-parser.c
|
src/ui/theme-parser.c
|
||||||
src/ui/theme-viewer.c
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
664
po/en_GB.po
664
po/en_GB.po
File diff suppressed because it is too large
Load Diff
385
po/et.po
385
po/et.po
@@ -7,15 +7,15 @@
|
|||||||
#
|
#
|
||||||
# Tõivo Leedjärv <toivo linux ee>, 2004.
|
# Tõivo Leedjärv <toivo linux ee>, 2004.
|
||||||
# Ivar Smolin <okul linux ee>, 2005, 2006, 2009–2011.
|
# Ivar Smolin <okul linux ee>, 2005, 2006, 2009–2011.
|
||||||
# Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012.
|
# Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012, 2013.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter MASTER\n"
|
"Project-Id-Version: mutter MASTER\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-10-17 20:44+0000\n"
|
"POT-Creation-Date: 2013-09-10 15:25+0000\n"
|
||||||
"PO-Revision-Date: 2012-10-21 20:48+0300\n"
|
"PO-Revision-Date: 2013-09-11 23:20+0300\n"
|
||||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||||
"Language-Team: Estonian <>\n"
|
"Language-Team: Estonian <>\n"
|
||||||
"Language: et\n"
|
"Language: et\n"
|
||||||
@@ -23,10 +23,143 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
|
"X-Generator: Poedit 1.5.4\n"
|
||||||
|
|
||||||
|
msgid "Navigation"
|
||||||
|
msgstr "Navigeerimine"
|
||||||
|
|
||||||
|
msgid "Move window to workspace 1"
|
||||||
|
msgstr "Akna liigutamine 1. tööalale"
|
||||||
|
|
||||||
|
msgid "Move window to workspace 2"
|
||||||
|
msgstr "Akna liigutamine 2. tööalale"
|
||||||
|
|
||||||
|
msgid "Move window to workspace 3"
|
||||||
|
msgstr "Akna liigutamine 3. tööalale"
|
||||||
|
|
||||||
|
msgid "Move window to workspace 4"
|
||||||
|
msgstr "Akna liigutamine 4. tööalale"
|
||||||
|
|
||||||
|
msgid "Move window one workspace to the left"
|
||||||
|
msgstr "Akna tõstmine vasakpoolsele tööalale"
|
||||||
|
|
||||||
|
msgid "Move window one workspace to the right"
|
||||||
|
msgstr "Akna tõstmine parempoolsele tööalale"
|
||||||
|
|
||||||
|
msgid "Move window one workspace up"
|
||||||
|
msgstr "Akna tõstmine ülemisele tööalale"
|
||||||
|
|
||||||
|
msgid "Move window one workspace down"
|
||||||
|
msgstr "Akna tõstmine alumisele tööalale"
|
||||||
|
|
||||||
|
msgid "Switch applications"
|
||||||
|
msgstr "Rakenduste vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch windows"
|
||||||
|
msgstr "Akende vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch windows of an application"
|
||||||
|
msgstr "Rakenduse akende vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch system controls"
|
||||||
|
msgstr "Süsteemi juhtalade vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch windows directly"
|
||||||
|
msgstr "Akende kohene vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch windows of an app directly"
|
||||||
|
msgstr "Rakenduse akende kohene vahetamine"
|
||||||
|
|
||||||
|
msgid "Switch system controls directly"
|
||||||
|
msgstr "Süsteemi juhtalade kohene vahetamine"
|
||||||
|
|
||||||
|
msgid "Hide all normal windows"
|
||||||
|
msgstr "Kõigi tavaliste akende peitmine"
|
||||||
|
|
||||||
|
msgid "Switch to workspace 1"
|
||||||
|
msgstr "1. tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Switch to workspace 2"
|
||||||
|
msgstr "2. tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Switch to workspace 3"
|
||||||
|
msgstr "3. tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Switch to workspace 4"
|
||||||
|
msgstr "4. tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Move to workspace left"
|
||||||
|
msgstr "Vasakpoolsele tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Move to workspace right"
|
||||||
|
msgstr "Parempoolsele tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Move to workspace above"
|
||||||
|
msgstr "Ülemisele tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "Move to workspace below"
|
||||||
|
msgstr "Alumisele tööalale liikumine"
|
||||||
|
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Süsteem"
|
||||||
|
|
||||||
|
msgid "Show the run command prompt"
|
||||||
|
msgstr "Käsuviiba kuvamine"
|
||||||
|
|
||||||
|
msgid "Show the activities overview"
|
||||||
|
msgstr "Tegevuste ülevaate avamine"
|
||||||
|
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Aknad"
|
msgstr "Aknad"
|
||||||
|
|
||||||
|
msgid "Activate the window menu"
|
||||||
|
msgstr "Aknamenüü avamine"
|
||||||
|
|
||||||
|
msgid "Toggle fullscreen mode"
|
||||||
|
msgstr "Täisekraanoleku vahetamine"
|
||||||
|
|
||||||
|
msgid "Toggle maximization state"
|
||||||
|
msgstr "Maksimeeritud oleku vahetamine"
|
||||||
|
|
||||||
|
msgid "Maximize window"
|
||||||
|
msgstr "Akna maksimeerimine"
|
||||||
|
|
||||||
|
msgid "Restore window"
|
||||||
|
msgstr "Akna taastamine"
|
||||||
|
|
||||||
|
msgid "Toggle shaded state"
|
||||||
|
msgstr "Varjatud oleku vahetamine"
|
||||||
|
|
||||||
|
msgid "Close window"
|
||||||
|
msgstr "Akna sulgemine"
|
||||||
|
|
||||||
|
msgid "Hide window"
|
||||||
|
msgstr "Peida aken"
|
||||||
|
|
||||||
|
msgid "Move window"
|
||||||
|
msgstr "Akna liigutamine"
|
||||||
|
|
||||||
|
msgid "Resize window"
|
||||||
|
msgstr "Akna suuruse muutmine"
|
||||||
|
|
||||||
|
msgid "Toggle window on all workspaces or one"
|
||||||
|
msgstr "Akna kõigil või ühel tööalal olemise vahetamine"
|
||||||
|
|
||||||
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
|
msgstr "Akna tõstmine, kui see on kaetud, muul juhul langetamine"
|
||||||
|
|
||||||
|
msgid "Raise window above other windows"
|
||||||
|
msgstr "Akna tõstmine teiste kohale"
|
||||||
|
|
||||||
|
msgid "Lower window below other windows"
|
||||||
|
msgstr "Akna langetamine teiste taha"
|
||||||
|
|
||||||
|
msgid "Maximize window vertically"
|
||||||
|
msgstr "Akna vertikaalne maksimeerimine"
|
||||||
|
|
||||||
|
msgid "Maximize window horizontally"
|
||||||
|
msgstr "Akna horisontaalne maksimeerimine"
|
||||||
|
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Vaade poolitatakse vasakult"
|
msgstr "Vaade poolitatakse vasakult"
|
||||||
|
|
||||||
@@ -41,6 +174,9 @@ msgid ""
|
|||||||
"\"."
|
"\"."
|
||||||
msgstr "Teine komposiithaldur juba töötab ekraani %i kuval \"%s\"."
|
msgstr "Teine komposiithaldur juba töötab ekraani %i kuval \"%s\"."
|
||||||
|
|
||||||
|
msgid "background texture could not be created from file"
|
||||||
|
msgstr "failist polnud võimalik taustatekstuuri luua"
|
||||||
|
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Helina sündmus"
|
msgstr "Helina sündmus"
|
||||||
|
|
||||||
@@ -82,6 +218,10 @@ msgstr ""
|
|||||||
"Mõni teine programm juba kasutab klahvi %s koos muuteklahvidega %x "
|
"Mõni teine programm juba kasutab klahvi %s koos muuteklahvidega %x "
|
||||||
"kiirklahvina\n"
|
"kiirklahvina\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
|
msgstr "\"%s\" pole sobiv kiirklahv\n"
|
||||||
|
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Seansihalduriga ühendumise keelamine"
|
msgstr "Seansihalduriga ühendumise keelamine"
|
||||||
|
|
||||||
@@ -110,6 +250,17 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n"
|
"Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n"
|
||||||
|
|
||||||
|
msgid "Built-in display"
|
||||||
|
msgstr "Sisseehitatud kuva"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is a monitor name (in case we don't know
|
||||||
|
#. the vendor), it's Unknown followed by a size in inches,
|
||||||
|
#. like 'Unknown 15"'
|
||||||
|
#.
|
||||||
|
#, c-format
|
||||||
|
msgid "Unknown %s"
|
||||||
|
msgstr "Tundmatu %s"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
@@ -242,7 +393,6 @@ msgstr "Tõrge logifaili %s avamisel funktsiooniga fdopen(): %s\n"
|
|||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Avati logifail %s\n"
|
msgstr "Avati logifail %s\n"
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n"
|
msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n"
|
||||||
|
|
||||||
@@ -417,16 +567,22 @@ msgstr ""
|
|||||||
"Lohistatava äärise laius. Kui kujunduse nähtavatest ääristest ei piisa, "
|
"Lohistatava äärise laius. Kui kujunduse nähtavatest ääristest ei piisa, "
|
||||||
"lisatakse puuduoleva osa jaoks nähtamatu ääris."
|
"lisatakse puuduoleva osa jaoks nähtamatu ääris."
|
||||||
|
|
||||||
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
|
msgstr "Peaaegu monitori suurused ekraanid maksimeeritakse automaatselt"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, new windows that are initially the size of the monitor "
|
||||||
|
"automatically get maximized."
|
||||||
|
msgstr ""
|
||||||
|
"Kui lubatud, maksimeeritakse automaatselt aknad, mis on avanedes monitori "
|
||||||
|
"suurused."
|
||||||
|
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Akna valimine tabulaatori hüpikaknalt"
|
msgstr "Akna valimine tabulaatori hüpikaknalt"
|
||||||
|
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Tabulaatori hüpikakna katkestamine"
|
msgstr "Tabulaatori hüpikakna katkestamine"
|
||||||
|
|
||||||
#, c-format
|
|
||||||
msgid "Usage: %s\n"
|
|
||||||
msgstr "Kasutamine: %s\n"
|
|
||||||
|
|
||||||
#. Translators: Translate this string the same way as you do in libwnck!
|
#. Translators: Translate this string the same way as you do in libwnck!
|
||||||
msgid "Mi_nimize"
|
msgid "Mi_nimize"
|
||||||
msgstr "_Minimeeri"
|
msgstr "_Minimeeri"
|
||||||
@@ -1132,156 +1288,151 @@ msgstr "Selle teema jaoks on <%s> määratud kaks korda"
|
|||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n"
|
msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n"
|
||||||
|
|
||||||
msgid "_Windows"
|
#~ msgid "Usage: %s\n"
|
||||||
msgstr "_Aknad"
|
#~ msgstr "Kasutamine: %s\n"
|
||||||
|
|
||||||
msgid "_Dialog"
|
#~ msgid "_Windows"
|
||||||
msgstr "_Dialoog"
|
#~ msgstr "_Aknad"
|
||||||
|
|
||||||
msgid "_Modal dialog"
|
#~ msgid "_Dialog"
|
||||||
msgstr "_Modaaldialoog"
|
#~ msgstr "_Dialoog"
|
||||||
|
|
||||||
msgid "_Utility"
|
#~ msgid "_Modal dialog"
|
||||||
msgstr "_Utiliit"
|
#~ msgstr "_Modaaldialoog"
|
||||||
|
|
||||||
msgid "_Splashscreen"
|
#~ msgid "_Utility"
|
||||||
msgstr "_Käivitusekraan"
|
#~ msgstr "_Utiliit"
|
||||||
|
|
||||||
msgid "_Top dock"
|
#~ msgid "_Splashscreen"
|
||||||
msgstr "Ü_lemine dokk"
|
#~ msgstr "_Käivitusekraan"
|
||||||
|
|
||||||
msgid "_Bottom dock"
|
#~ msgid "_Top dock"
|
||||||
msgstr "_Alumine dokk"
|
#~ msgstr "Ü_lemine dokk"
|
||||||
|
|
||||||
msgid "_Left dock"
|
#~ msgid "_Bottom dock"
|
||||||
msgstr "_Vasak dokk"
|
#~ msgstr "_Alumine dokk"
|
||||||
|
|
||||||
msgid "_Right dock"
|
#~ msgid "_Left dock"
|
||||||
msgstr "_Parem dokk"
|
#~ msgstr "_Vasak dokk"
|
||||||
|
|
||||||
msgid "_All docks"
|
#~ msgid "_Right dock"
|
||||||
msgstr "_Kõik dokid"
|
#~ msgstr "_Parem dokk"
|
||||||
|
|
||||||
msgid "Des_ktop"
|
#~ msgid "_All docks"
|
||||||
msgstr "_Töölaud"
|
#~ msgstr "_Kõik dokid"
|
||||||
|
|
||||||
msgid "Open another one of these windows"
|
#~ msgid "Des_ktop"
|
||||||
msgstr "Ava neist akendest järgmine"
|
#~ msgstr "_Töölaud"
|
||||||
|
|
||||||
msgid "This is a demo button with an 'open' icon"
|
#~ msgid "Open another one of these windows"
|
||||||
msgstr "See on näidisnupp koos 'ava' ikooniga"
|
#~ msgstr "Ava neist akendest järgmine"
|
||||||
|
|
||||||
msgid "This is a demo button with a 'quit' icon"
|
#~ msgid "This is a demo button with an 'open' icon"
|
||||||
msgstr "See on näidisnupp koos 'lõpeta' ikooniga"
|
#~ msgstr "See on näidisnupp koos 'ava' ikooniga"
|
||||||
|
|
||||||
msgid "This is a sample message in a sample dialog"
|
#~ msgid "This is a demo button with a 'quit' icon"
|
||||||
msgstr "See on näidisteade näidisdialoogis"
|
#~ msgstr "See on näidisnupp koos 'lõpeta' ikooniga"
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "This is a sample message in a sample dialog"
|
||||||
msgid "Fake menu item %d\n"
|
#~ msgstr "See on näidisteade näidisdialoogis"
|
||||||
msgstr "Võltsitud menüüpunkt %d\n"
|
|
||||||
|
|
||||||
msgid "Border-only window"
|
#~ msgid "Fake menu item %d\n"
|
||||||
msgstr "Ainult raamiga aken"
|
#~ msgstr "Võltsitud menüüpunkt %d\n"
|
||||||
|
|
||||||
msgid "Bar"
|
#~ msgid "Border-only window"
|
||||||
msgstr "Riba"
|
#~ msgstr "Ainult raamiga aken"
|
||||||
|
|
||||||
msgid "Normal Application Window"
|
#~ msgid "Bar"
|
||||||
msgstr "Tavaline rakenduseaken"
|
#~ msgstr "Riba"
|
||||||
|
|
||||||
msgid "Dialog Box"
|
#~ msgid "Normal Application Window"
|
||||||
msgstr "Dialoogikast"
|
#~ msgstr "Tavaline rakenduseaken"
|
||||||
|
|
||||||
msgid "Modal Dialog Box"
|
#~ msgid "Dialog Box"
|
||||||
msgstr "Modaalne dialoogikast"
|
#~ msgstr "Dialoogikast"
|
||||||
|
|
||||||
msgid "Utility Palette"
|
#~ msgid "Modal Dialog Box"
|
||||||
msgstr "Rakendite palett"
|
#~ msgstr "Modaalne dialoogikast"
|
||||||
|
|
||||||
msgid "Torn-off Menu"
|
#~ msgid "Utility Palette"
|
||||||
msgstr "Ärarebitav menüü"
|
#~ msgstr "Rakendite palett"
|
||||||
|
|
||||||
msgid "Border"
|
#~ msgid "Torn-off Menu"
|
||||||
msgstr "Raam"
|
#~ msgstr "Ärarebitav menüü"
|
||||||
|
|
||||||
msgid "Attached Modal Dialog"
|
#~ msgid "Border"
|
||||||
msgstr "Kinnistatud modaaldialoog"
|
#~ msgstr "Raam"
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Attached Modal Dialog"
|
||||||
msgid "Button layout test %d"
|
#~ msgstr "Kinnistatud modaaldialoog"
|
||||||
msgstr "Nuppude paigutuse test %d"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Button layout test %d"
|
||||||
msgid "%g milliseconds to draw one window frame"
|
#~ msgstr "Nuppude paigutuse test %d"
|
||||||
msgstr "%g millisekundit kulub ühe akna raami joonistamiseks"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "%g milliseconds to draw one window frame"
|
||||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
#~ msgstr "%g millisekundit kulub ühe akna raami joonistamiseks"
|
||||||
msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
msgid "Error loading theme: %s\n"
|
#~ msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n"
|
||||||
msgstr "Viga teema laadimisel: %s\n"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Error loading theme: %s\n"
|
||||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
#~ msgstr "Viga teema laadimisel: %s\n"
|
||||||
msgstr "Teema \"%s\" laaditi %g sekundiga\n"
|
|
||||||
|
|
||||||
msgid "Normal Title Font"
|
#~ msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
msgstr "Tiitli tavasuurusega kirjatüüp"
|
#~ msgstr "Teema \"%s\" laaditi %g sekundiga\n"
|
||||||
|
|
||||||
msgid "Small Title Font"
|
#~ msgid "Normal Title Font"
|
||||||
msgstr "Tiitli väike kirjatüüp"
|
#~ msgstr "Tiitli tavasuurusega kirjatüüp"
|
||||||
|
|
||||||
msgid "Large Title Font"
|
#~ msgid "Small Title Font"
|
||||||
msgstr "Tiitli suur kirjatüüp"
|
#~ msgstr "Tiitli väike kirjatüüp"
|
||||||
|
|
||||||
msgid "Button Layouts"
|
#~ msgid "Large Title Font"
|
||||||
msgstr "Nuppude paigutus"
|
#~ msgstr "Tiitli suur kirjatüüp"
|
||||||
|
|
||||||
msgid "Benchmark"
|
#~ msgid "Button Layouts"
|
||||||
msgstr "Jõudlus"
|
#~ msgstr "Nuppude paigutus"
|
||||||
|
|
||||||
msgid "Window Title Goes Here"
|
#~ msgid "Benchmark"
|
||||||
msgstr "Siia tuleb akna pealkiri"
|
#~ msgstr "Jõudlus"
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Window Title Goes Here"
|
||||||
msgid ""
|
#~ msgstr "Siia tuleb akna pealkiri"
|
||||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
|
||||||
"seconds wall clock time including X server resources (%g milliseconds per "
|
|
||||||
"frame)\n"
|
|
||||||
msgstr ""
|
|
||||||
"Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit kaadrile) "
|
|
||||||
"ja %g sekundiga seinakella järgi, millesse on kaasatud X-serveri "
|
|
||||||
"ressursikasutus (%g millisekundit kaadrile)\n"
|
|
||||||
|
|
||||||
msgid "position expression test returned TRUE but set error"
|
#~ msgid ""
|
||||||
msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea"
|
#~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and "
|
||||||
|
#~ "%g seconds wall clock time including X server resources (%g milliseconds "
|
||||||
|
#~ "per frame)\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit "
|
||||||
|
#~ "kaadrile) ja %g sekundiga seinakella järgi, millesse on kaasatud X-"
|
||||||
|
#~ "serveri ressursikasutus (%g millisekundit kaadrile)\n"
|
||||||
|
|
||||||
msgid "position expression test returned FALSE but didn't set error"
|
#~ msgid "position expression test returned TRUE but set error"
|
||||||
msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga"
|
#~ msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea"
|
||||||
|
|
||||||
msgid "Error was expected but none given"
|
#~ msgid "position expression test returned FALSE but didn't set error"
|
||||||
msgstr "Oodati viga, aga ühtegi ei edastatud"
|
#~ msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga"
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Error was expected but none given"
|
||||||
msgid "Error %d was expected but %d given"
|
#~ msgstr "Oodati viga, aga ühtegi ei edastatud"
|
||||||
msgstr "Oodati viga %d, aga edastati viga %d"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Error %d was expected but %d given"
|
||||||
msgid "Error not expected but one was returned: %s"
|
#~ msgstr "Oodati viga %d, aga edastati viga %d"
|
||||||
msgstr "Viga ei oodatud, aga üks edastati: %s"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "Error not expected but one was returned: %s"
|
||||||
msgid "x value was %d, %d was expected"
|
#~ msgstr "Viga ei oodatud, aga üks edastati: %s"
|
||||||
msgstr "x väärtus oli %d, oodati väärtust %d"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "x value was %d, %d was expected"
|
||||||
msgid "y value was %d, %d was expected"
|
#~ msgstr "x väärtus oli %d, oodati väärtust %d"
|
||||||
msgstr "y väärtus oli %d, oodati väärtust %d"
|
|
||||||
|
|
||||||
#, c-format
|
#~ msgid "y value was %d, %d was expected"
|
||||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
#~ msgstr "y väärtus oli %d, oodati väärtust %d"
|
||||||
msgstr ""
|
|
||||||
"%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n"
|
#~ msgid ""
|
||||||
|
#~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n"
|
||||||
|
|
||||||
|
#~ msgid "Minimize window"
|
||||||
|
#~ msgstr "Akna minimeerimine"
|
||||||
|
314
po/he.po
314
po/he.po
@@ -9,8 +9,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity.HEAD.he\n"
|
"Project-Id-Version: metacity.HEAD.he\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-11-30 11:36+0200\n"
|
"POT-Creation-Date: 2013-04-03 08:27+0300\n"
|
||||||
"PO-Revision-Date: 2012-11-30 11:53+0200\n"
|
"PO-Revision-Date: 2013-04-03 08:28+0200\n"
|
||||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||||
"Language-Team: Hebrew <he@li.org>\n"
|
"Language-Team: Hebrew <he@li.org>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
@@ -24,22 +24,12 @@ msgid "Navigation"
|
|||||||
msgstr "ניווט"
|
msgstr "ניווט"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:2
|
#: ../src/50-mutter-navigation.xml.in.h:2
|
||||||
#, fuzzy
|
|
||||||
msgid "Move window to workspace 1"
|
msgid "Move window to workspace 1"
|
||||||
msgstr ""
|
msgstr "העברת החלון למרחב עבודה 1"
|
||||||
"#-#-#-#-# he.po (metacity.HEAD.he) #-#-#-#-#\n"
|
|
||||||
"Move window to workspace 1\n"
|
|
||||||
"#-#-#-#-# he.po (metacity.HEAD.he) #-#-#-#-#\n"
|
|
||||||
"העברה למרחב עבודה 1"
|
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:3
|
#: ../src/50-mutter-navigation.xml.in.h:3
|
||||||
#, fuzzy
|
|
||||||
msgid "Move window to workspace 2"
|
msgid "Move window to workspace 2"
|
||||||
msgstr ""
|
msgstr "העברת החלון למרחב עבודה 2"
|
||||||
"#-#-#-#-# he.po (metacity.HEAD.he) #-#-#-#-#\n"
|
|
||||||
"Move window to workspace 2\n"
|
|
||||||
"#-#-#-#-# he.po (metacity.HEAD.he) #-#-#-#-#\n"
|
|
||||||
"העברה למרחב עבודה 2"
|
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:4
|
#: ../src/50-mutter-navigation.xml.in.h:4
|
||||||
msgid "Move window to workspace 3"
|
msgid "Move window to workspace 3"
|
||||||
@@ -70,58 +60,62 @@ msgid "Switch applications"
|
|||||||
msgstr "החלפה בין יישומים"
|
msgstr "החלפה בין יישומים"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Switch windows"
|
||||||
|
msgstr "החלפת חלונות"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "החלפה בין חלונות של יישום"
|
msgstr "החלפה בין חלונות של יישום"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "החלפה בין פקדי המערכת"
|
msgstr "החלפה בין פקדי המערכת"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "החלפת החלונות באופן ישיר"
|
msgstr "החלפת החלונות באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "החלפת חלונות של יישום באופן ישיר"
|
msgstr "החלפת חלונות של יישום באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "החלפת פקדי המערכת באופן ישיר"
|
msgstr "החלפת פקדי המערכת באופן ישיר"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "הסתרת כל החלונות הרגילים"
|
msgstr "הסתרת כל החלונות הרגילים"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "מעבר למרחב עבודה 1"
|
msgstr "מעבר למרחב עבודה 1"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "מעבר למרחב עבודה 2"
|
msgstr "מעבר למרחב עבודה 2"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "מעבר למרחב עבודה 3"
|
msgstr "מעבר למרחב עבודה 3"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "מעבר למרחב עבודה 4"
|
msgstr "מעבר למרחב עבודה 4"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "העברה למרחב העבודה לשמאל"
|
msgstr "העברה למרחב העבודה לשמאל"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "העברה למרחב העבודה לימין"
|
msgstr "העברה למרחב העבודה לימין"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "העברה למרחב העבודה שמלמעלה"
|
msgstr "העברה למרחב העבודה שמלמעלה"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "העברה למרחב העבודה שמלמטה"
|
msgstr "העברה למרחב העבודה שמלמטה"
|
||||||
|
|
||||||
@@ -170,8 +164,8 @@ msgid "Close window"
|
|||||||
msgstr "סגירת חלון"
|
msgstr "סגירת חלון"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:9
|
#: ../src/50-mutter-windows.xml.in.h:9
|
||||||
msgid "Minimize window"
|
msgid "Hide window"
|
||||||
msgstr "מזעור חלון"
|
msgstr "הסתרת החלון"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:10
|
#: ../src/50-mutter-windows.xml.in.h:10
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
@@ -215,12 +209,16 @@ msgstr "פיצול הצפייה מימין"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:492
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Another compositing manager is already running on screen %i on display \"%s\"."
|
msgid "Another compositing manager is already running on screen %i on display \"%s\"."
|
||||||
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“."
|
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“."
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/compositor/meta-background.c:1064
|
||||||
|
msgid "background texture could not be created from file"
|
||||||
|
msgstr "לא ניתן ליצור מרקם רקע מקובץ"
|
||||||
|
|
||||||
|
#: ../src/core/bell.c:322
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "אירוע פעמון"
|
msgstr "אירוע פעמון"
|
||||||
|
|
||||||
@@ -250,51 +248,56 @@ msgstr "ה_מתנה"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_אילוץ סגירה"
|
msgstr "_אילוץ סגירה"
|
||||||
|
|
||||||
#: ../src/core/display.c:397
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Missing %s extension required for compositing"
|
msgstr "Missing %s extension required for compositing"
|
||||||
|
|
||||||
#: ../src/core/display.c:494
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "Failed to open X Window System display '%s'\n"
|
msgstr "Failed to open X Window System display '%s'\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:860
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
|
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
|
||||||
msgstr "תכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
|
msgstr "תכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:196
|
#: ../src/core/keybindings.c:1135
|
||||||
|
#, c-format
|
||||||
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
|
msgstr "\"%s\" אינו מקש האצה תקני\n"
|
||||||
|
|
||||||
|
#: ../src/core/main.c:197
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Disable connection to session manager"
|
msgstr "Disable connection to session manager"
|
||||||
|
|
||||||
#: ../src/core/main.c:202
|
#: ../src/core/main.c:203
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Replace the running window manager"
|
msgstr "Replace the running window manager"
|
||||||
|
|
||||||
#: ../src/core/main.c:208
|
#: ../src/core/main.c:209
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Specify session management ID"
|
msgstr "Specify session management ID"
|
||||||
|
|
||||||
#: ../src/core/main.c:213
|
#: ../src/core/main.c:214
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "X Display to use"
|
msgstr "X Display to use"
|
||||||
|
|
||||||
#: ../src/core/main.c:219
|
#: ../src/core/main.c:220
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Initialize session from savefile"
|
msgstr "Initialize session from savefile"
|
||||||
|
|
||||||
#: ../src/core/main.c:225
|
#: ../src/core/main.c:226
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Make X calls synchronous"
|
msgstr "Make X calls synchronous"
|
||||||
|
|
||||||
#: ../src/core/main.c:494
|
#: ../src/core/main.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Failed to scan themes directory: %s\n"
|
msgstr "Failed to scan themes directory: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:510
|
#: ../src/core/main.c:550
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
msgstr "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
msgstr "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -320,51 +323,51 @@ msgstr "Print version"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "תוסף ה־mutter לשימוש"
|
msgstr "תוסף ה־mutter לשימוש"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1079
|
#: ../src/core/prefs.c:1095
|
||||||
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||||
msgstr "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
msgstr "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1154
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgstr "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1220
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||||
msgstr "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
msgstr "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1757
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
||||||
msgstr "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
msgstr "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1854
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "סביבת עבודה %d"
|
msgstr "סביבת עבודה %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:652
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Screen %d on display '%s' is invalid\n"
|
msgstr "Screen %d on display '%s' is invalid\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:668
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
|
msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
|
||||||
msgstr "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
|
msgstr "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:695
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
msgstr "Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:750
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Screen %d on display \"%s\" already has a window manager\n"
|
msgstr "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:935
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Could not release screen %d on display \"%s\"\n"
|
msgstr "Could not release screen %d on display \"%s\"\n"
|
||||||
@@ -423,45 +426,45 @@ msgstr "Unknown element %s"
|
|||||||
msgid "These windows do not support "save current setup" and will have to be restarted manually next time you log in."
|
msgid "These windows do not support "save current setup" and will have to be restarted manually next time you log in."
|
||||||
msgstr "חלונות אלו אינם תומכים ב"שמירת ההגדרות הנוכחיות", ויהיה צורך באתחול ידני בכניסה הבאה שלך."
|
msgstr "חלונות אלו אינם תומכים ב"שמירת ההגדרות הנוכחיות", ויהיה צורך באתחול ידני בכניסה הבאה שלך."
|
||||||
|
|
||||||
#: ../src/core/util.c:80
|
#: ../src/core/util.c:84
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "Failed to open debug log: %s\n"
|
msgstr "Failed to open debug log: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:90
|
#: ../src/core/util.c:94
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "Failed to fdopen() log file %s: %s\n"
|
msgstr "Failed to fdopen() log file %s: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:96
|
#: ../src/core/util.c:100
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "Opened log file %s\n"
|
msgstr "Opened log file %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:115
|
#: ../src/core/util.c:119
|
||||||
#: ../src/tools/mutter-message.c:149
|
#: ../src/tools/mutter-message.c:149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter הודר ללא תמיכה במצב פירוט\n"
|
msgstr "Mutter הודר ללא תמיכה במצב פירוט\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:259
|
#: ../src/core/util.c:264
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "Window manager: "
|
msgstr "Window manager: "
|
||||||
|
|
||||||
#: ../src/core/util.c:407
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "Bug in window manager: "
|
msgstr "Bug in window manager: "
|
||||||
|
|
||||||
#: ../src/core/util.c:438
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "Window manager warning: "
|
msgstr "Window manager warning: "
|
||||||
|
|
||||||
#: ../src/core/util.c:466
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "Window manager error: "
|
msgstr "Window manager error: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7240
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
||||||
msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
|
||||||
@@ -473,27 +476,27 @@ msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADE
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:7905
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||||
msgstr "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
msgstr "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:274
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Application set a bogus _NET_WM_PID %lu\n"
|
msgstr "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:393
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (מעל %s)"
|
msgstr "%s (מעל %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1448
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1459
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgstr "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
@@ -593,10 +596,18 @@ msgid "The amount of total draggable borders. If the theme's visible borders are
|
|||||||
msgstr "The amount of total draggable borders. If the theme's visible borders are not enough, invisible borders will be added to meet this value."
|
msgstr "The amount of total draggable borders. If the theme's visible borders are not enough, invisible borders will be added to meet this value."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||||
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
|
msgstr "Auto maximize nearly monitor sized windows"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||||
|
msgid "If enabled, new windows that are initially the size of the monitor automatically get maximized."
|
||||||
|
msgstr "If enabled, new windows that are initially the size of the monitor automatically get maximized."
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Select window from tab popup"
|
msgstr "Select window from tab popup"
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Cancel tab popup"
|
msgstr "Cancel tab popup"
|
||||||
|
|
||||||
@@ -800,252 +811,252 @@ msgstr "Mod5"
|
|||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#.
|
#.
|
||||||
#: ../src/ui/resizepopup.c:113
|
#: ../src/ui/resizepopup.c:136
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:234
|
#: ../src/ui/theme.c:236
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "top"
|
msgstr "top"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:238
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "bottom"
|
msgstr "bottom"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:240
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "left"
|
msgstr "left"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:242
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "right"
|
msgstr "right"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:268
|
#: ../src/ui/theme.c:270
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "frame geometry does not specify \"%s\" dimension"
|
msgstr "frame geometry does not specify \"%s\" dimension"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:287
|
#: ../src/ui/theme.c:289
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgstr "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:324
|
#: ../src/ui/theme.c:326
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "Button aspect ratio %g is not reasonable"
|
msgstr "Button aspect ratio %g is not reasonable"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:336
|
#: ../src/ui/theme.c:338
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Frame geometry does not specify size of buttons"
|
msgstr "Frame geometry does not specify size of buttons"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1049
|
#: ../src/ui/theme.c:1051
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Gradients should have at least two colors"
|
msgstr "Gradients should have at least two colors"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1201
|
#: ../src/ui/theme.c:1203
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
msgid "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
||||||
msgstr "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
msgstr "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1217
|
#: ../src/ui/theme.c:1219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
|
msgid "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
|
||||||
msgstr "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
|
msgstr "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1231
|
#: ../src/ui/theme.c:1233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
|
msgid "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
|
||||||
msgstr "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
|
msgstr "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1276
|
#: ../src/ui/theme.c:1278
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||||
msgstr "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
msgstr "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1290
|
#: ../src/ui/theme.c:1292
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||||
msgstr "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
msgstr "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1301
|
#: ../src/ui/theme.c:1303
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Did not understand state \"%s\" in color specification"
|
msgstr "Did not understand state \"%s\" in color specification"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1314
|
#: ../src/ui/theme.c:1316
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Did not understand color component \"%s\" in color specification"
|
msgstr "Did not understand color component \"%s\" in color specification"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1343
|
#: ../src/ui/theme.c:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
||||||
msgstr "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
msgstr "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1354
|
#: ../src/ui/theme.c:1356
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Could not parse alpha value \"%s\" in blended color"
|
msgstr "Could not parse alpha value \"%s\" in blended color"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1364
|
#: ../src/ui/theme.c:1366
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgstr "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1411
|
#: ../src/ui/theme.c:1413
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
msgstr "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
msgstr "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1422
|
#: ../src/ui/theme.c:1424
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "Could not parse shade factor \"%s\" in shaded color"
|
msgstr "Could not parse shade factor \"%s\" in shaded color"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1432
|
#: ../src/ui/theme.c:1434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Shade factor \"%s\" in shaded color is negative"
|
msgstr "Shade factor \"%s\" in shaded color is negative"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1461
|
#: ../src/ui/theme.c:1463
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Could not parse color \"%s\""
|
msgstr "Could not parse color \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1778
|
#: ../src/ui/theme.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Coordinate expression contains character '%s' which is not allowed"
|
msgstr "Coordinate expression contains character '%s' which is not allowed"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1805
|
#: ../src/ui/theme.c:1807
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
|
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
|
||||||
msgstr "Coordinate expression contains floating point number '%s' which could not be parsed"
|
msgstr "Coordinate expression contains floating point number '%s' which could not be parsed"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1819
|
#: ../src/ui/theme.c:1821
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "Coordinate expression contains integer '%s' which could not be parsed"
|
msgstr "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1940
|
#: ../src/ui/theme.c:1942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
||||||
msgstr "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
msgstr "Coordinate expression contained unknown operator at the start of this text: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1997
|
#: ../src/ui/theme.c:1999
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "Coordinate expression was empty or not understood"
|
msgstr "Coordinate expression was empty or not understood"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2110
|
#: ../src/ui/theme.c:2112
|
||||||
#: ../src/ui/theme.c:2120
|
#: ../src/ui/theme.c:2122
|
||||||
#: ../src/ui/theme.c:2154
|
#: ../src/ui/theme.c:2156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Coordinate expression results in division by zero"
|
msgstr "Coordinate expression results in division by zero"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2162
|
#: ../src/ui/theme.c:2164
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
msgid "Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
msgstr "Coordinate expression tries to use mod operator on a floating-point number"
|
msgstr "Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2218
|
#: ../src/ui/theme.c:2220
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr "Coordinate expression has an operator \"%s\" where an operand was expected"
|
msgstr "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2227
|
#: ../src/ui/theme.c:2229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr "Coordinate expression had an operand where an operator was expected"
|
msgstr "Coordinate expression had an operand where an operator was expected"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2235
|
#: ../src/ui/theme.c:2237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Coordinate expression ended with an operator instead of an operand"
|
msgstr "Coordinate expression ended with an operator instead of an operand"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2245
|
#: ../src/ui/theme.c:2247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
||||||
msgstr "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
msgstr "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2396
|
#: ../src/ui/theme.c:2398
|
||||||
#: ../src/ui/theme.c:2441
|
#: ../src/ui/theme.c:2443
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "Coordinate expression had unknown variable or constant \"%s\""
|
msgstr "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2495
|
#: ../src/ui/theme.c:2497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Coordinate expression parser overflowed its buffer."
|
msgstr "Coordinate expression parser overflowed its buffer."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2524
|
#: ../src/ui/theme.c:2526
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgstr "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2588
|
#: ../src/ui/theme.c:2590
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgstr "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2599
|
#: ../src/ui/theme.c:2601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "Coordinate expression doesn't seem to have any operators or operands"
|
msgstr "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2812
|
#: ../src/ui/theme.c:2814
|
||||||
#: ../src/ui/theme.c:2832
|
#: ../src/ui/theme.c:2834
|
||||||
#: ../src/ui/theme.c:2852
|
#: ../src/ui/theme.c:2854
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Theme contained an expression that resulted in an error: %s\n"
|
msgstr "Theme contained an expression that resulted in an error: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4498
|
#: ../src/ui/theme.c:4500
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
||||||
msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5009
|
#: ../src/ui/theme.c:5011
|
||||||
#: ../src/ui/theme.c:5034
|
#: ../src/ui/theme.c:5036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
msgstr "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Failed to load theme \"%s\": %s\n"
|
msgstr "Failed to load theme \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218
|
#: ../src/ui/theme.c:5220
|
||||||
#: ../src/ui/theme.c:5225
|
#: ../src/ui/theme.c:5227
|
||||||
#: ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239
|
#: ../src/ui/theme.c:5241
|
||||||
#: ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "No <%s> set for theme \"%s\""
|
msgstr "No <%s> set for theme \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
||||||
msgstr "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
msgstr "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5650
|
#: ../src/ui/theme.c:5663
|
||||||
#: ../src/ui/theme.c:5712
|
#: ../src/ui/theme.c:5725
|
||||||
#: ../src/ui/theme.c:5775
|
#: ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
msgstr "User-defined constants must begin with a capital letter; \"%s\" does not"
|
msgstr "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5658
|
#: ../src/ui/theme.c:5671
|
||||||
#: ../src/ui/theme.c:5720
|
#: ../src/ui/theme.c:5733
|
||||||
#: ../src/ui/theme.c:5783
|
#: ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Constant \"%s\" has already been defined"
|
msgstr "Constant \"%s\" has already been defined"
|
||||||
@@ -1417,7 +1428,7 @@ msgstr "מלל לא מורשה בתג <%s>"
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> צוין פעמיים עבור ערכת נושא זו"
|
msgstr "<%s> צוין פעמיים עבור ערכת נושא זו"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4334
|
#: ../src/ui/theme-parser.c:4336
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "Failed to find a valid file for theme %s\n"
|
msgstr "Failed to find a valid file for theme %s\n"
|
||||||
@@ -1523,97 +1534,100 @@ msgstr "מסגרת"
|
|||||||
msgid "Attached Modal Dialog"
|
msgid "Attached Modal Dialog"
|
||||||
msgstr "חלון חוסם מוצמד"
|
msgstr "חלון חוסם מוצמד"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:739
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button layout test %d"
|
msgid "Button layout test %d"
|
||||||
msgstr "בדיקת פריסת לחצנים %d"
|
msgstr "בדיקת פריסת לחצנים %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:768
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%g milliseconds to draw one window frame"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
msgstr "%g מילישניות לציור של מסגרת חלון אחת"
|
msgstr "%g מילישניות לציור של מסגרת חלון אחת"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:813
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
msgstr "Usage: metacity-theme-viewer [THEMENAME]\n"
|
msgstr "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:820
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error loading theme: %s\n"
|
msgid "Error loading theme: %s\n"
|
||||||
msgstr "Error loading theme: %s\n"
|
msgstr "Error loading theme: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:826
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
msgstr "Loaded theme \"%s\" in %g seconds\n"
|
msgstr "Loaded theme \"%s\" in %g seconds\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:870
|
#: ../src/ui/theme-viewer.c:869
|
||||||
msgid "Normal Title Font"
|
msgid "Normal Title Font"
|
||||||
msgstr "גופן כותרת רגילה"
|
msgstr "גופן כותרת רגילה"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:876
|
#: ../src/ui/theme-viewer.c:875
|
||||||
msgid "Small Title Font"
|
msgid "Small Title Font"
|
||||||
msgstr "גופן כותרת קטנה"
|
msgstr "גופן כותרת קטנה"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:882
|
#: ../src/ui/theme-viewer.c:881
|
||||||
msgid "Large Title Font"
|
msgid "Large Title Font"
|
||||||
msgstr "גופן כותרת גדולה"
|
msgstr "גופן כותרת גדולה"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:887
|
#: ../src/ui/theme-viewer.c:886
|
||||||
msgid "Button Layouts"
|
msgid "Button Layouts"
|
||||||
msgstr "פריסת לחצנים"
|
msgstr "פריסת לחצנים"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:892
|
#: ../src/ui/theme-viewer.c:891
|
||||||
msgid "Benchmark"
|
msgid "Benchmark"
|
||||||
msgstr "מדידת ביצועים"
|
msgstr "מדידת ביצועים"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:944
|
#: ../src/ui/theme-viewer.c:947
|
||||||
msgid "Window Title Goes Here"
|
msgid "Window Title Goes Here"
|
||||||
msgstr "כותרת החלון מופיעה כאן"
|
msgstr "כותרת החלון מופיעה כאן"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1047
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g seconds wall clock time including X server resources (%g milliseconds per frame)\n"
|
msgid "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g seconds wall clock time including X server resources (%g milliseconds per frame)\n"
|
||||||
msgstr "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g seconds wall clock time including X server resources (%g milliseconds per frame)\n"
|
msgstr "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g seconds wall clock time including X server resources (%g milliseconds per frame)\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1266
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
msgid "position expression test returned TRUE but set error"
|
msgid "position expression test returned TRUE but set error"
|
||||||
msgstr "position expression test returned TRUE but set error"
|
msgstr "position expression test returned TRUE but set error"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1268
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
msgid "position expression test returned FALSE but didn't set error"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
msgstr "position expression test returned FALSE but didn't set error"
|
msgstr "position expression test returned FALSE but didn't set error"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1272
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
msgid "Error was expected but none given"
|
msgid "Error was expected but none given"
|
||||||
msgstr "Error was expected but none given"
|
msgstr "Error was expected but none given"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1274
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d was expected but %d given"
|
msgid "Error %d was expected but %d given"
|
||||||
msgstr "Error %d was expected but %d given"
|
msgstr "Error %d was expected but %d given"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1280
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error not expected but one was returned: %s"
|
msgid "Error not expected but one was returned: %s"
|
||||||
msgstr "Error not expected but one was returned: %s"
|
msgstr "Error not expected but one was returned: %s"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1284
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "x value was %d, %d was expected"
|
msgid "x value was %d, %d was expected"
|
||||||
msgstr "x value was %d, %d was expected"
|
msgstr "x value was %d, %d was expected"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1287
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "y value was %d, %d was expected"
|
msgid "y value was %d, %d was expected"
|
||||||
msgstr "y value was %d, %d was expected"
|
msgstr "y value was %d, %d was expected"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1352
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
msgstr "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgstr "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
|
|
||||||
|
#~ msgid "Minimize window"
|
||||||
|
#~ msgstr "מזעור חלון"
|
||||||
|
|
||||||
#~ msgid "Comma-separated list of compositor plugins"
|
#~ msgid "Comma-separated list of compositor plugins"
|
||||||
#~ msgstr "Comma-separated list of compositor plugins"
|
#~ msgstr "Comma-separated list of compositor plugins"
|
||||||
|
|
||||||
|
225
po/pl.po
225
po/pl.po
@@ -9,14 +9,14 @@
|
|||||||
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
||||||
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
||||||
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
||||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2012.
|
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2013.
|
||||||
# Aviary.pl <gnomepl@aviary.pl>, 2007-2012.
|
# Aviary.pl <gnomepl@aviary.pl>, 2007-2013.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-12-16 02:49+0100\n"
|
"POT-Creation-Date: 2013-03-02 01:52+0100\n"
|
||||||
"PO-Revision-Date: 2012-12-16 02:50+0100\n"
|
"PO-Revision-Date: 2013-03-02 01:53+0100\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@@ -173,8 +173,8 @@ msgid "Close window"
|
|||||||
msgstr "Zamknięcie okna"
|
msgstr "Zamknięcie okna"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:9
|
#: ../src/50-mutter-windows.xml.in.h:9
|
||||||
msgid "Minimize window"
|
msgid "Hide window"
|
||||||
msgstr "Minimalizacja okna"
|
msgstr "Ukrycie okna"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:10
|
#: ../src/50-mutter-windows.xml.in.h:10
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
@@ -187,7 +187,7 @@ msgstr "Zmiana rozmiaru okna"
|
|||||||
#: ../src/50-mutter-windows.xml.in.h:12
|
#: ../src/50-mutter-windows.xml.in.h:12
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Przełączenie obecności okna na wszystkich obszarach roboczych lub jednym "
|
"Przełączenie obecności okna na wszystkich obszarach roboczych lub jednym"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:13
|
#: ../src/50-mutter-windows.xml.in.h:13
|
||||||
msgid "Raise window if covered, otherwise lower it"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
@@ -220,7 +220,7 @@ msgstr "Podział widoku po prawej"
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:512
|
#: ../src/compositor/compositor.c:507
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -228,6 +228,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Inny menedżer składania jest już uruchomiony na podekranie %i ekranu \"%s\"."
|
"Inny menedżer składania jest już uruchomiony na podekranie %i ekranu \"%s\"."
|
||||||
|
|
||||||
|
#: ../src/compositor/meta-background.c:1111
|
||||||
|
msgid "background texture could not be created from file"
|
||||||
|
msgstr "nie można utworzyć tekstury tła z pliku"
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/core/bell.c:320
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Zdarzenie sygnału dźwiękowego"
|
msgstr "Zdarzenie sygnału dźwiękowego"
|
||||||
@@ -260,18 +264,18 @@ msgstr "_Czekaj"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Zakończ"
|
msgstr "_Zakończ"
|
||||||
|
|
||||||
#: ../src/core/display.c:394
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "Brak rozszerzenia %s, wymaganego przez składanie"
|
msgstr "Brak rozszerzenia %s, wymaganego przez składanie"
|
||||||
|
|
||||||
#: ../src/core/display.c:491
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Otwarcie połączenia z ekranem \"%s\" systemu X Window się nie powiodło\n"
|
"Otwarcie połączenia z ekranem \"%s\" systemu X Window się nie powiodło\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:870
|
#: ../src/core/keybindings.c:929
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -280,9 +284,14 @@ msgstr ""
|
|||||||
"Skrótu klawiszowego z klawiszem %s i modyfikatorami %x używa już inny "
|
"Skrótu klawiszowego z klawiszem %s i modyfikatorami %x używa już inny "
|
||||||
"program\n"
|
"program\n"
|
||||||
|
|
||||||
|
#: ../src/core/keybindings.c:1129
|
||||||
|
#, c-format
|
||||||
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
|
msgstr "\"%s\" nie jest prawidłowym skrótem\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:196
|
#: ../src/core/main.c:196
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Wyłącza połączenie z menedżerem sesji"
|
msgstr "Rozłącza połączenie z menedżerem sesji"
|
||||||
|
|
||||||
#: ../src/core/main.c:202
|
#: ../src/core/main.c:202
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
@@ -290,7 +299,7 @@ msgstr "Zastępuje uruchomionego menedżera okien"
|
|||||||
|
|
||||||
#: ../src/core/main.c:208
|
#: ../src/core/main.c:208
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Określa identyfikator zarządzania sesją"
|
msgstr "Podaje identyfikator zarządzania sesją"
|
||||||
|
|
||||||
#: ../src/core/main.c:213
|
#: ../src/core/main.c:213
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
@@ -304,12 +313,12 @@ msgstr "Inicjuje sesję z zapisanego pliku"
|
|||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Synchroniczne wywołania X"
|
msgstr "Synchroniczne wywołania X"
|
||||||
|
|
||||||
#: ../src/core/main.c:496
|
#: ../src/core/main.c:533
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "Przejrzenie katalogu z motywami się nie powiodło: %s\n"
|
msgstr "Przejrzenie katalogu z motywami się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:512
|
#: ../src/core/main.c:549
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -341,7 +350,7 @@ msgstr "Wyświetla wersję"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Używana wtyczka programu Mutter"
|
msgstr "Używana wtyczka programu Mutter"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1079
|
#: ../src/core/prefs.c:1087
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -349,14 +358,14 @@ msgstr ""
|
|||||||
"Obejścia dla błędnie działających programów są wyłączone. Niektóre z nich "
|
"Obejścia dla błędnie działających programów są wyłączone. Niektóre z nich "
|
||||||
"mogą się zachowywać w sposób nieprzewidywalny.\n"
|
"mogą się zachowywać w sposób nieprzewidywalny.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1154
|
#: ../src/core/prefs.c:1162
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie można przetworzyć opisu czcionki \"%s\", powiązanego z kluczem GSettings "
|
"Nie można przetworzyć opisu czcionki \"%s\", powiązanego z kluczem GSettings "
|
||||||
"%s\n"
|
"%s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1220
|
#: ../src/core/prefs.c:1228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -365,7 +374,7 @@ msgstr ""
|
|||||||
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
||||||
"prawidłowo modyfikatora przycisku myszy\n"
|
"prawidłowo modyfikatora przycisku myszy\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1757
|
#: ../src/core/prefs.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
@@ -374,17 +383,17 @@ msgstr ""
|
|||||||
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
"Wartość \"%s\", odnaleziona w bazie danych konfiguracji nie opisuje "
|
||||||
"prawidłowo skrótu klawiszowego \"%s\"\n"
|
"prawidłowo skrótu klawiszowego \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1854
|
#: ../src/core/prefs.c:1879
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Obszar roboczy %d"
|
msgstr "Obszar roboczy %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:658
|
#: ../src/core/screen.c:673
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "Podekran %d ekranu \"%s\" jest nieprawidłowy\n"
|
msgstr "Podekran %d ekranu \"%s\" jest nieprawidłowy\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:674
|
#: ../src/core/screen.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -393,7 +402,7 @@ msgstr ""
|
|||||||
"Na podekranie %d ekranu \"%s\" działa już menedżer okien. Aby zastąpić "
|
"Na podekranie %d ekranu \"%s\" działa już menedżer okien. Aby zastąpić "
|
||||||
"działającego menedżera okien, proszę spróbować użyć opcji --replace.\n"
|
"działającego menedżera okien, proszę spróbować użyć opcji --replace.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:701
|
#: ../src/core/screen.c:716
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
@@ -401,12 +410,12 @@ msgstr ""
|
|||||||
"Nie można uzyskać zaznaczenia menedżera okien na podekranie %d ekranu \"%s"
|
"Nie można uzyskać zaznaczenia menedżera okien na podekranie %d ekranu \"%s"
|
||||||
"\"\n"
|
"\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:770
|
#: ../src/core/screen.c:794
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "Na podekranie %d ekranu \"%s\" działa już menedżer okien\n"
|
msgstr "Na podekranie %d ekranu \"%s\" działa już menedżer okien\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:955
|
#: ../src/core/screen.c:979
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "Nie można zwolnić podekranu %d ekranu \"%s\"\n"
|
msgstr "Nie można zwolnić podekranu %d ekranu \"%s\"\n"
|
||||||
@@ -506,7 +515,7 @@ msgid "Window manager error: "
|
|||||||
msgstr "Błąd menedżera okien: "
|
msgstr "Błąd menedżera okien: "
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7253
|
#: ../src/core/window.c:7539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -522,7 +531,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:7918
|
#: ../src/core/window.c:8263
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -532,23 +541,23 @@ msgstr ""
|
|||||||
"niezmienny, lecz jednocześnie ustawia minimalny rozmiar na %d x %d, a "
|
"niezmienny, lecz jednocześnie ustawia minimalny rozmiar na %d x %d, a "
|
||||||
"maksymalny rozmiar na %d x %d. To nie ma żadnego sensu.\n"
|
"maksymalny rozmiar na %d x %d. To nie ma żadnego sensu.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:274
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "Program ustawił błędną wartość _NET_WM_PID %lu\n"
|
msgstr "Program ustawił błędną wartość _NET_WM_PID %lu\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:393
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %s)"
|
msgstr "%s (na %s)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1448
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nieprawidłowa wartość WM_TRANSIENT_FOR dla okna 0x%lx określona w %s.\n"
|
"Nieprawidłowa wartość WM_TRANSIENT_FOR dla okna 0x%lx określona w %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1459
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR okna 0x%lx dla %s utworzyłoby pętlę.\n"
|
msgstr "WM_TRANSIENT_FOR okna 0x%lx dla %s utworzyłoby pętlę.\n"
|
||||||
@@ -700,10 +709,24 @@ msgstr ""
|
|||||||
"krawędzie, aby spełnić tę wartość."
|
"krawędzie, aby spełnić tę wartość."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||||
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
|
msgstr ""
|
||||||
|
"Automatyczne maksymalizowanie okien o rozmiarze zbliżonym do rozmiaru "
|
||||||
|
"monitora"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"If enabled, new windows that are initially the size of the monitor "
|
||||||
|
"automatically get maximized."
|
||||||
|
msgstr ""
|
||||||
|
"Jeśli jest włączone, to nowe okna o początkowym rozmiarze zbliżonym do "
|
||||||
|
"rozmiaru monitora zostają automatycznie maksymalizowane."
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Wybór okna z wyskakującego okna dla tabulacji"
|
msgstr "Wybór okna z wyskakującego okna dla tabulacji"
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Anulowanie wyskakującego okna dla tabulacji"
|
msgstr "Anulowanie wyskakującego okna dla tabulacji"
|
||||||
|
|
||||||
@@ -906,54 +929,54 @@ msgstr "Mod5"
|
|||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#.
|
#.
|
||||||
#: ../src/ui/resizepopup.c:113
|
#: ../src/ui/resizepopup.c:136
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:234
|
#: ../src/ui/theme.c:235
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "góra"
|
msgstr "góra"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:237
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "dół"
|
msgstr "dół"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:239
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "lewa"
|
msgstr "lewa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:241
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "prawa"
|
msgstr "prawa"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:268
|
#: ../src/ui/theme.c:269
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "Rozmiar ramki nie określa wymiaru \"%s\""
|
msgstr "Rozmiar ramki nie określa wymiaru \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:287
|
#: ../src/ui/theme.c:288
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "Rozmiar ramki nie określa wymiaru \"%s\" dla krawędzi \"%s\""
|
msgstr "Rozmiar ramki nie określa wymiaru \"%s\" dla krawędzi \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:324
|
#: ../src/ui/theme.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Współczynnik proporcji przycisku %g nie mieści się w rozsądnych granicach"
|
"Współczynnik proporcji przycisku %g nie mieści się w rozsądnych granicach"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:336
|
#: ../src/ui/theme.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "Rozmiar ramki nie określa liczby przycisków"
|
msgstr "Rozmiar ramki nie określa liczby przycisków"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1049
|
#: ../src/ui/theme.c:1050
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "Gradienty powinny się składać co najmniej z dwóch kolorów"
|
msgstr "Gradienty powinny się składać co najmniej z dwóch kolorów"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1201
|
#: ../src/ui/theme.c:1202
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -963,7 +986,7 @@ msgstr ""
|
|||||||
"kolor zastępczy w nawiasach, np. gtk:custom(foo,bar); nie można przetworzyć "
|
"kolor zastępczy w nawiasach, np. gtk:custom(foo,bar); nie można przetworzyć "
|
||||||
"\"%s\""
|
"\"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1217
|
#: ../src/ui/theme.c:1218
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -972,7 +995,7 @@ msgstr ""
|
|||||||
"Nieprawidłowy znak \"%c\" w parametrze nazwa_koloru opcji gtk:custom, tylko "
|
"Nieprawidłowy znak \"%c\" w parametrze nazwa_koloru opcji gtk:custom, tylko "
|
||||||
"znaki A-Za-z0-9-_ są prawidłowe"
|
"znaki A-Za-z0-9-_ są prawidłowe"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1231
|
#: ../src/ui/theme.c:1232
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -981,7 +1004,7 @@ msgstr ""
|
|||||||
"Formatem Gtk:custom jest \"gtk:custom(nazwa_koloru,kolor_zastępczy)\", \"%s"
|
"Formatem Gtk:custom jest \"gtk:custom(nazwa_koloru,kolor_zastępczy)\", \"%s"
|
||||||
"\" nie pasuje do formatu"
|
"\" nie pasuje do formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1276
|
#: ../src/ui/theme.c:1277
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -991,7 +1014,7 @@ msgstr ""
|
|||||||
"kwadratowych, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie można "
|
"kwadratowych, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie można "
|
||||||
"przetworzyć \"%s\""
|
"przetworzyć \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1290
|
#: ../src/ui/theme.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -1001,17 +1024,17 @@ msgstr ""
|
|||||||
"nawias kwadratowy, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie "
|
"nawias kwadratowy, np. gtk:fg[NORMAL], gdzie NORMAL jest nazwą stanu; nie "
|
||||||
"można przetworzyć \"%s\""
|
"można przetworzyć \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1301
|
#: ../src/ui/theme.c:1302
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "Niezrozumiały stan \"%s\" w specyfikacji koloru"
|
msgstr "Niezrozumiały stan \"%s\" w specyfikacji koloru"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1314
|
#: ../src/ui/theme.c:1315
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "Niezrozumiała definicja koloru \"%s\" w specyfikacji koloru"
|
msgstr "Niezrozumiała definicja koloru \"%s\" w specyfikacji koloru"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1343
|
#: ../src/ui/theme.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1020,19 +1043,19 @@ msgstr ""
|
|||||||
"Formatem przenikania jest \"blend/bg_color/fg_color/alpha\", \"%s\" nie "
|
"Formatem przenikania jest \"blend/bg_color/fg_color/alpha\", \"%s\" nie "
|
||||||
"pasuje do formatu"
|
"pasuje do formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1354
|
#: ../src/ui/theme.c:1355
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "Nie można przetworzyć wartości alfa \"%s\" w przenikającym kolorze"
|
msgstr "Nie można przetworzyć wartości alfa \"%s\" w przenikającym kolorze"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1364
|
#: ../src/ui/theme.c:1365
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wartość alfa \"%s\" w przenikającym kolorze nie zawiera się pomiędzy 0,0 i "
|
"Wartość alfa \"%s\" w przenikającym kolorze nie zawiera się pomiędzy 0,0 i "
|
||||||
"1,0"
|
"1,0"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1411
|
#: ../src/ui/theme.c:1412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1040,29 +1063,29 @@ msgstr ""
|
|||||||
"Formatem przenikania jest \"shade/base_color/factor\", \"%s\" nie pasuje do "
|
"Formatem przenikania jest \"shade/base_color/factor\", \"%s\" nie pasuje do "
|
||||||
"formatu"
|
"formatu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1422
|
#: ../src/ui/theme.c:1423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nie można przetworzyć współczynnika przenikania \"%s\" w przenikającym "
|
"Nie można przetworzyć współczynnika przenikania \"%s\" w przenikającym "
|
||||||
"kolorze"
|
"kolorze"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1432
|
#: ../src/ui/theme.c:1433
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "Współczynnik przenikania \"%s\" w przenikającym kolorze jest ujemny"
|
msgstr "Współczynnik przenikania \"%s\" w przenikającym kolorze jest ujemny"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1461
|
#: ../src/ui/theme.c:1462
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "Nie można przetworzyć koloru \"%s\""
|
msgstr "Nie można przetworzyć koloru \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1778
|
#: ../src/ui/theme.c:1779
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "Wyrażenie określające współrzędne zawiera niedozwolony znak \"%s\""
|
msgstr "Wyrażenie określające współrzędne zawiera niedozwolony znak \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1805
|
#: ../src/ui/theme.c:1806
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
@@ -1071,14 +1094,14 @@ msgstr ""
|
|||||||
"Wyrażenie określające współrzędne zawiera liczbę zmiennoprzecinkową \"%s\", "
|
"Wyrażenie określające współrzędne zawiera liczbę zmiennoprzecinkową \"%s\", "
|
||||||
"której nie można przetworzyć"
|
"której nie można przetworzyć"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1819
|
#: ../src/ui/theme.c:1820
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie określające współrzędne zawiera liczbę całkowitą \"%s\", której "
|
"Wyrażenie określające współrzędne zawiera liczbę całkowitą \"%s\", której "
|
||||||
"nie można przetworzyć"
|
"nie można przetworzyć"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1940
|
#: ../src/ui/theme.c:1941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1087,18 +1110,18 @@ msgstr ""
|
|||||||
"Wyrażenie określające współrzędne zawiera nieznany operator na początku "
|
"Wyrażenie określające współrzędne zawiera nieznany operator na początku "
|
||||||
"tekstu: \"%s\""
|
"tekstu: \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1997
|
#: ../src/ui/theme.c:1998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie określające współrzędne jest puste lub nie można go rozpoznać"
|
"Wyrażenie określające współrzędne jest puste lub nie można go rozpoznać"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "Wyrażenie opisujące położenie zawiera dzielenie przez zero"
|
msgstr "Wyrażenie opisujące położenie zawiera dzielenie przez zero"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2162
|
#: ../src/ui/theme.c:2163
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
@@ -1106,7 +1129,7 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie używa operatora dzielenia modulo z liczbą "
|
"Wyrażenie opisujące położenie używa operatora dzielenia modulo z liczbą "
|
||||||
"zmiennoprzecinkową"
|
"zmiennoprzecinkową"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2218
|
#: ../src/ui/theme.c:2219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
@@ -1114,19 +1137,19 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie zawiera operator \"%s\" w miejscu, w którym "
|
"Wyrażenie opisujące położenie zawiera operator \"%s\" w miejscu, w którym "
|
||||||
"oczekiwano operandu"
|
"oczekiwano operandu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2227
|
#: ../src/ui/theme.c:2228
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera operand w miejscu, w którym oczekiwano "
|
"Wyrażenie opisujące położenie zawiera operand w miejscu, w którym oczekiwano "
|
||||||
"operatora"
|
"operatora"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2235
|
#: ../src/ui/theme.c:2236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "Wyrażenie opisujące położenie kończy się operatorem zamiast operandem"
|
msgstr "Wyrażenie opisujące położenie kończy się operatorem zamiast operandem"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2245
|
#: ../src/ui/theme.c:2246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1135,43 +1158,43 @@ msgstr ""
|
|||||||
"Wyrażenie opisujące położenie zawiera operator \"%c\" bezpośrednio po "
|
"Wyrażenie opisujące położenie zawiera operator \"%c\" bezpośrednio po "
|
||||||
"operatorze \"%c\" bez rozdzielającego ich operandu"
|
"operatorze \"%c\" bez rozdzielającego ich operandu"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nieznaną zmienną lub stałą \"%s\""
|
"Wyrażenie opisujące położenie zawiera nieznaną zmienną lub stałą \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2495
|
#: ../src/ui/theme.c:2496
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "Parser wyrażeń określających współrzędne przepełnił swój bufor."
|
msgstr "Parser wyrażeń określających współrzędne przepełnił swój bufor."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2524
|
#: ../src/ui/theme.c:2525
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nawias zamykający bez odpowiadającego "
|
"Wyrażenie opisujące położenie zawiera nawias zamykający bez odpowiadającego "
|
||||||
"mu nawiasu otwierającego"
|
"mu nawiasu otwierającego"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2588
|
#: ../src/ui/theme.c:2589
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie zawiera nawias otwierający bez odpowiadającego "
|
"Wyrażenie opisujące położenie zawiera nawias otwierający bez odpowiadającego "
|
||||||
"mu nawiasu zamykającego"
|
"mu nawiasu zamykającego"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2599
|
#: ../src/ui/theme.c:2600
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wyrażenie opisujące położenie nie zawiera żadnych operatorów ani operandów"
|
"Wyrażenie opisujące położenie nie zawiera żadnych operatorów ani operandów"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "Motyw zawiera wyrażenie, przy którego obliczaniu wystąpił błąd: %s\n"
|
msgstr "Motyw zawiera wyrażenie, przy którego obliczaniu wystąpił błąd: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4498
|
#: ../src/ui/theme.c:4499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1180,25 +1203,25 @@ msgstr ""
|
|||||||
"Przy tym stylu ramki należy podać <button function=\"%s\" state=\"%s\" "
|
"Przy tym stylu ramki należy podać <button function=\"%s\" state=\"%s\" "
|
||||||
"draw_ops=\"cokolwiek\"/>"
|
"draw_ops=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Brak <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokolwiek\"/>"
|
"Brak <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5083
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "Wczytanie motywu \"%s\" się nie powiodło: %s\n"
|
msgstr "Wczytanie motywu \"%s\" się nie powiodło: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "Nie określono elementu <%s> dla motywu \"%s\""
|
msgstr "Nie określono elementu <%s> dla motywu \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1207,7 +1230,7 @@ msgstr ""
|
|||||||
"Przy typie okna \"%s\" w motywie \"%s\" nie ustawiono stylu ramki. Należy "
|
"Przy typie okna \"%s\" w motywie \"%s\" nie ustawiono stylu ramki. Należy "
|
||||||
"dodać element <window type=\"%s\" style_set=\"cokolwiek\"/>"
|
"dodać element <window type=\"%s\" style_set=\"cokolwiek\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1215,7 +1238,7 @@ msgstr ""
|
|||||||
"Stałe definiowane przez użytkownika powinny rozpoczynać się wielką literą, "
|
"Stałe definiowane przez użytkownika powinny rozpoczynać się wielką literą, "
|
||||||
"natomiast \"%s\" nie spełnia tego warunku"
|
"natomiast \"%s\" nie spełnia tego warunku"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "Stała \"%s\" została już określona"
|
msgstr "Stała \"%s\" została już określona"
|
||||||
@@ -1709,57 +1732,57 @@ msgstr "Krawędź"
|
|||||||
msgid "Attached Modal Dialog"
|
msgid "Attached Modal Dialog"
|
||||||
msgstr "Dołączone modalne okno dialogowe"
|
msgstr "Dołączone modalne okno dialogowe"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:739
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button layout test %d"
|
msgid "Button layout test %d"
|
||||||
msgstr "Test układu przycisków %d"
|
msgstr "Test układu przycisków %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:768
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%g milliseconds to draw one window frame"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
msgstr "%g milisekundy do narysowania jednej ramki okna"
|
msgstr "%g milisekundy do narysowania jednej ramki okna"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:813
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
msgstr "Użycie: metacity-theme-viewer [NAZWA_MOTYWU]\n"
|
msgstr "Użycie: metacity-theme-viewer [NAZWA_MOTYWU]\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:820
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error loading theme: %s\n"
|
msgid "Error loading theme: %s\n"
|
||||||
msgstr "Błąd podczas wczytywania motywu: %s\n"
|
msgstr "Błąd podczas wczytywania motywu: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:826
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
msgstr "Wczytano motyw \"%s\" w ciągu %g sekund\n"
|
msgstr "Wczytano motyw \"%s\" w ciągu %g sekund\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:870
|
#: ../src/ui/theme-viewer.c:869
|
||||||
msgid "Normal Title Font"
|
msgid "Normal Title Font"
|
||||||
msgstr "Zwykła czcionka tytułu"
|
msgstr "Zwykła czcionka tytułu"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:876
|
#: ../src/ui/theme-viewer.c:875
|
||||||
msgid "Small Title Font"
|
msgid "Small Title Font"
|
||||||
msgstr "Mała czcionka tytułu"
|
msgstr "Mała czcionka tytułu"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:882
|
#: ../src/ui/theme-viewer.c:881
|
||||||
msgid "Large Title Font"
|
msgid "Large Title Font"
|
||||||
msgstr "Duża czcionka tytułu"
|
msgstr "Duża czcionka tytułu"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:887
|
#: ../src/ui/theme-viewer.c:886
|
||||||
msgid "Button Layouts"
|
msgid "Button Layouts"
|
||||||
msgstr "Układy przycisków"
|
msgstr "Układy przycisków"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:892
|
#: ../src/ui/theme-viewer.c:891
|
||||||
msgid "Benchmark"
|
msgid "Benchmark"
|
||||||
msgstr "Test wydajności"
|
msgstr "Test wydajności"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:944
|
#: ../src/ui/theme-viewer.c:947
|
||||||
msgid "Window Title Goes Here"
|
msgid "Window Title Goes Here"
|
||||||
msgstr "Tutaj znajduje się tytuł okna"
|
msgstr "Tutaj znajduje się tytuł okna"
|
||||||
|
|
||||||
# FIXME - bełkot
|
# FIXME - bełkot
|
||||||
#: ../src/ui/theme-viewer.c:1047
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
@@ -1770,39 +1793,39 @@ msgstr ""
|
|||||||
"%g sekund rzeczywistych, włączając w to zasoby serwera X (%g milisekund na "
|
"%g sekund rzeczywistych, włączając w to zasoby serwera X (%g milisekund na "
|
||||||
"ramkę)\n"
|
"ramkę)\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1266
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
msgid "position expression test returned TRUE but set error"
|
msgid "position expression test returned TRUE but set error"
|
||||||
msgstr "Test wyrażenia pozycji zwrócił wartość PRAWDA, lecz ustawił błąd"
|
msgstr "Test wyrażenia pozycji zwrócił wartość PRAWDA, lecz ustawił błąd"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1268
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
msgid "position expression test returned FALSE but didn't set error"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
msgstr "Test wyrażenia pozycji zwrócił wartość FAŁSZ, lecz nie ustawił błędu"
|
msgstr "Test wyrażenia pozycji zwrócił wartość FAŁSZ, lecz nie ustawił błędu"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1272
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
msgid "Error was expected but none given"
|
msgid "Error was expected but none given"
|
||||||
msgstr "Oczekiwano błędu, lecz nie otrzymano żadnego"
|
msgstr "Oczekiwano błędu, lecz nie otrzymano żadnego"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1274
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d was expected but %d given"
|
msgid "Error %d was expected but %d given"
|
||||||
msgstr "Oczekiwano błędu %d, lecz otrzymano %d"
|
msgstr "Oczekiwano błędu %d, lecz otrzymano %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1280
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error not expected but one was returned: %s"
|
msgid "Error not expected but one was returned: %s"
|
||||||
msgstr "Nie oczekiwano błędu, lecz został on zwrócony: %s"
|
msgstr "Nie oczekiwano błędu, lecz został on zwrócony: %s"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1284
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "x value was %d, %d was expected"
|
msgid "x value was %d, %d was expected"
|
||||||
msgstr "Wartością X było %d, oczekiwano wartości %d"
|
msgstr "Wartością X było %d, oczekiwano wartości %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1287
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "y value was %d, %d was expected"
|
msgid "y value was %d, %d was expected"
|
||||||
msgstr "Wartością Y było %d, oczekiwano wartości %d"
|
msgstr "Wartością Y było %d, oczekiwano wartości %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1352
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
642
po/pt_BR.po
642
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
573
po/sr@latin.po
573
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
282
po/ta.po
282
po/ta.po
@@ -7,17 +7,17 @@
|
|||||||
# Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003.
|
# Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003.
|
||||||
# Jayaradha N <jaya@pune.redhat.com>, 2004.
|
# Jayaradha N <jaya@pune.redhat.com>, 2004.
|
||||||
# Felix <ifelix@redhat.com>, 2006.
|
# Felix <ifelix@redhat.com>, 2006.
|
||||||
# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012.
|
# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012, 2013.
|
||||||
# Dr.T.vasudevan <agnihot3@gmail.com>, 2009.
|
# Dr.T.vasudevan <agnihot3@gmail.com>, 2009.
|
||||||
# I. Felix <ifelix@redhat.com>, 2009, 2011.
|
# I. Felix <ifelix@redhat.com>, 2009, 2011.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity.gnome-2-26.ta\n"
|
"Project-Id-Version: metacity.gnome-2-26.ta\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-12-02 17:25+0530\n"
|
"POT-Creation-Date: 2013-03-23 14:03+0530\n"
|
||||||
"PO-Revision-Date: 2012-12-02 18:58+0530\n"
|
"PO-Revision-Date: 2013-03-23 14:11+0530\n"
|
||||||
"Last-Translator: Dr.T.Vasudevan <drtvasudevan@gmail.com>\n"
|
"Last-Translator: Dr.T.Vasudevan <drtvasudevan@gmail.com>\n"
|
||||||
"Language-Team: American English <gnome-tamil-translation@googlegroups.com>\n"
|
"Language-Team: American English <<gnome-tamil-translation@googlegroups.com>>\n"
|
||||||
"Language: en_US\n"
|
"Language: en_US\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -70,58 +70,62 @@ msgid "Switch applications"
|
|||||||
msgstr "பயன்பாடுகளுக்கிடையே மாறவும்"
|
msgstr "பயன்பாடுகளுக்கிடையே மாறவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:11
|
#: ../src/50-mutter-navigation.xml.in.h:11
|
||||||
|
msgid "Switch windows"
|
||||||
|
msgstr "சாளரத்தை மாற்றுக"
|
||||||
|
|
||||||
|
#: ../src/50-mutter-navigation.xml.in.h:12
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே மாறவும்"
|
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே மாறவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:12
|
#: ../src/50-mutter-navigation.xml.in.h:13
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "கணினி கட்டுப்பாடுகளை மாற்றவும்"
|
msgstr "கணினி கட்டுப்பாடுகளை மாற்றவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:13
|
#: ../src/50-mutter-navigation.xml.in.h:14
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "சாளரங்களிடையே உடனடியாக நகரவும்"
|
msgstr "சாளரங்களிடையே உடனடியாக நகரவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:14
|
#: ../src/50-mutter-navigation.xml.in.h:15
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே நேரடியாக நகரவும்"
|
msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே நேரடியாக நகரவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:15
|
#: ../src/50-mutter-navigation.xml.in.h:16
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "கணினி கட்டுப்பாடுகளை நேரடியாக மாற்றவும்"
|
msgstr "கணினி கட்டுப்பாடுகளை நேரடியாக மாற்றவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:16
|
#: ../src/50-mutter-navigation.xml.in.h:17
|
||||||
msgid "Hide all normal windows"
|
msgid "Hide all normal windows"
|
||||||
msgstr "எல்லா வழக்கமான சாளரங்களையும் மறை"
|
msgstr "எல்லா வழக்கமான சாளரங்களையும் மறை"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:17
|
#: ../src/50-mutter-navigation.xml.in.h:18
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "பணியிடம் 1க்கு மாறு"
|
msgstr "பணியிடம் 1க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:18
|
#: ../src/50-mutter-navigation.xml.in.h:19
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "பணியிடம் 2 க்கு மாறு"
|
msgstr "பணியிடம் 2 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:19
|
#: ../src/50-mutter-navigation.xml.in.h:20
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "பணியிடம் 3 க்கு மாறு"
|
msgstr "பணியிடம் 3 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:20
|
#: ../src/50-mutter-navigation.xml.in.h:21
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "பணியிடம் 4 க்கு மாறு"
|
msgstr "பணியிடம் 4 க்கு மாறு"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:21
|
#: ../src/50-mutter-navigation.xml.in.h:22
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "வேலையிடத்தை இடப்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை இடப்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:22
|
#: ../src/50-mutter-navigation.xml.in.h:23
|
||||||
msgid "Move to workspace right"
|
msgid "Move to workspace right"
|
||||||
msgstr "வேலையிடத்தை வலப்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை வலப்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:23
|
#: ../src/50-mutter-navigation.xml.in.h:24
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "வேலையிடத்தை மேல்பக்கத்திற்கு நகர்த்தவும்"
|
msgstr "வேலையிடத்தை மேல்பக்கத்திற்கு நகர்த்தவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-navigation.xml.in.h:24
|
#: ../src/50-mutter-navigation.xml.in.h:25
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "வேலையிடத்தை கீழே நகர்த்தவும் "
|
msgstr "வேலையிடத்தை கீழே நகர்த்தவும் "
|
||||||
|
|
||||||
@@ -170,8 +174,8 @@ msgid "Close window"
|
|||||||
msgstr "சாளரம் மூடவும்"
|
msgstr "சாளரம் மூடவும்"
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:9
|
#: ../src/50-mutter-windows.xml.in.h:9
|
||||||
msgid "Minimize window"
|
msgid "Hide window"
|
||||||
msgstr "சாளரத்தை சிறிதாக்கு"
|
msgstr "சாளரத்தை மறை "
|
||||||
|
|
||||||
#: ../src/50-mutter-windows.xml.in.h:10
|
#: ../src/50-mutter-windows.xml.in.h:10
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
@@ -217,7 +221,7 @@ msgstr "வலது பக்கத்தில் பிளந்து பா
|
|||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:492
|
#: ../src/compositor/compositor.c:568
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%s"
|
"Another compositing manager is already running on screen %i on display \"%s"
|
||||||
@@ -225,7 +229,11 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
" %i திரையில் காட்சி \"%s\" இல் இன்னொரு சாளர மேலாளர் இயங்கிக்கொண்டு இருக்கிறது."
|
" %i திரையில் காட்சி \"%s\" இல் இன்னொரு சாளர மேலாளர் இயங்கிக்கொண்டு இருக்கிறது."
|
||||||
|
|
||||||
#: ../src/core/bell.c:320
|
#: ../src/compositor/meta-background.c:1191
|
||||||
|
msgid "background texture could not be created from file"
|
||||||
|
msgstr "கோப்பிலிருந்து பின் புல இழை நய அமைப்பை உருவாக்க முடியவில்லை."
|
||||||
|
|
||||||
|
#: ../src/core/bell.c:322
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "மணி நிகழ்ச்சி"
|
msgstr "மணி நிகழ்ச்சி"
|
||||||
|
|
||||||
@@ -260,17 +268,17 @@ msgstr "_காத்திரு"
|
|||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "கட்டாய வெளியேற்றம் (_F)"
|
msgstr "கட்டாய வெளியேற்றம் (_F)"
|
||||||
|
|
||||||
#: ../src/core/display.c:397
|
#: ../src/core/display.c:401
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Missing %s extension required for compositing"
|
msgid "Missing %s extension required for compositing"
|
||||||
msgstr "நீட்சி %s காணப்படவில்லை பவின் ஆக்கத்துக்கு அது அவசியம்"
|
msgstr "நீட்சி %s காணப்படவில்லை பவின் ஆக்கத்துக்கு அது அவசியம்"
|
||||||
|
|
||||||
#: ../src/core/display.c:494
|
#: ../src/core/display.c:493
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgid "Failed to open X Window System display '%s'\n"
|
||||||
msgstr "X சாளர காட்சியை திறப்பதில் தோல்வி '%s'\n"
|
msgstr "X சாளர காட்சியை திறப்பதில் தோல்வி '%s'\n"
|
||||||
|
|
||||||
#: ../src/core/keybindings.c:860
|
#: ../src/core/keybindings.c:935
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Some other program is already using the key %s with modifiers %x as a "
|
"Some other program is already using the key %s with modifiers %x as a "
|
||||||
@@ -278,36 +286,41 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"விசை %s ஐ மாற்றி %x ஓடு இணைத்து வேறு நிரல் பயன்படுத்திக்கொண்டிருக்கிறது\n"
|
"விசை %s ஐ மாற்றி %x ஓடு இணைத்து வேறு நிரல் பயன்படுத்திக்கொண்டிருக்கிறது\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:196
|
#: ../src/core/keybindings.c:1135
|
||||||
|
#, c-format
|
||||||
|
msgid "\"%s\" is not a valid accelerator\n"
|
||||||
|
msgstr "\"%s\" செல்லாத முடுக்கி\n"
|
||||||
|
|
||||||
|
#: ../src/core/main.c:197
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "அமர்வு மேலாளருடன் இருக்கும் இணைப்பை முடக்கு"
|
msgstr "அமர்வு மேலாளருடன் இருக்கும் இணைப்பை முடக்கு"
|
||||||
|
|
||||||
#: ../src/core/main.c:202
|
#: ../src/core/main.c:203
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "இயங்கும் சாளர மேலாளரை மாற்றுக"
|
msgstr "இயங்கும் சாளர மேலாளரை மாற்றுக"
|
||||||
|
|
||||||
#: ../src/core/main.c:208
|
#: ../src/core/main.c:209
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "அமர்வு மேலாண் எண்ணை குறிப்பிடு"
|
msgstr "அமர்வு மேலாண் எண்ணை குறிப்பிடு"
|
||||||
|
|
||||||
#: ../src/core/main.c:213
|
#: ../src/core/main.c:214
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "பயன்படுத்த வேண்டிய X காட்சி"
|
msgstr "பயன்படுத்த வேண்டிய X காட்சி"
|
||||||
|
|
||||||
#: ../src/core/main.c:219
|
#: ../src/core/main.c:220
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "அமர்வை சேவ்பைல் இலிருந்து துவக்கு "
|
msgstr "அமர்வை சேவ்பைல் இலிருந்து துவக்கு "
|
||||||
|
|
||||||
#: ../src/core/main.c:225
|
#: ../src/core/main.c:226
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "எக்ஸ் அழைப்புகளை ஒத்திசை."
|
msgstr "எக்ஸ் அழைப்புகளை ஒத்திசை."
|
||||||
|
|
||||||
#: ../src/core/main.c:494
|
#: ../src/core/main.c:534
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to scan themes directory: %s\n"
|
msgid "Failed to scan themes directory: %s\n"
|
||||||
msgstr "கருப்பொருள் அடைவை வருடுவதில் தோல்வி: %s\n"
|
msgstr "கருப்பொருள் அடைவை வருடுவதில் தோல்வி: %s\n"
|
||||||
|
|
||||||
#: ../src/core/main.c:510
|
#: ../src/core/main.c:550
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||||
@@ -341,7 +354,7 @@ msgstr "அச்சு பதிப்பு"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "பயன்படுத்த க்ளட்டர் செருகிகள்"
|
msgstr "பயன்படுத்த க்ளட்டர் செருகிகள்"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1079
|
#: ../src/core/prefs.c:1095
|
||||||
msgid ""
|
msgid ""
|
||||||
"Workarounds for broken applications disabled. Some applications may not "
|
"Workarounds for broken applications disabled. Some applications may not "
|
||||||
"behave properly.\n"
|
"behave properly.\n"
|
||||||
@@ -349,14 +362,14 @@ msgstr ""
|
|||||||
"உடைந்த பயன்பாடுகளின் செயல்பாடு தடைசெய்யப்பட்டது, சில பயன்பாடுகள் சரியாக வேலை "
|
"உடைந்த பயன்பாடுகளின் செயல்பாடு தடைசெய்யப்பட்டது, சில பயன்பாடுகள் சரியாக வேலை "
|
||||||
"செய்யாது.\n"
|
"செய்யாது.\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1154
|
#: ../src/core/prefs.c:1170
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"எழுத்துரு விளக்கம் \"%s\" ஐ ஜிசெட்டிங்க்ஸ் விசையிலிருந்து பகுக்க முடியவில்லை %"
|
"எழுத்துரு விளக்கம் \"%s\" ஐ ஜிசெட்டிங்க்ஸ் விசையிலிருந்து பகுக்க முடியவில்லை %"
|
||||||
"s\n"
|
"s\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1220
|
#: ../src/core/prefs.c:1236
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for mouse button "
|
"\"%s\" found in configuration database is not a valid value for mouse button "
|
||||||
@@ -364,24 +377,24 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"அமைப்பு பாங்கில் உள்ள \"%s\" சுட்டி பட்டன் மாற்றியில் செல்லாத மதிப்பு\n"
|
"அமைப்பு பாங்கில் உள்ள \"%s\" சுட்டி பட்டன் மாற்றியில் செல்லாத மதிப்பு\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1757
|
#: ../src/core/prefs.c:1788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\"%s\" found in configuration database is not a valid value for keybinding "
|
"\"%s\" found in configuration database is not a valid value for keybinding "
|
||||||
"\"%s\"\n"
|
"\"%s\"\n"
|
||||||
msgstr "\"%s\" அமைப்பு தரவுத்தளத்தில் உள்ள மதிப்பு செல்லாத கீபைன்டிங்\"%s\"\n"
|
msgstr "\"%s\" அமைப்பு தரவுத்தளத்தில் உள்ள மதிப்பு செல்லாத கீபைன்டிங்\"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/prefs.c:1854
|
#: ../src/core/prefs.c:1887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "வேலையிடம் %d"
|
msgstr "வேலையிடம் %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:652
|
#: ../src/core/screen.c:691
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display '%s' is invalid\n"
|
msgid "Screen %d on display '%s' is invalid\n"
|
||||||
msgstr "திரை %d காட்சி '%s' இல் செல்லாது\n"
|
msgstr "திரை %d காட்சி '%s' இல் செல்லாது\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:668
|
#: ../src/core/screen.c:707
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
"Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||||
@@ -390,18 +403,18 @@ msgstr ""
|
|||||||
"திரை %d காட்சி \"%s\" க்கு சாளர மேலாளர் உள்ளது; --replace தேர்வை பயன்படுத்தி "
|
"திரை %d காட்சி \"%s\" க்கு சாளர மேலாளர் உள்ளது; --replace தேர்வை பயன்படுத்தி "
|
||||||
"தற்போதைய சாளரத்தை மாற்றவும்.\n"
|
"தற்போதைய சாளரத்தை மாற்றவும்.\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:695
|
#: ../src/core/screen.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
"Could not acquire window manager selection on screen %d display \"%s\"\n"
|
||||||
msgstr "திரையில் சாளர மேலாளர் தேர்வை பெறமுடியவில்லை %d காட்சி \"%s\"\n"
|
msgstr "திரையில் சாளர மேலாளர் தேர்வை பெறமுடியவில்லை %d காட்சி \"%s\"\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:750
|
#: ../src/core/screen.c:812
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||||
msgstr "திரை %d யின் காட்சி \"%s\" க்கு சாளர மேலாளர் ஏற்கெனவே உள்ளது\n"
|
msgstr "திரை %d யின் காட்சி \"%s\" க்கு சாளர மேலாளர் ஏற்கெனவே உள்ளது\n"
|
||||||
|
|
||||||
#: ../src/core/screen.c:935
|
#: ../src/core/screen.c:998
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not release screen %d on display \"%s\"\n"
|
msgid "Could not release screen %d on display \"%s\"\n"
|
||||||
msgstr "திரை %d ஐ விடுவிக்க முடியவில்லை \"%s\"\n"
|
msgstr "திரை %d ஐ விடுவிக்க முடியவில்லை \"%s\"\n"
|
||||||
@@ -462,44 +475,44 @@ msgstr ""
|
|||||||
" "தற்போதைய அமைப்பை சேமி" செயலுக்கு ஆதரவு இல்லை மேலும் அடுத்த முறை "
|
" "தற்போதைய அமைப்பை சேமி" செயலுக்கு ஆதரவு இல்லை மேலும் அடுத்த முறை "
|
||||||
"உள்நுழையும் போது நீங்களாக துவக்க வேண்டும்"
|
"உள்நுழையும் போது நீங்களாக துவக்க வேண்டும்"
|
||||||
|
|
||||||
#: ../src/core/util.c:80
|
#: ../src/core/util.c:84
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open debug log: %s\n"
|
msgid "Failed to open debug log: %s\n"
|
||||||
msgstr "பிழைதிருத்த பட்டியலை திறப்பதில் தோல்வி: %s\n"
|
msgstr "பிழைதிருத்த பட்டியலை திறப்பதில் தோல்வி: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:90
|
#: ../src/core/util.c:94
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to fdopen() log file %s: %s\n"
|
msgid "Failed to fdopen() log file %s: %s\n"
|
||||||
msgstr "fdopen() பதிவுக்கோப்பு தோல்வி %s: %s\n"
|
msgstr "fdopen() பதிவுக்கோப்பு தோல்வி %s: %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:96
|
#: ../src/core/util.c:100
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Opened log file %s\n"
|
msgid "Opened log file %s\n"
|
||||||
msgstr "பதிவுக்கோப்பு திறக்கப்பட்டது %s\n"
|
msgstr "பதிவுக்கோப்பு திறக்கப்பட்டது %s\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
|
#: ../src/core/util.c:119 ../src/tools/mutter-message.c:149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "வெர்போஸ் ஆதரவு இல்லாமல் மட்டர் அமைக்கப்பட்டது\n"
|
msgstr "வெர்போஸ் ஆதரவு இல்லாமல் மட்டர் அமைக்கப்பட்டது\n"
|
||||||
|
|
||||||
#: ../src/core/util.c:259
|
#: ../src/core/util.c:264
|
||||||
msgid "Window manager: "
|
msgid "Window manager: "
|
||||||
msgstr "சாளர மேலாளர்:"
|
msgstr "சாளர மேலாளர்:"
|
||||||
|
|
||||||
#: ../src/core/util.c:407
|
#: ../src/core/util.c:412
|
||||||
msgid "Bug in window manager: "
|
msgid "Bug in window manager: "
|
||||||
msgstr "சாளர மேலாளரில் பிழை"
|
msgstr "சாளர மேலாளரில் பிழை"
|
||||||
|
|
||||||
#: ../src/core/util.c:438
|
#: ../src/core/util.c:443
|
||||||
msgid "Window manager warning: "
|
msgid "Window manager warning: "
|
||||||
msgstr "சாளர மேலாளர் எச்சரிக்கை:"
|
msgstr "சாளர மேலாளர் எச்சரிக்கை:"
|
||||||
|
|
||||||
#: ../src/core/util.c:466
|
#: ../src/core/util.c:471
|
||||||
msgid "Window manager error: "
|
msgid "Window manager error: "
|
||||||
msgstr "சாளர மேலாளர் பிழை"
|
msgstr "சாளர மேலாளர் பிழை"
|
||||||
|
|
||||||
#. first time through
|
#. first time through
|
||||||
#: ../src/core/window.c:7240
|
#: ../src/core/window.c:7596
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
|
||||||
@@ -516,7 +529,7 @@ msgstr ""
|
|||||||
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
|
||||||
#. * about these apps but make them work.
|
#. * about these apps but make them work.
|
||||||
#.
|
#.
|
||||||
#: ../src/core/window.c:7905
|
#: ../src/core/window.c:8320
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
|
||||||
@@ -526,22 +539,22 @@ msgstr ""
|
|||||||
"அதிக "
|
"அதிக "
|
||||||
"பட்ச அளவு %d x %d; பொருள் தரும்படி இல்லை.\n"
|
"பட்ச அளவு %d x %d; பொருள் தரும்படி இல்லை.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:274
|
#: ../src/core/window-props.c:318
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
msgid "Application set a bogus _NET_WM_PID %lu\n"
|
||||||
msgstr "பயன்பாடு பொய்யான ஒரு _NET_WM_PID %lu ஐ அமைத்தது\n"
|
msgstr "பயன்பாடு பொய்யான ஒரு _NET_WM_PID %lu ஐ அமைத்தது\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:393
|
#: ../src/core/window-props.c:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (%s மீது)"
|
msgstr "%s (%s மீது)"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1448
|
#: ../src/core/window-props.c:1517
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
|
||||||
msgstr "செல்லாத WM_TRANSIENT_FOR சாளரம் 0x%lx இதற்கு குறிக்கப்பட்டது: %s.\n"
|
msgstr "செல்லாத WM_TRANSIENT_FOR சாளரம் 0x%lx இதற்கு குறிக்கப்பட்டது: %s.\n"
|
||||||
|
|
||||||
#: ../src/core/window-props.c:1459
|
#: ../src/core/window-props.c:1528
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
|
||||||
msgstr "WM_TRANSIENT_FOR சாளரம் 0x%lx %s க்கு சுழல் நிகழ்வை உருவாக்கும்.\n"
|
msgstr "WM_TRANSIENT_FOR சாளரம் 0x%lx %s க்கு சுழல் நிகழ்வை உருவாக்கும்.\n"
|
||||||
@@ -693,10 +706,22 @@ msgstr ""
|
|||||||
"இந்த மதிப்பை அடைய மறை விளிம்பு சேர்க்கப்படும்."
|
"இந்த மதிப்பை அடைய மறை விளிம்பு சேர்க்கப்படும்."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
|
||||||
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
|
msgstr "ஏறத்தாழ திரை அளவுள்ள சாளரங்களை தானியங்கியாக அதிக பட்ச அளவாக்கு"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
||||||
|
msgid ""
|
||||||
|
"If enabled, new windows that are initially the size of the monitor "
|
||||||
|
"automatically get maximized."
|
||||||
|
msgstr ""
|
||||||
|
"செயலாக்கினால், துவக்கத்தில் ஏறத்தாழ திரை அளவுள்ள புதிய சாளரங்கள் தானியங்கியாக "
|
||||||
|
"அதிக பட்ச அளவாக்கப்படும்"
|
||||||
|
|
||||||
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "கீற்றுத்துள்ளலிருந்து சாளரத்தை தேர்ந்தெடுக்கவும்."
|
msgstr "கீற்றுத்துள்ளலிருந்து சாளரத்தை தேர்ந்தெடுக்கவும்."
|
||||||
|
|
||||||
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
|
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr "கீற்று துள்ளுவதை இரத்து செய்"
|
msgstr "கீற்று துள்ளுவதை இரத்து செய்"
|
||||||
|
|
||||||
@@ -899,53 +924,53 @@ msgstr "Mod5"
|
|||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height.
|
#. * the width of the window and the second is the height.
|
||||||
#.
|
#.
|
||||||
#: ../src/ui/resizepopup.c:113
|
#: ../src/ui/resizepopup.c:136
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:234
|
#: ../src/ui/theme.c:236
|
||||||
msgid "top"
|
msgid "top"
|
||||||
msgstr "மேல்"
|
msgstr "மேல்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:236
|
#: ../src/ui/theme.c:238
|
||||||
msgid "bottom"
|
msgid "bottom"
|
||||||
msgstr "கீழ்"
|
msgstr "கீழ்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:238
|
#: ../src/ui/theme.c:240
|
||||||
msgid "left"
|
msgid "left"
|
||||||
msgstr "இடது"
|
msgstr "இடது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:240
|
#: ../src/ui/theme.c:242
|
||||||
msgid "right"
|
msgid "right"
|
||||||
msgstr "வலது"
|
msgstr "வலது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:268
|
#: ../src/ui/theme.c:270
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify \"%s\" dimension"
|
msgid "frame geometry does not specify \"%s\" dimension"
|
||||||
msgstr "சட்ட வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
msgstr "சட்ட வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:287
|
#: ../src/ui/theme.c:289
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||||
msgstr "\"%s\" ஓரத்திற்கு வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
msgstr "\"%s\" ஓரத்திற்கு வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:324
|
#: ../src/ui/theme.c:326
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button aspect ratio %g is not reasonable"
|
msgid "Button aspect ratio %g is not reasonable"
|
||||||
msgstr "பட்டன் அளவு விகிதம் %g சரியில்ல"
|
msgstr "பட்டன் அளவு விகிதம் %g சரியில்ல"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:336
|
#: ../src/ui/theme.c:338
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Frame geometry does not specify size of buttons"
|
msgid "Frame geometry does not specify size of buttons"
|
||||||
msgstr "சட்ட அளவு பட்டன் அளவை குறிப்பிடவில்லை"
|
msgstr "சட்ட அளவு பட்டன் அளவை குறிப்பிடவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1049
|
#: ../src/ui/theme.c:1051
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Gradients should have at least two colors"
|
msgid "Gradients should have at least two colors"
|
||||||
msgstr "க்ரேடியன்டில் இரண்டு நிறங்களாவது இருக்க வேண்டும்"
|
msgstr "க்ரேடியன்டில் இரண்டு நிறங்களாவது இருக்க வேண்டும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1201
|
#: ../src/ui/theme.c:1203
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK custom color specification must have color name and fallback in "
|
"GTK custom color specification must have color name and fallback in "
|
||||||
@@ -955,7 +980,7 @@ msgstr ""
|
|||||||
"அடைப்புக்குறிகளுக்குள்ளும் "
|
"அடைப்புக்குறிகளுக்குள்ளும் "
|
||||||
"கொண்டிருக்க வேண்டும் உம் gtk:custom(foo,bar); \"%s\" ஐ பகுக்க முடியவில்லை"
|
"கொண்டிருக்க வேண்டும் உம் gtk:custom(foo,bar); \"%s\" ஐ பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1217
|
#: ../src/ui/theme.c:1219
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||||
@@ -965,7 +990,7 @@ msgstr ""
|
|||||||
"A-Za-z0-9-"
|
"A-Za-z0-9-"
|
||||||
"_ ஆகியன மட்டுமே செல்லுபடியாகும்."
|
"_ ஆகியன மட்டுமே செல்லுபடியாகும்."
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1231
|
#: ../src/ui/theme.c:1233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||||
@@ -974,7 +999,7 @@ msgstr ""
|
|||||||
"ஜிடிகே:தனிப்பயன் ஒழுங்கு \"gtk:custom(color_name,fallback)\", \"%s\" இந்த "
|
"ஜிடிகே:தனிப்பயன் ஒழுங்கு \"gtk:custom(color_name,fallback)\", \"%s\" இந்த "
|
||||||
"ஒழுங்குக்கு பொருந்தாது"
|
"ஒழுங்குக்கு பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1276
|
#: ../src/ui/theme.c:1278
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||||
@@ -984,7 +1009,7 @@ msgstr ""
|
|||||||
"நிலையை "
|
"நிலையை "
|
||||||
"குறிக்கும் பகுக்க முடியாது \"%s\""
|
"குறிக்கும் பகுக்க முடியாது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1290
|
#: ../src/ui/theme.c:1292
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||||
@@ -994,17 +1019,17 @@ msgstr ""
|
|||||||
"NORMAL "
|
"NORMAL "
|
||||||
"நிலையை குறிக்கும் பகுக்க முடியாது \"%s\""
|
"நிலையை குறிக்கும் பகுக்க முடியாது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1301
|
#: ../src/ui/theme.c:1303
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand state \"%s\" in color specification"
|
msgid "Did not understand state \"%s\" in color specification"
|
||||||
msgstr "நிலை \"%s\" வண்ண குறிப்பில் புரிந்துகொள்ள முடியவில்லை"
|
msgstr "நிலை \"%s\" வண்ண குறிப்பில் புரிந்துகொள்ள முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1314
|
#: ../src/ui/theme.c:1316
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Did not understand color component \"%s\" in color specification"
|
msgid "Did not understand color component \"%s\" in color specification"
|
||||||
msgstr "நிலை \"%s\" வண்ண குறிப்பு பொருளில் புரிந்துகொள்ள முடியவில்லை"
|
msgstr "நிலை \"%s\" வண்ண குறிப்பு பொருளில் புரிந்துகொள்ள முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1343
|
#: ../src/ui/theme.c:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||||
@@ -1013,18 +1038,18 @@ msgstr ""
|
|||||||
"வளைந்த அமைப்பு \"blend/bg_color/fg_color/alpha\", \"%s\" இந்த வடிவமைப்பிற்கு "
|
"வளைந்த அமைப்பு \"blend/bg_color/fg_color/alpha\", \"%s\" இந்த வடிவமைப்பிற்கு "
|
||||||
"பொருந்தாது"
|
"பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1354
|
#: ../src/ui/theme.c:1356
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||||
msgstr "ஆம்ஃபா மதிப்பை \"%s\" வளைந்த நிறத்தில் பகுக்க முடியவில்லை"
|
msgstr "ஆம்ஃபா மதிப்பை \"%s\" வளைந்த நிறத்தில் பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1364
|
#: ../src/ui/theme.c:1366
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ஆல்ஃபா மதுப்பு \"%s\"வளைவு நிறத்தில் 0.0 க்கும் 1.0 க்கும் இடையில் இல்லை"
|
"ஆல்ஃபா மதுப்பு \"%s\"வளைவு நிறத்தில் 0.0 க்கும் 1.0 க்கும் இடையில் இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1411
|
#: ../src/ui/theme.c:1413
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||||
@@ -1032,39 +1057,39 @@ msgstr ""
|
|||||||
"நிழல் வடிவமைப்பு \"shade/base_color/factor\", \"%s\" இந்த அமைப்பிற்கு "
|
"நிழல் வடிவமைப்பு \"shade/base_color/factor\", \"%s\" இந்த அமைப்பிற்கு "
|
||||||
"பொருந்தாது"
|
"பொருந்தாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1422
|
#: ../src/ui/theme.c:1424
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||||
msgstr "நிழல்விகிதத்தை \"%s\" நிறத்தோடு பகுக்க முடியாது"
|
msgstr "நிழல்விகிதத்தை \"%s\" நிறத்தோடு பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1432
|
#: ../src/ui/theme.c:1434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||||
msgstr "நிழல் விகிதம் \"%s\" முழுக்களாக உள்ளது "
|
msgstr "நிழல் விகிதம் \"%s\" முழுக்களாக உள்ளது "
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1461
|
#: ../src/ui/theme.c:1463
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not parse color \"%s\""
|
msgid "Could not parse color \"%s\""
|
||||||
msgstr "\"%s\" நிறத்தை பகுக்க முடியவில்லை"
|
msgstr "\"%s\" நிறத்தை பகுக்க முடியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1778
|
#: ../src/ui/theme.c:1780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||||
msgstr "அச்சுக்கள் எழுத்தால் குறிக்கப்பட்டுள்ளது '%s' க்கு அனுமதி இல்லை"
|
msgstr "அச்சுக்கள் எழுத்தால் குறிக்கப்பட்டுள்ளது '%s' க்கு அனுமதி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1805
|
#: ../src/ui/theme.c:1807
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contains floating point number '%s' which could not be "
|
"Coordinate expression contains floating point number '%s' which could not be "
|
||||||
"parsed"
|
"parsed"
|
||||||
msgstr "அச்சுக்கள் பின்ன எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
msgstr "அச்சுக்கள் பின்ன எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1819
|
#: ../src/ui/theme.c:1821
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||||
msgstr "அச்சுக்கள் இயல் எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
msgstr "அச்சுக்கள் இயல் எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1940
|
#: ../src/ui/theme.c:1942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression contained unknown operator at the start of this text: "
|
"Coordinate expression contained unknown operator at the start of this text: "
|
||||||
@@ -1072,41 +1097,41 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"உரையின் துவக்கத்தில் அச்சின் கூற்றில் தெரியாத செயல் இடம்பெற்றுள்ளது \"%s\""
|
"உரையின் துவக்கத்தில் அச்சின் கூற்றில் தெரியாத செயல் இடம்பெற்றுள்ளது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:1997
|
#: ../src/ui/theme.c:1999
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression was empty or not understood"
|
msgid "Coordinate expression was empty or not understood"
|
||||||
msgstr "அச்சு கூற்று காலியாக உள்ளது அல்லது புரியவில்லை"
|
msgstr "அச்சு கூற்று காலியாக உள்ளது அல்லது புரியவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
#: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression results in division by zero"
|
msgid "Coordinate expression results in division by zero"
|
||||||
msgstr "அச்சு கூற்று பூஜ்ஜியத்தால் வகுத்தல் பிழையை தந்தது"
|
msgstr "அச்சு கூற்று பூஜ்ஜியத்தால் வகுத்தல் பிழையை தந்தது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2162
|
#: ../src/ui/theme.c:2164
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||||
msgstr "அச்சு கூற்று mod ஆப்பரேட்டரை பின்ன எண்ணில் பயன்படுத்த முயல்கிறது"
|
msgstr "அச்சு கூற்று mod ஆப்பரேட்டரை பின்ன எண்ணில் பயன்படுத்த முயல்கிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2218
|
#: ../src/ui/theme.c:2220
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் ஆப்பரேட்டர் உள்ளது \"%s\" ஆப்பரன் எதிர்பார்க்கப்படுகிறது"
|
"அச்சு கூற்றில் ஆப்பரேட்டர் உள்ளது \"%s\" ஆப்பரன் எதிர்பார்க்கப்படுகிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2227
|
#: ../src/ui/theme.c:2229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an operand where an operator was expected"
|
msgid "Coordinate expression had an operand where an operator was expected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் ஆப்பரன்ட் உள்ளது ஆனால் ஆப்பரேட்டர் எதிர்பார்க்கப்படுகிறது"
|
"அச்சு கூற்றில் ஆப்பரன்ட் உள்ளது ஆனால் ஆப்பரேட்டர் எதிர்பார்க்கப்படுகிறது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2235
|
#: ../src/ui/theme.c:2237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||||
msgstr "அச்சு கூற்றில் ஆப்பரன்ட்டுக்கு பதில் ஆப்பரேட்டரால் முடிந்தது"
|
msgstr "அச்சு கூற்றில் ஆப்பரன்ட்டுக்கு பதில் ஆப்பரேட்டரால் முடிந்தது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2245
|
#: ../src/ui/theme.c:2247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||||
@@ -1115,39 +1140,39 @@ msgstr ""
|
|||||||
"அச்சு கூற்றில் \"%c\" ஆப்பரேட்டர் உள்ளது \"%c\" ஆப்பரேட்டருக்கு ஆப்பரன்ட் "
|
"அச்சு கூற்றில் \"%c\" ஆப்பரேட்டர் உள்ளது \"%c\" ஆப்பரேட்டருக்கு ஆப்பரன்ட் "
|
||||||
"இல்லை"
|
"இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
#: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||||
msgstr "அச்சு கூற்றில் செல்லாத மாற்றி மற்றும் கான்ஸ்ட்டன் உள்ளது \"%s\""
|
msgstr "அச்சு கூற்றில் செல்லாத மாற்றி மற்றும் கான்ஸ்ட்டன் உள்ளது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2495
|
#: ../src/ui/theme.c:2497
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression parser overflowed its buffer."
|
msgid "Coordinate expression parser overflowed its buffer."
|
||||||
msgstr "ஆயத்தொலைவு தெரிவிப்பு பகுப்பி அதன் இடையகத்தை நிரப்பியது"
|
msgstr "ஆயத்தொலைவு தெரிவிப்பு பகுப்பி அதன் இடையகத்தை நிரப்பியது"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2524
|
#: ../src/ui/theme.c:2526
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் மூடிய அடைப்புக்குறி உள்ளது ஆனால் திறந்த அடைப்புகுறி இல்லை"
|
"அச்சு கூற்றில் மூடிய அடைப்புக்குறி உள்ளது ஆனால் திறந்த அடைப்புகுறி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2588
|
#: ../src/ui/theme.c:2590
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"அச்சு கூற்றில் திறந்த அடைப்புக்குறி உள்ளது ஆனால் மூடிய அடைப்புகுறி இல்லை"
|
"அச்சு கூற்றில் திறந்த அடைப்புக்குறி உள்ளது ஆனால் மூடிய அடைப்புகுறி இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2599
|
#: ../src/ui/theme.c:2601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||||
msgstr "அச்சுக்கூற்றில் ஆப்பரன்ட் மற்றும் ஆப்பரேட்டர் காணப்படவில்லை"
|
msgstr "அச்சுக்கூற்றில் ஆப்பரன்ட் மற்றும் ஆப்பரேட்டர் காணப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
#: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||||
msgstr "கருப்பொருளில் ஒரு கூற்று இருந்தது. அது பிழையை ஏற்படுத்தியது : %s\n"
|
msgstr "கருப்பொருளில் ஒரு கூற்று இருந்தது. அது பிழையை ஏற்படுத்தியது : %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:4498
|
#: ../src/ui/theme.c:4500
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||||
@@ -1157,25 +1182,25 @@ msgstr ""
|
|||||||
"பாணிக்கு "
|
"பாணிக்கு "
|
||||||
"குறிப்பிடப்பட வேண்டும்"
|
"குறிப்பிடப்பட வேண்டும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
|
#: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"காணவில்லை <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
"காணவில்லை <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5082
|
#: ../src/ui/theme.c:5084
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to load theme \"%s\": %s\n"
|
msgid "Failed to load theme \"%s\": %s\n"
|
||||||
msgstr "கருப்பொருளை ஏற்றுவதில் தோல்வி \"%s\": %s\n"
|
msgstr "கருப்பொருளை ஏற்றுவதில் தோல்வி \"%s\": %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
|
#: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234
|
||||||
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
|
#: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No <%s> set for theme \"%s\""
|
msgid "No <%s> set for theme \"%s\""
|
||||||
msgstr "இல்லை<%s> கருப்பொருளுக்காக அமைக்கப்பட்டது \"%s\""
|
msgstr "இல்லை<%s> கருப்பொருளுக்காக அமைக்கப்பட்டது \"%s\""
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5254
|
#: ../src/ui/theme.c:5256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||||
@@ -1184,7 +1209,7 @@ msgstr ""
|
|||||||
"சட்ட பாணி சாளர வகை இல்லை\"%s\" கருப்பொருளில் \"%s\", <window type=\"%s\" "
|
"சட்ட பாணி சாளர வகை இல்லை\"%s\" கருப்பொருளில் \"%s\", <window type=\"%s\" "
|
||||||
"style_set=\"whatever\"/> உறுப்பை சேர்க்கவும்"
|
"style_set=\"whatever\"/> உறுப்பை சேர்க்கவும்"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
|
#: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||||
@@ -1192,7 +1217,7 @@ msgstr ""
|
|||||||
"பயனீட்டாளர்-குறிப்பிட்ட கான்ஸ்டன் பெரிய எழுத்தில் துவங்க வேண்டும்; \"%s\" "
|
"பயனீட்டாளர்-குறிப்பிட்ட கான்ஸ்டன் பெரிய எழுத்தில் துவங்க வேண்டும்; \"%s\" "
|
||||||
"இல்லை"
|
"இல்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
|
#: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Constant \"%s\" has already been defined"
|
msgid "Constant \"%s\" has already been defined"
|
||||||
msgstr "கான்ஸ்டன் \"%s\" ஏற்கெனவே குறிப்பிடப்பட்டது"
|
msgstr "கான்ஸ்டன் \"%s\" ஏற்கெனவே குறிப்பிடப்பட்டது"
|
||||||
@@ -1575,7 +1600,7 @@ msgstr "உறுப்பிற்குள் உரை அனுமதி இ
|
|||||||
msgid "<%s> specified twice for this theme"
|
msgid "<%s> specified twice for this theme"
|
||||||
msgstr "<%s> இந்த கருப்பொருளுக்கு இரண்டுமுறை குறிப்பிட்டுள்ளது"
|
msgstr "<%s> இந்த கருப்பொருளுக்கு இரண்டுமுறை குறிப்பிட்டுள்ளது"
|
||||||
|
|
||||||
#: ../src/ui/theme-parser.c:4334
|
#: ../src/ui/theme-parser.c:4336
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to find a valid file for theme %s\n"
|
msgid "Failed to find a valid file for theme %s\n"
|
||||||
msgstr "%s கருத்துக்கு செல்லுபடியாகும் கோப்பு கண்டுபிடித்தல் தோல்வியுற்றது \n"
|
msgstr "%s கருத்துக்கு செல்லுபடியாகும் கோப்பு கண்டுபிடித்தல் தோல்வியுற்றது \n"
|
||||||
@@ -1681,56 +1706,56 @@ msgstr "ஓரம்"
|
|||||||
msgid "Attached Modal Dialog"
|
msgid "Attached Modal Dialog"
|
||||||
msgstr "இணைத்த மாதிரி உரையாடல்"
|
msgstr "இணைத்த மாதிரி உரையாடல்"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:739
|
#: ../src/ui/theme-viewer.c:737
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Button layout test %d"
|
msgid "Button layout test %d"
|
||||||
msgstr "பட்டன் உருவரை சோதனை %d"
|
msgstr "பட்டன் உருவரை சோதனை %d"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:768
|
#: ../src/ui/theme-viewer.c:766
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%g milliseconds to draw one window frame"
|
msgid "%g milliseconds to draw one window frame"
|
||||||
msgstr "%g சாளரத்தை வரைய மில்லிசெக்கண்டு"
|
msgstr "%g சாளரத்தை வரைய மில்லிசெக்கண்டு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:813
|
#: ../src/ui/theme-viewer.c:811
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
|
||||||
msgstr "பயன்பாடு: metacity-theme-viewer [THEMENAME]\n"
|
msgstr "பயன்பாடு: metacity-theme-viewer [THEMENAME]\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:820
|
#: ../src/ui/theme-viewer.c:818
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error loading theme: %s\n"
|
msgid "Error loading theme: %s\n"
|
||||||
msgstr "கருப்பொருளை ஏற்றுவதில் பிழை: %s\n"
|
msgstr "கருப்பொருளை ஏற்றுவதில் பிழை: %s\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:826
|
#: ../src/ui/theme-viewer.c:824
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Loaded theme \"%s\" in %g seconds\n"
|
msgid "Loaded theme \"%s\" in %g seconds\n"
|
||||||
msgstr "கருப்பொருள் \"%s\" %g செகண்டில்\n"
|
msgstr "கருப்பொருள் \"%s\" %g செகண்டில்\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:870
|
#: ../src/ui/theme-viewer.c:869
|
||||||
msgid "Normal Title Font"
|
msgid "Normal Title Font"
|
||||||
msgstr "இயல்பான தலைப்பு எழுத்துரு"
|
msgstr "இயல்பான தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:876
|
#: ../src/ui/theme-viewer.c:875
|
||||||
msgid "Small Title Font"
|
msgid "Small Title Font"
|
||||||
msgstr "சிறிய தலைப்பு எழுத்துரு"
|
msgstr "சிறிய தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:882
|
#: ../src/ui/theme-viewer.c:881
|
||||||
msgid "Large Title Font"
|
msgid "Large Title Font"
|
||||||
msgstr "பெரிய தலைப்பு எழுத்துரு"
|
msgstr "பெரிய தலைப்பு எழுத்துரு"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:887
|
#: ../src/ui/theme-viewer.c:886
|
||||||
msgid "Button Layouts"
|
msgid "Button Layouts"
|
||||||
msgstr "பட்டன் உருவரை"
|
msgstr "பட்டன் உருவரை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:892
|
#: ../src/ui/theme-viewer.c:891
|
||||||
msgid "Benchmark"
|
msgid "Benchmark"
|
||||||
msgstr "நிர்ணயம்"
|
msgstr "நிர்ணயம்"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:944
|
#: ../src/ui/theme-viewer.c:947
|
||||||
msgid "Window Title Goes Here"
|
msgid "Window Title Goes Here"
|
||||||
msgstr "சாளர தலைப்பு இங்கே"
|
msgstr "சாளர தலைப்பு இங்கே"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1047
|
#: ../src/ui/theme-viewer.c:1053
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
|
||||||
@@ -1741,43 +1766,46 @@ msgstr ""
|
|||||||
"சேவகனின் "
|
"சேவகனின் "
|
||||||
"மூலத்தில் (%g மில்லி செகண்ட் சட்டத்திற்கு)\n"
|
"மூலத்தில் (%g மில்லி செகண்ட் சட்டத்திற்கு)\n"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1266
|
#: ../src/ui/theme-viewer.c:1273
|
||||||
msgid "position expression test returned TRUE but set error"
|
msgid "position expression test returned TRUE but set error"
|
||||||
msgstr "நிலை கூற்று சோதனை உண்மையை தந்தது ஆனால் பிழை"
|
msgstr "நிலை கூற்று சோதனை உண்மையை தந்தது ஆனால் பிழை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1268
|
#: ../src/ui/theme-viewer.c:1275
|
||||||
msgid "position expression test returned FALSE but didn't set error"
|
msgid "position expression test returned FALSE but didn't set error"
|
||||||
msgstr "நிலை கூற்று சோதனை பொய்யை தந்தது ஆனால் பிழை"
|
msgstr "நிலை கூற்று சோதனை பொய்யை தந்தது ஆனால் பிழை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1272
|
#: ../src/ui/theme-viewer.c:1279
|
||||||
msgid "Error was expected but none given"
|
msgid "Error was expected but none given"
|
||||||
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை"
|
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1274
|
#: ../src/ui/theme-viewer.c:1281
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d was expected but %d given"
|
msgid "Error %d was expected but %d given"
|
||||||
msgstr "பிழை %d எதிர்பார்க்கப்பட்டது %d தரப்படவில்லை"
|
msgstr "பிழை %d எதிர்பார்க்கப்பட்டது %d தரப்படவில்லை"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1280
|
#: ../src/ui/theme-viewer.c:1287
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error not expected but one was returned: %s"
|
msgid "Error not expected but one was returned: %s"
|
||||||
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை: %s"
|
msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை: %s"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1284
|
#: ../src/ui/theme-viewer.c:1291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "x value was %d, %d was expected"
|
msgid "x value was %d, %d was expected"
|
||||||
msgstr "x மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
msgstr "x மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1287
|
#: ../src/ui/theme-viewer.c:1294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "y value was %d, %d was expected"
|
msgid "y value was %d, %d was expected"
|
||||||
msgstr "y மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
msgstr "y மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது"
|
||||||
|
|
||||||
#: ../src/ui/theme-viewer.c:1352
|
#: ../src/ui/theme-viewer.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
|
||||||
msgstr "%d அச்சு கூற்று பகுக்கப்பட்டது %g செகண்டில் (%g சராசரி செகண்ட்)\n"
|
msgstr "%d அச்சு கூற்று பகுக்கப்பட்டது %g செகண்டில் (%g சராசரி செகண்ட்)\n"
|
||||||
|
|
||||||
|
#~ msgid "Minimize window"
|
||||||
|
#~ msgstr "சாளரத்தை சிறிதாக்கு"
|
||||||
|
|
||||||
#~ msgid "Comma-separated list of compositor plugins"
|
#~ msgid "Comma-separated list of compositor plugins"
|
||||||
#~ msgstr "பல்வினையாக்கியின் சொருகிகளின் கமாவால் பிரித்த பட்டியல்."
|
#~ msgstr "பல்வினையாக்கியின் சொருகிகளின் கமாவால் பிரித்த பட்டியல்."
|
||||||
|
|
||||||
|
1094
po/zh_HK.po
1094
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
1096
po/zh_TW.po
1096
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
7
protocol/Makefile.am
Normal file
7
protocol/Makefile.am
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
NULL =
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
gtk-shell.xml \
|
||||||
|
xdg-shell.xml \
|
||||||
|
xserver.xml \
|
||||||
|
$(NULL)
|
30
protocol/gtk-shell.xml
Normal file
30
protocol/gtk-shell.xml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<protocol name="gtk">
|
||||||
|
|
||||||
|
<interface name="gtk_shell" version="1">
|
||||||
|
<enum name="capability">
|
||||||
|
<entry name="global_app_menu" value="1"/>
|
||||||
|
<entry name="global_menu_bar" value="2"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<event name="capabilities">
|
||||||
|
<arg name="capabilities" type="uint"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<request name="get_gtk_surface">
|
||||||
|
<arg name="gtk_surface" type="new_id" interface="gtk_surface"/>
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"/>
|
||||||
|
</request>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
<interface name="gtk_surface" version="1">
|
||||||
|
<request name="set_dbus_properties">
|
||||||
|
<arg name="application_id" type="string" allow-null="true"/>
|
||||||
|
<arg name="app_menu_path" type="string" allow-null="true"/>
|
||||||
|
<arg name="menubar_path" type="string" allow-null="true"/>
|
||||||
|
<arg name="window_object_path" type="string" allow-null="true"/>
|
||||||
|
<arg name="application_object_path" type="string" allow-null="true"/>
|
||||||
|
<arg name="unique_bus_name" type="string" allow-null="true"/>
|
||||||
|
</request>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
</protocol>
|
467
protocol/xdg-shell.xml
Normal file
467
protocol/xdg-shell.xml
Normal file
@@ -0,0 +1,467 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<protocol name="xdg_shell">
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
Copyright © 2008-2013 Kristian Høgsberg
|
||||||
|
Copyright © 2013 Rafael Antognolli
|
||||||
|
Copyright © 2013 Jasper St. Pierre
|
||||||
|
Copyright © 2010-2013 Intel Corporation
|
||||||
|
|
||||||
|
Permission to use, copy, modify, distribute, and sell this
|
||||||
|
software and its documentation for any purpose is hereby granted
|
||||||
|
without fee, provided that the above copyright notice appear in
|
||||||
|
all copies and that both that copyright notice and this permission
|
||||||
|
notice appear in supporting documentation, and that the name of
|
||||||
|
the copyright holders not be used in advertising or publicity
|
||||||
|
pertaining to distribution of the software without specific,
|
||||||
|
written prior permission. The copyright holders make no
|
||||||
|
representations about the suitability of this software for any
|
||||||
|
purpose. It is provided "as is" without express or implied
|
||||||
|
warranty.
|
||||||
|
|
||||||
|
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
||||||
|
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||||
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||||
|
THIS SOFTWARE.
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<interface name="xdg_shell" version="1">
|
||||||
|
<description summary="create desktop-style surfaces">
|
||||||
|
This interface is implemented by servers that provide
|
||||||
|
desktop-style user interfaces.
|
||||||
|
|
||||||
|
It allows clients to associate a xdg_surface with
|
||||||
|
a basic surface.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<enum name="version">
|
||||||
|
<description summary="latest protocol version">
|
||||||
|
Use this enum to check the protocol version, and it will be updated
|
||||||
|
automatically.
|
||||||
|
</description>
|
||||||
|
<entry name="current" value="2" summary="Always the latest version"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
|
||||||
|
<request name="use_unstable_version">
|
||||||
|
<description summary="enable use of this unstable version">
|
||||||
|
Use this request in order to enable use of this interface.
|
||||||
|
|
||||||
|
Understand and agree that one is using an unstable interface,
|
||||||
|
that will likely change in the future, breaking the API.
|
||||||
|
</description>
|
||||||
|
<arg name="version" type="int"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="get_xdg_surface">
|
||||||
|
<description summary="create a shell surface from a surface">
|
||||||
|
Create a shell surface for an existing surface.
|
||||||
|
|
||||||
|
Only one shell or popup surface can be associated with a given
|
||||||
|
surface.
|
||||||
|
</description>
|
||||||
|
<arg name="id" type="new_id" interface="xdg_surface"/>
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="get_xdg_popup">
|
||||||
|
<description summary="create a shell surface from a surface">
|
||||||
|
Create a popup surface for an existing surface.
|
||||||
|
|
||||||
|
Only one shell or popup surface can be associated with a given
|
||||||
|
surface.
|
||||||
|
</description>
|
||||||
|
<arg name="id" type="new_id" interface="xdg_popup"/>
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"/>
|
||||||
|
<arg name="parent" type="object" interface="wl_surface"/>
|
||||||
|
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
|
||||||
|
<arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
|
||||||
|
<arg name="x" type="int"/>
|
||||||
|
<arg name="y" type="int"/>
|
||||||
|
<arg name="flags" type="uint"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="ping">
|
||||||
|
<description summary="check if the client is alive">
|
||||||
|
The ping event asks the client if it's still alive. Pass the
|
||||||
|
serial specified in the event back to the compositor by sending
|
||||||
|
a "pong" request back with the specified serial.
|
||||||
|
|
||||||
|
Compositors can use this to determine if the client is still
|
||||||
|
alive. It's unspecified what will happen if the client doesn't
|
||||||
|
respond to the ping request, or in what timeframe. Clients should
|
||||||
|
try to respond in a reasonable amount of time.
|
||||||
|
</description>
|
||||||
|
<arg name="serial" type="uint" summary="pass this to the callback"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<request name="pong">
|
||||||
|
<description summary="respond to a ping event">
|
||||||
|
A client must respond to a ping event with a pong request or
|
||||||
|
the client may be deemed unresponsive.
|
||||||
|
</description>
|
||||||
|
<arg name="serial" type="uint" summary="serial of the ping event"/>
|
||||||
|
</request>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
<interface name="xdg_surface" version="1">
|
||||||
|
|
||||||
|
<description summary="desktop-style metadata interface">
|
||||||
|
An interface that may be implemented by a wl_surface, for
|
||||||
|
implementations that provide a desktop-style user interface.
|
||||||
|
|
||||||
|
It provides requests to treat surfaces like windows, allowing to set
|
||||||
|
properties like maximized, fullscreen, minimized, and to move and resize
|
||||||
|
them, and associate metadata like title and app id.
|
||||||
|
|
||||||
|
On the server side the object is automatically destroyed when
|
||||||
|
the related wl_surface is destroyed. On client side,
|
||||||
|
xdg_surface.destroy() must be called before destroying
|
||||||
|
the wl_surface object.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<request name="destroy" type="destructor">
|
||||||
|
<description summary="remove xdg_surface interface">
|
||||||
|
The xdg_surface interface is removed from the wl_surface object
|
||||||
|
that was turned into a xdg_surface with
|
||||||
|
xdg_shell.get_xdg_surface request. The xdg_surface properties,
|
||||||
|
like maximized and fullscreen, are lost. The wl_surface loses
|
||||||
|
its role as a xdg_surface. The wl_surface is unmapped.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_transient_for">
|
||||||
|
<description summary="surface is a child of another surface">
|
||||||
|
Setting a surface as transient of another means that it is child
|
||||||
|
of another surface.
|
||||||
|
|
||||||
|
Child surfaces are stacked above their parents, and will be
|
||||||
|
unmapped if the parent is unmapped too. They should not appear
|
||||||
|
on task bars and alt+tab.
|
||||||
|
</description>
|
||||||
|
<arg name="parent" type="object" interface="wl_surface" allow-null="true"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_margin">
|
||||||
|
<description summary="set the visible frame boundaries">
|
||||||
|
This tells the compositor what the visible size of the window
|
||||||
|
should be, so it can use it to determine what borders to use for
|
||||||
|
constrainment and alignment.
|
||||||
|
|
||||||
|
CSD often has invisible areas for decoration purposes, like drop
|
||||||
|
shadows. These "shadow" drawings need to be subtracted out of the
|
||||||
|
normal boundaries of the window when computing where to place
|
||||||
|
windows (e.g. to set this window so it's centered on top of another,
|
||||||
|
or to put it to the left or right of the screen.)
|
||||||
|
|
||||||
|
This value should change as little as possible at runtime, to
|
||||||
|
prevent flicker.
|
||||||
|
|
||||||
|
This value is also ignored when the window is maximized or
|
||||||
|
fullscreen, and assumed to be 0.
|
||||||
|
|
||||||
|
If never called, this value is assumed to be 0.
|
||||||
|
</description>
|
||||||
|
<arg name="left_margin" type="int"/>
|
||||||
|
<arg name="right_margin" type="int"/>
|
||||||
|
<arg name="top_margin" type="int"/>
|
||||||
|
<arg name="bottom_margin" type="int"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_title">
|
||||||
|
<description summary="set surface title">
|
||||||
|
Set a short title for the surface.
|
||||||
|
|
||||||
|
This string may be used to identify the surface in a task bar,
|
||||||
|
window list, or other user interface elements provided by the
|
||||||
|
compositor.
|
||||||
|
|
||||||
|
The string must be encoded in UTF-8.
|
||||||
|
</description>
|
||||||
|
<arg name="title" type="string"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_app_id">
|
||||||
|
<description summary="set surface class">
|
||||||
|
Set an id for the surface.
|
||||||
|
|
||||||
|
The app id identifies the general class of applications to which
|
||||||
|
the surface belongs.
|
||||||
|
|
||||||
|
It should be the ID that appears in the new desktop entry
|
||||||
|
specification, the interface name.
|
||||||
|
</description>
|
||||||
|
<arg name="app_id" type="string"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="move">
|
||||||
|
<description summary="start an interactive move">
|
||||||
|
Start a pointer-driven move of the surface.
|
||||||
|
|
||||||
|
This request must be used in response to a button press event.
|
||||||
|
The server may ignore move requests depending on the state of
|
||||||
|
the surface (e.g. fullscreen or maximized).
|
||||||
|
</description>
|
||||||
|
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
|
||||||
|
<arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<enum name="resize_edge">
|
||||||
|
<description summary="edge values for resizing">
|
||||||
|
These values are used to indicate which edge of a surface
|
||||||
|
is being dragged in a resize operation. The server may
|
||||||
|
use this information to adapt its behavior, e.g. choose
|
||||||
|
an appropriate cursor image.
|
||||||
|
</description>
|
||||||
|
<entry name="none" value="0"/>
|
||||||
|
<entry name="top" value="1"/>
|
||||||
|
<entry name="bottom" value="2"/>
|
||||||
|
<entry name="left" value="4"/>
|
||||||
|
<entry name="top_left" value="5"/>
|
||||||
|
<entry name="bottom_left" value="6"/>
|
||||||
|
<entry name="right" value="8"/>
|
||||||
|
<entry name="top_right" value="9"/>
|
||||||
|
<entry name="bottom_right" value="10"/>
|
||||||
|
</enum>
|
||||||
|
|
||||||
|
<request name="resize">
|
||||||
|
<description summary="start an interactive resize">
|
||||||
|
Start a pointer-driven resizing of the surface.
|
||||||
|
|
||||||
|
This request must be used in response to a button press event.
|
||||||
|
The server may ignore resize requests depending on the state of
|
||||||
|
the surface (e.g. fullscreen or maximized).
|
||||||
|
</description>
|
||||||
|
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
|
||||||
|
<arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
|
||||||
|
<arg name="edges" type="uint" summary="which edge or corner is being dragged"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="configure">
|
||||||
|
<description summary="suggest resize">
|
||||||
|
The configure event asks the client to resize its surface.
|
||||||
|
|
||||||
|
The size is a hint, in the sense that the client is free to
|
||||||
|
ignore it if it doesn't resize, pick a smaller size (to
|
||||||
|
satisfy aspect ratio or resize in steps of NxM pixels).
|
||||||
|
|
||||||
|
The client is free to dismiss all but the last configure
|
||||||
|
event it received.
|
||||||
|
|
||||||
|
The width and height arguments specify the size of the window
|
||||||
|
in surface local coordinates.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<arg name="width" type="int"/>
|
||||||
|
<arg name="height" type="int"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<request name="set_output">
|
||||||
|
<description summary="set the default output used by this surface">
|
||||||
|
Set the default output used by this surface when it is first mapped.
|
||||||
|
|
||||||
|
If this value is NULL (default), it's up to the compositor to choose
|
||||||
|
which display will be used to map this surface.
|
||||||
|
|
||||||
|
When fullscreen or maximized state are set on this surface, and it
|
||||||
|
wasn't mapped yet, the output set with this method will be used.
|
||||||
|
Otherwise, the output where the surface is currently mapped will be
|
||||||
|
used.
|
||||||
|
</description>
|
||||||
|
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="request_set_fullscreen">
|
||||||
|
<description summary="server requests that the client set fullscreen">
|
||||||
|
Event sent from the compositor to the client requesting that the client
|
||||||
|
goes to a fullscreen state. It's the client job to call set_fullscreen
|
||||||
|
and really trigger the fullscreen state.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="request_unset_fullscreen">
|
||||||
|
<description summary="server requests that the client unset fullscreen">
|
||||||
|
Event sent from the compositor to the client requesting that the client
|
||||||
|
leaves the fullscreen state. It's the client job to call
|
||||||
|
unset_fullscreen and really leave the fullscreen state.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<request name="set_fullscreen">
|
||||||
|
<description summary="set the surface state as fullscreen">
|
||||||
|
Set the surface as fullscreen.
|
||||||
|
|
||||||
|
After this request, the compositor should send a configure event
|
||||||
|
informing the output size.
|
||||||
|
|
||||||
|
This request informs the compositor that the next attached buffer
|
||||||
|
committed will be in a fullscreen state. The buffer size should be the
|
||||||
|
same size as the size informed in the configure event, if the client
|
||||||
|
doesn't want to leave any empty area.
|
||||||
|
|
||||||
|
In other words: the next attached buffer after set_maximized is the new
|
||||||
|
maximized buffer. And the surface will be positioned at the maximized
|
||||||
|
position on commit.
|
||||||
|
|
||||||
|
A simple way to synchronize and wait for the correct configure event is
|
||||||
|
to use a wl_display.sync request right after the set_fullscreen
|
||||||
|
request. When the sync callback returns, the last configure event
|
||||||
|
received just before it will be the correct one, and should contain the
|
||||||
|
right size for the surface to maximize.
|
||||||
|
|
||||||
|
Setting one state won't unset another state. Use
|
||||||
|
xdg_surface.unset_fullscreen for unsetting it.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="unset_fullscreen">
|
||||||
|
<description summary="unset the surface state as fullscreen">
|
||||||
|
Unset the surface fullscreen state.
|
||||||
|
|
||||||
|
Same negotiation as set_fullscreen must be used.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="request_set_maximized">
|
||||||
|
<description summary="server requests that the client set maximized">
|
||||||
|
Event sent from the compositor to the client requesting that the client
|
||||||
|
goes to a maximized state. It's the client job to call set_maximized
|
||||||
|
and really trigger the maximized state.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="request_unset_maximized">
|
||||||
|
<description summary="server requests that the client unset maximized">
|
||||||
|
Event sent from the compositor to the client requesting that the client
|
||||||
|
leaves the maximized state. It's the client job to call unset_maximized
|
||||||
|
and really leave the maximized state.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<request name="set_maximized">
|
||||||
|
<description summary="set the surface state as maximized">
|
||||||
|
Set the surface as maximized.
|
||||||
|
|
||||||
|
After this request, the compositor will send a configure event
|
||||||
|
informing the output size minus panel and other MW decorations.
|
||||||
|
|
||||||
|
This request informs the compositor that the next attached buffer
|
||||||
|
committed will be in a maximized state. The buffer size should be the
|
||||||
|
same size as the size informed in the configure event, if the client
|
||||||
|
doesn't want to leave any empty area.
|
||||||
|
|
||||||
|
In other words: the next attached buffer after set_maximized is the new
|
||||||
|
maximized buffer. And the surface will be positioned at the maximized
|
||||||
|
position on commit.
|
||||||
|
|
||||||
|
A simple way to synchronize and wait for the correct configure event is
|
||||||
|
to use a wl_display.sync request right after the set_maximized request.
|
||||||
|
When the sync callback returns, the last configure event received just
|
||||||
|
before it will be the correct one, and should contain the right size
|
||||||
|
for the surface to maximize.
|
||||||
|
|
||||||
|
Setting one state won't unset another state. Use
|
||||||
|
xdg_surface.unset_maximized for unsetting it.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="unset_maximized">
|
||||||
|
<description summary="unset the surface state as maximized">
|
||||||
|
Unset the surface maximized state.
|
||||||
|
|
||||||
|
Same negotiation as set_maximized must be used.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<request name="set_minimized">
|
||||||
|
<description summary="set the surface state as minimized">
|
||||||
|
Set the surface minimized state.
|
||||||
|
|
||||||
|
Setting one state won't unset another state.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="activated">
|
||||||
|
<description summary="surface was activated">
|
||||||
|
The activated_set event is sent when this surface has been
|
||||||
|
activated, which means that the surface has user attention.
|
||||||
|
Window decorations should be updated accordingly. You should
|
||||||
|
not use this event for anything but the style of decorations
|
||||||
|
you display, use wl_keyboard.enter and wl_keyboard.leave for
|
||||||
|
determining keyboard focus.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="deactivated">
|
||||||
|
<description summary="surface was deactivated">
|
||||||
|
The deactivate event is sent when this surface has been
|
||||||
|
deactivated, which means that the surface lost user attention.
|
||||||
|
Window decorations should be updated accordingly. You should
|
||||||
|
not use this event for anything but the style of decorations
|
||||||
|
you display, use wl_keyboard.enter and wl_keyboard.leave for
|
||||||
|
determining keyboard focus.
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="delete">
|
||||||
|
<description summary="surface wants to be closed">
|
||||||
|
The delete event is sent by the compositor when the user
|
||||||
|
wants the surface to be closed. This should be equivalent to
|
||||||
|
the user clicking the close button in client-side decorations,
|
||||||
|
if your application has any...
|
||||||
|
|
||||||
|
This is only a request that the user intends to close your
|
||||||
|
window. The client may choose to ignore this request, or show
|
||||||
|
a dialog to ask the user to save their data...
|
||||||
|
</description>
|
||||||
|
</event>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
<interface name="xdg_popup" version="1">
|
||||||
|
<description summary="desktop-style metadata interface">
|
||||||
|
An interface that may be implemented by a wl_surface, for
|
||||||
|
implementations that provide a desktop-style popups/menus. A popup
|
||||||
|
surface is a transient surface with an added pointer grab.
|
||||||
|
|
||||||
|
An existing implicit grab will be changed to owner-events mode,
|
||||||
|
and the popup grab will continue after the implicit grab ends
|
||||||
|
(i.e. releasing the mouse button does not cause the popup to be
|
||||||
|
unmapped).
|
||||||
|
|
||||||
|
The popup grab continues until the window is destroyed or a mouse
|
||||||
|
button is pressed in any other clients window. A click in any of
|
||||||
|
the clients surfaces is reported as normal, however, clicks in
|
||||||
|
other clients surfaces will be discarded and trigger the callback.
|
||||||
|
|
||||||
|
The x and y arguments specify the locations of the upper left
|
||||||
|
corner of the surface relative to the upper left corner of the
|
||||||
|
parent surface, in surface local coordinates.
|
||||||
|
|
||||||
|
xdg_popup surfaces are always transient for another surface.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<request name="destroy" type="destructor">
|
||||||
|
<description summary="remove xdg_surface interface">
|
||||||
|
The xdg_surface interface is removed from the wl_surface object
|
||||||
|
that was turned into a xdg_surface with
|
||||||
|
xdg_shell.get_xdg_surface request. The xdg_surface properties,
|
||||||
|
like maximized and fullscreen, are lost. The wl_surface loses
|
||||||
|
its role as a xdg_surface. The wl_surface is unmapped.
|
||||||
|
</description>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="popup_done">
|
||||||
|
<description summary="popup interaction is done">
|
||||||
|
The popup_done event is sent out when a popup grab is broken,
|
||||||
|
that is, when the users clicks a surface that doesn't belong
|
||||||
|
to the client owning the popup surface.
|
||||||
|
</description>
|
||||||
|
<arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
</interface>
|
||||||
|
</protocol>
|
18
protocol/xserver.xml
Normal file
18
protocol/xserver.xml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<protocol name="xserver">
|
||||||
|
|
||||||
|
<interface name="xserver" version="1">
|
||||||
|
<request name="set_window_id">
|
||||||
|
<arg name="surface" type="object" interface="wl_surface"/>
|
||||||
|
<arg name="id" type="uint"/>
|
||||||
|
</request>
|
||||||
|
|
||||||
|
<event name="client">
|
||||||
|
<arg name="fd" type="fd"/>
|
||||||
|
</event>
|
||||||
|
|
||||||
|
<event name="listen_socket">
|
||||||
|
<arg name="fd" type="fd"/>
|
||||||
|
</event>
|
||||||
|
</interface>
|
||||||
|
|
||||||
|
</protocol>
|
@@ -29,6 +29,18 @@
|
|||||||
<KeyListEntry name="move-to-workspace-down"
|
<KeyListEntry name="move-to-workspace-down"
|
||||||
_description="Move window one workspace down" />
|
_description="Move window one workspace down" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-left"
|
||||||
|
_description="Move window one monitor to the left" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-right"
|
||||||
|
_description="Move window one monitor to the right" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-up"
|
||||||
|
_description="Move window one monitor up" />
|
||||||
|
|
||||||
|
<KeyListEntry name="move-to-monitor-down"
|
||||||
|
_description="Move window one monitor down" />
|
||||||
|
|
||||||
<KeyListEntry name="switch-applications"
|
<KeyListEntry name="switch-applications"
|
||||||
_description="Switch applications"/>
|
_description="Switch applications"/>
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
<KeyListEntry name="close" _description="Close window"/>
|
<KeyListEntry name="close" _description="Close window"/>
|
||||||
|
|
||||||
<KeyListEntry name="minimize" _description="Minimize window"/>
|
<KeyListEntry name="minimize" _description="Hide window"/>
|
||||||
|
|
||||||
<KeyListEntry name="begin-move" _description="Move window"/>
|
<KeyListEntry name="begin-move" _description="Move window"/>
|
||||||
|
|
||||||
|
202
src/Makefile.am
202
src/Makefile.am
@@ -1,12 +1,17 @@
|
|||||||
# Flag build for parallelism; see https://savannah.gnu.org/patch/?6905
|
# Flag build for parallelism; see https://savannah.gnu.org/patch/?6905
|
||||||
.AUTOPARALLEL:
|
.AUTOPARALLEL:
|
||||||
|
|
||||||
lib_LTLIBRARIES = libmutter.la
|
lib_LTLIBRARIES = libmutter-wayland.la
|
||||||
|
|
||||||
SUBDIRS=wm-tester tools compositor/plugins
|
SUBDIRS=compositor/plugins
|
||||||
|
|
||||||
INCLUDES= \
|
INCLUDES= \
|
||||||
|
-DCLUTTER_ENABLE_COMPOSITOR_API \
|
||||||
|
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
|
||||||
|
-DCOGL_ENABLE_EXPERIMENTAL_API \
|
||||||
|
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
|
||||||
$(MUTTER_CFLAGS) \
|
$(MUTTER_CFLAGS) \
|
||||||
|
-I$(top_builddir) \
|
||||||
-I$(srcdir) \
|
-I$(srcdir) \
|
||||||
-I$(srcdir)/core \
|
-I$(srcdir)/core \
|
||||||
-I$(srcdir)/ui \
|
-I$(srcdir)/ui \
|
||||||
@@ -26,24 +31,45 @@ INCLUDES= \
|
|||||||
-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\" \
|
-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\" \
|
||||||
-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"
|
-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"
|
||||||
|
|
||||||
mutter_built_sources = \
|
INCLUDES += \
|
||||||
mutter-enum-types.h \
|
-I$(srcdir)/wayland \
|
||||||
mutter-enum-types.c
|
-I$(builddir)/wayland \
|
||||||
|
-DXWAYLAND_PATH='"@XWAYLAND_PATH@"'
|
||||||
|
|
||||||
libmutter_la_SOURCES = \
|
mutter_built_sources = \
|
||||||
|
$(dbus_idle_built_sources) \
|
||||||
|
$(dbus_xrandr_built_sources) \
|
||||||
|
mutter-enum-types.h \
|
||||||
|
mutter-enum-types.c \
|
||||||
|
wayland/gtk-shell-protocol.c \
|
||||||
|
wayland/gtk-shell-server-protocol.h \
|
||||||
|
wayland/xdg-shell-protocol.c \
|
||||||
|
wayland/xdg-shell-server-protocol.h \
|
||||||
|
wayland/xserver-protocol.c \
|
||||||
|
wayland/xserver-server-protocol.h
|
||||||
|
|
||||||
|
libmutter_wayland_la_SOURCES = \
|
||||||
core/async-getprop.c \
|
core/async-getprop.c \
|
||||||
core/async-getprop.h \
|
core/async-getprop.h \
|
||||||
|
core/barrier.c \
|
||||||
|
meta/barrier.h \
|
||||||
core/bell.c \
|
core/bell.c \
|
||||||
core/bell.h \
|
core/bell.h \
|
||||||
core/boxes.c \
|
core/boxes.c \
|
||||||
core/boxes-private.h \
|
core/boxes-private.h \
|
||||||
meta/boxes.h \
|
meta/boxes.h \
|
||||||
|
compositor/clutter-utils.c \
|
||||||
|
compositor/clutter-utils.h \
|
||||||
compositor/cogl-utils.c \
|
compositor/cogl-utils.c \
|
||||||
compositor/cogl-utils.h \
|
compositor/cogl-utils.h \
|
||||||
compositor/compositor.c \
|
compositor/compositor.c \
|
||||||
compositor/compositor-private.h \
|
compositor/compositor-private.h \
|
||||||
|
compositor/meta-background.c \
|
||||||
compositor/meta-background-actor.c \
|
compositor/meta-background-actor.c \
|
||||||
compositor/meta-background-actor-private.h \
|
compositor/meta-background-actor-private.h \
|
||||||
|
compositor/meta-background-group.c \
|
||||||
|
compositor/meta-cullable.c \
|
||||||
|
compositor/meta-cullable.h \
|
||||||
compositor/meta-module.c \
|
compositor/meta-module.c \
|
||||||
compositor/meta-module.h \
|
compositor/meta-module.h \
|
||||||
compositor/meta-plugin.c \
|
compositor/meta-plugin.c \
|
||||||
@@ -52,6 +78,13 @@ libmutter_la_SOURCES = \
|
|||||||
compositor/meta-shadow-factory.c \
|
compositor/meta-shadow-factory.c \
|
||||||
compositor/meta-shadow-factory-private.h \
|
compositor/meta-shadow-factory-private.h \
|
||||||
compositor/meta-shaped-texture.c \
|
compositor/meta-shaped-texture.c \
|
||||||
|
compositor/meta-shaped-texture-private.h \
|
||||||
|
compositor/meta-surface-actor.c \
|
||||||
|
compositor/meta-surface-actor.h \
|
||||||
|
compositor/meta-surface-actor-x11.c \
|
||||||
|
compositor/meta-surface-actor-x11.h \
|
||||||
|
compositor/meta-surface-actor-wayland.c \
|
||||||
|
compositor/meta-surface-actor-wayland.h \
|
||||||
compositor/meta-texture-rectangle.c \
|
compositor/meta-texture-rectangle.c \
|
||||||
compositor/meta-texture-rectangle.h \
|
compositor/meta-texture-rectangle.h \
|
||||||
compositor/meta-texture-tower.c \
|
compositor/meta-texture-tower.c \
|
||||||
@@ -65,7 +98,9 @@ libmutter_la_SOURCES = \
|
|||||||
compositor/region-utils.c \
|
compositor/region-utils.c \
|
||||||
compositor/region-utils.h \
|
compositor/region-utils.h \
|
||||||
meta/compositor.h \
|
meta/compositor.h \
|
||||||
|
meta/meta-background.h \
|
||||||
meta/meta-background-actor.h \
|
meta/meta-background-actor.h \
|
||||||
|
meta/meta-background-group.h \
|
||||||
meta/meta-plugin.h \
|
meta/meta-plugin.h \
|
||||||
meta/meta-shadow-factory.h \
|
meta/meta-shadow-factory.h \
|
||||||
meta/meta-window-actor.h \
|
meta/meta-window-actor.h \
|
||||||
@@ -78,14 +113,12 @@ libmutter_la_SOURCES = \
|
|||||||
core/display.c \
|
core/display.c \
|
||||||
core/display-private.h \
|
core/display-private.h \
|
||||||
meta/display.h \
|
meta/display.h \
|
||||||
ui/draw-workspace.c \
|
|
||||||
ui/draw-workspace.h \
|
|
||||||
core/edge-resistance.c \
|
core/edge-resistance.c \
|
||||||
core/edge-resistance.h \
|
core/edge-resistance.h \
|
||||||
|
core/edid-parse.c \
|
||||||
|
core/edid.h \
|
||||||
core/errors.c \
|
core/errors.c \
|
||||||
meta/errors.h \
|
meta/errors.h \
|
||||||
core/eventqueue.c \
|
|
||||||
core/eventqueue.h \
|
|
||||||
core/frame.c \
|
core/frame.c \
|
||||||
core/frame.h \
|
core/frame.h \
|
||||||
ui/gradient.c \
|
ui/gradient.c \
|
||||||
@@ -100,6 +133,16 @@ libmutter_la_SOURCES = \
|
|||||||
core/keybindings.c \
|
core/keybindings.c \
|
||||||
core/keybindings-private.h \
|
core/keybindings-private.h \
|
||||||
core/main.c \
|
core/main.c \
|
||||||
|
core/meta-cursor-tracker.c \
|
||||||
|
core/meta-cursor-tracker-private.h \
|
||||||
|
core/meta-idle-monitor.c \
|
||||||
|
core/meta-idle-monitor-private.h \
|
||||||
|
core/meta-xrandr-shared.h \
|
||||||
|
core/monitor.c \
|
||||||
|
core/monitor-config.c \
|
||||||
|
core/monitor-kms.c \
|
||||||
|
core/monitor-private.h \
|
||||||
|
core/monitor-xrandr.c \
|
||||||
core/mutter-Xatomtype.h \
|
core/mutter-Xatomtype.h \
|
||||||
core/place.c \
|
core/place.c \
|
||||||
core/place.h \
|
core/place.h \
|
||||||
@@ -117,8 +160,11 @@ libmutter_la_SOURCES = \
|
|||||||
core/stack-tracker.h \
|
core/stack-tracker.h \
|
||||||
core/util.c \
|
core/util.c \
|
||||||
meta/util.h \
|
meta/util.h \
|
||||||
|
core/util-private.h \
|
||||||
core/window-props.c \
|
core/window-props.c \
|
||||||
core/window-props.h \
|
core/window-props.h \
|
||||||
|
core/window-x11.c \
|
||||||
|
core/window-x11.h \
|
||||||
core/window.c \
|
core/window.c \
|
||||||
core/window-private.h \
|
core/window-private.h \
|
||||||
meta/window.h \
|
meta/window.h \
|
||||||
@@ -129,7 +175,6 @@ libmutter_la_SOURCES = \
|
|||||||
meta/common.h \
|
meta/common.h \
|
||||||
core/core.h \
|
core/core.h \
|
||||||
ui/ui.h \
|
ui/ui.h \
|
||||||
inlinepixbufs.h \
|
|
||||||
ui/frames.c \
|
ui/frames.c \
|
||||||
ui/frames.h \
|
ui/frames.h \
|
||||||
ui/menu.c \
|
ui/menu.c \
|
||||||
@@ -138,25 +183,43 @@ libmutter_la_SOURCES = \
|
|||||||
ui/metaaccellabel.h \
|
ui/metaaccellabel.h \
|
||||||
ui/resizepopup.c \
|
ui/resizepopup.c \
|
||||||
ui/resizepopup.h \
|
ui/resizepopup.h \
|
||||||
ui/tabpopup.c \
|
|
||||||
ui/tabpopup.h \
|
|
||||||
ui/tile-preview.c \
|
|
||||||
ui/tile-preview.h \
|
|
||||||
ui/theme-parser.c \
|
ui/theme-parser.c \
|
||||||
ui/theme.c \
|
ui/theme.c \
|
||||||
meta/theme.h \
|
meta/theme.h \
|
||||||
ui/theme-private.h \
|
ui/theme-private.h \
|
||||||
ui/ui.c \
|
ui/ui.c \
|
||||||
meta/preview-widget.h \
|
wayland/meta-wayland.c \
|
||||||
ui/preview-widget.c \
|
wayland/meta-wayland.h \
|
||||||
|
wayland/meta-wayland-private.h \
|
||||||
|
wayland/meta-xwayland-private.h \
|
||||||
|
wayland/meta-xwayland.c \
|
||||||
|
wayland/meta-wayland-data-device.c \
|
||||||
|
wayland/meta-wayland-data-device.h \
|
||||||
|
wayland/meta-wayland-keyboard.c \
|
||||||
|
wayland/meta-wayland-keyboard.h \
|
||||||
|
wayland/meta-wayland-pointer.c \
|
||||||
|
wayland/meta-wayland-pointer.h \
|
||||||
|
wayland/meta-wayland-seat.c \
|
||||||
|
wayland/meta-wayland-seat.h \
|
||||||
|
wayland/meta-wayland-stage.h \
|
||||||
|
wayland/meta-wayland-stage.c \
|
||||||
|
wayland/meta-wayland-surface.c \
|
||||||
|
wayland/meta-wayland-surface.h \
|
||||||
|
wayland/meta-wayland-types.h \
|
||||||
|
wayland/meta-wayland-versions.h \
|
||||||
|
wayland/meta-weston-launch.c \
|
||||||
|
wayland/meta-weston-launch.h
|
||||||
|
|
||||||
|
nodist_libmutter_wayland_la_SOURCES = \
|
||||||
$(mutter_built_sources)
|
$(mutter_built_sources)
|
||||||
|
|
||||||
libmutter_la_LDFLAGS = -no-undefined
|
libmutter_wayland_la_LDFLAGS = -no-undefined
|
||||||
libmutter_la_LIBADD = $(MUTTER_LIBS)
|
libmutter_wayland_la_LIBADD = $(MUTTER_LIBS)
|
||||||
|
|
||||||
# Headers installed for plugins; introspected information will
|
# Headers installed for plugins; introspected information will
|
||||||
# be extracted into Mutter-<version>.gir
|
# be extracted into Mutter-<version>.gir
|
||||||
libmutterinclude_base_headers = \
|
libmutterinclude_base_headers = \
|
||||||
|
meta/barrier.h \
|
||||||
meta/boxes.h \
|
meta/boxes.h \
|
||||||
meta/common.h \
|
meta/common.h \
|
||||||
meta/compositor-mutter.h \
|
meta/compositor-mutter.h \
|
||||||
@@ -168,6 +231,10 @@ libmutterinclude_base_headers = \
|
|||||||
meta/keybindings.h \
|
meta/keybindings.h \
|
||||||
meta/main.h \
|
meta/main.h \
|
||||||
meta/meta-background-actor.h \
|
meta/meta-background-actor.h \
|
||||||
|
meta/meta-background-group.h \
|
||||||
|
meta/meta-background.h \
|
||||||
|
meta/meta-cursor-tracker.h \
|
||||||
|
meta/meta-idle-monitor.h \
|
||||||
meta/meta-plugin.h \
|
meta/meta-plugin.h \
|
||||||
meta/meta-shaped-texture.h \
|
meta/meta-shaped-texture.h \
|
||||||
meta/meta-shadow-factory.h \
|
meta/meta-shadow-factory.h \
|
||||||
@@ -183,22 +250,29 @@ libmutterinclude_base_headers = \
|
|||||||
# Excluded from scanning for introspection but installed
|
# Excluded from scanning for introspection but installed
|
||||||
# atomnames.h: macros cause problems for scanning process
|
# atomnames.h: macros cause problems for scanning process
|
||||||
libmutterinclude_extra_headers = \
|
libmutterinclude_extra_headers = \
|
||||||
meta/preview-widget.h \
|
|
||||||
meta/atomnames.h
|
meta/atomnames.h
|
||||||
|
|
||||||
libmutterincludedir = $(includedir)/mutter/meta
|
libmutterincludedir = $(includedir)/mutter-wayland/meta
|
||||||
|
|
||||||
libmutterinclude_HEADERS = \
|
libmutterinclude_HEADERS = \
|
||||||
$(libmutterinclude_base_headers) \
|
$(libmutterinclude_base_headers) \
|
||||||
$(libmutterinclude_extra_headers)
|
$(libmutterinclude_extra_headers)
|
||||||
|
|
||||||
mutter_theme_viewer_SOURCES= \
|
bin_PROGRAMS=mutter-wayland
|
||||||
ui/theme-viewer.c
|
|
||||||
|
|
||||||
bin_PROGRAMS=mutter mutter-theme-viewer
|
mutter_wayland_SOURCES = core/mutter.c
|
||||||
|
mutter_wayland_LDADD = $(MUTTER_LIBS) libmutter-wayland.la
|
||||||
|
|
||||||
mutter_SOURCES = core/mutter.c
|
bin_PROGRAMS+=mutter-launch
|
||||||
mutter_LDADD = $(MUTTER_LIBS) libmutter.la
|
|
||||||
|
mutter_launch_SOURCES = wayland/weston-launch.c wayland/weston-launch.h
|
||||||
|
|
||||||
|
mutter_launch_CFLAGS = $(MUTTER_LAUNCH_CFLAGS) -DLIBDIR=\"$(libdir)\"
|
||||||
|
mutter_launch_LDFLAGS = $(MUTTER_LAUNCH_LIBS) -lpam
|
||||||
|
|
||||||
|
install-exec-hook:
|
||||||
|
-chown root $(DESTDIR)$(bindir)/mutter-launch
|
||||||
|
-chmod u+s $(DESTDIR)$(bindir)/mutter-launch
|
||||||
|
|
||||||
if HAVE_INTROSPECTION
|
if HAVE_INTROSPECTION
|
||||||
include $(INTROSPECTION_MAKEFILE)
|
include $(INTROSPECTION_MAKEFILE)
|
||||||
@@ -220,43 +294,36 @@ typelib_DATA = Meta-$(api_version).typelib
|
|||||||
|
|
||||||
INTROSPECTION_GIRS = Meta-$(api_version).gir
|
INTROSPECTION_GIRS = Meta-$(api_version).gir
|
||||||
|
|
||||||
Meta-$(api_version).gir: libmutter.la
|
Meta-$(api_version).gir: libmutter-wayland.la
|
||||||
@META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0
|
@META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0
|
||||||
@META_GIR@_EXPORT_PACKAGES = libmutter
|
@META_GIR@_EXPORT_PACKAGES = libmutter-wayland
|
||||||
@META_GIR@_CFLAGS = $(INCLUDES)
|
@META_GIR@_CFLAGS = $(INCLUDES)
|
||||||
@META_GIR@_LIBS = libmutter.la
|
@META_GIR@_LIBS = libmutter-wayland.la
|
||||||
@META_GIR@_FILES = \
|
@META_GIR@_FILES = \
|
||||||
mutter-enum-types.h \
|
mutter-enum-types.h \
|
||||||
$(libmutterinclude_base_headers) \
|
$(libmutterinclude_base_headers) \
|
||||||
$(filter %.c,$(libmutter_la_SOURCES))
|
$(filter %.c,$(libmutter_wayland_la_SOURCES) $(nodist_libmutter_wayland_la_SOURCES))
|
||||||
@META_GIR@_SCANNERFLAGS = --warn-all --warn-error
|
@META_GIR@_SCANNERFLAGS = --warn-all --warn-error
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
mutter_theme_viewer_LDADD= $(MUTTER_LIBS) libmutter.la
|
|
||||||
|
|
||||||
testboxes_SOURCES = core/testboxes.c
|
testboxes_SOURCES = core/testboxes.c
|
||||||
testgradient_SOURCES = ui/testgradient.c
|
testgradient_SOURCES = ui/testgradient.c
|
||||||
testasyncgetprop_SOURCES = core/testasyncgetprop.c
|
testasyncgetprop_SOURCES = core/testasyncgetprop.c
|
||||||
|
|
||||||
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
noinst_PROGRAMS=testboxes testgradient testasyncgetprop
|
||||||
|
|
||||||
testboxes_LDADD = $(MUTTER_LIBS) libmutter.la
|
testboxes_LDADD = $(MUTTER_LIBS) libmutter-wayland.la
|
||||||
testgradient_LDADD = $(MUTTER_LIBS) libmutter.la
|
testgradient_LDADD = $(MUTTER_LIBS) libmutter-wayland.la
|
||||||
testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter.la
|
testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter-wayland.la
|
||||||
|
|
||||||
@INTLTOOL_DESKTOP_RULE@
|
@INTLTOOL_DESKTOP_RULE@
|
||||||
|
|
||||||
desktopfilesdir=$(datadir)/applications
|
desktopfilesdir=$(datadir)/applications
|
||||||
desktopfiles_in_files=mutter.desktop.in
|
desktopfiles_in_files=mutter-wayland.desktop.in
|
||||||
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
|
||||||
desktopfiles_DATA = $(desktopfiles_files)
|
desktopfiles_DATA = $(desktopfiles_files)
|
||||||
|
|
||||||
wmpropertiesdir=$(datadir)/gnome/wm-properties
|
|
||||||
wmproperties_in_files=mutter-wm.desktop.in
|
|
||||||
wmproperties_files=$(wmproperties_in_files:.desktop.in=.desktop)
|
|
||||||
wmproperties_DATA = $(wmproperties_files)
|
|
||||||
|
|
||||||
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
|
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
|
||||||
xml_in_files = \
|
xml_in_files = \
|
||||||
50-mutter-navigation.xml.in \
|
50-mutter-navigation.xml.in \
|
||||||
@@ -264,35 +331,28 @@ xml_in_files = \
|
|||||||
50-mutter-windows.xml.in
|
50-mutter-windows.xml.in
|
||||||
xml_DATA = $(xml_in_files:.xml.in=.xml)
|
xml_DATA = $(xml_in_files:.xml.in=.xml)
|
||||||
|
|
||||||
gsettings_SCHEMAS = org.gnome.mutter.gschema.xml
|
dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h
|
||||||
|
|
||||||
|
gsettings_SCHEMAS = org.gnome.mutter.gschema.xml org.gnome.mutter.wayland.gschema.xml
|
||||||
@INTLTOOL_XML_NOMERGE_RULE@
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
@GSETTINGS_RULES@
|
@GSETTINGS_RULES@
|
||||||
|
|
||||||
convertdir = $(datadir)/GConf/gsettings
|
convertdir = $(datadir)/GConf/gsettings
|
||||||
convert_DATA = mutter-schemas.convert
|
convert_DATA = mutter-schemas.convert
|
||||||
|
|
||||||
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 = \
|
CLEANFILES = \
|
||||||
inlinepixbufs.h \
|
mutter-wayland.desktop \
|
||||||
mutter.desktop \
|
|
||||||
mutter-wm.desktop \
|
mutter-wm.desktop \
|
||||||
org.gnome.mutter.gschema.xml \
|
org.gnome.mutter.gschema.xml \
|
||||||
|
org.gnome.mutter.wayland.gschema.xml \
|
||||||
$(xml_DATA) \
|
$(xml_DATA) \
|
||||||
$(mutter_built_sources) \
|
$(mutter_built_sources) \
|
||||||
$(typelib_DATA) \
|
$(typelib_DATA) \
|
||||||
$(gir_DATA)
|
$(gir_DATA)
|
||||||
|
|
||||||
inlinepixbufs.h: $(IMAGES)
|
|
||||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
|
||||||
pkgconfig_DATA = libmutter.pc mutter-plugins.pc
|
pkgconfig_DATA = libmutter-wayland.pc
|
||||||
|
|
||||||
EXTRA_DIST=$(desktopfiles_files) \
|
EXTRA_DIST=$(desktopfiles_files) \
|
||||||
$(wmproperties_files) \
|
$(wmproperties_files) \
|
||||||
@@ -301,13 +361,14 @@ EXTRA_DIST=$(desktopfiles_files) \
|
|||||||
$(wmproperties_in_files) \
|
$(wmproperties_in_files) \
|
||||||
$(xml_in_files) \
|
$(xml_in_files) \
|
||||||
org.gnome.mutter.gschema.xml.in \
|
org.gnome.mutter.gschema.xml.in \
|
||||||
|
org.gnome.mutter.wayland.gschema.xml.in \
|
||||||
mutter-schemas.convert \
|
mutter-schemas.convert \
|
||||||
libmutter.pc.in \
|
libmutter-wayland.pc.in \
|
||||||
mutter-plugins.pc.in \
|
|
||||||
mutter-enum-types.h.in \
|
mutter-enum-types.h.in \
|
||||||
mutter-enum-types.c.in
|
mutter-enum-types.c.in \
|
||||||
|
xrandr.xml idle-monitor.xml
|
||||||
|
|
||||||
BUILT_SOURCES += $(mutter_built_sources)
|
BUILT_SOURCES = $(mutter_built_sources)
|
||||||
MUTTER_STAMP_FILES = stamp-mutter-enum-types.h
|
MUTTER_STAMP_FILES = stamp-mutter-enum-types.h
|
||||||
CLEANFILES += $(MUTTER_STAMP_FILES)
|
CLEANFILES += $(MUTTER_STAMP_FILES)
|
||||||
|
|
||||||
@@ -329,3 +390,28 @@ mutter-enum-types.c: stamp-mutter-enum-types.h mutter-enum-types.c.in
|
|||||||
$(libmutterinclude_base_headers) ) >> xgen-tetc && \
|
$(libmutterinclude_base_headers) ) >> xgen-tetc && \
|
||||||
cp xgen-tetc mutter-enum-types.c && \
|
cp xgen-tetc mutter-enum-types.c && \
|
||||||
rm -f xgen-tetc
|
rm -f xgen-tetc
|
||||||
|
|
||||||
|
dbus_xrandr_built_sources = meta-dbus-xrandr.c meta-dbus-xrandr.h
|
||||||
|
|
||||||
|
$(dbus_xrandr_built_sources) : Makefile.am xrandr.xml
|
||||||
|
$(AM_V_GEN)gdbus-codegen \
|
||||||
|
--interface-prefix org.gnome.Mutter \
|
||||||
|
--c-namespace MetaDBus \
|
||||||
|
--generate-c-code meta-dbus-xrandr \
|
||||||
|
$(srcdir)/xrandr.xml
|
||||||
|
|
||||||
|
|
||||||
|
$(dbus_idle_built_sources) : Makefile.am idle-monitor.xml
|
||||||
|
$(AM_V_GEN)gdbus-codegen \
|
||||||
|
--interface-prefix org.gnome.Mutter \
|
||||||
|
--c-namespace MetaDBus \
|
||||||
|
--generate-c-code meta-dbus-idle-monitor \
|
||||||
|
--c-generate-object-manager \
|
||||||
|
$(srcdir)/idle-monitor.xml
|
||||||
|
|
||||||
|
wayland/%-protocol.c : $(top_builddir)/protocol/%.xml
|
||||||
|
mkdir -p wayland
|
||||||
|
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||||
|
wayland/%-server-protocol.h : $(top_builddir)/protocol/%.xml
|
||||||
|
mkdir -p wayland
|
||||||
|
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
|
||||||
|
120
src/compositor/clutter-utils.c
Normal file
120
src/compositor/clutter-utils.c
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
/*
|
||||||
|
* Utilities for use with Cogl
|
||||||
|
*
|
||||||
|
* Copyright 2010 Red Hat, Inc.
|
||||||
|
* Copyright 2010 Intel Corporation
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "clutter-utils.h"
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
/* This file uses pixel-aligned region computation to determine what
|
||||||
|
* can be clipped out. This only really works if everything is aligned
|
||||||
|
* to the pixel grid - not scaled or rotated and at integer offsets.
|
||||||
|
*
|
||||||
|
* (This could be relaxed - if we turned off filtering for unscaled
|
||||||
|
* windows then windows would be, by definition aligned to the pixel
|
||||||
|
* grid. And for rectangular windows without a shape, the outline that
|
||||||
|
* we draw for an unrotated window is always a rectangle because we
|
||||||
|
* don't use antialasing for the window boundary - with or without
|
||||||
|
* filtering, with or without a scale. But figuring out exactly
|
||||||
|
* what pixels will be drawn by the graphics system in these cases
|
||||||
|
* gets tricky, so we just go for the easiest part - no scale,
|
||||||
|
* and at integer offsets.)
|
||||||
|
*
|
||||||
|
* The way we check for pixel-aligned is by looking at the
|
||||||
|
* transformation into screen space of the allocation box of an actor
|
||||||
|
* and and checking if the corners are "close enough" to integral
|
||||||
|
* pixel values.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* The definition of "close enough" to integral pixel values is
|
||||||
|
* equality when we convert to 24.8 fixed-point.
|
||||||
|
*/
|
||||||
|
static inline int
|
||||||
|
round_to_fixed (float x)
|
||||||
|
{
|
||||||
|
return roundf (x * 256);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This helper function checks if (according to our fixed point precision)
|
||||||
|
* the vertices @verts form a box of width @widthf and height @heightf
|
||||||
|
* located at integral coordinates. These coordinates are returned
|
||||||
|
* in @x_origin and @y_origin.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
meta_actor_vertices_are_untransformed (ClutterVertex *verts,
|
||||||
|
float widthf,
|
||||||
|
float heightf,
|
||||||
|
int *x_origin,
|
||||||
|
int *y_origin)
|
||||||
|
{
|
||||||
|
int width, height;
|
||||||
|
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
width = round_to_fixed (widthf); height = round_to_fixed (heightf);
|
||||||
|
|
||||||
|
v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y);
|
||||||
|
v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y);
|
||||||
|
v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y);
|
||||||
|
v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y);
|
||||||
|
|
||||||
|
/* Using shifting for converting fixed => int, gets things right for
|
||||||
|
* negative values. / 256. wouldn't do the same
|
||||||
|
*/
|
||||||
|
x = v0x >> 8;
|
||||||
|
y = v0y >> 8;
|
||||||
|
|
||||||
|
/* At integral coordinates? */
|
||||||
|
if (x * 256 != v0x || y * 256 != v0y)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* Not scaled? */
|
||||||
|
if (v1x - v0x != width || v2y - v0y != height)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* Not rotated/skewed? */
|
||||||
|
if (v0x != v2x || v0y != v1y ||
|
||||||
|
v3x != v1x || v3y != v2y)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (x_origin)
|
||||||
|
*x_origin = x;
|
||||||
|
if (y_origin)
|
||||||
|
*y_origin = y;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check if an actor is "untransformed" - which actually means transformed by
|
||||||
|
* at most a integer-translation. The integer translation, if any, is returned.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
meta_actor_is_untransformed (ClutterActor *actor,
|
||||||
|
int *x_origin,
|
||||||
|
int *y_origin)
|
||||||
|
{
|
||||||
|
gfloat widthf, heightf;
|
||||||
|
ClutterVertex verts[4];
|
||||||
|
|
||||||
|
clutter_actor_get_size (actor, &widthf, &heightf);
|
||||||
|
clutter_actor_get_abs_allocation_vertices (actor, verts);
|
||||||
|
|
||||||
|
return meta_actor_vertices_are_untransformed (verts, widthf, heightf, x_origin, y_origin);
|
||||||
|
}
|
||||||
|
|
34
src/compositor/clutter-utils.h
Normal file
34
src/compositor/clutter-utils.h
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
/*
|
||||||
|
* Utilities for use with Clutter
|
||||||
|
*
|
||||||
|
* Copyright 2010 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __META_CLUTTER_UTILS_H__
|
||||||
|
#define __META_CLUTTER_UTILS_H__
|
||||||
|
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
gboolean meta_actor_vertices_are_untransformed (ClutterVertex *verts,
|
||||||
|
float widthf,
|
||||||
|
float heightf,
|
||||||
|
int *x_origin,
|
||||||
|
int *y_origin);
|
||||||
|
gboolean meta_actor_is_untransformed (ClutterActor *actor,
|
||||||
|
int *x_origin,
|
||||||
|
int *y_origin);
|
||||||
|
|
||||||
|
#endif /* __META_CLUTTER_UTILS_H__ */
|
@@ -16,19 +16,18 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <clutter/clutter.h>
|
||||||
#include "cogl-utils.h"
|
#include "cogl-utils.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_create_color_texture_4ub:
|
* meta_create_color_texture_4ub:
|
||||||
* @red:
|
* @red: red component
|
||||||
* @green:
|
* @green: green component
|
||||||
* @blue:
|
* @blue: blue component
|
||||||
* @alpha:
|
* @alpha: alpha component
|
||||||
* @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
|
* @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
|
||||||
* %COGL_TEXTURE_NO_SLICING is useful if the texture will be
|
* %COGL_TEXTURE_NO_SLICING is useful if the texture will be
|
||||||
* repeated to create a constant color fill, since hardware
|
* repeated to create a constant color fill, since hardware
|
||||||
@@ -39,7 +38,7 @@
|
|||||||
*
|
*
|
||||||
* Return value: (transfer full): a newly created Cogl texture
|
* Return value: (transfer full): a newly created Cogl texture
|
||||||
*/
|
*/
|
||||||
CoglHandle
|
CoglTexture *
|
||||||
meta_create_color_texture_4ub (guint8 red,
|
meta_create_color_texture_4ub (guint8 red,
|
||||||
guint8 green,
|
guint8 green,
|
||||||
guint8 blue,
|
guint8 blue,
|
||||||
@@ -49,7 +48,7 @@ meta_create_color_texture_4ub (guint8 red,
|
|||||||
CoglColor color;
|
CoglColor color;
|
||||||
guint8 pixel[4];
|
guint8 pixel[4];
|
||||||
|
|
||||||
cogl_color_set_from_4ub (&color, red, green, blue, alpha);
|
cogl_color_init_from_4ub (&color, red, green, blue, alpha);
|
||||||
cogl_color_premultiply (&color);
|
cogl_color_premultiply (&color);
|
||||||
|
|
||||||
pixel[0] = cogl_color_get_red_byte (&color);
|
pixel[0] = cogl_color_get_red_byte (&color);
|
||||||
@@ -68,43 +67,42 @@ meta_create_color_texture_4ub (guint8 red,
|
|||||||
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
|
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_create_texture_material:
|
* meta_create_texture_pipeline:
|
||||||
* @src_texture: (allow-none): texture to use initially for the layer
|
* @src_texture: (allow-none): texture to use initially for the layer
|
||||||
*
|
*
|
||||||
* Creates a material with a single layer. Using a common template
|
* Creates a pipeline with a single layer. Using a common template
|
||||||
* allows sharing a shader for different uses in Mutter. To share the same
|
* makes it easier for Cogl to share a shader for different uses in
|
||||||
* shader with all other materials that are just texture plus opacity
|
* Mutter.
|
||||||
* would require Cogl fixes.
|
|
||||||
* (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425)
|
|
||||||
*
|
*
|
||||||
* Return value: (transfer full): a newly created Cogl material
|
* Return value: (transfer full): a newly created #CoglPipeline
|
||||||
*/
|
*/
|
||||||
CoglHandle
|
CoglPipeline *
|
||||||
meta_create_texture_material (CoglHandle src_texture)
|
meta_create_texture_pipeline (CoglTexture *src_texture)
|
||||||
{
|
{
|
||||||
static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
|
static CoglPipeline *texture_pipeline_template = NULL;
|
||||||
CoglHandle material;
|
CoglPipeline *pipeline;
|
||||||
|
|
||||||
/* We use a material that has a dummy texture as a base for all
|
/* The only state used in the pipeline that would affect the shader
|
||||||
texture materials. The idea is that only the Cogl texture object
|
generation is the texture type on the layer. Therefore we create
|
||||||
would be different in the children so it is likely that Cogl will
|
a template pipeline which sets this state and all texture
|
||||||
be able to share GL programs between all the textures. */
|
pipelines are created as a copy of this. That way Cogl can find
|
||||||
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
|
the shader state for the pipeline more quickly by looking at the
|
||||||
|
pipeline ancestry instead of resorting to the shader cache. */
|
||||||
|
if (G_UNLIKELY (texture_pipeline_template == NULL))
|
||||||
{
|
{
|
||||||
CoglHandle dummy_texture;
|
CoglContext *ctx =
|
||||||
|
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
|
||||||
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
|
texture_pipeline_template = cogl_pipeline_new (ctx);
|
||||||
COGL_TEXTURE_NONE);
|
cogl_pipeline_set_layer_null_texture (texture_pipeline_template,
|
||||||
|
0, /* layer */
|
||||||
texture_material_template = cogl_material_new ();
|
COGL_TEXTURE_TYPE_2D);
|
||||||
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
|
|
||||||
cogl_handle_unref (dummy_texture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
material = cogl_material_copy (texture_material_template);
|
pipeline = cogl_pipeline_copy (texture_pipeline_template);
|
||||||
|
|
||||||
if (src_texture != COGL_INVALID_HANDLE)
|
if (src_texture != NULL)
|
||||||
cogl_material_set_layer (material, 0, src_texture);
|
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
|
||||||
|
|
||||||
return material;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
@@ -15,9 +15,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __META_COGL_UTILS_H__
|
#ifndef __META_COGL_UTILS_H__
|
||||||
@@ -25,11 +23,11 @@
|
|||||||
|
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
|
|
||||||
CoglHandle meta_create_color_texture_4ub (guint8 red,
|
CoglTexture * meta_create_color_texture_4ub (guint8 red,
|
||||||
guint8 green,
|
guint8 green,
|
||||||
guint8 blue,
|
guint8 blue,
|
||||||
guint8 alpha,
|
guint8 alpha,
|
||||||
CoglTextureFlags flags);
|
CoglTextureFlags flags);
|
||||||
CoglHandle meta_create_texture_material (CoglHandle src_texture);
|
CoglPipeline * meta_create_texture_pipeline (CoglTexture *texture);
|
||||||
|
|
||||||
#endif /* __META_COGL_UTILS_H__ */
|
#endif /* __META_COGL_UTILS_H__ */
|
||||||
|
@@ -17,55 +17,59 @@ struct _MetaCompositor
|
|||||||
{
|
{
|
||||||
MetaDisplay *display;
|
MetaDisplay *display;
|
||||||
|
|
||||||
Atom atom_x_root_pixmap;
|
|
||||||
Atom atom_x_set_root;
|
|
||||||
Atom atom_net_wm_window_opacity;
|
|
||||||
guint repaint_func_id;
|
guint repaint_func_id;
|
||||||
|
|
||||||
ClutterActor *shadow_src;
|
ClutterActor *shadow_src;
|
||||||
|
|
||||||
MetaPlugin *modal_plugin;
|
MetaPlugin *modal_plugin;
|
||||||
|
|
||||||
gboolean show_redraw : 1;
|
gint64 server_time_query_time;
|
||||||
gboolean debug : 1;
|
gint64 server_time_offset;
|
||||||
gboolean no_mipmaps : 1;
|
|
||||||
|
guint server_time_is_monotonic_time : 1;
|
||||||
|
guint show_redraw : 1;
|
||||||
|
guint debug : 1;
|
||||||
|
guint no_mipmaps : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaCompScreen
|
struct _MetaCompScreen
|
||||||
{
|
{
|
||||||
MetaScreen *screen;
|
MetaScreen *screen;
|
||||||
|
|
||||||
ClutterActor *stage, *window_group, *overlay_group;
|
ClutterActor *stage, *window_group, *top_window_group, *overlay_group;
|
||||||
ClutterActor *background_actor;
|
ClutterActor *background_actor;
|
||||||
ClutterActor *hidden_group;
|
|
||||||
GList *windows;
|
GList *windows;
|
||||||
GHashTable *windows_by_xid;
|
GHashTable *windows_by_xid;
|
||||||
Window output;
|
Window output;
|
||||||
|
|
||||||
/* Used for unredirecting fullscreen windows */
|
CoglOnscreen *onscreen;
|
||||||
guint disable_unredirect_count;
|
CoglFrameClosure *frame_closure;
|
||||||
MetaWindowActor *unredirected_window;
|
|
||||||
|
|
||||||
/* Before we create the output window */
|
/* Used for unredirecting fullscreen windows */
|
||||||
XserverRegion pending_input_region;
|
guint disable_unredirect_count;
|
||||||
|
MetaWindow *unredirected_window;
|
||||||
|
|
||||||
gint switch_workspace_in_progress;
|
gint switch_workspace_in_progress;
|
||||||
|
|
||||||
MetaPluginManager *plugin_mgr;
|
MetaPluginManager *plugin_mgr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Wait 2ms after vblank before starting to draw next frame */
|
||||||
|
#define META_SYNC_DELAY 2
|
||||||
|
|
||||||
void meta_switch_workspace_completed (MetaScreen *screen);
|
void meta_switch_workspace_completed (MetaScreen *screen);
|
||||||
|
|
||||||
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
|
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
|
||||||
MetaPlugin *plugin,
|
MetaPlugin *plugin,
|
||||||
Window grab_window,
|
|
||||||
Cursor cursor,
|
|
||||||
MetaModalOptions options,
|
MetaModalOptions options,
|
||||||
guint32 timestamp);
|
guint32 timestamp);
|
||||||
void meta_end_modal_for_plugin (MetaScreen *screen,
|
void meta_end_modal_for_plugin (MetaScreen *screen,
|
||||||
MetaPlugin *plugin,
|
MetaPlugin *plugin,
|
||||||
guint32 timestamp);
|
guint32 timestamp);
|
||||||
|
|
||||||
|
gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
|
||||||
|
gint64 monotonic_time);
|
||||||
|
|
||||||
void meta_check_end_modal (MetaScreen *screen);
|
void meta_check_end_modal (MetaScreen *screen);
|
||||||
|
|
||||||
#endif /* META_COMPOSITOR_PRIVATE_H */
|
#endif /* META_COMPOSITOR_PRIVATE_H */
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,10 +6,6 @@
|
|||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
#include <meta/meta-background-actor.h>
|
#include <meta/meta-background-actor.h>
|
||||||
|
|
||||||
void meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
cairo_region_t *meta_background_actor_get_clip_region (MetaBackgroundActor *self);
|
||||||
cairo_region_t *visible_region);
|
|
||||||
|
|
||||||
void meta_background_actor_update (MetaScreen *screen);
|
|
||||||
void meta_background_actor_screen_size_changed (MetaScreen *screen);
|
|
||||||
|
|
||||||
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
/*
|
/*
|
||||||
* meta-background-actor.c: Actor for painting the root window background
|
|
||||||
*
|
|
||||||
* Copyright 2009 Sander Dijkhuis
|
* Copyright 2009 Sander Dijkhuis
|
||||||
* Copyright 2010 Red Hat, Inc.
|
* Copyright 2010 Red Hat, Inc.
|
||||||
*
|
*
|
||||||
@@ -16,19 +14,22 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*
|
*
|
||||||
* Portions adapted from gnome-shell/src/shell-global.c
|
* Portions adapted from gnome-shell/src/shell-global.c
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-background-actor
|
||||||
|
* @title: MetaBackgroundActor
|
||||||
|
* @short_description: Actor for painting the root window background
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
|
||||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
@@ -36,222 +37,37 @@
|
|||||||
#include "cogl-utils.h"
|
#include "cogl-utils.h"
|
||||||
#include "compositor-private.h"
|
#include "compositor-private.h"
|
||||||
#include <meta/errors.h>
|
#include <meta/errors.h>
|
||||||
|
#include <meta/meta-background.h>
|
||||||
#include "meta-background-actor-private.h"
|
#include "meta-background-actor-private.h"
|
||||||
|
#include "meta-cullable.h"
|
||||||
/* We allow creating multiple MetaBackgroundActors for the same MetaScreen to
|
|
||||||
* allow different rendering options to be set for different copies.
|
|
||||||
* But we want to share the same underlying CoglTexture for efficiency and
|
|
||||||
* to avoid driver bugs that might occur if we created multiple CoglTexturePixmaps
|
|
||||||
* for the same pixmap.
|
|
||||||
*
|
|
||||||
* This structure holds common information.
|
|
||||||
*/
|
|
||||||
typedef struct _MetaScreenBackground MetaScreenBackground;
|
|
||||||
|
|
||||||
struct _MetaScreenBackground
|
|
||||||
{
|
|
||||||
MetaScreen *screen;
|
|
||||||
GSList *actors;
|
|
||||||
|
|
||||||
float texture_width;
|
|
||||||
float texture_height;
|
|
||||||
CoglTexture *texture;
|
|
||||||
CoglMaterialWrapMode wrap_mode;
|
|
||||||
guint have_pixmap : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaBackgroundActorPrivate
|
struct _MetaBackgroundActorPrivate
|
||||||
{
|
{
|
||||||
MetaScreenBackground *background;
|
cairo_region_t *clip_region;
|
||||||
CoglPipeline *pipeline;
|
|
||||||
|
|
||||||
cairo_region_t *visible_region;
|
|
||||||
float dim_factor;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
static void cullable_iface_init (MetaCullableInterface *iface);
|
||||||
{
|
|
||||||
PROP_0,
|
|
||||||
|
|
||||||
PROP_DIM_FACTOR,
|
G_DEFINE_TYPE_WITH_CODE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR,
|
||||||
|
G_IMPLEMENT_INTERFACE (META_TYPE_CULLABLE, cullable_iface_init));
|
||||||
PROP_LAST
|
|
||||||
};
|
|
||||||
|
|
||||||
static GParamSpec *obj_props[PROP_LAST];
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
|
|
||||||
|
|
||||||
static void set_texture (MetaScreenBackground *background,
|
|
||||||
CoglHandle texture);
|
|
||||||
static void set_texture_to_stage_color (MetaScreenBackground *background);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_notify_stage_color (GObject *stage,
|
set_clip_region (MetaBackgroundActor *self,
|
||||||
GParamSpec *pspec,
|
cairo_region_t *clip_region)
|
||||||
MetaScreenBackground *background)
|
|
||||||
{
|
|
||||||
if (!background->have_pixmap)
|
|
||||||
set_texture_to_stage_color (background);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
free_screen_background (MetaScreenBackground *background)
|
|
||||||
{
|
|
||||||
set_texture (background, COGL_INVALID_HANDLE);
|
|
||||||
|
|
||||||
if (background->screen != NULL)
|
|
||||||
{
|
|
||||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
|
||||||
g_signal_handlers_disconnect_by_func (stage,
|
|
||||||
(gpointer) on_notify_stage_color,
|
|
||||||
background);
|
|
||||||
background->screen = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static MetaScreenBackground *
|
|
||||||
meta_screen_background_get (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
MetaScreenBackground *background;
|
|
||||||
|
|
||||||
background = g_object_get_data (G_OBJECT (screen), "meta-screen-background");
|
|
||||||
if (background == NULL)
|
|
||||||
{
|
|
||||||
ClutterActor *stage;
|
|
||||||
|
|
||||||
background = g_new0 (MetaScreenBackground, 1);
|
|
||||||
|
|
||||||
background->screen = screen;
|
|
||||||
g_object_set_data_full (G_OBJECT (screen), "meta-screen-background",
|
|
||||||
background, (GDestroyNotify) free_screen_background);
|
|
||||||
|
|
||||||
stage = meta_get_stage_for_screen (screen);
|
|
||||||
g_signal_connect (stage, "notify::color",
|
|
||||||
G_CALLBACK (on_notify_stage_color), background);
|
|
||||||
|
|
||||||
meta_background_actor_update (screen);
|
|
||||||
}
|
|
||||||
|
|
||||||
return background;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
update_wrap_mode_of_actor (MetaBackgroundActor *self)
|
|
||||||
{
|
{
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
MetaBackgroundActorPrivate *priv = self->priv;
|
||||||
|
|
||||||
cogl_pipeline_set_layer_wrap_mode (priv->pipeline, 0, priv->background->wrap_mode);
|
g_clear_pointer (&priv->clip_region, (GDestroyNotify) cairo_region_destroy);
|
||||||
}
|
if (clip_region)
|
||||||
|
priv->clip_region = cairo_region_copy (clip_region);
|
||||||
static void
|
|
||||||
update_wrap_mode (MetaScreenBackground *background)
|
|
||||||
{
|
|
||||||
GSList *l;
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
meta_screen_get_size (background->screen, &width, &height);
|
|
||||||
|
|
||||||
/* We turn off repeating when we have a full-screen pixmap to keep from
|
|
||||||
* getting artifacts from one side of the image sneaking into the other
|
|
||||||
* side of the image via bilinear filtering.
|
|
||||||
*/
|
|
||||||
if (width == background->texture_width && height == background->texture_height)
|
|
||||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE;
|
|
||||||
else
|
|
||||||
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_REPEAT;
|
|
||||||
|
|
||||||
for (l = background->actors; l; l = l->next)
|
|
||||||
update_wrap_mode_of_actor (l->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_texture_on_actor (MetaBackgroundActor *self)
|
|
||||||
{
|
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
MetaDisplay *display = meta_screen_get_display (priv->background->screen);
|
|
||||||
|
|
||||||
/* This may trigger destruction of an old texture pixmap, which, if
|
|
||||||
* the underlying X pixmap is already gone has the tendency to trigger
|
|
||||||
* X errors inside DRI. For safety, trap errors */
|
|
||||||
meta_error_trap_push (display);
|
|
||||||
cogl_pipeline_set_layer_texture (priv->pipeline, 0, priv->background->texture);
|
|
||||||
meta_error_trap_pop (display);
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_texture (MetaScreenBackground *background,
|
|
||||||
CoglHandle texture)
|
|
||||||
{
|
|
||||||
MetaDisplay *display = meta_screen_get_display (background->screen);
|
|
||||||
GSList *l;
|
|
||||||
|
|
||||||
/* This may trigger destruction of an old texture pixmap, which, if
|
|
||||||
* the underlying X pixmap is already gone has the tendency to trigger
|
|
||||||
* X errors inside DRI. For safety, trap errors */
|
|
||||||
meta_error_trap_push (display);
|
|
||||||
if (background->texture != COGL_INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
cogl_handle_unref (background->texture);
|
|
||||||
background->texture = COGL_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
meta_error_trap_pop (display);
|
|
||||||
|
|
||||||
if (texture != COGL_INVALID_HANDLE)
|
|
||||||
background->texture = cogl_handle_ref (texture);
|
|
||||||
|
|
||||||
background->texture_width = cogl_texture_get_width (background->texture);
|
|
||||||
background->texture_height = cogl_texture_get_height (background->texture);
|
|
||||||
|
|
||||||
for (l = background->actors; l; l = l->next)
|
|
||||||
set_texture_on_actor (l->data);
|
|
||||||
|
|
||||||
update_wrap_mode (background);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sets our pipeline to paint with a 1x1 texture of the stage's background
|
|
||||||
* color; doing this when we have no pixmap allows the application to turn
|
|
||||||
* off painting the stage. There might be a performance benefit to
|
|
||||||
* painting in this case with a solid color, but the normal solid color
|
|
||||||
* case is a 1x1 root pixmap, so we'd have to reverse-engineer that to
|
|
||||||
* actually pick up the (small?) performance win. This is just a fallback.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
set_texture_to_stage_color (MetaScreenBackground *background)
|
|
||||||
{
|
|
||||||
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
|
|
||||||
ClutterColor color;
|
|
||||||
CoglHandle texture;
|
|
||||||
|
|
||||||
clutter_stage_get_color (CLUTTER_STAGE (stage), &color);
|
|
||||||
|
|
||||||
/* Slicing will prevent COGL from using hardware texturing for
|
|
||||||
* the tiled 1x1 pixmap, and will cause it to draw the window
|
|
||||||
* background in millions of separate 1x1 rectangles */
|
|
||||||
texture = meta_create_color_texture_4ub (color.red, color.green,
|
|
||||||
color.blue, 0xff,
|
|
||||||
COGL_TEXTURE_NO_SLICING);
|
|
||||||
set_texture (background, texture);
|
|
||||||
cogl_handle_unref (texture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_background_actor_dispose (GObject *object)
|
meta_background_actor_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
|
|
||||||
meta_background_actor_set_visible_region (self, NULL);
|
set_clip_region (self, NULL);
|
||||||
|
|
||||||
if (priv->background != NULL)
|
|
||||||
{
|
|
||||||
priv->background->actors = g_slist_remove (priv->background->actors, self);
|
|
||||||
priv->background = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_clear_pointer(&priv->pipeline, cogl_object_unref);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
|
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
@@ -262,11 +78,15 @@ meta_background_actor_get_preferred_width (ClutterActor *actor,
|
|||||||
gfloat *min_width_p,
|
gfloat *min_width_p,
|
||||||
gfloat *natural_width_p)
|
gfloat *natural_width_p)
|
||||||
{
|
{
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
ClutterContent *content;
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
gfloat width;
|
||||||
int width, height;
|
|
||||||
|
|
||||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
content = clutter_actor_get_content (actor);
|
||||||
|
|
||||||
|
if (content)
|
||||||
|
clutter_content_get_preferred_size (content, &width, NULL);
|
||||||
|
else
|
||||||
|
width = 0;
|
||||||
|
|
||||||
if (min_width_p)
|
if (min_width_p)
|
||||||
*min_width_p = width;
|
*min_width_p = width;
|
||||||
@@ -281,11 +101,15 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
|
|||||||
gfloat *natural_height_p)
|
gfloat *natural_height_p)
|
||||||
|
|
||||||
{
|
{
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
ClutterContent *content;
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
gfloat height;
|
||||||
int width, height;
|
|
||||||
|
|
||||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
content = clutter_actor_get_content (actor);
|
||||||
|
|
||||||
|
if (content)
|
||||||
|
clutter_content_get_preferred_size (content, NULL, &height);
|
||||||
|
else
|
||||||
|
height = 0;
|
||||||
|
|
||||||
if (min_height_p)
|
if (min_height_p)
|
||||||
*min_height_p = height;
|
*min_height_p = height;
|
||||||
@@ -293,413 +117,100 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
|
|||||||
*natural_height_p = height;
|
*natural_height_p = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
meta_background_actor_paint (ClutterActor *actor)
|
|
||||||
{
|
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
guint8 opacity = clutter_actor_get_paint_opacity (actor);
|
|
||||||
guint8 color_component;
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
|
||||||
|
|
||||||
color_component = (int)(0.5 + opacity * priv->dim_factor);
|
|
||||||
|
|
||||||
cogl_pipeline_set_color4ub (priv->pipeline,
|
|
||||||
color_component,
|
|
||||||
color_component,
|
|
||||||
color_component,
|
|
||||||
opacity);
|
|
||||||
|
|
||||||
cogl_set_source (priv->pipeline);
|
|
||||||
|
|
||||||
if (priv->visible_region)
|
|
||||||
{
|
|
||||||
int n_rectangles = cairo_region_num_rectangles (priv->visible_region);
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < n_rectangles; i++)
|
|
||||||
{
|
|
||||||
cairo_rectangle_int_t rect;
|
|
||||||
cairo_region_get_rectangle (priv->visible_region, i, &rect);
|
|
||||||
|
|
||||||
cogl_rectangle_with_texture_coords (rect.x, rect.y,
|
|
||||||
rect.x + rect.width, rect.y + rect.height,
|
|
||||||
rect.x / priv->background->texture_width,
|
|
||||||
rect.y / priv->background->texture_height,
|
|
||||||
(rect.x + rect.width) / priv->background->texture_width,
|
|
||||||
(rect.y + rect.height) / priv->background->texture_height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cogl_rectangle_with_texture_coords (0.0f, 0.0f,
|
|
||||||
width, height,
|
|
||||||
0.0f, 0.0f,
|
|
||||||
width / priv->background->texture_width,
|
|
||||||
height / priv->background->texture_height);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_background_actor_get_paint_volume (ClutterActor *actor,
|
|
||||||
ClutterPaintVolume *volume)
|
|
||||||
{
|
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
|
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
meta_screen_get_size (priv->background->screen, &width, &height);
|
|
||||||
|
|
||||||
clutter_paint_volume_set_width (volume, width);
|
|
||||||
clutter_paint_volume_set_height (volume, height);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_background_actor_set_dim_factor (MetaBackgroundActor *self,
|
|
||||||
gfloat dim_factor)
|
|
||||||
{
|
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
|
|
||||||
if (priv->dim_factor == dim_factor)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->dim_factor = dim_factor;
|
|
||||||
|
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
|
|
||||||
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_DIM_FACTOR]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_background_actor_get_property(GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
|
||||||
MetaBackgroundActorPrivate *priv = self->priv;
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_DIM_FACTOR:
|
|
||||||
g_value_set_float (value, priv->dim_factor);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_background_actor_set_property(GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_DIM_FACTOR:
|
|
||||||
meta_background_actor_set_dim_factor (self, g_value_get_float (value));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_background_actor_class_init (MetaBackgroundActorClass *klass)
|
meta_background_actor_class_init (MetaBackgroundActorClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||||
GParamSpec *pspec;
|
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate));
|
g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate));
|
||||||
|
|
||||||
object_class->dispose = meta_background_actor_dispose;
|
object_class->dispose = meta_background_actor_dispose;
|
||||||
object_class->get_property = meta_background_actor_get_property;
|
|
||||||
object_class->set_property = meta_background_actor_set_property;
|
|
||||||
|
|
||||||
actor_class->get_preferred_width = meta_background_actor_get_preferred_width;
|
actor_class->get_preferred_width = meta_background_actor_get_preferred_width;
|
||||||
actor_class->get_preferred_height = meta_background_actor_get_preferred_height;
|
actor_class->get_preferred_height = meta_background_actor_get_preferred_height;
|
||||||
actor_class->paint = meta_background_actor_paint;
|
|
||||||
actor_class->get_paint_volume = meta_background_actor_get_paint_volume;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MetaBackgroundActor:dim-factor:
|
|
||||||
*
|
|
||||||
* Factor to dim the background by, between 0.0 (black) and 1.0 (original
|
|
||||||
* colors)
|
|
||||||
*/
|
|
||||||
pspec = g_param_spec_float ("dim-factor",
|
|
||||||
"Dim factor",
|
|
||||||
"Factor to dim the background by",
|
|
||||||
0.0, 1.0,
|
|
||||||
1.0,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
obj_props[PROP_DIM_FACTOR] = pspec;
|
|
||||||
g_object_class_install_property (object_class, PROP_DIM_FACTOR, pspec);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_background_actor_init (MetaBackgroundActor *self)
|
meta_background_actor_init (MetaBackgroundActor *self)
|
||||||
{
|
{
|
||||||
MetaBackgroundActorPrivate *priv;
|
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||||
|
META_TYPE_BACKGROUND_ACTOR,
|
||||||
priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
MetaBackgroundActorPrivate);
|
||||||
META_TYPE_BACKGROUND_ACTOR,
|
|
||||||
MetaBackgroundActorPrivate);
|
|
||||||
priv->dim_factor = 1.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_background_actor_new:
|
* meta_background_actor_new:
|
||||||
* @screen: the #MetaScreen
|
|
||||||
*
|
*
|
||||||
* Creates a new actor to draw the background for the given screen.
|
* Creates a new actor to draw the background for the given monitor.
|
||||||
|
* This actor should be associated with a #MetaBackground using
|
||||||
|
* clutter_actor_set_content()
|
||||||
*
|
*
|
||||||
* Return value: the newly created background actor
|
* Return value: the newly created background actor
|
||||||
*/
|
*/
|
||||||
ClutterActor *
|
ClutterActor *
|
||||||
meta_background_actor_new_for_screen (MetaScreen *screen)
|
meta_background_actor_new (void)
|
||||||
{
|
{
|
||||||
MetaBackgroundActor *self;
|
MetaBackgroundActor *self;
|
||||||
MetaBackgroundActorPrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (META_IS_SCREEN (screen), NULL);
|
|
||||||
|
|
||||||
self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL);
|
self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL);
|
||||||
priv = self->priv;
|
|
||||||
|
|
||||||
priv->background = meta_screen_background_get (screen);
|
|
||||||
priv->background->actors = g_slist_prepend (priv->background->actors, self);
|
|
||||||
|
|
||||||
/* A CoglMaterial and a CoglPipeline are the same thing */
|
|
||||||
priv->pipeline = (CoglPipeline*) meta_create_texture_material (NULL);
|
|
||||||
|
|
||||||
set_texture_on_actor (self);
|
|
||||||
update_wrap_mode_of_actor (self);
|
|
||||||
|
|
||||||
return CLUTTER_ACTOR (self);
|
return CLUTTER_ACTOR (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
static void
|
||||||
* meta_background_actor_update:
|
meta_background_actor_cull_out (MetaCullable *cullable,
|
||||||
* @screen: a #MetaScreen
|
cairo_region_t *unobscured_region,
|
||||||
*
|
cairo_region_t *clip_region)
|
||||||
* Refetches the _XROOTPMAP_ID property for the root window and updates
|
|
||||||
* the contents of the background actor based on that. There's no attempt
|
|
||||||
* to optimize out pixmap values that don't change (since a root pixmap
|
|
||||||
* could be replaced by with another pixmap with the same ID under some
|
|
||||||
* circumstances), so this should only be called when we actually receive
|
|
||||||
* a PropertyNotify event for the property.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
meta_background_actor_update (MetaScreen *screen)
|
|
||||||
{
|
{
|
||||||
MetaScreenBackground *background;
|
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (cullable);
|
||||||
MetaDisplay *display;
|
set_clip_region (self, clip_region);
|
||||||
MetaCompositor *compositor;
|
}
|
||||||
Atom type;
|
|
||||||
int format;
|
|
||||||
gulong nitems;
|
|
||||||
gulong bytes_after;
|
|
||||||
guchar *data;
|
|
||||||
Pixmap root_pixmap_id;
|
|
||||||
|
|
||||||
background = meta_screen_background_get (screen);
|
static void
|
||||||
display = meta_screen_get_display (screen);
|
meta_background_actor_reset_culling (MetaCullable *cullable)
|
||||||
compositor = meta_display_get_compositor (display);
|
{
|
||||||
|
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (cullable);
|
||||||
|
set_clip_region (self, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
root_pixmap_id = None;
|
static void
|
||||||
if (!XGetWindowProperty (meta_display_get_xdisplay (display),
|
cullable_iface_init (MetaCullableInterface *iface)
|
||||||
meta_screen_get_xroot (screen),
|
{
|
||||||
compositor->atom_x_root_pixmap,
|
iface->cull_out = meta_background_actor_cull_out;
|
||||||
0, LONG_MAX,
|
iface->reset_culling = meta_background_actor_reset_culling;
|
||||||
False,
|
|
||||||
AnyPropertyType,
|
|
||||||
&type, &format, &nitems, &bytes_after, &data) &&
|
|
||||||
type != None)
|
|
||||||
{
|
|
||||||
/* Got a property. */
|
|
||||||
if (type == XA_PIXMAP && format == 32 && nitems == 1)
|
|
||||||
{
|
|
||||||
/* Was what we expected. */
|
|
||||||
root_pixmap_id = *(Pixmap *)data;
|
|
||||||
}
|
|
||||||
|
|
||||||
XFree(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (root_pixmap_id != None)
|
|
||||||
{
|
|
||||||
CoglHandle texture;
|
|
||||||
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
meta_error_trap_push (display);
|
|
||||||
texture = cogl_texture_pixmap_x11_new (ctx, root_pixmap_id, FALSE, &error);
|
|
||||||
meta_error_trap_pop (display);
|
|
||||||
|
|
||||||
if (texture != COGL_INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
set_texture (background, texture);
|
|
||||||
cogl_handle_unref (texture);
|
|
||||||
|
|
||||||
background->have_pixmap = True;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_warning ("Failed to create background texture from pixmap: %s",
|
|
||||||
error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background->have_pixmap = False;
|
|
||||||
set_texture_to_stage_color (background);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_background_actor_set_visible_region:
|
* meta_background_actor_get_clip_region:
|
||||||
* @self: a #MetaBackgroundActor
|
* @self: a #MetaBackgroundActor
|
||||||
* @visible_region: (allow-none): the area of the actor (in allocate-relative
|
|
||||||
* coordinates) that is visible.
|
|
||||||
*
|
*
|
||||||
* Sets the area of the background that is unobscured by overlapping windows.
|
* Return value (transfer full): a #cairo_region_t that represents the part of
|
||||||
* This is used to optimize and only paint the visible portions.
|
* the background not obscured by other #MetaBackgroundActor or
|
||||||
|
* #MetaWindowActor objects.
|
||||||
*/
|
*/
|
||||||
void
|
cairo_region_t *
|
||||||
meta_background_actor_set_visible_region (MetaBackgroundActor *self,
|
meta_background_actor_get_clip_region (MetaBackgroundActor *self)
|
||||||
cairo_region_t *visible_region)
|
|
||||||
{
|
{
|
||||||
MetaBackgroundActorPrivate *priv;
|
MetaBackgroundActorPrivate *priv = self->priv;
|
||||||
|
ClutterActorBox content_box;
|
||||||
|
cairo_rectangle_int_t content_area = { 0 };
|
||||||
|
cairo_region_t *clip_region;
|
||||||
|
|
||||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (self));
|
g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL);
|
||||||
|
|
||||||
priv = self->priv;
|
if (!priv->clip_region)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (priv->visible_region)
|
clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box);
|
||||||
{
|
|
||||||
cairo_region_destroy (priv->visible_region);
|
|
||||||
priv->visible_region = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (visible_region)
|
content_area.x = content_box.x1;
|
||||||
{
|
content_area.y = content_box.y1;
|
||||||
cairo_rectangle_int_t screen_rect = { 0 };
|
content_area.width = content_box.x2 - content_box.x1;
|
||||||
meta_screen_get_size (priv->background->screen, &screen_rect.width, &screen_rect.height);
|
content_area.height = content_box.y2 - content_box.y1;
|
||||||
|
|
||||||
/* Doing the intersection here is probably unnecessary - MetaWindowGroup
|
clip_region = cairo_region_create_rectangle (&content_area);
|
||||||
* should never compute a visible area that's larger than the root screen!
|
cairo_region_intersect (clip_region, priv->clip_region);
|
||||||
* but it's not that expensive and adds some extra robustness.
|
|
||||||
*/
|
return clip_region;
|
||||||
priv->visible_region = cairo_region_create_rectangle (&screen_rect);
|
|
||||||
cairo_region_intersect (priv->visible_region, visible_region);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_background_actor_screen_size_changed:
|
|
||||||
* @screen: a #MetaScreen
|
|
||||||
*
|
|
||||||
* Called by the compositor when the size of the #MetaScreen changes
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
meta_background_actor_screen_size_changed (MetaScreen *screen)
|
|
||||||
{
|
|
||||||
MetaScreenBackground *background = meta_screen_background_get (screen);
|
|
||||||
GSList *l;
|
|
||||||
|
|
||||||
update_wrap_mode (background);
|
|
||||||
|
|
||||||
for (l = background->actors; l; l = l->next)
|
|
||||||
clutter_actor_queue_relayout (l->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_background_actor_add_glsl_snippet:
|
|
||||||
* @actor: a #MetaBackgroundActor
|
|
||||||
* @hook: where to insert the code
|
|
||||||
* @declarations: GLSL declarations
|
|
||||||
* @code: GLSL code
|
|
||||||
* @is_replace: wheter Cogl code should be replaced by the custom shader
|
|
||||||
*
|
|
||||||
* Adds a GLSL snippet to the pipeline used for drawing the background.
|
|
||||||
* See #CoglSnippet for details.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
meta_background_actor_add_glsl_snippet (MetaBackgroundActor *actor,
|
|
||||||
MetaSnippetHook hook,
|
|
||||||
const char *declarations,
|
|
||||||
const char *code,
|
|
||||||
gboolean is_replace)
|
|
||||||
{
|
|
||||||
MetaBackgroundActorPrivate *priv;
|
|
||||||
CoglSnippet *snippet;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (actor));
|
|
||||||
|
|
||||||
priv = actor->priv;
|
|
||||||
|
|
||||||
if (is_replace)
|
|
||||||
{
|
|
||||||
snippet = cogl_snippet_new (hook, declarations, NULL);
|
|
||||||
cogl_snippet_set_replace (snippet, code);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
snippet = cogl_snippet_new (hook, declarations, code);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hook == META_SNIPPET_HOOK_VERTEX ||
|
|
||||||
hook == META_SNIPPET_HOOK_FRAGMENT)
|
|
||||||
cogl_pipeline_add_snippet (priv->pipeline, snippet);
|
|
||||||
else
|
|
||||||
cogl_pipeline_add_layer_snippet (priv->pipeline, 0, snippet);
|
|
||||||
|
|
||||||
cogl_object_unref (snippet);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_background_actor_set_uniform_float:
|
|
||||||
* @actor: a #MetaBackgroundActor
|
|
||||||
* @uniform_name:
|
|
||||||
* @n_components: number of components (for vector uniforms)
|
|
||||||
* @count: number of uniforms (for array uniforms)
|
|
||||||
* @uniform: (array length=uniform_length): the float values to set
|
|
||||||
* @uniform_length: the length of @uniform. Must be exactly @n_components x @count,
|
|
||||||
* and is provided mainly for language bindings.
|
|
||||||
*
|
|
||||||
* Sets a new GLSL uniform to the provided value. This is mostly
|
|
||||||
* useful in congiunction with meta_background_actor_add_glsl_snippet().
|
|
||||||
*/
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_background_actor_set_uniform_float (MetaBackgroundActor *actor,
|
|
||||||
const char *uniform_name,
|
|
||||||
int n_components,
|
|
||||||
int count,
|
|
||||||
const float *uniform,
|
|
||||||
int uniform_length)
|
|
||||||
{
|
|
||||||
MetaBackgroundActorPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_BACKGROUND_ACTOR (actor));
|
|
||||||
g_return_if_fail (uniform_length == n_components * count);
|
|
||||||
|
|
||||||
priv = actor->priv;
|
|
||||||
|
|
||||||
cogl_pipeline_set_uniform_float (priv->pipeline,
|
|
||||||
cogl_pipeline_get_uniform_location (priv->pipeline,
|
|
||||||
uniform_name),
|
|
||||||
n_components, count, uniform);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
66
src/compositor/meta-background-group.c
Normal file
66
src/compositor/meta-background-group.c
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-background-group
|
||||||
|
* @title: MetaBackgroundGroup
|
||||||
|
* @short_description: Container for background actors
|
||||||
|
*
|
||||||
|
* This class is a subclass of ClutterActor with special handling for
|
||||||
|
* MetaBackgroundActor/MetaBackgroundGroup when painting children.
|
||||||
|
* It makes sure to only draw the parts of the backgrounds not
|
||||||
|
* occluded by opaque windows.
|
||||||
|
*
|
||||||
|
* See #MetaWindowGroup for more information behind the motivation,
|
||||||
|
* and details on implementation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <meta/meta-background-group.h>
|
||||||
|
#include "meta-cullable.h"
|
||||||
|
|
||||||
|
static void cullable_iface_init (MetaCullableInterface *iface);
|
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_CODE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_ACTOR,
|
||||||
|
G_IMPLEMENT_INTERFACE (META_TYPE_CULLABLE, cullable_iface_init));
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_background_group_class_init (MetaBackgroundGroupClass *klass)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_background_group_cull_out (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region)
|
||||||
|
{
|
||||||
|
meta_cullable_cull_out_children (cullable, unobscured_region, clip_region);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_background_group_reset_culling (MetaCullable *cullable)
|
||||||
|
{
|
||||||
|
meta_cullable_reset_culling_children (cullable);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cullable_iface_init (MetaCullableInterface *iface)
|
||||||
|
{
|
||||||
|
iface->cull_out = meta_background_group_cull_out;
|
||||||
|
iface->reset_culling = meta_background_group_reset_culling;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_background_group_init (MetaBackgroundGroup *self)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ClutterActor *
|
||||||
|
meta_background_group_new (void)
|
||||||
|
{
|
||||||
|
MetaBackgroundGroup *background_group;
|
||||||
|
|
||||||
|
background_group = g_object_new (META_TYPE_BACKGROUND_GROUP, NULL);
|
||||||
|
|
||||||
|
return CLUTTER_ACTOR (background_group);
|
||||||
|
}
|
1274
src/compositor/meta-background.c
Normal file
1274
src/compositor/meta-background.c
Normal file
File diff suppressed because it is too large
Load Diff
201
src/compositor/meta-cullable.c
Normal file
201
src/compositor/meta-cullable.c
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat
|
||||||
|
*
|
||||||
|
* 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Written by:
|
||||||
|
* Owen Taylor <otaylor@redhat.com>
|
||||||
|
* Ray Strode <rstrode@redhat.com>
|
||||||
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "meta-cullable.h"
|
||||||
|
#include "clutter-utils.h"
|
||||||
|
|
||||||
|
G_DEFINE_INTERFACE (MetaCullable, meta_cullable, CLUTTER_TYPE_ACTOR);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-cullable
|
||||||
|
* @title: MetaCullable
|
||||||
|
* @short_description: CPU culling operations for efficient drawing
|
||||||
|
*
|
||||||
|
* When we are painting a stack of 5-10 large actors, the standard
|
||||||
|
* bottom-to-top method of drawing every actor results in a tremendous
|
||||||
|
* amount of overdraw. If these actors are painting textures like
|
||||||
|
* windows, it can easily max out the available memory bandwidth on a
|
||||||
|
* low-end graphics chipset. It's even worse if window textures are
|
||||||
|
* being accessed over the AGP bus.
|
||||||
|
*
|
||||||
|
* #MetaCullable is our solution. The basic technique applied here is to
|
||||||
|
* do a pre-pass before painting where we walk each actor from top to bottom
|
||||||
|
* and ask each actor to "cull itself out". We pass in a region it can copy
|
||||||
|
* to clip its drawing to, and the actor can subtract its fully opaque pixels
|
||||||
|
* so that actors underneath know not to draw there as well.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_cullable_cull_out_children:
|
||||||
|
* @cullable: The #MetaCullable
|
||||||
|
* @unobscured_region: The unobscured region, as passed into cull_out()
|
||||||
|
* @clip_region: The clip region, as passed into cull_out()
|
||||||
|
*
|
||||||
|
* This is a helper method for actors that want to recurse over their
|
||||||
|
* child actors, and cull them out.
|
||||||
|
*
|
||||||
|
* See #MetaCullable and meta_cullable_cull_out() for more details.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_cullable_cull_out_children (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region)
|
||||||
|
{
|
||||||
|
ClutterActor *actor = CLUTTER_ACTOR (cullable);
|
||||||
|
ClutterActor *child;
|
||||||
|
ClutterActorIter iter;
|
||||||
|
|
||||||
|
clutter_actor_iter_init (&iter, actor);
|
||||||
|
while (clutter_actor_iter_prev (&iter, &child))
|
||||||
|
{
|
||||||
|
float x, y;
|
||||||
|
gboolean needs_culling;
|
||||||
|
|
||||||
|
if (!META_IS_CULLABLE (child))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
needs_culling = (unobscured_region != NULL && clip_region != NULL);
|
||||||
|
|
||||||
|
if (needs_culling && !CLUTTER_ACTOR_IS_VISIBLE (child))
|
||||||
|
needs_culling = FALSE;
|
||||||
|
|
||||||
|
/* If an actor has effects applied, then that can change the area
|
||||||
|
* it paints and the opacity, so we no longer can figure out what
|
||||||
|
* portion of the actor is obscured and what portion of the screen
|
||||||
|
* it obscures, so we skip the actor.
|
||||||
|
*
|
||||||
|
* This has a secondary beneficial effect: if a ClutterOffscreenEffect
|
||||||
|
* is applied to an actor, then our clipped redraws interfere with the
|
||||||
|
* caching of the FBO - even if we only need to draw a small portion
|
||||||
|
* of the window right now, ClutterOffscreenEffect may use other portions
|
||||||
|
* of the FBO later. So, skipping actors with effects applied also
|
||||||
|
* prevents these bugs.
|
||||||
|
*
|
||||||
|
* Theoretically, we should check clutter_actor_get_offscreen_redirect()
|
||||||
|
* as well for the same reason, but omitted for simplicity in the
|
||||||
|
* hopes that no-one will do that.
|
||||||
|
*/
|
||||||
|
if (needs_culling && clutter_actor_has_effects (child))
|
||||||
|
needs_culling = FALSE;
|
||||||
|
|
||||||
|
if (needs_culling && !meta_actor_is_untransformed (child, NULL, NULL))
|
||||||
|
needs_culling = FALSE;
|
||||||
|
|
||||||
|
if (needs_culling)
|
||||||
|
{
|
||||||
|
clutter_actor_get_position (child, &x, &y);
|
||||||
|
|
||||||
|
/* Temporarily move to the coordinate system of the actor */
|
||||||
|
cairo_region_translate (unobscured_region, - x, - y);
|
||||||
|
cairo_region_translate (clip_region, - x, - y);
|
||||||
|
|
||||||
|
meta_cullable_cull_out (META_CULLABLE (child), unobscured_region, clip_region);
|
||||||
|
|
||||||
|
cairo_region_translate (unobscured_region, x, y);
|
||||||
|
cairo_region_translate (clip_region, x, y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_cullable_cull_out (META_CULLABLE (child), NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_cullable_reset_culling_children:
|
||||||
|
* @cullable: The #MetaCullable
|
||||||
|
*
|
||||||
|
* This is a helper method for actors that want to recurse over their
|
||||||
|
* child actors, and cull them out.
|
||||||
|
*
|
||||||
|
* See #MetaCullable and meta_cullable_reset_culling() for more details.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_cullable_reset_culling_children (MetaCullable *cullable)
|
||||||
|
{
|
||||||
|
ClutterActor *actor = CLUTTER_ACTOR (cullable);
|
||||||
|
ClutterActor *child;
|
||||||
|
ClutterActorIter iter;
|
||||||
|
|
||||||
|
clutter_actor_iter_init (&iter, actor);
|
||||||
|
while (clutter_actor_iter_next (&iter, &child))
|
||||||
|
{
|
||||||
|
if (!META_IS_CULLABLE (child))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
meta_cullable_reset_culling (META_CULLABLE (child));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_cullable_default_init (MetaCullableInterface *iface)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_cullable_cull_out:
|
||||||
|
* @cullable: The #MetaCullable
|
||||||
|
* @unobscured_region: The unobscured region, in @cullable's space.
|
||||||
|
* @clip_region: The clip region, in @cullable's space.
|
||||||
|
*
|
||||||
|
* When #MetaWindowGroup is painted, we walk over its direct cullable
|
||||||
|
* children from top to bottom and ask themselves to "cull out". Cullables
|
||||||
|
* can use @unobscured_region and @clip_region to clip their drawing. Actors
|
||||||
|
* interested in eliminating overdraw should copy the @clip_region and only
|
||||||
|
* paint those parts, as everything else has been obscured by actors above it.
|
||||||
|
*
|
||||||
|
* Actors that may have fully opaque parts should also subtract out a region
|
||||||
|
* that is fully opaque from @unobscured_region and @clip_region.
|
||||||
|
*
|
||||||
|
* @unobscured_region and @clip_region are extremely similar. The difference
|
||||||
|
* is that @clip_region starts off with the stage's clip, if Clutter detects
|
||||||
|
* that we're doing a clipped redraw. @unobscured_region, however, starts off
|
||||||
|
* with the full stage size, so actors that may want to record what parts of
|
||||||
|
* their window are unobscured for e.g. scheduling repaints can do so.
|
||||||
|
*
|
||||||
|
* Actors that have children can also use the meta_cullable_cull_out_children()
|
||||||
|
* helper method to do a simple cull across all their children.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_cullable_cull_out (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region)
|
||||||
|
{
|
||||||
|
META_CULLABLE_GET_IFACE (cullable)->cull_out (cullable, unobscured_region, clip_region);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_cullable_reset_culling:
|
||||||
|
* @cullable: The #MetaCullable
|
||||||
|
*
|
||||||
|
* Actors that copied data in their cull_out() implementation can now
|
||||||
|
* reset their data, as the paint is now over. Additional paints may be
|
||||||
|
* done by #ClutterClone or similar, and they should not be affected by
|
||||||
|
* the culling operation.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
meta_cullable_reset_culling (MetaCullable *cullable)
|
||||||
|
{
|
||||||
|
META_CULLABLE_GET_IFACE (cullable)->reset_culling (cullable);
|
||||||
|
}
|
66
src/compositor/meta-cullable.h
Normal file
66
src/compositor/meta-cullable.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat
|
||||||
|
*
|
||||||
|
* 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, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Written by:
|
||||||
|
* Owen Taylor <otaylor@redhat.com>
|
||||||
|
* Ray Strode <rstrode@redhat.com>
|
||||||
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __META_CULLABLE_H__
|
||||||
|
#define __META_CULLABLE_H__
|
||||||
|
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define META_TYPE_CULLABLE (meta_cullable_get_type ())
|
||||||
|
#define META_CULLABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_CULLABLE, MetaCullable))
|
||||||
|
#define META_IS_CULLABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_CULLABLE))
|
||||||
|
#define META_CULLABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), META_TYPE_CULLABLE, MetaCullableInterface))
|
||||||
|
|
||||||
|
typedef struct _MetaCullable MetaCullable;
|
||||||
|
typedef struct _MetaCullableInterface MetaCullableInterface;
|
||||||
|
|
||||||
|
struct _MetaCullableInterface
|
||||||
|
{
|
||||||
|
GTypeInterface g_iface;
|
||||||
|
|
||||||
|
void (* cull_out) (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region);
|
||||||
|
void (* reset_culling) (MetaCullable *cullable);
|
||||||
|
};
|
||||||
|
|
||||||
|
GType meta_cullable_get_type (void);
|
||||||
|
|
||||||
|
void meta_cullable_cull_out (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region);
|
||||||
|
void meta_cullable_reset_culling (MetaCullable *cullable);
|
||||||
|
|
||||||
|
/* Utility methods for implementations */
|
||||||
|
void meta_cullable_cull_out_children (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region);
|
||||||
|
void meta_cullable_reset_culling_children (MetaCullable *cullable);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __META_CULLABLE_H__ */
|
||||||
|
|
@@ -16,9 +16,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <meta/meta-plugin.h>
|
#include <meta/meta-plugin.h>
|
||||||
@@ -192,10 +190,7 @@ meta_module_class_init (MetaModuleClass *klass)
|
|||||||
static void
|
static void
|
||||||
meta_module_init (MetaModule *self)
|
meta_module_init (MetaModule *self)
|
||||||
{
|
{
|
||||||
MetaModulePrivate *priv;
|
self->priv = META_MODULE_GET_PRIVATE (self);
|
||||||
|
|
||||||
self->priv = priv = META_MODULE_GET_PRIVATE (self);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GType
|
GType
|
||||||
|
@@ -16,9 +16,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef META_MODULE_H_
|
#ifndef META_MODULE_H_
|
||||||
|
@@ -16,9 +16,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@@ -85,12 +83,20 @@ meta_plugin_manager_load (const gchar *plugin_name)
|
|||||||
g_free (path);
|
g_free (path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_confirm_display_change (MetaMonitorManager *monitors,
|
||||||
|
MetaPluginManager *plugin_mgr)
|
||||||
|
{
|
||||||
|
meta_plugin_manager_confirm_display_change (plugin_mgr);
|
||||||
|
}
|
||||||
|
|
||||||
MetaPluginManager *
|
MetaPluginManager *
|
||||||
meta_plugin_manager_new (MetaScreen *screen)
|
meta_plugin_manager_new (MetaScreen *screen)
|
||||||
{
|
{
|
||||||
MetaPluginManager *plugin_mgr;
|
MetaPluginManager *plugin_mgr;
|
||||||
MetaPluginClass *klass;
|
MetaPluginClass *klass;
|
||||||
MetaPlugin *plugin;
|
MetaPlugin *plugin;
|
||||||
|
MetaMonitorManager *monitors;
|
||||||
|
|
||||||
plugin_mgr = g_new0 (MetaPluginManager, 1);
|
plugin_mgr = g_new0 (MetaPluginManager, 1);
|
||||||
plugin_mgr->screen = screen;
|
plugin_mgr->screen = screen;
|
||||||
@@ -101,6 +107,10 @@ meta_plugin_manager_new (MetaScreen *screen)
|
|||||||
if (klass->start)
|
if (klass->start)
|
||||||
klass->start (plugin);
|
klass->start (plugin);
|
||||||
|
|
||||||
|
monitors = meta_monitor_manager_get ();
|
||||||
|
g_signal_connect (monitors, "confirm-display-change",
|
||||||
|
G_CALLBACK (on_confirm_display_change), plugin_mgr);
|
||||||
|
|
||||||
return plugin_mgr;
|
return plugin_mgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,32 +304,64 @@ meta_plugin_manager_filter_keybinding (MetaPluginManager *plugin_mgr,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* The public method that the compositor hooks into for desktop switching.
|
|
||||||
*
|
|
||||||
* Returns TRUE if the plugin handled the event type (i.e.,
|
|
||||||
* if the return value is FALSE, there will be no subsequent call to the
|
|
||||||
* manager completed() callback, and the compositor must ensure that any
|
|
||||||
* appropriate post-effect cleanup is carried out.
|
|
||||||
*/
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
|
||||||
XEvent *xev)
|
XEvent *xev)
|
||||||
|
{
|
||||||
|
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||||
|
|
||||||
|
return _meta_plugin_xevent_filter (plugin, xev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_plugin_manager_confirm_display_change (MetaPluginManager *plugin_mgr)
|
||||||
{
|
{
|
||||||
MetaPlugin *plugin = plugin_mgr->plugin;
|
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||||
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||||
|
|
||||||
if (!plugin_mgr)
|
if (klass->confirm_display_change)
|
||||||
|
return klass->confirm_display_change (plugin);
|
||||||
|
else
|
||||||
|
return meta_plugin_complete_display_change (plugin, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_plugin_manager_show_tile_preview (MetaPluginManager *plugin_mgr,
|
||||||
|
MetaWindow *window,
|
||||||
|
MetaRectangle *tile_rect,
|
||||||
|
int tile_monitor_number)
|
||||||
|
{
|
||||||
|
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||||
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||||
|
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
|
||||||
|
|
||||||
|
if (display->display_opening)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* We need to make sure that clutter gets certain events, like
|
if (klass->show_tile_preview)
|
||||||
* ConfigureNotify on the stage window. If there is a plugin that
|
{
|
||||||
* provides an xevent_filter function, then it's the responsibility
|
klass->show_tile_preview (plugin, window, tile_rect, tile_monitor_number);
|
||||||
* of that plugin to pass events to Clutter. Otherwise, we send the
|
return TRUE;
|
||||||
* event directly to Clutter ourselves.
|
}
|
||||||
*/
|
|
||||||
if (klass->xevent_filter)
|
return FALSE;
|
||||||
return klass->xevent_filter (plugin, xev);
|
}
|
||||||
else
|
|
||||||
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
|
gboolean
|
||||||
|
meta_plugin_manager_hide_tile_preview (MetaPluginManager *plugin_mgr)
|
||||||
|
{
|
||||||
|
MetaPlugin *plugin = plugin_mgr->plugin;
|
||||||
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||||
|
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
|
||||||
|
|
||||||
|
if (display->display_opening)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (klass->hide_tile_preview)
|
||||||
|
{
|
||||||
|
klass->hide_tile_preview (plugin);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@@ -16,9 +16,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef META_PLUGIN_MANAGER_H_
|
#ifndef META_PLUGIN_MANAGER_H_
|
||||||
@@ -72,5 +70,14 @@ gboolean meta_plugin_manager_filter_keybinding (MetaPluginManager *mgr,
|
|||||||
|
|
||||||
gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr,
|
gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr,
|
||||||
XEvent *xev);
|
XEvent *xev);
|
||||||
|
gboolean _meta_plugin_xevent_filter (MetaPlugin *plugin,
|
||||||
|
XEvent *xev);
|
||||||
|
|
||||||
|
void meta_plugin_manager_confirm_display_change (MetaPluginManager *mgr);
|
||||||
|
|
||||||
|
gboolean meta_plugin_manager_show_tile_preview (MetaPluginManager *mgr,
|
||||||
|
MetaWindow *window,
|
||||||
|
MetaRectangle *tile_rect,
|
||||||
|
int tile_monitor_number);
|
||||||
|
gboolean meta_plugin_manager_hide_tile_preview (MetaPluginManager *mgr);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -16,15 +16,21 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
*/
|
||||||
* 02111-1307, USA.
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-plugin
|
||||||
|
* @title: MetaPlugin
|
||||||
|
* @short_description: Entry point for plugins
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <meta/meta-plugin.h>
|
#include <meta/meta-plugin.h>
|
||||||
#include "meta-plugin-manager.h"
|
#include "meta-plugin-manager.h"
|
||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
#include <meta/display.h>
|
#include <meta/display.h>
|
||||||
|
#include <meta/util.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
@@ -34,6 +40,7 @@
|
|||||||
|
|
||||||
#include "compositor-private.h"
|
#include "compositor-private.h"
|
||||||
#include "meta-window-actor-private.h"
|
#include "meta-window-actor-private.h"
|
||||||
|
#include "monitor-private.h"
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE (MetaPlugin, meta_plugin, G_TYPE_OBJECT);
|
G_DEFINE_ABSTRACT_TYPE (MetaPlugin, meta_plugin, G_TYPE_OBJECT);
|
||||||
|
|
||||||
@@ -130,9 +137,7 @@ meta_plugin_class_init (MetaPluginClass *klass)
|
|||||||
static void
|
static void
|
||||||
meta_plugin_init (MetaPlugin *self)
|
meta_plugin_init (MetaPlugin *self)
|
||||||
{
|
{
|
||||||
MetaPluginPrivate *priv;
|
self->priv = META_PLUGIN_GET_PRIVATE (self);
|
||||||
|
|
||||||
self->priv = priv = META_PLUGIN_GET_PRIVATE (self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
@@ -177,6 +182,28 @@ _meta_plugin_effect_started (MetaPlugin *plugin)
|
|||||||
priv->running++;
|
priv->running++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
_meta_plugin_xevent_filter (MetaPlugin *plugin,
|
||||||
|
XEvent *xev)
|
||||||
|
{
|
||||||
|
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
|
||||||
|
|
||||||
|
/* When mutter is running as a wayland compositor, things like input
|
||||||
|
* events just come directly from clutter so it won't have disabled
|
||||||
|
* clutter's event retrieval and won't need to forward it events (if
|
||||||
|
* it did it would lead to recursion). Also when running as a
|
||||||
|
* wayland compositor we shouldn't be assuming that we're running
|
||||||
|
* with the clutter x11 backend.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (klass->xevent_filter && klass->xevent_filter (plugin, xev))
|
||||||
|
return TRUE;
|
||||||
|
else if (!meta_is_wayland_compositor ())
|
||||||
|
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_plugin_switch_workspace_completed (MetaPlugin *plugin)
|
meta_plugin_switch_workspace_completed (MetaPlugin *plugin)
|
||||||
{
|
{
|
||||||
@@ -259,10 +286,6 @@ meta_plugin_destroy_completed (MetaPlugin *plugin,
|
|||||||
/**
|
/**
|
||||||
* meta_plugin_begin_modal:
|
* meta_plugin_begin_modal:
|
||||||
* @plugin: a #MetaPlugin
|
* @plugin: a #MetaPlugin
|
||||||
* @grab_window: the X window to grab the keyboard and mouse on
|
|
||||||
* @cursor: the cursor to use for the pointer grab, or None,
|
|
||||||
* to use the normal cursor for the grab window and
|
|
||||||
* its descendants.
|
|
||||||
* @options: flags that modify the behavior of the modal grab
|
* @options: flags that modify the behavior of the modal grab
|
||||||
* @timestamp: the timestamp used for establishing grabs
|
* @timestamp: the timestamp used for establishing grabs
|
||||||
*
|
*
|
||||||
@@ -283,15 +306,13 @@ meta_plugin_destroy_completed (MetaPlugin *plugin,
|
|||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
meta_plugin_begin_modal (MetaPlugin *plugin,
|
meta_plugin_begin_modal (MetaPlugin *plugin,
|
||||||
Window grab_window,
|
|
||||||
Cursor cursor,
|
|
||||||
MetaModalOptions options,
|
MetaModalOptions options,
|
||||||
guint32 timestamp)
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv;
|
MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv;
|
||||||
|
|
||||||
return meta_begin_modal_for_plugin (priv->screen, plugin,
|
return meta_begin_modal_for_plugin (priv->screen, plugin,
|
||||||
grab_window, cursor, options, timestamp);
|
options, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -331,3 +352,13 @@ meta_plugin_get_screen (MetaPlugin *plugin)
|
|||||||
|
|
||||||
return priv->screen;
|
return priv->screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_plugin_complete_display_change (MetaPlugin *plugin,
|
||||||
|
gboolean ok)
|
||||||
|
{
|
||||||
|
MetaMonitorManager *manager;
|
||||||
|
|
||||||
|
manager = meta_monitor_manager_get ();
|
||||||
|
meta_monitor_manager_confirm_configuration (manager, ok);
|
||||||
|
}
|
||||||
|
@@ -17,9 +17,7 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __META_SHADOW_FACTORY_PRIVATE_H__
|
#ifndef __META_SHADOW_FACTORY_PRIVATE_H__
|
||||||
@@ -40,7 +38,7 @@ typedef struct _MetaShadow MetaShadow;
|
|||||||
|
|
||||||
MetaShadow *meta_shadow_ref (MetaShadow *shadow);
|
MetaShadow *meta_shadow_ref (MetaShadow *shadow);
|
||||||
void meta_shadow_unref (MetaShadow *shadow);
|
void meta_shadow_unref (MetaShadow *shadow);
|
||||||
CoglHandle meta_shadow_get_texture (MetaShadow *shadow);
|
CoglTexture*meta_shadow_get_texture (MetaShadow *shadow);
|
||||||
void meta_shadow_paint (MetaShadow *shadow,
|
void meta_shadow_paint (MetaShadow *shadow,
|
||||||
int window_x,
|
int window_x,
|
||||||
int window_y,
|
int window_y,
|
||||||
|
@@ -1,9 +1,5 @@
|
|||||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
/*
|
/*
|
||||||
* MetaShadowFactory:
|
|
||||||
*
|
|
||||||
* Create and cache shadow textures for abritrary window shapes
|
|
||||||
*
|
|
||||||
* Copyright 2010 Red Hat, Inc.
|
* Copyright 2010 Red Hat, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
@@ -17,10 +13,15 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
* 02111-1307, USA.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-shadow-factory
|
||||||
|
* @title: MetaShadowFactory
|
||||||
|
* @short_description: Create and cache shadow textures for abritrary window shapes
|
||||||
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -65,8 +66,8 @@ struct _MetaShadow
|
|||||||
|
|
||||||
MetaShadowFactory *factory;
|
MetaShadowFactory *factory;
|
||||||
MetaShadowCacheKey key;
|
MetaShadowCacheKey key;
|
||||||
CoglHandle texture;
|
CoglTexture *texture;
|
||||||
CoglHandle material;
|
CoglPipeline *pipeline;
|
||||||
|
|
||||||
/* The outer order is the distance the shadow extends outside the window
|
/* The outer order is the distance the shadow extends outside the window
|
||||||
* shape; the inner border is the unscaled portion inside the window
|
* shape; the inner border is the unscaled portion inside the window
|
||||||
@@ -120,12 +121,12 @@ static guint signals[LAST_SIGNAL] = { 0 };
|
|||||||
/* The first element in this array also defines the default parameters
|
/* The first element in this array also defines the default parameters
|
||||||
* for newly created classes */
|
* for newly created classes */
|
||||||
MetaShadowClassInfo default_shadow_classes[] = {
|
MetaShadowClassInfo default_shadow_classes[] = {
|
||||||
{ "normal", { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
|
{ "normal", { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
|
||||||
{ "dialog", { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
|
{ "dialog", { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
|
||||||
{ "modal_dialog", { 6, -1, 0, 1, 255 }, { 3, -1, 0, 3, 128 } },
|
{ "modal_dialog", { 6, -1, 0, 1, 128 }, { 3, -1, 0, 3, 32 } },
|
||||||
{ "utility", { 3, -1, 0, 1, 255 }, { 3, -1, 0, 1, 128 } },
|
{ "utility", { 3, -1, 0, 1, 128 }, { 3, -1, 0, 1, 32 } },
|
||||||
{ "border", { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } },
|
{ "border", { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } },
|
||||||
{ "menu", { 6, -1, 0, 3, 255 }, { 3, -1, 0, 0, 128 } },
|
{ "menu", { 6, -1, 0, 3, 128 }, { 3, -1, 0, 0, 32 } },
|
||||||
|
|
||||||
{ "popup-menu", { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } },
|
{ "popup-menu", { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } },
|
||||||
|
|
||||||
@@ -175,8 +176,8 @@ meta_shadow_unref (MetaShadow *shadow)
|
|||||||
}
|
}
|
||||||
|
|
||||||
meta_window_shape_unref (shadow->key.shape);
|
meta_window_shape_unref (shadow->key.shape);
|
||||||
cogl_handle_unref (shadow->texture);
|
cogl_object_unref (shadow->texture);
|
||||||
cogl_handle_unref (shadow->material);
|
cogl_object_unref (shadow->pipeline);
|
||||||
|
|
||||||
g_slice_free (MetaShadow, shadow);
|
g_slice_free (MetaShadow, shadow);
|
||||||
}
|
}
|
||||||
@@ -218,10 +219,10 @@ meta_shadow_paint (MetaShadow *shadow,
|
|||||||
int dest_y[4];
|
int dest_y[4];
|
||||||
int n_x, n_y;
|
int n_x, n_y;
|
||||||
|
|
||||||
cogl_material_set_color4ub (shadow->material,
|
cogl_pipeline_set_color4ub (shadow->pipeline,
|
||||||
opacity, opacity, opacity, opacity);
|
opacity, opacity, opacity, opacity);
|
||||||
|
|
||||||
cogl_set_source (shadow->material);
|
cogl_set_source (shadow->pipeline);
|
||||||
|
|
||||||
if (shadow->scale_width)
|
if (shadow->scale_width)
|
||||||
{
|
{
|
||||||
@@ -801,7 +802,7 @@ make_shadow (MetaShadow *shadow,
|
|||||||
cairo_region_destroy (column_convolve_region);
|
cairo_region_destroy (column_convolve_region);
|
||||||
g_free (buffer);
|
g_free (buffer);
|
||||||
|
|
||||||
shadow->material = meta_create_texture_material (shadow->texture);
|
shadow->pipeline = meta_create_texture_pipeline (shadow->texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaShadowParams *
|
static MetaShadowParams *
|
||||||
|
39
src/compositor/meta-shaped-texture-private.h
Normal file
39
src/compositor/meta-shaped-texture-private.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* shaped texture
|
||||||
|
*
|
||||||
|
* An actor to draw a texture clipped to a list of rectangles
|
||||||
|
*
|
||||||
|
* Authored By Neil Roberts <neil@linux.intel.com>
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Intel Corporation
|
||||||
|
* 2013 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_SHAPED_TEXTURE_PRIVATE_H__
|
||||||
|
#define __META_SHAPED_TEXTURE_PRIVATE_H__
|
||||||
|
|
||||||
|
#include <meta/meta-shaped-texture.h>
|
||||||
|
|
||||||
|
ClutterActor *meta_shaped_texture_new (void);
|
||||||
|
void meta_shaped_texture_set_texture (MetaShapedTexture *stex,
|
||||||
|
CoglTexture *texture);
|
||||||
|
gboolean meta_shaped_texture_get_unobscured_bounds (MetaShapedTexture *stex,
|
||||||
|
cairo_rectangle_int_t *unobscured_bounds);
|
||||||
|
gboolean meta_shaped_texture_is_obscured (MetaShapedTexture *self);
|
||||||
|
|
||||||
|
#endif
|
@@ -1,8 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* shaped texture
|
|
||||||
*
|
|
||||||
* An actor to draw a masked texture.
|
|
||||||
*
|
|
||||||
* Authored By Neil Roberts <neil@linux.intel.com>
|
* Authored By Neil Roberts <neil@linux.intel.com>
|
||||||
* and Jasper St. Pierre <jstpierre@mecheye.net>
|
* and Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
*
|
*
|
||||||
@@ -20,29 +16,33 @@
|
|||||||
* General Public License for more details.
|
* General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
*/
|
||||||
* 02111-1307, USA.
|
|
||||||
|
/**
|
||||||
|
* SECTION:meta-shaped-texture
|
||||||
|
* @title: MetaShapedTexture
|
||||||
|
* @short_description: An actor to draw a masked texture.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
|
||||||
#define COGL_ENABLE_EXPERIMENTAL_API
|
|
||||||
|
|
||||||
#include <meta/meta-shaped-texture.h>
|
#include <meta/meta-shaped-texture.h>
|
||||||
|
#include <meta/util.h>
|
||||||
|
#include "clutter-utils.h"
|
||||||
#include "meta-texture-tower.h"
|
#include "meta-texture-tower.h"
|
||||||
|
|
||||||
|
#include "meta-shaped-texture-private.h"
|
||||||
|
#include "meta-window-actor-private.h"
|
||||||
|
|
||||||
#include <clutter/clutter.h>
|
#include <clutter/clutter.h>
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <cogl/cogl-texture-pixmap-x11.h>
|
|
||||||
#include <gdk/gdk.h> /* for gdk_rectangle_intersect() */
|
#include <gdk/gdk.h> /* for gdk_rectangle_intersect() */
|
||||||
|
#include "meta-cullable.h"
|
||||||
|
|
||||||
static void meta_shaped_texture_dispose (GObject *object);
|
static void meta_shaped_texture_dispose (GObject *object);
|
||||||
|
|
||||||
static void meta_shaped_texture_paint (ClutterActor *actor);
|
static void meta_shaped_texture_paint (ClutterActor *actor);
|
||||||
static void meta_shaped_texture_pick (ClutterActor *actor,
|
|
||||||
const ClutterColor *color);
|
|
||||||
|
|
||||||
static void meta_shaped_texture_get_preferred_width (ClutterActor *self,
|
static void meta_shaped_texture_get_preferred_width (ClutterActor *self,
|
||||||
gfloat for_height,
|
gfloat for_height,
|
||||||
@@ -56,8 +56,10 @@ static void meta_shaped_texture_get_preferred_height (ClutterActor *self,
|
|||||||
|
|
||||||
static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume);
|
static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume);
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
|
static void cullable_iface_init (MetaCullableInterface *iface);
|
||||||
CLUTTER_TYPE_ACTOR);
|
|
||||||
|
G_DEFINE_TYPE_WITH_CODE (MetaShapedTexture, meta_shaped_texture, CLUTTER_TYPE_ACTOR,
|
||||||
|
G_IMPLEMENT_INTERFACE (META_TYPE_CULLABLE, cullable_iface_init));
|
||||||
|
|
||||||
#define META_SHAPED_TEXTURE_GET_PRIVATE(obj) \
|
#define META_SHAPED_TEXTURE_GET_PRIVATE(obj) \
|
||||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), META_TYPE_SHAPED_TEXTURE, \
|
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), META_TYPE_SHAPED_TEXTURE, \
|
||||||
@@ -66,13 +68,16 @@ G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
|
|||||||
struct _MetaShapedTexturePrivate
|
struct _MetaShapedTexturePrivate
|
||||||
{
|
{
|
||||||
MetaTextureTower *paint_tower;
|
MetaTextureTower *paint_tower;
|
||||||
Pixmap pixmap;
|
|
||||||
CoglHandle texture;
|
|
||||||
CoglHandle mask_texture;
|
|
||||||
CoglHandle material;
|
|
||||||
CoglHandle material_unshaped;
|
|
||||||
|
|
||||||
|
CoglTexture *texture;
|
||||||
|
CoglTexture *mask_texture;
|
||||||
|
|
||||||
|
/* The region containing only fully opaque pixels */
|
||||||
|
cairo_region_t *opaque_region;
|
||||||
|
|
||||||
|
/* MetaCullable regions, see that documentation for more details */
|
||||||
cairo_region_t *clip_region;
|
cairo_region_t *clip_region;
|
||||||
|
cairo_region_t *unobscured_region;
|
||||||
|
|
||||||
guint tex_width, tex_height;
|
guint tex_width, tex_height;
|
||||||
|
|
||||||
@@ -90,7 +95,6 @@ meta_shaped_texture_class_init (MetaShapedTextureClass *klass)
|
|||||||
actor_class->get_preferred_width = meta_shaped_texture_get_preferred_width;
|
actor_class->get_preferred_width = meta_shaped_texture_get_preferred_width;
|
||||||
actor_class->get_preferred_height = meta_shaped_texture_get_preferred_height;
|
actor_class->get_preferred_height = meta_shaped_texture_get_preferred_height;
|
||||||
actor_class->paint = meta_shaped_texture_paint;
|
actor_class->paint = meta_shaped_texture_paint;
|
||||||
actor_class->pick = meta_shaped_texture_pick;
|
|
||||||
actor_class->get_paint_volume = meta_shaped_texture_get_paint_volume;
|
actor_class->get_paint_volume = meta_shaped_texture_get_paint_volume;
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (MetaShapedTexturePrivate));
|
g_type_class_add_private (klass, sizeof (MetaShapedTexturePrivate));
|
||||||
@@ -104,11 +108,38 @@ meta_shaped_texture_init (MetaShapedTexture *self)
|
|||||||
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
|
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
|
||||||
|
|
||||||
priv->paint_tower = meta_texture_tower_new ();
|
priv->paint_tower = meta_texture_tower_new ();
|
||||||
priv->texture = COGL_INVALID_HANDLE;
|
|
||||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
priv->texture = NULL;
|
||||||
|
priv->mask_texture = NULL;
|
||||||
priv->create_mipmaps = TRUE;
|
priv->create_mipmaps = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_unobscured_region (MetaShapedTexture *self,
|
||||||
|
cairo_region_t *unobscured_region)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv = self->priv;
|
||||||
|
|
||||||
|
g_clear_pointer (&priv->unobscured_region, (GDestroyNotify) cairo_region_destroy);
|
||||||
|
if (unobscured_region)
|
||||||
|
{
|
||||||
|
cairo_rectangle_int_t bounds = { 0, 0, priv->tex_width, priv->tex_height };
|
||||||
|
priv->unobscured_region = cairo_region_copy (unobscured_region);
|
||||||
|
cairo_region_intersect_rectangle (priv->unobscured_region, &bounds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_clip_region (MetaShapedTexture *self,
|
||||||
|
cairo_region_t *clip_region)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv = self->priv;
|
||||||
|
|
||||||
|
g_clear_pointer (&priv->clip_region, (GDestroyNotify) cairo_region_destroy);
|
||||||
|
if (clip_region)
|
||||||
|
priv->clip_region = cairo_region_copy (clip_region);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_shaped_texture_dispose (GObject *object)
|
meta_shaped_texture_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
@@ -119,41 +150,146 @@ meta_shaped_texture_dispose (GObject *object)
|
|||||||
meta_texture_tower_free (priv->paint_tower);
|
meta_texture_tower_free (priv->paint_tower);
|
||||||
priv->paint_tower = NULL;
|
priv->paint_tower = NULL;
|
||||||
|
|
||||||
if (priv->material != COGL_INVALID_HANDLE)
|
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||||
{
|
g_clear_pointer (&priv->opaque_region, cairo_region_destroy);
|
||||||
cogl_handle_unref (priv->material);
|
|
||||||
priv->material = COGL_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
if (priv->material_unshaped != COGL_INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
cogl_handle_unref (priv->material_unshaped);
|
|
||||||
priv->material_unshaped = COGL_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
if (priv->texture != COGL_INVALID_HANDLE)
|
|
||||||
{
|
|
||||||
cogl_handle_unref (priv->texture);
|
|
||||||
priv->texture = COGL_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_shaped_texture_set_mask_texture (self, COGL_INVALID_HANDLE);
|
meta_shaped_texture_set_mask_texture (self, NULL);
|
||||||
meta_shaped_texture_set_clip_region (self, NULL);
|
set_unobscured_region (self, NULL);
|
||||||
|
set_clip_region (self, NULL);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
|
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CoglPipeline *
|
||||||
|
get_unmasked_pipeline (CoglContext *ctx)
|
||||||
|
{
|
||||||
|
return cogl_pipeline_new (ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
static CoglPipeline *
|
||||||
|
get_masked_pipeline (CoglContext *ctx)
|
||||||
|
{
|
||||||
|
static CoglPipeline *template = NULL;
|
||||||
|
if (G_UNLIKELY (template == NULL))
|
||||||
|
{
|
||||||
|
template = cogl_pipeline_new (ctx);
|
||||||
|
cogl_pipeline_set_layer_combine (template, 1,
|
||||||
|
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cogl_pipeline_copy (template);
|
||||||
|
}
|
||||||
|
|
||||||
|
static CoglPipeline *
|
||||||
|
get_unblended_pipeline (CoglContext *ctx)
|
||||||
|
{
|
||||||
|
static CoglPipeline *template = NULL;
|
||||||
|
if (G_UNLIKELY (template == NULL))
|
||||||
|
{
|
||||||
|
CoglColor color;
|
||||||
|
template = cogl_pipeline_new (ctx);
|
||||||
|
cogl_color_init_from_4ub (&color, 255, 255, 255, 255);
|
||||||
|
cogl_pipeline_set_blend (template,
|
||||||
|
"RGBA = ADD (SRC_COLOR, 0)",
|
||||||
|
NULL);
|
||||||
|
cogl_pipeline_set_color (template, &color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cogl_pipeline_copy (template);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
paint_clipped_rectangle (CoglFramebuffer *fb,
|
||||||
|
CoglPipeline *pipeline,
|
||||||
|
cairo_rectangle_int_t *rect,
|
||||||
|
ClutterActorBox *alloc)
|
||||||
|
{
|
||||||
|
float coords[8];
|
||||||
|
float x1, y1, x2, y2;
|
||||||
|
|
||||||
|
x1 = rect->x;
|
||||||
|
y1 = rect->y;
|
||||||
|
x2 = rect->x + rect->width;
|
||||||
|
y2 = rect->y + rect->height;
|
||||||
|
|
||||||
|
coords[0] = rect->x / (alloc->x2 - alloc->x1);
|
||||||
|
coords[1] = rect->y / (alloc->y2 - alloc->y1);
|
||||||
|
coords[2] = (rect->x + rect->width) / (alloc->x2 - alloc->x1);
|
||||||
|
coords[3] = (rect->y + rect->height) / (alloc->y2 - alloc->y1);
|
||||||
|
|
||||||
|
coords[4] = coords[0];
|
||||||
|
coords[5] = coords[1];
|
||||||
|
coords[6] = coords[2];
|
||||||
|
coords[7] = coords[3];
|
||||||
|
|
||||||
|
cogl_framebuffer_draw_multitextured_rectangle (fb, pipeline,
|
||||||
|
x1, y1, x2, y2,
|
||||||
|
&coords[0], 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_cogl_texture (MetaShapedTexture *stex,
|
||||||
|
CoglTexture *cogl_tex)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv;
|
||||||
|
guint width, height;
|
||||||
|
|
||||||
|
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
||||||
|
|
||||||
|
priv = stex->priv;
|
||||||
|
|
||||||
|
if (priv->texture)
|
||||||
|
cogl_object_unref (priv->texture);
|
||||||
|
|
||||||
|
priv->texture = cogl_tex;
|
||||||
|
|
||||||
|
if (cogl_tex != NULL)
|
||||||
|
{
|
||||||
|
cogl_object_ref (cogl_tex);
|
||||||
|
width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex));
|
||||||
|
height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex));
|
||||||
|
|
||||||
|
if (width != priv->tex_width ||
|
||||||
|
height != priv->tex_height)
|
||||||
|
{
|
||||||
|
priv->tex_width = width;
|
||||||
|
priv->tex_height = height;
|
||||||
|
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* size changed to 0 going to an invalid handle */
|
||||||
|
priv->tex_width = 0;
|
||||||
|
priv->tex_height = 0;
|
||||||
|
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NB: We don't queue a redraw of the actor here because we don't
|
||||||
|
* know how much of the buffer has changed with respect to the
|
||||||
|
* previous buffer. We only queue a redraw in response to surface
|
||||||
|
* damage. */
|
||||||
|
|
||||||
|
if (priv->create_mipmaps)
|
||||||
|
meta_texture_tower_set_base_texture (priv->paint_tower, cogl_tex);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_shaped_texture_paint (ClutterActor *actor)
|
meta_shaped_texture_paint (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
||||||
MetaShapedTexturePrivate *priv = stex->priv;
|
MetaShapedTexturePrivate *priv = stex->priv;
|
||||||
CoglHandle paint_tex;
|
|
||||||
guint tex_width, tex_height;
|
guint tex_width, tex_height;
|
||||||
|
guchar opacity;
|
||||||
|
CoglContext *ctx;
|
||||||
|
CoglFramebuffer *fb;
|
||||||
|
CoglPipeline *pipeline = NULL;
|
||||||
|
CoglTexture *paint_tex;
|
||||||
ClutterActorBox alloc;
|
ClutterActorBox alloc;
|
||||||
|
cairo_region_t *blended_region = NULL;
|
||||||
static CoglHandle material_template = COGL_INVALID_HANDLE;
|
CoglPipelineFilter filter;
|
||||||
static CoglHandle material_unshaped_template = COGL_INVALID_HANDLE;
|
|
||||||
|
|
||||||
CoglHandle material;
|
|
||||||
|
|
||||||
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
|
||||||
return;
|
return;
|
||||||
@@ -179,9 +315,9 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
if (priv->create_mipmaps)
|
if (priv->create_mipmaps)
|
||||||
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower);
|
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower);
|
||||||
else
|
else
|
||||||
paint_tex = priv->texture;
|
paint_tex = COGL_TEXTURE (priv->texture);
|
||||||
|
|
||||||
if (paint_tex == COGL_INVALID_HANDLE)
|
if (paint_tex == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
tex_width = priv->tex_width;
|
tex_width = priv->tex_width;
|
||||||
@@ -190,143 +326,137 @@ meta_shaped_texture_paint (ClutterActor *actor)
|
|||||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (priv->mask_texture == COGL_INVALID_HANDLE)
|
/* Use nearest-pixel interpolation if the texture is unscaled. This
|
||||||
|
* improves performance, especially with software rendering.
|
||||||
|
*/
|
||||||
|
|
||||||
|
filter = COGL_PIPELINE_FILTER_LINEAR;
|
||||||
|
|
||||||
|
if (!clutter_actor_is_in_clone_paint (actor) && meta_actor_is_untransformed (actor, NULL, NULL))
|
||||||
|
filter = COGL_PIPELINE_FILTER_NEAREST;
|
||||||
|
|
||||||
|
ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
fb = cogl_get_draw_framebuffer ();
|
||||||
|
|
||||||
|
opacity = clutter_actor_get_paint_opacity (actor);
|
||||||
|
clutter_actor_get_allocation_box (actor, &alloc);
|
||||||
|
|
||||||
|
if (priv->opaque_region != NULL && opacity == 255)
|
||||||
{
|
{
|
||||||
/* Use a single-layer texture if we don't have a mask. */
|
CoglPipeline *opaque_pipeline;
|
||||||
|
cairo_region_t *region;
|
||||||
|
int n_rects;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (priv->material_unshaped == COGL_INVALID_HANDLE)
|
if (priv->clip_region != NULL)
|
||||||
{
|
{
|
||||||
if (G_UNLIKELY (material_unshaped_template == COGL_INVALID_HANDLE))
|
region = cairo_region_copy (priv->clip_region);
|
||||||
material_unshaped_template = cogl_material_new ();
|
cairo_region_intersect (region, priv->opaque_region);
|
||||||
|
|
||||||
priv->material_unshaped = cogl_material_copy (material_unshaped_template);
|
|
||||||
}
|
}
|
||||||
material = priv->material_unshaped;
|
else
|
||||||
|
{
|
||||||
|
region = cairo_region_reference (priv->opaque_region);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cairo_region_is_empty (region))
|
||||||
|
goto paint_blended;
|
||||||
|
|
||||||
|
opaque_pipeline = get_unblended_pipeline (ctx);
|
||||||
|
cogl_pipeline_set_layer_texture (opaque_pipeline, 0, paint_tex);
|
||||||
|
cogl_pipeline_set_layer_filters (opaque_pipeline, 0, filter, filter);
|
||||||
|
|
||||||
|
n_rects = cairo_region_num_rectangles (region);
|
||||||
|
for (i = 0; i < n_rects; i++)
|
||||||
|
{
|
||||||
|
cairo_rectangle_int_t rect;
|
||||||
|
cairo_region_get_rectangle (region, i, &rect);
|
||||||
|
paint_clipped_rectangle (fb, opaque_pipeline, &rect, &alloc);
|
||||||
|
}
|
||||||
|
|
||||||
|
cogl_object_unref (opaque_pipeline);
|
||||||
|
|
||||||
|
if (priv->clip_region != NULL)
|
||||||
|
{
|
||||||
|
blended_region = cairo_region_copy (priv->clip_region);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cairo_rectangle_int_t rect = { 0, 0, tex_width, tex_height };
|
||||||
|
blended_region = cairo_region_create_rectangle (&rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
cairo_region_subtract (blended_region, priv->opaque_region);
|
||||||
|
|
||||||
|
paint_blended:
|
||||||
|
cairo_region_destroy (region);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blended_region == NULL && priv->clip_region != NULL)
|
||||||
|
blended_region = cairo_region_reference (priv->clip_region);
|
||||||
|
|
||||||
|
if (blended_region != NULL && cairo_region_is_empty (blended_region))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (priv->mask_texture == NULL)
|
||||||
|
{
|
||||||
|
pipeline = get_unmasked_pipeline (ctx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (priv->material == COGL_INVALID_HANDLE)
|
pipeline = get_masked_pipeline (ctx);
|
||||||
{
|
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
|
||||||
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
|
cogl_pipeline_set_layer_filters (pipeline, 1, filter, filter);
|
||||||
{
|
|
||||||
material_template = cogl_material_new ();
|
|
||||||
cogl_material_set_layer_combine (material_template, 1,
|
|
||||||
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
priv->material = cogl_material_copy (material_template);
|
|
||||||
}
|
|
||||||
material = priv->material;
|
|
||||||
|
|
||||||
cogl_material_set_layer (material, 1, priv->mask_texture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_material_set_layer (material, 0, paint_tex);
|
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
|
||||||
|
cogl_pipeline_set_layer_filters (pipeline, 0, filter, filter);
|
||||||
|
|
||||||
{
|
{
|
||||||
CoglColor color;
|
CoglColor color;
|
||||||
guchar opacity = clutter_actor_get_paint_opacity (actor);
|
cogl_color_init_from_4ub (&color, opacity, opacity, opacity, opacity);
|
||||||
cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity);
|
cogl_pipeline_set_color (pipeline, &color);
|
||||||
cogl_material_set_color (material, &color);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_set_source (material);
|
if (blended_region != NULL)
|
||||||
|
|
||||||
clutter_actor_get_allocation_box (actor, &alloc);
|
|
||||||
|
|
||||||
if (priv->clip_region)
|
|
||||||
{
|
{
|
||||||
int n_rects;
|
int n_rects;
|
||||||
int i;
|
|
||||||
cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height };
|
|
||||||
|
|
||||||
/* Limit to how many separate rectangles we'll draw; beyond this just
|
/* Limit to how many separate rectangles we'll draw; beyond this just
|
||||||
* fall back and draw the whole thing */
|
* fall back and draw the whole thing */
|
||||||
# define MAX_RECTS 16
|
# define MAX_RECTS 16
|
||||||
|
|
||||||
n_rects = cairo_region_num_rectangles (priv->clip_region);
|
n_rects = cairo_region_num_rectangles (blended_region);
|
||||||
if (n_rects <= MAX_RECTS)
|
if (n_rects <= MAX_RECTS)
|
||||||
{
|
{
|
||||||
float coords[8];
|
int i;
|
||||||
float x1, y1, x2, y2;
|
cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height };
|
||||||
|
|
||||||
for (i = 0; i < n_rects; i++)
|
for (i = 0; i < n_rects; i++)
|
||||||
{
|
{
|
||||||
cairo_rectangle_int_t rect;
|
cairo_rectangle_int_t rect;
|
||||||
|
|
||||||
cairo_region_get_rectangle (priv->clip_region, i, &rect);
|
cairo_region_get_rectangle (blended_region, i, &rect);
|
||||||
|
|
||||||
if (!gdk_rectangle_intersect (&tex_rect, &rect, &rect))
|
if (!gdk_rectangle_intersect (&tex_rect, &rect, &rect))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
x1 = rect.x;
|
paint_clipped_rectangle (fb, pipeline, &rect, &alloc);
|
||||||
y1 = rect.y;
|
|
||||||
x2 = rect.x + rect.width;
|
|
||||||
y2 = rect.y + rect.height;
|
|
||||||
|
|
||||||
coords[0] = rect.x / (alloc.x2 - alloc.x1);
|
|
||||||
coords[1] = rect.y / (alloc.y2 - alloc.y1);
|
|
||||||
coords[2] = (rect.x + rect.width) / (alloc.x2 - alloc.x1);
|
|
||||||
coords[3] = (rect.y + rect.height) / (alloc.y2 - alloc.y1);
|
|
||||||
|
|
||||||
coords[4] = coords[0];
|
|
||||||
coords[5] = coords[1];
|
|
||||||
coords[6] = coords[2];
|
|
||||||
coords[7] = coords[3];
|
|
||||||
|
|
||||||
cogl_rectangle_with_multitexture_coords (x1, y1, x2, y2,
|
|
||||||
&coords[0], 8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cogl_rectangle (0, 0,
|
cogl_framebuffer_draw_rectangle (fb, pipeline,
|
||||||
alloc.x2 - alloc.x1,
|
0, 0,
|
||||||
alloc.y2 - alloc.y1);
|
alloc.x2 - alloc.x1,
|
||||||
}
|
alloc.y2 - alloc.y1);
|
||||||
|
|
||||||
static void
|
out:
|
||||||
meta_shaped_texture_pick (ClutterActor *actor,
|
if (pipeline != NULL)
|
||||||
const ClutterColor *color)
|
cogl_object_unref (pipeline);
|
||||||
{
|
if (blended_region != NULL)
|
||||||
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
|
cairo_region_destroy (blended_region);
|
||||||
MetaShapedTexturePrivate *priv = stex->priv;
|
|
||||||
|
|
||||||
/* If there is no region then use the regular pick */
|
|
||||||
if (priv->mask_texture == COGL_INVALID_HANDLE)
|
|
||||||
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)
|
|
||||||
->pick (actor, color);
|
|
||||||
else if (clutter_actor_should_pick_paint (actor))
|
|
||||||
{
|
|
||||||
CoglHandle paint_tex;
|
|
||||||
ClutterActorBox alloc;
|
|
||||||
guint tex_width, tex_height;
|
|
||||||
|
|
||||||
paint_tex = priv->texture;
|
|
||||||
|
|
||||||
if (paint_tex == COGL_INVALID_HANDLE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
tex_width = cogl_texture_get_width (paint_tex);
|
|
||||||
tex_height = cogl_texture_get_height (paint_tex);
|
|
||||||
|
|
||||||
if (tex_width == 0 || tex_height == 0) /* no contents yet */
|
|
||||||
return;
|
|
||||||
|
|
||||||
cogl_set_source_color4ub (color->red, color->green, color->blue,
|
|
||||||
color->alpha);
|
|
||||||
|
|
||||||
clutter_actor_get_allocation_box (actor, &alloc);
|
|
||||||
|
|
||||||
/* Paint the mask rectangle in the given color */
|
|
||||||
cogl_set_source_texture (priv->mask_texture);
|
|
||||||
cogl_rectangle_with_texture_coords (0, 0,
|
|
||||||
alloc.x2 - alloc.x1,
|
|
||||||
alloc.y2 - alloc.y1,
|
|
||||||
0, 0, 1, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -368,18 +498,37 @@ meta_shaped_texture_get_preferred_height (ClutterActor *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_shaped_texture_get_paint_volume (ClutterActor *self,
|
meta_shaped_texture_get_paint_volume (ClutterActor *actor,
|
||||||
ClutterPaintVolume *volume)
|
ClutterPaintVolume *volume)
|
||||||
{
|
{
|
||||||
return clutter_paint_volume_set_from_allocation (volume, self);
|
MetaShapedTexture *self = META_SHAPED_TEXTURE (actor);
|
||||||
}
|
cairo_rectangle_int_t unobscured_bounds;
|
||||||
|
|
||||||
ClutterActor *
|
if (!clutter_paint_volume_set_from_allocation (volume, actor))
|
||||||
meta_shaped_texture_new (void)
|
return FALSE;
|
||||||
{
|
|
||||||
ClutterActor *self = g_object_new (META_TYPE_SHAPED_TEXTURE, NULL);
|
|
||||||
|
|
||||||
return self;
|
if (meta_shaped_texture_get_unobscured_bounds (self, &unobscured_bounds))
|
||||||
|
{
|
||||||
|
ClutterVertex origin;
|
||||||
|
cairo_rectangle_int_t bounds;
|
||||||
|
|
||||||
|
/* I hate ClutterPaintVolume so much... */
|
||||||
|
clutter_paint_volume_get_origin (volume, &origin);
|
||||||
|
bounds.x = origin.x;
|
||||||
|
bounds.y = origin.y;
|
||||||
|
bounds.width = clutter_paint_volume_get_width (volume);
|
||||||
|
bounds.height = clutter_paint_volume_get_height (volume);
|
||||||
|
|
||||||
|
gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds);
|
||||||
|
|
||||||
|
origin.x = bounds.x;
|
||||||
|
origin.y = bounds.y;
|
||||||
|
clutter_paint_volume_set_origin (volume, &origin);
|
||||||
|
clutter_paint_volume_set_width (volume, bounds.width);
|
||||||
|
clutter_paint_volume_set_height (volume, bounds.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -396,17 +545,16 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex,
|
|||||||
|
|
||||||
if (create_mipmaps != priv->create_mipmaps)
|
if (create_mipmaps != priv->create_mipmaps)
|
||||||
{
|
{
|
||||||
CoglHandle base_texture;
|
CoglTexture *base_texture;
|
||||||
priv->create_mipmaps = create_mipmaps;
|
priv->create_mipmaps = create_mipmaps;
|
||||||
base_texture = create_mipmaps ?
|
base_texture = create_mipmaps ? priv->texture : NULL;
|
||||||
priv->texture : COGL_INVALID_HANDLE;
|
|
||||||
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
|
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
||||||
CoglHandle mask_texture)
|
CoglTexture *mask_texture)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv;
|
MetaShapedTexturePrivate *priv;
|
||||||
|
|
||||||
@@ -414,22 +562,75 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
|
|||||||
|
|
||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->mask_texture != COGL_INVALID_HANDLE)
|
g_clear_pointer (&priv->mask_texture, cogl_object_unref);
|
||||||
{
|
|
||||||
cogl_handle_unref (priv->mask_texture);
|
|
||||||
priv->mask_texture = COGL_INVALID_HANDLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mask_texture != COGL_INVALID_HANDLE)
|
if (mask_texture != NULL)
|
||||||
{
|
{
|
||||||
priv->mask_texture = mask_texture;
|
priv->mask_texture = mask_texture;
|
||||||
cogl_handle_ref (priv->mask_texture);
|
cogl_object_ref (priv->mask_texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static cairo_region_t *
|
||||||
|
effective_unobscured_region (MetaShapedTexture *self)
|
||||||
|
{
|
||||||
|
MetaShapedTexturePrivate *priv = self->priv;
|
||||||
|
ClutterActor *parent = clutter_actor_get_parent (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
|
if (clutter_actor_has_mapped_clones (CLUTTER_ACTOR (self)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
while (parent && !META_IS_WINDOW_ACTOR (parent))
|
||||||
|
parent = clutter_actor_get_parent (parent);
|
||||||
|
|
||||||
|
if (parent && clutter_actor_has_mapped_clones (parent))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return priv->unobscured_region;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_shaped_texture_get_unobscured_bounds (MetaShapedTexture *self,
|
||||||
|
cairo_rectangle_int_t *unobscured_bounds)
|
||||||
|
{
|
||||||
|
cairo_region_t *unobscured_region = effective_unobscured_region (self);
|
||||||
|
|
||||||
|
if (unobscured_region)
|
||||||
|
{
|
||||||
|
cairo_region_get_extents (unobscured_region, unobscured_bounds);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_shaped_texture_is_obscured (MetaShapedTexture *self)
|
||||||
|
{
|
||||||
|
cairo_region_t *unobscured_region = effective_unobscured_region (self);
|
||||||
|
|
||||||
|
if (unobscured_region)
|
||||||
|
return cairo_region_is_empty (unobscured_region);
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* meta_shaped_texture_update_area:
|
||||||
|
* @stex: #MetaShapedTexture
|
||||||
|
* @x: the x coordinate of the damaged area
|
||||||
|
* @y: the y coordinate of the damaged area
|
||||||
|
* @width: the width of the damaged area
|
||||||
|
* @height: the height of the damaged area
|
||||||
|
*
|
||||||
|
* Repairs the damaged area indicated by @x, @y, @width and @height
|
||||||
|
* and potentially queues a redraw.
|
||||||
|
*
|
||||||
|
* Return value: Whether a redraw have been queued or not
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
@@ -437,98 +638,58 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
|
|||||||
int height)
|
int height)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv;
|
MetaShapedTexturePrivate *priv;
|
||||||
|
cairo_region_t *unobscured_region;
|
||||||
const cairo_rectangle_int_t clip = { x, y, width, height };
|
const cairo_rectangle_int_t clip = { x, y, width, height };
|
||||||
|
|
||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->texture == COGL_INVALID_HANDLE)
|
if (priv->texture == NULL)
|
||||||
return;
|
return FALSE;
|
||||||
|
|
||||||
cogl_texture_pixmap_x11_update_area (priv->texture, x, y, width, height);
|
|
||||||
|
|
||||||
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
|
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
|
||||||
|
|
||||||
clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &clip);
|
unobscured_region = effective_unobscured_region (stex);
|
||||||
}
|
if (unobscured_region)
|
||||||
|
|
||||||
static void
|
|
||||||
set_cogl_texture (MetaShapedTexture *stex,
|
|
||||||
CoglHandle cogl_tex)
|
|
||||||
{
|
|
||||||
MetaShapedTexturePrivate *priv;
|
|
||||||
guint width, height;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
|
||||||
|
|
||||||
priv = stex->priv;
|
|
||||||
|
|
||||||
if (priv->texture != COGL_INVALID_HANDLE)
|
|
||||||
cogl_handle_unref (priv->texture);
|
|
||||||
|
|
||||||
priv->texture = cogl_tex;
|
|
||||||
|
|
||||||
if (priv->material != COGL_INVALID_HANDLE)
|
|
||||||
cogl_material_set_layer (priv->material, 0, cogl_tex);
|
|
||||||
|
|
||||||
if (priv->material_unshaped != COGL_INVALID_HANDLE)
|
|
||||||
cogl_material_set_layer (priv->material_unshaped, 0, cogl_tex);
|
|
||||||
|
|
||||||
if (cogl_tex != COGL_INVALID_HANDLE)
|
|
||||||
{
|
{
|
||||||
width = cogl_texture_get_width (cogl_tex);
|
cairo_region_t *intersection;
|
||||||
height = cogl_texture_get_height (cogl_tex);
|
|
||||||
|
|
||||||
if (width != priv->tex_width ||
|
if (cairo_region_is_empty (unobscured_region))
|
||||||
height != priv->tex_height)
|
return FALSE;
|
||||||
|
|
||||||
|
intersection = cairo_region_copy (unobscured_region);
|
||||||
|
cairo_region_intersect_rectangle (intersection, &clip);
|
||||||
|
|
||||||
|
if (!cairo_region_is_empty (intersection))
|
||||||
{
|
{
|
||||||
priv->tex_width = width;
|
cairo_rectangle_int_t damage_rect;
|
||||||
priv->tex_height = height;
|
cairo_region_get_extents (intersection, &damage_rect);
|
||||||
|
clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &damage_rect);
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
cairo_region_destroy (intersection);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cairo_region_destroy (intersection);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* size changed to 0 going to an invalid handle */
|
clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &clip);
|
||||||
priv->tex_width = 0;
|
return TRUE;
|
||||||
priv->tex_height = 0;
|
|
||||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_shaped_texture_set_pixmap:
|
* meta_shaped_texture_set_texture:
|
||||||
* @stex: The #MetaShapedTexture
|
* @stex: The #MetaShapedTexture
|
||||||
* @pixmap: The pixmap you want the stex to assume
|
* @pixmap: The #CoglTexture to display
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
meta_shaped_texture_set_texture (MetaShapedTexture *stex,
|
||||||
Pixmap pixmap)
|
CoglTexture *texture)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
|
||||||
|
|
||||||
priv = stex->priv;
|
set_cogl_texture (stex, texture);
|
||||||
|
|
||||||
if (priv->pixmap == pixmap)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->pixmap = pixmap;
|
|
||||||
|
|
||||||
if (pixmap != None)
|
|
||||||
{
|
|
||||||
CoglContext *ctx =
|
|
||||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
|
||||||
set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
set_cogl_texture (stex, COGL_INVALID_HANDLE);
|
|
||||||
|
|
||||||
if (priv->create_mipmaps)
|
|
||||||
meta_texture_tower_set_base_texture (priv->paint_tower, priv->texture);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -537,30 +698,27 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
|
|||||||
*
|
*
|
||||||
* Returns: (transfer none): the unshaped texture
|
* Returns: (transfer none): the unshaped texture
|
||||||
*/
|
*/
|
||||||
CoglHandle
|
CoglTexture *
|
||||||
meta_shaped_texture_get_texture (MetaShapedTexture *stex)
|
meta_shaped_texture_get_texture (MetaShapedTexture *stex)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), COGL_INVALID_HANDLE);
|
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
|
||||||
return stex->priv->texture;
|
return COGL_TEXTURE (stex->priv->texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_shaped_texture_set_clip_region:
|
* meta_shaped_texture_set_opaque_region:
|
||||||
* @stex: a #MetaShapedTexture
|
* @stex: a #MetaShapedTexture
|
||||||
* @clip_region: (transfer full): the region of the texture that
|
* @opaque_region: (transfer full): the region of the texture that
|
||||||
* is visible and should be painted.
|
* can have blending turned off.
|
||||||
*
|
*
|
||||||
* Provides a hint to the texture about what areas of the texture
|
* As most windows have a large portion that does not require blending,
|
||||||
* are not completely obscured and thus need to be painted. This
|
* we can easily turn off blending if we know the areas that do not
|
||||||
* is an optimization and is not supposed to have any effect on
|
* require blending. This sets the region where we will not blend for
|
||||||
* the output.
|
* optimization purposes.
|
||||||
*
|
|
||||||
* Typically a parent container will set the clip region before
|
|
||||||
* painting its children, and then unset it afterwards.
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,
|
meta_shaped_texture_set_opaque_region (MetaShapedTexture *stex,
|
||||||
cairo_region_t *clip_region)
|
cairo_region_t *opaque_region)
|
||||||
{
|
{
|
||||||
MetaShapedTexturePrivate *priv;
|
MetaShapedTexturePrivate *priv;
|
||||||
|
|
||||||
@@ -568,16 +726,13 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,
|
|||||||
|
|
||||||
priv = stex->priv;
|
priv = stex->priv;
|
||||||
|
|
||||||
if (priv->clip_region)
|
if (priv->opaque_region)
|
||||||
{
|
cairo_region_destroy (priv->opaque_region);
|
||||||
cairo_region_destroy (priv->clip_region);
|
|
||||||
priv->clip_region = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clip_region)
|
if (opaque_region)
|
||||||
priv->clip_region = cairo_region_copy (clip_region);
|
priv->opaque_region = cairo_region_reference (opaque_region);
|
||||||
else
|
else
|
||||||
priv->clip_region = NULL;
|
priv->opaque_region = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -598,13 +753,13 @@ cairo_surface_t *
|
|||||||
meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
||||||
cairo_rectangle_int_t *clip)
|
cairo_rectangle_int_t *clip)
|
||||||
{
|
{
|
||||||
CoglHandle texture, mask_texture;
|
CoglTexture *texture, *mask_texture;
|
||||||
cairo_rectangle_int_t texture_rect = { 0, 0, 0, 0 };
|
cairo_rectangle_int_t texture_rect = { 0, 0, 0, 0 };
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
|
|
||||||
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
|
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
|
||||||
|
|
||||||
texture = stex->priv->texture;
|
texture = COGL_TEXTURE (stex->priv->texture);
|
||||||
|
|
||||||
if (texture == NULL)
|
if (texture == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -641,7 +796,7 @@ meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
|||||||
cogl_object_unref (texture);
|
cogl_object_unref (texture);
|
||||||
|
|
||||||
mask_texture = stex->priv->mask_texture;
|
mask_texture = stex->priv->mask_texture;
|
||||||
if (mask_texture != COGL_INVALID_HANDLE)
|
if (mask_texture != NULL)
|
||||||
{
|
{
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
cairo_surface_t *mask_surface;
|
cairo_surface_t *mask_surface;
|
||||||
@@ -677,3 +832,46 @@ meta_shaped_texture_get_image (MetaShapedTexture *stex,
|
|||||||
|
|
||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_shaped_texture_cull_out (MetaCullable *cullable,
|
||||||
|
cairo_region_t *unobscured_region,
|
||||||
|
cairo_region_t *clip_region)
|
||||||
|
{
|
||||||
|
MetaShapedTexture *self = META_SHAPED_TEXTURE (cullable);
|
||||||
|
MetaShapedTexturePrivate *priv = self->priv;
|
||||||
|
|
||||||
|
set_unobscured_region (self, unobscured_region);
|
||||||
|
set_clip_region (self, clip_region);
|
||||||
|
|
||||||
|
if (clutter_actor_get_paint_opacity (CLUTTER_ACTOR (self)) == 0xff)
|
||||||
|
{
|
||||||
|
if (priv->opaque_region)
|
||||||
|
{
|
||||||
|
if (unobscured_region)
|
||||||
|
cairo_region_subtract (unobscured_region, priv->opaque_region);
|
||||||
|
if (clip_region)
|
||||||
|
cairo_region_subtract (clip_region, priv->opaque_region);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_shaped_texture_reset_culling (MetaCullable *cullable)
|
||||||
|
{
|
||||||
|
MetaShapedTexture *self = META_SHAPED_TEXTURE (cullable);
|
||||||
|
set_clip_region (self, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cullable_iface_init (MetaCullableInterface *iface)
|
||||||
|
{
|
||||||
|
iface->cull_out = meta_shaped_texture_cull_out;
|
||||||
|
iface->reset_culling = meta_shaped_texture_reset_culling;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClutterActor *
|
||||||
|
meta_shaped_texture_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (META_TYPE_SHAPED_TEXTURE, NULL);
|
||||||
|
}
|
||||||
|
164
src/compositor/meta-surface-actor-wayland.c
Normal file
164
src/compositor/meta-surface-actor-wayland.c
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Written by:
|
||||||
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "meta-surface-actor-wayland.h"
|
||||||
|
|
||||||
|
#include <cogl/cogl-wayland-server.h>
|
||||||
|
#include "meta-shaped-texture-private.h"
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
|
||||||
|
struct _MetaSurfaceActorWaylandPrivate
|
||||||
|
{
|
||||||
|
MetaWaylandSurface *surface;
|
||||||
|
MetaWaylandBuffer *buffer;
|
||||||
|
};
|
||||||
|
typedef struct _MetaSurfaceActorWaylandPrivate MetaSurfaceActorWaylandPrivate;
|
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_PRIVATE (MetaSurfaceActorWayland, meta_surface_actor_wayland, META_TYPE_SURFACE_ACTOR)
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_wayland_process_damage (MetaSurfaceActor *actor,
|
||||||
|
int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorWayland *self = META_SURFACE_ACTOR_WAYLAND (actor);
|
||||||
|
MetaSurfaceActorWaylandPrivate *priv = meta_surface_actor_wayland_get_instance_private (self);
|
||||||
|
|
||||||
|
struct wl_resource *resource = priv->buffer->resource;
|
||||||
|
struct wl_shm_buffer *shm_buffer = wl_shm_buffer_get (resource);
|
||||||
|
|
||||||
|
if (shm_buffer)
|
||||||
|
{
|
||||||
|
CoglTexture2D *texture = COGL_TEXTURE_2D (priv->buffer->texture);
|
||||||
|
cogl_wayland_texture_set_region_from_shm_buffer (texture, x, y, width, height, shm_buffer, x, y, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_surface_actor_update_area (META_SURFACE_ACTOR (self), x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_wayland_pre_paint (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_wayland_is_argb32 (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
/* XXX -- look at the SHM buffer format. */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_wayland_is_visible (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
/* TODO: ensure that the buffer isn't NULL, implement
|
||||||
|
* wayland mapping semantics */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_wayland_should_unredirect (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_wayland_set_unredirected (MetaSurfaceActor *actor,
|
||||||
|
gboolean unredirected)
|
||||||
|
{
|
||||||
|
/* Do nothing. In the future, we'll use KMS to set this
|
||||||
|
* up as a hardware overlay or something. */
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_wayland_is_unredirected (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static MetaWindow *
|
||||||
|
meta_surface_actor_wayland_get_window (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorWaylandPrivate *priv = meta_surface_actor_wayland_get_instance_private (META_SURFACE_ACTOR_WAYLAND (actor));
|
||||||
|
|
||||||
|
return priv->surface->window;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_wayland_class_init (MetaSurfaceActorWaylandClass *klass)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorClass *surface_actor_class = META_SURFACE_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
|
surface_actor_class->process_damage = meta_surface_actor_wayland_process_damage;
|
||||||
|
surface_actor_class->pre_paint = meta_surface_actor_wayland_pre_paint;
|
||||||
|
surface_actor_class->is_argb32 = meta_surface_actor_wayland_is_argb32;
|
||||||
|
surface_actor_class->is_visible = meta_surface_actor_wayland_is_visible;
|
||||||
|
|
||||||
|
surface_actor_class->should_unredirect = meta_surface_actor_wayland_should_unredirect;
|
||||||
|
surface_actor_class->set_unredirected = meta_surface_actor_wayland_set_unredirected;
|
||||||
|
surface_actor_class->is_unredirected = meta_surface_actor_wayland_is_unredirected;
|
||||||
|
|
||||||
|
surface_actor_class->get_window = meta_surface_actor_wayland_get_window;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_wayland_init (MetaSurfaceActorWayland *self)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaSurfaceActor *
|
||||||
|
meta_surface_actor_wayland_new (MetaWaylandSurface *surface)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorWayland *self = g_object_new (META_TYPE_SURFACE_ACTOR_WAYLAND, NULL);
|
||||||
|
MetaSurfaceActorWaylandPrivate *priv = meta_surface_actor_wayland_get_instance_private (self);
|
||||||
|
|
||||||
|
g_assert (meta_is_wayland_compositor ());
|
||||||
|
|
||||||
|
priv->surface = surface;
|
||||||
|
|
||||||
|
return META_SURFACE_ACTOR (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_surface_actor_wayland_set_buffer (MetaSurfaceActorWayland *self,
|
||||||
|
MetaWaylandBuffer *buffer)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorWaylandPrivate *priv = meta_surface_actor_wayland_get_instance_private (self);
|
||||||
|
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
|
||||||
|
|
||||||
|
priv->buffer = buffer;
|
||||||
|
|
||||||
|
if (buffer)
|
||||||
|
meta_shaped_texture_set_texture (stex, buffer->texture);
|
||||||
|
else
|
||||||
|
meta_shaped_texture_set_texture (stex, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaWaylandSurface *
|
||||||
|
meta_surface_actor_wayland_get_surface (MetaSurfaceActorWayland *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorWaylandPrivate *priv = meta_surface_actor_wayland_get_instance_private (self);
|
||||||
|
return priv->surface;
|
||||||
|
}
|
66
src/compositor/meta-surface-actor-wayland.h
Normal file
66
src/compositor/meta-surface-actor-wayland.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Written by:
|
||||||
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __META_SURFACE_ACTOR_WAYLAND_H__
|
||||||
|
#define __META_SURFACE_ACTOR_WAYLAND_H__
|
||||||
|
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
#include "meta-surface-actor.h"
|
||||||
|
|
||||||
|
#include "meta-wayland.h"
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define META_TYPE_SURFACE_ACTOR_WAYLAND (meta_surface_actor_wayland_get_type ())
|
||||||
|
#define META_SURFACE_ACTOR_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_SURFACE_ACTOR_WAYLAND, MetaSurfaceActorWayland))
|
||||||
|
#define META_SURFACE_ACTOR_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_SURFACE_ACTOR_WAYLAND, MetaSurfaceActorWaylandClass))
|
||||||
|
#define META_IS_SURFACE_ACTOR_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_SURFACE_ACTOR_WAYLAND))
|
||||||
|
#define META_IS_SURFACE_ACTOR_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_SURFACE_ACTOR_WAYLAND))
|
||||||
|
#define META_SURFACE_ACTOR_WAYLAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_SURFACE_ACTOR_WAYLAND, MetaSurfaceActorWaylandClass))
|
||||||
|
|
||||||
|
typedef struct _MetaSurfaceActorWayland MetaSurfaceActorWayland;
|
||||||
|
typedef struct _MetaSurfaceActorWaylandClass MetaSurfaceActorWaylandClass;
|
||||||
|
|
||||||
|
struct _MetaSurfaceActorWayland
|
||||||
|
{
|
||||||
|
MetaSurfaceActor parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _MetaSurfaceActorWaylandClass
|
||||||
|
{
|
||||||
|
MetaSurfaceActorClass parent_class;
|
||||||
|
};
|
||||||
|
|
||||||
|
GType meta_surface_actor_wayland_get_type (void);
|
||||||
|
|
||||||
|
MetaSurfaceActor * meta_surface_actor_wayland_new (MetaWaylandSurface *surface);
|
||||||
|
MetaWaylandSurface * meta_surface_actor_wayland_get_surface (MetaSurfaceActorWayland *self);
|
||||||
|
|
||||||
|
void meta_surface_actor_wayland_set_buffer (MetaSurfaceActorWayland *self,
|
||||||
|
MetaWaylandBuffer *buffer);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __META_SURFACE_ACTOR_WAYLAND_H__ */
|
486
src/compositor/meta-surface-actor-x11.c
Normal file
486
src/compositor/meta-surface-actor-x11.c
Normal file
@@ -0,0 +1,486 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* Written by:
|
||||||
|
* Owen Taylor <otaylor@redhat.com>
|
||||||
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "meta-surface-actor-x11.h"
|
||||||
|
|
||||||
|
#include <X11/extensions/Xcomposite.h>
|
||||||
|
#include <X11/extensions/Xrender.h>
|
||||||
|
#include <cogl/cogl-texture-pixmap-x11.h>
|
||||||
|
|
||||||
|
#include <meta/errors.h>
|
||||||
|
#include "window-private.h"
|
||||||
|
#include "meta-shaped-texture-private.h"
|
||||||
|
#include "meta-cullable.h"
|
||||||
|
|
||||||
|
struct _MetaSurfaceActorX11Private
|
||||||
|
{
|
||||||
|
MetaWindow *window;
|
||||||
|
|
||||||
|
MetaDisplay *display;
|
||||||
|
|
||||||
|
CoglTexture *texture;
|
||||||
|
Pixmap pixmap;
|
||||||
|
Damage damage;
|
||||||
|
|
||||||
|
int last_width;
|
||||||
|
int last_height;
|
||||||
|
|
||||||
|
/* This is used to detect fullscreen windows that need to be unredirected */
|
||||||
|
guint full_damage_frames_count;
|
||||||
|
guint does_full_damage : 1;
|
||||||
|
|
||||||
|
/* Other state... */
|
||||||
|
guint argb32 : 1;
|
||||||
|
guint received_damage : 1;
|
||||||
|
guint size_changed : 1;
|
||||||
|
|
||||||
|
guint unredirected : 1;
|
||||||
|
};
|
||||||
|
typedef struct _MetaSurfaceActorX11Private MetaSurfaceActorX11Private;
|
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_PRIVATE (MetaSurfaceActorX11, meta_surface_actor_x11, META_TYPE_SURFACE_ACTOR)
|
||||||
|
|
||||||
|
static void
|
||||||
|
free_damage (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
|
||||||
|
if (priv->damage == None)
|
||||||
|
return;
|
||||||
|
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
XDamageDestroy (xdisplay, priv->damage);
|
||||||
|
priv->damage = None;
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
detach_pixmap (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
|
||||||
|
|
||||||
|
if (priv->pixmap == None)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Get rid of all references to the pixmap before freeing it; it's unclear whether
|
||||||
|
* you are supposed to be able to free a GLXPixmap after freeing the underlying
|
||||||
|
* pixmap, but it certainly doesn't work with current DRI/Mesa
|
||||||
|
*/
|
||||||
|
meta_shaped_texture_set_texture (stex, NULL);
|
||||||
|
cogl_flush ();
|
||||||
|
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
XFreePixmap (xdisplay, priv->pixmap);
|
||||||
|
priv->pixmap = None;
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
|
||||||
|
cogl_object_unref (priv->texture);
|
||||||
|
priv->texture = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_pixmap (MetaSurfaceActorX11 *self,
|
||||||
|
Pixmap pixmap)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
|
||||||
|
CoglTexture *texture;
|
||||||
|
|
||||||
|
g_assert (priv->pixmap == None);
|
||||||
|
priv->pixmap = pixmap;
|
||||||
|
|
||||||
|
texture = COGL_TEXTURE (cogl_texture_pixmap_x11_new (ctx, priv->pixmap, FALSE, NULL));
|
||||||
|
|
||||||
|
if (G_UNLIKELY (!cogl_texture_pixmap_x11_is_using_tfp_extension (COGL_TEXTURE_PIXMAP_X11 (texture))))
|
||||||
|
g_warning ("NOTE: Not using GLX TFP!\n");
|
||||||
|
|
||||||
|
priv->texture = texture;
|
||||||
|
meta_shaped_texture_set_texture (stex, texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_pixmap (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
|
||||||
|
if (priv->size_changed)
|
||||||
|
{
|
||||||
|
detach_pixmap (self);
|
||||||
|
priv->size_changed = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->pixmap == None)
|
||||||
|
{
|
||||||
|
Pixmap new_pixmap;
|
||||||
|
Window xwindow = meta_window_get_toplevel_xwindow (priv->window);
|
||||||
|
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
new_pixmap = XCompositeNameWindowPixmap (xdisplay, xwindow);
|
||||||
|
|
||||||
|
if (meta_error_trap_pop_with_return (display) != Success)
|
||||||
|
{
|
||||||
|
/* Probably a BadMatch if the window isn't viewable; we could
|
||||||
|
* GrabServer/GetWindowAttributes/NameWindowPixmap/UngrabServer/Sync
|
||||||
|
* to avoid this, but there's no reason to take two round trips
|
||||||
|
* when one will do. (We need that Sync if we want to handle failures
|
||||||
|
* for any reason other than !viewable. That's unlikely, but maybe
|
||||||
|
* we'll BadAlloc or something.)
|
||||||
|
*/
|
||||||
|
new_pixmap = None;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new_pixmap == None)
|
||||||
|
{
|
||||||
|
meta_verbose ("Unable to get named pixmap for %s\n",
|
||||||
|
meta_window_get_description (priv->window));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_pixmap (self, new_pixmap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
is_visible (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
return (priv->pixmap != None) && !priv->unredirected;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
damage_area (MetaSurfaceActorX11 *self,
|
||||||
|
int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
if (!is_visible (self))
|
||||||
|
return;
|
||||||
|
|
||||||
|
cogl_texture_pixmap_x11_update_area (priv->texture, x, y, width, height);
|
||||||
|
meta_surface_actor_update_area (META_SURFACE_ACTOR (self), x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_process_damage (MetaSurfaceActor *actor,
|
||||||
|
int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
priv->received_damage = TRUE;
|
||||||
|
|
||||||
|
if (meta_window_is_fullscreen (priv->window) && !priv->unredirected && !priv->does_full_damage)
|
||||||
|
{
|
||||||
|
MetaRectangle window_rect;
|
||||||
|
meta_window_get_frame_rect (priv->window, &window_rect);
|
||||||
|
|
||||||
|
if (window_rect.x == x &&
|
||||||
|
window_rect.y == y &&
|
||||||
|
window_rect.width == width &&
|
||||||
|
window_rect.height == height)
|
||||||
|
priv->full_damage_frames_count++;
|
||||||
|
else
|
||||||
|
priv->full_damage_frames_count = 0;
|
||||||
|
|
||||||
|
if (priv->full_damage_frames_count >= 100)
|
||||||
|
priv->does_full_damage = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Drop damage event for unredirected windows */
|
||||||
|
if (priv->unredirected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
damage_area (self, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_pre_paint (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
|
||||||
|
if (priv->received_damage)
|
||||||
|
{
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
XDamageSubtract (xdisplay, priv->damage, None, None);
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
|
||||||
|
/* We need to make sure that any X drawing that happens before the
|
||||||
|
* XDamageSubtract() above is visible to subsequent GL rendering;
|
||||||
|
* the only standardized way to do this is EXT_x11_sync_object,
|
||||||
|
* which isn't yet widely available. For now, we count on details
|
||||||
|
* of Xorg and the open source drivers, and hope for the best
|
||||||
|
* otherwise.
|
||||||
|
*
|
||||||
|
* Xorg and open source driver specifics:
|
||||||
|
*
|
||||||
|
* The X server makes sure to flush drawing to the kernel before
|
||||||
|
* sending out damage events, but since we use DamageReportBoundingBox
|
||||||
|
* there may be drawing between the last damage event and the
|
||||||
|
* XDamageSubtract() that needs to be flushed as well.
|
||||||
|
*
|
||||||
|
* Xorg always makes sure that drawing is flushed to the kernel
|
||||||
|
* before writing events or responses to the client, so any round trip
|
||||||
|
* request at this point is sufficient to flush the GLX buffers.
|
||||||
|
*/
|
||||||
|
XSync (xdisplay, False);
|
||||||
|
|
||||||
|
priv->received_damage = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_pixmap (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_is_argb32 (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
|
||||||
|
XRenderPictFormat *format;
|
||||||
|
format = XRenderFindVisualFormat (xdisplay, priv->window->xvisual);
|
||||||
|
|
||||||
|
priv->argb32 = (format && format->type == PictTypeDirect && format->direct.alphaMask);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_x11_is_argb32 (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
return priv->argb32;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_x11_is_visible (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
return is_visible (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_x11_should_unredirect (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
MetaWindow *window = priv->window;
|
||||||
|
|
||||||
|
if (meta_window_requested_dont_bypass_compositor (window))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (window->opacity != 0xFF)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (window->shape_region != NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (priv->argb32 && !meta_window_requested_bypass_compositor (window))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!meta_window_is_monitor_sized (window))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (meta_window_requested_bypass_compositor (window))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (meta_window_is_override_redirect (window))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (priv->does_full_damage)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
sync_unredirected (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = priv->display;
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
Window xwindow = meta_window_get_toplevel_xwindow (priv->window);
|
||||||
|
|
||||||
|
meta_error_trap_push (display);
|
||||||
|
|
||||||
|
if (priv->unredirected)
|
||||||
|
{
|
||||||
|
detach_pixmap (self);
|
||||||
|
XCompositeUnredirectWindow (xdisplay, xwindow, CompositeRedirectManual);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XCompositeRedirectWindow (xdisplay, xwindow, CompositeRedirectManual);
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_error_trap_pop (display);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_set_unredirected (MetaSurfaceActor *actor,
|
||||||
|
gboolean unredirected)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
if (priv->unredirected == unredirected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
priv->unredirected = unredirected;
|
||||||
|
sync_unredirected (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_surface_actor_x11_is_unredirected (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
return priv->unredirected;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_dispose (GObject *object)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (object);
|
||||||
|
|
||||||
|
detach_pixmap (self);
|
||||||
|
free_damage (self);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (meta_surface_actor_x11_parent_class)->dispose (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static MetaWindow *
|
||||||
|
meta_surface_actor_x11_get_window (MetaSurfaceActor *actor)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (META_SURFACE_ACTOR_X11 (actor));
|
||||||
|
|
||||||
|
return priv->window;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_class_init (MetaSurfaceActorX11Class *klass)
|
||||||
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
MetaSurfaceActorClass *surface_actor_class = META_SURFACE_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
|
object_class->dispose = meta_surface_actor_x11_dispose;
|
||||||
|
|
||||||
|
surface_actor_class->process_damage = meta_surface_actor_x11_process_damage;
|
||||||
|
surface_actor_class->pre_paint = meta_surface_actor_x11_pre_paint;
|
||||||
|
surface_actor_class->is_argb32 = meta_surface_actor_x11_is_argb32;
|
||||||
|
surface_actor_class->is_visible = meta_surface_actor_x11_is_visible;
|
||||||
|
|
||||||
|
surface_actor_class->should_unredirect = meta_surface_actor_x11_should_unredirect;
|
||||||
|
surface_actor_class->set_unredirected = meta_surface_actor_x11_set_unredirected;
|
||||||
|
surface_actor_class->is_unredirected = meta_surface_actor_x11_is_unredirected;
|
||||||
|
|
||||||
|
surface_actor_class->get_window = meta_surface_actor_x11_get_window;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_surface_actor_x11_init (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
priv->last_width = -1;
|
||||||
|
priv->last_height = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
create_damage (MetaSurfaceActorX11 *self)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (priv->display);
|
||||||
|
Window xwindow = meta_window_get_toplevel_xwindow (priv->window);
|
||||||
|
|
||||||
|
priv->damage = XDamageCreate (xdisplay, xwindow, XDamageReportBoundingBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
window_decorated_notify (MetaWindow *window,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (user_data);
|
||||||
|
|
||||||
|
free_damage (self);
|
||||||
|
create_damage (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaSurfaceActor *
|
||||||
|
meta_surface_actor_x11_new (MetaWindow *window)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11 *self = g_object_new (META_TYPE_SURFACE_ACTOR_X11, NULL);
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
MetaDisplay *display = meta_window_get_display (window);
|
||||||
|
|
||||||
|
g_assert (!meta_is_wayland_compositor ());
|
||||||
|
|
||||||
|
priv->window = window;
|
||||||
|
priv->display = display;
|
||||||
|
|
||||||
|
create_damage (self);
|
||||||
|
g_signal_connect_object (priv->window, "notify::decorated",
|
||||||
|
G_CALLBACK (window_decorated_notify), self, 0);
|
||||||
|
|
||||||
|
update_is_argb32 (self);
|
||||||
|
|
||||||
|
priv->unredirected = FALSE;
|
||||||
|
sync_unredirected (self);
|
||||||
|
|
||||||
|
clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE);
|
||||||
|
return META_SURFACE_ACTOR (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_surface_actor_x11_set_size (MetaSurfaceActorX11 *self,
|
||||||
|
int width, int height)
|
||||||
|
{
|
||||||
|
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||||
|
|
||||||
|
if (priv->last_width == width &&
|
||||||
|
priv->last_height == height)
|
||||||
|
return;
|
||||||
|
|
||||||
|
priv->size_changed = TRUE;
|
||||||
|
priv->last_width = width;
|
||||||
|
priv->last_height = height;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user