Compare commits
	
		
			632 Commits
		
	
	
		
			3.23.3
			...
			wip/xwayla
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 25fd9e005b | ||
|   | 114bfc04ef | ||
|   | 26dde9dfe0 | ||
|   | 25c9ce2dad | ||
|   | 7d2ef2d821 | ||
|   | 1838ec08a2 | ||
|   | 9a405fb943 | ||
|   | 7515c80d7a | ||
|   | 6ff46b5f64 | ||
|   | 703f05f6e3 | ||
|   | d2c2fe6e09 | ||
|   | e2c02c6014 | ||
|   | c0e6128182 | ||
|   | 4c40b7591d | ||
|   | 6c0e889a85 | ||
|   | 046712a28b | ||
|   | 91c9d5182d | ||
|   | e0105ee425 | ||
|   | 773aab96bf | ||
|   | f53a605c4f | ||
|   | 383f2ed815 | ||
|   | 38a8559fbe | ||
|   | b24136d0d5 | ||
|   | 90826dd660 | ||
|   | 467a6fa8fc | ||
|   | 3974925819 | ||
|   | b157d34417 | ||
|   | a2d13e76cc | ||
|   | a72a2381de | ||
|   | 2d0a1b8179 | ||
|   | 1d97da1631 | ||
|   | 88b5580af7 | ||
|   | 98fcd616a3 | ||
|   | 06d0989014 | ||
|   | c248feb3c1 | ||
|   | 3f2c5ca9bd | ||
|   | 520c56fe53 | ||
|   | d3a670b043 | ||
|   | 6eca267eee | ||
|   | fdefe776d3 | ||
|   | bba8776184 | ||
|   | e075242801 | ||
|   | 0f9686fb5a | ||
|   | 168479862d | ||
|   | 483ed98777 | ||
|   | 14fe6e9c95 | ||
|   | 6584d06bb5 | ||
|   | 92a53f08f4 | ||
|   | a81d4aed7a | ||
|   | 517488ef67 | ||
|   | 33f1706634 | ||
|   | 5685449e15 | ||
|   | a6d67b164a | ||
|   | f950380202 | ||
|   | a4270fa7ac | ||
|   | 35c9280fb6 | ||
|   | 8b92ad1d4b | ||
|   | 0d6e3fd675 | ||
|   | b140e7fbeb | ||
|   | 6c0f107db0 | ||
|   | 61950755ec | ||
|   | bc3162460f | ||
|   | 27a4f9f862 | ||
|   | 88f2441330 | ||
|   | ab04286c6b | ||
|   | e8a62861c9 | ||
|   | 9ac87b36c1 | ||
|   | ce7819949f | ||
|   | 12792f99a0 | ||
|   | 66996dee4b | ||
|   | 2f45e88f06 | ||
|   | c1439e141e | ||
|   | dceb0f1f1f | ||
|   | a7915ff8ae | ||
|   | 420a712ad5 | ||
|   | 9a47e5c832 | ||
|   | dbc63430d8 | ||
|   | 0f861cecac | ||
|   | 586f9666d7 | ||
|   | 05a2331052 | ||
|   | 9f8bee7781 | ||
|   | d9505315da | ||
|   | c9937faf1e | ||
|   | 98606bc046 | ||
|   | 49096f0530 | ||
|   | ff6eb86bb4 | ||
|   | c735eab216 | ||
|   | 299aa9759c | ||
|   | 35e9020f4c | ||
|   | 6d4234e300 | ||
|   | 0457870ff1 | ||
|   | a52c4c2795 | ||
|   | bb8c388a37 | ||
|   | 46cb506f8f | ||
|   | ce20c964a6 | ||
|   | e3f76e9482 | ||
|   | b894fbd9ff | ||
|   | 2ca0871724 | ||
|   | dd12f569d9 | ||
|   | c54377e3ba | ||
|   | 346acaf7f6 | ||
|   | 3343a199c2 | ||
|   | 1fb3c9f8bf | ||
|   | b7b5fb293d | ||
|   | 1455c402b9 | ||
|   | 4c1fe4c30d | ||
|   | 9b97a44760 | ||
|   | 26fa7b8f6a | ||
|   | 7486783692 | ||
|   | 9929efb65e | ||
|   | 5db48faca4 | ||
|   | b0c54b6675 | ||
|   | d8354cb153 | ||
|   | 9a348aa859 | ||
|   | fe6e24ddbd | ||
|   | 7e330bd65f | ||
|   | 3f9c5823cb | ||
|   | 2bdd97e067 | ||
|   | 32fd1e8c08 | ||
|   | e126b6ed16 | ||
|   | 4d8cb5408b | ||
|   | f852d2b0eb | ||
|   | 5c3b27d02f | ||
|   | ead6556b50 | ||
|   | 4afa66fe41 | ||
|   | 408292959e | ||
|   | 2d8d9dea97 | ||
|   | f38c90961a | ||
|   | aa47374d0e | ||
|   | 5aee5048ba | ||
|   | 0e3f80d238 | ||
|   | ef13ee4488 | ||
|   | 8b5d34b24a | ||
|   | c614a2db28 | ||
|   | 7360f51ee8 | ||
|   | 6ae42f3845 | ||
|   | 26b66826dc | ||
|   | 6d082bf442 | ||
|   | aad2280309 | ||
|   | e3d5bc077d | ||
|   | 777963eeb6 | ||
|   | 4cc5b25493 | ||
|   | 49c5228655 | ||
|   | 85638c1b19 | ||
|   | 2507e53d04 | ||
|   | a9c1c6d9fb | ||
|   | 0a8e108f10 | ||
|   | 859b01fc39 | ||
|   | e42206cc43 | ||
|   | 41eea5a942 | ||
|   | 197401fbf8 | ||
|   | 9ab338d7b6 | ||
|   | aa5d8ac68c | ||
|   | 0adc56779f | ||
|   | 67eb289a6a | ||
|   | dfc4d0d523 | ||
|   | 5f2bb43061 | ||
|   | fef81cd628 | ||
|   | 3e8d0204bd | ||
|   | b2a530b326 | ||
|   | 5ab116a87f | ||
|   | 10b0351a59 | ||
|   | b64c69e4bc | ||
|   | c2e49f1bb5 | ||
|   | a3d63d0ac0 | ||
|   | 88cae8bd3d | ||
|   | a6ec2b1d42 | ||
|   | ca600973ba | ||
|   | 4b8dd51c4d | ||
|   | 56c468a2ef | ||
|   | 10b30eaba5 | ||
|   | 328e3f8f4f | ||
|   | 7bd69f0b32 | ||
|   | 538e402d71 | ||
|   | 9af6ec78ab | ||
|   | 41e22ab592 | ||
|   | 1303c626b1 | ||
|   | 7eea82d3d7 | ||
|   | 80e5955918 | ||
|   | ce989976fa | ||
|   | 529e5adb2e | ||
|   | a70ae50ca9 | ||
|   | 74882b2502 | ||
|   | 5f49bda591 | ||
|   | edab8c3a4c | ||
|   | 8153c5b544 | ||
|   | a4cef8586c | ||
|   | 9b9bb9cf86 | ||
|   | dc5b2e396c | ||
|   | d23275bc76 | ||
|   | 48e820235e | ||
|   | 2d3c56b089 | ||
|   | 85b2e59e7e | ||
|   | e1950ed76f | ||
|   | 7938f41c11 | ||
|   | 9f41bdb086 | ||
|   | 8457e2bad6 | ||
|   | 4d7329a7e2 | ||
|   | b4120a75e0 | ||
|   | b19e4592df | ||
|   | e9c9ee844c | ||
|   | f5f0ff0a2f | ||
|   | 68dacb531b | ||
|   | dd82f4afcd | ||
|   | fc010e0edc | ||
|   | 5132ea64be | ||
|   | 82325cbcfd | ||
|   | fb5ebffb8d | ||
|   | 94d843b80e | ||
|   | c32e2d17d9 | ||
|   | 2b05748d5c | ||
|   | cd775929bf | ||
|   | 7303a78b06 | ||
|   | 07b8cc0773 | ||
|   | 1bb0e18042 | ||
|   | 05bc2e2331 | ||
|   | 3b097c7e77 | ||
|   | 0bc312a54b | ||
|   | 2718699ccc | ||
|   | be175558c3 | ||
|   | df39a7d0fd | ||
|   | 43cdf81f6b | ||
|   | 183f4b0c13 | ||
|   | 38a772bce7 | ||
|   | dd451547a5 | ||
|   | 270da95cbc | ||
|   | 76198e0b3b | ||
|   | efc190789f | ||
|   | 81e99c2680 | ||
|   | 755755a2f3 | ||
|   | 4b23eb064c | ||
|   | 498200776c | ||
|   | 27b949d6ba | ||
|   | 27ea62a79d | ||
|   | cf1edff9ed | ||
|   | 5cb5baa7d4 | ||
|   | d620189ae3 | ||
|   | bc041e02b3 | ||
|   | 4b4c2b1afa | ||
|   | 05d15f8885 | ||
|   | 561d71b8ae | ||
|   | 177e47952a | ||
|   | 374bb630f0 | ||
|   | fe5138dfc4 | ||
|   | 68a9675d42 | ||
|   | 020e0bb2ac | ||
|   | b47de58edd | ||
|   | 24195d8d15 | ||
|   | 3a7c37c60a | ||
|   | c69d5d978c | ||
|   | 2f30098ab5 | ||
|   | e146428038 | ||
|   | 5758401443 | ||
|   | f241bdba93 | ||
|   | 410d66ca37 | ||
|   | f2309cdb55 | ||
|   | 3887d25dbc | ||
|   | d6d01c85a6 | ||
|   | d0bfb94ff0 | ||
|   | 2b1537cdf5 | ||
|   | d3362a6f05 | ||
|   | 9cf8aa4584 | ||
|   | c76eedd794 | ||
|   | 9131f26cae | ||
|   | 8ed0dda40d | ||
|   | 0fd9e38175 | ||
|   | 891cab3bb3 | ||
|   | 454bd88d27 | ||
|   | 3ced749c89 | ||
|   | 69b6479502 | ||
|   | a641b59f22 | ||
|   | 704bd4c331 | ||
|   | 229ac9c9dc | ||
|   | e435cf301f | ||
|   | 0608ae2d4e | ||
|   | 3f107da479 | ||
|   | 813de50eba | ||
|   | a4cb1f0f7a | ||
|   | 612432ac3e | ||
|   | 47a01013b1 | ||
|   | 69e7ad4402 | ||
|   | c214eb15bf | ||
|   | e6eac46629 | ||
|   | de61da16ae | ||
|   | bdcb395b33 | ||
|   | 1caa7f7627 | ||
|   | 5b4a96e3a3 | ||
|   | 15dd23a323 | ||
|   | 04d7fcf60d | ||
|   | 9755cd469c | ||
|   | 1bdadfa3e1 | ||
|   | 20fcb88632 | ||
|   | 6791d1b8e2 | ||
|   | 6c8b103a7b | ||
|   | 95d0117784 | ||
|   | 740436ab4d | ||
|   | 89fbf1e1d2 | ||
|   | c391cefd71 | ||
|   | 52af529950 | ||
|   | c30cb069f5 | ||
|   | 99a0b43f28 | ||
|   | af4017de49 | ||
|   | d804ecbd95 | ||
|   | 1ad3382bff | ||
|   | 9787b1cfd5 | ||
|   | 0ac2eba4d3 | ||
|   | 17c54c6e03 | ||
|   | dd14e1cebc | ||
|   | 1e2266aa47 | ||
|   | 472a434212 | ||
|   | 7c226462e0 | ||
|   | 93c6a869ec | ||
|   | 9d914091f5 | ||
|   | afcc1bf512 | ||
|   | 8a29c51b73 | ||
|   | d38c4c1f2d | ||
|   | 2091df3856 | ||
|   | 744b4dcb7c | ||
|   | 0c64c35a8a | ||
|   | 57acbc53fb | ||
|   | ac68631f4c | ||
|   | 8163ca6821 | ||
|   | 094e0356e8 | ||
|   | 63450d69d3 | ||
|   | 0952409de4 | ||
|   | 1c54c7a1bb | ||
|   | f25f14351c | ||
|   | 691e7951ea | ||
|   | 7eaeba520a | ||
|   | 9a5b94a340 | ||
|   | 079b125430 | ||
|   | 770a5a5bff | ||
|   | 0548c9e7d5 | ||
|   | 68a6cc5976 | ||
|   | 2035f2f2e2 | ||
|   | 1892a6b0c4 | ||
|   | b464004bb3 | ||
|   | ea4438284f | ||
|   | d050fdb17f | ||
|   | 9003a42df3 | ||
|   | 9e8ee491e6 | ||
|   | 3b46345db4 | ||
|   | 6b2a111428 | ||
|   | bc56971e18 | ||
|   | fcc0288f0c | ||
|   | 4e03e89869 | ||
|   | 4e17017501 | ||
|   | 63bc86cd43 | ||
|   | ee32ca3efe | ||
|   | a393a614a1 | ||
|   | 753e9c65a1 | ||
|   | 409c92a68f | ||
|   | 53a93deafc | ||
|   | 3a374a6db5 | ||
|   | aec4b4af97 | ||
|   | 2392432780 | ||
|   | 0d5274b3b7 | ||
|   | 42c0809216 | ||
|   | 420311b463 | ||
|   | efae039ad9 | ||
|   | e60dfd5b23 | ||
|   | df45c50d0b | ||
|   | 8f691c28f3 | ||
|   | a77da353f3 | ||
|   | 70a4f59960 | ||
|   | ac813d5285 | ||
|   | 5d3e7d6ffd | ||
|   | 5b378ea648 | ||
|   | ea04ff5d46 | ||
|   | 982ad7361b | ||
|   | 10dfe2059b | ||
|   | 61e9594f63 | ||
|   | 2d8eaa082f | ||
|   | 29b240e883 | ||
|   | e081bb3921 | ||
|   | ad24967d78 | ||
|   | 90d83b4bb9 | ||
|   | eb3ff3f44a | ||
|   | db14e6099e | ||
|   | 5aa02c0378 | ||
|   | 73b2b30a1d | ||
|   | cf6b7bcb79 | ||
|   | 4b86af839f | ||
|   | f434f88c0c | ||
|   | cdedd017d6 | ||
|   | a48c9d6cd9 | ||
|   | 1039386e10 | ||
|   | 944339f6a5 | ||
|   | 4cfcd4bce0 | ||
|   | 4f386e5131 | ||
|   | 3ace913aed | ||
|   | 8f2daed9e0 | ||
|   | c5dc0f4a2e | ||
|   | 615587cd06 | ||
|   | df068a3649 | ||
|   | 7967ceee98 | ||
|   | 979bc4390a | ||
|   | e20e60783a | ||
|   | 38c5a1610e | ||
|   | 572610d01e | ||
|   | 21b2eff334 | ||
|   | 35388fb33c | ||
|   | aa5738c777 | ||
|   | f7ffb1790f | ||
|   | 65e9c89ed9 | ||
|   | 5fafaf92df | ||
|   | 4e4b24e7a8 | ||
|   | 542ed1d024 | ||
|   | eda0f45ab5 | ||
|   | 4fdc551209 | ||
|   | 58043cbc8b | ||
|   | 09fa27cd09 | ||
|   | d8ee96c6cb | ||
|   | 3821ed162b | ||
|   | 1f20e82a96 | ||
|   | 1079850621 | ||
|   | aab5f7c42b | ||
|   | f8a6c27791 | ||
|   | 95e9fa10ef | ||
|   | 89871e04aa | ||
|   | 1705a26fc7 | ||
|   | 95c924460a | ||
|   | 97b1a8dfc8 | ||
|   | fbcc8fae77 | ||
|   | 3d2cb7f1ef | ||
|   | fc9a24824a | ||
|   | 383ba566bd | ||
|   | d200868459 | ||
|   | 690b232258 | ||
|   | e078838774 | ||
|   | 1b03dd6704 | ||
|   | 1171c4f16d | ||
|   | a9f139cab6 | ||
|   | 5ba38a4ab6 | ||
|   | 8f5a0ec83d | ||
|   | bb2e8ff09a | ||
|   | 1fe10f09d7 | ||
|   | 328b4d24c6 | ||
|   | 4b2d4a0169 | ||
|   | 3564b5845e | ||
|   | 2907b234c9 | ||
|   | e1ffe15d94 | ||
|   | 1b0a3f11f9 | ||
|   | b202f5d094 | ||
|   | cd5c52b550 | ||
|   | 46d516cb04 | ||
|   | 4d0a886c45 | ||
|   | 5db3eebfbb | ||
|   | 36ee6f656a | ||
|   | 966725fcb4 | ||
|   | 90923903ae | ||
|   | 191525cdb4 | ||
|   | 2d18b18fe5 | ||
|   | ead62f1901 | ||
|   | f97b2d49f5 | ||
|   | 827db6f7c7 | ||
|   | 91c6a144da | ||
|   | cb86745245 | ||
|   | 6b384dc8d1 | ||
|   | a25915f4f9 | ||
|   | 92a7690e19 | ||
|   | 1372690c7f | ||
|   | bd2ca79a48 | ||
|   | 6d64123849 | ||
|   | 042a95ef98 | ||
|   | 2d3af657e7 | ||
|   | 4ebc55f2b3 | ||
|   | 7c80e80a92 | ||
|   | 4c5ec5dfa8 | ||
|   | c995c0ad1f | ||
|   | d870ed4317 | ||
|   | 9950b4de75 | ||
|   | 7e3fbfbdd2 | ||
|   | ff453c1143 | ||
|   | efd9d467f2 | ||
|   | 07ce981cb0 | ||
|   | 5af848d991 | ||
|   | fff7da2a96 | ||
|   | d6fc41b73e | ||
|   | 9d38ffa6e3 | ||
|   | 8bcdf9ba61 | ||
|   | 938891a2e2 | ||
|   | 45c9786434 | ||
|   | cfbc4fe4d0 | ||
|   | dae5f06069 | ||
|   | 1ff9bbd59c | ||
|   | cc838ead8b | ||
|   | 9a123847e0 | ||
|   | 1f0659d516 | ||
|   | 4f31b53521 | ||
|   | 962e1d5a69 | ||
|   | 57f80f091f | ||
|   | 9c79a1631d | ||
|   | c7853730ed | ||
|   | 2cd78bffd9 | ||
|   | 1597b357a1 | ||
|   | 73524cadd4 | ||
|   | 6fa8238ebf | ||
|   | 1c6eef48f1 | ||
|   | 1fdf2ac746 | ||
|   | 3ae9feef0c | ||
|   | e9a8208607 | ||
|   | e357b4a46a | ||
|   | 097ca01411 | ||
|   | e8197e8e05 | ||
|   | 7fc6b8a746 | ||
|   | 0fd9c00580 | ||
|   | 4a51a1dfe5 | ||
|   | 9fb8abf840 | ||
|   | 449320cd23 | ||
|   | 12b69dbabb | ||
|   | 4652bde3d7 | ||
|   | 9b4e1903e1 | ||
|   | 702facbc91 | ||
|   | 339340df34 | ||
|   | 1ad386bc28 | ||
|   | 28a8c714ea | ||
|   | c9f18bfef3 | ||
|   | 20cd885443 | ||
|   | 3f994646f2 | ||
|   | f45e7703ba | ||
|   | 1ee0412177 | ||
|   | 4b33f05eda | ||
|   | 81923410f6 | ||
|   | f19cb6a610 | ||
|   | cde1a730e8 | ||
|   | d6efdfab4b | ||
|   | f7b6271d86 | ||
|   | 8d1be7ffc0 | ||
|   | a0af7e94a6 | ||
|   | f607b03456 | ||
|   | 644ee666f6 | ||
|   | ee0677a021 | ||
|   | 0b4d80d74f | ||
|   | 1a2b493d17 | ||
|   | 9ceeddd952 | ||
|   | e1849ccbfa | ||
|   | 6262b46928 | ||
|   | 8752f40792 | ||
|   | 8c5600e81b | ||
|   | 4c1b48d0cc | ||
|   | 536ae8430b | ||
|   | aaddf44d45 | ||
|   | 0c42faf34d | ||
|   | be13d0f8ee | ||
|   | 81438eebef | ||
|   | b70187c2d9 | ||
|   | c041851fa5 | ||
|   | b59a8b1de3 | ||
|   | e3b9fe7e58 | ||
|   | 0177ab45af | ||
|   | bc951557e8 | ||
|   | 2c32d94e1d | ||
|   | 5d9e2d8d2e | ||
|   | 0637537355 | ||
|   | 63ed134165 | ||
|   | a6f464a600 | ||
|   | 0a0c49af71 | ||
|   | 3c6d688c87 | ||
|   | 5d66a13397 | ||
|   | ff633f295e | ||
|   | 310064601c | ||
|   | 78799e58d2 | ||
|   | 4fa8b74dc7 | ||
|   | bf8b4e9927 | ||
|   | f48acd8448 | ||
|   | d0c9d2dc7b | ||
|   | d9a0f2a88d | ||
|   | 4e812410cc | ||
|   | 0873e3812b | ||
|   | 7eac28189b | ||
|   | 1650c35e38 | ||
|   | 156c478ccb | ||
|   | 10e6eae0dd | ||
|   | f519093f89 | ||
|   | 8a8ab6c673 | ||
|   | 9e28303588 | ||
|   | 6776329cf5 | ||
|   | 2e4c516d43 | ||
|   | d920eaba4a | ||
|   | 376a76a082 | ||
|   | c6d940d3b2 | ||
|   | 95c101a0ba | ||
|   | 239671f882 | ||
|   | 12150c1ca7 | ||
|   | a251675cc0 | ||
|   | d188949101 | ||
|   | d3920ddb67 | ||
|   | bc5077f623 | ||
|   | 68f3b5849a | ||
|   | 6de3e4a07e | ||
|   | 1fb0e8e9bb | ||
|   | 20b8743f21 | ||
|   | 016359ede2 | ||
|   | 410bad88a8 | ||
|   | c98bab8327 | ||
|   | a422d6fe08 | ||
|   | 98ee85ce82 | ||
|   | 5a8509f895 | ||
|   | 06770b0dd4 | ||
|   | af616c96d4 | ||
|   | f5b2d79f3b | ||
|   | d644993a74 | ||
|   | 2df4ebff47 | ||
|   | 9337d18468 | ||
|   | 317b734dcc | ||
|   | e35ac9be8d | ||
|   | 6dbb524b9f | ||
|   | a3f0bf3ff8 | ||
|   | ecf796f82b | ||
|   | 0a4fb008f3 | ||
|   | 79fd91ec35 | ||
|   | e659b07c39 | ||
|   | 441b854d41 | ||
|   | c936056663 | ||
|   | e22bbd4b14 | ||
|   | 103df63023 | ||
|   | 36f2d5b0f1 | ||
|   | 920cc15ea9 | ||
|   | 842ff5d6aa | ||
|   | e1b10769e5 | ||
|   | 4177d4f9f4 | ||
|   | 9b64e09a24 | ||
|   | f5a70aa1e2 | ||
|   | 2df35d636e | ||
|   | f7fd018cf8 | ||
|   | 405aa8fb9e | ||
|   | 0a826da330 | ||
|   | 139bed73f8 | ||
|   | 778f92e170 | ||
|   | 5a43cc5cf9 | ||
|   | 81b11929f7 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -86,6 +86,7 @@ src/pointer-constraints-unstable-v*-server-protocol.h | ||||
| src/xdg-foreign-unstable-v*-protocol.c | ||||
| src/xdg-foreign-unstable-v*-server-protocol.h | ||||
| src/meta/meta-version.h | ||||
| src/libmutter-*.pc | ||||
| doc/reference/*.args | ||||
| doc/reference/*.bak | ||||
| doc/reference/*.hierarchy | ||||
|   | ||||
							
								
								
									
										198
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										198
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,201 @@ | ||||
| 3.25.91 | ||||
| ======= | ||||
| * Reduce memory use of suspended instances [Jonas; #786299] | ||||
| * Make supported scales determination saner [Rui; #786474] | ||||
| * Fix crash on inhibit-shortcuts dialog reponse [Jonas; #786385] | ||||
| * Support libinput's tag-and-drag setting [freeroot; #775755] | ||||
| * Avoid overlapping keybindings with multiple layouts [Jonas; #786408] | ||||
| * Fix non-transformed cursor on rotated monitors [Jonas; #786023] | ||||
| * Avoid unnecessary work during background painting [Alessandro; #783512] | ||||
| * Misc. bug fixes [Alberts, Jonas, Mario; #691611, #786300, #777732, #786568] | ||||
|  | ||||
| Contributors: | ||||
|   freeroot, Jonas Ådahl, Alessandro Bono, Carlos Garnacho, Rui Matos, | ||||
|   Alberts Muktupāvels, Mario Sanchez Prada | ||||
|  | ||||
| Translations: | ||||
|   Muhammet Kara [tr], Claude Paroz [fr], Мирослав Николић [sr, sr@latin], | ||||
|   Pawan Chitrakar [ne], Kukuh Syafaat [id] | ||||
|  | ||||
| 3.25.90 | ||||
| ======= | ||||
| * Add zwp_linux_dmabuf_v1 support [Daniel; #785262] | ||||
| * Add (x)wayland shortcut inhibitor support [Olivier; #783342] | ||||
| * Misc. bug fixes [Daniel, Carlos, Cosimo; #785263, #785347, #767805] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Cosimo Cecchi, Olivier Fourdan, Carlos Garnacho, Daniel Stone | ||||
|  | ||||
| Translations: | ||||
|   Fabio Tomat [fur], Kukuh Syafaat [id], Aurimas Černius [lt], | ||||
|   Daniel Mustieles [es], Baurzhan Muftakhidinov [kk], Jordi Mas [ca], | ||||
|   Matej Urbančič [sl], Marek Cernocky [cs], gogo [hr], Fran Dieguez [gl], | ||||
|   Balázs Meskó [hu] | ||||
|  | ||||
| 3.25.4 | ||||
| ====== | ||||
| * Do not throttle motion events on tablet tools [Carlos; #783535] | ||||
| * Handle left-handed mode on pen/eraser devices [Carlos; #782027] | ||||
| * Add wl_surface.damage_buffer() support [Jonas; #784080] | ||||
| * Fix crash when moving across on-adjacent monitors [Jonas; #783630] | ||||
| * Fix window moving/resizing via tablet tools [Jason; #777333] | ||||
| * Support fractional monitor scaling [Jonas, Marco; #765011] | ||||
| * Keep override-redirect windows stacked on top [Rui; #780485] | ||||
| * Implement tablet rings/strips configuration [Carlos; #782033] | ||||
| * Support tablet wheel events on wayland [Jason; #783716] | ||||
| * Move g-s-d xrandr functionality into mutter [Rui; #781906] | ||||
| * Misc. bug fixes [Florian, Jason, Miguel, Carlos, Jonas; #783502, #784009, | ||||
|   #784223, #784272, #784402, #784881, #762083, #784867, #781723] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Miguel A. Vico, Emmanuele Bassi, Carlos Garnacho, Jason Gerecke, | ||||
|   Rui Matos, Florian Müllner, Marco Trevisan (Treviño) | ||||
|  | ||||
| 3.25.3 | ||||
| ====== | ||||
| * Ignore hotplug-mode-update value on startup [Marco; #783073] | ||||
| * Implement configurable monitor scales on X11 [Jonas; #777732] | ||||
| * Fix handling of tiled monitors [Jonas; #781723] | ||||
| * Handle multiple keycodes for keysym [Christian; #781223] | ||||
| * Consider subsurfaces when grabbing [mindtree; #781811] | ||||
| * Fix logic for HiPDPI scaling of TV outputs [Christian; #777347] | ||||
| * Fix handling of left-handed mode on pen/eraser devices [Carlos; #782027] | ||||
| * Fix output cycling in non-display-attached tablets [Carlos; #782032] | ||||
| * Fix wacom cursor offset on wayland [Jason; #784009] | ||||
| * Handle EXIF orientation of backgrounds [Silvère; #783125] | ||||
| * Misc. bug fixes [Piotr, Tim, Bastien, Jonas, Florian, Benoit, Carlos; #772218, | ||||
|   #783161, #780407, #783113, #783293, #783505, #781703] | ||||
|  | ||||
| Contributors: | ||||
|   mitchmindtree, Jonas Ådahl, Ikey Doherty, Piotr Drąg, Carlos Garnacho, | ||||
|   Jason Gerecke, Benoit Gschwind, Christian Kellner, Silvère Latchurié, | ||||
|   Tim Lunn, Florian Müllner, Bastien Nocera, Marco Trevisan (Treviño) | ||||
|  | ||||
| Translations: | ||||
|   Fabio Tomat [fur], Kukuh Syafaat [id], Khaled Hosny [ar], | ||||
|   Daniel Mustieles [es] | ||||
|  | ||||
| 3.25.2 | ||||
| ====== | ||||
| * Fix frame updates on hide-titlebar-when-maximized changes [Florian; #781862] | ||||
| * Fix accessible screen coordinates on X11 [Florian; #781902] | ||||
| * Use less CPU when rendering fast-updating windows [Carlos, Emmanuele; #782344] | ||||
| * Compute geometry of clients that don't set one explicitly [Olivier; #782213] | ||||
| * Fix copy+paste of UTF8 strings between X11 and wayland [Carlos; #782472] | ||||
| * Fix non-wayland builds [Chris; #780533] | ||||
| * Add plugin vfunc to implement a custom force-quit dialog [Carlos; #711619] | ||||
| * Fix swapped red and blue channels in CoglTexture data [Carlos; #779234 | ||||
| * Fix build where libtool's link_all_deplibs defaults to 'no' [Marco; #782821] | ||||
| * Fix glitches when opening a window maximized [Olivier; #781353, #782183] | ||||
| * Fix wrong cursor after window underneath the pointer changed [Carlos; #755164] | ||||
| * Implement support for disable-while-typing option [Evan; #764852] | ||||
| * Emit size-change signal when tiling [Alessandro; #782968] | ||||
| * Misc. bug fixes [Nigel, Matthias, Jonas; #759085, #780215, #782156, #782152] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Emmanuele Bassi, Alessandro Bono, Olivier Fourdan, | ||||
|   Carlos Garnacho, Matthias Liertzer, Florian Müllner, Nigel Taylor, | ||||
|   Marco Trevisan (Treviño), Chris Vine, Evan Welsh | ||||
|  | ||||
| Translations: | ||||
|   Fabio Tomat [fur], Jordi Mas [ca], Mario Blättermann [de], | ||||
|   Emin Tufan Çetin [tr], Balázs Úr [hu] | ||||
|  | ||||
| 3.25.1 | ||||
| ====== | ||||
| * Always sync window geometry on state changes [Jonas; #780292] | ||||
| * Use EGL instead of GLX when drawing using GLES [Jonas; #771636] | ||||
| * Fix HiDPI detection on vertical monitor layouts [Carlos; #777687] | ||||
| * Get double-click timing from desktop mouse settings [Armin; #771576] | ||||
| * Scale relative motion deltas with monitor scale [Jonas, Carlos; #778119] | ||||
| * Use texture fallback when setting hardware cursor fails [Jente; #770020] | ||||
| * Fix lock-up when using additional theme variants [Shantanu; #780254] | ||||
| * Rework low-level monitor configuration [Jonas; #777732] | ||||
| * Fix building with GLES2 instead of GL [Mario; #781398] | ||||
| * Misc. bug fixes [Jonas, Piotr, Philip; #780304, #772218, #781242, #781391] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Philip Chimento, Piotr Drąg, Carlos Garnacho, Shantanu Goel, | ||||
|   Jente Hidskes, Armin Krezović, Rui Matos, Florian Müllner, Mario Sanchez Prada | ||||
|  | ||||
| Translations: | ||||
|   Yuras Shumovich [be], Yosef Or Boczko [he], Tom Tryfonidis [el], | ||||
|   Fabio Tomat [fur], Kukuh Syafaat [id] | ||||
|  | ||||
| 3.24.0 | ||||
| ====== | ||||
|  | ||||
| Translations: | ||||
|   Yuri Myasoedov [ru], Rūdolfs Mazurs [lv], Jordi Mas [ca] | ||||
|  | ||||
| 3.23.92 | ||||
| ======= | ||||
| * Properly handle EGLOutput acquire errors [Jonas, Miguel; #779112] | ||||
| * Fix crash when a window closes during Alt+Tab [Rui; #779483] | ||||
| * Implement DnD handling code in wayland [Hyungwon; #765003] | ||||
| * Fix fallout from pixel conversion optimization in 3.23.91 [Carlos; #779234] | ||||
| * Fix mouse input stopping to work in applications [Carlos; #763246] | ||||
| * Fix DnD between QT5 and GTK3 applications on wayland [Carlos; #779757] | ||||
| * Make EDID reading less fragile [Jonas; #779837] | ||||
| * Add support for tablet grouping [Carlos; #779986] | ||||
| * Misc. bug fixes and cleanups [Rui, Jonas; #779436, #779001, #779745] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Miguel A. Vico, Olivier Fourdan, Carlos Garnacho, | ||||
|   Hyungwon Hwang, Rui Matos | ||||
|  | ||||
| Translations: | ||||
|   Chao-Hsiung Liao [zh_TW], Sveinn í Felli [is], Ask Hjorth Larsen [da], | ||||
|   Changwoo Ryu [ko], Aurimas Černius [lt], GNOME Translation Robot [gd], | ||||
|   Marek Černocký [cs], Fran Dieguez [gl], Dušan Kazik [sk] | ||||
|  | ||||
| 3.23.91 | ||||
| ======= | ||||
| * Give libinput read-only access to /sys [Carlos; #778472] | ||||
| * Allow edge-scrolling without 2-finger-scroll capable devices [Rui; #778554] | ||||
| * Fullscreen windows on the requested monitor on wayland [Rui; #772525] | ||||
| * Implement threaded swap_event fallback for NVIDIA driver [Owen; #779039] | ||||
| * Avoid pixel conversions when storing textures from cairo [Carlos; #779234] | ||||
| * Misc. bug fixes [Piotr, Rui, Florian; #772218, #776919, #778831, #642652] | ||||
|  | ||||
| Contributors: | ||||
|   Piotr Drąg, Carlos Garnacho, Rui Matos, Florian Müllner, Owen W. Taylor | ||||
|  | ||||
| Translations: | ||||
|   Inaki Larranaga Murgoitio [eu], Daniel Mustieles [es], Claude Paroz [fr], | ||||
|   Mario Blättermann [de], Kjartan Maraas [nb], Piotr Drąg [pl], | ||||
|   Andika Triwidada [id], Anders Jonsson [sv], Milo Casagrande [it], | ||||
|   Fabio Tomat [fur], Rafael Fontenelle [pt_BR], | ||||
|   Мирослав Николић [sr, sr@latin], Balázs Meskó [hu], Chao-Hsiung Liao [zh_TW] | ||||
|  | ||||
| 3.23.90 | ||||
| ======= | ||||
| * Fix window menu placement with HiDPI [Jonas; #776055] | ||||
| * Improve EGLStream support [Jonas; #773629] | ||||
| * Start moving low-level monitor configuration into mutter [Jonas; #777732] | ||||
| * Fix erroneous key event repeats [Rui; #774989] | ||||
| * Don't hardcode seat ID in ClutterDeviceManager [Carlos; #778092] | ||||
| * Fix "ghost" cursors in multi-monitor setups [Jonas; #771056] | ||||
| * Use eglGetPlatformDisplay [Adam; #772422] | ||||
| * Fix erratic raise_or_lower behavior [Jose; #705200] | ||||
| * Fix coordinate mapping of absolute devices [Carlos; #774115] | ||||
| * Show OSD on tablet mode switches [Carlos; #771098] | ||||
| * Make mutter libs parallel installable [Jonas; #777317] | ||||
| * Only apply keymap when not running nested [Jonas; #777800] | ||||
| * Set right scale for tablet tool cursors on HiDPI [Carlos; #778474] | ||||
| * Adjust server-side shadows to match Adwaita [Juraj; #744667] | ||||
| * Misc. bug fixes [Jonas, Bastien, Carlos, Peter, Lionel, Jeremy, Florian; | ||||
|   #774891, #777389, #777691, #778262, #776543, #778684, #778699, #744667] | ||||
|  | ||||
| Contributors: | ||||
|   Jonas Ådahl, Jeremy Bicha, Piotr Drąg, Juraj Fiala, Carlos Garnacho, | ||||
|   Peter Hutterer, Adam Jackson, Lionel Landwerlin, Jose Marino, Rui Matos, | ||||
|   Florian Müllner, Bastien Nocera | ||||
|  | ||||
| Translations: | ||||
|   Kjartan Maraas [nb], Mandy Wang [zh_CN], Marek Černocký [cs], | ||||
|   Anders Jonsson [sv], Dušan Kazik [sk], Piotr Drąg [pl], Matej Urbančič [sl] | ||||
|  | ||||
| 3.23.3 | ||||
| ====== | ||||
| * Fix frequent freezes in multihead setups on wayland [Rui; #774557] | ||||
|   | ||||
							
								
								
									
										25
									
								
								autogen.sh
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								autogen.sh
									
									
									
									
									
								
							| @@ -6,16 +6,23 @@ test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| REQUIRED_AUTOMAKE_VERSION=1.11 | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
|   && test -d $srcdir/src) || { | ||||
| olddir="$(pwd)" | ||||
|  | ||||
| cd "${srcdir}" | ||||
|  | ||||
| (test -f configure.ac \ | ||||
|   && test -d src) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
|     echo " top-level metacity directory" | ||||
|     echo " top-level mutter directory" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| which gnome-autogen.sh || { | ||||
|     echo "You need to install gnome-common from GNOME Subversion (or from" | ||||
|     echo "your distribution's package manager)." | ||||
|     exit 1 | ||||
| } | ||||
| . gnome-autogen.sh | ||||
| aclocal --install || exit 1 | ||||
| intltoolize --force --copy --automake || exit 1 | ||||
| autoreconf --verbose --force --install || exit 1 | ||||
|  | ||||
| cd "${olddir}" | ||||
|  | ||||
| if [ "$NOCONFIGURE" = "" ]; then | ||||
|     "${srcdir}/configure" "$@" || exit 1 | ||||
| fi | ||||
|   | ||||
| @@ -37,7 +37,7 @@ AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| INTROSPECTION_GIRS = | ||||
|  | ||||
| # the base include path for headers | ||||
| clutter_base_includedir = $(includedir)/mutter/clutter-$(CLUTTER_API_VERSION) | ||||
| clutter_base_includedir = $(includedir)/mutter/clutter-$(LIBMUTTER_API_VERSION) | ||||
| clutter_includedir = $(clutter_base_includedir)/clutter | ||||
| clutter_deprecateddir = $(clutter_base_includedir)/clutter/deprecated | ||||
|  | ||||
| @@ -356,7 +356,7 @@ EXTRA_DIST += clutter-version.h.in clutter-version.h | ||||
| # key symbol update script | ||||
| EXTRA_DIST += clutter-keysyms-update.pl | ||||
|  | ||||
| pc_files += mutter-clutter-$(CLUTTER_API_VERSION).pc | ||||
| pc_files += mutter-clutter-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| # in order to be compatible with Clutter < 1.10, when we shipped a single | ||||
| # shared library whose name was determined by the single backend it | ||||
| @@ -442,10 +442,10 @@ x11_introspection = $(x11_source_c) $(x11_source_h) | ||||
| clutterx11_includedir = $(clutter_includedir)/x11 | ||||
| clutterx11_include_HEADERS = $(x11_source_h) | ||||
|  | ||||
| mutter-clutter-x11-$(CLUTTER_API_VERSION).pc: mutter-clutter-$(CLUTTER_API_VERSION).pc | ||||
| mutter-clutter-x11-@LIBMUTTER_API_VERSION@.pc: mutter-clutter-$(LIBMUTTER_API_VERSION).pc | ||||
| 	$(QUIET_GEN)cp -f $< $(@F) | ||||
|  | ||||
| pc_files += mutter-clutter-x11-$(CLUTTER_API_VERSION).pc | ||||
| pc_files += mutter-clutter-x11-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| # Shared cogl backend files | ||||
| cogl_source_h = | ||||
| @@ -583,17 +583,17 @@ nodist_clutter_include_HEADERS = clutter-config.h $(built_source_h) | ||||
| clutter_deprecated_HEADERS = $(deprecated_h) | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| mutterlib_LTLIBRARIES = libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_LIBADD = \ | ||||
| libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LIBADD = \ | ||||
| 	$(LIBM) \ | ||||
| 	$(CLUTTER_LIBS) \ | ||||
| 	$(top_builddir)/../cogl/cogl/libmutter-cogl.la \ | ||||
| 	$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango.la \ | ||||
| 	$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path.la \ | ||||
| 	$(top_builddir)/../cogl/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(top_builddir)/../cogl/cogl-pango/libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(top_builddir)/../cogl/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(NULL) | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \ | ||||
| libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \ | ||||
| 	$(backend_source_c) \ | ||||
| 	$(backend_source_h) \ | ||||
| 	$(backend_source_c_priv) \ | ||||
| @@ -611,12 +611,12 @@ libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \ | ||||
| 	$(cally_sources_private) \ | ||||
| 	$(NULL) | ||||
|  | ||||
| nodist_libmutter_clutter_@CLUTTER_API_VERSION@_la_SOURCES = \ | ||||
| nodist_libmutter_clutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \ | ||||
| 	$(backend_source_built) \ | ||||
| 	$(built_source_c) \ | ||||
| 	$(built_source_h) | ||||
|  | ||||
| libmutter_clutter_@CLUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| libmutter_clutter_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	$(CLUTTER_LINK_FLAGS) \ | ||||
| 	$(CLUTTER_LT_LDFLAGS) \ | ||||
| 	-export-dynamic \ | ||||
| @@ -630,13 +630,13 @@ install-exec-local: | ||||
| 	    rm -f $$lib.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION); \ | ||||
| 	  ) ; \ | ||||
| 	  (cd $(DESTDIR)$(mutterlibdir) && \ | ||||
| 	    { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \ | ||||
| 	      { rm -f $$lib.0 && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \ | ||||
| 	    { ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0 || \ | ||||
| 	      { rm -f $$lib.0 && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib.0; }; \ | ||||
| 	    } \ | ||||
| 	  ) ; \ | ||||
| 	  (cd $(DESTDIR)$(mutterlibdir) && \ | ||||
| 	    { ln -s -f libmutter-clutter-$(CLUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \ | ||||
| 	      { rm -f $$lib && ln -s libmutter-clutter-1.0.so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \ | ||||
| 	    { ln -s -f libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib || \ | ||||
| 	      { rm -f $$lib && ln -s libmutter-clutter-$(LIBMUTTER_API_VERSION).so.0.$(CLUTTER_LT_CURRENT).$(CLUTTER_LT_REVISION) $$lib; }; \ | ||||
| 	    } \ | ||||
| 	  ) ; \ | ||||
| 	done | ||||
| @@ -644,59 +644,65 @@ install-exec-local: | ||||
| # gobject-introspection rules | ||||
| -include $(INTROSPECTION_MAKEFILE) | ||||
|  | ||||
| INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/../cogl/cogl --add-include-path=$(top_builddir)/../cogl/cogl-pango | ||||
| INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/../cogl/cogl --includedir=$(top_builddir)/../cogl/cogl-pango | ||||
| INTROSPECTION_SCANNER_ARGS = \ | ||||
| 	--add-include-path=$(top_builddir)/../cogl/cogl \ | ||||
| 	--add-include-path=$(top_builddir)/../cogl/cogl-pango | ||||
| INTROSPECTION_COMPILER_ARGS = \ | ||||
| 	--includedir=$(top_builddir)/../cogl/cogl \ | ||||
| 	--includedir=$(top_builddir)/../cogl/cogl-pango | ||||
| INTROSPECTION_SCANNER_ENV = \ | ||||
| 	PKG_CONFIG_PATH=$(top_builddir)/../cogl/cogl/:$(top_builddir)/../cogl/cogl-pango/:$${PKG_CONFIG_PATH} | ||||
|  | ||||
| Clutter-@CLUTTER_API_VERSION@.gir: libmutter-clutter-@CLUTTER_API_VERSION@.la Makefile | ||||
| Clutter-@LIBMUTTER_API_VERSION@.gir: libmutter-clutter-@LIBMUTTER_API_VERSION@.la Makefile | ||||
|  | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Clutter | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@ | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_FILES = \ | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Clutter | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_FILES = \ | ||||
| 	$(clutter_include_HEADERS) \ | ||||
| 	$(clutter_deprecated_HEADERS) \ | ||||
| 	$(nodist_clutter_include_HEADERS) \ | ||||
| 	$(source_c) \ | ||||
| 	$(deprecated_c) \ | ||||
| 	$(built_source_c) | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-1.0 CoglPango-1.0 Atk-1.0 Json-1.0 | ||||
| Clutter_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_INCLUDES = GL-1.0 GObject-2.0 cairo-1.0 Cogl-@LIBMUTTER_API_VERSION@ CoglPango-@LIBMUTTER_API_VERSION@ Atk-1.0 Json-1.0 | ||||
| Clutter_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='clutter/clutter.h' \ | ||||
| 	--pkg-export=mutter-clutter-@CLUTTER_API_VERSION@ | ||||
| 	--pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@ | ||||
|  | ||||
| INTROSPECTION_GIRS += Clutter-@CLUTTER_API_VERSION@.gir | ||||
| INTROSPECTION_GIRS += Clutter-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| Cally-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir | ||||
| Cally-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = Cally | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_VERSION = @CLUTTER_API_VERSION@ | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_FILES = $(cally_sources_h) $(cally_sources_c) | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Cally_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Cally | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_FILES = $(cally_sources_h) $(cally_sources_c) | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='cally/cally.h' \ | ||||
| 	--pkg-export=mutter-cally-@CLUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir | ||||
| 	--pkg-export=mutter-cally-@LIBMUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| INTROSPECTION_GIRS += Cally-@CLUTTER_API_VERSION@.gir | ||||
| INTROSPECTION_GIRS += Cally-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| ClutterX11-@CLUTTER_API_VERSION@.gir: Makefile Clutter-@CLUTTER_API_VERSION@.gir | ||||
| ClutterX11-@LIBMUTTER_API_VERSION@.gir: Makefile Clutter-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_NAMESPACE = ClutterX11 | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_INCLUDES = xlib-2.0 | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_LIBS = libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_FILES = $(x11_introspection) | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| ClutterX11_@CLUTTER_API_VERSION_AM@_gir_SCANNERFLAGS = \ | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = ClutterX11 | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_INCLUDES = xlib-2.0 | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_FILES = $(x11_introspection) | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS) | ||||
| ClutterX11_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--c-include='clutter/x11/clutter-x11.h' \ | ||||
| 	--pkg-export=mutter-clutter-x11-@CLUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@CLUTTER_API_VERSION@.gir | ||||
| 	--pkg-export=mutter-clutter-x11-@LIBMUTTER_API_VERSION@ \ | ||||
| 	--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| INTROSPECTION_GIRS += ClutterX11-@CLUTTER_API_VERSION@.gir | ||||
| INTROSPECTION_GIRS += ClutterX11-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| # INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to | ||||
| # install anything - we need to install inside our prefix. | ||||
|   | ||||
| @@ -34,6 +34,7 @@ stamp-marshal: $(marshal_list) | ||||
| 	$(AM_V_GEN)$(GLIB_GENMARSHAL) \ | ||||
| 		--prefix=$(glib_marshal_prefix) \ | ||||
| 		--header \ | ||||
| 		--valist-marshallers \ | ||||
| 	$(marshal_list) > xgen-mh \ | ||||
| 	&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \ | ||||
| 	&& rm -f xgen-mh \ | ||||
| @@ -43,10 +44,11 @@ $(marshal_h): stamp-marshal | ||||
| 	@true | ||||
|  | ||||
| $(marshal_c): $(marshal_h) | ||||
| 	$(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \ | ||||
| 	$(GLIB_GENMARSHAL) \ | ||||
| 	$(AM_V_GEN)$(GLIB_GENMARSHAL) \ | ||||
| 		--prefix=$(glib_marshal_prefix) \ | ||||
| 		--body \ | ||||
| 	$(marshal_list)) > xgen-mc \ | ||||
| 	&& cp xgen-mc $(marshal_c) \ | ||||
| 		--valist-marshallers \ | ||||
| 		--prototypes \ | ||||
| 	$(marshal_list) > xgen-mc \ | ||||
| 	&& (cmp -s xgen-mc $(marshal_c) || cp -f xgen-mc $(marshal_c)) \ | ||||
| 	&& rm -f xgen-mc | ||||
|   | ||||
| @@ -781,7 +781,7 @@ _cally_actor_get_top_level_origin (ClutterActor *actor, | ||||
|                    "position of the stage"); | ||||
|     } | ||||
|   else | ||||
| #else | ||||
| #endif | ||||
|     { | ||||
|       static gboolean yet_warned = FALSE; | ||||
|  | ||||
| @@ -793,7 +793,6 @@ _cally_actor_get_top_level_origin (ClutterActor *actor, | ||||
|                      "atk_component_get_extents() with ATK_XY_SCREEN."); | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|   if (xp) | ||||
|     *xp = x; | ||||
|   | ||||
| @@ -2656,7 +2656,15 @@ _clutter_actor_signal_queue_redraw (ClutterActor *self, | ||||
|   _clutter_actor_queue_redraw_on_clones (self); | ||||
|  | ||||
|   /* calls klass->queue_redraw in default handler */ | ||||
|   g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin); | ||||
|   if (g_signal_has_handler_pending (self, actor_signals[QUEUE_REDRAW], | ||||
|                                     0, TRUE)) | ||||
|     { | ||||
|       g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       CLUTTER_ACTOR_GET_CLASS (self)->queue_redraw (self, origin); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -4015,7 +4023,11 @@ clutter_actor_continue_paint (ClutterActor *self) | ||||
|           clutter_paint_node_unref (dummy); | ||||
|  | ||||
|           /* XXX:2.0 - Call the paint() virtual directly */ | ||||
|           g_signal_emit (self, actor_signals[PAINT], 0); | ||||
|           if (g_signal_has_handler_pending (self, actor_signals[PAINT], | ||||
|                                             0, TRUE)) | ||||
|             g_signal_emit (self, actor_signals[PAINT], 0); | ||||
|           else | ||||
|             CLUTTER_ACTOR_GET_CLASS (self)->paint (self); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
| @@ -4029,7 +4041,11 @@ clutter_actor_continue_paint (ClutterActor *self) | ||||
|            * | ||||
|            * XXX:2.0 - Call the pick() virtual directly | ||||
|            */ | ||||
|           g_signal_emit (self, actor_signals[PICK], 0, &col); | ||||
|           if (g_signal_has_handler_pending (self, actor_signals[PICK], | ||||
|                                             0, TRUE)) | ||||
|             g_signal_emit (self, actor_signals[PICK], 0, &col); | ||||
|           else | ||||
|             CLUTTER_ACTOR_GET_CLASS (self)->pick (self, &col); | ||||
|         } | ||||
|     } | ||||
|   else | ||||
| @@ -4812,7 +4828,8 @@ clutter_actor_set_scale_factor (ClutterActor      *self, | ||||
|   g_assert (pspec != NULL); | ||||
|   g_assert (scale_p != NULL); | ||||
|  | ||||
|   _clutter_actor_create_transition (self, pspec, *scale_p, factor); | ||||
|   if (*scale_p != factor) | ||||
|     _clutter_actor_create_transition (self, pspec, *scale_p, factor); | ||||
| } | ||||
|  | ||||
| static inline void | ||||
| @@ -10247,9 +10264,10 @@ clutter_actor_set_position (ClutterActor *self, | ||||
|   cur_position.x = clutter_actor_get_x (self); | ||||
|   cur_position.y = clutter_actor_get_y (self); | ||||
|  | ||||
|   _clutter_actor_create_transition (self, obj_props[PROP_POSITION], | ||||
|                                     &cur_position, | ||||
|                                     &new_position); | ||||
|   if (!clutter_point_equals (&cur_position, &new_position)) | ||||
|     _clutter_actor_create_transition (self, obj_props[PROP_POSITION], | ||||
|                                       &cur_position, | ||||
|                                       &new_position); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -76,9 +76,6 @@ struct _ClutterCanvasPrivate | ||||
|   gboolean dirty; | ||||
|  | ||||
|   CoglBitmap *buffer; | ||||
|  | ||||
|   int scale_factor; | ||||
|   guint scale_factor_set : 1; | ||||
| }; | ||||
|  | ||||
| enum | ||||
| @@ -87,8 +84,6 @@ enum | ||||
|  | ||||
|   PROP_WIDTH, | ||||
|   PROP_HEIGHT, | ||||
|   PROP_SCALE_FACTOR, | ||||
|   PROP_SCALE_FACTOR_SET, | ||||
|  | ||||
|   LAST_PROP | ||||
| }; | ||||
| @@ -185,11 +180,6 @@ clutter_canvas_set_property (GObject      *gobject, | ||||
|       } | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR: | ||||
|       clutter_canvas_set_scale_factor (CLUTTER_CANVAS (gobject), | ||||
|                                        g_value_get_int (value)); | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); | ||||
|       break; | ||||
| @@ -214,17 +204,6 @@ clutter_canvas_get_property (GObject    *gobject, | ||||
|       g_value_set_int (value, priv->height); | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR: | ||||
|       if (priv->scale_factor_set) | ||||
|         g_value_set_int (value, priv->scale_factor); | ||||
|       else | ||||
|         g_value_set_int (value, -1); | ||||
|       break; | ||||
|  | ||||
|     case PROP_SCALE_FACTOR_SET: | ||||
|       g_value_set_boolean (value, priv->scale_factor_set); | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); | ||||
|       break; | ||||
| @@ -268,46 +247,6 @@ clutter_canvas_class_init (ClutterCanvasClass *klass) | ||||
|                       G_PARAM_READWRITE | | ||||
|                       G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas:scale-factor-set: | ||||
|    * | ||||
|    * Whether the #ClutterCanvas:scale-factor property is set. | ||||
|    * | ||||
|    * If the #ClutterCanvas:scale-factor-set property is %FALSE | ||||
|    * then #ClutterCanvas will use the #ClutterSettings:window-scaling-factor | ||||
|    * property. | ||||
|    * | ||||
|    * Since: 1.18 | ||||
|    */ | ||||
|   obj_props[PROP_SCALE_FACTOR_SET] = | ||||
|     g_param_spec_boolean ("scale-factor-set", | ||||
|                           P_("Scale Factor Set"), | ||||
|                           P_("Whether the scale-factor property is set"), | ||||
|                           FALSE, | ||||
|                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas:scale-factor: | ||||
|    * | ||||
|    * The scaling factor to be applied to the Cairo surface used for | ||||
|    * drawing. | ||||
|    * | ||||
|    * If #ClutterCanvas:scale-factor is set to a negative value, the | ||||
|    * value of the #ClutterSettings:window-scaling-factor property is | ||||
|    * used instead. | ||||
|    * | ||||
|    * Use #ClutterCanvas:scale-factor-set to check if the scale factor | ||||
|    * is set. | ||||
|    * | ||||
|    * Since: 1.18 | ||||
|    */ | ||||
|   obj_props[PROP_SCALE_FACTOR] = | ||||
|     g_param_spec_int ("scale-factor", | ||||
|                       P_("Scale Factor"), | ||||
|                       P_("The scaling factor for the surface"), | ||||
|                       -1, 1000, | ||||
|                       -1, | ||||
|                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   /** | ||||
|    * ClutterCanvas::draw: | ||||
| @@ -354,7 +293,6 @@ clutter_canvas_init (ClutterCanvas *self) | ||||
|  | ||||
|   self->priv->width = -1; | ||||
|   self->priv->height = -1; | ||||
|   self->priv->scale_factor = -1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -397,7 +335,6 @@ clutter_canvas_emit_draw (ClutterCanvas *self) | ||||
|   gboolean mapped_buffer; | ||||
|   unsigned char *data; | ||||
|   CoglBuffer *buffer; | ||||
|   int window_scale = 1; | ||||
|   gboolean res; | ||||
|   cairo_t *cr; | ||||
|  | ||||
| @@ -405,20 +342,11 @@ clutter_canvas_emit_draw (ClutterCanvas *self) | ||||
|  | ||||
|   priv->dirty = TRUE; | ||||
|  | ||||
|   if (priv->scale_factor_set) | ||||
|     window_scale = priv->scale_factor; | ||||
|   else | ||||
|     g_object_get (clutter_settings_get_default (), | ||||
|                   "window-scaling-factor", &window_scale, | ||||
|                   NULL); | ||||
|   real_width = priv->width; | ||||
|   real_height = priv->height; | ||||
|  | ||||
|   real_width = priv->width * window_scale; | ||||
|   real_height = priv->height * window_scale; | ||||
|  | ||||
|   CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d (real: %d x %d, scale: %d)", | ||||
|                 priv->width, priv->height, | ||||
|                 real_width, real_height, | ||||
|                 window_scale); | ||||
|   CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d", | ||||
|                 priv->width, priv->height); | ||||
|  | ||||
|   if (priv->buffer == NULL) | ||||
|     { | ||||
| @@ -461,8 +389,6 @@ clutter_canvas_emit_draw (ClutterCanvas *self) | ||||
|       mapped_buffer = FALSE; | ||||
|     } | ||||
|  | ||||
|   cairo_surface_set_device_scale (surface, window_scale, window_scale); | ||||
|  | ||||
|   self->priv->cr = cr = cairo_create (surface); | ||||
|  | ||||
|   g_signal_emit (self, canvas_signals[DRAW], 0, | ||||
| @@ -636,81 +562,3 @@ clutter_canvas_set_size (ClutterCanvas *canvas, | ||||
|  | ||||
|   return clutter_canvas_invalidate_internal (canvas, width, height); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_canvas_set_scale_factor: | ||||
|  * @canvas: a #ClutterCanvas | ||||
|  * @scale: the scale factor, or -1 for the default | ||||
|  * | ||||
|  * Sets the scaling factor for the Cairo surface used by @canvas. | ||||
|  * | ||||
|  * This function should rarely be used. | ||||
|  * | ||||
|  * The default scaling factor of a #ClutterCanvas content uses the | ||||
|  * #ClutterSettings:window-scaling-factor property, which is set by | ||||
|  * the windowing system. By using this function it is possible to | ||||
|  * override that setting. | ||||
|  * | ||||
|  * Changing the scale factor will invalidate the @canvas. | ||||
|  * | ||||
|  * Since: 1.18 | ||||
|  */ | ||||
| void | ||||
| clutter_canvas_set_scale_factor (ClutterCanvas *canvas, | ||||
|                                  int            scale) | ||||
| { | ||||
|   ClutterCanvasPrivate *priv; | ||||
|   GObject *obj; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_CANVAS (canvas)); | ||||
|   g_return_if_fail (scale != 0); | ||||
|  | ||||
|   priv = canvas->priv; | ||||
|  | ||||
|   if (scale < 0) | ||||
|     { | ||||
|       if (!priv->scale_factor_set) | ||||
|         return; | ||||
|  | ||||
|       priv->scale_factor_set = FALSE; | ||||
|       priv->scale_factor = -1; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if (priv->scale_factor_set && priv->scale_factor == scale) | ||||
|         return; | ||||
|  | ||||
|       priv->scale_factor_set = TRUE; | ||||
|       priv->scale_factor = scale; | ||||
|     } | ||||
|  | ||||
|   clutter_content_invalidate (CLUTTER_CONTENT (canvas)); | ||||
|  | ||||
|   obj = G_OBJECT (canvas); | ||||
|  | ||||
|   g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR]); | ||||
|   g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR_SET]); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_canvas_get_scale_factor: | ||||
|  * @canvas: a #ClutterCanvas | ||||
|  * | ||||
|  * Retrieves the scaling factor of @canvas, as set using | ||||
|  * clutter_canvas_set_scale_factor(). | ||||
|  * | ||||
|  * Return value: the scaling factor, or -1 if the @canvas | ||||
|  *   uses the default from #ClutterSettings | ||||
|  * | ||||
|  * Since: 1.18 | ||||
|  */ | ||||
| int | ||||
| clutter_canvas_get_scale_factor (ClutterCanvas *canvas) | ||||
| { | ||||
|   g_return_val_if_fail (CLUTTER_IS_CANVAS (canvas), -1); | ||||
|  | ||||
|   if (!canvas->priv->scale_factor_set) | ||||
|     return -1; | ||||
|  | ||||
|   return canvas->priv->scale_factor; | ||||
| } | ||||
|   | ||||
| @@ -54,6 +54,7 @@ | ||||
| struct _ClutterClonePrivate | ||||
| { | ||||
|   ClutterActor *clone_source; | ||||
|   gulong source_destroy_id; | ||||
| }; | ||||
|  | ||||
| G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR) | ||||
| @@ -376,6 +377,13 @@ clutter_clone_new (ClutterActor *source) | ||||
|   return g_object_new (CLUTTER_TYPE_CLONE, "source", source,  NULL); | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_source_destroyed (ClutterActor *source, | ||||
|                      ClutterClone *self) | ||||
| { | ||||
|   clutter_clone_set_source_internal (self, NULL); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_clone_set_source_internal (ClutterClone *self, | ||||
| 				   ClutterActor *source) | ||||
| @@ -387,6 +395,8 @@ clutter_clone_set_source_internal (ClutterClone *self, | ||||
|  | ||||
|   if (priv->clone_source != NULL) | ||||
|     { | ||||
|       g_signal_handler_disconnect (priv->clone_source, priv->source_destroy_id); | ||||
|       priv->source_destroy_id = 0; | ||||
|       _clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self)); | ||||
|       g_object_unref (priv->clone_source); | ||||
|       priv->clone_source = NULL; | ||||
| @@ -396,6 +406,8 @@ clutter_clone_set_source_internal (ClutterClone *self, | ||||
|     { | ||||
|       priv->clone_source = g_object_ref (source); | ||||
|       _clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self)); | ||||
|       priv->source_destroy_id = g_signal_connect (priv->clone_source, "destroy", | ||||
|                                                   G_CALLBACK (on_source_destroyed), self); | ||||
|     } | ||||
|  | ||||
|   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]); | ||||
|   | ||||
| @@ -48,7 +48,7 @@ | ||||
| #include "clutter-debug.h" | ||||
|  | ||||
| /* XXX - keep in sync with the ClutterStaticColor enumeration order */ | ||||
| static const ClutterColor const static_colors[] = { | ||||
| static const ClutterColor static_colors[] = { | ||||
|   /* CGA/EGA color palette */ | ||||
|   { 0xff, 0xff, 0xff, 0xff },   /* white */ | ||||
|   { 0x00, 0x00, 0x00, 0xff },   /* black */ | ||||
|   | ||||
| @@ -154,6 +154,15 @@ struct _ClutterInputDeviceClass | ||||
|                                  guint              *evdev_keycode); | ||||
|   void (* update_from_tool) (ClutterInputDevice     *device, | ||||
|                              ClutterInputDeviceTool *tool); | ||||
|  | ||||
|   gboolean (* is_mode_switch_button) (ClutterInputDevice *device, | ||||
|                                       guint               group, | ||||
|                                       guint               button); | ||||
|   gint (* get_group_n_modes) (ClutterInputDevice *device, | ||||
|                               gint                group); | ||||
|  | ||||
|   gboolean (* is_grouped) (ClutterInputDevice *device, | ||||
|                            ClutterInputDevice *other_device); | ||||
| }; | ||||
|  | ||||
| /* Platform-dependent interface */ | ||||
|   | ||||
| @@ -2179,3 +2179,61 @@ clutter_event_get_mode_group (const ClutterEvent *event) | ||||
|       return 0; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_event_get_pad_event_details: | ||||
|  * @event: a pad event | ||||
|  * @number: (out) (optional): ring/strip/button number | ||||
|  * @mode: (out) (optional): pad mode as per the event | ||||
|  * @value: (out) (optional): event axis value | ||||
|  * | ||||
|  * Returns the details of a pad event. | ||||
|  * | ||||
|  * Returns: #TRUE if event details could be obtained | ||||
|  **/ | ||||
| gboolean | ||||
| clutter_event_get_pad_event_details (const ClutterEvent *event, | ||||
|                                      guint              *number, | ||||
|                                      guint              *mode, | ||||
|                                      gdouble            *value) | ||||
| { | ||||
|   guint n, m; | ||||
|   gdouble v; | ||||
|  | ||||
|   g_return_val_if_fail (event != NULL, FALSE); | ||||
|   g_return_val_if_fail (event->type == CLUTTER_PAD_BUTTON_PRESS || | ||||
|                         event->type == CLUTTER_PAD_BUTTON_RELEASE || | ||||
|                         event->type == CLUTTER_PAD_RING || | ||||
|                         event->type == CLUTTER_PAD_STRIP, FALSE); | ||||
|  | ||||
|   switch (event->type) | ||||
|     { | ||||
|     case CLUTTER_PAD_BUTTON_PRESS: | ||||
|     case CLUTTER_PAD_BUTTON_RELEASE: | ||||
|       n = event->pad_button.button; | ||||
|       m = event->pad_button.mode; | ||||
|       v = 0.0; | ||||
|       break; | ||||
|     case CLUTTER_PAD_RING: | ||||
|       n = event->pad_ring.ring_number; | ||||
|       m = event->pad_ring.mode; | ||||
|       v = event->pad_ring.angle; | ||||
|       break; | ||||
|     case CLUTTER_PAD_STRIP: | ||||
|       n = event->pad_strip.strip_number; | ||||
|       m = event->pad_strip.mode; | ||||
|       v = event->pad_strip.value; | ||||
|       break; | ||||
|     default: | ||||
|       return FALSE; | ||||
|     } | ||||
|  | ||||
|   if (number) | ||||
|     *number = n; | ||||
|   if (mode) | ||||
|     *mode = m; | ||||
|   if (value) | ||||
|     *value = v; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|   | ||||
| @@ -508,6 +508,7 @@ struct _ClutterPadButtonEvent | ||||
|   guint32 button; | ||||
|   guint32 group; | ||||
|   ClutterInputDevice *device; | ||||
|   guint32 mode; | ||||
| }; | ||||
|  | ||||
| struct _ClutterPadStripEvent | ||||
| @@ -523,6 +524,7 @@ struct _ClutterPadStripEvent | ||||
|   guint32 strip_number; | ||||
|   guint32 group; | ||||
|   gdouble value; | ||||
|   guint32 mode; | ||||
| }; | ||||
|  | ||||
| struct _ClutterPadRingEvent | ||||
| @@ -538,6 +540,7 @@ struct _ClutterPadRingEvent | ||||
|   guint32 ring_number; | ||||
|   guint32 group; | ||||
|   gdouble angle; | ||||
|   guint32 mode; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -775,6 +778,12 @@ ClutterScrollFinishFlags clutter_event_get_scroll_finish_flags       (const Clut | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| guint                    clutter_event_get_mode_group                (const ClutterEvent     *event); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| gboolean                 clutter_event_get_pad_event_details         (const ClutterEvent     *event, | ||||
|                                                                       guint                  *number, | ||||
|                                                                       guint                  *mode, | ||||
|                                                                       gdouble                *value); | ||||
|  | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -2175,6 +2175,63 @@ clutter_input_device_get_n_mode_groups (ClutterInputDevice *device) | ||||
|   return device->n_mode_groups; | ||||
| } | ||||
|  | ||||
| gint | ||||
| clutter_input_device_get_group_n_modes (ClutterInputDevice *device, | ||||
|                                         gint                group) | ||||
| { | ||||
|   ClutterInputDeviceClass *device_class; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0); | ||||
|   g_return_val_if_fail (clutter_input_device_get_device_type (device) == | ||||
|                         CLUTTER_PAD_DEVICE, 0); | ||||
|   g_return_val_if_fail (group >= 0, 0); | ||||
|  | ||||
|   device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device); | ||||
|  | ||||
|   if (device_class->get_group_n_modes) | ||||
|     return device_class->get_group_n_modes (device, group); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| clutter_input_device_is_mode_switch_button (ClutterInputDevice *device, | ||||
|                                             guint               group, | ||||
|                                             guint               button) | ||||
| { | ||||
|   ClutterInputDeviceClass *device_class; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE); | ||||
|   g_return_val_if_fail (clutter_input_device_get_device_type (device) == | ||||
|                         CLUTTER_PAD_DEVICE, FALSE); | ||||
|  | ||||
|   device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device); | ||||
|  | ||||
|   if (device_class->is_mode_switch_button) | ||||
|     return device_class->is_mode_switch_button (device, group, button); | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| gint | ||||
| clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device, | ||||
|                                                    guint               button) | ||||
| { | ||||
|   gint group; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), -1); | ||||
|   g_return_val_if_fail (clutter_input_device_get_device_type (device) == | ||||
|                         CLUTTER_PAD_DEVICE, -1); | ||||
|  | ||||
|   for (group = 0; group < device->n_mode_groups; group++) | ||||
|     { | ||||
|       if (clutter_input_device_is_mode_switch_button (device, group, button)) | ||||
|         return group; | ||||
|     } | ||||
|  | ||||
|   return -1; | ||||
| } | ||||
|  | ||||
| const gchar * | ||||
| clutter_input_device_get_device_node (ClutterInputDevice *device) | ||||
| { | ||||
| @@ -2186,10 +2243,15 @@ clutter_input_device_get_device_node (ClutterInputDevice *device) | ||||
| ClutterInputDeviceMapping | ||||
| clutter_input_device_get_mapping_mode (ClutterInputDevice *device) | ||||
| { | ||||
|   ClutterInputDeviceType device_type; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), | ||||
|                         CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE); | ||||
|   g_return_val_if_fail (clutter_input_device_get_device_type (device) == | ||||
|                         CLUTTER_TABLET_DEVICE, | ||||
|  | ||||
|   device_type = clutter_input_device_get_device_type (device); | ||||
|   g_return_val_if_fail (device_type == CLUTTER_TABLET_DEVICE || | ||||
|                         device_type == CLUTTER_PEN_DEVICE || | ||||
|                         device_type == CLUTTER_ERASER_DEVICE, | ||||
|                         CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE); | ||||
|  | ||||
|   return device->mapping_mode; | ||||
| @@ -2199,9 +2261,14 @@ void | ||||
| clutter_input_device_set_mapping_mode (ClutterInputDevice        *device, | ||||
|                                        ClutterInputDeviceMapping  mapping) | ||||
| { | ||||
|   ClutterInputDeviceType device_type; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device)); | ||||
|   g_return_if_fail (clutter_input_device_get_device_type (device) == | ||||
|                     CLUTTER_TABLET_DEVICE); | ||||
|  | ||||
|   device_type = clutter_input_device_get_device_type (device); | ||||
|   g_return_if_fail (device_type == CLUTTER_TABLET_DEVICE || | ||||
|                     device_type == CLUTTER_PEN_DEVICE || | ||||
|                     device_type == CLUTTER_ERASER_DEVICE); | ||||
|  | ||||
|   if (device->mapping_mode == mapping) | ||||
|     return; | ||||
| @@ -2209,3 +2276,13 @@ clutter_input_device_set_mapping_mode (ClutterInputDevice        *device, | ||||
|   device->mapping_mode = mapping; | ||||
|   g_object_notify (G_OBJECT (device), "mapping-mode"); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| clutter_input_device_is_grouped (ClutterInputDevice *device, | ||||
|                                  ClutterInputDevice *other_device) | ||||
| { | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), FALSE); | ||||
|   g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (other_device), FALSE); | ||||
|  | ||||
|   return CLUTTER_INPUT_DEVICE_GET_CLASS (device)->is_grouped (device, other_device); | ||||
| } | ||||
|   | ||||
| @@ -147,6 +147,18 @@ gint                    clutter_input_device_get_n_strips       (ClutterInputDev | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gint                    clutter_input_device_get_n_mode_groups  (ClutterInputDevice *device); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gint                    clutter_input_device_get_group_n_modes  (ClutterInputDevice *device, | ||||
|                                                                  gint                group); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                clutter_input_device_is_mode_switch_button (ClutterInputDevice *device, | ||||
|                                                                     guint               group, | ||||
| 								    guint               button); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gint                    clutter_input_device_get_mode_switch_button_group (ClutterInputDevice *device, | ||||
|                                                                            guint               button); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| const gchar *           clutter_input_device_get_device_node    (ClutterInputDevice *device); | ||||
|  | ||||
| @@ -156,6 +168,9 @@ ClutterInputDeviceMapping clutter_input_device_get_mapping_mode (ClutterInputDev | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void                      clutter_input_device_set_mapping_mode (ClutterInputDevice        *device, | ||||
|                                                                  ClutterInputDeviceMapping  mapping); | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| gboolean                  clutter_input_device_is_grouped       (ClutterInputDevice *device, | ||||
|                                                                  ClutterInputDevice *other_device); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -17,6 +17,7 @@ VOID:BOXED,FLAGS | ||||
| VOID:INT | ||||
| VOID:INT64,INT64,FLOAT,BOOLEAN | ||||
| VOID:INT,INT | ||||
| VOID:INT,POINTER | ||||
| VOID:FLOAT,FLOAT | ||||
| VOID:INT,INT,INT,INT | ||||
| VOID:OBJECT | ||||
|   | ||||
| @@ -77,9 +77,7 @@ struct _ClutterSettings | ||||
|  | ||||
|   guint password_hint_time; | ||||
|  | ||||
|   gint window_scaling_factor; | ||||
|   gint unscaled_font_dpi; | ||||
|   guint fixed_scaling_factor : 1; | ||||
| }; | ||||
|  | ||||
| struct _ClutterSettingsClass | ||||
| @@ -112,7 +110,6 @@ enum | ||||
|  | ||||
|   PROP_PASSWORD_HINT_TIME, | ||||
|  | ||||
|   PROP_WINDOW_SCALING_FACTOR, | ||||
|   PROP_UNSCALED_FONT_DPI, | ||||
|  | ||||
|   PROP_LAST | ||||
| @@ -355,14 +352,6 @@ clutter_settings_set_property (GObject      *gobject, | ||||
|       self->password_hint_time = g_value_get_uint (value); | ||||
|       break; | ||||
|  | ||||
|     case PROP_WINDOW_SCALING_FACTOR: | ||||
|       if (!self->fixed_scaling_factor) | ||||
|         { | ||||
|           self->window_scaling_factor = g_value_get_int (value); | ||||
|           self->fixed_scaling_factor = TRUE; | ||||
|         } | ||||
|       break; | ||||
|  | ||||
|     case PROP_UNSCALED_FONT_DPI: | ||||
|       self->font_dpi = g_value_get_int (value); | ||||
|       settings_update_resolution (self); | ||||
| @@ -382,14 +371,7 @@ clutter_settings_set_property_internal (ClutterSettings *self, | ||||
|  | ||||
|   property = g_intern_string (property); | ||||
|  | ||||
|   if (property == I_("window-scaling-factor") && | ||||
|       self->fixed_scaling_factor) | ||||
|     return; | ||||
|  | ||||
|   g_object_set_property (G_OBJECT (self), property, value); | ||||
|  | ||||
|   if (property == I_("window-scaling-factor")) | ||||
|     self->fixed_scaling_factor = FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -446,10 +428,6 @@ clutter_settings_get_property (GObject    *gobject, | ||||
|       g_value_set_uint (value, self->password_hint_time); | ||||
|       break; | ||||
|  | ||||
|     case PROP_WINDOW_SCALING_FACTOR: | ||||
|       g_value_set_int (value, self->window_scaling_factor); | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); | ||||
|       break; | ||||
| @@ -677,14 +655,6 @@ clutter_settings_class_init (ClutterSettingsClass *klass) | ||||
|                       500, | ||||
|                       CLUTTER_PARAM_READWRITE); | ||||
|  | ||||
|   obj_props[PROP_WINDOW_SCALING_FACTOR] = | ||||
|     g_param_spec_int ("window-scaling-factor", | ||||
|                       P_("Window Scaling Factor"), | ||||
|                       P_("The scaling factor to be applied to windows"), | ||||
|                       1, G_MAXINT, | ||||
|                       1, | ||||
|                       CLUTTER_PARAM_READWRITE); | ||||
|  | ||||
|   obj_props[PROP_FONTCONFIG_TIMESTAMP] = | ||||
|     g_param_spec_uint ("fontconfig-timestamp", | ||||
|                        P_("Fontconfig configuration timestamp"), | ||||
| @@ -722,8 +692,6 @@ clutter_settings_class_init (ClutterSettingsClass *klass) | ||||
| static void | ||||
| clutter_settings_init (ClutterSettings *self) | ||||
| { | ||||
|   const char *scale_str; | ||||
|  | ||||
|   self->resolution = -1.0; | ||||
|  | ||||
|   self->font_dpi = -1; | ||||
| @@ -742,18 +710,6 @@ clutter_settings_init (ClutterSettings *self) | ||||
|   self->xft_rgba = NULL; | ||||
|  | ||||
|   self->long_press_duration = 500; | ||||
|  | ||||
|   /* if the scaling factor was set by the environment we ignore | ||||
|    * any explicit setting | ||||
|    */ | ||||
|   scale_str = g_getenv ("CLUTTER_SCALE"); | ||||
|   if (scale_str != NULL) | ||||
|     { | ||||
|       self->window_scaling_factor = atol (scale_str); | ||||
|       self->fixed_scaling_factor = TRUE; | ||||
|     } | ||||
|   else | ||||
|     self->window_scaling_factor = 1; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -20,6 +20,7 @@ | ||||
| #include "clutter/clutter-stage-view.h" | ||||
|  | ||||
| #include <cairo-gobject.h> | ||||
| #include <math.h> | ||||
|  | ||||
| enum | ||||
| { | ||||
| @@ -28,6 +29,7 @@ enum | ||||
|   PROP_LAYOUT, | ||||
|   PROP_FRAMEBUFFER, | ||||
|   PROP_OFFSCREEN, | ||||
|   PROP_SCALE, | ||||
|  | ||||
|   PROP_LAST | ||||
| }; | ||||
| @@ -37,6 +39,7 @@ static GParamSpec *obj_props[PROP_LAST]; | ||||
| typedef struct _ClutterStageViewPrivate | ||||
| { | ||||
|   cairo_rectangle_int_t layout; | ||||
|   float scale; | ||||
|   CoglFramebuffer *framebuffer; | ||||
|  | ||||
|   CoglOffscreen *offscreen; | ||||
| @@ -141,6 +144,15 @@ clutter_stage_view_blit_offscreen (ClutterStageView            *view, | ||||
|   cogl_framebuffer_pop_matrix (priv->framebuffer); | ||||
| } | ||||
|  | ||||
| float | ||||
| clutter_stage_view_get_scale (ClutterStageView *view) | ||||
| { | ||||
|   ClutterStageViewPrivate *priv = | ||||
|     clutter_stage_view_get_instance_private (view); | ||||
|  | ||||
|   return priv->scale; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| clutter_stage_view_is_dirty_viewport (ClutterStageView *view) | ||||
| { | ||||
| @@ -179,16 +191,24 @@ clutter_stage_view_set_dirty_projection (ClutterStageView *view, | ||||
|   priv->dirty_projection = dirty; | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_stage_view_get_offscreen_transformation_matrix (ClutterStageView *view, | ||||
|                                                         CoglMatrix       *matrix) | ||||
| { | ||||
|   ClutterStageViewClass *view_class = CLUTTER_STAGE_VIEW_GET_CLASS (view); | ||||
|  | ||||
|   view_class->get_offscreen_transformation_matrix (view, matrix); | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_stage_view_transform_to_onscreen (ClutterStageView *view, | ||||
|                                           gfloat           *x, | ||||
|                                           gfloat           *y) | ||||
| { | ||||
|   ClutterStageViewClass *view_class = CLUTTER_STAGE_VIEW_GET_CLASS (view); | ||||
|   gfloat z = 0, w = 1; | ||||
|   CoglMatrix matrix; | ||||
|  | ||||
|   view_class->get_offscreen_transformation_matrix (view, &matrix); | ||||
|   clutter_stage_view_get_offscreen_transformation_matrix (view, &matrix); | ||||
|   cogl_matrix_get_inverse (&matrix, &matrix); | ||||
|   cogl_matrix_transform_point (&matrix, x, y, &z, &w); | ||||
| } | ||||
| @@ -221,6 +241,9 @@ clutter_stage_view_get_property (GObject    *object, | ||||
|     case PROP_OFFSCREEN: | ||||
|       g_value_set_boxed (value, priv->offscreen); | ||||
|       break; | ||||
|     case PROP_SCALE: | ||||
|       g_value_set_float (value, priv->scale); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|     } | ||||
| @@ -244,11 +267,30 @@ clutter_stage_view_set_property (GObject      *object, | ||||
|       priv->layout = *layout; | ||||
|       break; | ||||
|     case PROP_FRAMEBUFFER: | ||||
|       g_clear_pointer (&priv->framebuffer, cogl_object_unref); | ||||
|       priv->framebuffer = g_value_dup_boxed (value); | ||||
| #ifndef G_DISABLE_CHECKS | ||||
|       if (priv->framebuffer) | ||||
|         { | ||||
|           int fb_width, fb_height; | ||||
|  | ||||
|           fb_width = cogl_framebuffer_get_width (priv->framebuffer); | ||||
|           fb_height = cogl_framebuffer_get_height (priv->framebuffer); | ||||
|  | ||||
|           g_warn_if_fail (fabsf (roundf (fb_width / priv->scale) - | ||||
|                                  fb_width / priv->scale) < FLT_EPSILON); | ||||
|           g_warn_if_fail (fabsf (roundf (fb_height / priv->scale) - | ||||
|                                  fb_height / priv->scale) < FLT_EPSILON); | ||||
|         } | ||||
| #endif | ||||
|       break; | ||||
|     case PROP_OFFSCREEN: | ||||
|       g_clear_pointer (&priv->offscreen, cogl_object_unref); | ||||
|       priv->offscreen = g_value_dup_boxed (value); | ||||
|       break; | ||||
|     case PROP_SCALE: | ||||
|       priv->scale = g_value_get_float (value); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|     } | ||||
| @@ -276,6 +318,7 @@ clutter_stage_view_init (ClutterStageView *view) | ||||
|  | ||||
|   priv->dirty_viewport = TRUE; | ||||
|   priv->dirty_projection = TRUE; | ||||
|   priv->scale = 1.0; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -296,6 +339,7 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass) | ||||
|                         "The view layout on the screen", | ||||
|                         CAIRO_GOBJECT_TYPE_RECTANGLE_INT, | ||||
|                         G_PARAM_READWRITE | | ||||
|                         G_PARAM_CONSTRUCT | | ||||
|                         G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   obj_props[PROP_FRAMEBUFFER] = | ||||
| @@ -304,6 +348,7 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass) | ||||
|                         "The front buffer of the view", | ||||
|                         COGL_TYPE_HANDLE, | ||||
|                         G_PARAM_READWRITE | | ||||
|                         G_PARAM_CONSTRUCT | | ||||
|                         G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   obj_props[PROP_OFFSCREEN] = | ||||
| @@ -312,7 +357,16 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass) | ||||
|                         "Framebuffer used as intermediate buffer", | ||||
|                         COGL_TYPE_HANDLE, | ||||
|                         G_PARAM_READWRITE | | ||||
| 			G_PARAM_CONSTRUCT_ONLY | | ||||
|                         G_PARAM_CONSTRUCT | | ||||
|                         G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   obj_props[PROP_SCALE] = | ||||
|     g_param_spec_float ("scale", | ||||
|                         "View scale", | ||||
|                         "The view scale", | ||||
|                         0.5, G_MAXFLOAT, 1.0, | ||||
|                         G_PARAM_READWRITE | | ||||
|                         G_PARAM_CONSTRUCT | | ||||
|                         G_PARAM_STATIC_STRINGS); | ||||
|  | ||||
|   g_object_class_install_properties (object_class, PROP_LAST, obj_props); | ||||
|   | ||||
| @@ -60,6 +60,9 @@ void             clutter_stage_view_transform_to_onscreen (ClutterStageView *vie | ||||
| void clutter_stage_view_blit_offscreen (ClutterStageView            *view, | ||||
| 					const cairo_rectangle_int_t *clip); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| float clutter_stage_view_get_scale (ClutterStageView *view); | ||||
|  | ||||
| gboolean clutter_stage_view_is_dirty_viewport (ClutterStageView *view); | ||||
|  | ||||
| void clutter_stage_view_set_dirty_viewport (ClutterStageView *view, | ||||
| @@ -70,4 +73,8 @@ gboolean clutter_stage_view_is_dirty_projection (ClutterStageView *view); | ||||
| void clutter_stage_view_set_dirty_projection (ClutterStageView *view, | ||||
|                                               gboolean          dirty); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| void clutter_stage_view_get_offscreen_transformation_matrix (ClutterStageView *view, | ||||
|                                                              CoglMatrix       *matrix); | ||||
|  | ||||
| #endif /* __CLUTTER_STAGE_VIEW_H__ */ | ||||
|   | ||||
| @@ -303,33 +303,6 @@ _clutter_stage_window_can_clip_redraws (ClutterStageWindow *window) | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_stage_window_set_scale_factor (ClutterStageWindow *window, | ||||
|                                         int                 factor) | ||||
| { | ||||
|   ClutterStageWindowIface *iface; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_STAGE_WINDOW (window)); | ||||
|  | ||||
|   iface = CLUTTER_STAGE_WINDOW_GET_IFACE (window); | ||||
|   if (iface->set_scale_factor != NULL) | ||||
|     iface->set_scale_factor (window, factor); | ||||
| } | ||||
|  | ||||
| int | ||||
| _clutter_stage_window_get_scale_factor (ClutterStageWindow *window) | ||||
| { | ||||
|   ClutterStageWindowIface *iface; | ||||
|  | ||||
|   g_return_val_if_fail (CLUTTER_IS_STAGE_WINDOW (window), 1); | ||||
|  | ||||
|   iface = CLUTTER_STAGE_WINDOW_GET_IFACE (window); | ||||
|   if (iface->get_scale_factor != NULL) | ||||
|     return iface->get_scale_factor (window); | ||||
|  | ||||
|   return 1; | ||||
| } | ||||
|  | ||||
| GList * | ||||
| _clutter_stage_window_get_views (ClutterStageWindow *window) | ||||
| { | ||||
|   | ||||
| @@ -83,9 +83,6 @@ struct _ClutterStageWindowIface | ||||
|  | ||||
|   gboolean          (* can_clip_redraws)        (ClutterStageWindow *stage_window); | ||||
|  | ||||
|   void              (* set_scale_factor)        (ClutterStageWindow *stage_window, | ||||
|                                                  int                 factor); | ||||
|   int               (* get_scale_factor)        (ClutterStageWindow *stage_window); | ||||
|   GList            *(* get_views)               (ClutterStageWindow *stage_window); | ||||
|   int64_t           (* get_frame_counter)       (ClutterStageWindow *stage_window); | ||||
|   void              (* finish_frame)            (ClutterStageWindow *stage_window); | ||||
| @@ -140,10 +137,6 @@ void              _clutter_stage_window_get_dirty_pixel         (ClutterStageWin | ||||
|  | ||||
| gboolean          _clutter_stage_window_can_clip_redraws        (ClutterStageWindow *window); | ||||
|  | ||||
| void              _clutter_stage_window_set_scale_factor        (ClutterStageWindow *window, | ||||
|                                                                  int                 factor); | ||||
| int               _clutter_stage_window_get_scale_factor        (ClutterStageWindow *window); | ||||
|  | ||||
| GList *           _clutter_stage_window_get_views               (ClutterStageWindow *window); | ||||
|  | ||||
| void              _clutter_stage_window_finish_frame            (ClutterStageWindow *window); | ||||
|   | ||||
| @@ -161,6 +161,7 @@ struct _ClutterStagePrivate | ||||
|   guint accept_focus           : 1; | ||||
|   guint motion_events_enabled  : 1; | ||||
|   guint has_custom_perspective : 1; | ||||
|   guint stage_was_relayout     : 1; | ||||
| }; | ||||
|  | ||||
| enum | ||||
| @@ -364,7 +365,6 @@ clutter_stage_allocate (ClutterActor           *self, | ||||
|   float new_width, new_height; | ||||
|   float width, height; | ||||
|   cairo_rectangle_int_t window_size; | ||||
|   int scale_factor; | ||||
|  | ||||
|   if (priv->impl == NULL) | ||||
|     return; | ||||
| @@ -465,11 +465,6 @@ clutter_stage_allocate (ClutterActor           *self, | ||||
|    */ | ||||
|   _clutter_stage_window_get_geometry (priv->impl, &window_size); | ||||
|  | ||||
|   scale_factor = _clutter_stage_window_get_scale_factor (priv->impl); | ||||
|  | ||||
|   window_size.width *= scale_factor; | ||||
|   window_size.height *= scale_factor; | ||||
|  | ||||
|   cogl_onscreen_clutter_backend_set_size (window_size.width, | ||||
|                                           window_size.height); | ||||
|  | ||||
| @@ -630,15 +625,13 @@ clutter_stage_do_paint_view (ClutterStage                *stage, | ||||
|   float clip_poly[8]; | ||||
|   float viewport[4]; | ||||
|   cairo_rectangle_int_t geom; | ||||
|   int window_scale; | ||||
|  | ||||
|   _clutter_stage_window_get_geometry (priv->impl, &geom); | ||||
|   window_scale = _clutter_stage_window_get_scale_factor (priv->impl); | ||||
|  | ||||
|   viewport[0] = priv->viewport[0] * window_scale; | ||||
|   viewport[1] = priv->viewport[1] * window_scale; | ||||
|   viewport[2] = priv->viewport[2] * window_scale; | ||||
|   viewport[3] = priv->viewport[3] * window_scale; | ||||
|   viewport[0] = priv->viewport[0]; | ||||
|   viewport[1] = priv->viewport[1]; | ||||
|   viewport[2] = priv->viewport[2]; | ||||
|   viewport[3] = priv->viewport[3]; | ||||
|  | ||||
|   if (!clip) | ||||
|     { | ||||
| @@ -646,16 +639,14 @@ clutter_stage_do_paint_view (ClutterStage                *stage, | ||||
|       clip = &view_layout; | ||||
|     } | ||||
|  | ||||
|   clip_poly[0] = MAX (clip->x * window_scale, 0); | ||||
|   clip_poly[1] = MAX (clip->y * window_scale, 0); | ||||
|   clip_poly[0] = MAX (clip->x, 0); | ||||
|   clip_poly[1] = MAX (clip->y, 0); | ||||
|  | ||||
|   clip_poly[2] = MIN ((clip->x + clip->width) * window_scale, | ||||
|                       geom.width * window_scale); | ||||
|   clip_poly[2] = MIN (clip->x + clip->width, geom.width); | ||||
|   clip_poly[3] = clip_poly[1]; | ||||
|  | ||||
|   clip_poly[4] = clip_poly[2]; | ||||
|   clip_poly[5] = MIN ((clip->y + clip->height) * window_scale, | ||||
|                       geom.height * window_scale); | ||||
|   clip_poly[5] = MIN (clip->y + clip->height, geom.height); | ||||
|  | ||||
|   clip_poly[6] = clip_poly[0]; | ||||
|   clip_poly[7] = clip_poly[5]; | ||||
| @@ -971,6 +962,7 @@ _clutter_stage_process_queued_events (ClutterStage *stage) | ||||
|       ClutterEvent *next_event; | ||||
|       ClutterInputDevice *device; | ||||
|       ClutterInputDevice *next_device; | ||||
|       ClutterInputDeviceType device_type; | ||||
|       gboolean check_device = FALSE; | ||||
|  | ||||
|       event = l->data; | ||||
| @@ -986,8 +978,16 @@ _clutter_stage_process_queued_events (ClutterStage *stage) | ||||
|       if (device != NULL && next_device != NULL) | ||||
|         check_device = TRUE; | ||||
|  | ||||
|       /* Skip consecutive motion events coming from the same device */ | ||||
|       if (priv->throttle_motion_events && next_event != NULL) | ||||
|       device_type = clutter_input_device_get_device_type (device); | ||||
|  | ||||
|       /* Skip consecutive motion events coming from the same device, | ||||
|        * except those of tablet tools, since users of these events | ||||
|        * want no precision loss. | ||||
|        */ | ||||
|       if (priv->throttle_motion_events && next_event != NULL && | ||||
|           device_type != CLUTTER_TABLET_DEVICE && | ||||
|           device_type != CLUTTER_PEN_DEVICE && | ||||
|           device_type != CLUTTER_ERASER_DEVICE) | ||||
|         { | ||||
|           if (event->type == CLUTTER_MOTION && | ||||
|               (next_event->type == CLUTTER_MOTION || | ||||
| @@ -1069,6 +1069,7 @@ _clutter_stage_maybe_relayout (ClutterActor *actor) | ||||
|   if (!CLUTTER_ACTOR_IN_RELAYOUT (stage)) | ||||
|     { | ||||
|       priv->relayout_pending = FALSE; | ||||
|       priv->stage_was_relayout = TRUE; | ||||
|  | ||||
|       CLUTTER_NOTE (ACTOR, "Recomputing layout"); | ||||
|  | ||||
| @@ -1139,6 +1140,58 @@ clutter_stage_do_redraw (ClutterStage *stage) | ||||
|                 stage); | ||||
| } | ||||
|  | ||||
| static GSList * | ||||
| _clutter_stage_check_updated_pointers (ClutterStage *stage) | ||||
| { | ||||
|   ClutterStagePrivate *priv = stage->priv; | ||||
|   ClutterDeviceManager *device_manager; | ||||
|   GSList *updating = NULL; | ||||
|   const GSList *devices; | ||||
|   cairo_rectangle_int_t clip; | ||||
|   ClutterPoint point; | ||||
|   gboolean has_clip; | ||||
|  | ||||
|   has_clip = _clutter_stage_window_get_redraw_clip_bounds (priv->impl, &clip); | ||||
|  | ||||
|   device_manager = clutter_device_manager_get_default (); | ||||
|   devices = clutter_device_manager_peek_devices (device_manager); | ||||
|  | ||||
|   for (; devices != NULL; devices = devices->next) | ||||
|     { | ||||
|       ClutterInputDevice *dev = devices->data; | ||||
|  | ||||
|       if (clutter_input_device_get_device_mode (dev) != | ||||
|           CLUTTER_INPUT_MODE_MASTER) | ||||
|         continue; | ||||
|  | ||||
|       switch (clutter_input_device_get_device_type (dev)) | ||||
|         { | ||||
|         case CLUTTER_POINTER_DEVICE: | ||||
|         case CLUTTER_TABLET_DEVICE: | ||||
|         case CLUTTER_PEN_DEVICE: | ||||
|         case CLUTTER_ERASER_DEVICE: | ||||
|         case CLUTTER_CURSOR_DEVICE: | ||||
|           if (!clutter_input_device_get_coords (dev, NULL, &point)) | ||||
|             continue; | ||||
|  | ||||
|           if (!has_clip || | ||||
|               (point.x >= clip.x && point.x < clip.x + clip.width && | ||||
|                point.y >= clip.y && point.y < clip.y + clip.height)) | ||||
|             updating = g_slist_prepend (updating, dev); | ||||
|           break; | ||||
|         default: | ||||
|           /* Any other devices don't need checking, either because they | ||||
|            * don't have x/y coordinates, or because they're implicitly | ||||
|            * grabbed on an actor by default as it's the case of | ||||
|            * touch(screens). | ||||
|            */ | ||||
|           break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   return updating; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * _clutter_stage_do_update: | ||||
|  * @stage: A #ClutterStage | ||||
| @@ -1151,6 +1204,10 @@ gboolean | ||||
| _clutter_stage_do_update (ClutterStage *stage) | ||||
| { | ||||
|   ClutterStagePrivate *priv = stage->priv; | ||||
|   gboolean stage_was_relayout = priv->stage_was_relayout; | ||||
|   GSList *pointers = NULL; | ||||
|  | ||||
|   priv->stage_was_relayout = FALSE; | ||||
|  | ||||
|   /* if the stage is being destroyed, or if the destruction already | ||||
|    * happened and we don't have an StageWindow any more, then we | ||||
| @@ -1171,6 +1228,9 @@ _clutter_stage_do_update (ClutterStage *stage) | ||||
|   if (!priv->redraw_pending) | ||||
|     return FALSE; | ||||
|  | ||||
|   if (stage_was_relayout) | ||||
|     pointers = _clutter_stage_check_updated_pointers (stage); | ||||
|  | ||||
|   clutter_stage_maybe_finish_queue_redraws (stage); | ||||
|  | ||||
|   clutter_stage_do_redraw (stage); | ||||
| @@ -1188,6 +1248,12 @@ _clutter_stage_do_update (ClutterStage *stage) | ||||
|     } | ||||
| #endif /* CLUTTER_ENABLE_DEBUG */ | ||||
|  | ||||
|   while (pointers) | ||||
|     { | ||||
|       _clutter_input_device_update (pointers->data, NULL, TRUE); | ||||
|       pointers = g_slist_delete_link (pointers, pointers); | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| @@ -1378,19 +1444,19 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage, | ||||
|   gint dirty_y; | ||||
|   gint read_x; | ||||
|   gint read_y; | ||||
|   int window_scale; | ||||
|   float fb_width, fb_height; | ||||
|   int viewport_offset_x; | ||||
|   int viewport_offset_y; | ||||
|   float fb_scale; | ||||
|   float viewport_offset_x; | ||||
|   float viewport_offset_y; | ||||
|  | ||||
|   priv = stage->priv; | ||||
|  | ||||
|   context = _clutter_context_get_default (); | ||||
|   window_scale = _clutter_stage_window_get_scale_factor (priv->impl); | ||||
|   fb_scale = clutter_stage_view_get_scale (view); | ||||
|   clutter_stage_view_get_layout (view, &view_layout); | ||||
|  | ||||
|   fb_width = view_layout.width; | ||||
|   fb_height = view_layout.height; | ||||
|   fb_width = view_layout.width * fb_scale; | ||||
|   fb_height = view_layout.height * fb_scale; | ||||
|   cogl_push_framebuffer (fb); | ||||
|  | ||||
|   /* needed for when a context switch happens */ | ||||
| @@ -1400,38 +1466,38 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage, | ||||
|    * picking to not work at all, so setting it the whole framebuffer content | ||||
|    * for now. */ | ||||
|   cogl_framebuffer_push_scissor_clip (fb, 0, 0, | ||||
|                                       view_layout.width, | ||||
|                                       view_layout.height); | ||||
|                                       view_layout.width * fb_scale, | ||||
|                                       view_layout.height * fb_scale); | ||||
|  | ||||
|   _clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y); | ||||
|  | ||||
|   if (G_LIKELY (!(clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS))) | ||||
|     { | ||||
|       CLUTTER_NOTE (PICK, "Pushing pick scissor clip x: %d, y: %d, 1x1", | ||||
|                     dirty_x * window_scale, | ||||
|                     dirty_y * window_scale); | ||||
|       cogl_framebuffer_push_scissor_clip (fb, dirty_x * window_scale, dirty_y * window_scale, 1, 1); | ||||
|                     (int) dirty_x * fb_scale, | ||||
|                     (int) dirty_y * fb_scale); | ||||
|       cogl_framebuffer_push_scissor_clip (fb, dirty_x * fb_scale, dirty_y * fb_scale, 1, 1); | ||||
|     } | ||||
|  | ||||
|   viewport_offset_x = x * window_scale - dirty_x * window_scale; | ||||
|   viewport_offset_y = y * window_scale - dirty_y * window_scale; | ||||
|   viewport_offset_x = x * fb_scale - dirty_x * fb_scale; | ||||
|   viewport_offset_y = y * fb_scale - dirty_y * fb_scale; | ||||
|   CLUTTER_NOTE (PICK, "Setting viewport to %f, %f, %f, %f", | ||||
|                 priv->viewport[0] * window_scale - viewport_offset_x, | ||||
|                 priv->viewport[1] * window_scale - viewport_offset_y, | ||||
|                 priv->viewport[2] * window_scale, | ||||
|                 priv->viewport[3] * window_scale); | ||||
|   cogl_set_viewport (priv->viewport[0] * window_scale - viewport_offset_x, | ||||
|                      priv->viewport[1] * window_scale - viewport_offset_y, | ||||
|                      priv->viewport[2] * window_scale, | ||||
|                      priv->viewport[3] * window_scale); | ||||
|                 priv->viewport[0] * fb_scale - viewport_offset_x, | ||||
|                 priv->viewport[1] * fb_scale - viewport_offset_y, | ||||
|                 priv->viewport[2] * fb_scale, | ||||
|                 priv->viewport[3] * fb_scale); | ||||
|   cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x, | ||||
|                      priv->viewport[1] * fb_scale - viewport_offset_y, | ||||
|                      priv->viewport[2] * fb_scale, | ||||
|                      priv->viewport[3] * fb_scale); | ||||
|  | ||||
|   read_x = dirty_x * window_scale; | ||||
|   read_y = dirty_y * window_scale; | ||||
|   read_x = dirty_x * fb_scale; | ||||
|   read_y = dirty_y * fb_scale; | ||||
|  | ||||
|   CLUTTER_NOTE (PICK, "Performing pick at %i,%i on view %dx%d+%d+%d", | ||||
|   CLUTTER_NOTE (PICK, "Performing pick at %i,%i on view %dx%d+%d+%d s: %d", | ||||
|                 x, y, | ||||
|                 view_layout.width, view_layout.height, | ||||
|                 view_layout.x, view_layout.y); | ||||
|                 view_layout.x, view_layout.y, fb_scale); | ||||
|  | ||||
|   cogl_color_init_from_4ub (&stage_pick_id, 255, 255, 255, 255); | ||||
|   cogl_clear (&stage_pick_id, COGL_BUFFER_BIT_COLOR | COGL_BUFFER_BIT_DEPTH); | ||||
| @@ -2186,8 +2252,8 @@ clutter_stage_class_init (ClutterStageClass *klass) | ||||
|     g_signal_new (I_("presented"), | ||||
|                   G_TYPE_FROM_CLASS (gobject_class), | ||||
|                   G_SIGNAL_RUN_LAST, | ||||
|                   0, | ||||
|                   NULL, NULL, NULL, | ||||
|                   0, NULL, NULL, | ||||
|                   _clutter_marshal_VOID__INT_POINTER, | ||||
|                   G_TYPE_NONE, 2, | ||||
|                   G_TYPE_INT, G_TYPE_POINTER); | ||||
|  | ||||
| @@ -2210,7 +2276,6 @@ clutter_stage_init (ClutterStage *self) | ||||
|   ClutterStagePrivate *priv; | ||||
|   ClutterStageWindow *impl; | ||||
|   ClutterBackend *backend; | ||||
|   int window_scale = 1; | ||||
|   GError *error; | ||||
|  | ||||
|   /* a stage is a top-level object */ | ||||
| @@ -2228,7 +2293,6 @@ clutter_stage_init (ClutterStage *self) | ||||
|     { | ||||
|       _clutter_stage_set_window (self, impl); | ||||
|       _clutter_stage_window_get_geometry (priv->impl, &geom); | ||||
|       window_scale = _clutter_stage_window_get_scale_factor (priv->impl); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
| @@ -2282,8 +2346,8 @@ clutter_stage_init (ClutterStage *self) | ||||
|                                       priv->perspective.aspect, | ||||
|                                       priv->perspective.z_near, | ||||
|                                       50, /* distance to 2d plane */ | ||||
|                                       geom.width * window_scale, | ||||
|                                       geom.height * window_scale); | ||||
|                                       geom.width, | ||||
|                                       geom.height); | ||||
|  | ||||
|  | ||||
|   /* FIXME - remove for 2.0 */ | ||||
| @@ -3412,16 +3476,6 @@ clutter_stage_ensure_viewport (ClutterStage *stage) | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_stage_apply_scale (ClutterStage *stage) | ||||
| { | ||||
|   int factor; | ||||
|  | ||||
|   factor = _clutter_stage_window_get_scale_factor (stage->priv->impl); | ||||
|   if (factor != 1) | ||||
|     cogl_matrix_scale (&stage->priv->view, factor, factor, 1.f); | ||||
| } | ||||
|  | ||||
| # define _DEG_TO_RAD(d)         ((d) * ((float) G_PI / 180.0f)) | ||||
|  | ||||
| /* This calculates a distance into the view frustum to position the | ||||
| @@ -3568,9 +3622,9 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage, | ||||
|     { | ||||
|       cairo_rectangle_int_t view_layout; | ||||
|       ClutterPerspective perspective; | ||||
|       int window_scale; | ||||
|       int viewport_offset_x; | ||||
|       int viewport_offset_y; | ||||
|       float fb_scale; | ||||
|       float viewport_offset_x; | ||||
|       float viewport_offset_y; | ||||
|       float z_2d; | ||||
|  | ||||
|       CLUTTER_NOTE (PAINT, | ||||
| @@ -3578,15 +3632,15 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage, | ||||
|                     priv->viewport[2], | ||||
|                     priv->viewport[3]); | ||||
|  | ||||
|       window_scale = _clutter_stage_window_get_scale_factor (priv->impl); | ||||
|       fb_scale = clutter_stage_view_get_scale (view); | ||||
|       clutter_stage_view_get_layout (view, &view_layout); | ||||
|  | ||||
|       viewport_offset_x = view_layout.x * window_scale; | ||||
|       viewport_offset_y = view_layout.y * window_scale; | ||||
|       cogl_set_viewport (priv->viewport[0] * window_scale - viewport_offset_x, | ||||
|                          priv->viewport[1] * window_scale - viewport_offset_y, | ||||
|                          priv->viewport[2] * window_scale, | ||||
|                          priv->viewport[3] * window_scale); | ||||
|       viewport_offset_x = view_layout.x * fb_scale; | ||||
|       viewport_offset_y = view_layout.y * fb_scale; | ||||
|       cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x, | ||||
|                          priv->viewport[1] * fb_scale - viewport_offset_y, | ||||
|                          priv->viewport[2] * fb_scale, | ||||
|                          priv->viewport[3] * fb_scale); | ||||
|  | ||||
|       perspective = priv->perspective; | ||||
|  | ||||
| @@ -3617,10 +3671,8 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage, | ||||
|                                           perspective.aspect, | ||||
|                                           perspective.z_near, | ||||
|                                           z_2d, | ||||
|                                           priv->viewport[2] * window_scale, | ||||
|                                           priv->viewport[3] * window_scale); | ||||
|  | ||||
|       clutter_stage_apply_scale (stage); | ||||
|                                           priv->viewport[2], | ||||
|                                           priv->viewport[3]); | ||||
|  | ||||
|       clutter_stage_view_set_dirty_viewport (view, FALSE); | ||||
|     } | ||||
| @@ -4635,23 +4687,6 @@ clutter_stage_skip_sync_delay (ClutterStage *stage) | ||||
|     _clutter_stage_window_schedule_update (stage_window, -1); | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_stage_set_scale_factor (ClutterStage *stage, | ||||
|                                  int           factor) | ||||
| { | ||||
|   ClutterStagePrivate *priv = stage->priv; | ||||
|  | ||||
|   if (CLUTTER_ACTOR_IN_DESTRUCTION (stage)) | ||||
|     return; | ||||
|  | ||||
|   if (priv->impl == NULL) | ||||
|     return; | ||||
|  | ||||
|   _clutter_stage_window_set_scale_factor (priv->impl, factor); | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); | ||||
| } | ||||
|  | ||||
| int64_t | ||||
| clutter_stage_get_frame_counter (ClutterStage          *stage) | ||||
| { | ||||
| @@ -4685,6 +4720,7 @@ capture_view (ClutterStage          *stage, | ||||
|   int stride; | ||||
|   CoglBitmap *bitmap; | ||||
|   cairo_rectangle_int_t view_layout; | ||||
|   float view_scale; | ||||
|  | ||||
|   framebuffer = clutter_stage_view_get_framebuffer (view); | ||||
|  | ||||
| @@ -4695,8 +4731,11 @@ capture_view (ClutterStage          *stage, | ||||
|       clutter_stage_do_paint_view (stage, view, rect); | ||||
|     } | ||||
|  | ||||
|   view_scale = clutter_stage_view_get_scale (view); | ||||
|   image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, | ||||
|                                       rect->width, rect->height); | ||||
|                                       rect->width * view_scale, | ||||
|                                       rect->height * view_scale); | ||||
|   cairo_surface_set_device_scale (image, view_scale, view_scale); | ||||
|  | ||||
|   data = cairo_image_surface_get_data (image); | ||||
|   stride = cairo_image_surface_get_stride (image); | ||||
| @@ -4704,7 +4743,8 @@ capture_view (ClutterStage          *stage, | ||||
|   backend = clutter_get_default_backend (); | ||||
|   context = clutter_backend_get_cogl_context (backend); | ||||
|   bitmap = cogl_bitmap_new_for_data (context, | ||||
|                                      rect->width, rect->height, | ||||
|                                      rect->width * view_scale, | ||||
|                                      rect->height * view_scale, | ||||
|                                      CLUTTER_CAIRO_FORMAT_ARGB32, | ||||
|                                      stride, | ||||
|                                      data); | ||||
| @@ -4712,8 +4752,8 @@ capture_view (ClutterStage          *stage, | ||||
|   clutter_stage_view_get_layout (view, &view_layout); | ||||
|  | ||||
|   cogl_framebuffer_read_pixels_into_bitmap (framebuffer, | ||||
|                                             rect->x - view_layout.x, | ||||
|                                             rect->y - view_layout.y, | ||||
|                                             (rect->x - view_layout.x) * view_scale, | ||||
|                                             (rect->y - view_layout.y) * view_scale, | ||||
|                                             COGL_READ_PIXELS_COLOR_BUFFER, | ||||
|                                             bitmap); | ||||
|  | ||||
|   | ||||
| @@ -312,7 +312,7 @@ G_BEGIN_DECLS | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  */ | ||||
| const guint clutter_major_version; | ||||
| extern const guint clutter_major_version; | ||||
|  | ||||
| /** | ||||
|  * clutter_minor_version: | ||||
| @@ -326,7 +326,7 @@ const guint clutter_major_version; | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  */ | ||||
| const guint clutter_minor_version; | ||||
| extern const guint clutter_minor_version; | ||||
|  | ||||
| /** | ||||
|  * clutter_micro_version: | ||||
| @@ -340,7 +340,7 @@ const guint clutter_minor_version; | ||||
|  * | ||||
|  * Since: 1.2 | ||||
|  */ | ||||
| const guint clutter_micro_version; | ||||
| extern const guint clutter_micro_version; | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
|   | ||||
| @@ -51,7 +51,9 @@ | ||||
|  | ||||
| typedef struct _ClutterStageViewCoglPrivate | ||||
| { | ||||
|   /* Stores a list of previous damaged areas in the stage coordinate space */ | ||||
|   /* | ||||
|    * List of previous damaged areas in stage view framebuffer coordinate space. | ||||
|    */ | ||||
| #define DAMAGE_HISTORY_MAX 16 | ||||
| #define DAMAGE_HISTORY(x) ((x) & (DAMAGE_HISTORY_MAX - 1)) | ||||
|   cairo_rectangle_int_t damage_history[DAMAGE_HISTORY_MAX]; | ||||
| @@ -435,13 +437,20 @@ fill_current_damage_history_and_step (ClutterStageView *view) | ||||
|   ClutterStageViewCoglPrivate *view_priv = | ||||
|     clutter_stage_view_cogl_get_instance_private (view_cogl); | ||||
|   cairo_rectangle_int_t view_rect; | ||||
|   cairo_rectangle_int_t *current_damage; | ||||
|   float fb_scale; | ||||
|   cairo_rectangle_int_t *current_fb_damage; | ||||
|  | ||||
|   current_damage = | ||||
|   current_fb_damage = | ||||
|     &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index)]; | ||||
|   clutter_stage_view_get_layout (view, &view_rect); | ||||
|   fb_scale = clutter_stage_view_get_scale (view); | ||||
|  | ||||
|   *current_damage = view_rect; | ||||
|   *current_fb_damage = (cairo_rectangle_int_t) { | ||||
|     .x = 0, | ||||
|     .y = 0, | ||||
|     .width = view_rect.width * fb_scale, | ||||
|     .height = view_rect.height * fb_scale | ||||
|   }; | ||||
|   view_priv->damage_index++; | ||||
| } | ||||
|  | ||||
| @@ -481,6 +490,40 @@ transform_swap_region_to_onscreen (ClutterStageView      *view, | ||||
|   }; | ||||
| } | ||||
|  | ||||
| static void | ||||
| calculate_scissor_region (cairo_rectangle_int_t *fb_clip_region, | ||||
|                           int                    subpixel_compensation, | ||||
|                           int                    fb_width, | ||||
|                           int                    fb_height, | ||||
|                           cairo_rectangle_int_t *out_scissor_rect) | ||||
| { | ||||
|   int scissor_x; | ||||
|   int scissor_y; | ||||
|   int scissor_width; | ||||
|   int scissor_height; | ||||
|  | ||||
|   scissor_x = fb_clip_region->x; | ||||
|   scissor_y = fb_clip_region->y; | ||||
|   scissor_width = fb_clip_region->width; | ||||
|   scissor_height = fb_clip_region->height; | ||||
|  | ||||
|   if (fb_clip_region->x > 0) | ||||
|     scissor_x += subpixel_compensation; | ||||
|   if (fb_clip_region->y > 0) | ||||
|     scissor_y += subpixel_compensation; | ||||
|   if (fb_clip_region->x + fb_clip_region->width < fb_width) | ||||
|     scissor_width -= 2 * subpixel_compensation; | ||||
|   if (fb_clip_region->y + fb_clip_region->height < fb_height) | ||||
|     scissor_height -= 2 * subpixel_compensation; | ||||
|  | ||||
|   *out_scissor_rect = (cairo_rectangle_int_t) { | ||||
|     .x = scissor_x, | ||||
|     .y = scissor_y, | ||||
|     .width = scissor_width, | ||||
|     .height = scissor_height | ||||
|   }; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|                                 ClutterStageView   *view) | ||||
| @@ -501,13 +544,18 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|   ClutterActor *wrapper; | ||||
|   cairo_rectangle_int_t redraw_clip; | ||||
|   cairo_rectangle_int_t swap_region; | ||||
|   cairo_rectangle_int_t clip_region; | ||||
|   cairo_rectangle_int_t fb_clip_region; | ||||
|   gboolean clip_region_empty; | ||||
|   int window_scale; | ||||
|   float fb_scale; | ||||
|   int subpixel_compensation = 0; | ||||
|   int fb_width, fb_height; | ||||
|  | ||||
|   wrapper = CLUTTER_ACTOR (stage_cogl->wrapper); | ||||
|  | ||||
|   clutter_stage_view_get_layout (view, &view_rect); | ||||
|   fb_scale = clutter_stage_view_get_scale (view); | ||||
|   fb_width = cogl_framebuffer_get_width (fb); | ||||
|   fb_height = cogl_framebuffer_get_height (fb); | ||||
|  | ||||
|   can_blit_sub_buffer = | ||||
|     cogl_is_onscreen (fb) && | ||||
| @@ -542,11 +590,24 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|       cogl_onscreen_get_frame_counter (COGL_ONSCREEN (fb)) > 3) | ||||
|     { | ||||
|       may_use_clipped_redraw = TRUE; | ||||
|       clip_region = redraw_clip; | ||||
|  | ||||
|       if (fb_scale != floorf (fb_scale)) | ||||
|         subpixel_compensation = ceilf (fb_scale); | ||||
|  | ||||
|       fb_clip_region = (cairo_rectangle_int_t) { | ||||
|         .x = (floorf ((redraw_clip.x - view_rect.x) * fb_scale) - | ||||
|               subpixel_compensation), | ||||
|         .y = (floorf ((redraw_clip.y - view_rect.y) * fb_scale) - | ||||
|               subpixel_compensation), | ||||
|         .width = (ceilf (redraw_clip.width * fb_scale) + | ||||
|                   (2 * subpixel_compensation)), | ||||
|         .height = (ceilf (redraw_clip.height * fb_scale) + | ||||
|                    (2 * subpixel_compensation)) | ||||
|       }; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       clip_region = (cairo_rectangle_int_t){ 0 }; | ||||
|       fb_clip_region = (cairo_rectangle_int_t) { 0 }; | ||||
|     } | ||||
|  | ||||
|   if (may_use_clipped_redraw && | ||||
| @@ -555,9 +616,7 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|   else | ||||
|     use_clipped_redraw = FALSE; | ||||
|  | ||||
|   clip_region_empty = may_use_clipped_redraw && clip_region.width == 0; | ||||
|  | ||||
|   window_scale = _clutter_stage_window_get_scale_factor (stage_window); | ||||
|   clip_region_empty = may_use_clipped_redraw && fb_clip_region.width == 0; | ||||
|  | ||||
|   swap_with_damage = FALSE; | ||||
|   if (has_buffer_age) | ||||
| @@ -565,34 +624,44 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|       if (use_clipped_redraw && !clip_region_empty) | ||||
|         { | ||||
|           int age, i; | ||||
|           cairo_rectangle_int_t *current_damage = | ||||
|           cairo_rectangle_int_t *current_fb_damage = | ||||
|             &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index++)]; | ||||
|  | ||||
|           age = cogl_onscreen_get_buffer_age (COGL_ONSCREEN (fb)); | ||||
|  | ||||
|           if (valid_buffer_age (view_cogl, age)) | ||||
|             { | ||||
|               *current_damage = clip_region; | ||||
|               cairo_rectangle_int_t damage_region; | ||||
|  | ||||
|               *current_fb_damage = fb_clip_region; | ||||
|  | ||||
|               for (i = 1; i <= age; i++) | ||||
|                 { | ||||
|                   cairo_rectangle_int_t *damage = | ||||
|                   cairo_rectangle_int_t *fb_damage = | ||||
|                     &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - i - 1)]; | ||||
|  | ||||
|                   _clutter_util_rectangle_union (&clip_region, damage, &clip_region); | ||||
|                   _clutter_util_rectangle_union (&fb_clip_region, | ||||
|                                                  fb_damage, | ||||
|                                                  &fb_clip_region); | ||||
|                 } | ||||
|  | ||||
|               /* Update the bounding redraw clip state with the extra damage. */ | ||||
|               damage_region = (cairo_rectangle_int_t) { | ||||
|                 .x = view_rect.x + floorf (fb_clip_region.x / fb_scale), | ||||
|                 .y = view_rect.y + floorf (fb_clip_region.y / fb_scale), | ||||
|                 .width = ceilf (fb_clip_region.width / fb_scale), | ||||
|                 .height = ceilf (fb_clip_region.height / fb_scale) | ||||
|               }; | ||||
|               _clutter_util_rectangle_union (&stage_cogl->bounding_redraw_clip, | ||||
|                                              &clip_region, | ||||
|                                              &damage_region, | ||||
|                                              &stage_cogl->bounding_redraw_clip); | ||||
|  | ||||
|               CLUTTER_NOTE (CLIPPING, "Reusing back buffer(age=%d) - repairing region: x=%d, y=%d, width=%d, height=%d\n", | ||||
|                             age, | ||||
|                             clip_region.x, | ||||
|                             clip_region.y, | ||||
|                             clip_region.width, | ||||
|                             clip_region.height); | ||||
|                             fb_clip_region.x, | ||||
|                             fb_clip_region.y, | ||||
|                             fb_clip_region.width, | ||||
|                             fb_clip_region.height); | ||||
|  | ||||
|               swap_with_damage = TRUE; | ||||
|             } | ||||
| @@ -600,7 +669,12 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|             { | ||||
|               CLUTTER_NOTE (CLIPPING, "Invalid back buffer(age=%d): forcing full redraw\n", age); | ||||
|               use_clipped_redraw = FALSE; | ||||
|               *current_damage = view_rect; | ||||
|               *current_fb_damage = (cairo_rectangle_int_t) { | ||||
|                 .x = 0, | ||||
|                 .y = 0, | ||||
|                 .width = view_rect.width * fb_scale, | ||||
|                 .height = view_rect.height * fb_scale | ||||
|               }; | ||||
|             } | ||||
|         } | ||||
|       else if (!use_clipped_redraw) | ||||
| @@ -616,26 +690,34 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|     } | ||||
|   else if (use_clipped_redraw) | ||||
|     { | ||||
|       int scissor_x; | ||||
|       int scissor_y; | ||||
|       cairo_rectangle_int_t scissor_rect; | ||||
|  | ||||
|       calculate_scissor_region (&fb_clip_region, | ||||
|                                 subpixel_compensation, | ||||
|                                 fb_width, fb_height, | ||||
|                                 &scissor_rect); | ||||
|  | ||||
|       CLUTTER_NOTE (CLIPPING, | ||||
|                     "Stage clip pushed: x=%d, y=%d, width=%d, height=%d\n", | ||||
|                     clip_region.x, | ||||
|                     clip_region.y, | ||||
|                     clip_region.width, | ||||
|                     clip_region.height); | ||||
|                     scissor_rect.x, | ||||
|                     scissor_rect.y, | ||||
|                     scissor_rect.width, | ||||
|                     scissor_rect.height); | ||||
|  | ||||
|       stage_cogl->using_clipped_redraw = TRUE; | ||||
|  | ||||
|       scissor_x = (clip_region.x - view_rect.x) * window_scale; | ||||
|       scissor_y = (clip_region.y - view_rect.y) * window_scale; | ||||
|       cogl_framebuffer_push_scissor_clip (fb, | ||||
|                                           scissor_x, | ||||
|                                           scissor_y, | ||||
|                                           clip_region.width * window_scale, | ||||
|                                           clip_region.height * window_scale); | ||||
|       paint_stage (stage_cogl, view, &clip_region); | ||||
|                                           scissor_rect.x, | ||||
|                                           scissor_rect.y, | ||||
|                                           scissor_rect.width, | ||||
|                                           scissor_rect.height); | ||||
|       paint_stage (stage_cogl, view, | ||||
|                    &(cairo_rectangle_int_t) { | ||||
|                      .x = view_rect.x + floorf ((fb_clip_region.x - 0) / fb_scale), | ||||
|                      .y = view_rect.y + floorf ((fb_clip_region.y - 0) / fb_scale), | ||||
|                      .width = ceilf ((fb_clip_region.width + 0) / fb_scale), | ||||
|                      .height = ceilf ((fb_clip_region.height + 0) / fb_scale) | ||||
|                    }); | ||||
|       cogl_framebuffer_pop_clip (fb); | ||||
|  | ||||
|       stage_cogl->using_clipped_redraw = FALSE; | ||||
| @@ -650,17 +732,25 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|           may_use_clipped_redraw && | ||||
|           !clip_region_empty) | ||||
|         { | ||||
|           int scissor_x; | ||||
|           int scissor_y; | ||||
|           cairo_rectangle_int_t scissor_rect; | ||||
|  | ||||
|           calculate_scissor_region (&fb_clip_region, | ||||
|                                     subpixel_compensation, | ||||
|                                     fb_width, fb_height, | ||||
|                                     &scissor_rect); | ||||
|  | ||||
|           scissor_x = (clip_region.x - view_rect.x) * window_scale;; | ||||
|           scissor_y = (clip_region.y - view_rect.y) * window_scale; | ||||
|           cogl_framebuffer_push_scissor_clip (fb, | ||||
|                                               scissor_x, | ||||
|                                               scissor_y, | ||||
|                                               clip_region.width * window_scale, | ||||
|                                               clip_region.height * window_scale); | ||||
|           paint_stage (stage_cogl, view, &clip_region); | ||||
|                                               scissor_rect.x, | ||||
|                                               scissor_rect.y, | ||||
|                                               scissor_rect.width, | ||||
|                                               scissor_rect.height); | ||||
|           paint_stage (stage_cogl, view, | ||||
|                        &(cairo_rectangle_int_t) { | ||||
|                          .x = view_rect.x + floorf (fb_clip_region.x / fb_scale), | ||||
|                          .y = view_rect.y + floorf (fb_clip_region.y / fb_scale), | ||||
|                          .width = ceilf (fb_clip_region.width / fb_scale), | ||||
|                          .height = ceilf (fb_clip_region.height / fb_scale) | ||||
|                        }); | ||||
|           cogl_framebuffer_pop_clip (fb); | ||||
|         } | ||||
|       else | ||||
| @@ -723,12 +813,7 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|         } | ||||
|       else if (use_clipped_redraw) | ||||
|         { | ||||
|           swap_region = (cairo_rectangle_int_t) { | ||||
|             .x = (clip_region.x - view_rect.x) * window_scale, | ||||
|             .y = (clip_region.y - view_rect.y) * window_scale, | ||||
|             .width = clip_region.width * window_scale, | ||||
|             .height = clip_region.height * window_scale, | ||||
|           }; | ||||
|           swap_region = fb_clip_region; | ||||
|           g_assert (swap_region.width > 0); | ||||
|           do_swap_buffer = TRUE; | ||||
|         } | ||||
| @@ -737,8 +822,8 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window, | ||||
|           swap_region = (cairo_rectangle_int_t) { | ||||
|             .x = 0, | ||||
|             .y = 0, | ||||
|             .width = view_rect.width * window_scale, | ||||
|             .height = view_rect.height * window_scale, | ||||
|             .width = view_rect.width * fb_scale, | ||||
|             .height = view_rect.height * fb_scale, | ||||
|           }; | ||||
|           do_swap_buffer = TRUE; | ||||
|         } | ||||
| @@ -810,9 +895,25 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window, | ||||
|   gboolean has_buffer_age = | ||||
|     cogl_is_onscreen (framebuffer) && | ||||
|     cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_BUFFER_AGE); | ||||
|   cairo_rectangle_int_t *rect; | ||||
|   float fb_scale; | ||||
|   gboolean scale_is_fractional; | ||||
|  | ||||
|   if (!has_buffer_age) | ||||
|   fb_scale = clutter_stage_view_get_scale (view); | ||||
|   if (fb_scale != floorf (fb_scale)) | ||||
|     scale_is_fractional = TRUE; | ||||
|   else | ||||
|     scale_is_fractional = FALSE; | ||||
|  | ||||
|   /* | ||||
|    * Buffer damage is tracked in the framebuffer coordinate space | ||||
|    * using the damage history. When fractional scaling is used, a | ||||
|    * coordinate on the stage might not correspond to the exact position of any | ||||
|    * physical pixel, which causes issues when painting using the pick mode. | ||||
|    * | ||||
|    * For now, always use the (0, 0) pixel for picking when using fractional | ||||
|    * framebuffer scaling. | ||||
|    */ | ||||
|   if (!has_buffer_age || scale_is_fractional) | ||||
|     { | ||||
|       *x = 0; | ||||
|       *y = 0; | ||||
| @@ -823,12 +924,13 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window, | ||||
|       ClutterStageViewCoglPrivate *view_priv = | ||||
|         clutter_stage_view_cogl_get_instance_private (view_cogl); | ||||
|       cairo_rectangle_int_t view_layout; | ||||
|       cairo_rectangle_int_t *fb_damage; | ||||
|  | ||||
|       clutter_stage_view_get_layout (view, &view_layout); | ||||
|  | ||||
|       rect = &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - 1)]; | ||||
|       *x = rect->x - view_layout.x; | ||||
|       *y = rect->y - view_layout.y; | ||||
|       fb_damage = &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - 1)]; | ||||
|       *x = fb_damage->x / fb_scale; | ||||
|       *y = fb_damage->y / fb_scale; | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -102,6 +102,9 @@ struct _ClutterDeviceManagerEvdevPrivate | ||||
|   gpointer                        constrain_data; | ||||
|   GDestroyNotify                  constrain_data_notify; | ||||
|  | ||||
|   ClutterRelativeMotionFilter relative_motion_filter; | ||||
|   gpointer relative_motion_filter_user_data; | ||||
|  | ||||
|   ClutterStageManager *stage_manager; | ||||
|   guint stage_added_handler; | ||||
|   guint stage_removed_handler; | ||||
| @@ -124,6 +127,7 @@ G_DEFINE_TYPE_WITH_CODE (ClutterDeviceManagerEvdev, | ||||
| static ClutterOpenDeviceCallback  device_open_callback; | ||||
| static ClutterCloseDeviceCallback device_close_callback; | ||||
| static gpointer                   device_callback_data; | ||||
| static gchar *                    evdev_seat_id; | ||||
|  | ||||
| #ifdef CLUTTER_ENABLE_DEBUG | ||||
| static const char *device_type_str[] = { | ||||
| @@ -263,6 +267,22 @@ _clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev *mana | ||||
|     } | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_device_manager_evdev_filter_relative_motion (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|                                                       ClutterInputDevice        *device, | ||||
|                                                       float                      x, | ||||
|                                                       float                      y, | ||||
|                                                       float                     *dx, | ||||
|                                                       float                     *dy) | ||||
| { | ||||
|   ClutterDeviceManagerEvdevPrivate *priv = manager_evdev->priv; | ||||
|  | ||||
|   if (!priv->relative_motion_filter) | ||||
|     return; | ||||
|  | ||||
|   priv->relative_motion_filter (device, x, y, dx, dy, | ||||
|                                 priv->relative_motion_filter_user_data); | ||||
| } | ||||
|  | ||||
| static ClutterEvent * | ||||
| new_absolute_motion_event (ClutterInputDevice *input_device, | ||||
| @@ -311,6 +331,9 @@ new_absolute_motion_event (ClutterInputDevice *input_device, | ||||
|   _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); | ||||
|   event->motion.x = x; | ||||
|   event->motion.y = y; | ||||
|   clutter_input_device_evdev_translate_coordinates (input_device, stage, | ||||
|                                                     &event->motion.x, | ||||
|                                                     &event->motion.y); | ||||
|   event->motion.axes = axes; | ||||
|   clutter_event_set_source_device (event, input_device); | ||||
|  | ||||
| @@ -354,11 +377,23 @@ notify_relative_tool_motion (ClutterInputDevice *input_device, | ||||
|                              gfloat              dy, | ||||
|                              gdouble            *axes) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device_evdev; | ||||
|   ClutterEvent *event; | ||||
|   ClutterSeatEvdev *seat; | ||||
|   gfloat x, y; | ||||
|  | ||||
|   device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device); | ||||
|   seat = _clutter_input_device_evdev_get_seat (device_evdev); | ||||
|   x = input_device->current_x + dx; | ||||
|   y = input_device->current_y + dy; | ||||
|  | ||||
|   _clutter_device_manager_evdev_filter_relative_motion (seat->manager_evdev, | ||||
|                                                         input_device, | ||||
|                                                         seat->pointer_x, | ||||
|                                                         seat->pointer_y, | ||||
|                                                         &dx, | ||||
|                                                         &dy); | ||||
|  | ||||
|   event = new_absolute_motion_event (input_device, time_us, x, y, axes); | ||||
|   _clutter_evdev_event_set_relative_motion (event, dx, dy, 0, 0); | ||||
|  | ||||
| @@ -509,6 +544,10 @@ notify_touch_event (ClutterInputDevice *input_device, | ||||
|   event->touch.device = seat->core_pointer; | ||||
|   event->touch.x = x; | ||||
|   event->touch.y = y; | ||||
|   clutter_input_device_evdev_translate_coordinates (input_device, stage, | ||||
|                                                     &event->touch.x, | ||||
|                                                     &event->touch.y); | ||||
|  | ||||
|   /* "NULL" sequences are special cased in clutter */ | ||||
|   event->touch.sequence = GINT_TO_POINTER (slot + 1); | ||||
|   _clutter_xkb_translate_state (event, seat->xkb, seat->button_state); | ||||
| @@ -660,6 +699,7 @@ notify_pad_button (ClutterInputDevice *input_device, | ||||
|                    guint64             time_us, | ||||
|                    guint32             button, | ||||
|                    guint32             mode_group, | ||||
|                    guint32             mode, | ||||
|                    guint32             pressed) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device_evdev; | ||||
| @@ -685,6 +725,7 @@ notify_pad_button (ClutterInputDevice *input_device, | ||||
|   event->pad_button.stage = stage; | ||||
|   event->pad_button.button = button; | ||||
|   event->pad_button.group = mode_group; | ||||
|   event->pad_button.mode = mode; | ||||
|   clutter_event_set_device (event, input_device); | ||||
|   clutter_event_set_source_device (event, input_device); | ||||
|   clutter_event_set_time (event, us2ms (time_us)); | ||||
| @@ -700,6 +741,7 @@ notify_pad_strip (ClutterInputDevice *input_device, | ||||
|                   guint32             strip_number, | ||||
|                   guint32             strip_source, | ||||
|                   guint32             mode_group, | ||||
|                   guint32             mode, | ||||
|                   gdouble             value) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device_evdev; | ||||
| @@ -729,6 +771,7 @@ notify_pad_strip (ClutterInputDevice *input_device, | ||||
|   event->pad_strip.strip_number = strip_number; | ||||
|   event->pad_strip.value = value; | ||||
|   event->pad_strip.group = mode_group; | ||||
|   event->pad_strip.mode = mode; | ||||
|   clutter_event_set_device (event, input_device); | ||||
|   clutter_event_set_source_device (event, input_device); | ||||
|   clutter_event_set_time (event, us2ms (time_us)); | ||||
| @@ -744,6 +787,7 @@ notify_pad_ring (ClutterInputDevice *input_device, | ||||
|                  guint32             ring_number, | ||||
|                  guint32             ring_source, | ||||
|                  guint32             mode_group, | ||||
|                  guint32             mode, | ||||
|                  gdouble             angle) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device_evdev; | ||||
| @@ -773,6 +817,7 @@ notify_pad_ring (ClutterInputDevice *input_device, | ||||
|   event->pad_ring.ring_number = ring_number; | ||||
|   event->pad_ring.angle = angle; | ||||
|   event->pad_ring.group = mode_group; | ||||
|   event->pad_ring.mode = mode; | ||||
|   clutter_event_set_device (event, input_device); | ||||
|   clutter_event_set_source_device (event, input_device); | ||||
|   clutter_event_set_time (event, us2ms (time_us)); | ||||
| @@ -1807,7 +1852,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|     case LIBINPUT_EVENT_TABLET_PAD_BUTTON: | ||||
|       { | ||||
|         guint64 time; | ||||
|         guint32 button_state, button, group; | ||||
|         guint32 button_state, button, group, mode; | ||||
|         struct libinput_tablet_pad_mode_group *mode_group; | ||||
|         struct libinput_event_tablet_pad *pad_event = | ||||
|           libinput_event_get_tablet_pad_event (event); | ||||
| @@ -1817,17 +1862,18 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|  | ||||
|         mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); | ||||
|         group = libinput_tablet_pad_mode_group_get_index (mode_group); | ||||
|         mode = libinput_event_tablet_pad_get_mode (pad_event); | ||||
|  | ||||
|         button = libinput_event_tablet_pad_get_button_number (pad_event); | ||||
|         button_state = libinput_event_tablet_pad_get_button_state (pad_event) == | ||||
|                        LIBINPUT_BUTTON_STATE_PRESSED; | ||||
|         notify_pad_button (device, time, button, group, button_state); | ||||
|         notify_pad_button (device, time, button, group, mode, button_state); | ||||
|         break; | ||||
|       } | ||||
|     case LIBINPUT_EVENT_TABLET_PAD_STRIP: | ||||
|       { | ||||
|         guint64 time; | ||||
|         guint32 number, source, group; | ||||
|         guint32 number, source, group, mode; | ||||
|         struct libinput_tablet_pad_mode_group *mode_group; | ||||
|         struct libinput_event_tablet_pad *pad_event = | ||||
|           libinput_event_get_tablet_pad_event (event); | ||||
| @@ -1841,14 +1887,15 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|  | ||||
|         mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); | ||||
|         group = libinput_tablet_pad_mode_group_get_index (mode_group); | ||||
|         mode = libinput_event_tablet_pad_get_mode (pad_event); | ||||
|  | ||||
|         notify_pad_strip (device, time, number, source, group, value); | ||||
|         notify_pad_strip (device, time, number, source, group, mode, value); | ||||
|         break; | ||||
|       } | ||||
|     case LIBINPUT_EVENT_TABLET_PAD_RING: | ||||
|       { | ||||
|         guint64 time; | ||||
|         guint32 number, source, group; | ||||
|         guint32 number, source, group, mode; | ||||
|         struct libinput_tablet_pad_mode_group *mode_group; | ||||
|         struct libinput_event_tablet_pad *pad_event = | ||||
|           libinput_event_get_tablet_pad_event (event); | ||||
| @@ -1862,8 +1909,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|  | ||||
|         mode_group = libinput_event_tablet_pad_get_mode_group (pad_event); | ||||
|         group = libinput_tablet_pad_mode_group_get_index (mode_group); | ||||
|         mode = libinput_event_tablet_pad_get_mode (pad_event); | ||||
|  | ||||
|         notify_pad_ring (device, time, number, source, group, angle); | ||||
|         notify_pad_ring (device, time, number, source, group, mode, angle); | ||||
|         break; | ||||
|       } | ||||
|     default: | ||||
| @@ -2045,7 +2093,8 @@ clutter_device_manager_evdev_constructed (GObject *gobject) | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   if (libinput_udev_assign_seat (priv->libinput, "seat0") == -1) | ||||
|   if (libinput_udev_assign_seat (priv->libinput, | ||||
|                                  evdev_seat_id ? evdev_seat_id : "seat0") == -1) | ||||
|     { | ||||
|       g_critical ("Failed to assign a seat to the libinput object."); | ||||
|       libinput_unref (priv->libinput); | ||||
| @@ -2278,6 +2327,12 @@ _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *mana | ||||
|   return next_id; | ||||
| } | ||||
|  | ||||
| void | ||||
| _clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev) | ||||
| { | ||||
|   dispatch_libinput (manager_evdev); | ||||
| } | ||||
|  | ||||
| static int | ||||
| compare_ids (gconstpointer a, | ||||
|              gconstpointer b) | ||||
| @@ -2547,6 +2602,21 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, | ||||
|   xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_evdev_get_keyboard_layout_index: (skip) | ||||
|  */ | ||||
| xkb_layout_index_t | ||||
| clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev) | ||||
| { | ||||
|   ClutterDeviceManagerEvdev *manager_evdev; | ||||
|   struct xkb_state *state; | ||||
|  | ||||
|   manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); | ||||
|   state = manager_evdev->priv->main_seat->xkb; | ||||
|  | ||||
|   return xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_LOCKED); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_evdev_set_keyboard_numlock: (skip) | ||||
|  * @evdev: the #ClutterDeviceManager created by the evdev backend | ||||
| @@ -2637,6 +2707,23 @@ clutter_evdev_set_pointer_constrain_callback (ClutterDeviceManager            *e | ||||
|   priv->constrain_data_notify = user_data_notify; | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_evdev_set_relative_motion_filter (ClutterDeviceManager       *evdev, | ||||
|                                           ClutterRelativeMotionFilter filter, | ||||
|                                           gpointer                    user_data) | ||||
| { | ||||
|   ClutterDeviceManagerEvdev *manager_evdev; | ||||
|   ClutterDeviceManagerEvdevPrivate *priv; | ||||
|  | ||||
|   g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev)); | ||||
|  | ||||
|   manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev); | ||||
|   priv = manager_evdev->priv; | ||||
|  | ||||
|   priv->relative_motion_filter = filter; | ||||
|   priv->relative_motion_filter_user_data = user_data; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_evdev_set_keyboard_repeat: | ||||
|  * @evdev: the #ClutterDeviceManager created by the evdev backend | ||||
| @@ -2788,3 +2875,18 @@ clutter_evdev_warp_pointer (ClutterInputDevice   *pointer_device, | ||||
| { | ||||
|   notify_absolute_motion (pointer_device, ms2us(time_), x, y, NULL); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * clutter_evdev_set_seat_id: | ||||
|  * @seat_id: The seat ID | ||||
|  * | ||||
|  * Sets the seat to assign to the libinput context. | ||||
|  * | ||||
|  * For reliable effects, this function must be called before clutter_init(). | ||||
|  */ | ||||
| void | ||||
| clutter_evdev_set_seat_id (const gchar *seat_id) | ||||
| { | ||||
|   g_free (evdev_seat_id); | ||||
|   evdev_seat_id = g_strdup (seat_id); | ||||
| } | ||||
|   | ||||
| @@ -76,6 +76,15 @@ void _clutter_device_manager_evdev_constrain_pointer (ClutterDeviceManagerEvdev | ||||
|                                                       float                     *new_x, | ||||
|                                                       float                     *new_y); | ||||
|  | ||||
| void _clutter_device_manager_evdev_filter_relative_motion (ClutterDeviceManagerEvdev *manager_evdev, | ||||
|                                                            ClutterInputDevice        *device, | ||||
|                                                            float                      x, | ||||
|                                                            float                      y, | ||||
|                                                            float                     *dx, | ||||
|                                                            float                     *dy); | ||||
|  | ||||
| void _clutter_device_manager_evdev_dispatch (ClutterDeviceManagerEvdev *manager_evdev); | ||||
|  | ||||
| static inline guint64 | ||||
| us (guint64 us) | ||||
| { | ||||
|   | ||||
| @@ -57,6 +57,9 @@ void  clutter_evdev_set_device_callbacks (ClutterOpenDeviceCallback  open_callba | ||||
|                                           ClutterCloseDeviceCallback close_callback, | ||||
|                                           gpointer                   user_data); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_ALL | ||||
| void  clutter_evdev_set_seat_id (const gchar *seat_id); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| void  clutter_evdev_release_devices (void); | ||||
| CLUTTER_AVAILABLE_IN_1_10 | ||||
| @@ -94,6 +97,18 @@ void  clutter_evdev_set_pointer_constrain_callback (ClutterDeviceManager | ||||
| 						    gpointer                         user_data, | ||||
| 						    GDestroyNotify                   user_data_notify); | ||||
|  | ||||
| typedef void (*ClutterRelativeMotionFilter) (ClutterInputDevice *device, | ||||
|                                              float               x, | ||||
|                                              float               y, | ||||
|                                              float              *dx, | ||||
|                                              float              *dy, | ||||
|                                              gpointer            user_data); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| void clutter_evdev_set_relative_motion_filter (ClutterDeviceManager       *evdev, | ||||
|                                                ClutterRelativeMotionFilter filter, | ||||
|                                                gpointer                    user_data); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_16 | ||||
| void               clutter_evdev_set_keyboard_map   (ClutterDeviceManager *evdev, | ||||
| 						     struct xkb_keymap    *keymap); | ||||
| @@ -105,6 +120,9 @@ CLUTTER_AVAILABLE_IN_1_20 | ||||
| void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev, | ||||
|                                               xkb_layout_index_t    idx); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_MUTTER | ||||
| xkb_layout_index_t clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev); | ||||
|  | ||||
| CLUTTER_AVAILABLE_IN_1_26 | ||||
| void clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev, | ||||
|                                          gboolean              numlock_state); | ||||
|   | ||||
| @@ -35,6 +35,8 @@ | ||||
| #include "clutter-input-device-evdev.h" | ||||
| #include "clutter-device-manager-evdev.h" | ||||
|  | ||||
| #include "cairo-gobject.h" | ||||
|  | ||||
| typedef struct _ClutterInputDeviceClass        ClutterInputDeviceEvdevClass; | ||||
|  | ||||
| #define clutter_input_device_evdev_get_type _clutter_input_device_evdev_get_type | ||||
| @@ -43,6 +45,15 @@ G_DEFINE_TYPE (ClutterInputDeviceEvdev, | ||||
|                clutter_input_device_evdev, | ||||
|                CLUTTER_TYPE_INPUT_DEVICE) | ||||
|  | ||||
| enum { | ||||
|   PROP_0, | ||||
|   PROP_DEVICE_MATRIX, | ||||
|   PROP_OUTPUT_ASPECT_RATIO, | ||||
|   N_PROPS | ||||
| }; | ||||
|  | ||||
| static GParamSpec *obj_props[N_PROPS] = { 0 }; | ||||
|  | ||||
| static void | ||||
| clutter_input_device_evdev_finalize (GObject *object) | ||||
| { | ||||
| @@ -59,6 +70,53 @@ clutter_input_device_evdev_finalize (GObject *object) | ||||
|   G_OBJECT_CLASS (clutter_input_device_evdev_parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_input_device_evdev_set_property (GObject      *object, | ||||
|                                          guint         prop_id, | ||||
|                                          const GValue *value, | ||||
|                                          GParamSpec   *pspec) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object); | ||||
|  | ||||
|   switch (prop_id) | ||||
|     { | ||||
|     case PROP_DEVICE_MATRIX: | ||||
|       { | ||||
|         const cairo_matrix_t *matrix = g_value_get_boxed (value); | ||||
|         cairo_matrix_init_identity (&device->device_matrix); | ||||
|         cairo_matrix_multiply (&device->device_matrix, | ||||
|                                &device->device_matrix, matrix); | ||||
|         break; | ||||
|       } | ||||
|     case PROP_OUTPUT_ASPECT_RATIO: | ||||
|       device->output_ratio = g_value_get_double (value); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_input_device_evdev_get_property (GObject    *object, | ||||
|                                          guint       prop_id, | ||||
|                                          GValue     *value, | ||||
|                                          GParamSpec *pspec) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device = CLUTTER_INPUT_DEVICE_EVDEV (object); | ||||
|  | ||||
|   switch (prop_id) | ||||
|     { | ||||
|     case PROP_DEVICE_MATRIX: | ||||
|       g_value_set_boxed (value, &device->device_matrix); | ||||
|       break; | ||||
|     case PROP_OUTPUT_ASPECT_RATIO: | ||||
|       g_value_set_double (value, device->output_ratio); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_input_device_evdev_keycode_to_evdev (ClutterInputDevice *device, | ||||
|                                              guint hardware_keycode, | ||||
| @@ -105,22 +163,89 @@ clutter_input_device_evdev_update_from_tool (ClutterInputDevice     *device, | ||||
|   if (libinput_tablet_tool_has_slider (evdev_tool->tool)) | ||||
|     _clutter_input_device_add_axis (device, CLUTTER_INPUT_AXIS_SLIDER, -1, 1, 0); | ||||
|  | ||||
|   if (libinput_tablet_tool_has_wheel (evdev_tool->tool)) | ||||
|     _clutter_input_device_add_axis (device, CLUTTER_INPUT_AXIS_WHEEL, -180, 180, 0); | ||||
|  | ||||
|   g_object_thaw_notify (G_OBJECT (device)); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_input_device_evdev_is_mode_switch_button (ClutterInputDevice *device, | ||||
|                                                   guint               group, | ||||
|                                                   guint               button) | ||||
| { | ||||
|   struct libinput_device *libinput_device; | ||||
|   struct libinput_tablet_pad_mode_group *mode_group; | ||||
|  | ||||
|   libinput_device = clutter_evdev_input_device_get_libinput_device (device); | ||||
|   mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group); | ||||
|  | ||||
|   return libinput_tablet_pad_mode_group_button_is_toggle (mode_group, button) != 0; | ||||
| } | ||||
|  | ||||
| static gint | ||||
| clutter_input_device_evdev_get_group_n_modes (ClutterInputDevice *device, | ||||
|                                               gint                group) | ||||
| { | ||||
|   struct libinput_device *libinput_device; | ||||
|   struct libinput_tablet_pad_mode_group *mode_group; | ||||
|  | ||||
|   libinput_device = clutter_evdev_input_device_get_libinput_device (device); | ||||
|   mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group); | ||||
|  | ||||
|   return libinput_tablet_pad_mode_group_get_num_modes (mode_group); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_input_device_evdev_is_grouped (ClutterInputDevice *device, | ||||
|                                        ClutterInputDevice *other_device) | ||||
| { | ||||
|   struct libinput_device *libinput_device, *other_libinput_device; | ||||
|  | ||||
|   libinput_device = clutter_evdev_input_device_get_libinput_device (device); | ||||
|   other_libinput_device = clutter_evdev_input_device_get_libinput_device (other_device); | ||||
|  | ||||
|   return libinput_device_get_device_group (libinput_device) == | ||||
|     libinput_device_get_device_group (other_libinput_device); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass) | ||||
| { | ||||
|   GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||||
|  | ||||
|   object_class->finalize = clutter_input_device_evdev_finalize; | ||||
|   object_class->set_property = clutter_input_device_evdev_set_property; | ||||
|   object_class->get_property = clutter_input_device_evdev_get_property; | ||||
|  | ||||
|   klass->keycode_to_evdev = clutter_input_device_evdev_keycode_to_evdev; | ||||
|   klass->update_from_tool = clutter_input_device_evdev_update_from_tool; | ||||
|   klass->is_mode_switch_button = clutter_input_device_evdev_is_mode_switch_button; | ||||
|   klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes; | ||||
|   klass->is_grouped = clutter_input_device_evdev_is_grouped; | ||||
|  | ||||
|   obj_props[PROP_DEVICE_MATRIX] = | ||||
|     g_param_spec_boxed ("device-matrix", | ||||
| 			P_("Device input matrix"), | ||||
| 			P_("Device input matrix"), | ||||
| 			CAIRO_GOBJECT_TYPE_MATRIX, | ||||
| 			CLUTTER_PARAM_READWRITE); | ||||
|   obj_props[PROP_OUTPUT_ASPECT_RATIO] = | ||||
|     g_param_spec_double ("output-aspect-ratio", | ||||
|                          P_("Output aspect ratio"), | ||||
|                          P_("Output aspect ratio"), | ||||
|                          0, G_MAXDOUBLE, 0, | ||||
|                          CLUTTER_PARAM_READWRITE); | ||||
|  | ||||
|   g_object_class_install_properties (object_class, N_PROPS, obj_props); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self) | ||||
| { | ||||
|   cairo_matrix_init_identity (&self->device_matrix); | ||||
|   self->device_aspect_ratio = 0; | ||||
|   self->output_ratio = 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -143,6 +268,7 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager, | ||||
|   gchar *vendor, *product; | ||||
|   gint device_id, n_rings = 0, n_strips = 0, n_groups = 1; | ||||
|   gchar *node_path; | ||||
|   gdouble width, height; | ||||
|  | ||||
|   type = _clutter_input_device_evdev_determine_type (libinput_device); | ||||
|   vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device)); | ||||
| @@ -182,6 +308,9 @@ _clutter_input_device_evdev_new (ClutterDeviceManager *manager, | ||||
|   g_free (vendor); | ||||
|   g_free (product); | ||||
|  | ||||
|   if (libinput_device_get_size (libinput_device, &width, &height) == 0) | ||||
|     device->device_aspect_ratio = width / height; | ||||
|  | ||||
|   return CLUTTER_INPUT_DEVICE (device); | ||||
| } | ||||
|  | ||||
| @@ -313,3 +442,39 @@ clutter_evdev_event_sequence_get_slot (const ClutterEventSequence *sequence) | ||||
|  | ||||
|   return GPOINTER_TO_INT (sequence) - 1; | ||||
| } | ||||
|  | ||||
| void | ||||
| clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device, | ||||
|                                                   ClutterStage       *stage, | ||||
|                                                   gfloat             *x, | ||||
|                                                   gfloat             *y) | ||||
| { | ||||
|   ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); | ||||
|   double min_x = 0, min_y = 0, max_x = 1, max_y = 1; | ||||
|   gdouble stage_width, stage_height; | ||||
|   double x_d, y_d; | ||||
|  | ||||
|   stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage)); | ||||
|   stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage)); | ||||
|   x_d = *x / stage_width; | ||||
|   y_d = *y / stage_height; | ||||
|  | ||||
|   /* Apply aspect ratio */ | ||||
|   if (device_evdev->output_ratio > 0 && | ||||
|       device_evdev->device_aspect_ratio > 0) | ||||
|     { | ||||
|       gdouble ratio = device_evdev->device_aspect_ratio / device_evdev->output_ratio; | ||||
|  | ||||
|       if (ratio > 1) | ||||
|         x_d *= ratio; | ||||
|       else if (ratio < 1) | ||||
|         y_d *= 1 / ratio; | ||||
|     } | ||||
|  | ||||
|   cairo_matrix_transform_point (&device_evdev->device_matrix, &min_x, &min_y); | ||||
|   cairo_matrix_transform_point (&device_evdev->device_matrix, &max_x, &max_y); | ||||
|   cairo_matrix_transform_point (&device_evdev->device_matrix, &x_d, &y_d); | ||||
|  | ||||
|   *x = CLAMP (x_d, MIN (min_x, max_x), MAX (min_x, max_x)) * stage_width; | ||||
|   *y = CLAMP (y_d, MIN (min_y, max_y), MAX (min_y, max_y)) * stage_height; | ||||
| } | ||||
|   | ||||
| @@ -66,6 +66,10 @@ struct _ClutterInputDeviceEvdev | ||||
|   struct libinput_device *libinput_device; | ||||
|   ClutterSeatEvdev *seat; | ||||
|   ClutterInputDeviceTool *last_tool; | ||||
|  | ||||
|   cairo_matrix_t device_matrix; | ||||
|   gdouble device_aspect_ratio; /* w:h */ | ||||
|   gdouble output_ratio;        /* w:h */ | ||||
| }; | ||||
|  | ||||
| GType                     _clutter_input_device_evdev_get_type        (void) G_GNUC_CONST; | ||||
| @@ -102,6 +106,11 @@ void  			  _clutter_evdev_event_set_relative_motion (ClutterEvent *event, | ||||
| 								    double        dx_unaccel, | ||||
| 								    double        dy_unaccel); | ||||
|  | ||||
| void                      clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device, | ||||
|                                                                             ClutterStage       *stage, | ||||
|                                                                             gfloat             *x, | ||||
|                                                                             gfloat             *y); | ||||
|  | ||||
| G_END_DECLS | ||||
|  | ||||
| #endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */ | ||||
|   | ||||
| @@ -186,15 +186,19 @@ keyboard_repeat (gpointer data) | ||||
| { | ||||
|   ClutterSeatEvdev *seat = data; | ||||
|   GSource *source; | ||||
|   guint32 time_ms; | ||||
|  | ||||
|   /* There might be events queued in libinput that could cancel the | ||||
|      repeat timer. */ | ||||
|   _clutter_device_manager_evdev_dispatch (seat->manager_evdev); | ||||
|   if (!seat->repeat_timer) | ||||
|     return G_SOURCE_REMOVE; | ||||
|  | ||||
|   g_return_val_if_fail (seat->repeat_device != NULL, G_SOURCE_REMOVE); | ||||
|   source = g_main_context_find_source_by_id (NULL, seat->repeat_timer); | ||||
|   time_ms = g_source_get_time (source) / 1000; | ||||
|  | ||||
|   clutter_seat_evdev_notify_key (seat, | ||||
|                                  seat->repeat_device, | ||||
|                                  ms2us (time_ms), | ||||
|                                  g_source_get_time (source), | ||||
|                                  seat->repeat_key, | ||||
|                                  AUTOREPEAT_VALUE, | ||||
|                                  FALSE); | ||||
| @@ -401,6 +405,13 @@ clutter_seat_evdev_notify_relative_motion (ClutterSeatEvdev   *seat, | ||||
|   if (!_clutter_input_device_get_stage (input_device)) | ||||
|     return; | ||||
|  | ||||
|   _clutter_device_manager_evdev_filter_relative_motion (seat->manager_evdev, | ||||
|                                                         input_device, | ||||
|                                                         seat->pointer_x, | ||||
|                                                         seat->pointer_y, | ||||
|                                                         &dx, | ||||
|                                                         &dy); | ||||
|  | ||||
|   new_x = seat->pointer_x + dx; | ||||
|   new_y = seat->pointer_y + dy; | ||||
|   event = new_absolute_motion_event (seat, input_device, | ||||
|   | ||||
| @@ -3,8 +3,8 @@ exec_prefix=@exec_prefix@ | ||||
| libdir=@libdir@/mutter | ||||
| includedir=@includedir@/mutter | ||||
|  | ||||
| apiversion=@CLUTTER_API_VERSION@ | ||||
| requires=@CLUTTER_REQUIRES@ mutter-cogl-1.0 | ||||
| apiversion=@LIBMUTTER_API_VERSION@ | ||||
| requires=@CLUTTER_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| requires_private=@CLUTTER_REQUIRES_PRIVATE@ | ||||
| backends=@CLUTTER_BACKENDS@ | ||||
|  | ||||
| @@ -17,7 +17,7 @@ cogl_driver=deprecated | ||||
|  | ||||
| Name: Mutter Clutter | ||||
| Description: Mutter's Clutter Private Library | ||||
| Version: @VERSION@ | ||||
| Version: @MUTTER_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-clutter-${apiversion} | ||||
| Cflags: -I${includedir}/clutter-${apiversion} | ||||
| Requires: ${requires} | ||||
|   | ||||
| @@ -136,7 +136,6 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|   ClutterTranslateReturn res; | ||||
|   ClutterStage *stage; | ||||
|   XEvent *xevent; | ||||
|   int window_scale; | ||||
|  | ||||
|   manager_x11 = CLUTTER_DEVICE_MANAGER_X11 (translator); | ||||
|   backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ()); | ||||
| @@ -152,8 +151,6 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|   stage_x11 = CLUTTER_STAGE_X11 (_clutter_stage_get_window (stage)); | ||||
|  | ||||
|   window_scale = stage_x11->scale_factor; | ||||
|  | ||||
|   event->any.stage = stage; | ||||
|  | ||||
|   res = CLUTTER_TRANSLATE_CONTINUE; | ||||
| @@ -226,8 +223,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|             event->scroll.direction = CLUTTER_SCROLL_RIGHT; | ||||
|  | ||||
|           event->scroll.time = xevent->xbutton.time; | ||||
|           event->scroll.x = xevent->xbutton.x / window_scale; | ||||
|           event->scroll.y = xevent->xbutton.y / window_scale; | ||||
|           event->scroll.x = xevent->xbutton.x; | ||||
|           event->scroll.y = xevent->xbutton.y; | ||||
|           event->scroll.modifier_state = xevent->xbutton.state; | ||||
|           event->scroll.axes = NULL; | ||||
|           break; | ||||
| @@ -235,8 +232,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|         default: | ||||
|           event->button.type = event->type = CLUTTER_BUTTON_PRESS; | ||||
|           event->button.time = xevent->xbutton.time; | ||||
|           event->button.x = xevent->xbutton.x / window_scale; | ||||
|           event->button.y = xevent->xbutton.y / window_scale; | ||||
|           event->button.x = xevent->xbutton.x; | ||||
|           event->button.y = xevent->xbutton.y; | ||||
|           event->button.modifier_state = xevent->xbutton.state; | ||||
|           event->button.button = xevent->xbutton.button; | ||||
|           event->button.axes = NULL; | ||||
| @@ -269,8 +266,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|       event->button.type = event->type = CLUTTER_BUTTON_RELEASE; | ||||
|       event->button.time = xevent->xbutton.time; | ||||
|       event->button.x = xevent->xbutton.x / window_scale; | ||||
|       event->button.y = xevent->xbutton.y / window_scale; | ||||
|       event->button.x = xevent->xbutton.x; | ||||
|       event->button.y = xevent->xbutton.y; | ||||
|       event->button.modifier_state = xevent->xbutton.state; | ||||
|       event->button.button = xevent->xbutton.button; | ||||
|       event->button.axes = NULL; | ||||
| @@ -287,8 +284,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|       event->motion.type = event->type = CLUTTER_MOTION; | ||||
|       event->motion.time = xevent->xmotion.time; | ||||
|       event->motion.x = xevent->xmotion.x / window_scale; | ||||
|       event->motion.y = xevent->xmotion.y / window_scale; | ||||
|       event->motion.x = xevent->xmotion.x; | ||||
|       event->motion.y = xevent->xmotion.y; | ||||
|       event->motion.modifier_state = xevent->xmotion.state; | ||||
|       event->motion.axes = NULL; | ||||
|       clutter_event_set_device (event, manager_x11->core_pointer); | ||||
| @@ -301,8 +298,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|       event->crossing.type = CLUTTER_ENTER; | ||||
|       event->crossing.time = xevent->xcrossing.time; | ||||
|       event->crossing.x = xevent->xcrossing.x / window_scale; | ||||
|       event->crossing.y = xevent->xcrossing.y / window_scale; | ||||
|       event->crossing.x = xevent->xcrossing.x; | ||||
|       event->crossing.y = xevent->xcrossing.y; | ||||
|       event->crossing.source = CLUTTER_ACTOR (stage); | ||||
|       event->crossing.related = NULL; | ||||
|       clutter_event_set_device (event, manager_x11->core_pointer); | ||||
| @@ -327,8 +324,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|       event->crossing.type = CLUTTER_LEAVE; | ||||
|       event->crossing.time = xevent->xcrossing.time; | ||||
|       event->crossing.x = xevent->xcrossing.x / window_scale; | ||||
|       event->crossing.y = xevent->xcrossing.y / window_scale; | ||||
|       event->crossing.x = xevent->xcrossing.x; | ||||
|       event->crossing.y = xevent->xcrossing.y; | ||||
|       event->crossing.source = CLUTTER_ACTOR (stage); | ||||
|       event->crossing.related = NULL; | ||||
|       clutter_event_set_device (event, manager_x11->core_pointer); | ||||
|   | ||||
| @@ -66,6 +66,14 @@ static const char *clutter_input_axis_atom_names[] = { | ||||
|  | ||||
| #define N_AXIS_ATOMS    G_N_ELEMENTS (clutter_input_axis_atom_names) | ||||
|  | ||||
| enum { | ||||
|   PAD_AXIS_FIRST  = 3, /* First axes are always x/y/pressure, ignored in pads */ | ||||
|   PAD_AXIS_STRIP1 = PAD_AXIS_FIRST, | ||||
|   PAD_AXIS_STRIP2, | ||||
|   PAD_AXIS_RING1, | ||||
|   PAD_AXIS_RING2, | ||||
| }; | ||||
|  | ||||
| static Atom clutter_input_axis_atoms[N_AXIS_ATOMS] = { 0, }; | ||||
|  | ||||
| static void clutter_event_translator_iface_init (ClutterEventTranslatorIface *iface); | ||||
| @@ -359,6 +367,36 @@ get_device_node_path (ClutterBackendX11  *backend_x11, | ||||
|   return node_path; | ||||
| } | ||||
|  | ||||
| static void | ||||
| get_pad_features (XIDeviceInfo *info, | ||||
|                   guint        *n_rings, | ||||
|                   guint        *n_strips) | ||||
| { | ||||
|   gint i, rings = 0, strips = 0; | ||||
|  | ||||
|   for (i = PAD_AXIS_FIRST; i < info->num_classes; i++) | ||||
|     { | ||||
|       XIValuatorClassInfo *valuator = (XIValuatorClassInfo*) info->classes[i]; | ||||
|       int axis = valuator->number; | ||||
|  | ||||
|       if (valuator->type != XIValuatorClass) | ||||
|         continue; | ||||
|       if (valuator->max <= 1) | ||||
|         continue; | ||||
|  | ||||
|       /* Ring/strip axes are fixed in pad devices as handled by the | ||||
|        * wacom driver. Match those to detect pad features. | ||||
|        */ | ||||
|       if (axis == PAD_AXIS_STRIP1 || axis == PAD_AXIS_STRIP2) | ||||
|         strips++; | ||||
|       else if (axis == PAD_AXIS_RING1 || axis == PAD_AXIS_RING2) | ||||
|         rings++; | ||||
|     } | ||||
|  | ||||
|   *n_rings = rings; | ||||
|   *n_strips = strips; | ||||
| } | ||||
|  | ||||
| static ClutterInputDevice * | ||||
| create_device (ClutterDeviceManagerXI2 *manager_xi2, | ||||
|                ClutterBackendX11       *backend_x11, | ||||
| @@ -368,7 +406,7 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2, | ||||
|   ClutterInputDevice *retval; | ||||
|   ClutterInputMode mode; | ||||
|   gboolean is_enabled; | ||||
|   guint num_touches = 0; | ||||
|   guint num_touches = 0, num_rings = 0, num_strips = 0; | ||||
|   gchar *vendor_id = NULL, *product_id = NULL, *node_path = NULL; | ||||
|  | ||||
|   if (info->use == XIMasterKeyboard || info->use == XISlaveKeyboard) | ||||
| @@ -436,6 +474,12 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2, | ||||
|       node_path = get_device_node_path (backend_x11, info); | ||||
|     } | ||||
|  | ||||
|   if (source == CLUTTER_PAD_DEVICE) | ||||
|     { | ||||
|       is_enabled = TRUE; | ||||
|       get_pad_features (info, &num_rings, &num_strips); | ||||
|     } | ||||
|  | ||||
|   retval = g_object_new (CLUTTER_TYPE_INPUT_DEVICE_XI2, | ||||
|                          "name", info->name, | ||||
|                          "id", info->deviceid, | ||||
| @@ -448,6 +492,8 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2, | ||||
|                          "vendor-id", vendor_id, | ||||
|                          "product-id", product_id, | ||||
|                          "device-node", node_path, | ||||
|                          "n-rings", num_rings, | ||||
|                          "n-strips", num_strips, | ||||
|                          NULL); | ||||
|  | ||||
|   translate_device_classes (backend_x11->xdpy, retval, | ||||
| @@ -847,6 +893,54 @@ translate_axes (ClutterInputDevice *device, | ||||
|   return retval; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| translate_pad_axis (ClutterInputDevice *device, | ||||
|                     XIValuatorState    *valuators, | ||||
|                     ClutterEventType   *evtype, | ||||
|                     guint              *number, | ||||
|                     gdouble            *value) | ||||
| { | ||||
|   double *values; | ||||
|   gint i; | ||||
|  | ||||
|   values = valuators->values; | ||||
|  | ||||
|   for (i = PAD_AXIS_FIRST; i < valuators->mask_len * 8; i++) | ||||
|     { | ||||
|       gdouble val; | ||||
|       guint axis_number = 0; | ||||
|  | ||||
|       if (!XIMaskIsSet (valuators->mask, i)) | ||||
|         continue; | ||||
|  | ||||
|       val = *values++; | ||||
|       if (val <= 0) | ||||
|         continue; | ||||
|  | ||||
|       _clutter_input_device_translate_axis (device, i, val, value); | ||||
|  | ||||
|       if (i == PAD_AXIS_RING1 || i == PAD_AXIS_RING2) | ||||
|         { | ||||
|           *evtype = CLUTTER_PAD_RING; | ||||
|           (*value) *= 360.0; | ||||
|         } | ||||
|       else if (i == PAD_AXIS_STRIP1 || i == PAD_AXIS_STRIP2) | ||||
|         { | ||||
|           *evtype = CLUTTER_PAD_STRIP; | ||||
|         } | ||||
|       else | ||||
|         continue; | ||||
|  | ||||
|       if (i == PAD_AXIS_STRIP2 || i == PAD_AXIS_RING2) | ||||
|         axis_number++; | ||||
|  | ||||
|       *number = axis_number; | ||||
|       return TRUE; | ||||
|     } | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| translate_coords (ClutterStageX11 *stage_x11, | ||||
|                   gdouble          event_x, | ||||
| @@ -861,8 +955,8 @@ translate_coords (ClutterStageX11 *stage_x11, | ||||
|  | ||||
|   clutter_actor_get_size (stage, &stage_width, &stage_height); | ||||
|  | ||||
|   *x_out = CLAMP (event_x / stage_x11->scale_factor, 0, stage_width); | ||||
|   *y_out = CLAMP (event_y / stage_x11->scale_factor, 0, stage_height); | ||||
|   *x_out = CLAMP (event_x, 0, stage_width); | ||||
|   *y_out = CLAMP (event_y, 0, stage_height); | ||||
| } | ||||
|  | ||||
| static gdouble | ||||
| @@ -1025,6 +1119,54 @@ handle_property_event (ClutterDeviceManagerXI2 *manager_xi2, | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| translate_pad_event (ClutterEvent       *event, | ||||
|                      XIDeviceEvent      *xev, | ||||
|                      ClutterInputDevice *device) | ||||
| { | ||||
|   gdouble value; | ||||
|   guint number; | ||||
|  | ||||
|   if (!translate_pad_axis (device, &xev->valuators, | ||||
|                            &event->any.type, | ||||
|                            &number, &value)) | ||||
|     return FALSE; | ||||
|  | ||||
|   /* When touching a ring/strip a first XI_Motion event | ||||
|    * is generated. Use it to reset the pad state, so | ||||
|    * later events actually have a directionality. | ||||
|    */ | ||||
|   if (xev->evtype == XI_Motion) | ||||
|     value = -1; | ||||
|  | ||||
|   if (event->any.type == CLUTTER_PAD_RING) | ||||
|     { | ||||
|       event->pad_ring.ring_number = number; | ||||
|       event->pad_ring.angle = value; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       event->pad_strip.strip_number = number; | ||||
|       event->pad_strip.value = value; | ||||
|     } | ||||
|  | ||||
|   event->any.time = xev->time; | ||||
|   clutter_event_set_device (event, device); | ||||
|   clutter_event_set_source_device (event, device); | ||||
|  | ||||
|   CLUTTER_NOTE (EVENT, | ||||
|                 "%s: win:0x%x, device:%d '%s', time:%d " | ||||
|                 "(value:%f)", | ||||
|                 event->any.type == CLUTTER_PAD_RING | ||||
|                 ? "pad ring  " | ||||
|                 : "pad strip", | ||||
|                 (unsigned int) xev->event, | ||||
|                 device->id, | ||||
|                 device->device_name, | ||||
|                 event->any.time, value); | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static ClutterTranslateReturn | ||||
| clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, | ||||
|                                             gpointer                native, | ||||
| @@ -1206,15 +1348,23 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, | ||||
|                            XIAsyncDevice, | ||||
|                            xev->time); | ||||
|  | ||||
| 	    /* Ignore 4-7 buttons */ | ||||
|             if (xev->detail >= 4 && xev->detail <= 7) | ||||
|               return CLUTTER_TRANSLATE_REMOVE; | ||||
|             event->any.stage = stage; | ||||
|  | ||||
|             event->pad_button.type = | ||||
|             if (xev->detail >= 4 && xev->detail <= 7) | ||||
|               { | ||||
|                 retval = CLUTTER_TRANSLATE_REMOVE; | ||||
|  | ||||
|                 if (xi_event->evtype == XI_ButtonPress && | ||||
|                     translate_pad_event (event, xev, source_device)) | ||||
|                   retval = CLUTTER_TRANSLATE_QUEUE; | ||||
|  | ||||
|                 break; | ||||
|               } | ||||
|  | ||||
|             event->any.type = | ||||
|               (xi_event->evtype == XI_ButtonPress) ? CLUTTER_PAD_BUTTON_PRESS | ||||
|                                                    : CLUTTER_PAD_BUTTON_RELEASE; | ||||
|             event->pad_button.time = xev->time; | ||||
|             event->pad_button.stage = stage; | ||||
|             event->any.time = xev->time; | ||||
|  | ||||
|             /* The 4-7 button range is taken as non-existent on pad devices, | ||||
|              * let the buttons above that take over this range. | ||||
| @@ -1224,6 +1374,7 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, | ||||
|  | ||||
|             /* Pad buttons are 0-indexed */ | ||||
|             event->pad_button.button = xev->detail - 1; | ||||
|             clutter_event_set_device (event, device); | ||||
|             clutter_event_set_source_device (event, source_device); | ||||
|  | ||||
|             CLUTTER_NOTE (EVENT, | ||||
| @@ -1380,6 +1531,15 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator, | ||||
|         device = g_hash_table_lookup (manager_xi2->devices_by_id, | ||||
|                                       GINT_TO_POINTER (xev->deviceid)); | ||||
|  | ||||
|         if (clutter_input_device_get_device_type (source_device) == CLUTTER_PAD_DEVICE) | ||||
|           { | ||||
|             event->any.stage = stage; | ||||
|  | ||||
|             if (translate_pad_event (event, xev, source_device)) | ||||
|               retval = CLUTTER_TRANSLATE_QUEUE; | ||||
|             break; | ||||
|           } | ||||
|  | ||||
|         /* Set the stage for core events coming out of nowhere (see bug #684509) */ | ||||
|         if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER && | ||||
|             clutter_input_device_get_pointer_stage (device) == NULL && | ||||
|   | ||||
| @@ -80,6 +80,13 @@ clutter_input_device_xi2_keycode_to_evdev (ClutterInputDevice *device, | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| clutter_input_device_xi2_is_grouped (ClutterInputDevice *device, | ||||
|                                      ClutterInputDevice *other_device) | ||||
| { | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass) | ||||
| { | ||||
| @@ -89,6 +96,7 @@ clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass) | ||||
|   gobject_class->constructed = clutter_input_device_xi2_constructed; | ||||
|  | ||||
|   device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev; | ||||
|   device_class->is_grouped = clutter_input_device_xi2_is_grouped; | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
| @@ -6,17 +6,14 @@ static const struct { | ||||
|   const char *xsetting_name; | ||||
|   const char *settings_property; | ||||
| } _clutter_settings_map[] = { | ||||
|   { "Net/DoubleClickTime",     "double-click-time" }, | ||||
|   { "Net/DoubleClickDistance", "double-click-distance" }, | ||||
|   { "Net/DndDragThreshold",    "dnd-drag-threshold" }, | ||||
|   { "Gtk/FontName",            "font-name" }, | ||||
|   { "Xft/Antialias",           "font-antialias" }, | ||||
|   { "Xft/DPI",                 "font-dpi" }, | ||||
|   { "Xft/Hinting",             "font-hinting" }, | ||||
|   { "Xft/HintStyle",           "font-hint-style" }, | ||||
|   { "Xft/RGBA",                "font-subpixel-order" }, | ||||
|   { "Fontconfig/Timestamp",    "fontconfig-timestamp" }, | ||||
|   { "Gdk/WindowScalingFactor", "window-scaling-factor" }, | ||||
|   { "Gdk/UnscaledDPI",         "unscaled-font-dpi" }, | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -162,10 +162,10 @@ clutter_stage_x11_fix_window_size (ClutterStageX11 *stage_x11, | ||||
|                                       &min_height); | ||||
|  | ||||
|       if (new_width <= 0) | ||||
|         new_width = min_width * stage_x11->scale_factor; | ||||
|         new_width = min_width; | ||||
|  | ||||
|       if (new_height <= 0) | ||||
|         new_height = min_height * stage_x11->scale_factor; | ||||
|         new_height = min_height; | ||||
|  | ||||
|       size_hints->flags = 0; | ||||
|  | ||||
| @@ -175,8 +175,8 @@ clutter_stage_x11_fix_window_size (ClutterStageX11 *stage_x11, | ||||
|         { | ||||
|           if (resize) | ||||
|             { | ||||
|               size_hints->min_width = min_width * stage_x11->scale_factor; | ||||
|               size_hints->min_height = min_height * stage_x11->scale_factor; | ||||
|               size_hints->min_width = min_width; | ||||
|               size_hints->min_height = min_height; | ||||
|               size_hints->flags = PMinSize; | ||||
|             } | ||||
|           else | ||||
| @@ -236,8 +236,8 @@ clutter_stage_x11_get_geometry (ClutterStageWindow    *stage_window, | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|   geometry->width = stage_x11->xwin_width / stage_x11->scale_factor; | ||||
|   geometry->height = stage_x11->xwin_height / stage_x11->scale_factor; | ||||
|   geometry->width = stage_x11->xwin_width; | ||||
|   geometry->height = stage_x11->xwin_height; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -255,8 +255,8 @@ clutter_stage_x11_resize (ClutterStageWindow *stage_window, | ||||
|        * so we need to manually set the size and queue a relayout on the | ||||
|        * stage here (as is normally done in response to ConfigureNotify). | ||||
|        */ | ||||
|       stage_x11->xwin_width = width * stage_x11->scale_factor; | ||||
|       stage_x11->xwin_height = height * stage_x11->scale_factor; | ||||
|       stage_x11->xwin_width = width; | ||||
|       stage_x11->xwin_height = height; | ||||
|       clutter_actor_queue_relayout (CLUTTER_ACTOR (stage_cogl->wrapper)); | ||||
|       return; | ||||
|     } | ||||
| @@ -277,9 +277,6 @@ clutter_stage_x11_resize (ClutterStageWindow *stage_window, | ||||
|  | ||||
|   CLUTTER_NOTE (BACKEND, "New size received: (%d, %d)", width, height); | ||||
|  | ||||
|   width *= stage_x11->scale_factor; | ||||
|   height *= stage_x11->scale_factor; | ||||
|  | ||||
|   if (stage_x11->xwin != None) | ||||
|     { | ||||
|       clutter_stage_x11_fix_window_size (stage_x11, width, height); | ||||
| @@ -400,20 +397,6 @@ set_cursor_visible (ClutterStageX11 *stage_x11) | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_window_scaling_factor_notify (GObject         *settings, | ||||
|                                  GParamSpec      *pspec, | ||||
|                                  ClutterStageX11 *stage_x11) | ||||
| { | ||||
|   g_object_get (settings, | ||||
|                 "window-scaling-factor", &stage_x11->scale_factor, | ||||
|                 NULL); | ||||
|  | ||||
|   clutter_stage_x11_resize (CLUTTER_STAGE_WINDOW (stage_x11), | ||||
|                             stage_x11->xwin_width, | ||||
|                             stage_x11->xwin_height); | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_stage_x11_unrealize (ClutterStageWindow *stage_window) | ||||
| { | ||||
| @@ -643,12 +626,8 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window) | ||||
|  | ||||
|   CLUTTER_NOTE (BACKEND, "Wrapper size: %.2f x %.2f", width, height); | ||||
|  | ||||
|   width = width * (float) stage_x11->scale_factor; | ||||
|   height = height * (float) stage_x11->scale_factor; | ||||
|  | ||||
|   CLUTTER_NOTE (BACKEND, "Creating a new Cogl onscreen surface: %.2f x %.2f (factor: %d)", | ||||
|                 width, height, | ||||
|                 stage_x11->scale_factor); | ||||
|   CLUTTER_NOTE (BACKEND, "Creating a new Cogl onscreen surface: %.2f x %.2f", | ||||
|                 width, height); | ||||
|  | ||||
|   stage_x11->onscreen = cogl_onscreen_new (backend->cogl_context, width, height); | ||||
|  | ||||
| @@ -909,28 +888,6 @@ clutter_stage_x11_can_clip_redraws (ClutterStageWindow *stage_window) | ||||
|   return stage_x11->clipped_redraws_cool_off == 0; | ||||
| } | ||||
|  | ||||
| static void | ||||
| clutter_stage_x11_set_scale_factor (ClutterStageWindow *stage_window, | ||||
|                                     int                 factor) | ||||
| { | ||||
|   ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window); | ||||
|  | ||||
|   if (stage_x11->scale_factor == factor) | ||||
|     return; | ||||
|  | ||||
|   stage_x11->scale_factor = factor; | ||||
|  | ||||
|   clutter_stage_x11_resize (stage_window, stage_x11->xwin_width, stage_x11->xwin_height); | ||||
| } | ||||
|  | ||||
| static int | ||||
| clutter_stage_x11_get_scale_factor (ClutterStageWindow *stage_window) | ||||
| { | ||||
|   ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window); | ||||
|  | ||||
|   return stage_x11->scale_factor; | ||||
| } | ||||
|  | ||||
| static void | ||||
| ensure_legacy_view (ClutterStageWindow *stage_window) | ||||
| { | ||||
| @@ -1002,8 +959,6 @@ clutter_stage_x11_class_init (ClutterStageX11Class *klass) | ||||
| static void | ||||
| clutter_stage_x11_init (ClutterStageX11 *stage) | ||||
| { | ||||
|   ClutterSettings *settings; | ||||
|  | ||||
|   stage->xwin = None; | ||||
|   stage->xwin_width = 640; | ||||
|   stage->xwin_height = 480; | ||||
| @@ -1016,12 +971,6 @@ clutter_stage_x11_init (ClutterStageX11 *stage) | ||||
|   stage->accept_focus = TRUE; | ||||
|  | ||||
|   stage->title = NULL; | ||||
|  | ||||
|   settings = clutter_settings_get_default (); | ||||
|   g_signal_connect (settings, "notify::window-scaling-factor", | ||||
|                     G_CALLBACK (on_window_scaling_factor_notify), | ||||
|                     stage); | ||||
|   on_window_scaling_factor_notify (G_OBJECT (settings), NULL, stage); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -1041,8 +990,6 @@ clutter_stage_window_iface_init (ClutterStageWindowIface *iface) | ||||
|   iface->realize = clutter_stage_x11_realize; | ||||
|   iface->unrealize = clutter_stage_x11_unrealize; | ||||
|   iface->can_clip_redraws = clutter_stage_x11_can_clip_redraws; | ||||
|   iface->set_scale_factor = clutter_stage_x11_set_scale_factor; | ||||
|   iface->get_scale_factor = clutter_stage_x11_get_scale_factor; | ||||
|   iface->get_views = clutter_stage_x11_get_views; | ||||
|   iface->get_frame_counter = clutter_stage_x11_get_frame_counter; | ||||
| } | ||||
| @@ -1167,8 +1114,8 @@ clutter_stage_x11_translate_event (ClutterEventTranslator *translator, | ||||
|               stage_x11->xwin_height = xevent->xconfigure.height; | ||||
|             } | ||||
|  | ||||
|           stage_width = xevent->xconfigure.width / stage_x11->scale_factor; | ||||
|           stage_height = xevent->xconfigure.height / stage_x11->scale_factor; | ||||
|           stage_width = xevent->xconfigure.width; | ||||
|           stage_height = xevent->xconfigure.height; | ||||
|           clutter_actor_set_size (CLUTTER_ACTOR (stage), stage_width, stage_height); | ||||
|  | ||||
|           if (size_changed) | ||||
| @@ -1335,10 +1282,10 @@ clutter_stage_x11_translate_event (ClutterEventTranslator *translator, | ||||
|                       expose->width, | ||||
|                       expose->height); | ||||
|  | ||||
|         clip.x = expose->x / stage_x11->scale_factor; | ||||
|         clip.y = expose->y / stage_x11->scale_factor; | ||||
|         clip.width = expose->width / stage_x11->scale_factor; | ||||
|         clip.height = expose->height / stage_x11->scale_factor; | ||||
|         clip.x = expose->x; | ||||
|         clip.y = expose->y; | ||||
|         clip.width = expose->width; | ||||
|         clip.height = expose->height; | ||||
|         clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stage), &clip); | ||||
|       } | ||||
|       break; | ||||
| @@ -1504,8 +1451,8 @@ set_foreign_window_callback (ClutterActor *actor, | ||||
|   fwd->stage_x11->xwin = fwd->xwindow; | ||||
|   fwd->stage_x11->is_foreign_xwin = TRUE; | ||||
|  | ||||
|   fwd->stage_x11->xwin_width = fwd->geom.width * fwd->stage_x11->scale_factor; | ||||
|   fwd->stage_x11->xwin_height = fwd->geom.height * fwd->stage_x11->scale_factor; | ||||
|   fwd->stage_x11->xwin_width = fwd->geom.width; | ||||
|   fwd->stage_x11->xwin_height = fwd->geom.height; | ||||
|  | ||||
|   clutter_actor_set_size (actor, fwd->geom.width, fwd->geom.height); | ||||
|  | ||||
| @@ -1599,8 +1546,8 @@ clutter_x11_set_stage_foreign (ClutterStage *stage, | ||||
|  | ||||
|   fwd.geom.x = x; | ||||
|   fwd.geom.y = y; | ||||
|   fwd.geom.width = width / stage_x11->scale_factor; | ||||
|   fwd.geom.height = height / stage_x11->scale_factor; | ||||
|   fwd.geom.width = width; | ||||
|   fwd.geom.height = height; | ||||
|  | ||||
|   actor = CLUTTER_ACTOR (stage); | ||||
|  | ||||
|   | ||||
| @@ -69,8 +69,6 @@ struct _ClutterStageX11 | ||||
|  | ||||
|   ClutterStageX11State wm_state; | ||||
|  | ||||
|   int scale_factor; | ||||
|  | ||||
|   guint is_foreign_xwin       : 1; | ||||
|   guint fullscreening         : 1; | ||||
|   guint is_cursor_visible     : 1; | ||||
|   | ||||
| @@ -42,9 +42,6 @@ m4_define([clutter_release_status], | ||||
|  | ||||
| m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version]) | ||||
|  | ||||
| # change this only when breaking the API | ||||
| m4_define([clutter_api_version], [1.0]) | ||||
|  | ||||
| AC_PREREQ([2.63]) | ||||
|  | ||||
| AC_INIT([clutter], | ||||
| @@ -61,12 +58,18 @@ AC_CONFIG_MACRO_DIR([build/autotools]) | ||||
| AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar]) | ||||
| AM_SILENT_RULES([yes]) | ||||
|  | ||||
| dnl = Check that we are configured by mutter ============================== | ||||
|  | ||||
| AC_ARG_VAR([MUTTER_VERSION]) | ||||
| AC_ARG_VAR([LIBMUTTER_API_VERSION]) | ||||
|  | ||||
| AS_IF([test "x$MUTTER_VERSION" = "x"], | ||||
|       [AC_MSG_ERROR([Clutter can only be configured by mutter])],) | ||||
|  | ||||
| AC_SUBST([CLUTTER_MAJOR_VERSION],  [clutter_major_version]) | ||||
| AC_SUBST([CLUTTER_MINOR_VERSION],  [clutter_minor_version]) | ||||
| AC_SUBST([CLUTTER_MICRO_VERSION],  [clutter_micro_version]) | ||||
| AC_SUBST([CLUTTER_VERSION],        [clutter_version]) | ||||
| AC_SUBST([CLUTTER_API_VERSION],    [clutter_api_version]) | ||||
| AC_SUBST([CLUTTER_API_VERSION_AM], [$CLUTTER_MAJOR_VERSION\_0]) | ||||
| AC_SUBST([CLUTTER_RELEASE_STATUS], [clutter_release_status]) | ||||
|  | ||||
| m4_define([lt_current],  [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)]) | ||||
| @@ -107,7 +110,7 @@ LT_LIB_M | ||||
| AC_HEADER_STDC | ||||
|  | ||||
| # required versions for dependencies | ||||
| m4_define([glib_req_version],           [2.44.0]) | ||||
| m4_define([glib_req_version],           [2.53.2]) | ||||
| m4_define([cogl_req_version],           [1.21.2]) | ||||
| m4_define([json_glib_req_version],      [0.12.0]) | ||||
| m4_define([atk_req_version],            [2.5.3]) | ||||
| @@ -781,7 +784,7 @@ AC_CONFIG_FILES([ | ||||
| 	clutter/Makefile | ||||
|         clutter/clutter-config.h | ||||
| 	clutter/clutter-version.h | ||||
| 	clutter/mutter-clutter-$CLUTTER_API_VERSION.pc:clutter/mutter-clutter.pc.in | ||||
| 	clutter/mutter-clutter-$LIBMUTTER_API_VERSION.pc:clutter/mutter-clutter.pc.in | ||||
|  | ||||
| 	tests/Makefile | ||||
| 	tests/accessibility/Makefile | ||||
|   | ||||
| @@ -21,7 +21,7 @@ all_examples += \ | ||||
| 	image-content | ||||
| endif | ||||
|  | ||||
| LDADD = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(GDK_PIXBUF_LIBS) $(LIBM) | ||||
| LDADD = $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(GDK_PIXBUF_LIBS) $(LIBM) | ||||
| AM_CFLAGS = $(CLUTTER_CFLAGS) $(GDK_PIXBUF_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| AM_CPPFLAGS = \ | ||||
| 	-DG_DISABLE_SINGLE_INCLUDES \ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| common_ldadd = \ | ||||
| 	$(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| 	$(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| common_sources = \ | ||||
| 	cally-examples-util.c	\ | ||||
|   | ||||
| @@ -3,7 +3,7 @@ installed_testdir = $(libexecdir)/installed-tests/mutter-clutter | ||||
| include $(top_srcdir)/build/autotools/glib-tap.mk | ||||
|  | ||||
| AM_CFLAGS = -g $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| LDADD = $(top_builddir)/../cogl/cogl/libmutter-cogl.la $(top_builddir)/clutter/libmutter-clutter-1.0.la $(CLUTTER_LIBS) $(LIBM) | ||||
| LDADD = $(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la $(CLUTTER_LIBS) $(LIBM) | ||||
| AM_LDFLAGS = -export-dynamic | ||||
| AM_CPPFLAGS = \ | ||||
| 	-DG_LOG_DOMAIN=\"Clutter-Conform\"	\ | ||||
| @@ -79,7 +79,7 @@ script_tests = \ | ||||
| 	test-script-timeline-markers.json \ | ||||
| 	test-state-1.json | ||||
|  | ||||
| TESTS_ENVIRONMENT += G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 | ||||
| TESTS_ENVIRONMENT += G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 CLUTTER_SCALE=1 | ||||
|  | ||||
| # simple rules for generating a Git ignore file for the conformance test suite | ||||
| $(srcdir)/.gitignore: Makefile | ||||
|   | ||||
| @@ -407,8 +407,7 @@ test_scale_center (TestState *state) | ||||
|   g_assert (scale_x == 4.0); | ||||
|   g_assert (scale_y == 2.0); | ||||
|   g_assert (gravity == CLUTTER_GRAVITY_NONE); | ||||
|   assert_notifications (NOTIFY_SCALE_X | NOTIFY_SCALE_Y | ||||
|                         | NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y | ||||
|   assert_notifications (NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y | ||||
|                         | NOTIFY_SCALE_GRAVITY); | ||||
|   assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2, | ||||
|                  100 + 10 + (RECT_WIDTH - 10) * 4, | ||||
|   | ||||
| @@ -350,7 +350,8 @@ actor_replace_child (void) | ||||
|   g_assert_cmpstr (clutter_actor_get_name (iter), ==, "qux"); | ||||
|  | ||||
|   clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR, | ||||
|                                                 "name", "foo")); | ||||
|                                                 "name", "foo", | ||||
|                                                 NULL)); | ||||
|  | ||||
|   clutter_actor_replace_child (actor, iter, | ||||
|                                g_object_new (CLUTTER_TYPE_ACTOR, | ||||
|   | ||||
| @@ -110,8 +110,8 @@ clean-wrappers: | ||||
| .PHONY: wrappers clean-wrappers | ||||
|  | ||||
| common_ldadd = \ | ||||
|   $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la \ | ||||
|   $(top_builddir)/../cogl/cogl/libmutter-cogl.la | ||||
|   $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la \ | ||||
|   $(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| check_PROGRAMS = test-interactive | ||||
| check_SCRIPTS = wrappers | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| common_ldadd = \ | ||||
|   $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la \ | ||||
|   $(top_builddir)/../cogl/cogl/libmutter-cogl.la | ||||
|   $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la \ | ||||
|   $(top_builddir)/../cogl/cogl/libmutter-cogl-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
|  | ||||
| check_PROGRAMS = \ | ||||
|   | ||||
| @@ -7,7 +7,7 @@ check_PROGRAMS = \ | ||||
| 	test-state-mini \ | ||||
| 	test-state-pick | ||||
|  | ||||
| common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@CLUTTER_API_VERSION@.la | ||||
| common_ldadd = $(top_builddir)/clutter/libmutter-clutter-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| LDADD = $(common_ldadd) $(CLUTTER_LIBS) $(LIBM) | ||||
|  | ||||
|   | ||||
| @@ -2,8 +2,10 @@ | ||||
|  | ||||
| NULL = | ||||
|  | ||||
| DISTCLEANFILES = | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-gles2.la | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-gles2-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| AM_CPPFLAGS = \ | ||||
| 	-I$(top_srcdir) \ | ||||
| @@ -11,8 +13,8 @@ AM_CPPFLAGS = \ | ||||
|  | ||||
| AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
|  | ||||
| libmutter_cogl_gles2_la_SOURCES = cogl-gles2-api.c | ||||
| libmutter_cogl_gles2_la_LDFLAGS = \ | ||||
| libmutter_cogl_gles2_@LIBMUTTER_API_VERSION@_la_SOURCES = cogl-gles2-api.c | ||||
| libmutter_cogl_gles2_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	-no-undefined \ | ||||
| 	-rpath $(mutterlibdir) \ | ||||
| 	-avoid-version \ | ||||
| @@ -25,7 +27,9 @@ coglgles2include_HEADERS = \ | ||||
| 	GLES2/gl2ext.h \ | ||||
| 	GLES2/gl2platform.h | ||||
|  | ||||
| pc_files = mutter-cogl-gles2-1.0.pc | ||||
| pc_files = mutter-cogl-gles2-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = $(pc_files) | ||||
|  | ||||
| DISTCLEANFILES += $(pc_files) | ||||
|   | ||||
| @@ -2,12 +2,12 @@ prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| libdir=@libdir@/mutter | ||||
| includedir=@includedir@/mutter | ||||
| apiversion=1.0 | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0 | ||||
| apiversion=@LIBMUTTER_API_VERSION@ | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| 
 | ||||
| Name: Cogl | ||||
| Description: An object oriented GL/GLES Abstraction/Utility Layer | ||||
| Version: @COGL_1_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-gles2 | ||||
| Version: @MUTTER_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-gles2-@LIBMUTTER_API_VERSION@ | ||||
| Cflags: -I${includedir}/cogl | ||||
| Requires: ${requires} | ||||
| @@ -23,13 +23,13 @@ source_h_priv = \ | ||||
| 	$(NULL) | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-pango.la | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-pango-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| libmutter_cogl_pango_la_SOURCES = $(source_c) $(source_h) $(source_h_priv) | ||||
| libmutter_cogl_pango_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| libmutter_cogl_pango_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl.la | ||||
| libmutter_cogl_pango_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_PANGO_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| libmutter_cogl_pango_la_LDFLAGS = \ | ||||
| libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_SOURCES = $(source_c) $(source_h) $(source_h_priv) | ||||
| libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la | ||||
| libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_PANGO_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| libmutter_cogl_pango_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	-export-dynamic \ | ||||
| 	-rpath $(mutterlibdir) \ | ||||
| 	-export-symbols-regex "^cogl_pango_.*" \ | ||||
| @@ -49,7 +49,7 @@ cogl_base_includedir = $(includedir)/mutter | ||||
| cogl_pangoheadersdir = $(cogl_base_includedir)/cogl/cogl-pango | ||||
| cogl_pangoheaders_HEADERS = $(source_h) | ||||
|  | ||||
| pc_files = mutter-cogl-pango-1.0.pc | ||||
| pc_files = mutter-cogl-pango-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = $(pc_files) | ||||
| @@ -65,23 +65,23 @@ INTROSPECTION_GIRS = | ||||
| if HAVE_INTROSPECTION | ||||
| INTROSPECTION_COMPILER_ARGS=--includedir=$(top_builddir)/cogl | ||||
|  | ||||
| CoglPango-1.0.gir: libmutter-cogl-pango.la Makefile | ||||
| CoglPango-@LIBMUTTER_API_VERSION@.gir: libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la Makefile | ||||
|  | ||||
| CoglPango_1_0_gir_NAMESPACE = CoglPango | ||||
| CoglPango_1_0_gir_VERSION = 1.0 | ||||
| CoglPango_1_0_gir_LIBS = $(top_builddir)/cogl/libmutter-cogl.la libmutter-cogl-pango.la | ||||
| CoglPango_1_0_gir_FILES = $(source_h) $(source_c) | ||||
| CoglPango_1_0_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) | ||||
| CoglPango_1_0_gir_INCLUDES = Pango-1.0 PangoCairo-1.0 | ||||
| CoglPango_1_0_gir_EXPORT_PACKAGES = mutter-cogl-pango-1.0 | ||||
| CoglPango_1_0_gir_SCANNERFLAGS = \ | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = CoglPango | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_VERSION = @LIBMUTTER_API_VERSION@ | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_LIBS = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la libmutter-cogl-pango-$(LIBMUTTER_API_VERSION).la | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_FILES = $(source_h) $(source_c) | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) $(COGL_PANGO_DEP_CFLAGS) | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_INCLUDES = Pango-1.0 PangoCairo-1.0 | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_EXPORT_PACKAGES = mutter-cogl-pango-@LIBMUTTER_API_VERSION@ | ||||
| CoglPango_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ | ||||
| 	--warn-all \ | ||||
| 	--identifier-prefix=CoglPango \ | ||||
| 	--symbol-prefix=cogl_pango \ | ||||
| 	--c-include='cogl-pango/cogl-pango.h' \ | ||||
| 	--include-uninstalled=$(top_builddir)/cogl/Cogl-1.0.gir | ||||
| 	--include-uninstalled=$(top_builddir)/cogl/Cogl-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| INTROSPECTION_GIRS += CoglPango-1.0.gir | ||||
| INTROSPECTION_GIRS += CoglPango-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| girdir = $(mutterlibdir) | ||||
| gir_DATA = $(INTROSPECTION_GIRS) | ||||
|   | ||||
| @@ -2,12 +2,12 @@ prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| libdir=@libdir@/mutter | ||||
| includedir=@includedir@/mutter | ||||
| apiversion=1.0 | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0 | ||||
| apiversion=@LIBMUTTER_API_VERSION@ | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| 
 | ||||
| Name: Cogl | ||||
| Description: An object oriented GL/GLES Abstraction/Utility Layer | ||||
| Version: @COGL_1_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-pango | ||||
| Version: @MUTTER_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-pango-@LIBMUTTER_API_VERSION@ | ||||
| Cflags: -I${includedir}/cogl | ||||
| Requires: ${requires} | ||||
| @@ -65,14 +65,14 @@ glib_enum_headers = $(source_1_x_h) | ||||
| include $(top_srcdir)/build/autotools/Makefile.am.enums | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-path.la | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-path-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| libmutter_cogl_path_la_SOURCES = $(source_c) $(source_h) | ||||
| nodist_libmutter_cogl_path_la_SOURCES = $(BUILT_SOURCES) | ||||
| libmutter_cogl_path_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| libmutter_cogl_path_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl.la | ||||
| libmutter_cogl_path_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| libmutter_cogl_path_la_LDFLAGS = \ | ||||
| libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_SOURCES = $(source_c) $(source_h) | ||||
| nodist_libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES) | ||||
| libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS) | ||||
| libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LIBADD = $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la | ||||
| libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LIBADD += $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| libmutter_cogl_path_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	-export-dynamic \ | ||||
| 	-export-symbols-regex "^(cogl|cogl2)_(framebuffer|path|is|clip|[sg]et)_.*" \ | ||||
| 	-no-undefined \ | ||||
| @@ -94,7 +94,7 @@ cogl_pathheadersdir = $(cogl_base_includedir)/cogl/cogl-path | ||||
| cogl_pathheaders_HEADERS = $(source_h) | ||||
| nodist_cogl_pathheaders_HEADERS = cogl-path-enum-types.h | ||||
|  | ||||
| pc_files = mutter-cogl-path-1.0.pc | ||||
| pc_files = mutter-cogl-path-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = $(pc_files) | ||||
|   | ||||
| @@ -2,12 +2,12 @@ prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| libdir=@libdir@/mutter | ||||
| includedir=@includedir@/mutter | ||||
| apiversion=1.0 | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-1.0 | ||||
| apiversion=@LIBMUTTER_API_VERSION@ | ||||
| requires=@COGL_PKG_REQUIRES@ mutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| 
 | ||||
| Name: Cogl | ||||
| Description: A 2D path drawing library for Cogl | ||||
| Version: @COGL_1_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-path | ||||
| Version: @MUTTER_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-path-@LIBMUTTER_API_VERSION@ | ||||
| Cflags: -I${includedir}/cogl | ||||
| Requires: ${requires} | ||||
| @@ -41,7 +41,7 @@ BUILT_SOURCES += cogl-defines.h cogl-egl-defines.h cogl-gl-header.h | ||||
| DISTCLEANFILES += cogl-defines.h cogl-egl-defines.h cogl-gl-header.h | ||||
| EXTRA_DIST += cogl-defines.h.in cogl-egl-defines.h.in cogl-gl-header.h.in | ||||
|  | ||||
| pc_files = mutter-cogl-1.0.pc | ||||
| pc_files = mutter-cogl-$(LIBMUTTER_API_VERSION).pc | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = $(pc_files) | ||||
| @@ -439,23 +439,23 @@ cogl_sources_c += \ | ||||
| endif | ||||
|  | ||||
| mutterlibdir = $(libdir)/mutter | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl.la | ||||
| mutterlib_LTLIBRARIES = libmutter-cogl-@LIBMUTTER_API_VERSION@.la | ||||
|  | ||||
| libmutter_cogl_la_LIBADD = $(LIBM) $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LIBADD = $(LIBM) $(COGL_DEP_LIBS) $(COGL_EXTRA_LDFLAGS) | ||||
| if UNIT_TESTS | ||||
| libmutter_cogl_la_LIBADD += $(top_builddir)/test-fixtures/libtest-fixtures.la | ||||
| libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LIBADD += $(top_builddir)/test-fixtures/libtest-fixtures.la | ||||
| endif | ||||
| # XXX: The aim is to eventually get rid of all private API exports | ||||
| # for cogl-pango. | ||||
| libmutter_cogl_la_LDFLAGS = \ | ||||
| libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \ | ||||
| 	-no-undefined \ | ||||
| 	-avoid-version \ | ||||
| 	-export-dynamic \ | ||||
| 	-rpath $(mutterlibdir) \ | ||||
| 	-export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_texture_set_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_|_cogl_winsys_glx_get_vtable|_cogl_winsys_egl_xlib_get_vtable|_cogl_winsys_egl_get_vtable|_cogl_closure_disconnect|_cogl_onscreen_notify_complete|_cogl_onscreen_notify_frame_sync|_cogl_winsys_egl_renderer_connect_common|_cogl_winsys_error_quark|_cogl_set_error|_cogl_poll_renderer_add_fd|_cogl_poll_renderer_add_idle|_cogl_framebuffer_winsys_update_size|_cogl_winsys_egl_make_current|_cogl_pixel_format_get_bytes_per_pixel).*" | ||||
|  | ||||
| libmutter_cogl_la_SOURCES = $(cogl_sources_c) | ||||
| nodist_libmutter_cogl_la_SOURCES = $(BUILT_SOURCES) | ||||
| libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(cogl_sources_c) | ||||
| nodist_libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES) | ||||
|  | ||||
| # Cogl installed headers | ||||
| cogl_headers = \ | ||||
| @@ -483,22 +483,22 @@ EXTRA_DIST += \ | ||||
| INTROSPECTION_GIRS = | ||||
|  | ||||
| if HAVE_INTROSPECTION | ||||
| Cogl-1.0.gir: libmutter-cogl.la Makefile | ||||
| Cogl-@LIBMUTTER_API_VERSION@.gir: libmutter-cogl-$(LIBMUTTER_API_VERSION).la Makefile | ||||
|  | ||||
| Cogl_1_0_gir_NAMESPACE = Cogl | ||||
| Cogl_1_0_gir_VERSION = 1.0 | ||||
| Cogl_1_0_gir_LIBS = libmutter-cogl.la | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_NAMESPACE = Cogl | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_VERSION = $(LIBMUTTER_API_VERSION) | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_LIBS = libmutter-cogl-$(LIBMUTTER_API_VERSION).la | ||||
| if UNIT_TESTS | ||||
| Cogl_1_0_gir_LIBS += $(top_builddir)/test-fixtures/libtest-fixtures.la | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_LIBS += $(top_builddir)/test-fixtures/libtest-fixtures.la | ||||
| endif | ||||
| Cogl_1_0_gir_FILES = $(cogl_1_public_h) | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_FILES = $(cogl_1_public_h) | ||||
|  | ||||
| Cogl_1_0_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) -UCOGL_COMPILATION -D__COGL_H_INSIDE__ -D__COGL_XLIB_H_INSIDE__ -D__COGL_EGL_H_INSIDE__ -D__COGL_GLX_H_INSIDE__ -DCOGL_GIR_SCANNING | ||||
| Cogl_1_0_gir_INCLUDES = GL-1.0 GObject-2.0 | ||||
| Cogl_1_0_gir_EXPORT_PACKAGES = mutter-cogl-1.0 | ||||
| Cogl_1_0_gir_SCANNERFLAGS = --warn-all --c-include='cogl/cogl.h' | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(COGL_DEP_CFLAGS) -UCOGL_COMPILATION -D__COGL_H_INSIDE__ -D__COGL_XLIB_H_INSIDE__ -D__COGL_EGL_H_INSIDE__ -D__COGL_GLX_H_INSIDE__ -DCOGL_GIR_SCANNING | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_INCLUDES = GL-1.0 GObject-2.0 | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_EXPORT_PACKAGES = mutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| Cogl_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = --warn-all --c-include='cogl/cogl.h' | ||||
|  | ||||
| INTROSPECTION_GIRS += Cogl-1.0.gir | ||||
| INTROSPECTION_GIRS += Cogl-@LIBMUTTER_API_VERSION@.gir | ||||
|  | ||||
| girdir = $(mutterlibdir) | ||||
| gir_DATA = $(INTROSPECTION_GIRS) | ||||
|   | ||||
| @@ -81,6 +81,19 @@ | ||||
| #define GL_PURGED_CONTEXT_RESET_NV 0x92BB | ||||
| #endif | ||||
|  | ||||
| /* These aren't defined in the GLES2 headers */ | ||||
| #ifndef GL_GUILTY_CONTEXT_RESET_ARB | ||||
| #define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 | ||||
| #endif | ||||
|  | ||||
| #ifndef GL_INNOCENT_CONTEXT_RESET_ARB | ||||
| #define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 | ||||
| #endif | ||||
|  | ||||
| #ifndef GL_UNKNOWN_CONTEXT_RESET_ARB | ||||
| #define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 | ||||
| #endif | ||||
|  | ||||
| static void _cogl_context_free (CoglContext *context); | ||||
|  | ||||
| COGL_OBJECT_DEFINE (Context, context); | ||||
|   | ||||
| @@ -55,6 +55,13 @@ struct _CoglDriverVtable | ||||
|                           GLenum *out_glintformat, | ||||
|                           GLenum *out_glformat, | ||||
|                           GLenum *out_gltype); | ||||
|   CoglPixelFormat | ||||
|   (* pixel_format_to_gl_with_target) (CoglContext *context, | ||||
|                                       CoglPixelFormat format, | ||||
|                                       CoglPixelFormat target_format, | ||||
|                                       GLenum *out_glintformat, | ||||
|                                       GLenum *out_glformat, | ||||
|                                       GLenum *out_gltype); | ||||
|  | ||||
|   CoglBool | ||||
|   (* update_features) (CoglContext *context, | ||||
|   | ||||
| @@ -51,6 +51,9 @@ typedef struct _CoglGLXDisplay | ||||
|  | ||||
|   CoglBool found_fbconfig; | ||||
|   CoglBool fbconfig_has_rgba_visual; | ||||
|   CoglBool is_direct; | ||||
|   CoglBool have_vblank_counter; | ||||
|   CoglBool can_vblank_wait; | ||||
|   GLXFBConfig fbconfig; | ||||
|  | ||||
|   /* Single context for all wins */ | ||||
|   | ||||
| @@ -43,8 +43,6 @@ typedef struct _CoglGLXRenderer | ||||
|   int glx_error_base; | ||||
|   int glx_event_base; | ||||
|  | ||||
|   CoglBool is_direct; | ||||
|  | ||||
|   /* Vblank stuff */ | ||||
|   int dri_fd; | ||||
|  | ||||
|   | ||||
| @@ -169,7 +169,8 @@ check_qualcomm_vendor (const CoglGpuInfoStrings *strings) | ||||
| static CoglBool | ||||
| check_nvidia_vendor (const CoglGpuInfoStrings *strings) | ||||
| { | ||||
|   if (strcmp (strings->vendor_string, "NVIDIA") != 0) | ||||
|   if (strcmp (strings->vendor_string, "NVIDIA") != 0 && | ||||
|       strcmp (strings->vendor_string, "NVIDIA Corporation") != 0) | ||||
|     return FALSE; | ||||
|  | ||||
|   return TRUE; | ||||
|   | ||||
| @@ -1102,7 +1102,7 @@ upload_vertices (CoglJournal *journal, | ||||
|  | ||||
|   attribute_buffer = create_attribute_buffer (journal, needed_vbo_len * 4); | ||||
|   buffer = COGL_BUFFER (attribute_buffer); | ||||
|   cogl_buffer_set_update_hint (buffer, COGL_BUFFER_UPDATE_HINT_STATIC); | ||||
|   cogl_buffer_set_update_hint (buffer, COGL_BUFFER_UPDATE_HINT_DYNAMIC); | ||||
|  | ||||
|   vout = _cogl_buffer_map_range_for_fill_or_fallback (buffer, | ||||
|                                                       0, /* offset */ | ||||
|   | ||||
| @@ -42,7 +42,7 @@ | ||||
| #include <cogl/winsys/cogl-winsys-egl-private.h> | ||||
| #include <cogl/winsys/cogl-winsys-private.h> | ||||
|  | ||||
| void cogl_renderer_set_custom_winsys (CoglRenderer          *renderer, | ||||
|                                       CoglWinsysVtableGetter winsys_vtable_getter); | ||||
| void cogl_renderer_set_custom_winsys (CoglRenderer                *renderer, | ||||
|                                       CoglCustomWinsysVtableGetter winsys_vtable_getter); | ||||
|  | ||||
| #endif /* __COGL_MUTTER_H___ */ | ||||
|   | ||||
| @@ -44,7 +44,7 @@ typedef struct _CoglObject      CoglObject; | ||||
| /** | ||||
|  * CoglObject: (ref-func cogl_object_ref) (unref-func cogl_object_unref) | ||||
|  *     (set-value-func cogl_object_value_set_object) | ||||
|  *     (get-value-func cogl_object_get_object) | ||||
|  *     (get-value-func cogl_object_value_get_object) | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -62,7 +62,7 @@ COGL_BEGIN_DECLS | ||||
| /** | ||||
|  * CoglPrimitive: (ref-func cogl_object_ref) (unref-func cogl_object_unref) | ||||
|  *     (set-value-func cogl_object_value_set_object) | ||||
|  *     (get-value-func cogl_object_get_object) | ||||
|  *     (get-value-func cogl_object_value_get_object) | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -77,6 +77,9 @@ typedef enum | ||||
|   COGL_PRIVATE_FEATURE_GL_PROGRAMMABLE, | ||||
|   COGL_PRIVATE_FEATURE_GL_EMBEDDED, | ||||
|   COGL_PRIVATE_FEATURE_GL_WEB, | ||||
|   /* This is currently only implemented for GLX, but isn't actually | ||||
|    * that winsys dependent */ | ||||
|   COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT, | ||||
|  | ||||
|   COGL_N_PRIVATE_FEATURES | ||||
| } CoglPrivateFeature; | ||||
|   | ||||
| @@ -39,12 +39,13 @@ | ||||
| #include "cogl-texture-driver.h" | ||||
| #include "cogl-context.h" | ||||
| #include "cogl-closure-list-private.h" | ||||
| #include "cogl-mutter.h" | ||||
|  | ||||
| #ifdef COGL_HAS_XLIB_SUPPORT | ||||
| #include <X11/Xlib.h> | ||||
| #endif | ||||
|  | ||||
| typedef const CoglWinsysVtable *(*CoglCustomWinsysVtableGetter) (CoglRenderer *renderer); | ||||
|  | ||||
| struct _CoglRenderer | ||||
| { | ||||
|   CoglObject _parent; | ||||
| @@ -53,7 +54,7 @@ struct _CoglRenderer | ||||
|   const CoglDriverVtable *driver_vtable; | ||||
|   const CoglTextureDriver *texture_driver; | ||||
|   const CoglWinsysVtable *winsys_vtable; | ||||
|   CoglWinsysVtableGetter custom_winsys_vtable_getter; | ||||
|   CoglCustomWinsysVtableGetter custom_winsys_vtable_getter; | ||||
|   CoglWinsysID winsys_id_override; | ||||
|   GList *constraints; | ||||
|  | ||||
| @@ -69,6 +70,7 @@ struct _CoglRenderer | ||||
|   Display *foreign_xdpy; | ||||
|   CoglBool xlib_enable_event_retrieval; | ||||
|   CoglBool xlib_want_reset_on_video_memory_purge; | ||||
|   CoglBool xlib_enable_threaded_swap_wait; | ||||
| #endif | ||||
|  | ||||
|   CoglDriver driver; | ||||
|   | ||||
| @@ -285,6 +285,17 @@ cogl_xlib_renderer_request_reset_on_video_memory_purge (CoglRenderer *renderer, | ||||
|  | ||||
|   renderer->xlib_want_reset_on_video_memory_purge = enable; | ||||
| } | ||||
|  | ||||
| void | ||||
| cogl_xlib_renderer_set_threaded_swap_wait_enabled (CoglRenderer *renderer, | ||||
| 						   CoglBool enable) | ||||
| { | ||||
|   _COGL_RETURN_IF_FAIL (cogl_is_renderer (renderer)); | ||||
|   /* NB: Renderers are considered immutable once connected */ | ||||
|   _COGL_RETURN_IF_FAIL (!renderer->connected); | ||||
|  | ||||
|   renderer->xlib_enable_threaded_swap_wait = enable; | ||||
| } | ||||
| #endif /* COGL_HAS_XLIB_SUPPORT */ | ||||
|  | ||||
| CoglBool | ||||
| @@ -554,8 +565,8 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer, | ||||
| /* Final connection API */ | ||||
|  | ||||
| void | ||||
| cogl_renderer_set_custom_winsys (CoglRenderer          *renderer, | ||||
|                                  CoglWinsysVtableGetter winsys_vtable_getter) | ||||
| cogl_renderer_set_custom_winsys (CoglRenderer                *renderer, | ||||
|                                  CoglCustomWinsysVtableGetter winsys_vtable_getter) | ||||
| { | ||||
|   renderer->custom_winsys_vtable_getter = winsys_vtable_getter; | ||||
| } | ||||
| @@ -564,10 +575,11 @@ static CoglBool | ||||
| connect_custom_winsys (CoglRenderer *renderer, | ||||
|                        CoglError   **error) | ||||
| { | ||||
|   const CoglWinsysVtable *winsys = renderer->custom_winsys_vtable_getter(); | ||||
|   const CoglWinsysVtable *winsys; | ||||
|   CoglError *tmp_error = NULL; | ||||
|   GString *error_message; | ||||
|  | ||||
|   winsys = renderer->custom_winsys_vtable_getter (renderer); | ||||
|   renderer->winsys_vtable = winsys; | ||||
|  | ||||
|   error_message = g_string_new (""); | ||||
|   | ||||
| @@ -198,6 +198,7 @@ struct _CoglTextureDriver | ||||
|   CoglPixelFormat | ||||
|   (* find_best_gl_get_data_format) (CoglContext     *context, | ||||
|                                     CoglPixelFormat format, | ||||
|                                     CoglPixelFormat target_format, | ||||
|                                     GLenum *closest_gl_format, | ||||
|                                     GLenum *closest_gl_type); | ||||
| }; | ||||
|   | ||||
| @@ -1059,6 +1059,7 @@ cogl_texture_get_data (CoglTexture *texture, | ||||
|  | ||||
|   closest_format = | ||||
|     ctx->texture_driver->find_best_gl_get_data_format (ctx, | ||||
|                                                        texture_format, | ||||
|                                                        format, | ||||
|                                                        &closest_gl_format, | ||||
|                                                        &closest_gl_type); | ||||
|   | ||||
| @@ -167,6 +167,36 @@ void | ||||
| cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer, | ||||
|                                                 CoglBool enable); | ||||
|  | ||||
| /** | ||||
|  * cogl_xlib_renderer_set_threaded_swap_wait_enabled: | ||||
|  * @renderer: a #CoglRenderer | ||||
|  * @enable: The new value | ||||
|  * | ||||
|  * Sets whether Cogl is allowed to use a separate threaded to wait for the | ||||
|  * completion of glXSwapBuffers() and call the frame callback for the | ||||
|  * corresponding #CoglOnscreen. This is a way of emulating the | ||||
|  * INTEL_swap_event extension, and will only ever be used if | ||||
|  * INTEL_swap_event is not present; it will also only be used for | ||||
|  * specific white-listed drivers that are known to work correctly with | ||||
|  * multiple contexts sharing state between threads. | ||||
|  * | ||||
|  * The advantage of enabling this is that it will allow your main loop | ||||
|  * to do other work while waiting for the system to be ready to draw | ||||
|  * the next frame, instead of blocking in glXSwapBuffers(). A disadvantage | ||||
|  * is that the driver will be prevented from buffering up multiple frames | ||||
|  * even if it thinks that it would be advantageous. In general, this | ||||
|  * will work best for something like a system compositor that is doing | ||||
|  * simple drawing but handling lots of other complex tasks. | ||||
|  *  | ||||
|  * If you enable this, you must call XInitThreads() before any other | ||||
|  * X11 calls in your program. (See the documentation for XInitThreads()) | ||||
|  * | ||||
|  * Stability: unstable | ||||
|  */ | ||||
| void | ||||
| cogl_xlib_renderer_set_threaded_swap_wait_enabled (CoglRenderer *renderer, | ||||
| 						   CoglBool enable); | ||||
|  | ||||
| /** | ||||
|  * cogl_xlib_renderer_get_display: (skip) | ||||
|  */ | ||||
|   | ||||
| @@ -1417,6 +1417,17 @@ _cogl_framebuffer_gl_read_pixels_into_bitmap (CoglFramebuffer *framebuffer, | ||||
|                                                             &gl_intformat, | ||||
|                                                             &gl_format, | ||||
|                                                             &gl_type); | ||||
| #if HAVE_COGL_GL | ||||
|   /* As we are reading pixels, we want to consider the bitmap according to | ||||
|    * its real pixel format, not the swizzled channels we pretend face to the | ||||
|    * pipeline. | ||||
|    */ | ||||
|   if ((ctx->driver == COGL_DRIVER_GL || ctx->driver == COGL_DRIVER_GL3) && | ||||
|       (format == COGL_PIXEL_FORMAT_BGRA_8888 || | ||||
|        format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) && | ||||
|       _cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE)) | ||||
|     gl_format = GL_BGRA; | ||||
| #endif | ||||
|  | ||||
|   /* NB: All offscreen rendering is done upside down so there is no need | ||||
|    * to flip in this case... */ | ||||
|   | ||||
| @@ -47,14 +47,19 @@ | ||||
| #include "cogl-util-gl-private.h" | ||||
|  | ||||
| #if defined (COGL_HAS_EGL_SUPPORT) | ||||
| #include "cogl-egl-defines.h" | ||||
| #  ifndef COGL_HAS_GLES2 | ||||
|  | ||||
| /* We need this define from GLES2, but can't include the header | ||||
|    as its type definitions may conflict with the GL ones | ||||
|  */ | ||||
| #  define GL_TEXTURE_EXTERNAL_OES           0x8D65 | ||||
| #  endif | ||||
| #endif | ||||
| #ifndef GL_OES_EGL_image_external | ||||
| #define GL_OES_EGL_image_external 1 | ||||
| #define GL_TEXTURE_EXTERNAL_OES           0x8D65 | ||||
| #define GL_TEXTURE_BINDING_EXTERNAL_OES   0x8D67 | ||||
| #define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 | ||||
| #define GL_SAMPLER_EXTERNAL_OES           0x8D66 | ||||
| #endif /* GL_OES_EGL_image_external */ | ||||
|  | ||||
| #endif /* defined (COGL_HAS_EGL_SUPPORT) */ | ||||
|  | ||||
| void | ||||
| _cogl_texture_2d_gl_free (CoglTexture2D *tex_2d) | ||||
| @@ -767,11 +772,12 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D *tex_2d, | ||||
|  | ||||
|   upload_format = cogl_bitmap_get_format (upload_bmp); | ||||
|  | ||||
|   ctx->driver_vtable->pixel_format_to_gl (ctx, | ||||
|                                           upload_format, | ||||
|                                           NULL, /* internal format */ | ||||
|                                           &gl_format, | ||||
|                                           &gl_type); | ||||
|   ctx->driver_vtable->pixel_format_to_gl_with_target (ctx, | ||||
|                                                       upload_format, | ||||
|                                                       _cogl_texture_get_format (tex), | ||||
|                                                       NULL, /* internal gl format */ | ||||
|                                                       &gl_format, | ||||
|                                                       &gl_type); | ||||
|  | ||||
|   /* If this touches the first pixel then we'll update our copy */ | ||||
|   if (dst_x == 0 && dst_y == 0 && | ||||
|   | ||||
| @@ -37,6 +37,11 @@ | ||||
| #include "cogl-gl-header.h" | ||||
| #include "cogl-texture.h" | ||||
|  | ||||
| /* In OpenGL ES context, GL_CONTEXT_LOST has a _KHR prefix */ | ||||
| #ifndef GL_CONTEXT_LOST | ||||
| #define GL_CONTEXT_LOST GL_CONTEXT_LOST_KHR | ||||
| #endif | ||||
|  | ||||
| #ifdef COGL_GL_DEBUG | ||||
|  | ||||
| const char * | ||||
|   | ||||
| @@ -96,11 +96,12 @@ _cogl_driver_pixel_format_from_gl_internal (CoglContext *context, | ||||
| } | ||||
|  | ||||
| static CoglPixelFormat | ||||
| _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|                                  CoglPixelFormat  format, | ||||
|                                  GLenum *out_glintformat, | ||||
|                                  GLenum *out_glformat, | ||||
|                                  GLenum *out_gltype) | ||||
| _cogl_driver_pixel_format_to_gl_with_target (CoglContext *context, | ||||
|                                              CoglPixelFormat format, | ||||
|                                              CoglPixelFormat target_format, | ||||
|                                              GLenum *out_glintformat, | ||||
|                                              GLenum *out_glformat, | ||||
|                                              GLenum *out_gltype) | ||||
| { | ||||
|   CoglPixelFormat required_format; | ||||
|   GLenum glintformat = 0; | ||||
| @@ -174,7 +175,16 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|     case COGL_PIXEL_FORMAT_BGRA_8888: | ||||
|     case COGL_PIXEL_FORMAT_BGRA_8888_PRE: | ||||
|       glintformat = GL_RGBA; | ||||
|       glformat = GL_BGRA; | ||||
|       /* If the driver has texture_swizzle, pretend internal | ||||
|        * and buffer format are the same here, the pixels | ||||
|        * will be flipped through this extension. | ||||
|        */ | ||||
|       if (target_format == format && | ||||
|           _cogl_has_private_feature | ||||
|           (context, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE)) | ||||
|         glformat = GL_RGBA; | ||||
|       else | ||||
|         glformat = GL_BGRA; | ||||
|       gltype = GL_UNSIGNED_BYTE; | ||||
|       break; | ||||
|  | ||||
| @@ -289,6 +299,20 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|   return required_format; | ||||
| } | ||||
|  | ||||
| static CoglPixelFormat | ||||
| _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|                                  CoglPixelFormat  format, | ||||
|                                  GLenum *out_glintformat, | ||||
|                                  GLenum *out_glformat, | ||||
|                                  GLenum *out_gltype) | ||||
| { | ||||
|   return _cogl_driver_pixel_format_to_gl_with_target (context, | ||||
|                                                       format, format, | ||||
|                                                       out_glintformat, | ||||
|                                                       out_glformat, | ||||
|                                                       out_gltype); | ||||
| } | ||||
|  | ||||
| static CoglBool | ||||
| _cogl_get_gl_version (CoglContext *ctx, | ||||
|                       int *major_out, | ||||
| @@ -669,6 +693,7 @@ _cogl_driver_gl = | ||||
|   { | ||||
|     _cogl_driver_pixel_format_from_gl_internal, | ||||
|     _cogl_driver_pixel_format_to_gl, | ||||
|     _cogl_driver_pixel_format_to_gl_with_target, | ||||
|     _cogl_driver_update_features, | ||||
|     _cogl_offscreen_gl_allocate, | ||||
|     _cogl_offscreen_gl_free, | ||||
|   | ||||
| @@ -114,6 +114,18 @@ _cogl_texture_driver_gen (CoglContext *ctx, | ||||
|                                  red_swizzle) ); | ||||
|     } | ||||
|  | ||||
|   /* If swizzle extension is available, prefer it to flip bgra buffers to rgba */ | ||||
|   if ((internal_format == COGL_PIXEL_FORMAT_BGRA_8888 || | ||||
|        internal_format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) && | ||||
|       _cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE)) | ||||
|     { | ||||
|       static const GLint bgra_swizzle[] = { GL_BLUE, GL_GREEN, GL_RED, GL_ALPHA }; | ||||
|  | ||||
|       GE( ctx, glTexParameteriv (gl_target, | ||||
|                                  GL_TEXTURE_SWIZZLE_RGBA, | ||||
|                                  bgra_swizzle) ); | ||||
|     } | ||||
|  | ||||
|   return tex; | ||||
| } | ||||
|  | ||||
| @@ -521,14 +533,16 @@ static CoglPixelFormat | ||||
| _cogl_texture_driver_find_best_gl_get_data_format | ||||
|                                             (CoglContext *context, | ||||
|                                              CoglPixelFormat format, | ||||
|                                              CoglPixelFormat target_format, | ||||
|                                              GLenum *closest_gl_format, | ||||
|                                              GLenum *closest_gl_type) | ||||
| { | ||||
|   return context->driver_vtable->pixel_format_to_gl (context, | ||||
|                                                      format, | ||||
|                                                      NULL, /* don't need */ | ||||
|                                                      closest_gl_format, | ||||
|                                                      closest_gl_type); | ||||
|   return context->driver_vtable->pixel_format_to_gl_with_target (context, | ||||
|                                                                  format, | ||||
|                                                                  target_format, | ||||
|                                                                  NULL, /* don't need */ | ||||
|                                                                  closest_gl_format, | ||||
|                                                                  closest_gl_type); | ||||
| } | ||||
|  | ||||
| const CoglTextureDriver | ||||
|   | ||||
| @@ -67,11 +67,12 @@ _cogl_driver_pixel_format_from_gl_internal (CoglContext *context, | ||||
| } | ||||
|  | ||||
| static CoglPixelFormat | ||||
| _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|                                  CoglPixelFormat  format, | ||||
|                                  GLenum *out_glintformat, | ||||
|                                  GLenum *out_glformat, | ||||
|                                  GLenum *out_gltype) | ||||
| _cogl_driver_pixel_format_to_gl_with_target (CoglContext *context, | ||||
|                                              CoglPixelFormat format, | ||||
|                                              CoglPixelFormat target_format, | ||||
|                                              GLenum *out_glintformat, | ||||
|                                              GLenum *out_glformat, | ||||
|                                              GLenum *out_gltype) | ||||
| { | ||||
|   CoglPixelFormat required_format; | ||||
|   GLenum glintformat; | ||||
| @@ -219,6 +220,20 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|   return required_format; | ||||
| } | ||||
|  | ||||
| static CoglPixelFormat | ||||
| _cogl_driver_pixel_format_to_gl (CoglContext *context, | ||||
|                                  CoglPixelFormat  format, | ||||
|                                  GLenum *out_glintformat, | ||||
|                                  GLenum *out_glformat, | ||||
|                                  GLenum *out_gltype) | ||||
| { | ||||
|   return _cogl_driver_pixel_format_to_gl_with_target (context, | ||||
|                                                       format, format, | ||||
|                                                       out_glintformat, | ||||
|                                                       out_glformat, | ||||
|                                                       out_gltype); | ||||
| } | ||||
|  | ||||
| static CoglBool | ||||
| _cogl_get_gl_version (CoglContext *ctx, | ||||
|                       int *major_out, | ||||
| @@ -457,6 +472,7 @@ _cogl_driver_gles = | ||||
|   { | ||||
|     _cogl_driver_pixel_format_from_gl_internal, | ||||
|     _cogl_driver_pixel_format_to_gl, | ||||
|     _cogl_driver_pixel_format_to_gl_with_target, | ||||
|     _cogl_driver_update_features, | ||||
|     _cogl_offscreen_gl_allocate, | ||||
|     _cogl_offscreen_gl_free, | ||||
|   | ||||
| @@ -615,6 +615,7 @@ static CoglPixelFormat | ||||
| _cogl_texture_driver_find_best_gl_get_data_format | ||||
|                                             (CoglContext *context, | ||||
|                                              CoglPixelFormat format, | ||||
|                                              CoglPixelFormat target_format, | ||||
|                                              GLenum *closest_gl_format, | ||||
|                                              GLenum *closest_gl_type) | ||||
| { | ||||
|   | ||||
| @@ -61,6 +61,7 @@ _cogl_driver_nop = | ||||
|   { | ||||
|     NULL, /* pixel_format_from_gl_internal */ | ||||
|     NULL, /* pixel_format_to_gl */ | ||||
|     NULL, /* pixel_format_to_gl_with_target */ | ||||
|     _cogl_driver_update_features, | ||||
|     _cogl_offscreen_nop_allocate, | ||||
|     _cogl_offscreen_nop_free, | ||||
|   | ||||
| @@ -2,12 +2,12 @@ prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| libdir=@libdir@/mutter | ||||
| includedir=@includedir@/mutter | ||||
| apiversion=1.0 | ||||
| apiversion=@LIBMUTTER_API_VERSION@ | ||||
| requires=@COGL_PKG_REQUIRES@ | ||||
| 
 | ||||
| Name: Cogl | ||||
| Description: An object oriented GL/GLES Abstraction/Utility Layer | ||||
| Version: @COGL_1_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl | ||||
| Version: @MUTTER_VERSION@ | ||||
| Libs: -L${libdir} -lmutter-cogl-@LIBMUTTER_API_VERSION@ | ||||
| Cflags: -I${includedir}/cogl | ||||
| Requires: ${requires} | ||||
| @@ -262,6 +262,39 @@ _cogl_winsys_renderer_disconnect (CoglRenderer *renderer) | ||||
|   g_slice_free (CoglRendererEGL, egl_renderer); | ||||
| } | ||||
|  | ||||
| static EGLDisplay | ||||
| _cogl_winsys_egl_get_display (void *native) | ||||
| { | ||||
|   EGLDisplay dpy = NULL; | ||||
|   const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS); | ||||
|  | ||||
|   if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base")) | ||||
|     { | ||||
|       PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = | ||||
| 	(void *) eglGetProcAddress ("eglGetPlatformDisplay"); | ||||
|  | ||||
|       if (get_platform_display) | ||||
| 	dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL); | ||||
|  | ||||
|       if (dpy) | ||||
| 	return dpy; | ||||
|     } | ||||
|  | ||||
|   if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base")) | ||||
|     { | ||||
|       PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = | ||||
| 	(void *) eglGetProcAddress ("eglGetPlatformDisplayEXT"); | ||||
|  | ||||
|       if (get_platform_display) | ||||
| 	dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL); | ||||
|  | ||||
|       if (dpy) | ||||
| 	return dpy; | ||||
|     } | ||||
|  | ||||
|   return eglGetDisplay ((EGLNativeDisplayType) native); | ||||
| } | ||||
|  | ||||
| static CoglBool | ||||
| _cogl_winsys_renderer_connect (CoglRenderer *renderer, | ||||
|                                CoglError **error) | ||||
| @@ -278,8 +311,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer, | ||||
|   if (!_cogl_xlib_renderer_connect (renderer, error)) | ||||
|     goto error; | ||||
|  | ||||
|   egl_renderer->edpy = | ||||
|     eglGetDisplay ((EGLNativeDisplayType) xlib_renderer->xdpy); | ||||
|   egl_renderer->edpy = _cogl_winsys_egl_get_display (xlib_renderer->xdpy); | ||||
|  | ||||
|   if (!_cogl_winsys_egl_renderer_connect_common (renderer, error)) | ||||
|     goto error; | ||||
|   | ||||
| @@ -65,12 +65,16 @@ | ||||
| #include <sys/types.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/time.h> | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <time.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include <GL/glx.h> | ||||
| #include <X11/Xlib.h> | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| /* This is a relatively new extension */ | ||||
| #ifndef GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV | ||||
| #define GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x20F7 | ||||
| @@ -100,6 +104,14 @@ typedef struct _CoglOnscreenGLX | ||||
|   CoglBool pending_sync_notify; | ||||
|   CoglBool pending_complete_notify; | ||||
|   CoglBool pending_resize_notify; | ||||
|  | ||||
|   GThread *swap_wait_thread; | ||||
|   GQueue *swap_wait_queue; | ||||
|   GCond swap_wait_cond; | ||||
|   GMutex swap_wait_mutex; | ||||
|   int swap_wait_pipe[2]; | ||||
|   GLXContext swap_wait_context; | ||||
|   CoglBool closing_down; | ||||
| } CoglOnscreenGLX; | ||||
|  | ||||
| typedef struct _CoglPixmapTextureEyeGLX | ||||
| @@ -192,6 +204,15 @@ find_onscreen_for_xid (CoglContext *context, uint32_t xid) | ||||
|   return NULL; | ||||
| } | ||||
|  | ||||
| static int64_t | ||||
| get_monotonic_time_ns (void) | ||||
| { | ||||
|   struct timespec ts; | ||||
|  | ||||
|   clock_gettime (CLOCK_MONOTONIC, &ts); | ||||
|   return ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec; | ||||
| } | ||||
|  | ||||
| static void | ||||
| ensure_ust_type (CoglRenderer *renderer, | ||||
|                  GLXDrawable drawable) | ||||
| @@ -202,7 +223,6 @@ ensure_ust_type (CoglRenderer *renderer, | ||||
|   int64_t msc; | ||||
|   int64_t sbc; | ||||
|   struct timeval tv; | ||||
|   struct timespec ts; | ||||
|   int64_t current_system_time; | ||||
|   int64_t current_monotonic_time; | ||||
|  | ||||
| @@ -232,9 +252,7 @@ ensure_ust_type (CoglRenderer *renderer, | ||||
|  | ||||
|   /* This is the time source that the newer (fixed) linux drm | ||||
|    * drivers use (Linux >= 3.8) */ | ||||
|   clock_gettime (CLOCK_MONOTONIC, &ts); | ||||
|   current_monotonic_time = (ts.tv_sec * G_GINT64_CONSTANT (1000000)) + | ||||
|     (ts.tv_nsec / G_GINT64_CONSTANT (1000)); | ||||
|   current_monotonic_time = get_monotonic_time_ns () / 1000; | ||||
|  | ||||
|   if (current_monotonic_time > ust - 1000000 && | ||||
|       current_monotonic_time < ust + 1000000) | ||||
| @@ -290,6 +308,9 @@ _cogl_winsys_get_clock_time (CoglContext *context) | ||||
| { | ||||
|   CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; | ||||
|  | ||||
|   if (!glx_renderer->glXWaitForMsc) | ||||
|     return get_monotonic_time_ns (); | ||||
|  | ||||
|   /* We don't call ensure_ust_type() because we don't have a drawable | ||||
|    * to work with. cogl_get_clock_time() is documented to only work | ||||
|    * once a valid, non-zero, timestamp has been retrieved from Cogl. | ||||
| @@ -310,10 +331,7 @@ _cogl_winsys_get_clock_time (CoglContext *context) | ||||
|       } | ||||
|     case COGL_GLX_UST_IS_MONOTONIC_TIME: | ||||
|       { | ||||
|         struct timespec ts; | ||||
|  | ||||
|         clock_gettime (CLOCK_MONOTONIC, &ts); | ||||
|         return ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec; | ||||
|         return get_monotonic_time_ns (); | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @@ -712,23 +730,25 @@ update_base_winsys_features (CoglRenderer *renderer) | ||||
|  | ||||
|   g_strfreev (split_extensions); | ||||
|  | ||||
|   /* Note: the GLX_SGI_video_sync spec explicitly states this extension | ||||
|    * only works for direct contexts. */ | ||||
|   if (!glx_renderer->is_direct) | ||||
|     { | ||||
|       glx_renderer->glXGetVideoSync = NULL; | ||||
|       glx_renderer->glXWaitVideoSync = NULL; | ||||
|       COGL_FLAGS_SET (glx_renderer->base_winsys_features, | ||||
|                       COGL_WINSYS_FEATURE_VBLANK_COUNTER, | ||||
|                       FALSE); | ||||
|     } | ||||
|   /* The GLX_SGI_video_sync spec explicitly states this extension | ||||
|    * only works for direct contexts; we don't know per-renderer | ||||
|    * if the context is direct or not, so we turn off the feature | ||||
|    * flag; we still use the extension within this file looking | ||||
|    * instead at glx_display->have_vblank_counter. | ||||
|    */ | ||||
|   COGL_FLAGS_SET (glx_renderer->base_winsys_features, | ||||
|                   COGL_WINSYS_FEATURE_VBLANK_COUNTER, | ||||
|                   FALSE); | ||||
|  | ||||
|  | ||||
|   COGL_FLAGS_SET (glx_renderer->base_winsys_features, | ||||
|                   COGL_WINSYS_FEATURE_MULTIPLE_ONSCREEN, | ||||
|                   TRUE); | ||||
|  | ||||
|   if (glx_renderer->glXWaitVideoSync || | ||||
|       glx_renderer->glXWaitForMsc) | ||||
|   /* Because of the direct-context dependency, the VBLANK_WAIT feature | ||||
|    * doesn't reflect the presence of GLX_SGI_video_sync. | ||||
|    */ | ||||
|   if (glx_renderer->glXWaitForMsc) | ||||
|     COGL_FLAGS_SET (glx_renderer->base_winsys_features, | ||||
|                     COGL_WINSYS_FEATURE_VBLANK_WAIT, | ||||
|                     TRUE); | ||||
| @@ -861,7 +881,7 @@ update_winsys_features (CoglContext *context, CoglError **error) | ||||
|    * by the SwapInterval so we have to throttle swap_region requests | ||||
|    * manually... */ | ||||
|   if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SWAP_REGION) && | ||||
|       _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT)) | ||||
|       (glx_display->have_vblank_counter || glx_display->can_vblank_wait)) | ||||
|     COGL_FLAGS_SET (context->winsys_features, | ||||
|                     COGL_WINSYS_FEATURE_SWAP_REGION_THROTTLE, TRUE); | ||||
|  | ||||
| @@ -877,6 +897,29 @@ update_winsys_features (CoglContext *context, CoglError **error) | ||||
|                       COGL_FEATURE_ID_PRESENTATION_TIME, | ||||
|                       TRUE); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       CoglGpuInfo *info = &context->gpu; | ||||
|       if (glx_display->have_vblank_counter && | ||||
| 	  context->display->renderer->xlib_enable_threaded_swap_wait && | ||||
| 	  info->vendor == COGL_GPU_INFO_VENDOR_NVIDIA) | ||||
|         { | ||||
|           COGL_FLAGS_SET (context->winsys_features, | ||||
|                           COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT, TRUE); | ||||
|           COGL_FLAGS_SET (context->winsys_features, | ||||
|                           COGL_WINSYS_FEATURE_SWAP_BUFFERS_EVENT, TRUE); | ||||
|           /* TODO: remove this deprecated feature */ | ||||
|           COGL_FLAGS_SET (context->features, | ||||
|                           COGL_FEATURE_ID_SWAP_BUFFERS_EVENT, | ||||
|                           TRUE); | ||||
|           COGL_FLAGS_SET (context->features, | ||||
|                           COGL_FEATURE_ID_PRESENTATION_TIME, | ||||
|                           TRUE); | ||||
|           COGL_FLAGS_SET (context->private_features, | ||||
|                           COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT, | ||||
|                           TRUE); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   /* We'll manually handle queueing dirty events in response to | ||||
|    * Expose events from X */ | ||||
| @@ -1139,11 +1182,13 @@ create_context (CoglDisplay *display, CoglError **error) | ||||
|       return FALSE; | ||||
|     } | ||||
|  | ||||
|   glx_renderer->is_direct = | ||||
|   glx_display->is_direct = | ||||
|     glx_renderer->glXIsDirect (xlib_renderer->xdpy, glx_display->glx_context); | ||||
|   glx_display->have_vblank_counter = glx_display->is_direct && glx_renderer->glXWaitVideoSync; | ||||
|   glx_display->can_vblank_wait = glx_renderer->glXWaitForMsc || glx_display->have_vblank_counter; | ||||
|  | ||||
|   COGL_NOTE (WINSYS, "Setting %s context", | ||||
|              glx_renderer->is_direct ? "direct" : "indirect"); | ||||
|              glx_display->is_direct ? "direct" : "indirect"); | ||||
|  | ||||
|   /* XXX: GLX doesn't let us make a context current without a window | ||||
|    * so we create a dummy window that we can use while no CoglOnscreen | ||||
| @@ -1471,7 +1516,8 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen, | ||||
|     } | ||||
|  | ||||
| #ifdef GLX_INTEL_swap_event | ||||
|   if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT)) | ||||
|   if (_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT) && | ||||
|       !_cogl_has_private_feature (context, COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT)) | ||||
|     { | ||||
|       GLXDrawable drawable = | ||||
|         glx_onscreen->glxwin ? glx_onscreen->glxwin : xlib_onscreen->xwin; | ||||
| @@ -1514,6 +1560,31 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen) | ||||
|       xlib_onscreen->output = NULL; | ||||
|     } | ||||
|  | ||||
|   if (glx_onscreen->swap_wait_thread) | ||||
|     { | ||||
|       g_mutex_lock (&glx_onscreen->swap_wait_mutex); | ||||
|       glx_onscreen->closing_down = TRUE; | ||||
|       g_cond_signal (&glx_onscreen->swap_wait_cond); | ||||
|       g_mutex_unlock (&glx_onscreen->swap_wait_mutex); | ||||
|       g_thread_join (glx_onscreen->swap_wait_thread); | ||||
|       glx_onscreen->swap_wait_thread = NULL; | ||||
|  | ||||
|       g_cond_clear (&glx_onscreen->swap_wait_cond); | ||||
|       g_mutex_clear (&glx_onscreen->swap_wait_mutex); | ||||
|  | ||||
|       g_queue_free (glx_onscreen->swap_wait_queue); | ||||
|       glx_onscreen->swap_wait_queue = NULL; | ||||
|  | ||||
|       _cogl_poll_renderer_remove_fd (context->display->renderer, | ||||
|                                      glx_onscreen->swap_wait_pipe[0]); | ||||
|        | ||||
|       close (glx_onscreen->swap_wait_pipe[0]); | ||||
|       close (glx_onscreen->swap_wait_pipe[1]); | ||||
|  | ||||
|       glx_renderer->glXDestroyContext (xlib_renderer->xdpy, | ||||
|                                        glx_onscreen->swap_wait_context); | ||||
|     } | ||||
|  | ||||
|   _cogl_xlib_renderer_trap_errors (context->display->renderer, &old_state); | ||||
|  | ||||
|   drawable = | ||||
| @@ -1655,12 +1726,13 @@ _cogl_winsys_wait_for_vblank (CoglOnscreen *onscreen) | ||||
|   CoglContext *ctx = framebuffer->context; | ||||
|   CoglGLXRenderer *glx_renderer; | ||||
|   CoglXlibRenderer *xlib_renderer; | ||||
|   CoglGLXDisplay *glx_display; | ||||
|  | ||||
|   glx_renderer = ctx->display->renderer->winsys; | ||||
|   xlib_renderer = _cogl_xlib_renderer_get_data (ctx->display->renderer); | ||||
|   glx_display = ctx->display->winsys; | ||||
|  | ||||
|   if (glx_renderer->glXWaitForMsc || | ||||
|       glx_renderer->glXGetVideoSync) | ||||
|   if (glx_display->can_vblank_wait) | ||||
|     { | ||||
|       CoglFrameInfo *info = g_queue_peek_tail (&onscreen->pending_frame_infos); | ||||
|  | ||||
| @@ -1682,16 +1754,13 @@ _cogl_winsys_wait_for_vblank (CoglOnscreen *onscreen) | ||||
|       else | ||||
|         { | ||||
|           uint32_t current_count; | ||||
|           struct timespec ts; | ||||
|  | ||||
|           glx_renderer->glXGetVideoSync (¤t_count); | ||||
|           glx_renderer->glXWaitVideoSync (2, | ||||
|                                           (current_count + 1) % 2, | ||||
|                                           ¤t_count); | ||||
|  | ||||
|           clock_gettime (CLOCK_MONOTONIC, &ts); | ||||
|           info->presentation_time = | ||||
|             ts.tv_sec * G_GINT64_CONSTANT (1000000000) + ts.tv_nsec; | ||||
|           info->presentation_time = get_monotonic_time_ns (); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1749,6 +1818,199 @@ set_frame_info_output (CoglOnscreen *onscreen, | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gpointer | ||||
| threaded_swap_wait (gpointer data) | ||||
| { | ||||
|   CoglOnscreen *onscreen = data; | ||||
|  | ||||
|   CoglOnscreenGLX *glx_onscreen = onscreen->winsys; | ||||
|  | ||||
|   CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen); | ||||
|   CoglContext *context = framebuffer->context; | ||||
|   CoglDisplay *display = context->display; | ||||
|   CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (display->renderer); | ||||
|   CoglGLXDisplay *glx_display = display->winsys; | ||||
|   CoglGLXRenderer *glx_renderer = display->renderer->winsys; | ||||
|   GLXDrawable dummy_drawable; | ||||
|  | ||||
|   if (glx_display->dummy_glxwin) | ||||
|     dummy_drawable = glx_display->dummy_glxwin; | ||||
|   else | ||||
|     dummy_drawable = glx_display->dummy_xwin; | ||||
|  | ||||
|   glx_renderer->glXMakeContextCurrent (xlib_renderer->xdpy, | ||||
|                                        dummy_drawable, | ||||
|                                        dummy_drawable, | ||||
|                                        glx_onscreen->swap_wait_context); | ||||
|  | ||||
|   g_mutex_lock (&glx_onscreen->swap_wait_mutex); | ||||
|  | ||||
|   while (TRUE) | ||||
|     { | ||||
|       gpointer queue_element; | ||||
|       uint32_t vblank_counter; | ||||
|  | ||||
|       while (!glx_onscreen->closing_down && glx_onscreen->swap_wait_queue->length == 0) | ||||
|          g_cond_wait (&glx_onscreen->swap_wait_cond, &glx_onscreen->swap_wait_mutex); | ||||
|  | ||||
|       if (glx_onscreen->closing_down) | ||||
|          break; | ||||
|  | ||||
|       queue_element = g_queue_pop_tail (glx_onscreen->swap_wait_queue); | ||||
|       vblank_counter = GPOINTER_TO_UINT(queue_element); | ||||
|  | ||||
|       g_mutex_unlock (&glx_onscreen->swap_wait_mutex); | ||||
|       glx_renderer->glXWaitVideoSync (2, | ||||
|                                       (vblank_counter + 1) % 2, | ||||
|                                       &vblank_counter); | ||||
|       g_mutex_lock (&glx_onscreen->swap_wait_mutex); | ||||
|  | ||||
|       if (!glx_onscreen->closing_down) | ||||
|          { | ||||
|            int bytes_written = 0; | ||||
|  | ||||
|            union { | ||||
|              char bytes[8]; | ||||
|              int64_t presentation_time; | ||||
|            } u; | ||||
|  | ||||
|            u.presentation_time = get_monotonic_time_ns (); | ||||
|  | ||||
|            while (bytes_written < 8) | ||||
|              { | ||||
|                int res = write (glx_onscreen->swap_wait_pipe[1], u.bytes + bytes_written, 8 - bytes_written); | ||||
|                if (res == -1) | ||||
|                  { | ||||
|                    if (errno != EINTR) | ||||
|                      g_error ("Error writing to swap notification pipe: %s\n", | ||||
|                               g_strerror (errno)); | ||||
|                  } | ||||
|                else | ||||
|                  { | ||||
|                    bytes_written += res; | ||||
|                  } | ||||
|              } | ||||
|          } | ||||
|     } | ||||
|  | ||||
|   g_mutex_unlock (&glx_onscreen->swap_wait_mutex); | ||||
|  | ||||
|   glx_renderer->glXMakeContextCurrent (xlib_renderer->xdpy, | ||||
|                                        None, | ||||
|                                        None, | ||||
|                                        NULL); | ||||
|  | ||||
|   return NULL; | ||||
| } | ||||
|  | ||||
| static int64_t | ||||
| threaded_swap_wait_pipe_prepare (void *user_data) | ||||
| { | ||||
|   return -1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| threaded_swap_wait_pipe_dispatch (void *user_data, int revents) | ||||
| { | ||||
|   CoglOnscreen *onscreen = user_data; | ||||
|   CoglOnscreenGLX *glx_onscreen = onscreen->winsys; | ||||
|  | ||||
|   CoglFrameInfo *info; | ||||
|  | ||||
|   if ((revents & COGL_POLL_FD_EVENT_IN)) | ||||
|     { | ||||
|       int bytes_read = 0; | ||||
|  | ||||
|       union { | ||||
|          char bytes[8]; | ||||
|          int64_t presentation_time; | ||||
|       } u; | ||||
|  | ||||
|       while (bytes_read < 8) | ||||
|          { | ||||
|            int res = read (glx_onscreen->swap_wait_pipe[0], u.bytes + bytes_read, 8 - bytes_read); | ||||
|            if (res == -1) | ||||
|              { | ||||
|                if (errno != EINTR) | ||||
|                  g_error ("Error reading from swap notification pipe: %s\n", | ||||
|                           g_strerror (errno)); | ||||
|              } | ||||
|            else | ||||
|              { | ||||
|                bytes_read += res; | ||||
|              } | ||||
|          } | ||||
|  | ||||
|       set_sync_pending (onscreen); | ||||
|       set_complete_pending (onscreen); | ||||
|  | ||||
|       info = g_queue_peek_head (&onscreen->pending_frame_infos); | ||||
|       info->presentation_time = u.presentation_time; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| start_threaded_swap_wait (CoglOnscreen *onscreen, | ||||
|                            uint32_t      vblank_counter) | ||||
| { | ||||
|   CoglOnscreenGLX *glx_onscreen = onscreen->winsys; | ||||
|   CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen); | ||||
|   CoglContext *context = framebuffer->context; | ||||
|  | ||||
|   if (glx_onscreen->swap_wait_thread == NULL) | ||||
|     { | ||||
|       CoglDisplay *display = context->display; | ||||
|       CoglGLXRenderer *glx_renderer = display->renderer->winsys; | ||||
|       CoglGLXDisplay *glx_display = display->winsys; | ||||
|       CoglOnscreenXlib *xlib_onscreen = onscreen->winsys; | ||||
|       CoglXlibRenderer *xlib_renderer = | ||||
|         _cogl_xlib_renderer_get_data (display->renderer); | ||||
|  | ||||
|       GLXDrawable drawable = | ||||
|         glx_onscreen->glxwin ? glx_onscreen->glxwin : xlib_onscreen->xwin; | ||||
|       int i; | ||||
|  | ||||
|       ensure_ust_type (display->renderer, drawable); | ||||
|        | ||||
|       if ((pipe (glx_onscreen->swap_wait_pipe) == -1)) | ||||
|         g_error ("Couldn't create pipe for swap notification: %s\n", | ||||
|                  g_strerror (errno)); | ||||
|  | ||||
|       for (i = 0; i < 2; i++) | ||||
| 	{ | ||||
| 	  if (fcntl(glx_onscreen->swap_wait_pipe[i], F_SETFD, | ||||
| 		    fcntl(glx_onscreen->swap_wait_pipe[i], F_GETFD, 0) | FD_CLOEXEC) == -1) | ||||
| 	    g_error ("Couldn't set swap notification pipe CLOEXEC: %s\n", | ||||
| 		     g_strerror (errno)); | ||||
| 	} | ||||
|  | ||||
|       _cogl_poll_renderer_add_fd (display->renderer, | ||||
|                                   glx_onscreen->swap_wait_pipe[0], | ||||
|                                   COGL_POLL_FD_EVENT_IN, | ||||
|                                   threaded_swap_wait_pipe_prepare, | ||||
|                                   threaded_swap_wait_pipe_dispatch, | ||||
|                                   onscreen); | ||||
|  | ||||
|       glx_onscreen->swap_wait_queue = g_queue_new (); | ||||
|       g_mutex_init (&glx_onscreen->swap_wait_mutex); | ||||
|       g_cond_init (&glx_onscreen->swap_wait_cond); | ||||
|       glx_onscreen->swap_wait_context = | ||||
|          glx_renderer->glXCreateNewContext (xlib_renderer->xdpy, | ||||
|                                             glx_display->fbconfig, | ||||
|                                             GLX_RGBA_TYPE, | ||||
|                                             glx_display->glx_context, | ||||
|                                             True); | ||||
|       glx_onscreen->swap_wait_thread = g_thread_new ("cogl_glx_swap_wait", | ||||
|                                                      threaded_swap_wait, | ||||
|                                                      onscreen); | ||||
|     } | ||||
|  | ||||
|   g_mutex_lock (&glx_onscreen->swap_wait_mutex); | ||||
|   g_queue_push_head (glx_onscreen->swap_wait_queue, GUINT_TO_POINTER(vblank_counter)); | ||||
|   g_cond_signal (&glx_onscreen->swap_wait_cond); | ||||
|   g_mutex_unlock (&glx_onscreen->swap_wait_mutex); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen, | ||||
|                                    const int *user_rectangles, | ||||
| @@ -1759,6 +2021,7 @@ _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen, | ||||
|   CoglXlibRenderer *xlib_renderer = | ||||
|     _cogl_xlib_renderer_get_data (context->display->renderer); | ||||
|   CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; | ||||
|   CoglGLXDisplay *glx_display = context->display->winsys; | ||||
|   CoglOnscreenXlib *xlib_onscreen = onscreen->winsys; | ||||
|   CoglOnscreenGLX *glx_onscreen = onscreen->winsys; | ||||
|   GLXDrawable drawable = | ||||
| @@ -1815,9 +2078,8 @@ _cogl_winsys_onscreen_swap_region (CoglOnscreen *onscreen, | ||||
|  | ||||
|   if (framebuffer->config.swap_throttled) | ||||
|     { | ||||
|       have_counter = | ||||
|         _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_COUNTER); | ||||
|       can_wait = _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT); | ||||
|       have_counter = glx_display->have_vblank_counter; | ||||
|       can_wait = glx_display->can_vblank_wait; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
| @@ -1974,6 +2236,7 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen, | ||||
|   CoglXlibRenderer *xlib_renderer = | ||||
|     _cogl_xlib_renderer_get_data (context->display->renderer); | ||||
|   CoglGLXRenderer *glx_renderer = context->display->renderer->winsys; | ||||
|   CoglGLXDisplay *glx_display = context->display->winsys; | ||||
|   CoglOnscreenXlib *xlib_onscreen = onscreen->winsys; | ||||
|   CoglOnscreenGLX *glx_onscreen = onscreen->winsys; | ||||
|   CoglBool have_counter; | ||||
| @@ -1991,21 +2254,38 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen, | ||||
|  | ||||
|   if (framebuffer->config.swap_throttled) | ||||
|     { | ||||
|       uint32_t end_frame_vsync_counter = 0; | ||||
|       have_counter = glx_display->have_vblank_counter; | ||||
|  | ||||
|       have_counter = | ||||
|         _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_COUNTER); | ||||
|  | ||||
|       /* If the swap_region API is also being used then we need to track | ||||
|        * the vsync counter for each swap request so we can manually | ||||
|        * throttle swap_region requests. */ | ||||
|       if (have_counter) | ||||
|         end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context); | ||||
|  | ||||
|       if (!glx_renderer->glXSwapInterval) | ||||
|       if (glx_renderer->glXSwapInterval) | ||||
|         { | ||||
|           CoglBool can_wait = | ||||
|             _cogl_winsys_has_feature (COGL_WINSYS_FEATURE_VBLANK_WAIT); | ||||
|           if (_cogl_has_private_feature (context, COGL_PRIVATE_FEATURE_THREADED_SWAP_WAIT)) | ||||
|             { | ||||
| 	      /* If we didn't wait for the GPU here, then it's easy to get the case | ||||
| 	       * where there is a VBlank between the point where we get the vsync counter | ||||
| 	       * and the point where the GPU is ready to actually perform the glXSwapBuffers(), | ||||
| 	       * and the swap wait terminates at the first VBlank rather than the one | ||||
| 	       * where the swap buffers happens. Calling glFinish() here makes this a | ||||
| 	       * rare race since the GPU is already ready to swap when we call glXSwapBuffers(). | ||||
| 	       * The glFinish() also prevents any serious damage if the rare race happens, | ||||
| 	       * since it will wait for the preceding glXSwapBuffers() and prevent us from | ||||
| 	       * getting premanently ahead. (For NVIDIA drivers, glFinish() after glXSwapBuffers() | ||||
| 	       * waits for the buffer swap to happen.) | ||||
| 	       */ | ||||
|               _cogl_winsys_wait_for_gpu (onscreen); | ||||
|               start_threaded_swap_wait (onscreen, _cogl_winsys_get_vsync_counter (context)); | ||||
|             } | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           CoglBool can_wait = have_counter || glx_display->can_vblank_wait; | ||||
|  | ||||
|           uint32_t end_frame_vsync_counter = 0; | ||||
|  | ||||
|           /* If the swap_region API is also being used then we need to track | ||||
|            * the vsync counter for each swap request so we can manually | ||||
|            * throttle swap_region requests. */ | ||||
|           if (have_counter) | ||||
|             end_frame_vsync_counter = _cogl_winsys_get_vsync_counter (context); | ||||
|  | ||||
|           /* If we are going to wait for VBLANK manually, we not only | ||||
|            * need to flush out pending drawing to the GPU before we | ||||
|   | ||||
| @@ -83,6 +83,16 @@ AC_CONFIG_HEADERS(cogl-config.h) | ||||
| AC_CONFIG_HEADERS(cogl-mutter-config.h) | ||||
| AC_GNU_SOURCE | ||||
|  | ||||
| dnl ================================================================ | ||||
| dnl Check that we are configured by mutter | ||||
| dnl ================================================================ | ||||
|  | ||||
| AC_ARG_VAR([MUTTER_VERSION]) | ||||
| AC_ARG_VAR([LIBMUTTER_API_VERSION]) | ||||
|  | ||||
| AS_IF([test "x$MUTTER_VERSION" = "x"], | ||||
|       [AC_MSG_ERROR([Clutter can only be configured by mutter])],) | ||||
|  | ||||
| dnl ================================================================ | ||||
| dnl Required versions for dependencies | ||||
| dnl ================================================================ | ||||
| @@ -945,16 +955,16 @@ AC_OUTPUT( | ||||
| Makefile | ||||
| test-fixtures/Makefile | ||||
| cogl/Makefile | ||||
| cogl/mutter-cogl-1.0.pc | ||||
| cogl/mutter-cogl-$LIBMUTTER_API_VERSION.pc:cogl/mutter-cogl.pc.in | ||||
| cogl/cogl-defines.h | ||||
| cogl/cogl-gl-header.h | ||||
| cogl/cogl-egl-defines.h | ||||
| cogl-pango/Makefile | ||||
| cogl-pango/mutter-cogl-pango-1.0.pc | ||||
| cogl-pango/mutter-cogl-pango-$LIBMUTTER_API_VERSION.pc:cogl-pango/mutter-cogl-pango.pc.in | ||||
| cogl-path/Makefile | ||||
| cogl-path/mutter-cogl-path-1.0.pc | ||||
| cogl-path/mutter-cogl-path-$LIBMUTTER_API_VERSION.pc:cogl-path/mutter-cogl-path.pc.in | ||||
| cogl-gles2/Makefile | ||||
| cogl-gles2/mutter-cogl-gles2-1.0.pc | ||||
| cogl-gles2/mutter-cogl-gles2-$LIBMUTTER_API_VERSION.pc:cogl-gles2/mutter-cogl-gles2.pc.in | ||||
| tests/Makefile | ||||
| tests/config.env | ||||
| tests/conform/Makefile | ||||
|   | ||||
| @@ -131,10 +131,10 @@ AM_CPPFLAGS += \ | ||||
| test_conformance_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) -Wno-error=maybe-uninitialized -Wno-error=nested-externs -Wno-error=missing-prototypes | ||||
| test_conformance_LDADD = \ | ||||
| 	$(COGL_DEP_LIBS) \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl.la \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(LIBM) | ||||
| if BUILD_COGL_PATH | ||||
| test_conformance_LDADD += $(top_builddir)/cogl-path/libmutter-cogl-path.la | ||||
| test_conformance_LDADD += $(top_builddir)/cogl-path/libmutter-cogl-path-$(LIBMUTTER_API_VERSION).la | ||||
| endif | ||||
| test_conformance_LDFLAGS = -export-dynamic | ||||
|  | ||||
|   | ||||
| @@ -17,7 +17,7 @@ AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) | ||||
|  | ||||
| common_ldadd = \ | ||||
| 	$(COGL_DEP_LIBS) \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl.la \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(LIBM) | ||||
|  | ||||
| test_journal_SOURCES = test-journal.c | ||||
|   | ||||
| @@ -13,7 +13,7 @@ wrappers: stamp-test-unit | ||||
| 	@true | ||||
| stamp-test-unit: Makefile test-unit$(EXEEXT) | ||||
| 	@mkdir -p wrappers | ||||
| 	. $(top_builddir)/cogl/libmutter-cogl.la ; \ | ||||
| 	. $(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la ; \ | ||||
| 	  $(NM) $(top_builddir)/cogl/.libs/"$$dlname"| \ | ||||
| 	  grep '[DR] _\?unit_test_'|sed 's/.\+ [DR] _\?//' > unit-tests | ||||
| 	@chmod +x $(top_srcdir)/tests/test-launcher.sh | ||||
| @@ -62,7 +62,7 @@ AM_CPPFLAGS += \ | ||||
| test_unit_CFLAGS = -g3 -O0 $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) | ||||
| test_unit_LDADD = \ | ||||
| 	$(COGL_DEP_LIBS) \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl.la \ | ||||
| 	$(top_builddir)/cogl/libmutter-cogl-$(LIBMUTTER_API_VERSION).la \ | ||||
| 	$(LIBM) | ||||
| test_unit_LDFLAGS = -export-dynamic | ||||
|  | ||||
|   | ||||
							
								
								
									
										45
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -1,14 +1,16 @@ | ||||
| AC_PREREQ(2.62) | ||||
|  | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [23]) | ||||
| m4_define([mutter_micro_version], [3]) | ||||
| m4_define([mutter_minor_version], [25]) | ||||
| m4_define([mutter_micro_version], [91]) | ||||
|  | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
|  | ||||
| m4_define([mutter_plugin_api_version], [3]) | ||||
|  | ||||
| m4_define([libmutter_api_version], [1]) | ||||
|  | ||||
| AC_INIT([mutter], [mutter_version], | ||||
|         [http://bugzilla.gnome.org/enter_bug.cgi?product=mutter]) | ||||
|  | ||||
| @@ -27,11 +29,18 @@ AC_GNU_SOURCE | ||||
| MUTTER_MAJOR_VERSION=mutter_major_version | ||||
| MUTTER_MINOR_VERSION=mutter_minor_version | ||||
| MUTTER_MICRO_VERSION=mutter_micro_version | ||||
| MUTTER_VERSION=mutter_version | ||||
| MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version | ||||
| LIBMUTTER_API_VERSION=libmutter_api_version | ||||
| AC_SUBST(MUTTER_MAJOR_VERSION) | ||||
| AC_SUBST(MUTTER_MINOR_VERSION) | ||||
| AC_SUBST(MUTTER_MICRO_VERSION) | ||||
| AC_SUBST(MUTTER_PLUGIN_API_VERSION) | ||||
| AC_SUBST(MUTTER_VERSION) | ||||
| AC_SUBST(LIBMUTTER_API_VERSION) | ||||
|  | ||||
| # Make the mutter versions visible to the cogl and clutter subdirs | ||||
| export LIBMUTTER_API_VERSION MUTTER_VERSION | ||||
|  | ||||
| MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins" | ||||
| AC_SUBST(MUTTER_PLUGIN_DIR) | ||||
| @@ -48,6 +57,13 @@ AM_GNU_GETTEXT([external]) | ||||
|  | ||||
| LT_PREREQ([2.2.6]) | ||||
| LT_INIT([disable-static]) | ||||
|  | ||||
| # Debian / Ubuntu set this flag to 'no' in libtool, causing linking errors | ||||
| # (i.e when linking against mutter-clutter). Not to explicitly redefine such | ||||
| # deps, we enable this flag for everybody. | ||||
| link_all_deplibs=yes | ||||
| link_all_deplibs_CXX=yes | ||||
|  | ||||
| AC_PROG_CC | ||||
| AC_PROG_CC_C_O | ||||
| AC_PROG_INSTALL | ||||
| @@ -56,7 +72,7 @@ AC_HEADER_STDC | ||||
| PKG_PROG_PKG_CONFIG([0.21]) | ||||
|  | ||||
| # Sets GLIB_GENMARSHAL and GLIB_MKENUMS | ||||
| AM_PATH_GLIB_2_0([2.49.0]) | ||||
| AM_PATH_GLIB_2_0([2.53.2]) | ||||
|  | ||||
| CANBERRA_GTK=libcanberra-gtk3 | ||||
| CANBERRA_GTK_VERSION=0.26 | ||||
| @@ -228,13 +244,6 @@ GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION]) | ||||
| if test x$found_introspection != xno; then | ||||
|   AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available]) | ||||
|   MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0" | ||||
|   # Since we don't make any guarantees about stability and we don't support | ||||
|   # parallel install, there's no real reason to change directories, filenames, | ||||
|   # etc. as we change the Mutter tarball version. Note that this must match | ||||
|   # api_version in src/Makefile.am | ||||
|   META_GIR=Meta_3_0_gir | ||||
|   # META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir] | ||||
|   AC_SUBST(META_GIR) | ||||
| fi | ||||
|  | ||||
| AC_SUBST(XWAYLAND_PATH) | ||||
| @@ -266,7 +275,7 @@ AS_IF([test "$enable_egl_device" = "yes"], [ | ||||
|   AC_DEFINE([HAVE_EGL_DEVICE],[1], [Defined if EGLDevice support is enabled]) | ||||
| ]) | ||||
|  | ||||
| MUTTER_WAYLAND_MODULES="wayland-server >= 1.6.90" | ||||
| MUTTER_WAYLAND_MODULES="wayland-server >= 1.13.0" | ||||
|  | ||||
| AC_ARG_ENABLE(wayland, | ||||
|   AS_HELP_STRING([--disable-wayland], [disable mutter on wayland support]),, | ||||
| @@ -283,7 +292,7 @@ AS_IF([test "$have_wayland" = "yes"], [ | ||||
|   AC_SUBST([WAYLAND_SCANNER]) | ||||
|   AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support]) | ||||
|  | ||||
|   PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.7], | ||||
|   PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.9], | ||||
| 		    [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) | ||||
|   AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) | ||||
| ]) | ||||
| @@ -461,7 +470,7 @@ data/Makefile | ||||
| doc/Makefile | ||||
| doc/man/Makefile | ||||
| src/Makefile | ||||
| src/libmutter.pc | ||||
| src/libmutter-$LIBMUTTER_API_VERSION.pc:src/libmutter.pc.in | ||||
| src/compositor/plugins/Makefile | ||||
| src/meta/meta-version.h | ||||
| po/Makefile.in | ||||
| @@ -469,6 +478,16 @@ po/Makefile.in | ||||
|  | ||||
| AC_OUTPUT | ||||
|  | ||||
| # Check that cogl and clutter have their .pc files regenerated with the correct version | ||||
|  | ||||
| COGL_PC_VERSION=$(grep Version: cogl/cogl/mutter-cogl-$LIBMUTTER_API_VERSION.pc|awk '{ print $2; }') | ||||
| AS_IF([test "x$COGL_PC_VERSION" != "x$MUTTER_VERSION"], | ||||
|       [AC_MSG_ERROR([mutter-cogl pkg-config file not updated, rerun ./configure])]) | ||||
|  | ||||
| CLUTTER_PC_VERSION=$(grep Version: clutter/clutter/mutter-clutter-$LIBMUTTER_API_VERSION.pc|awk '{ print $2; }') | ||||
| AS_IF([test "x$CLUTTER_PC_VERSION" != "x$MUTTER_VERSION"], | ||||
|       [AC_MSG_ERROR([mutter-clutter pkg-config file not updated, rerun ./configure])]) | ||||
|  | ||||
| if test x$enable_verbose_mode = xno; then | ||||
|         echo "*** WARNING WARNING WARNING WARNING WARNING" | ||||
|         echo "*** Building without verbose mode" | ||||
|   | ||||
| @@ -18,7 +18,7 @@ gschema_in_files = \ | ||||
| gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml) | ||||
|  | ||||
| %.gschema.xml: %.gschema.xml.in Makefile | ||||
| 	$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_DOMAIN)|g' \ | ||||
| 	$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_PACKAGE)|g' \ | ||||
| 	$< > $@ || rm $@ | ||||
|  | ||||
| @GSETTINGS_RULES@ | ||||
|   | ||||
| @@ -1,16 +1,16 @@ | ||||
| <schemalist> | ||||
|   <schema id="org.gnome.mutter" path="/org/gnome/mutter/" | ||||
|           gettext-domain="@GETTEXT_DOMAIN"> | ||||
|           gettext-domain="@GETTEXT_DOMAIN@"> | ||||
|  | ||||
|     <key name="overlay-key" type="s"> | ||||
|       <default>'Super_L'</default> | ||||
|       <summary>Modifier to use for extended window management operations</summary> | ||||
|       <description> | ||||
|         This key will initiate the "overlay", which is a combination window | ||||
|         This key will initiate the “overlay”, which is a combination window | ||||
|         overview and application launching system.  The default is intended | ||||
|         to be the "Windows key" on PC hardware. | ||||
|         to be the “Windows key” on PC hardware. | ||||
|  | ||||
|         It's expected that this binding either the default or set to | ||||
|         It’s expected that this binding either the default or set to | ||||
|         the empty string. | ||||
|       </description> | ||||
|     </key> | ||||
| @@ -40,7 +40,7 @@ | ||||
|       <summary>Workspaces are managed dynamically</summary> | ||||
|       <description> | ||||
|         Determines whether workspaces are managed dynamically or | ||||
|         whether there's a static number of workspaces (determined | ||||
|         whether there’s a static number of workspaces (determined | ||||
|         by the num-workspaces key in org.gnome.desktop.wm.preferences). | ||||
|       </description> | ||||
|     </key> | ||||
| @@ -67,7 +67,7 @@ | ||||
|       <default>false</default> | ||||
|       <summary>Delay focus changes until the pointer stops moving</summary> | ||||
|       <description> | ||||
|         If set to true, and the focus mode is either "sloppy" or "mouse" | ||||
|         If set to true, and the focus mode is either “sloppy” or “mouse” | ||||
|         then the focus will not be changed immediately when entering a | ||||
|         window, but only after the pointer stops moving. | ||||
|       </description> | ||||
| @@ -78,7 +78,7 @@ | ||||
|       <range min="0" max="64"/> | ||||
|       <summary>Draggable border width</summary> | ||||
|       <description> | ||||
|           The amount of total draggable borders. If the theme's visible | ||||
|           The amount of total draggable borders. If the theme’s visible | ||||
|           borders are not enough, invisible borders will be added to meet | ||||
|           this value. | ||||
|       </description> | ||||
| @@ -102,6 +102,27 @@ | ||||
|       </description> | ||||
|     </key> | ||||
|  | ||||
|     <key name="experimental-features" type="as"> | ||||
|       <default>[]</default> | ||||
|       <summary>Enable experimental features</summary> | ||||
|       <description> | ||||
|         To enable experimental features, add the feature keyword to the list. | ||||
|         Whether the feature requires restarting the compositor depends on the | ||||
|         given feature. Any experimental feature is not required to still be | ||||
|         available, or configurable. Don’t expect adding anything in this | ||||
|         setting to be future proof. | ||||
|  | ||||
|         Currently possible keywords: | ||||
|  | ||||
|         • “scale-monitor-framebuffer” — makes mutter default to layout logical | ||||
|                                         monitors in a logical pixel coordinate | ||||
|                                         space, while scaling monitor | ||||
|                                         framebuffers instead of window content, | ||||
|                                         to manage HiDPI monitors. Does not | ||||
|                                         require a restart. | ||||
|       </description> | ||||
|     </key> | ||||
|  | ||||
|     <child name="keybindings" schema="org.gnome.mutter.keybindings"/> | ||||
|  | ||||
|   </schema> | ||||
| @@ -125,5 +146,15 @@ | ||||
|       <summary>Cancel tab popup</summary> | ||||
|     </key> | ||||
|  | ||||
|     <key name="switch-monitor" type="as"> | ||||
|       <default><![CDATA[['<Super>p','XF86Display']]]></default> | ||||
|       <summary>Switch monitor configurations</summary> | ||||
|     </key> | ||||
|  | ||||
|     <key name="rotate-monitor" type="as"> | ||||
|       <default><![CDATA[['XF86RotateWindows']]]></default> | ||||
|       <summary>Rotates the built-in monitor configuration</summary> | ||||
|     </key> | ||||
|  | ||||
|   </schema> | ||||
| </schemalist> | ||||
|   | ||||
| @@ -49,5 +49,9 @@ | ||||
|       <default><![CDATA[['<Primary><Alt>F12']]]></default> | ||||
|       <summary>Switch to VT 12</summary> | ||||
|     </key> | ||||
|     <key name="restore-shortcuts" type="as"> | ||||
|       <default><![CDATA[['<Shift><Control>Escape']]]></default> | ||||
|       <summary>Re-enable shortcuts</summary> | ||||
|     </key> | ||||
|   </schema> | ||||
| </schemalist> | ||||
|   | ||||
| @@ -12,19 +12,19 @@ src/compositor/compositor.c | ||||
| src/compositor/meta-background.c | ||||
| src/core/bell.c | ||||
| src/core/core.c | ||||
| src/core/delete.c | ||||
| src/core/display.c | ||||
| src/core/errors.c | ||||
| src/core/keybindings.c | ||||
| src/core/main.c | ||||
| src/core/meta-close-dialog-default.c | ||||
| src/core/mutter.c | ||||
| src/core/prefs.c | ||||
| src/core/screen.c | ||||
| src/core/util.c | ||||
| src/core/window.c | ||||
| src/ui/frames.c | ||||
| src/ui/theme.c | ||||
| src/wayland/meta-wayland-tablet-pad.c | ||||
| src/x11/meta-x11-display.c | ||||
| src/x11/meta-x11-errors.c | ||||
| src/x11/session.c | ||||
| src/x11/window-props.c | ||||
| src/x11/xprops.c | ||||
|   | ||||
| @@ -72,6 +72,7 @@ clutter/clutter/deprecated/clutter-shader.c | ||||
| clutter/clutter/deprecated/clutter-state.c | ||||
| clutter/clutter/deprecated/clutter-table-layout.c | ||||
| clutter/clutter/deprecated/clutter-texture.c | ||||
| clutter/clutter/evdev/clutter-input-device-evdev.c | ||||
| clutter/clutter/evdev/clutter-virtual-input-device-evdev.c | ||||
| clutter/clutter/wayland/clutter-wayland-surface.c | ||||
| clutter/clutter/x11/clutter-backend-x11.c | ||||
|   | ||||
							
								
								
									
										411
									
								
								po/ar.po
									
									
									
									
									
								
							
							
						
						
									
										411
									
								
								po/ar.po
									
									
									
									
									
								
							| @@ -4,14 +4,15 @@ | ||||
| # Arafat Medini <lumina@silverpen.de>, 2003. | ||||
| # Abdulaziz Al-Arfaj <alarfaj0@yahoo.com>, 2004. | ||||
| # Djihed Afifi <djihed@gmail.com>, 2006. | ||||
| # Khaled Hosny <khaledhosny@eglug.org>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015. | ||||
| # Khaled Hosny <khaledhosny@eglug.org>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017. | ||||
| # Anas Afif Emad <anas.e87@gmail.com>, 2008. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity.HEAD\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2015-03-23 21:38+0200\n" | ||||
| "PO-Revision-Date: 2015-03-23 21:45+0200\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&" | ||||
| "keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2017-06-18 21:26+0200\n" | ||||
| "PO-Revision-Date: 2017-06-18 21:27+0200\n" | ||||
| "Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n" | ||||
| "Language-Team: Arabic <doc@arabeyes.org>\n" | ||||
| "Language: ar\n" | ||||
| @@ -20,524 +21,568 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " | ||||
| "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" | ||||
| "X-Generator: Virtaal 0.7.1\n" | ||||
| "X-Generator: Virtaal 1.0.0-beta1\n" | ||||
| "X-Project-Style: gnome\n" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:1 | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| msgstr "الإبحار" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:2 | ||||
| #: data/50-mutter-navigation.xml:9 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "انقل النافذة إلى مساحة العمل 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:3 | ||||
| #: data/50-mutter-navigation.xml:12 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "انقل النافذة إلى مساحة العمل 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:4 | ||||
| #: data/50-mutter-navigation.xml:15 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "انقل النافذة إلى مساحة العمل 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:5 | ||||
| #: data/50-mutter-navigation.xml:18 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "انقل النافذة إلى مساحة العمل 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:6 | ||||
| #: data/50-mutter-navigation.xml:21 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "انقل النافذة إلى مساحة العمل الأخيرة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:7 | ||||
| #: data/50-mutter-navigation.xml:24 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:8 | ||||
| #: data/50-mutter-navigation.xml:27 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:9 | ||||
| #: data/50-mutter-navigation.xml:30 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:10 | ||||
| #: data/50-mutter-navigation.xml:33 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:11 | ||||
| #: data/50-mutter-navigation.xml:36 | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "انقل النافذة شاشة واحدة إلى اليسار" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:12 | ||||
| #: data/50-mutter-navigation.xml:39 | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "انقل النافذة شاشة واحدة إلى اليمين" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:13 | ||||
| #: data/50-mutter-navigation.xml:42 | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "انقل النافذة شاشة واحدة إلى الأعلى" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:14 | ||||
| #: data/50-mutter-navigation.xml:45 | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "انقل النافذة شاشة واحدة إلى الأسفل" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:15 | ||||
| #: data/50-mutter-navigation.xml:49 | ||||
| msgid "Switch applications" | ||||
| msgstr "تنقل بين التطبيقات" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:16 | ||||
| #: data/50-mutter-navigation.xml:54 | ||||
| msgid "Switch to previous application" | ||||
| msgstr "انتقل إلى التطبيق السابق" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:17 | ||||
| #: data/50-mutter-navigation.xml:58 | ||||
| msgid "Switch windows" | ||||
| msgstr "تنقل بين النوافذ" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:18 | ||||
| #: data/50-mutter-navigation.xml:63 | ||||
| msgid "Switch to previous window" | ||||
| msgstr "انتقل إلى النافذة السابقة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:19 | ||||
| #: data/50-mutter-navigation.xml:67 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "تنقل بين نوافذ التطبيق" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:20 | ||||
| #: data/50-mutter-navigation.xml:72 | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "انتقل إلى نافذة التطبيق السابقة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:21 | ||||
| #: data/50-mutter-navigation.xml:76 | ||||
| msgid "Switch system controls" | ||||
| msgstr "تنقل بين تحكمات النظام" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:22 | ||||
| #: data/50-mutter-navigation.xml:81 | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "انتقل إلى تحكم النظام السابق" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:23 | ||||
| #: data/50-mutter-navigation.xml:85 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "تنقل مباشرة بين النوافذ" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:24 | ||||
| #: data/50-mutter-navigation.xml:90 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "انتقل مباشرة إلى النافذة السابقة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:25 | ||||
| #: data/50-mutter-navigation.xml:94 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "تنقل مباشرة بين نوافذ التطبيق" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:26 | ||||
| #: data/50-mutter-navigation.xml:99 | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "انتقل مباشرة إلى نافذة التطبيق السابقة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:27 | ||||
| #: data/50-mutter-navigation.xml:103 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "تنقل مباشرة بين تحكمات النظام" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:28 | ||||
| #: data/50-mutter-navigation.xml:108 | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "انتقل مباشرة إلى تحكم النظام السابق" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:29 | ||||
| #: data/50-mutter-navigation.xml:111 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "أخفِ كل النوافذ العادية" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:30 | ||||
| #: data/50-mutter-navigation.xml:114 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "انتقل إلى مساحة العمل 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:31 | ||||
| #: data/50-mutter-navigation.xml:117 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "انتقل إلى مساحة العمل 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:32 | ||||
| #: data/50-mutter-navigation.xml:120 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "انتقل إلى مساحة العمل 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:33 | ||||
| #: data/50-mutter-navigation.xml:123 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "انتقل إلى مساحة العمل 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:34 | ||||
| #: data/50-mutter-navigation.xml:126 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "انتقل إلى مساحة العمل الأخيرة" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:35 | ||||
| #: data/50-mutter-navigation.xml:129 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "انقل لمساحة العمل على اليسار" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:36 | ||||
| #: data/50-mutter-navigation.xml:132 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "انقل لمساحة العمل على اليمين" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:37 | ||||
| #: data/50-mutter-navigation.xml:135 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "انقل لمساحة العمل أعلى" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:38 | ||||
| #: data/50-mutter-navigation.xml:138 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "انقل لمساحة العمل أسفل" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:1 | ||||
| #: data/50-mutter-system.xml:6 | ||||
| msgid "System" | ||||
| msgstr "النظام" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:2 | ||||
| #: data/50-mutter-system.xml:8 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "أظهر محث تشغيل أمر" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:3 | ||||
| #: data/50-mutter-system.xml:10 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "أظهر نظرة عامة على الأنشطة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:1 | ||||
| #: data/50-mutter-windows.xml:6 | ||||
| msgid "Windows" | ||||
| msgstr "النوافذ" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:2 | ||||
| #: data/50-mutter-windows.xml:8 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "فعّل قائمة النافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:3 | ||||
| #: data/50-mutter-windows.xml:10 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "بدّل نمط ملء الشاشة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:4 | ||||
| #: data/50-mutter-windows.xml:12 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "بدّل حالة التكبير" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:5 | ||||
| #: data/50-mutter-windows.xml:14 | ||||
| msgid "Maximize window" | ||||
| msgstr "كبّر النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:6 | ||||
| #: data/50-mutter-windows.xml:16 | ||||
| msgid "Restore window" | ||||
| msgstr "استعد النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:7 | ||||
| #: data/50-mutter-windows.xml:18 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "بدّل حالة الإخفاء" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:8 | ||||
| #: data/50-mutter-windows.xml:20 | ||||
| msgid "Close window" | ||||
| msgstr "أغلق النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:9 | ||||
| #: data/50-mutter-windows.xml:22 | ||||
| msgid "Hide window" | ||||
| msgstr "أخفِ النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:10 | ||||
| #: data/50-mutter-windows.xml:24 | ||||
| msgid "Move window" | ||||
| msgstr "انقل النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:11 | ||||
| #: data/50-mutter-windows.xml:26 | ||||
| msgid "Resize window" | ||||
| msgstr "حجّم النّافذة" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:12 | ||||
| #: data/50-mutter-windows.xml:29 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:13 | ||||
| #: data/50-mutter-windows.xml:31 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:14 | ||||
| #: data/50-mutter-windows.xml:33 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "ارفع النافذة فوق النوافذ الأخرى" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:15 | ||||
| #: data/50-mutter-windows.xml:35 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "اخفض النافذة تحت النوافذ الأخرى" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:16 | ||||
| #: data/50-mutter-windows.xml:37 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "كبّر النافذة رأسيا" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:17 | ||||
| #: data/50-mutter-windows.xml:39 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "كبّر النافذة أفقيا" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:18 | ||||
| #: data/50-mutter-windows.xml:43 | ||||
| msgid "View split on left" | ||||
| msgstr "المنظور مقسوم على اليمين" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:19 | ||||
| #: data/50-mutter-windows.xml:47 | ||||
| msgid "View split on right" | ||||
| msgstr "المنظور مقسوم على اليسار" | ||||
|  | ||||
| #: ../data/mutter.desktop.in.h:1 | ||||
| #: data/mutter.desktop.in:4 | ||||
| msgid "Mutter" | ||||
| msgstr "مَتَر" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:7 | ||||
| msgid "Modifier to use for extended window management operations" | ||||
| msgstr "المغير الذي سيُستعمل لتمديد عمليات إدارة النوافذ " | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:21 | ||||
| msgid "" | ||||
| "When true, instead of having independent titlebars, modal dialogs appear " | ||||
| "attached to the titlebar of the parent window and are moved together with " | ||||
| "the parent window." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:30 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:31 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| "area. Dropping windows on the top screen edge maximizes them completely." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:40 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:50 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:51 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:59 | ||||
| msgid "No tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:60 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:68 | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:79 | ||||
| msgid "Draggable border width" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:89 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:90 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:98 | ||||
| msgid "Place new windows in the center" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:99 | ||||
| msgid "" | ||||
| "When true, the new windows will always be put in the center of the active " | ||||
| "screen of the monitor." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:21 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:107 | ||||
| msgid "Enable experimental features" | ||||
| msgstr "" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:108 | ||||
| msgid "" | ||||
| "To enable experimental features, add the feature keyword to the list. " | ||||
| "Whether the feature requires restarting the compositor depends on the given " | ||||
| "feature. Any experimental feature is not required to still be available, or " | ||||
| "configurable. Don’t expect adding anything in this setting to be future " | ||||
| "proof. Currently possible keywords: • “monitor-config-manager” — use the new " | ||||
| "monitor configuration system, aimed to replace the old one. This enables a " | ||||
| "higher level configuration API to be used by configuration applications, as " | ||||
| "well as the ability to configure per logical monitor scale. • “scale-monitor-" | ||||
| "framebuffer” — makes mutter default to layout logical monitors in a logical " | ||||
| "pixel coordinate space, while scaling monitor framebuffers instead of window " | ||||
| "content, to manage HiDPI monitors. Does not require a restart. Also enabling " | ||||
| "“monitor-config-manager” is required for this feature to be enabled." | ||||
| msgstr "" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:151 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:22 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:156 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:6 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "انتقل إلى مساحة العمل 1" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:10 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 2" | ||||
| msgstr "انتقل إلى مساحة العمل 2" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:14 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 3" | ||||
| msgstr "انتقل إلى مساحة العمل 3" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:18 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 4" | ||||
| msgstr "انتقل إلى مساحة العمل 4" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:22 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 5" | ||||
| msgstr "انتقل إلى مساحة العمل 5" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:26 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 6" | ||||
| msgstr "انتقل إلى مساحة العمل 6" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:30 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 7" | ||||
| msgstr "انتقل إلى مساحة العمل 7" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:34 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 8" | ||||
| msgstr "انتقل إلى مساحة العمل 8" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:38 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 9" | ||||
| msgstr "انتقل إلى مساحة العمل 9" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:42 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 10" | ||||
| msgstr "انتقل إلى مساحة العمل 10" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:46 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 11" | ||||
| msgstr "انتقل إلى مساحة العمل 11" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:50 | ||||
| #, fuzzy | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "انتقل إلى مساحة العمل 12" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:364 | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1866 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1888 | ||||
| msgid "Switch monitor" | ||||
| msgstr "غيّر الشاشة" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1890 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:879 | ||||
| msgid "Built-in display" | ||||
| msgstr "شاشة مدمجة" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:391 | ||||
| #: src/backends/meta-monitor-manager.c:902 | ||||
| msgid "Unknown" | ||||
| msgstr "غير معروفة" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:393 | ||||
| #: src/backends/meta-monitor-manager.c:904 | ||||
| msgid "Unknown Display" | ||||
| msgstr "شاشة غير معروفة" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: ../src/backends/meta-monitor-manager.c:401 | ||||
| #: src/backends/meta-monitor-manager.c:912 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: ../src/compositor/compositor.c:456 | ||||
| #, c-format | ||||
| #: src/compositor/compositor.c:476 | ||||
| #, fuzzy, c-format | ||||
| 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”." | ||||
| msgstr "يعمل مدير مزج آخر على الشاشة %i والعرض \"%s\"." | ||||
|  | ||||
| #: ../src/core/bell.c:185 | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "حدث جرس" | ||||
|  | ||||
| #: ../src/core/delete.c:127 | ||||
| #: src/core/display.c:608 | ||||
| #, fuzzy, c-format | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "عطّل الاتصال بمدير الجلسة" | ||||
|  | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "استبدل بمدير النوافذ الذي يعمل" | ||||
|  | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "حدّد رقم هويّة إدارة الجلسة" | ||||
|  | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "معراض س الذي سيستعمل" | ||||
|  | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "ابدأ الجلسة من ملف محفوظ" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "اجعل نداءات س متزامنة" | ||||
|  | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/meta-close-dialog-default.c:147 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "”%s“ لا يستجيب." | ||||
|  | ||||
| #: ../src/core/delete.c:129 | ||||
| #: src/core/meta-close-dialog-default.c:149 | ||||
| msgid "Application is not responding." | ||||
| msgstr "لا يستجيب التطبيق" | ||||
|  | ||||
| #: ../src/core/delete.c:134 | ||||
| #: src/core/meta-close-dialog-default.c:154 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية." | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "ا_نتظر" | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Force Quit" | ||||
| msgstr "أ_جبر الإنهاء" | ||||
|  | ||||
| #: ../src/core/display.c:562 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n" | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Wait" | ||||
| msgstr "ا_نتظر" | ||||
|  | ||||
| #: ../src/core/main.c:176 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "عطّل الاتصال بمدير الجلسة" | ||||
|  | ||||
| #: ../src/core/main.c:182 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "استبدل بمدير النوافذ الذي يعمل" | ||||
|  | ||||
| #: ../src/core/main.c:188 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "حدّد رقم هويّة إدارة الجلسة" | ||||
|  | ||||
| #: ../src/core/main.c:193 | ||||
| msgid "X Display to use" | ||||
| msgstr "معراض س الذي سيستعمل" | ||||
|  | ||||
| #: ../src/core/main.c:199 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "ابدأ الجلسة من ملف محفوظ" | ||||
|  | ||||
| #: ../src/core/main.c:205 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "اجعل نداءات س متزامنة" | ||||
|  | ||||
| #: ../src/core/main.c:212 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/mutter.c:39 | ||||
| #, c-format | ||||
| #: src/core/mutter.c:39 | ||||
| #, fuzzy, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| @@ -547,46 +592,52 @@ msgstr "" | ||||
| "هذا برنامج حر، راجع المصدر لشروط النسخ.\n" | ||||
| "لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n" | ||||
|  | ||||
| #: ../src/core/mutter.c:53 | ||||
| #: src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| msgstr "اطبع الإصدارة" | ||||
|  | ||||
| #: ../src/core/mutter.c:59 | ||||
| #: src/core/mutter.c:59 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "ملحق مَتَر الذي سيُستخدم" | ||||
|  | ||||
| #: ../src/core/prefs.c:2004 | ||||
| #: src/core/prefs.c:1997 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "مساحة العمل %d" | ||||
|  | ||||
| #: ../src/core/screen.c:525 | ||||
| #, c-format | ||||
| #: src/core/screen.c:580 | ||||
| #, fuzzy, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "الشاشة \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace " | ||||
| "لتحُلّ محلّ مدير النوافذ الحالي." | ||||
|  | ||||
| #: ../src/core/screen.c:607 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| #: src/core/screen.c:665 | ||||
| #, fuzzy, c-format | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "الشاشة %d على العرض '%s' غير صحيحة\n" | ||||
|  | ||||
| #: ../src/core/util.c:118 | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n" | ||||
|  | ||||
| #: ../src/x11/session.c:1815 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| #, fuzzy | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "هذه النوافذ لا تدعم "احفظ الضبط الحالي" يجب إعادة تشغيلها يدويا " | ||||
| "عند الولوج المرة القادمة." | ||||
|  | ||||
| #: ../src/x11/window-props.c:549 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (على %s)" | ||||
|   | ||||
							
								
								
									
										399
									
								
								po/ca.po
									
									
									
									
									
								
							
							
						
						
									
										399
									
								
								po/ca.po
									
									
									
									
									
								
							| @@ -11,277 +11,277 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity 2.24\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-03-13 01:36+0000\n" | ||||
| "PO-Revision-Date: 2016-03-13 14:45+0100\n" | ||||
| "Last-Translator: Gil Forcada <gilforcada@guifi.net>\n" | ||||
| "POT-Creation-Date: 2017-08-21 04:46+0000\n" | ||||
| "PO-Revision-Date: 2017-08-25 13:23+0200\n" | ||||
| "Last-Translator: Jordi Mas <jmas@softcatala.org>\n" | ||||
| "Language-Team: Catalan <tradgnome@softcatala.org>\n" | ||||
| "Language: ca\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bits\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=n != 1;\n" | ||||
| "X-Generator: Gtranslator 2.91.6\n" | ||||
| "X-Generator: Poedit 2.0.1\n" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:1 | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| msgstr "Navegació" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:2 | ||||
| #: data/50-mutter-navigation.xml:9 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Mou la finestra a l'espai de treball 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:3 | ||||
| #: data/50-mutter-navigation.xml:12 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Mou la finestra a l'espai de treball 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:4 | ||||
| #: data/50-mutter-navigation.xml:15 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Mou la finestra a l'espai de treball 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:5 | ||||
| #: data/50-mutter-navigation.xml:18 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Mou la finestra a l'espai de treball 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:6 | ||||
| #: data/50-mutter-navigation.xml:21 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "Mou la finestra a l'últim espai de treball" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:7 | ||||
| #: data/50-mutter-navigation.xml:24 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Mou la finestra un espai de treball a l'esquerra" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:8 | ||||
| #: data/50-mutter-navigation.xml:27 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Mou la finestra un espai de treball a la dreta" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:9 | ||||
| #: data/50-mutter-navigation.xml:30 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Mou la finestra un espai de treball amunt" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:10 | ||||
| #: data/50-mutter-navigation.xml:33 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Mou la finestra un espai de treball avall" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:11 | ||||
| #: data/50-mutter-navigation.xml:36 | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "Mou la finestra un monitor a l'esquerra" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:12 | ||||
| #: data/50-mutter-navigation.xml:39 | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "Mou la finestra un monitor a la dreta" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:13 | ||||
| #: data/50-mutter-navigation.xml:42 | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "Mou la finestra un monitor amunt" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:14 | ||||
| #: data/50-mutter-navigation.xml:45 | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "Mou la finestra un monitor avall" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:15 | ||||
| #: data/50-mutter-navigation.xml:49 | ||||
| msgid "Switch applications" | ||||
| msgstr "Canvia d'aplicacions" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:16 | ||||
| #: data/50-mutter-navigation.xml:54 | ||||
| msgid "Switch to previous application" | ||||
| msgstr "Canvia a l'aplicació anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:17 | ||||
| #: data/50-mutter-navigation.xml:58 | ||||
| msgid "Switch windows" | ||||
| msgstr "Canvia de finestres" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:18 | ||||
| #: data/50-mutter-navigation.xml:63 | ||||
| msgid "Switch to previous window" | ||||
| msgstr "Canvia a la finestra anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:19 | ||||
| #: data/50-mutter-navigation.xml:67 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Canvia entre les finestres d'una aplicació" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:20 | ||||
| #: data/50-mutter-navigation.xml:72 | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "Canvia a la finestra anterior d'una aplicació" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:21 | ||||
| #: data/50-mutter-navigation.xml:76 | ||||
| msgid "Switch system controls" | ||||
| msgstr "Canvia entre els controls del sistema" | ||||
| msgstr "Canvia els controls del sistema" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:22 | ||||
| #: data/50-mutter-navigation.xml:81 | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "Canvia al control del sistema anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:23 | ||||
| #: data/50-mutter-navigation.xml:85 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Canvia immediatament entre finestres" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:24 | ||||
| #: data/50-mutter-navigation.xml:90 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "Canvia immediatament a la finestra anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:25 | ||||
| #: data/50-mutter-navigation.xml:94 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Canvia immediatament entre les finestres d'una aplicació" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:26 | ||||
| #: data/50-mutter-navigation.xml:99 | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "Canvia immediatament a la finestra anterior d'una aplicació" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:27 | ||||
| #: data/50-mutter-navigation.xml:103 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Canvia immediatament entre els controls del sistema" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:28 | ||||
| #: data/50-mutter-navigation.xml:108 | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "Canvia immediatament al control del sistema anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:29 | ||||
| #: data/50-mutter-navigation.xml:111 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Oculta totes les finestres normals" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:30 | ||||
| #: data/50-mutter-navigation.xml:114 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Canvia a l'espai de treball 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:31 | ||||
| #: data/50-mutter-navigation.xml:117 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Canvia a l'espai de treball 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:32 | ||||
| #: data/50-mutter-navigation.xml:120 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Canvia a l'espai de treball 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:33 | ||||
| #: data/50-mutter-navigation.xml:123 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Canvia a l'espai de treball 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:34 | ||||
| #: data/50-mutter-navigation.xml:126 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "Canvia a l'últim espai de treball" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:35 | ||||
| #: data/50-mutter-navigation.xml:129 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Mou a l'espai de treball de l'esquerra" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:36 | ||||
| #: data/50-mutter-navigation.xml:132 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Mou a l'espai de treball de la dreta" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:37 | ||||
| #: data/50-mutter-navigation.xml:135 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Mou a l'espai de treball de sobre" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:38 | ||||
| #: data/50-mutter-navigation.xml:138 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Mou a l'espai de treball de sota" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:1 | ||||
| #: data/50-mutter-system.xml:6 | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:2 | ||||
| #: data/50-mutter-system.xml:8 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Mostra l'indicador d'execució d'aplicacions" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:3 | ||||
| #: data/50-mutter-system.xml:10 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Mostra la vista general d'activitats" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:1 | ||||
| #: data/50-mutter-windows.xml:6 | ||||
| msgid "Windows" | ||||
| msgstr "Finestres" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:2 | ||||
| #: data/50-mutter-windows.xml:8 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Activa el menú de finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:3 | ||||
| #: data/50-mutter-windows.xml:10 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Canvia entre el mode a pantalla completa" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:4 | ||||
| #: data/50-mutter-windows.xml:12 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Canvia l'estat de maximització" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:5 | ||||
| #: data/50-mutter-windows.xml:14 | ||||
| msgid "Maximize window" | ||||
| msgstr "Maximitza la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:6 | ||||
| #: data/50-mutter-windows.xml:16 | ||||
| msgid "Restore window" | ||||
| msgstr "Restaura la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:7 | ||||
| #: data/50-mutter-windows.xml:18 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Canvia l'estat d'ombrejat" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:8 | ||||
| #: data/50-mutter-windows.xml:20 | ||||
| msgid "Close window" | ||||
| msgstr "Tanca la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:9 | ||||
| #: data/50-mutter-windows.xml:22 | ||||
| msgid "Hide window" | ||||
| msgstr "Oculta la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:10 | ||||
| #: data/50-mutter-windows.xml:24 | ||||
| msgid "Move window" | ||||
| msgstr "Mou la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:11 | ||||
| #: data/50-mutter-windows.xml:26 | ||||
| msgid "Resize window" | ||||
| msgstr "Redimensiona la finestra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:12 | ||||
| #: data/50-mutter-windows.xml:29 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "" | ||||
| "Canvia la funció que fa que la finestra estigui en tots els espais de " | ||||
| "treball o només en un" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:13 | ||||
| #: data/50-mutter-windows.xml:31 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Alça la finestra si està coberta per una altra, o sinó baixa-la" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:14 | ||||
| #: data/50-mutter-windows.xml:33 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Alça la finestra per damunt de les altres" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:15 | ||||
| #: data/50-mutter-windows.xml:35 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Baixa la finestra sota les altres" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:16 | ||||
| #: data/50-mutter-windows.xml:37 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Maximitza la finestra verticalment" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:17 | ||||
| #: data/50-mutter-windows.xml:39 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Maximitza la finestra horitzontalment" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:18 | ||||
| #: data/50-mutter-windows.xml:43 | ||||
| msgid "View split on left" | ||||
| msgstr "Mostra la partició a l'esquerra" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:19 | ||||
| #: data/50-mutter-windows.xml:47 | ||||
| msgid "View split on right" | ||||
| msgstr "Mostra la partició a la dreta" | ||||
|  | ||||
| #: ../data/mutter.desktop.in.h:1 | ||||
| #: data/mutter.desktop.in:4 | ||||
| msgid "Mutter" | ||||
| msgstr "Mutter" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:7 | ||||
| msgid "Modifier to use for extended window management operations" | ||||
| msgstr "" | ||||
| "Modificador que s'utilitzarà per les operacions ampliades de gestió de " | ||||
| "finestres" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Aquesta tecla iniciarà l'«overlay» (superposador), el qual és una combinació " | ||||
| "de visualització de finestres i sistema de llançament d'aplicacions. El " | ||||
| @@ -289,11 +289,11 @@ msgstr "" | ||||
| "PC. El valor d'aquesta vinculació s'espera que sigui el predeterminat o text " | ||||
| "en blanc." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| msgstr "Adjunta els diàlegs modals" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:21 | ||||
| msgid "" | ||||
| "When true, instead of having independent titlebars, modal dialogs appear " | ||||
| "attached to the titlebar of the parent window and are moved together with " | ||||
| @@ -303,13 +303,13 @@ msgstr "" | ||||
| "diàlegs modals apareixeran adjuntats a la barra de títol de la finestra mare " | ||||
| "i es mouran juntament amb aquesta." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:30 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Habilita la tesselització a les vores en deixar anar les finestres a les " | ||||
| "vores de la pantalla" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:31 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| @@ -320,13 +320,13 @@ msgstr "" | ||||
| "deixar-les anar a les vores verticals de la pantalla. Si es deixen anar a la " | ||||
| "vora superior de la pantalla es maximitzaran completament." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:40 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Els espais de treball es gestionen dinàmicament" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| @@ -334,11 +334,11 @@ msgstr "" | ||||
| "nombre determinat d'espais de treball (determinat per la clau «num-" | ||||
| "workspaces» a «org.gnome.desktop.wm.preferences»)." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:50 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "Espais de treball només en el primari" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:51 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| @@ -346,11 +346,11 @@ msgstr "" | ||||
| "Determina si el canvi d'espai de treball hauria de ser per les finestres en " | ||||
| "tots els monitors o només en les finestres del monitor primari." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:59 | ||||
| msgid "No tab popup" | ||||
| msgstr "Sense finestres emergents a les pestanyes" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:60 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| @@ -358,40 +358,40 @@ msgstr "" | ||||
| "Determina si s'ha d'inhabilitar el quadre que es mostra a les finestres " | ||||
| "emergents i ressaltades en commutar entre finestres." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:68 | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Retarda el canvi del focus fins que s'aturi el punter" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Si és «true» (cert), i el mode del focus és «sloppy» o «mouse», no es " | ||||
| "canviarà el focus immediatament quan s'entri a una finestra, només es " | ||||
| "canviarà quan el punter deixi de moure's." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:79 | ||||
| msgid "Draggable border width" | ||||
| msgstr "Amplada del contorn arrossegable" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "La quantitat total de contorn arrossegable. Si els contorns visibles del " | ||||
| "tema no són suficients, s'afegiran contorns invisibles per aconseguir aquest " | ||||
| "valor." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:89 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
| "Maximitza automàticament les finestres que gairebé facin la mida de la " | ||||
| "pantalla" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:90 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| @@ -399,11 +399,11 @@ msgstr "" | ||||
| "Si s'habilita, les finestres que inicialment gairebé fan la mida de la " | ||||
| "pantalla es maximitzaran automàticament." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:98 | ||||
| msgid "Place new windows in the center" | ||||
| msgstr "Posiciona les finestres noves al centre" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:99 | ||||
| msgid "" | ||||
| "When true, the new windows will always be put in the center of the active " | ||||
| "screen of the monitor." | ||||
| @@ -411,153 +411,174 @@ msgstr "" | ||||
| "Si és «true» (cert), les finestres noves seran posicionades al centre de la " | ||||
| "pantalla activa del monitor." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:21 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:107 | ||||
| msgid "Enable experimental features" | ||||
| msgstr "Habilita les funcionalitats experimentals" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:108 | ||||
| msgid "" | ||||
| "To enable experimental features, add the feature keyword to the list. " | ||||
| "Whether the feature requires restarting the compositor depends on the given " | ||||
| "feature. Any experimental feature is not required to still be available, or " | ||||
| "configurable. Don’t expect adding anything in this setting to be future " | ||||
| "proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes " | ||||
| "mutter default to layout logical monitors in a logical pixel coordinate " | ||||
| "space, while scaling monitor framebuffers instead of window content, to " | ||||
| "manage HiDPI monitors. Does not require a restart." | ||||
| msgstr "" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:141 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Selecció de finestra entre les emergents d'una pestanya" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:22 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:146 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Cancel·lació de les finestres emergents a les pestanyes" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:151 | ||||
| msgid "Switch monitor configurations" | ||||
| msgstr "Canvia configuracions de monitor" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:156 | ||||
| msgid "Rotates the built-in monitor configuration" | ||||
| msgstr "Gira la configuració del monitor integrada" | ||||
|  | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:6 | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "Canvia al terminal virtual 1" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:10 | ||||
| msgid "Switch to VT 2" | ||||
| msgstr "Canvia al terminal virtual 2" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:14 | ||||
| msgid "Switch to VT 3" | ||||
| msgstr "Canvia al terminal virtual 3" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:18 | ||||
| msgid "Switch to VT 4" | ||||
| msgstr "Canvia al terminal virtual 4" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:22 | ||||
| msgid "Switch to VT 5" | ||||
| msgstr "Canvia al terminal virtual 5" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:26 | ||||
| msgid "Switch to VT 6" | ||||
| msgstr "Canvia al terminal virtual 6" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:30 | ||||
| msgid "Switch to VT 7" | ||||
| msgstr "Canvia al terminal virtual 7" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:34 | ||||
| msgid "Switch to VT 8" | ||||
| msgstr "Canvia al terminal virtual 8" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:38 | ||||
| msgid "Switch to VT 9" | ||||
| msgstr "Canvia al terminal virtual 9" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:42 | ||||
| msgid "Switch to VT 10" | ||||
| msgstr "Canvia al terminal virtual 10" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:46 | ||||
| msgid "Switch to VT 11" | ||||
| msgstr "Canvia al terminal virtual 11" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:50 | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Canvia al terminal virtual 12" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:518 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:54 | ||||
| msgid "Re-enable shortcuts" | ||||
| msgstr "Torna a habilitar les dreceres" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2151 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Mode de commutació (grup %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2174 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Commuta el monitor" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:2176 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Mostra l'ajuda en pantalla" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:903 | ||||
| msgid "Built-in display" | ||||
| msgstr "Pantalla integrada" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:544 | ||||
| #: src/backends/meta-monitor-manager.c:926 | ||||
| msgid "Unknown" | ||||
| msgstr "Desconeguda" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:546 | ||||
| #: src/backends/meta-monitor-manager.c:928 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Pantalla desconeguda" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: ../src/backends/meta-monitor-manager.c:554 | ||||
| #: src/backends/meta-monitor-manager.c:936 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: ../src/compositor/compositor.c:456 | ||||
| #: src/compositor/compositor.c:476 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "Ja s'està executant un altre gestor de composició a la pantalla %i a la " | ||||
| "visualització «%s»." | ||||
| "Ja s'està executant un altre gestor de composició al monitor %i a la " | ||||
| "pantalla «%s»." | ||||
|  | ||||
| #: ../src/core/bell.c:192 | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "Esdeveniment de campana" | ||||
|  | ||||
| #: ../src/core/delete.c:127 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "«%s» no està responent." | ||||
|  | ||||
| #: ../src/core/delete.c:129 | ||||
| msgid "Application is not responding." | ||||
| msgstr "L'aplicació no està responent." | ||||
|  | ||||
| #: ../src/core/delete.c:134 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| msgstr "" | ||||
| "Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida " | ||||
| "completa." | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Espera" | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Força'n la sortida" | ||||
|  | ||||
| #: ../src/core/display.c:555 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "" | ||||
| "S'ha produït un error en obrir la pantalla del sistema de finestres X «%s»\n" | ||||
|  | ||||
| #: ../src/core/main.c:181 | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Inhabilita la connexió al gestor de sessions" | ||||
|  | ||||
| #: ../src/core/main.c:187 | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Reemplaça el gestor de finestres en execució" | ||||
|  | ||||
| #: ../src/core/main.c:193 | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Especifica l'ID de gestió de sessió" | ||||
|  | ||||
| #: ../src/core/main.c:198 | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "Visualització X per usar" | ||||
|  | ||||
| #: ../src/core/main.c:204 | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Inicialitza la sessió des del fitxer desat" | ||||
|  | ||||
| #: ../src/core/main.c:210 | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Fes que les crides a l'X siguin síncrones" | ||||
|  | ||||
| #: ../src/core/main.c:217 | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Funciona com a compositor de Wayland" | ||||
|  | ||||
| @@ -566,20 +587,45 @@ msgstr "Funciona com a compositor de Wayland" | ||||
| # | ||||
| # Camins: | ||||
| # ../src/core/main.c:223 | ||||
| #: ../src/core/main.c:223 | ||||
| #| msgid "Run as a wayland compositor" | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Funciona com a compositor imbricat" | ||||
|  | ||||
| #: ../src/core/main.c:231 | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat" | ||||
|  | ||||
| #: ../src/core/mutter.c:39 | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/meta-close-dialog-default.c:147 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "«%s» no està responent." | ||||
|  | ||||
| #: src/core/meta-close-dialog-default.c:149 | ||||
| msgid "Application is not responding." | ||||
| msgstr "L'aplicació no està responent." | ||||
|  | ||||
| #: src/core/meta-close-dialog-default.c:154 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| msgstr "" | ||||
| "Podeu esperar un moment perquè continuï o podeu forçar-ne la sortida " | ||||
| "completa." | ||||
|  | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Força'n la sortida" | ||||
|  | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Wait" | ||||
| msgstr "_Espera" | ||||
|  | ||||
| #: src/core/mutter.c:39 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| @@ -591,46 +637,51 @@ msgstr "" | ||||
| "No hi ha CAP garantia; ni tan sols la garantia implícita de COMERCIABILITAT\n" | ||||
| "o ADEQUACIÓ A PER UN PROPÒSIT PARTICULAR.\n" | ||||
|  | ||||
| #: ../src/core/mutter.c:53 | ||||
| #: src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| msgstr "Escriu versió" | ||||
|  | ||||
| #: ../src/core/mutter.c:59 | ||||
| #: src/core/mutter.c:59 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Connector del Mutter a utilitzar" | ||||
|  | ||||
| #: ../src/core/prefs.c:1997 | ||||
| #: src/core/prefs.c:1997 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Espai de treball %d" | ||||
|  | ||||
| #: ../src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "La pantalla «%s» ja té un gestor de finestres; proveu l'opció --replace per " | ||||
| "reemplaçar el gestor de finestres actual." | ||||
|  | ||||
| #: ../src/core/screen.c:603 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "La pantalla %d en la visualització '%s' no és vàlida\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "El monitor %d en la pantalla '%s' no és vàlida\n" | ||||
|  | ||||
| #: ../src/core/util.c:121 | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter es va compilar sense compatibilitat per al mode detallat\n" | ||||
|  | ||||
| #: ../src/x11/session.c:1815 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Mode de commutació: mode %d" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Aquestes finestres no implementen «desa la configuració actual» i s'hauran " | ||||
| "de reiniciar manualment la pròxima vegada que entreu." | ||||
|  | ||||
| #: ../src/x11/window-props.c:549 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (a %s)" | ||||
|   | ||||
							
								
								
									
										539
									
								
								po/da.po
									
									
									
									
									
								
							
							
						
						
									
										539
									
								
								po/da.po
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| # Danish translation of Mutter. | ||||
| # Copyright (C) 2002-2009, 2012-2016. | ||||
| # Copyright (C) 2002-2009, 2012-2017. | ||||
| # This file is distributed under the same license as the metacity package. | ||||
| # Kjartan Maraas <kmaraas@gnome.org>, 2002 | ||||
| # Keld simonsen <keld@dkuug.dk>, 2002 | ||||
| @@ -8,7 +8,7 @@ | ||||
| # Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006. | ||||
| # Kenneth Nielsen <k.nielsen81@gmail.com>, 2008. | ||||
| # Joe Hansen <joedalton2@yahoo.dk>, 2011. | ||||
| # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16. | ||||
| # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17. | ||||
| # | ||||
| # Ordliste: | ||||
| # | ||||
| @@ -19,10 +19,10 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-09-13 10:16+0000\n" | ||||
| "PO-Revision-Date: 2016-09-08 23:52+0200\n" | ||||
| "POT-Creation-Date: 2017-02-22 19:28+0000\n" | ||||
| "PO-Revision-Date: 2017-03-02 12:04+0100\n" | ||||
| "Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n" | ||||
| "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" | ||||
| "Language: da\n" | ||||
| @@ -30,246 +30,6 @@ msgstr "" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| msgstr "Navigation" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:9 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Flyt vindue til arbejdsområde 1" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:12 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Flyt vindue til arbejdsområde 2" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:15 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Flyt vindue til arbejdsområde 3" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:18 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Flyt vindue til arbejdsområde 4" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:21 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "Flyt vindue til sidste arbejdsområde" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:24 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Flyt vindue et arbejdsområde til venstre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:27 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Flyt vindue et arbejdsområde til højre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:30 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Flyt vindue et arbejdsområde op" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:33 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Flyt vindue et arbejdsområde ned" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:36 | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "Flyt vindue en skærm til venstre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:39 | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "Flyt vindue en skærm til højre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:42 | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "Flyt vindue en skærm op" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:45 | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "Flyt vindue en skærm ned" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:49 | ||||
| msgid "Switch applications" | ||||
| msgstr "Skift mellem programmer" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:54 | ||||
| msgid "Switch to previous application" | ||||
| msgstr "Skift til forrige program" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:58 | ||||
| msgid "Switch windows" | ||||
| msgstr "Skift mellem vinduer" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:63 | ||||
| msgid "Switch to previous window" | ||||
| msgstr "Skift til forrige vindue" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:67 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Skift mellem vinduer i et program" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:72 | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "Skift til forrige vindue af et program" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:76 | ||||
| msgid "Switch system controls" | ||||
| msgstr "Skift mellem systemkontroller" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:81 | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "Skift til forrige systemkontrol" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:85 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Skift direkte mellem vinduer" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:90 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "Skift direkte til forrige vindue" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:94 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Skift direkte mellem vinduer i et program" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:99 | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "Skift direkte til forrige vindue af et program" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:103 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Skift direkte mellem systemkontroller" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:108 | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "Skift direkte til forrige systemkontrol" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:111 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Skjul alle normale vinduer" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:114 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Skift til arbejdsområde 1" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:117 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Skift til arbejdsområde 2" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:120 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Skift til arbejdsområde 3" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:123 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Skift til arbejdsområde 4" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:126 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "Skift til sidste arbejdsområde" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:129 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Flyt til arbejdsområdet til venstre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:132 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Flyt til arbejdsområdet til højre" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:135 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Flyt til arbejdsområdet ovenover" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:138 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Flyt til arbejdsområdet nedenunder" | ||||
|  | ||||
| #: data/50-mutter-system.xml:6 | ||||
| msgid "System" | ||||
| msgstr "System" | ||||
|  | ||||
| #: data/50-mutter-system.xml:8 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Vis \"kør kommando\"-prompten" | ||||
|  | ||||
| #: data/50-mutter-system.xml:10 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Vis aktivitetsoversigten" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:6 | ||||
| msgid "Windows" | ||||
| msgstr "Vinduer" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:8 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Aktivér vinduesmenuen" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:10 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Slå fuldskærmstilstand til/fra" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:12 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Slå maksimering til/fra" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:14 | ||||
| msgid "Maximize window" | ||||
| msgstr "Maksimér vindue" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:16 | ||||
| msgid "Restore window" | ||||
| msgstr "Gendan vindue" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:18 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Slå vinduesoprulning til/fra" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:20 | ||||
| msgid "Close window" | ||||
| msgstr "Luk vindue" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:22 | ||||
| msgid "Hide window" | ||||
| msgstr "Skjul vindue" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:24 | ||||
| msgid "Move window" | ||||
| msgstr "Flyt vindue" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:26 | ||||
| msgid "Resize window" | ||||
| msgstr "Ændr vinduesstørrelse" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:29 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Slå visning af vindue på alle arbejdsområder til/fra" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:31 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Hæv vindue hvis det er dækket, ellers sænk det" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:33 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Hæv vindue over andre vinduer" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:35 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Sænk vindue under andre vinduer" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:37 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Maksimér vindue lodret" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:39 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Maksimér vindue vandret" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:43 | ||||
| msgid "View split on left" | ||||
| msgstr "Delt visning venstre" | ||||
|  | ||||
| #: data/50-mutter-windows.xml:47 | ||||
| msgid "View split on right" | ||||
| msgstr "Delt visning højre" | ||||
|  | ||||
| #: data/mutter.desktop.in:4 | ||||
| msgid "Mutter" | ||||
| msgstr "Mutter" | ||||
| @@ -280,15 +40,11 @@ msgstr "Modifikationstast til brug for udvidede vindueshåndteringsoperationer" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| msgstr "" | ||||
| "Denne nøgle vil klargøre \"overlay\", som er en kombineret vinduesoversigt " | ||||
| "og programstartsystem. Standardværdien på PC-hardware er tiltænkt som " | ||||
| "\"Windows\"-tasten. Det forventes at denne binding enten har " | ||||
| "standardværdien, eller er sat til den tomme streng." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "Denne nøgle vil klargøre \"overlay\", som er en kombineret vinduesoversigt og programstartersystem. Standardværdien på PC-hardware er tiltænkt som \"Windows\"-tasten. Det forventes, at denne binding enten har standardværdien, eller er sat til den tomme streng." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| @@ -326,7 +82,7 @@ msgstr "Arbejdsområder håndteres dynamisk" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| @@ -364,9 +120,9 @@ msgstr "Lad fokusændringer vente indtil markøren holder op med at bevæge sig" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Hvis sat til sand, og fokustilstanden er enten \"sloppy\" eller \"mouse\", " | ||||
| "vil fokus ikke blive ændret omgående når man går ind i et nyt vindue, men " | ||||
| @@ -378,7 +134,7 @@ msgstr "Bredde af den trækbare kant" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "Samlet mængde kant der kan trækkes. Hvis temaets synlige grænser ikke er " | ||||
| @@ -463,44 +219,51 @@ msgstr "Skift til VT 11" | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Skift til VT 12" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1800 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Tilstandsskift (Gruppe %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1845 | ||||
| #: src/backends/meta-input-settings.c:1822 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Skift skærm" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1847 | ||||
| #: src/backends/meta-input-settings.c:1824 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Vis integreret hjælp" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:514 | ||||
| #: src/backends/meta-monitor-manager.c:675 | ||||
| msgid "Built-in display" | ||||
| msgstr "Indbygget terminal" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:537 | ||||
| #: src/backends/meta-monitor-manager.c:698 | ||||
| msgid "Unknown" | ||||
| msgstr "Ukendt" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:539 | ||||
| #: src/backends/meta-monitor-manager.c:700 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Ukendt terminal" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: src/backends/meta-monitor-manager.c:547 | ||||
| #: src/backends/meta-monitor-manager.c:708 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:471 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "En anden komposithåndtering kører allerede på skærm %i på terminal \"%s\"." | ||||
|  | ||||
| @@ -508,6 +271,7 @@ msgstr "" | ||||
| msgid "Bell event" | ||||
| msgstr "Bip-hændelse" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/delete.c:127 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| @@ -525,52 +289,52 @@ msgstr "" | ||||
| "Du kan vælge at vente et lille stykke tid på at programmet fortsætter, eller " | ||||
| "du kan tvinge programmet til at afslutte fuldstændigt." | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Vent" | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Tving til at afslutte" | ||||
|  | ||||
| #: src/core/display.c:590 | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Vent" | ||||
|  | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Kunne ikke åbne X Window System-terminalen \"%s\"\n" | ||||
|  | ||||
| #: src/core/main.c:182 | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Deaktivér forbindelse til sessionshåndtering" | ||||
|  | ||||
| #: src/core/main.c:188 | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Erstat den kørende vindueshåndtering" | ||||
|  | ||||
| #: src/core/main.c:194 | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Angiv sessionhåndterings-id" | ||||
|  | ||||
| #: src/core/main.c:199 | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "X-terminal som bruges" | ||||
|  | ||||
| #: src/core/main.c:205 | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Initialisér session fra gemt fil" | ||||
|  | ||||
| #: src/core/main.c:211 | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Gør kald til X synkrone" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Kør som en wayland-kompositor" | ||||
|  | ||||
| #: src/core/main.c:224 | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Kør som en indlejret kompositor" | ||||
|  | ||||
| #: src/core/main.c:232 | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Kør som fuld terminalserver, frem for indlejret" | ||||
|  | ||||
| @@ -578,16 +342,15 @@ msgstr "Kør som fuld terminalserver, frem for indlejret" | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
| "mutter %s\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., og andre\n" | ||||
| "Copyright © 2001–%d Havoc Pennington, Red Hat, Inc., og andre\n" | ||||
| "Dette er frit programmel; se kildekoden for kopieringsbetingelser.\n" | ||||
| "Der er INGEN garanti; ikke engang for SALGBARHED eller EGNETHED TIL ET " | ||||
| "BESTEMT FORMÅL.\n" | ||||
| "Der er INGEN garanti; ikke engang for SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÅL.\n" | ||||
|  | ||||
| #: src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| @@ -602,43 +365,221 @@ msgstr "Mutter-udvidelsesmodul der skal bruges" | ||||
| msgid "Workspace %d" | ||||
| msgstr "Arbejdsområde %d" | ||||
|  | ||||
| #: src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "Terminalen \"%s\" har allerede en vindueshåndtering; prøv tilvalget --" | ||||
| "replace for at erstatte den aktuelle vindueshåndtering." | ||||
|  | ||||
| #: src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "Skærm %d på terminal \"%s\" er ugyldig\n" | ||||
|  | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n" | ||||
|  | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Tilstandsskift: Tilstand %d" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Disse vinduer understøtter ikke gemning af deres opsætning og skal " | ||||
| "genstartes manuelt næste gang du logger på." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "Disse vinduer understøtter ikke at gemme deres opsætning og skal genstartes manuelt næste gang, du logger på." | ||||
|  | ||||
| # Lad os håbe dette er rigtigt | ||||
| #: src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (på %s)" | ||||
|  | ||||
| #~ msgid "Navigation" | ||||
| #~ msgstr "Navigation" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "Flyt vindue til arbejdsområde 1" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "Flyt vindue til arbejdsområde 2" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "Flyt vindue til arbejdsområde 3" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "Flyt vindue til arbejdsområde 4" | ||||
|  | ||||
| #~ msgid "Move window to last workspace" | ||||
| #~ msgstr "Flyt vindue til sidste arbejdsområde" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "Flyt vindue et arbejdsområde til venstre" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "Flyt vindue et arbejdsområde til højre" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "Flyt vindue et arbejdsområde op" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "Flyt vindue et arbejdsområde ned" | ||||
|  | ||||
| #~ msgid "Move window one monitor to the left" | ||||
| #~ msgstr "Flyt vindue en skærm til venstre" | ||||
|  | ||||
| #~ msgid "Move window one monitor to the right" | ||||
| #~ msgstr "Flyt vindue en skærm til højre" | ||||
|  | ||||
| #~ msgid "Move window one monitor up" | ||||
| #~ msgstr "Flyt vindue en skærm op" | ||||
|  | ||||
| #~ msgid "Move window one monitor down" | ||||
| #~ msgstr "Flyt vindue en skærm ned" | ||||
|  | ||||
| #~ msgid "Switch applications" | ||||
| #~ msgstr "Skift mellem programmer" | ||||
|  | ||||
| #~ msgid "Switch to previous application" | ||||
| #~ msgstr "Skift til forrige program" | ||||
|  | ||||
| #~ msgid "Switch windows" | ||||
| #~ msgstr "Skift mellem vinduer" | ||||
|  | ||||
| #~ msgid "Switch to previous window" | ||||
| #~ msgstr "Skift til forrige vindue" | ||||
|  | ||||
| #~ msgid "Switch windows of an application" | ||||
| #~ msgstr "Skift mellem vinduer i et program" | ||||
|  | ||||
| #~ msgid "Switch to previous window of an application" | ||||
| #~ msgstr "Skift til forrige vindue af et program" | ||||
|  | ||||
| #~ msgid "Switch system controls" | ||||
| #~ msgstr "Skift mellem systemkontroller" | ||||
|  | ||||
| #~ msgid "Switch to previous system control" | ||||
| #~ msgstr "Skift til forrige systemkontrol" | ||||
|  | ||||
| #~ msgid "Switch windows directly" | ||||
| #~ msgstr "Skift direkte mellem vinduer" | ||||
|  | ||||
| #~ msgid "Switch directly to previous window" | ||||
| #~ msgstr "Skift direkte til forrige vindue" | ||||
|  | ||||
| #~ msgid "Switch windows of an app directly" | ||||
| #~ msgstr "Skift direkte mellem vinduer i et program" | ||||
|  | ||||
| #~ msgid "Switch directly to previous window of an app" | ||||
| #~ msgstr "Skift direkte til forrige vindue af et program" | ||||
|  | ||||
| #~ msgid "Switch system controls directly" | ||||
| #~ msgstr "Skift direkte mellem systemkontroller" | ||||
|  | ||||
| #~ msgid "Switch directly to previous system control" | ||||
| #~ msgstr "Skift direkte til forrige systemkontrol" | ||||
|  | ||||
| #~ msgid "Hide all normal windows" | ||||
| #~ msgstr "Skjul alle normale vinduer" | ||||
|  | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "Skift til arbejdsområde 1" | ||||
|  | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "Skift til arbejdsområde 2" | ||||
|  | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "Skift til arbejdsområde 3" | ||||
|  | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "Skift til arbejdsområde 4" | ||||
|  | ||||
| #~ msgid "Switch to last workspace" | ||||
| #~ msgstr "Skift til sidste arbejdsområde" | ||||
|  | ||||
| #~ msgid "Move to workspace left" | ||||
| #~ msgstr "Flyt til arbejdsområdet til venstre" | ||||
|  | ||||
| #~ msgid "Move to workspace right" | ||||
| #~ msgstr "Flyt til arbejdsområdet til højre" | ||||
|  | ||||
| #~ msgid "Move to workspace above" | ||||
| #~ msgstr "Flyt til arbejdsområdet ovenover" | ||||
|  | ||||
| #~ msgid "Move to workspace below" | ||||
| #~ msgstr "Flyt til arbejdsområdet nedenunder" | ||||
|  | ||||
| #~ msgid "System" | ||||
| #~ msgstr "System" | ||||
|  | ||||
| #~ msgid "Show the run command prompt" | ||||
| #~ msgstr "Vis \"kør kommando\"-prompten" | ||||
|  | ||||
| #~ msgid "Show the activities overview" | ||||
| #~ msgstr "Vis aktivitetsoversigten" | ||||
|  | ||||
| #~ msgid "Windows" | ||||
| #~ msgstr "Vinduer" | ||||
|  | ||||
| #~ msgid "Activate the window menu" | ||||
| #~ msgstr "Aktivér vinduesmenuen" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "Slå fuldskærmstilstand til/fra" | ||||
|  | ||||
| #~ msgid "Toggle maximization state" | ||||
| #~ msgstr "Slå maksimering til/fra" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "Maksimér vindue" | ||||
|  | ||||
| #~ msgid "Restore window" | ||||
| #~ msgstr "Gendan vindue" | ||||
|  | ||||
| #~ msgid "Toggle shaded state" | ||||
| #~ msgstr "Slå vinduesoprulning til/fra" | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "Luk vindue" | ||||
|  | ||||
| #~ msgid "Hide window" | ||||
| #~ msgstr "Skjul vindue" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "Flyt vindue" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "Ændr vinduesstørrelse" | ||||
|  | ||||
| #~ msgid "Toggle window on all workspaces or one" | ||||
| #~ msgstr "Slå visning af vindue på alle arbejdsområder til/fra" | ||||
|  | ||||
| #~ msgid "Raise window if covered, otherwise lower it" | ||||
| #~ msgstr "Hæv vindue hvis det er dækket, ellers sænk det" | ||||
|  | ||||
| #~ msgid "Raise window above other windows" | ||||
| #~ msgstr "Hæv vindue over andre vinduer" | ||||
|  | ||||
| #~ msgid "Lower window below other windows" | ||||
| #~ msgstr "Sænk vindue under andre vinduer" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "Maksimér vindue lodret" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "Maksimér vindue vandret" | ||||
|  | ||||
| #~ msgid "View split on left" | ||||
| #~ msgstr "Delt visning venstre" | ||||
|  | ||||
| #~ msgid "View split on right" | ||||
| #~ msgstr "Delt visning højre" | ||||
|  | ||||
| #~ msgid "Failed to scan themes directory: %s\n" | ||||
| #~ msgstr "Kunne ikke skanne temamappe: %s\n" | ||||
|  | ||||
|   | ||||
							
								
								
									
										142
									
								
								po/el.po
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								po/el.po
									
									
									
									
									
								
							| @@ -18,18 +18,18 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity.gnome-2-26\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-09-07 09:27+0000\n" | ||||
| "PO-Revision-Date: 2016-09-15 11:47+0300\n" | ||||
| "Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n" | ||||
| "POT-Creation-Date: 2017-02-28 06:20+0000\n" | ||||
| "PO-Revision-Date: 2017-04-07 13:41+0300\n" | ||||
| "Last-Translator: Tom Tryfonidis <tomtryf@gnome.org>\n" | ||||
| "Language-Team: Greek, Modern (1453-) <opensuse-translation-el@opensuse.org>\n" | ||||
| "Language: el\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
| "X-Generator: Poedit 1.8.9\n" | ||||
| "X-Generator: Poedit 1.8.11\n" | ||||
| "X-Project-Style: gnome\n" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| @@ -282,16 +282,15 @@ msgstr "Μετατροπέας για χρήση στις εκτεταμένες | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Αυτό το πλήκτρο θα ξεκινήσει την \"επικάλυψη\", που είναι συνδυασμένο " | ||||
| "σύστημα επισκόπησης παραθύρων και εκκίνησης εφαρμογών. Η προεπιλογή " | ||||
| "προτίθεται να είναι το \"πλήκτρο Windows\" σε μηχανήματα PC. Αναμένεται ότι " | ||||
| "αυτή η αντιστοίχιση θα είναι είτε η προεπιλογή ή θα ορίζεται στην κενή " | ||||
| "συμβολοσειρά." | ||||
| "Αυτό το πλήκτρο θα ξεκινήσει την «επικάλυψη», που είναι συνδυασμένο σύστημα " | ||||
| "επισκόπησης παραθύρων και εκκίνησης εφαρμογών. Η προεπιλογή προτίθεται να " | ||||
| "είναι το «πλήκτρο Windows» σε μηχανήματα PC. Αναμένεται ότι αυτή η " | ||||
| "αντιστοίχιση θα είναι είτε η προεπιλογή ή θα ορίζεται στην κενή συμβολοσειρά." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| @@ -330,7 +329,7 @@ msgstr "Οι χώροι εργασίας διαχειρίζονται δυναμ | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| @@ -369,13 +368,13 @@ msgstr "" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Αν οριστεί σε αληθής, και η λειτουργία της εστίασης είναι \"sloppy\" ή " | ||||
| "\"mouse\" τότε η εστίαση δεν θα αλλάξει αμέσως όταν ανοίγετε ένα παράθυρο, " | ||||
| "αλλά μόνο όταν ο δείκτης σταματήσει να κινείται." | ||||
| "Αν οριστεί σε αληθής, και η λειτουργία της εστίασης είναι «sloppy» ή «mouse» " | ||||
| "τότε η εστίαση δεν θα αλλάξει αμέσως όταν ανοίγετε ένα παράθυρο, αλλά μόνο " | ||||
| "όταν ο δείκτης σταματήσει να κινείται." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:79 | ||||
| msgid "Draggable border width" | ||||
| @@ -383,7 +382,7 @@ msgstr "Συρόμενο πλάτος περιγράμματος" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "Το ποσό των συνολικών συρόμενων περιγραμμάτων. Αν τα περιγράμματα του " | ||||
| @@ -472,48 +471,59 @@ msgstr "Εναλλαγή στο VT 11" | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Εναλλαγή στο VT 12" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1707 | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1800 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Λειτουργία διακόπτη (ομάδα %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1822 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Εναλλαγή οθόνης" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1709 | ||||
| #: src/backends/meta-input-settings.c:1824 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Εμφάνιση βοήθειας στην οθόνη" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:514 | ||||
| #: src/backends/meta-monitor-manager.c:675 | ||||
| msgid "Built-in display" | ||||
| msgstr "Ενσωματωμένη οθόνη" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:537 | ||||
| #: src/backends/meta-monitor-manager.c:698 | ||||
| msgid "Unknown" | ||||
| msgstr "Άγνωστη" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:539 | ||||
| #: src/backends/meta-monitor-manager.c:700 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Άγνωστη οθόνη" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: src/backends/meta-monitor-manager.c:547 | ||||
| #: src/backends/meta-monitor-manager.c:708 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:471 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "Εκτελείται ένας άλλος διαχειριστής παραθύρων στην οθόνη %i προβολή \"%s\"." | ||||
| "Εκτελείται ένας άλλος διαχειριστής παραθύρων στην οθόνη %i προβολή «%s»." | ||||
|  | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "Ηχητικό συμβάν κουδουνιού" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/delete.c:127 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| @@ -531,53 +541,53 @@ msgstr "" | ||||
| "Μπορείτε να επιλέξετε να περιμένετε λίγο για να συνεχίσει, ή να εξαναγκάσετε " | ||||
| "την εφαρμογή σε έξοδο." | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Αναμονή" | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Εξαναγκασμός σε τερματισμό" | ||||
|  | ||||
| # gconf/gconf-internals.c:2416 | ||||
| #: src/core/display.c:590 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Αποτυχία ανοίγματος οθόνης του συστήματος παραθύρων Χ '%s'\n" | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Αναμονή" | ||||
|  | ||||
| #: src/core/main.c:182 | ||||
| # gconf/gconf-internals.c:2416 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Αποτυχία ανοίγματος οθόνης του συστήματος παραθύρων Χ «%s»\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Απενεργοποίηση σύνδεσης στο διαχειριστή συνεδρίας" | ||||
|  | ||||
| #: src/core/main.c:188 | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Αντικατάσταση του τρέχοντος διαχειριστή παραθύρων" | ||||
|  | ||||
| #: src/core/main.c:194 | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Καθορισμός αναγνωριστικού διαχείρισης συνεδρίας" | ||||
|  | ||||
| #: src/core/main.c:199 | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "Εμφάνιση Χ για χρήση" | ||||
|  | ||||
| #: src/core/main.c:205 | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Εκκίνηση συνεδρίας από savefile" | ||||
|  | ||||
| #: src/core/main.c:211 | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Να καταστούν σύγχρονες οι κλήσεις του X" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Εκτέλεση ως wayland compositor" | ||||
|  | ||||
| #: src/core/main.c:224 | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Εκτέλεση ως ενσωματωμένος compositor" | ||||
|  | ||||
| #: src/core/main.c:232 | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Εκτέλεση ως διακομιστής πλήρους οθόνης, αντί ενσωματωμένης" | ||||
|  | ||||
| @@ -585,14 +595,13 @@ msgstr "Εκτέλεση ως διακομιστής πλήρους οθόνης | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
| "mutter %s\n" | ||||
| "Πνευματικά Δικαιώματα (C) 2001-%d Havoc Pennington, Red Hat, Inc., και " | ||||
| "άλλοι\n" | ||||
| "Πνευματικά Δικαιώματα © 2001-%d Havoc Pennington, Red Hat, Inc., και άλλοι\n" | ||||
| "Αυτό είναι ελεύθερο λογισμικό, βλ. τον πηγαίο κώδικα για όρους αντιγραφής.\n" | ||||
| "ΔΕΝ παρέχεται καμία εγγύηση, ούτε ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ούτε ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ " | ||||
| "ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ.\n" | ||||
| @@ -610,20 +619,20 @@ msgstr "Πρόσθετα του Mutter για χρήση" | ||||
| msgid "Workspace %d" | ||||
| msgstr "Χώρος εργασίας %d" | ||||
|  | ||||
| #: src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "Η προβολή \"%s\" έχει ήδη ένα διαχειριστή παραθύρων· προσπαθήστε να " | ||||
| "Η προβολή «%s» έχει ήδη ένα διαχειριστή παραθύρων· προσπαθήστε να " | ||||
| "χρησιμοποιήσετε την επιλογή --replace για να αντικαταστήσετε τον τρέχων " | ||||
| "διαχειριστή παραθύρων." | ||||
|  | ||||
| #: src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Η οθόνη %d στην προβολή '%s' δεν είναι έγκυρη\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "Η οθόνη %d στην προβολή «%s» δεν είναι έγκυρη\n" | ||||
|  | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| @@ -631,21 +640,20 @@ msgstr "" | ||||
| "Το Mutter έχει μεταγλωττιστεί χωρίς υποστήριξη για λειτουργία εμφάνισης " | ||||
| "λεπτομερειών\n" | ||||
|  | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Λειτουργία διακόπτη: Λειτουργία %d" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Αυτά τα παράθυρα δεν υποστηρίζουν "αποθήκευση της τρέχουσας " | ||||
| "εγκατάστασης" και θα πρέπει να επανεκκινηθούν χειροκίνητα στην επόμενη " | ||||
| "είσοδο σας." | ||||
| "Αυτά τα παράθυρα δεν υποστηρίζουν «αποθήκευση της τρέχουσας εγκατάστασης» " | ||||
| "και θα πρέπει να επανεκκινηθούν χειροκίνητα στην επόμενη είσοδο σας." | ||||
|  | ||||
| #: src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (σε %s)" | ||||
|   | ||||
							
								
								
									
										437
									
								
								po/es.po
									
									
									
									
									
								
							
							
						
						
									
										437
									
								
								po/es.po
									
									
									
									
									
								
							| @@ -7,17 +7,17 @@ | ||||
| # Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002,2003. | ||||
| # Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006. | ||||
| # Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011. | ||||
| # Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016. | ||||
| # Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2017. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter.master\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-07-24 19:39+0000\n" | ||||
| "PO-Revision-Date: 2016-07-26 13:00+0200\n" | ||||
| "POT-Creation-Date: 2017-08-02 10:05+0000\n" | ||||
| "PO-Revision-Date: 2017-08-03 09:59+0200\n" | ||||
| "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" | ||||
| "Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n" | ||||
| "Language-Team: es <gnome-es-list@gnome.org>\n" | ||||
| "Language: es\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| @@ -25,261 +25,261 @@ msgstr "" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
| "X-Generator: Gtranslator 2.91.6\n" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:1 | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| msgstr "Navegación" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:2 | ||||
| #: data/50-mutter-navigation.xml:9 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Mover la ventana al área de trabajo 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:3 | ||||
| #: data/50-mutter-navigation.xml:12 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Mover la ventana al área de trabajo 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:4 | ||||
| #: data/50-mutter-navigation.xml:15 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Mover la ventana al área de trabajo 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:5 | ||||
| #: data/50-mutter-navigation.xml:18 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Mover la ventana al área de trabajo 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:6 | ||||
| #: data/50-mutter-navigation.xml:21 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "Mover la ventana a la última área de trabajo" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:7 | ||||
| #: data/50-mutter-navigation.xml:24 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Mover la ventana un área de trabajo a la izquierda" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:8 | ||||
| #: data/50-mutter-navigation.xml:27 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Mover la ventana un área de trabajo a la derecha" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:9 | ||||
| #: data/50-mutter-navigation.xml:30 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Subir la ventana un área de trabajo" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:10 | ||||
| #: data/50-mutter-navigation.xml:33 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Bajar la ventana un área de trabajo" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:11 | ||||
| #: data/50-mutter-navigation.xml:36 | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "Mover la ventana una pantalla a la izquierda" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:12 | ||||
| #: data/50-mutter-navigation.xml:39 | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "Mover la ventana una pantalla a la derecha" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:13 | ||||
| #: data/50-mutter-navigation.xml:42 | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "Subir la ventana una pantalla" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:14 | ||||
| #: data/50-mutter-navigation.xml:45 | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "Bajar la ventana una pantalla" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:15 | ||||
| #: data/50-mutter-navigation.xml:49 | ||||
| msgid "Switch applications" | ||||
| msgstr "Cambiar entre aplicaciones" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:16 | ||||
| #: data/50-mutter-navigation.xml:54 | ||||
| msgid "Switch to previous application" | ||||
| msgstr "Cambiar a la aplicación anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:17 | ||||
| #: data/50-mutter-navigation.xml:58 | ||||
| msgid "Switch windows" | ||||
| msgstr "Cambiar entre ventanas" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:18 | ||||
| #: data/50-mutter-navigation.xml:63 | ||||
| msgid "Switch to previous window" | ||||
| msgstr "Cambiar a la ventana anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:19 | ||||
| #: data/50-mutter-navigation.xml:67 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Cambiar entre ventanas de una aplicación" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:20 | ||||
| #: data/50-mutter-navigation.xml:72 | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "Cambiar a la ventana anterior de una aplicación" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:21 | ||||
| #: data/50-mutter-navigation.xml:76 | ||||
| msgid "Switch system controls" | ||||
| msgstr "Cambiar entre controles del sistema" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:22 | ||||
| #: data/50-mutter-navigation.xml:81 | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "Cambiar al control del sistema anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:23 | ||||
| #: data/50-mutter-navigation.xml:85 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Cambiar entre ventanas directamente" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:24 | ||||
| #: data/50-mutter-navigation.xml:90 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "Cambiar directamente a la ventana anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:25 | ||||
| #: data/50-mutter-navigation.xml:94 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Cambiar entre ventanas de una aplicación directamente" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:26 | ||||
| #: data/50-mutter-navigation.xml:99 | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "Cambiar directamente a la ventana anterior de una aplicación" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:27 | ||||
| #: data/50-mutter-navigation.xml:103 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Cambiar entre controles del sistema directamente" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:28 | ||||
| #: data/50-mutter-navigation.xml:108 | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "Cambiar directamente al control del sistema anterior" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:29 | ||||
| #: data/50-mutter-navigation.xml:111 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Ocultar todas las ventanas normales" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:30 | ||||
| #: data/50-mutter-navigation.xml:114 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Cambiar al área de trabajo 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:31 | ||||
| #: data/50-mutter-navigation.xml:117 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Cambiar al área de trabajo 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:32 | ||||
| #: data/50-mutter-navigation.xml:120 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Cambiar al área de trabajo 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:33 | ||||
| #: data/50-mutter-navigation.xml:123 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Cambiar al área de trabajo 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:34 | ||||
| #: data/50-mutter-navigation.xml:126 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "Cambiar a la útima área de trabajo" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:35 | ||||
| #: data/50-mutter-navigation.xml:129 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Mover al área de trabajo de la izquierda" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:36 | ||||
| #: data/50-mutter-navigation.xml:132 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Mover al área de trabajo de la derecha" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:37 | ||||
| #: data/50-mutter-navigation.xml:135 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Mover al área de trabajo de la arriba" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:38 | ||||
| #: data/50-mutter-navigation.xml:138 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Mover al área de trabajo de abajo" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:1 | ||||
| #: data/50-mutter-system.xml:6 | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:2 | ||||
| #: data/50-mutter-system.xml:8 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Mostrar el elemento «ejecutar comando»" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:3 | ||||
| #: data/50-mutter-system.xml:10 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Mostrar la vista de actividades" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:1 | ||||
| #: data/50-mutter-windows.xml:6 | ||||
| msgid "Windows" | ||||
| msgstr "Ventanas" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:2 | ||||
| #: data/50-mutter-windows.xml:8 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Activar el menú de la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:3 | ||||
| #: data/50-mutter-windows.xml:10 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Cambiar el modo a pantalla completa" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:4 | ||||
| #: data/50-mutter-windows.xml:12 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Cambiar el estado de maximización" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:5 | ||||
| #: data/50-mutter-windows.xml:14 | ||||
| msgid "Maximize window" | ||||
| msgstr "Maximizar la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:6 | ||||
| #: data/50-mutter-windows.xml:16 | ||||
| msgid "Restore window" | ||||
| msgstr "Restaurar la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:7 | ||||
| #: data/50-mutter-windows.xml:18 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Cambiar el estado de enrollado" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:8 | ||||
| #: data/50-mutter-windows.xml:20 | ||||
| msgid "Close window" | ||||
| msgstr "Cerrar la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:9 | ||||
| #: data/50-mutter-windows.xml:22 | ||||
| msgid "Hide window" | ||||
| msgstr "Ocultar la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:10 | ||||
| #: data/50-mutter-windows.xml:24 | ||||
| msgid "Move window" | ||||
| msgstr "Mover la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:11 | ||||
| #: data/50-mutter-windows.xml:26 | ||||
| msgid "Resize window" | ||||
| msgstr "Redimensionar la ventana" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:12 | ||||
| #: data/50-mutter-windows.xml:29 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Conmutar la ventana en todas las áreas de trabajo o sólo en una" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:13 | ||||
| #: data/50-mutter-windows.xml:31 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Elevar la ventana si está cubierta, de lo contrario, bajarla" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:14 | ||||
| #: data/50-mutter-windows.xml:33 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Elevar la ventana sobre las otras ventanas" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:15 | ||||
| #: data/50-mutter-windows.xml:35 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Bajar la ventana por debajo de otras ventanas" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:16 | ||||
| #: data/50-mutter-windows.xml:37 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Maximizar la ventana verticalmente" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:17 | ||||
| #: data/50-mutter-windows.xml:39 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Maximizar la ventana horizontalmente" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:18 | ||||
| #: data/50-mutter-windows.xml:43 | ||||
| msgid "View split on left" | ||||
| msgstr "Ver división a la izquierda" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:19 | ||||
| #: data/50-mutter-windows.xml:47 | ||||
| msgid "View split on right" | ||||
| msgstr "Ver división a la derecha" | ||||
|  | ||||
| #: ../data/mutter.desktop.in.h:1 | ||||
| #: data/mutter.desktop.in:4 | ||||
| msgid "Mutter" | ||||
| msgstr "Mutter" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:7 | ||||
| msgid "Modifier to use for extended window management operations" | ||||
| msgstr "" | ||||
| "Modificador que usar para extender las operaciones de gestión sobre ventanas" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Esta clave iniciará el «revestimiento» («overlay»), que es una combinación " | ||||
| "de vista general de la ventana y el sistema de lanzamiento de aplicaciones. " | ||||
| @@ -287,11 +287,11 @@ msgstr "" | ||||
| "esta combinación de tecla sea la predeterminada o se establezca a una cadena " | ||||
| "vacía." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| msgstr "Adjuntar diálogos modales" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:21 | ||||
| msgid "" | ||||
| "When true, instead of having independent titlebars, modal dialogs appear " | ||||
| "attached to the titlebar of the parent window and are moved together with " | ||||
| @@ -301,13 +301,13 @@ msgstr "" | ||||
| "aparecen diálogos modales adjuntos a la barra de título de la ventana padre " | ||||
| "y se mueven junto con la ventana padre." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:30 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la " | ||||
| "ventana" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:31 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| @@ -318,13 +318,13 @@ msgstr "" | ||||
| "mitad del área disponible. Arrastrar ventanas al borde superior de la " | ||||
| "pantalla las maximiza por completo." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:40 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Las áreas de trabajo se gestionan dinámicamente" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| @@ -332,11 +332,11 @@ msgstr "" | ||||
| "número estático de áreas de trabajo (determinado por la clave «num-" | ||||
| "workspaces» en «org.gnome.desktop.wm.preferences»)." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:50 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "Áreas de trabajo sólo en el primario" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:51 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| @@ -344,11 +344,11 @@ msgstr "" | ||||
| "Determina si el cambio entre áreas de trabajo debería suceder para las " | ||||
| "ventanas en todos los monitores o sólo para ventanas en el monitor primario." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:59 | ||||
| msgid "No tab popup" | ||||
| msgstr "No hay pestaña emergente" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:60 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| @@ -356,39 +356,40 @@ msgstr "" | ||||
| "Determina si el uso de ventanas emergentes y marcos resaltados se debe " | ||||
| "desactivar al cambiar entre ventanas." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:68 | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Retrasar el cambio de foco hasta detener el puntero" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Si está establecido a «true» y el modo del foco es «sloppy» o «mouse» " | ||||
| "entonces el foco no se cambiará inmediatamente al entrar en una ventana, " | ||||
| "pero sí después de dejar quieto el puntero." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:79 | ||||
| msgid "Draggable border width" | ||||
| msgstr "Anchura arrastrable del borde" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "La cantidad total de borde arrastrable. Si los bordes visibles del tema no " | ||||
| "son suficientes, se añadirán bordes invisibles para satisfacer este valor." | ||||
| "La cantidad total de borde que se puede arrastrar. Si los bordes visibles " | ||||
| "del tema no son suficientes, se añadirán bordes invisibles para satisfacer " | ||||
| "este valor." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:89 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
| "Maximizar automáticamente las ventanas que casi tengan el tamaño de la " | ||||
| "pantalla" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:90 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| @@ -396,11 +397,11 @@ msgstr "" | ||||
| "Si está activada, las ventanas nuevas que inicialmente tienen el tamaño de " | ||||
| "la pantalla, se maximizan." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:98 | ||||
| msgid "Place new windows in the center" | ||||
| msgstr "Colocar las ventanas nuevas en el centro" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:99 | ||||
| msgid "" | ||||
| "When true, the new windows will always be put in the center of the active " | ||||
| "screen of the monitor." | ||||
| @@ -408,116 +409,214 @@ msgstr "" | ||||
| "Cuando es cierto, las ventanas nuevas se colocarán siempre en el centro de " | ||||
| "la pantalla activa del monitor." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:21 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:107 | ||||
| msgid "Enable experimental features" | ||||
| msgstr "Activar las características experimentales" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:108 | ||||
| msgid "" | ||||
| "To enable experimental features, add the feature keyword to the list. " | ||||
| "Whether the feature requires restarting the compositor depends on the given " | ||||
| "feature. Any experimental feature is not required to still be available, or " | ||||
| "configurable. Don’t expect adding anything in this setting to be future " | ||||
| "proof. Currently possible keywords: • “monitor-config-manager” — use the new " | ||||
| "monitor configuration system, aimed to replace the old one. This enables a " | ||||
| "higher level configuration API to be used by configuration applications, as " | ||||
| "well as the ability to configure per logical monitor scale. • “scale-monitor-" | ||||
| "framebuffer” — makes mutter default to layout logical monitors in a logical " | ||||
| "pixel coordinate space, while scaling monitor framebuffers instead of window " | ||||
| "content, to manage HiDPI monitors. Does not require a restart. Also enabling " | ||||
| "“monitor-config-manager” is required for this feature to be enabled." | ||||
| msgstr "" | ||||
| "Para activar las características experimentales, añada la palabra clave de " | ||||
| "la característica a la lista. Depende de la característica que se deba " | ||||
| "reiniciar o no el compositor. Cualquier característica experimental puede no " | ||||
| "estar disponible o ser configurable. No espere que lo que se añada en este " | ||||
| "escenario sirva como prueba futura. Las palabras clave actualmente " | ||||
| "disponibles son: • \"monitor-config-manager\" - utiliza el nuevo sistema de " | ||||
| "configuración del monitor, destinado a sustituir el antiguo. Esto permite " | ||||
| "que las aplicaciones de configuración usen una API de configuración de nivel " | ||||
| "superior, así como la capacidad de configurar el escalado de monitores " | ||||
| "lógicos. • \"scale-monitor-framebuffer\" - convierte a mutter en ña manera " | ||||
| "predeterminada de disponer monitores lógicos en un espacio lógico de " | ||||
| "coordenadas de píxeles, al escalar framebuffers de monitores framebuffers en " | ||||
| "lugar del contenido de ventana, para administrar monitores HiDPI. No " | ||||
| "requiere un reinicio. También es necesario activar \"monitor-config-manager" | ||||
| "\" para activar esta función." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:151 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Seleccionar ventana de la pestaña emergente" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:22 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:156 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Cancelar pestaña emergente" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:161 | ||||
| msgid "Switch monitor configurations" | ||||
| msgstr "Cambiar la configuración del monitor" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:166 | ||||
| msgid "Rotates the built-in monitor configuration" | ||||
| msgstr "Rota la configuración del monitor empotrado" | ||||
|  | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:6 | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "Cambiar al VT 1" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:10 | ||||
| msgid "Switch to VT 2" | ||||
| msgstr "Cambiar al VT 2" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:14 | ||||
| msgid "Switch to VT 3" | ||||
| msgstr "Cambiar al VT 3" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:18 | ||||
| msgid "Switch to VT 4" | ||||
| msgstr "Cambiar al VT 4" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:22 | ||||
| msgid "Switch to VT 5" | ||||
| msgstr "Cambiar al VT 5" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:26 | ||||
| msgid "Switch to VT 6" | ||||
| msgstr "Cambiar al VT 6" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:30 | ||||
| msgid "Switch to VT 7" | ||||
| msgstr "Cambiar al VT 7" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:34 | ||||
| msgid "Switch to VT 8" | ||||
| msgstr "Cambiar al VT 8" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:38 | ||||
| msgid "Switch to VT 9" | ||||
| msgstr "Cambiar al VT 9" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:42 | ||||
| msgid "Switch to VT 10" | ||||
| msgstr "Cambiar al VT 10" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:46 | ||||
| msgid "Switch to VT 11" | ||||
| msgstr "Cambiar al VT 11" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:50 | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Cambiar al VT 12" | ||||
|  | ||||
| #: ../src/backends/meta-input-settings.c:1605 | ||||
| #| msgid "Switch system controls" | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:54 | ||||
| msgid "Re-enable shortcuts" | ||||
| msgstr "Volver a activar los atajos" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2118 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Cambiar modo (grupo %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2141 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Cambiar monitor" | ||||
|  | ||||
| #: ../src/backends/meta-input-settings.c:1607 | ||||
| #: src/backends/meta-input-settings.c:2143 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Mostrar la ayuda en pantalla" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:515 | ||||
| #: src/backends/meta-monitor-manager.c:927 | ||||
| msgid "Built-in display" | ||||
| msgstr "Pantalla integrada" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:538 | ||||
| #: src/backends/meta-monitor-manager.c:950 | ||||
| msgid "Unknown" | ||||
| msgstr "Desconocida" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:540 | ||||
| #: src/backends/meta-monitor-manager.c:952 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Pantalla desconocida" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: ../src/backends/meta-monitor-manager.c:548 | ||||
| #: src/backends/meta-monitor-manager.c:960 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: ../src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:476 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "Ya existe un gestor de composición ejecutándose en la monitor %i, pantalla " | ||||
| "«%s»." | ||||
|  | ||||
| #: ../src/core/bell.c:194 | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "Evento de campana" | ||||
|  | ||||
| #: ../src/core/delete.c:127 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Desactivar conexión al gestor de sesión" | ||||
|  | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Reemplazar el gestor de ventanas en ejecución" | ||||
|  | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Especificar el ID se gestión de sesión" | ||||
|  | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "Pantalla X que usar" | ||||
|  | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Inicializar sesión desde el archivo de salvaguarda" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Hacer que las llamadas a las X sean síncronas" | ||||
|  | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Ejecutar como compositor Wayland" | ||||
|  | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Ejecutar como compositor anidado" | ||||
|  | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Ejecutar como servidor completo, en lugar de anidado" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/meta-close-dialog-default.c:147 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "«%s» no está respondiendo." | ||||
|  | ||||
| #: ../src/core/delete.c:129 | ||||
| #: src/core/meta-close-dialog-default.c:149 | ||||
| msgid "Application is not responding." | ||||
| msgstr "La aplicación no está respondiendo." | ||||
|  | ||||
| #: ../src/core/delete.c:134 | ||||
| #: src/core/meta-close-dialog-default.c:154 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -525,115 +624,75 @@ msgstr "" | ||||
| "Puede elegir esperar un rato para ver si continua o forzar la aplicación " | ||||
| "para cerrarla completamente." | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Esperar" | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Forzar la salida" | ||||
|  | ||||
| #: ../src/core/display.c:590 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n" | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Wait" | ||||
| msgstr "_Esperar" | ||||
|  | ||||
| #: ../src/core/main.c:182 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Desactivar conexión al gestor de sesión" | ||||
|  | ||||
| #: ../src/core/main.c:188 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Reemplazar el gestor de ventanas en ejecución" | ||||
|  | ||||
| #: ../src/core/main.c:194 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Especificar el ID se gestión de sesión" | ||||
|  | ||||
| #: ../src/core/main.c:199 | ||||
| msgid "X Display to use" | ||||
| msgstr "Pantalla X que usar" | ||||
|  | ||||
| #: ../src/core/main.c:205 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Inicializar sesión desde el archivo de salvaguarda" | ||||
|  | ||||
| #: ../src/core/main.c:211 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Hacer que las llamadas a las X sean síncronas" | ||||
|  | ||||
| #: ../src/core/main.c:218 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Ejecutar como compositor Wayland" | ||||
|  | ||||
| #: ../src/core/main.c:224 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Ejecutar como compositor anidado" | ||||
|  | ||||
| #: ../src/core/main.c:232 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Ejecutar como servidor completo, en lugar de anidado" | ||||
|  | ||||
| #: ../src/core/mutter.c:39 | ||||
| #: src/core/mutter.c:39 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
| "muttery %s\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., y otros\n" | ||||
| "Este programa es software libre; vea el código fuente para obtener las\n" | ||||
| "condiciones de copia. NO se proporciona ninguna garantía; ni de\n" | ||||
| "MERCANTILIDAD O DE IDONEIDAD PARA UN PROPÓSITO PARTICULAR.\n" | ||||
| "Este programa es software libre; vea el código fuente para obtener las " | ||||
| "condiciones de copia.\n" | ||||
| "NO se proporciona ninguna garantía; ni de MERCANTILIDAD O DE IDONEIDAD PARA " | ||||
| "UN PROPÓSITO PARTICULAR.\n" | ||||
|  | ||||
| #: ../src/core/mutter.c:53 | ||||
| #: src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| msgstr "Imprimir versión" | ||||
|  | ||||
| #: ../src/core/mutter.c:59 | ||||
| #: src/core/mutter.c:59 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Complemento de mutter que usar" | ||||
|  | ||||
| #: ../src/core/prefs.c:1997 | ||||
| #: src/core/prefs.c:1997 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Área de trabajo %d" | ||||
|  | ||||
| #: ../src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--" | ||||
| "replace» para reemplazar el gestor de ventanas activo." | ||||
|  | ||||
| #: ../src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "La ventana %d en la pantalla «%s» no es válida\n" | ||||
|  | ||||
| #: ../src/core/util.c:120 | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter fue compilado sin soporte para modo prolijo\n" | ||||
|  | ||||
| #: ../src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Cambiar modo: modo %d" | ||||
|  | ||||
| #: ../src/x11/session.c:1815 | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Estas ventanas no soportan «guardar la configuración actual» y tendrán que " | ||||
| "reiniciarse manualmente la próxima vez que inicie una sesión." | ||||
|  | ||||
| #: ../src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (on %s)" | ||||
|   | ||||
							
								
								
									
										175
									
								
								po/eu.po
									
									
									
									
									
								
							
							
						
						
									
										175
									
								
								po/eu.po
									
									
									
									
									
								
							| @@ -2,24 +2,23 @@ | ||||
| # This file is distributed under the same license as the PACKAGE package. | ||||
| # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. | ||||
| # | ||||
| # | ||||
| # Hizkuntza Politikarako Sailburuordetza <hizpol@ej-gv.es>, 2004. | ||||
| # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. | ||||
| # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2012, 2013, 2014, 2015, 2016. | ||||
| # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2012, 2013, 2014, 2015, 2016, 2017. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter master\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter" | ||||
| "&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-09-07 09:27+0000\n" | ||||
| "PO-Revision-Date: 2016-09-18 19:02+0100\n" | ||||
| "Last-Translator: dooteo <dooteo@zundan.com>\n" | ||||
| "Language-Team: Basque <librezale@librezale.org>\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2017-02-16 01:44+0000\n" | ||||
| "PO-Revision-Date: 2017-02-16 22:07+0100\n" | ||||
| "Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n" | ||||
| "Language-Team: Basque <librezale@librezale.eus>\n" | ||||
| "Language: eu\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Lokalize 2.0\n" | ||||
| "X-Generator: Lokalize 1.5\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| @@ -271,16 +270,21 @@ msgid "Modifier to use for extended window management operations" | ||||
| msgstr "Aldatzailea leihoak kudeatzeko eragiketa hedatuetan erabiltzeko" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| #| msgid "" | ||||
| #| "This key will initiate the \"overlay\", which is a combination window " | ||||
| #| "overview and application launching system. The default is intended to be " | ||||
| #| "the \"Windows key\" on PC hardware. It's expected that this binding " | ||||
| #| "either the default or set to the empty string." | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Gako honek \"overlay\" (gainjarria) hasieratuko du: hau leihoaren ikuspegi " | ||||
| "Gako honek “overlay“ (gainjarria) hasieratuko du: hau leihoaren ikuspegi " | ||||
| "orokorraren eta aplikazioa abiarazteko sistemaren arteko konbinazioa da. " | ||||
| "Lehenetsi gisa, PC ordenagailuko \"Windows tekla\" da. Tekla konbinazio hau " | ||||
| "lehenetsia izatea edo kate hutz gisa ezartzea da." | ||||
| "Lehenetsi gisa, PC ordenagailuko “Windows tekla“ da. Tekla konbinazio hau " | ||||
| "lehenetsia izatea edo kate huts gisa ezartzea da." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| @@ -316,13 +320,17 @@ msgid "Workspaces are managed dynamically" | ||||
| msgstr "Laneko areak dinamikoki kudeatzen dira" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| #| msgid "" | ||||
| #| "Determines whether workspaces are managed dynamically or whether there's " | ||||
| #| "a static number of workspaces (determined by the num-workspaces key in " | ||||
| #| "org.gnome.desktop.wm.preferences)." | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| "Laneko areak dinamikoki kudeatzen diren edo laneko areak kopuru estatikoa " | ||||
| "('org.gnome.desktop.wm.preferences'-eko 'num-workspaces' gakoak zehazten du) " | ||||
| "(“org.gnome.desktop.wm.preferences“-eko “num-workspaces“ gakoak zehazten du) " | ||||
| "daukan zehazten du ." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:50 | ||||
| @@ -354,12 +362,16 @@ msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Atzeratu fokuaren aldaketa erakuslea mugitzeari utzi arte" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| #| msgid "" | ||||
| #| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| #| "the focus will not be changed immediately when entering a window, but " | ||||
| #| "only after the pointer stops moving." | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "TRUE (egia) gisa ezartzen bada, eta fokuaren modua 'sloppy' edo 'mouse' " | ||||
| "TRUE (egia) gisa ezartzen bada, eta fokuaren modua “sloppy“ edo “mouse“ " | ||||
| "bada, fokua ez da berehala aldatuko leiho batean sartzean baizik eta soilik " | ||||
| "erakuslea gelditzean." | ||||
|  | ||||
| @@ -368,8 +380,11 @@ msgid "Draggable border width" | ||||
| msgstr "Ertz arrastragarriaren zabalera" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| #| msgid "" | ||||
| #| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| #| "not enough, invisible borders will be added to meet this value." | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "Ertz arrastragarri guztien kopurua. Gaiaren ertz ikusgaiak ez badira " | ||||
| @@ -455,50 +470,64 @@ msgstr "Aldatu 11. TBra" | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Aldatu 12. TBra" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1707 | ||||
| #| msgid "Switch system controls" | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1759 | ||||
| #, c-format | ||||
| #| msgid "Mode Switch: Mode %d" | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Modu aldaketa (%d taldea)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1781 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Aldatu monitorea" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1709 | ||||
| #: src/backends/meta-input-settings.c:1783 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Erakutsi pantailako laguntza" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:514 | ||||
| #: src/backends/meta-monitor-manager.c:675 | ||||
| msgid "Built-in display" | ||||
| msgstr "Bertako pantaila" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:537 | ||||
| #: src/backends/meta-monitor-manager.c:698 | ||||
| msgid "Unknown" | ||||
| msgstr "Ezezaguna" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:539 | ||||
| #: src/backends/meta-monitor-manager.c:700 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Pantaila ezezaguna" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: src/backends/meta-monitor-manager.c:547 | ||||
| #: src/backends/meta-monitor-manager.c:708 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:471 | ||||
| #, 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" | ||||
| "\"." | ||||
| "Another compositing manager is already running on screen %i on display “%s”." | ||||
| msgstr "" | ||||
| "Dagoeneko beste konposatze-kudeatzailea ari da exekutatzen \"%2$s\" " | ||||
| "pantailako %1$i. monitorean \"." | ||||
| "Dagoeneko beste konposatze-kudeatzailea ari da exekutatzen “%2$s“ " | ||||
| "pantailako %1$i. monitorean." | ||||
|  | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "Soinuaren gertaera" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/delete.c:127 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| @@ -516,66 +545,73 @@ msgstr "" | ||||
| "Aukeratu piskatean zai egotea aplikazioak jarraitzeko edo derrigortu " | ||||
| "aplikazioa erabat ixtea." | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Itxaron" | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Behartu ixtera" | ||||
|  | ||||
| #: src/core/display.c:590 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Huts egin du X Window sistemaren '%s' pantaila irekitzean\n" | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Itxaron" | ||||
|  | ||||
| #: src/core/main.c:182 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| #| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Huts egin du X Window sistemaren “%s“ pantaila irekitzean\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Desgaitu saio-kudeatzailearen konexioa" | ||||
|  | ||||
| #: src/core/main.c:188 | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Ordeztu exekutatzen dagoen leiho-kudeatzailea" | ||||
|  | ||||
| #: src/core/main.c:194 | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Zehaztu saio-kudeatzailearen IDa" | ||||
|  | ||||
| #: src/core/main.c:199 | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "X pantaila erabiltzeko" | ||||
|  | ||||
| #: src/core/main.c:205 | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Hasieratu saioa babes-fitxategitik" | ||||
|  | ||||
| #: src/core/main.c:211 | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Egin X deiak sinkronoak izatea" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Exekutatu wayland konposatzaile gisa" | ||||
|  | ||||
| #: src/core/main.c:224 | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Exekutatu habiaratutako konposatzaile gisa" | ||||
|  | ||||
| #: src/core/main.c:232 | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Exekutatu pantaila-zerbitzari oso bezala, habiaratuta baino" | ||||
|  | ||||
| #: src/core/mutter.c:39 | ||||
| #, c-format | ||||
| #| msgid "" | ||||
| #| "mutter %s\n" | ||||
| #| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| #| "This is free software; see the source for copying conditions.\n" | ||||
| #| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| #| "PARTICULAR PURPOSE.\n" | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
| "mutter %s\n" | ||||
| "Copyright-a (C) 2001-%d Havoc Pennington, Red Hat, Inc., eta beste batzuk\n" | ||||
| "Copyright-a © 2001-%d Havoc Pennington, Red Hat, Inc., eta beste batzuk\n" | ||||
| "Hau software librea da; ikus kopiatzeko baldintzak iturburu-kodean.\n" | ||||
| "EZ du bermerik; ezta MERKATURATZEKO edo XEDE JAKIN BATERAKO EGOKITASUNAREN " | ||||
| "BERMERIK ERE.\n" | ||||
| @@ -593,38 +629,45 @@ msgstr "Mutter-en osagaia erabiltzeko" | ||||
| msgid "Workspace %d" | ||||
| msgstr "%d. laneko area" | ||||
|  | ||||
| #: src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| #| msgid "" | ||||
| #| "Display \"%s\" already has a window manager; try using the --replace " | ||||
| #| "option to replace the current window manager." | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "'%s' pantailak badu leiho-kudeatzailea; erabili --replace aukera uneko leiho-" | ||||
| "“%s“ pantailak badu leiho-kudeatzailea; erabili --replace aukera uneko leiho-" | ||||
| "kudeatzailea ordezteko." | ||||
|  | ||||
| #: src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "'%2$s' bistaratzeko %1$d pantaila ez da baliozkoa\n" | ||||
| #| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "“%2$s“ bistaratzeko %1$d pantaila ez da baliozkoa\n" | ||||
|  | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter modu xehatuaren euskarririk gabe konpilatu da\n" | ||||
|  | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Modu aldaketa: %d modua" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| #| 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." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Leiho hauek ez dute onartzen "gorde uneko konfigurazioa" eta eskuz " | ||||
| "Leiho hauek ez dute onartzen “gorde uneko konfigurazioa“; eta eskuz " | ||||
| "berrabiarazi beharko dituzu hurrengo saioa hasten duzunean." | ||||
|  | ||||
| #: src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (%s)" | ||||
|   | ||||
							
								
								
									
										224
									
								
								po/fr.po
									
									
									
									
									
								
							
							
						
						
									
										224
									
								
								po/fr.po
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| # French translation of mutter. | ||||
| # Copyright (C) 2002-2016 Free Software Foundation, Inc. | ||||
| # Copyright (C) 2002-2017 Free Software Foundation, Inc. | ||||
| # This file is distributed under the same license as the metacity package. | ||||
| # | ||||
| # Christophe Fergeau <teuf@users.sourceforge.net>, 2002. | ||||
| @@ -11,23 +11,22 @@ | ||||
| # Cyprien Le Pannérer <cyplp@free.fr>, 2006. | ||||
| # Robert-André Mauchin <zebob.m@gmail.com>, 2007. | ||||
| # Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007. | ||||
| # Claude Paroz <claude@2xlibre.net>, 2008-2016. | ||||
| # Claude Paroz <claude@2xlibre.net>, 2008-2017. | ||||
| # Bruno Brouard <annoa.b@gmail.com>, 2011-12. | ||||
| # Charles Monzat <superboa@hotmail.fr>, 2016. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter master\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-09-12 23:59+0000\n" | ||||
| "PO-Revision-Date: 2016-09-13 12:13+0200\n" | ||||
| "Last-Translator: Charles Monzat <superboa@hotmail.fr>\n" | ||||
| "POT-Creation-Date: 2017-08-13 15:47+0000\n" | ||||
| "PO-Revision-Date: 2017-08-15 09:16+0200\n" | ||||
| "Last-Translator: Claude Paroz <claude@2xlibre.net>\n" | ||||
| "Language-Team: GNOME French Team <gnomefr@traduc.org>\n" | ||||
| "Language: fr\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Poedit 1.8.9\n" | ||||
|  | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| @@ -280,10 +279,10 @@ msgstr "Touche à utiliser pour les opérations étendues de gestion des fenêtr | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Cette touche initie l'« overlay », une combinaison d'aperçu des fenêtres et " | ||||
| "d'un système de lancement d'applications. La touche par défaut sur le " | ||||
| @@ -325,7 +324,7 @@ msgstr "Les espaces de travail sont gérés de manière dynamique" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| @@ -364,9 +363,9 @@ msgstr "Attend l'arrêt du pointeur avant le changement de focus" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Si défini à true et que le mode de focus est soit « sloppy » ou « souris », " | ||||
| "alors le focus ne sera pas changé immédiatement en passant sur une fenêtre, " | ||||
| @@ -378,7 +377,7 @@ msgstr "Largeur de bordure ajustable" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "La taille totale des bordures que l'on peut déplacer. Si les bordures " | ||||
| @@ -411,16 +410,59 @@ msgstr "" | ||||
| "Si true (vrai), les nouvelles fenêtres seront toujours placées au centre de " | ||||
| "l'écran actif du moniteur." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:120 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:107 | ||||
| msgid "Enable experimental features" | ||||
| msgstr "Activer les fonctionnalités expérimentales" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:108 | ||||
| msgid "" | ||||
| "To enable experimental features, add the feature keyword to the list. " | ||||
| "Whether the feature requires restarting the compositor depends on the given " | ||||
| "feature. Any experimental feature is not required to still be available, or " | ||||
| "configurable. Don’t expect adding anything in this setting to be future " | ||||
| "proof. Currently possible keywords: • “monitor-config-manager” — use the new " | ||||
| "monitor configuration system, aimed to replace the old one. This enables a " | ||||
| "higher level configuration API to be used by configuration applications, as " | ||||
| "well as the ability to configure per logical monitor scale. • “scale-monitor-" | ||||
| "framebuffer” — makes mutter default to layout logical monitors in a logical " | ||||
| "pixel coordinate space, while scaling monitor framebuffers instead of window " | ||||
| "content, to manage HiDPI monitors. Does not require a restart. Also enabling " | ||||
| "“monitor-config-manager” is required for this feature to be enabled." | ||||
| msgstr "" | ||||
| "Pour activer les fonctionnalités expérimentales, ajoutez le mot-clé de la " | ||||
| "fonctionnalité dans la liste. Selon la fonctionnalité, il peut être nécessaire " | ||||
| "de redémarrer le compositeur. Chaque fonctionnalité expérimentale peut " | ||||
| "disparaître ou ne plus être configurable. N'attendez pas à ce que le contenu de " | ||||
| "ce réglage soit stable dans le temps. Les mots-clés actuellement possibles " | ||||
| "sont : • « monitor-config-manager » — utiliser le nouveau système de " | ||||
| "configuration de moniteur qui remplacera l'ancien à terme. Cela active une " | ||||
| "API de configuration de plus haut niveau exploitable par les applications de " | ||||
| "configuration. Il permet aussi de configurer par échelle de moniteur logique. " | ||||
| "• « scale-monitor-framebuffer » — demande à mutter d'utiliser par défaut une " | ||||
| "disposition par moniteur logique dans un espace de coordonnées de pixels logique, " | ||||
| "tout en mettant à l'échelle les « framebuffers » de moniteur au lieu des contenus " | ||||
| "de fenêtre pour pouvoir gérer les moniteurs à haute densité. Cela ne nécessite " | ||||
| "pas de redémarrage. L'activation de « monitor-config-manager » est requis pour " | ||||
| "que cette fonctionnalité soit activée." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:151 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "" | ||||
| "Sélectionner la fenêtre dans la vue qui apparaît suite à un appui sur la " | ||||
| "touche tab" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:125 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:156 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Fermer la vue qui apparaît suite à un appui sur la touche tab" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:161 | ||||
| msgid "Switch monitor configurations" | ||||
| msgstr "Changer de configuration de moniteur" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:166 | ||||
| msgid "Rotates the built-in monitor configuration" | ||||
| msgstr "Passe à la prochaine configuration intégrée de moniteur" | ||||
|  | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:6 | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "Passer à l'émulateur de terminal 1" | ||||
| @@ -469,44 +511,55 @@ msgstr "Passer à l'émulateur de terminal 11" | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Passer à l'émulateur de terminal 12" | ||||
|  | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:54 | ||||
| msgid "Re-enable shortcuts" | ||||
| msgstr "Réactiver les raccourcis" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2118 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Changement de mode (groupe %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:1845 | ||||
| #: src/backends/meta-input-settings.c:2141 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Changer de moniteur" | ||||
|  | ||||
| #: src/backends/meta-input-settings.c:1847 | ||||
| #: src/backends/meta-input-settings.c:2143 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Afficher l'aide à l'écran" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:514 | ||||
| #: src/backends/meta-monitor-manager.c:927 | ||||
| msgid "Built-in display" | ||||
| msgstr "Affichage intégré" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:537 | ||||
| #: src/backends/meta-monitor-manager.c:950 | ||||
| msgid "Unknown" | ||||
| msgstr "Inconnu" | ||||
|  | ||||
| #: src/backends/meta-monitor-manager.c:539 | ||||
| #: src/backends/meta-monitor-manager.c:952 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Affichage inconnu" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: src/backends/meta-monitor-manager.c:547 | ||||
| #: src/backends/meta-monitor-manager.c:960 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:476 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "Un autre gestionnaire de composition est déjà lancé sur l'écran %i de " | ||||
| "l'affichage « %s »." | ||||
| @@ -515,16 +568,58 @@ msgstr "" | ||||
| msgid "Bell event" | ||||
| msgstr "Évènement sonore" | ||||
|  | ||||
| #: src/core/delete.c:127 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Impossible d'ouvrir l'affichage « %s » du système X Window\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Désactiver la connexion au gestionnaire de sessions" | ||||
|  | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement" | ||||
|  | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Indiquer l'ID de gestion de sessions" | ||||
|  | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "Affichage X à utiliser" | ||||
|  | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Initialiser la session depuis le fichier de sauvegarde" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Rendre synchrones les appels à X" | ||||
|  | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Lancer comme un compositeur wayland" | ||||
|  | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Lancer comme un compositeur imbriqué" | ||||
|  | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/meta-close-dialog-default.c:147 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "« %s » ne répond pas." | ||||
|  | ||||
| #: src/core/delete.c:129 | ||||
| #: src/core/meta-close-dialog-default.c:149 | ||||
| msgid "Application is not responding." | ||||
| msgstr "L'application ne répond pas." | ||||
|  | ||||
| #: src/core/delete.c:134 | ||||
| #: src/core/meta-close-dialog-default.c:154 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -532,60 +627,19 @@ msgstr "" | ||||
| "Vous pouvez patienter un instant pour continuer ou forcer l'application à " | ||||
| "quitter définitivement." | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Attendre" | ||||
|  | ||||
| #: src/core/delete.c:141 | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Forcer à quitter" | ||||
|  | ||||
| #: src/core/display.c:590 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Impossible d'ouvrir l'affichage « %s » du système X Window\n" | ||||
|  | ||||
| #: src/core/main.c:182 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Désactiver la connexion au gestionnaire de sessions" | ||||
|  | ||||
| #: src/core/main.c:188 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement" | ||||
|  | ||||
| #: src/core/main.c:194 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Indiquer l'ID de gestion de sessions" | ||||
|  | ||||
| #: src/core/main.c:199 | ||||
| msgid "X Display to use" | ||||
| msgstr "Affichage X à utiliser" | ||||
|  | ||||
| #: src/core/main.c:205 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Initialiser la session depuis le fichier de sauvegarde" | ||||
|  | ||||
| #: src/core/main.c:211 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Rendre synchrones les appels à X" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Lancer comme un compositeur wayland" | ||||
|  | ||||
| #: src/core/main.c:224 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Lancer comme un compositeur imbriqué" | ||||
|  | ||||
| #: src/core/main.c:232 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué" | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Wait" | ||||
| msgstr "_Attendre" | ||||
|  | ||||
| #: src/core/mutter.c:39 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| @@ -610,39 +664,39 @@ msgstr "Greffon de Mutter à utiliser" | ||||
| msgid "Workspace %d" | ||||
| msgstr "Espace de travail %d" | ||||
|  | ||||
| #: src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "L'affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d'utiliser " | ||||
| "l'option --replace pour remplacer le gestionnaire de fenêtres actuel." | ||||
|  | ||||
| #: src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "L'écran %d sur l'affichage « %s » n'est pas valide\n" | ||||
|  | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n" | ||||
|  | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Changement de mode : mode %d" | ||||
|  | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Ces fenêtres ne prennent pas en charge « l'enregistrement de la " | ||||
| "configuration actuelle » et devront être redémarrées manuellement à la " | ||||
| "prochaine connexion." | ||||
|  | ||||
| #: src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (sur %s)" | ||||
|   | ||||
							
								
								
									
										445
									
								
								po/fur.po
									
									
									
									
									
								
							
							
						
						
									
										445
									
								
								po/fur.po
									
									
									
									
									
								
							| @@ -6,283 +6,283 @@ | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter master\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2016-08-07 10:39+0000\n" | ||||
| "PO-Revision-Date: 2016-08-07 18:18+0200\n" | ||||
| "POT-Creation-Date: 2017-07-22 09:45+0000\n" | ||||
| "PO-Revision-Date: 2017-07-22 22:53+0200\n" | ||||
| "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" | ||||
| "Language-Team: Friulian <fur@li.org>\n" | ||||
| "Language: fur\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Poedit 1.8.8\n" | ||||
| "X-Generator: Poedit 2.0.2\n" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:1 | ||||
| #: data/50-mutter-navigation.xml:6 | ||||
| msgid "Navigation" | ||||
| msgstr "Navigazion" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:2 | ||||
| #: data/50-mutter-navigation.xml:9 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Sposte barcon tal spazi di lavôr 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:3 | ||||
| #: data/50-mutter-navigation.xml:12 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Sposte barcon tal spazi di lavôr 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:4 | ||||
| #: data/50-mutter-navigation.xml:15 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Sposte barcon tal spazi di lavôr 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:5 | ||||
| #: data/50-mutter-navigation.xml:18 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Sposte barcon tal spazi di lavôr 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:6 | ||||
| #: data/50-mutter-navigation.xml:21 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "Sposte barcon tal ultin spazi di lavôr" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:7 | ||||
| #: data/50-mutter-navigation.xml:24 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Sposte barcon tal spazi di lavôr a çampe" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:8 | ||||
| #: data/50-mutter-navigation.xml:27 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Sposte barcon tal spazi di lavôr a drete" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:9 | ||||
| #: data/50-mutter-navigation.xml:30 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Sposte barcon tal spazi di lavôr parsore" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:10 | ||||
| #: data/50-mutter-navigation.xml:33 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Sposte barcon tal spazi di lavôr sot" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:11 | ||||
| #: data/50-mutter-navigation.xml:36 | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "Sposte barcon tal visôr a çampe" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:12 | ||||
| #: data/50-mutter-navigation.xml:39 | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "Sposte barcon tal visôr a drete" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:13 | ||||
| #: data/50-mutter-navigation.xml:42 | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "Sposte barcon tal visôr parsore" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:14 | ||||
| #: data/50-mutter-navigation.xml:45 | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "Sposte barcon tal visôr sot" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:15 | ||||
| #: data/50-mutter-navigation.xml:49 | ||||
| msgid "Switch applications" | ||||
| msgstr "Passâ di une aplicazion in chê altre" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:16 | ||||
| #: data/50-mutter-navigation.xml:54 | ||||
| msgid "Switch to previous application" | ||||
| msgstr "Passe ae aplicazion prime" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:17 | ||||
| #: data/50-mutter-navigation.xml:58 | ||||
| msgid "Switch windows" | ||||
| msgstr "Passâ di un barcon in chel altri" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:18 | ||||
| #: data/50-mutter-navigation.xml:63 | ||||
| msgid "Switch to previous window" | ||||
| msgstr "Passe al barcon prime" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:19 | ||||
| #: data/50-mutter-navigation.xml:67 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Passâ di un barcon in chel altri di une aplicazion" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:20 | ||||
| #: data/50-mutter-navigation.xml:72 | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "Passe al barcon prime di une aplicazion" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:21 | ||||
| #: data/50-mutter-navigation.xml:76 | ||||
| msgid "Switch system controls" | ||||
| msgstr "Passâ di un control di sisteme in chel altri" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:22 | ||||
| #: data/50-mutter-navigation.xml:81 | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "Passe al control di sisteme precedent" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:23 | ||||
| #: data/50-mutter-navigation.xml:85 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Passe dret ai barcons" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:24 | ||||
| #: data/50-mutter-navigation.xml:90 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "Passe dret al barcon precedent" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:25 | ||||
| #: data/50-mutter-navigation.xml:94 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Passe dret a un barcon di une aplicazion" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:26 | ||||
| #: data/50-mutter-navigation.xml:99 | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "Passe dret al barcon precedent di une aplicazion" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:27 | ||||
| #: data/50-mutter-navigation.xml:103 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Passe dret ai controi dal sisteme" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:28 | ||||
| #: data/50-mutter-navigation.xml:108 | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "Passe dret al control precedent dal sisteme" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:29 | ||||
| #: data/50-mutter-navigation.xml:111 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Plate ducj i barcons normâi" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:30 | ||||
| #: data/50-mutter-navigation.xml:114 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Passe al spazi di lavôr 1" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:31 | ||||
| #: data/50-mutter-navigation.xml:117 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Passe al spazi di lavôr 2" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:32 | ||||
| #: data/50-mutter-navigation.xml:120 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Passe al spazi di lavôr 3" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:33 | ||||
| #: data/50-mutter-navigation.xml:123 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Passe al spazi di lavôr 4" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:34 | ||||
| #: data/50-mutter-navigation.xml:126 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "Passe al ultin spazi di lavôr" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:35 | ||||
| #: data/50-mutter-navigation.xml:129 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Sposte il spazi di lavôr a çampe" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:36 | ||||
| #: data/50-mutter-navigation.xml:132 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Sposte il spazi di lavôr a drete" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:37 | ||||
| #: data/50-mutter-navigation.xml:135 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Sposte il spazi di lavôr parsore" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:38 | ||||
| #: data/50-mutter-navigation.xml:138 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Sposte il spazi di lavôr sot" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:1 | ||||
| #: data/50-mutter-system.xml:6 | ||||
| msgid "System" | ||||
| msgstr "Sisteme" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:2 | ||||
| #: data/50-mutter-system.xml:8 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Mostre la richieste \"eseguìs comant\"" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:3 | ||||
| #: data/50-mutter-system.xml:10 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Mostre la panoramiche ativitâts" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:1 | ||||
| #: data/50-mutter-windows.xml:6 | ||||
| msgid "Windows" | ||||
| msgstr "Barcons" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:2 | ||||
| #: data/50-mutter-windows.xml:8 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Ative il menù dal barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:3 | ||||
| #: data/50-mutter-windows.xml:10 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Ative/Disative modalitât plen visôr" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:4 | ||||
| #: data/50-mutter-windows.xml:12 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Ative/Disative il stât slargjât" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:5 | ||||
| #: data/50-mutter-windows.xml:14 | ||||
| msgid "Maximize window" | ||||
| msgstr "Slargje il barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:6 | ||||
| #: data/50-mutter-windows.xml:16 | ||||
| msgid "Restore window" | ||||
| msgstr "Ripristine barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:7 | ||||
| #: data/50-mutter-windows.xml:18 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Ative/Disative stât inrodolât" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:8 | ||||
| #: data/50-mutter-windows.xml:20 | ||||
| msgid "Close window" | ||||
| msgstr "Siere il barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:9 | ||||
| #: data/50-mutter-windows.xml:22 | ||||
| msgid "Hide window" | ||||
| msgstr "Plate il barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:10 | ||||
| #: data/50-mutter-windows.xml:24 | ||||
| msgid "Move window" | ||||
| msgstr "Sposte il barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:11 | ||||
| #: data/50-mutter-windows.xml:26 | ||||
| msgid "Resize window" | ||||
| msgstr "Ridimensione barcon" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:12 | ||||
| #: data/50-mutter-windows.xml:29 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Ative/Disative barcon su ducj i spazis di lavôr o nome un" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:13 | ||||
| #: data/50-mutter-windows.xml:31 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Tire sù il barcon se al è cuviert, se no sbassilu" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:14 | ||||
| #: data/50-mutter-windows.xml:33 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Met il barcon parsore di chei altris" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:15 | ||||
| #: data/50-mutter-windows.xml:35 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Bute il barcon sot di chei altris" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:16 | ||||
| #: data/50-mutter-windows.xml:37 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Slargje il barcon par verticâl" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:17 | ||||
| #: data/50-mutter-windows.xml:39 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Slargje il barcon par orizontâl" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:18 | ||||
| #: data/50-mutter-windows.xml:43 | ||||
| msgid "View split on left" | ||||
| msgstr "Slargje dividint ae çampe" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:19 | ||||
| #: data/50-mutter-windows.xml:47 | ||||
| msgid "View split on right" | ||||
| msgstr "Slargje dividint ae drete" | ||||
|  | ||||
| #: ../data/mutter.desktop.in.h:1 | ||||
| #: data/mutter.desktop.in:4 | ||||
| msgid "Mutter" | ||||
| msgstr "Mutter" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:7 | ||||
| msgid "Modifier to use for extended window management operations" | ||||
| msgstr "Modificadôr di doprâ pes operazions estesis di gjestion barcons" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:8 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| "This key will initiate the “overlay”, which is a combination window overview " | ||||
| "and application launching system. The default is intended to be the “Windows " | ||||
| "key” on PC hardware. It’s expected that this binding either the default or " | ||||
| "set to the empty string." | ||||
| msgstr "" | ||||
| "Cheste clâf e tache il \"overlay\", che e je une cumbinazion tra la " | ||||
| "Cheste clâf e tache il “overlay”, che e je une cumbinazion tra la " | ||||
| "panoramiche dai barcons e il sisteme par inviâ lis aplicazions. Il valôr " | ||||
| "predefinît al è pensât par jessi il \"tast Windows\" su hardware PC. Si " | ||||
| "spiete che cheste scurte e sedi il valôr predefinît o une stringhe vueide." | ||||
| "predefinît al è pensât par jessi il “tast Windows” su hardware PC. Si spiete " | ||||
| "che cheste scurte e sedi il valôr predefinît o une stringhe vueide." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:20 | ||||
| msgid "Attach modal dialogs" | ||||
| msgstr "Dialics modâi tacâts" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:21 | ||||
| msgid "" | ||||
| "When true, instead of having independent titlebars, modal dialogs appear " | ||||
| "attached to the titlebar of the parent window and are moved together with " | ||||
| @@ -291,12 +291,12 @@ msgstr "" | ||||
| "Se metût a VÊR, invezit di vê sbaris di titul indipendentis, i dialics modâi " | ||||
| "a semein tacâts ae sbare dal titul dal barcon gjenitôr e si spostin cun lui." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:30 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Abilite il piastrelâ tal ôr cuant che si strissine i barcons tal ôr dal visôr" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:31 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| @@ -307,25 +307,25 @@ msgstr "" | ||||
| "cuvierzi metât dal spazi disponibil. Strissinant sul ôr superiôr dal schermi " | ||||
| "al slargje i barcons dal dut." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:40 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "I spazis di vore a son ministrât in maniere dinamiche" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:41 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "Determines whether workspaces are managed dynamically or whether there’s a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| "Determine se i spazis di lavôr a son gjestîts in maniere dinamiche o se il " | ||||
| "lôr numar al è fis (determinât de clâf num-workspaces in org.gnome.desktop." | ||||
| "wm.preferences)." | ||||
| "Al determine se i spazis di lavôr a son gjestîts in maniere dinamiche o se " | ||||
| "il lôr numar al è fis (determinât de clâf num-workspaces in org.gnome." | ||||
| "desktop.wm.preferences)." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:50 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "Spazis di vore nome tal visôr primari" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:51 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| @@ -333,11 +333,11 @@ msgstr "" | ||||
| "Determine se il cambi di spazi di lavôr al à di vignî pai barcons su ducj i " | ||||
| "visôrs o nome pai barcons sul visôr primari." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:59 | ||||
| msgid "No tab popup" | ||||
| msgstr "Nissun tab popup" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:60 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| @@ -345,37 +345,37 @@ msgstr "" | ||||
| "Determine se disabilitâ l'ûs di popup e di curnîs di evidenziadure tal passâ " | ||||
| "di un barcon a chel altri." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:68 | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Tarde il cambiament dal focus fintremai che il puntadôr si ferme" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:69 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| "If set to true, and the focus mode is either “sloppy” or “mouse” then the " | ||||
| "focus will not be changed immediately when entering a window, but only after " | ||||
| "the pointer stops moving." | ||||
| msgstr "" | ||||
| "Se metût a VÊR, e la modalitât di focus e je metude a \"sloppy\" o \"mouse\" " | ||||
| "Se metût a VÊR e la modalitât di focus e je metude a “sloppy” o “mouse” " | ||||
| "alore il focus nol ven spostât subite cuant che si passe suntun barcon, ma " | ||||
| "nome cuant che il puntadôr si ferme." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:79 | ||||
| msgid "Draggable border width" | ||||
| msgstr "Largjece dal ôr che si pues strissinâ" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:80 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "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 "" | ||||
| "Il spessôr totâl pai ôrs che si puedin strissinâ. Se i ôrs visibii dal teme " | ||||
| "no bastin, a vegnin zontâts dai ôrs invisibii par rivâ a chest valôr." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:89 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "Slargje in automatic i barcons grancj su par ju come il visôr" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:90 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| @@ -383,11 +383,11 @@ msgstr "" | ||||
| "Se abilitât, i gnûfs barcons che a an al inizi la stesse dimension dal visôr " | ||||
| "a vegnin slargjâts in automatic." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:98 | ||||
| msgid "Place new windows in the center" | ||||
| msgstr "Place i gnûfs barcons tal mieç" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:99 | ||||
| msgid "" | ||||
| "When true, the new windows will always be put in the center of the active " | ||||
| "screen of the monitor." | ||||
| @@ -395,115 +395,211 @@ msgstr "" | ||||
| "Se metût a VÊR, i gnûfs barcons a vegnaran plaçâts simpri tal mieç dal " | ||||
| "schermi atîf dal visôr." | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:21 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:107 | ||||
| msgid "Enable experimental features" | ||||
| msgstr "Abilite funzionalitâts sperimentâls" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:108 | ||||
| msgid "" | ||||
| "To enable experimental features, add the feature keyword to the list. " | ||||
| "Whether the feature requires restarting the compositor depends on the given " | ||||
| "feature. Any experimental feature is not required to still be available, or " | ||||
| "configurable. Don’t expect adding anything in this setting to be future " | ||||
| "proof. Currently possible keywords: • “monitor-config-manager” — use the new " | ||||
| "monitor configuration system, aimed to replace the old one. This enables a " | ||||
| "higher level configuration API to be used by configuration applications, as " | ||||
| "well as the ability to configure per logical monitor scale. • “scale-monitor-" | ||||
| "framebuffer” — makes mutter default to layout logical monitors in a logical " | ||||
| "pixel coordinate space, while scaling monitor framebuffers instead of window " | ||||
| "content, to manage HiDPI monitors. Does not require a restart. Also enabling " | ||||
| "“monitor-config-manager” is required for this feature to be enabled." | ||||
| msgstr "" | ||||
| "Par abilitâ lis funzionalitâts sperimentâls, zonte la peraule clâf de " | ||||
| "funzionalitât ae liste. Il fat che la funzionalitât e vedi bisugne di tornâ " | ||||
| "a inviâ il compositôr al dipent de funzionalitât dade. Cualsisei " | ||||
| "funzionalitât sperimentâl no je necessarie che e sedi disponibile o " | ||||
| "configurabile. No sta spietâti di zontâ alc in cheste impostazion e pensâ " | ||||
| "che e duredi tal timp. Atualmentri lis peraulis clâf pussibilis a son: • " | ||||
| "“monitor-config-manager” — al dopre il gnûf sisteme di configurazion dal " | ||||
| "visôr, fat par sostituî chel vecjo. Chest al abilite une API di nivel " | ||||
| "superiôr che e pues jessi doprade di aplicazions di configurazion, cussì " | ||||
| "come la capacitât di configurâ par scjale di monitor logjic. • “scale-" | ||||
| "monitor-framebuffer” — al rint come predefinît par mutter la disposizion dai " | ||||
| "visôrs logjics intun spazi logjic di coordenadis dai pixel, intant i " | ||||
| "framebuffer dai visôrs par scjalâ, invezit dal contignût dal barcon, a " | ||||
| "gjestissin i visôrs HiDPI. Nol covente tornâ a inviâ. In plui al è necessari " | ||||
| "abilitâ “monitor-config-manager” par fâ in mût che cheste funzionalitât e " | ||||
| "sedi abilitade." | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:151 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Selezione barcon dal tab popup" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:22 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:156 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Anule tab popup" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 | ||||
| #: data/org.gnome.mutter.gschema.xml.in:161 | ||||
| msgid "Switch monitor configurations" | ||||
| msgstr "Cambie configurazions visôr" | ||||
|  | ||||
| #: data/org.gnome.mutter.gschema.xml.in:166 | ||||
| msgid "Rotates the built-in monitor configuration" | ||||
| msgstr "Al volte la configurazion dal visôr integrât" | ||||
|  | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:6 | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "Passe al VT 1" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:10 | ||||
| msgid "Switch to VT 2" | ||||
| msgstr "Passe al VT 2" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:14 | ||||
| msgid "Switch to VT 3" | ||||
| msgstr "Passe al VT 3" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:18 | ||||
| msgid "Switch to VT 4" | ||||
| msgstr "Passe al VT 4" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:22 | ||||
| msgid "Switch to VT 5" | ||||
| msgstr "Passe al VT 5" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:26 | ||||
| msgid "Switch to VT 6" | ||||
| msgstr "Passe al VT 6" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:30 | ||||
| msgid "Switch to VT 7" | ||||
| msgstr "Passe al VT 7" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:34 | ||||
| msgid "Switch to VT 8" | ||||
| msgstr "Passe al VT 8" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:38 | ||||
| msgid "Switch to VT 9" | ||||
| msgstr "Passe al VT 9" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:42 | ||||
| msgid "Switch to VT 10" | ||||
| msgstr "Passe al VT 10" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:46 | ||||
| msgid "Switch to VT 11" | ||||
| msgstr "Passe al VT 11" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 | ||||
| #: data/org.gnome.mutter.wayland.gschema.xml.in:50 | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "Passe al VT 12" | ||||
|  | ||||
| #: ../src/backends/meta-input-settings.c:1707 | ||||
| #. TRANSLATORS: This string refers to a button that switches between | ||||
| #. * different modes. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2118 | ||||
| #, c-format | ||||
| msgid "Mode Switch (Group %d)" | ||||
| msgstr "Cambie mût (Grup %d)" | ||||
|  | ||||
| #. TRANSLATORS: This string refers to an action, cycles drawing tablets' | ||||
| #. * mapping through the available outputs. | ||||
| #. | ||||
| #: src/backends/meta-input-settings.c:2141 | ||||
| msgid "Switch monitor" | ||||
| msgstr "Cambie visôr" | ||||
|  | ||||
| #: ../src/backends/meta-input-settings.c:1709 | ||||
| #: src/backends/meta-input-settings.c:2143 | ||||
| msgid "Show on-screen help" | ||||
| msgstr "Mostre jutori a schermi" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:515 | ||||
| #: src/backends/meta-monitor-manager.c:925 | ||||
| msgid "Built-in display" | ||||
| msgstr "Display integrât" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:538 | ||||
| #: src/backends/meta-monitor-manager.c:948 | ||||
| msgid "Unknown" | ||||
| msgstr "No cognossût" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:540 | ||||
| #: src/backends/meta-monitor-manager.c:950 | ||||
| msgid "Unknown Display" | ||||
| msgstr "Display no cognossût" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: ../src/backends/meta-monitor-manager.c:548 | ||||
| #: src/backends/meta-monitor-manager.c:958 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: ../src/compositor/compositor.c:463 | ||||
| #: src/compositor/compositor.c:476 | ||||
| #, c-format | ||||
| 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”." | ||||
| msgstr "" | ||||
| "Un altri compositing manager al è za in esecuzion sul schermi %i sul display " | ||||
| "\"%s\"." | ||||
| "“%s”." | ||||
|  | ||||
| #: ../src/core/bell.c:194 | ||||
| #: src/core/bell.c:194 | ||||
| msgid "Bell event" | ||||
| msgstr "Event cjampane" | ||||
|  | ||||
| #: ../src/core/delete.c:127 | ||||
| #: src/core/display.c:608 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display “%s”\n" | ||||
| msgstr "Impussibil vierzi il display “%s” di X Window System\n" | ||||
|  | ||||
| #: src/core/main.c:189 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Disabilite la conession al gjestôr de session" | ||||
|  | ||||
| #: src/core/main.c:195 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Rimplace il window manager in vore" | ||||
|  | ||||
| #: src/core/main.c:201 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Specifiche il ID di gjestion session" | ||||
|  | ||||
| #: src/core/main.c:206 | ||||
| msgid "X Display to use" | ||||
| msgstr "Display X di doprâ" | ||||
|  | ||||
| #: src/core/main.c:212 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Inizialize session da file salvât" | ||||
|  | ||||
| #: src/core/main.c:218 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Fâs lis clamadis X sincronis" | ||||
|  | ||||
| #: src/core/main.c:225 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Eseguìs come compositor wayland" | ||||
|  | ||||
| #: src/core/main.c:231 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Eseguìs come compositor nidiât" | ||||
|  | ||||
| #: src/core/main.c:239 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Eseguìs come servidôr display complet, invezit che nidiât" | ||||
|  | ||||
| #. Translators: %s is a window title | ||||
| #: src/core/meta-close-dialog-default.c:147 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "“%s” nol rispuint." | ||||
|  | ||||
| #: ../src/core/delete.c:129 | ||||
| #: src/core/meta-close-dialog-default.c:149 | ||||
| msgid "Application is not responding." | ||||
| msgstr "La aplicazion no rispuint." | ||||
|  | ||||
| #: ../src/core/delete.c:134 | ||||
| #: src/core/meta-close-dialog-default.c:154 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -511,115 +607,74 @@ msgstr "" | ||||
| "Al è pussibil sielzi di spietâ un pôc lassant che la aplicazion e continui o " | ||||
| "sfuarçâ la aplicazion par sierâle dal dut." | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Spiete" | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Force Quit" | ||||
| msgstr "Sfuarce _Jessude" | ||||
|  | ||||
| #: ../src/core/display.c:590 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Impussibil vierzi il display '%s' di X Window System\n" | ||||
| #: src/core/meta-close-dialog-default.c:161 | ||||
| msgid "_Wait" | ||||
| msgstr "_Spiete" | ||||
|  | ||||
| #: ../src/core/main.c:182 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Disabilite la conession al gjestôr de session" | ||||
|  | ||||
| #: ../src/core/main.c:188 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Rimplace il window manager in vore" | ||||
|  | ||||
| #: ../src/core/main.c:194 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Specifiche il ID di gjestion session" | ||||
|  | ||||
| #: ../src/core/main.c:199 | ||||
| msgid "X Display to use" | ||||
| msgstr "Display X di doprâ" | ||||
|  | ||||
| #: ../src/core/main.c:205 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Inizialize session da file salvât" | ||||
|  | ||||
| #: ../src/core/main.c:211 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Fâs lis clamadis X sincronis" | ||||
|  | ||||
| #: ../src/core/main.c:218 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "Eseguìs come compositor wayland" | ||||
|  | ||||
| #: ../src/core/main.c:224 | ||||
| msgid "Run as a nested compositor" | ||||
| msgstr "Eseguìs come compositor nidiât" | ||||
|  | ||||
| #: ../src/core/main.c:232 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "Eseguìs come servidôr display complet, invezit che nidiât" | ||||
|  | ||||
| #: ../src/core/mutter.c:39 | ||||
| #: src/core/mutter.c:39 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e altris\n" | ||||
| "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., e altris\n" | ||||
| "Chest al è software libar; viodi i sorzints pes condizions di copie.\n" | ||||
| "No je NISSUNE garanzie; nancje di CUMIERÇABILITÂT o IDONEITÂT A UNE " | ||||
| "FINALITÂT PARTICOLÂR.\n" | ||||
|  | ||||
| #: ../src/core/mutter.c:53 | ||||
| #: src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| msgstr "Stampe version" | ||||
|  | ||||
| #: ../src/core/mutter.c:59 | ||||
| #: src/core/mutter.c:59 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Plugin Mutter di doprâ" | ||||
|  | ||||
| #: ../src/core/prefs.c:1997 | ||||
| #: src/core/prefs.c:1997 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Spazi di lavôr %d" | ||||
|  | ||||
| #: ../src/core/screen.c:521 | ||||
| #: src/core/screen.c:580 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| "Display “%s” already has a window manager; try using the --replace option to " | ||||
| "replace the current window manager." | ||||
| msgstr "" | ||||
| "Il display \"%s\" al à za un window manager; prove dopre la opzion --replace " | ||||
| "Il display “%s” al à za un window manager; prove dopre la opzion --replace " | ||||
| "par rimplaçâ chel atuâl." | ||||
|  | ||||
| #: ../src/core/screen.c:606 | ||||
| #: src/core/screen.c:665 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Schermi %d su display '%s' no valit\n" | ||||
| msgid "Screen %d on display “%s” is invalid\n" | ||||
| msgstr "Schermi %d su display “%s” no valit\n" | ||||
|  | ||||
| #: ../src/core/util.c:120 | ||||
| #: src/core/util.c:120 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n" | ||||
|  | ||||
| #: ../src/wayland/meta-wayland-tablet-pad.c:595 | ||||
| #: src/wayland/meta-wayland-tablet-pad.c:563 | ||||
| #, c-format | ||||
| msgid "Mode Switch: Mode %d" | ||||
| msgstr "Cambie mût: mût %d" | ||||
|  | ||||
| #: ../src/x11/session.c:1815 | ||||
| #: src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| "These windows do not support “save current setup” and will have to be " | ||||
| "restarted manually next time you log in." | ||||
| msgstr "" | ||||
| "Chescj barcons no supuartin la funzion "salve impostazions atuâi" " | ||||
| "e si scugnarà tornâ a inviâlis a man tal prossim acès." | ||||
| "Chescj barcons no supuartin la funzion “salve impostazions atuâls” e si " | ||||
| "scugnarà tornâ a inviâlis a man tal prossim acès." | ||||
|  | ||||
| #: ../src/x11/window-props.c:548 | ||||
| #: src/x11/window-props.c:559 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (su %s)" | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user