Compare commits
	
		
			350 Commits
		
	
	
		
			3.7.91
			...
			3.10.0.1-w
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | cb5e1e2776 | ||
|   | e965cf32d4 | ||
|   | ce5e0b20b5 | ||
|   | 90854a0f80 | ||
|   | 2d9dc143fc | ||
|   | 1e52d2aa9c | ||
|   | 2734c8547f | ||
|   | cc0b093f7a | ||
|   | d25275fa8d | ||
|   | 389e04c715 | ||
|   | 24074a81d0 | ||
|   | c0e7f6d9bf | ||
|   | 9a13b857f4 | ||
|   | 776a86a65f | ||
|   | 76e2455d1b | ||
|   | 81d9797544 | ||
|   | 12d6c70000 | ||
|   | a7eaf43e18 | ||
|   | 514fec7275 | ||
|   | 42a5f4f479 | ||
|   | 6c1feedbdf | ||
|   | 2d21fbbd35 | ||
|   | 7baf687499 | ||
|   | a3e44d13d1 | ||
|   | 65db8efbe8 | ||
|   | e48a5cd5f2 | ||
|   | 698bb24848 | ||
|   | 67fff237e6 | ||
|   | b9247b4b2f | ||
|   | 0394b4a82b | ||
|   | ff7c85c599 | ||
|   | c316ad17a4 | ||
|   | fc108d5052 | ||
|   | 8c0d38a1a1 | ||
|   | 2f9c6c4146 | ||
|   | 72ca2b218d | ||
|   | 7360aece74 | ||
|   | b5f3238f6f | ||
|   | 227fb56103 | ||
|   | 5ae52473c9 | ||
|   | 7b537d6b8f | ||
|   | 4494888b82 | ||
|   | 004ee2d3b5 | ||
|   | 168ea64a45 | ||
|   | 73ee491281 | ||
|   | 95a9655412 | ||
|   | 72b6699efb | ||
|   | 3e341e83d9 | ||
|   | 5b3340e585 | ||
|   | 6f4f611ba8 | ||
|   | 450afbaf51 | ||
|   | 28708e4317 | ||
|   | 9f64f2cf4f | ||
|   | 2b1eb206d3 | ||
|   | a6dc454c49 | ||
|   | c2bf44fa19 | ||
|   | 2d67b01c3a | ||
|   | 6014d31dea | ||
|   | bf78f067a2 | ||
|   | ddb9929dad | ||
|   | 2098ec2d16 | ||
|   | 97eece6607 | ||
|   | 7ac9a6e241 | ||
|   | b53bf0e8c2 | ||
|   | a26ded47d9 | ||
|   | cad9e14463 | ||
|   | 806d5939e3 | ||
|   | 0f0c23fbab | ||
|   | 5d1fcc26c0 | ||
|   | cbe5b6b3bc | ||
|   | 590cf4e832 | ||
|   | 22ca820c44 | ||
|   | b1206ceb66 | ||
|   | ad4053ab84 | ||
|   | 7bd4e6ecb0 | ||
|   | deeb1db1ac | ||
|   | 7eb4bfbea3 | ||
|   | 59b274f12f | ||
|   | e311cef013 | ||
|   | e72f81c24f | ||
|   | 96fa518576 | ||
|   | e263b3624c | ||
|   | 1c34f0b342 | ||
|   | 2d27873f98 | ||
|   | fd40a12213 | ||
|   | 57406e0a9e | ||
|   | 1987cbb764 | ||
|   | 705978405b | ||
|   | daba05f6a7 | ||
|   | 1a7984be43 | ||
|   | 1b3c77d53a | ||
|   | 5b0f0d9e5b | ||
|   | 9816659fa9 | ||
|   | 3b1b611634 | ||
|   | f08921bd0c | ||
|   | 0089b5769c | ||
|   | 452be05ea0 | ||
|   | 69f038f7c7 | ||
|   | 2d35e07fae | ||
|   | 95e2d26d03 | ||
|   | f506e090ea | ||
|   | 0697b53826 | ||
|   | 7d9141c56f | ||
|   | 519a06b93d | ||
|   | 0cceddab75 | ||
|   | c9830c13b4 | ||
|   | 9a4783e364 | ||
|   | aa15c09d54 | ||
|   | 62d908be42 | ||
|   | 6526e9882b | ||
|   | ab72352c47 | ||
|   | f09b9573f0 | ||
|   | 3d3ae40f79 | ||
|   | ea3d2b4759 | ||
|   | 542a0886cf | ||
|   | bd3d5df9ce | ||
|   | 91cdfab495 | ||
|   | 1617323dca | ||
|   | bbf9358eba | ||
|   | 9682a2aea4 | ||
|   | c9fbb51775 | ||
|   | aa6d887214 | ||
|   | 13312527de | ||
|   | 9bd366f2a6 | ||
|   | 5de346bfef | ||
|   | 2af20b77b6 | ||
|   | 9affbf10a6 | ||
|   | c0acf3ae6d | ||
|   | 2c1b20e15f | ||
|   | 77290b6736 | ||
|   | 876f81db12 | ||
|   | 75f3ae14b5 | ||
|   | d26f248b0f | ||
|   | eeb3dfc991 | ||
|   | e66db2eab3 | ||
|   | 2ae7454f36 | ||
|   | 4fd3c63da9 | ||
|   | 909a6607c5 | ||
|   | 1bde397edf | ||
|   | 015c05fbf6 | ||
|   | 8ad5ccd2f8 | ||
|   | 115cc870c7 | ||
|   | 3112794d83 | ||
|   | 3528b067d0 | ||
|   | 0986b660be | ||
|   | 3bb5086173 | ||
|   | 69467842ab | ||
|   | 57077435ed | ||
|   | 46de0ed462 | ||
|   | 5086626805 | ||
|   | bbbcd8c631 | ||
|   | 3b61b85f2c | ||
|   | cd20f1bc0b | ||
|   | 8b52782ed4 | ||
|   | 849050be95 | ||
|   | 5c27a91684 | ||
|   | 764c472edb | ||
|   | d0529b7482 | ||
|   | 8f4621240a | ||
|   | e039add240 | ||
|   | dbd8d4d598 | ||
|   | 522542c486 | ||
|   | fc67c707e4 | ||
|   | c354e7e81b | ||
|   | bf40409d97 | ||
|   | 57d083730e | ||
|   | dc242e46c2 | ||
|   | 7e1d1003c9 | ||
|   | 3bb33d384f | ||
|   | 214f31257b | ||
|   | bfc87d13cb | ||
|   | 506ddc3d6c | ||
|   | 24564c77d6 | ||
|   | 18a21b67c2 | ||
|   | 3803fd9511 | ||
|   | 152d896f75 | ||
|   | 2f3a5f2001 | ||
|   | c3e8646af3 | ||
|   | 8c17b670fb | ||
|   | 0e098249b1 | ||
|   | 12d2e1f600 | ||
|   | c20b007985 | ||
|   | ef480e9120 | ||
|   | 8c1c77482d | ||
|   | e633606ca9 | ||
|   | 9a5f243f73 | ||
|   | 03f55b9485 | ||
|   | ef9ef87d91 | ||
|   | 0ee2c21da7 | ||
|   | 9b966561c4 | ||
|   | 8c0779a9db | ||
|   | 2c901cc015 | ||
|   | 85e66f69fa | ||
|   | a5585327dc | ||
|   | 268ebb1b18 | ||
|   | 40e820f551 | ||
|   | f9a11b3b18 | ||
|   | bd3c357212 | ||
|   | b4d108dac6 | ||
|   | 6585a5760b | ||
|   | 531be6c413 | ||
|   | f0c503b5a9 | ||
|   | 6fdc23d0b7 | ||
|   | 4862872c78 | ||
|   | ae2e4c5114 | ||
|   | 06b5be2d13 | ||
|   | 56fb8a81b3 | ||
|   | 90a3d613ca | ||
|   | c2af13cf31 | ||
|   | b0cf0b2442 | ||
|   | 1c569c2d0e | ||
|   | e3855c77af | ||
|   | 21fe5be026 | ||
|   | 57bc974a57 | ||
|   | 3b51405255 | ||
|   | 73dbb4b9a5 | ||
|   | 51acc3ee31 | ||
|   | a6f206f07c | ||
|   | 9504fdd2cb | ||
|   | b76c3312e9 | ||
|   | fd7db8e6b3 | ||
|   | b7840bec7d | ||
|   | f743539886 | ||
|   | 15e01152da | ||
|   | 2103ff6a5c | ||
|   | 8ab136b7ea | ||
|   | 5205821fb9 | ||
|   | 7187206ef5 | ||
|   | 96221e6c04 | ||
|   | 7fdfbad6d4 | ||
|   | 2a5b068863 | ||
|   | 0c505faded | ||
|   | b2dd4f33f7 | ||
|   | 47b21b3547 | ||
|   | c119f98bac | ||
|   | d20078574e | ||
|   | 26bd4fde5c | ||
|   | 2af49e503f | ||
|   | 6ea6af6eb4 | ||
|   | 10df80762c | ||
|   | f86032d700 | ||
|   | a8eb33f6fd | ||
|   | bd19de9429 | ||
|   | 2ca2838548 | ||
|   | df8234c5e3 | ||
|   | d03ffd801e | ||
|   | 7a4c808e43 | ||
|   | 4f1d62170b | ||
|   | e10804727d | ||
|   | e430e051b7 | ||
|   | 696d9d2fa9 | ||
|   | f6dd081acd | ||
|   | eddd6f8e9b | ||
|   | dfa4c7d670 | ||
|   | a487d4dd01 | ||
|   | c2ecdd0524 | ||
|   | 50b9042ac2 | ||
|   | f5e75de330 | ||
|   | 1ffe1eae4d | ||
|   | 970a446bd8 | ||
|   | 8880dffbdb | ||
|   | 5b6621811c | ||
|   | c2a9ccb7e2 | ||
|   | 4608cb6027 | ||
|   | ad61676af0 | ||
|   | c7c1225393 | ||
|   | c7dc6928a9 | ||
|   | 7cfaa6a6a8 | ||
|   | 673a9e2521 | ||
|   | 9ef4ac00df | ||
|   | 46f0cffa53 | ||
|   | b6203192b5 | ||
|   | 992a15e640 | ||
|   | f1620abfad | ||
|   | 591523e473 | ||
|   | 72769e113a | ||
|   | 387cb83c8a | ||
|   | 577e5e2e1a | ||
|   | 47cf63bebe | ||
|   | 0e58906194 | ||
|   | 13c7020b80 | ||
|   | 5ed6e37e3c | ||
|   | 9ed3a77102 | ||
|   | acd99927f9 | ||
|   | 13c92f63bb | ||
|   | 12400caef8 | ||
|   | a1b3fdfbd6 | ||
|   | 4b47c59a04 | ||
|   | 5d223c189c | ||
|   | c5d0923453 | ||
|   | 41f8fccf6b | ||
|   | e02ad64fef | ||
|   | 8db53af1f8 | ||
|   | defaa5876c | ||
|   | e7870cb665 | ||
|   | 64eb42023c | ||
|   | e7faef860b | ||
|   | 4dfbe9a493 | ||
|   | 6a17bb4cf5 | ||
|   | 58496de595 | ||
|   | f80a15f312 | ||
|   | 9df2d83aa0 | ||
|   | 1582448553 | ||
|   | eefa62bcd4 | ||
|   | e216b6ca0f | ||
|   | 8a33880c00 | ||
|   | 7a8c45dda8 | ||
|   | af01ddaf5d | ||
|   | 5ceffe86ee | ||
|   | 49df033b4e | ||
|   | ac3465ffbb | ||
|   | 884ab602cb | ||
|   | d944bda7b9 | ||
|   | 11f7cfb27b | ||
|   | 64358d9901 | ||
|   | 2efed44257 | ||
|   | 69c72ebb26 | ||
|   | 00a842f41b | ||
|   | 460dc9f2ef | ||
|   | be46869782 | ||
|   | 2863eba2e7 | ||
|   | e0b698d365 | ||
|   | edeac1de09 | ||
|   | 9281a1c191 | ||
|   | a3826987e6 | ||
|   | e46c7fd27b | ||
|   | 0bb8d29be4 | ||
|   | 1f905bd0e2 | ||
|   | cce5ad7cc0 | ||
|   | 97a4cc8c9b | ||
|   | 592374bc62 | ||
|   | 2e0f979613 | ||
|   | 6d365a700c | ||
|   | 72a9eb6a3e | ||
|   | ae3cfe6c01 | ||
|   | da557cb712 | ||
|   | c1e41d558f | ||
|   | 889844b004 | ||
|   | 6311a3ebc1 | ||
|   | 0f6c1db2ba | ||
|   | e6ec1abbfa | ||
|   | 42621c960e | ||
|   | 8e9ae2eb50 | ||
|   | ca7843372c | ||
|   | 1202714428 | ||
|   | 45addabe5d | ||
|   | 31abad0ea5 | ||
|   | c169d29836 | ||
|   | df8ad83cec | ||
|   | 381a9c2650 | 
							
								
								
									
										38
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -23,7 +23,7 @@ src/50-mutter-navigation.xml | ||||
| src/50-mutter-system.xml | ||||
| src/50-mutter-windows.xml | ||||
| src/mutter-wm.desktop | ||||
| src/mutter.desktop | ||||
| src/mutter-wayland.desktop | ||||
| *.o | ||||
| *.a | ||||
| *.lo | ||||
| @@ -46,13 +46,13 @@ POTFILES | ||||
| po/*.pot | ||||
| 50-metacity-desktop-key.xml | ||||
| 50-metacity-key.xml | ||||
| inlinepixbufs.h | ||||
| libmutter.pc | ||||
| mutter | ||||
| mutter-theme-viewer | ||||
| mutter.desktop | ||||
| libmutter-wayland.pc | ||||
| mutter-wayland | ||||
| mutter-launch | ||||
| org.gnome.mutter.gschema.valid | ||||
| org.gnome.mutter.gschema.xml | ||||
| org.gnome.mutter.wayland.gschema.valid | ||||
| org.gnome.mutter.wayland.gschema.xml | ||||
| testasyncgetprop | ||||
| testboxes | ||||
| testgradient | ||||
| @@ -62,6 +62,7 @@ mutter-message | ||||
| mutter-window-demo | ||||
| focus-window | ||||
| test-attached | ||||
| test-focus | ||||
| test-gravity | ||||
| test-resizing | ||||
| test-size-hints | ||||
| @@ -74,4 +75,29 @@ src/mutter-enum-types.[ch] | ||||
| src/stamp-mutter-enum-types.h | ||||
| src/mutter-marshal.[ch] | ||||
| src/stamp-mutter-marshal.h | ||||
| src/meta-dbus-xrandr.[ch] | ||||
| src/meta-dbus-idle-monitor.[ch] | ||||
| src/mutter-plugins.pc | ||||
| src/wayland/gtk-shell-protocol.c | ||||
| src/wayland/gtk-shell-client-protocol.h | ||||
| src/wayland/gtk-shell-server-protocol.h | ||||
| src/wayland/xserver-protocol.c | ||||
| src/wayland/xserver-client-protocol.h | ||||
| src/wayland/xserver-server-protocol.h | ||||
| doc/reference/*.args | ||||
| doc/reference/*.bak | ||||
| doc/reference/*.hierarchy | ||||
| doc/reference/*.interfaces | ||||
| doc/reference/*.prerequisites | ||||
| doc/reference/*.signals | ||||
| doc/reference/*.stamp | ||||
| doc/reference/html/ | ||||
| doc/reference/xml/ | ||||
| doc/reference/meta-decl-list.txt | ||||
| doc/reference/meta-decl.txt | ||||
| doc/reference/meta-overrides.txt | ||||
| doc/reference/meta-undeclared.txt | ||||
| doc/reference/meta-undocumented.txt | ||||
| doc/reference/meta-unused.txt | ||||
| doc/reference/meta-docs.sgml | ||||
| doc/reference/meta.types | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
|  | ||||
| SUBDIRS=src po doc | ||||
| SUBDIRS=src protocol po doc | ||||
|  | ||||
| EXTRA_DIST = HACKING MAINTAINERS rationales.txt | ||||
|  | ||||
| DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache | ||||
|  | ||||
| DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc | ||||
|   | ||||
							
								
								
									
										212
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										212
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,215 @@ | ||||
| 3.10.0.1 | ||||
| ======== | ||||
| * Fix bug when a window changed size twice in a single frame - this | ||||
|   can happen with GTK+ client-side decorations [Giovanni, Owen; #708367] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Owen Taylor | ||||
|  | ||||
| 3.10.0 | ||||
| ====== | ||||
| * Update dependencies [Giovanni; #708210] | ||||
|  | ||||
| 3.9.92 | ||||
| ====== | ||||
| * Constrain the pointer position onto visible monitors [Giovanni; #706655] | ||||
| * Fix keyboard state handling in face of event compression [Giovanni; #706963] | ||||
| * Extend the MetaCursorTracker API with query pointer and cursor visibility [Giovanni; #707474] | ||||
| * Be stricter in checking and exposing the wayland protocol version [#707851] | ||||
| * Don't require plugins to pass event to Clutter [Giovanni; #707482] | ||||
| * Move the --wayland option from the binary to the library [Giovanni; #707897] | ||||
| * Implement running from gnome-session (environment variable setting, process group | ||||
|   handling, Clutter backend variables) [Giovanni; #706421] | ||||
| * Add support for more cursor types [Giovanni; #707919] | ||||
| * Drop man pages for removed utilities [Kalev; #706579] | ||||
| * Implement monitor configuration on KMS [Giovanni; #706308] | ||||
| * Implement HW cursors [Giovanni; #707573] | ||||
| * Implement minimal support for resizing and maximizing wayland clients [Giovanni; #707401] | ||||
| * Implement transient hints for wayland clients [Giovanni; #707401] | ||||
| * Implement popup menu surfaces and grabs [Giovanni; #707863] | ||||
| * Immediately fire idle watches that are already expired [Giovanni; #707302] | ||||
| * Remove holes generated by disabling the laptop lid [Giovanni; #707473] | ||||
| * Misc bug fixes [Giovanni, Pavel, Adel; #707649, #706124, #707584, #707851, #707929, | ||||
|   #708070] | ||||
|  | ||||
| Contributors: | ||||
|   Adel Gadllah, Giovanni Campagna, Kalev Lember, Pavel Vasin | ||||
|  | ||||
| Translations: | ||||
|   Мирослав Николић po/sr, sr@latin.po, Мирослав Николић [sr, sr@latin], | ||||
|   Chao-Hsiung Liao [zh_HK, zh_TW], Yuri Myasoedov [ru], | ||||
|   Ville-Pekka Vainio [fi], Changwoo Ryu [ko], A S Alam [pa], | ||||
|   Mattias Põldaru [et], Rūdolfs Mazurs [lv], Ihar Hrachyshka [be], | ||||
|   Nilamdyuti Goswami [as], Andika Triwidada [id], Baurzhan Muftakhidinov [kk], | ||||
|   Benjamin Steinwender [de] | ||||
|  | ||||
| 3.9.91 | ||||
| ====== | ||||
| * Drop man pages for removed utilities [Kalev; #706579] | ||||
| * Add support for idle tracking [Giovanni, Cosimo; #706005, #707250] | ||||
| * Skip CRTC reconfigurations that have no effect [Giovanni; #706672] | ||||
| * Ignore skip-taskbar hints on parentless dialogs [Giovanni; #673399] | ||||
| * Don't save pixbuf data in user data [Tim; #706777] | ||||
| * Don't queue redraws for obscured regions [Adel; #703332] | ||||
| * Suppor the opaque region hints for wayland clients [Jasper; #707019] | ||||
| * Turn blending off when drawing entirely opaque regions [Jasper; #707019] | ||||
| * Check event timestamps before reconfiguring [Giovanni; #706735] | ||||
| * Merge the DBus API for display configuration in the wayland branch [Giovanni] | ||||
| * Install an X IO error handler for XWayland [Giovanni; #706962] | ||||
| * Use the clutter xkbcommon integration for the wayland keyboard [Giovanni; #705862] | ||||
| * Add a setuid helper for running on KMS+evdev [Giovanni, Colin; #705861] | ||||
| * Add keybindings for switching VT [Giovanni; #705861] | ||||
| * Implement plugin modality when running as a wayland compositor [Giovanni; #705917] | ||||
| * Add support for the application menu for wayland clients [Giovanni; #707128] | ||||
| * Several Coverity spotted fixes [Jasper] | ||||
| * Don't create a dummy texture for the texture template [Neil; #707458] | ||||
| * Use a more conservative paint volume for obscured windows [Adel] | ||||
| * Misc bug fixes [Giovanni, Colin, Seán, Jasper, Cosimo; #706582, #706598, | ||||
|   #706787, #706729, #706825, #707081, #707090, #707267, #706982, #706289] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Colin Guthrie, Kalev Lember, | ||||
|   Tim Lunn, Jasper St. Pierre, Neil Roberts, Rico Tzschichholz, Seán de Búrca | ||||
|  | ||||
| Translations: | ||||
|   Piotr Drąg [pl], Alexandre Franke [fr], Kjartan Maraas [nb], | ||||
|   Milo Casagrande [it], Balázs Úr [hu], Seán de Búrca [ga], Fran Diéguez [gl], | ||||
|   Daniel Mustieles [es], Aurimas Černius [lt], Gil Forcada [ca] | ||||
|  | ||||
| 3.9.90 | ||||
| ====== | ||||
| * First release from the wayland branch, includes basic support for running | ||||
|   as a wayland compositor [Robert, Neil, Giovanni] | ||||
| * Add support for _GTK_FRAME_EXTENTS [Jasper; #705766] | ||||
| * Fix quick consecutive <super> presses breaking keyboard input [Alban; #666101] | ||||
| * Work towards running as wayland compositor [Giovanni] | ||||
|  - Add DBus API for display configuration | ||||
|    [#705670, #706231, #706233, #706322, #706382] | ||||
|  - Add abstraction layer for cursor tracking [#705911] | ||||
|  - Add support for plugin modality under wayland [#705917] | ||||
| * Disable GTK+ scaling [Alexander; #706388] | ||||
| * Disable blending while updating tower [Robert] | ||||
| * Misc bug fixes and cleanups [Adel, Jasper, Giovanni, Colin, Rico, Florian; | ||||
|   #703332, #704437, #706207] | ||||
|  | ||||
| Contributors: | ||||
|   Robert Bragg, Giovanni Campagna, Alban Crequy, Adel Gadllah, | ||||
|   Alexander Larsson, Florian Müllner, Jasper St. Pierre, Neil Roberts, | ||||
|   Rico Tzschichholz, Colin Walters | ||||
|  | ||||
| Translations: | ||||
|   Jiro Matsuzawa [ja], Kjartan Maraas [nb], Matej Urbančič [sl], | ||||
|   Marek Černocký [cs], Daniel Mustieles [es], Rafael Ferreira [pt_BR], | ||||
|   Yaron Shahrabani [he], Ján Kyselica [sk] | ||||
|  | ||||
| 3.9.5 | ||||
| ===== | ||||
| * Don't select for touch events on the stage [Jasper; #697192] | ||||
| * Don't queue redraws for obscured regions [Adel; #703332] | ||||
| * Export timestamp of global keybinding events [Bastien; #704858] | ||||
| * Misc bug fixes and cleanups [Jasper, Rico; #703970] | ||||
|  | ||||
| Contributors: | ||||
|   Adel Gadllah, Bastien Nocera, Jasper St. Pierre, Rico Tzschichholz | ||||
|  | ||||
| 3.9.4 | ||||
| ===== | ||||
| * Tweak window shadows [Allan; #702141] | ||||
| * Ignore our own focus events for focus prediction [Jasper; #701017] | ||||
| * Add API to query if the stage is focused [Jasper; #700735] | ||||
| * Add API to query the monitor for a given position [Adel] | ||||
| * Don't force attached dialogs to be border-only [Florian; #702764] | ||||
| * Allow slicing of backgrounds to avoid texture size limits [Ray; #702283] | ||||
| * Miscellaneous bug fixes and cleanups [Adel; #701224, #702564] | ||||
|  | ||||
| Contributors: | ||||
|   Allan Day, Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode | ||||
|  | ||||
| 3.9.3 | ||||
| ===== | ||||
| * Ensure events are always reported to the grab window [Rui; #701219] | ||||
| * Use new clutter_stage_set_paint_callback() function to prevent dropping | ||||
|   frames with frame synced toolkits [Owen; #698794] | ||||
|  | ||||
| Contributors: | ||||
|   Rui Matos, Owen W. Taylor | ||||
|  | ||||
| 3.9.2 | ||||
| ===== | ||||
| * Add meta_window_can_close() function [Jasper; #699269] | ||||
| * Add support for string-array preferences [Florian; #700223] | ||||
| * Fix a potential race condition with _NET_WM_MOVERESIZE [Jasper; #699777] | ||||
| * Fix shade window action [Stef; #693714] | ||||
| * Remove overlay_group [Giovanni; #700735] | ||||
| * Improve tracking of the focus window [Dan, Jasper; #647706] | ||||
| * Add API to freeze/unfreeze the keyboard [Rui; #697001] | ||||
| * Grab and emit a signal when XK_ISO_Next_Group is pressed [Rui; #697002] | ||||
| * Misc bug fixes and cleanups [Dieter, Jasper, Rui; #699636, #700735, #697000] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Rui Matos, Florian Müllner, Jasper St. Pierre, | ||||
|   Dieter Verfaillie, Stef Walter, Dan Winship | ||||
|  | ||||
| Translations: | ||||
|   Kjartan Maraas [nb], Ján Kyselica [sk] | ||||
|  | ||||
| 3.9.1 | ||||
| ===== | ||||
| * Fix miscellaneous memory leaks [Pavel; #698710] | ||||
| * Misc fixes and cleanups [Stef, Simon; #698179, #697758] | ||||
|  | ||||
| Contributors: | ||||
|   Simon McVittie, Pavel Vasin, Stef Walter | ||||
|  | ||||
| 3.8.1 | ||||
| ===== | ||||
| * Fix crash when getting default font [Bastien; #696814] | ||||
| * Fix ungrabbing of keybindings [Rui; #697003] | ||||
| * Misc fixes and cleanups [Jasper, Simon; #697758] | ||||
|  | ||||
| Contributors: | ||||
|   Jasper Lievisse Adriaanse, Rui Matos, Simon McVittie, Bastien Nocera | ||||
|  | ||||
| Translations: | ||||
|   Guillaume Desmottes [fr], Shankar Prasad [kn], Bruce Cowan [en_GB], | ||||
|   Andika Triwidada [id], Yaron Shahrabani [he], Kjartan Maraas [nb], | ||||
|   Gheyret Kenji [ug] | ||||
|  | ||||
| 3.8.0 | ||||
| ===== | ||||
| * Address major memory leak when changing backgrounds [Ray; #696157] | ||||
|  | ||||
| Contributors: | ||||
|   Ray Strode | ||||
|  | ||||
| Translations: | ||||
|   Sandeep Sheshrao Shedmake [mr], Victor Ibragimov [tg], Gabor Kelemen [hu], | ||||
|   Ville-Pekka Vainio [fi], Rajesh Ranjan [hi], Dr.T.Vasudevan [ta], | ||||
|   ManojKumar Giri [or], Yuri Myasoedov [ru], Petr Kovar [cs], | ||||
|   Jiro Matsuzawa [ja], Krishnababu Krothapalli [te], Ani Peter [ml], | ||||
|   Inaki Larranaga Murgoitio [eu] | ||||
|  | ||||
| 3.7.92 | ||||
| ====== | ||||
| * Build and improve reference docs [Tomeu; #676856, #695641, #695935] | ||||
| * Add tracking of whether there are fullscreen windows [Owen; 649748] | ||||
| * Misc bug fixes and cleanups [Adel, Giovanni, Owen, Jasper, Florian; #695269, | ||||
|   #695711, #694046, #695813, #695881, #676856, #696053, #682779, #696089, | ||||
|   #696091, #696087] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Adel Gadllah, Florian Müllner, Jasper St. Pierre, | ||||
|   Tomeu Vizoso, Owen W. Taylor | ||||
|  | ||||
| Translations: | ||||
|   Chao-Hsiung Liao [zh_HK, zh_TW], Rafael Ferreira [pt_BR], | ||||
|   Ihar Hrachyshka [be], Nilamdyuti Goswami [as], Matej Urbančič [sl], | ||||
|   Dimitris Spingos [el], Jan Kyselica [sk], Khaled Hosny [ar], | ||||
|   Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], Sweta Kothari [gu], | ||||
|   Milo Casagrande [it], Changwoo Ryu [ko], Gil Forcada [ca], | ||||
|   Carles Ferrando [ca@valencia], Mattias Põldaru [et], Alexandre Franke [fr], | ||||
|   Ask H. Larsen [da], Rūdolfs Mazurs [lv], Nguyễn Thái Ngọc Duy [vi] | ||||
|  | ||||
| 3.7.91 | ||||
| ====== | ||||
| * Fix windows being treated as remote after hostname changes [Ray; #688716] | ||||
|   | ||||
| @@ -5,7 +5,7 @@ srcdir=`dirname $0` | ||||
| test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| PKG_NAME="mutter" | ||||
| REQUIRED_AUTOMAKE_VERSION=1.10 | ||||
| REQUIRED_AUTOMAKE_VERSION=1.13 | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
|   && test -d $srcdir/src) || { | ||||
|   | ||||
							
								
								
									
										77
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | ||||
| AC_PREREQ(2.50) | ||||
|  | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [7]) | ||||
| m4_define([mutter_micro_version], [91]) | ||||
| m4_define([mutter_minor_version], [10]) | ||||
| m4_define([mutter_micro_version], [0.1]) | ||||
|  | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
| @@ -15,10 +15,14 @@ AC_INIT([mutter], [mutter_version], | ||||
| AC_CONFIG_SRCDIR(src/core/display.c) | ||||
| AC_CONFIG_HEADERS(config.h) | ||||
|  | ||||
| AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar]) | ||||
| AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar]) | ||||
| m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],) | ||||
| AM_MAINTAINER_MODE([enable]) | ||||
|  | ||||
| # Change pkglibdir and pkgdatadir to mutter-wayland instead of mutter | ||||
| PACKAGE="mutter-wayland" | ||||
| AC_SUBST([PACKAGE], [$PACKAGE]) | ||||
|  | ||||
| MUTTER_MAJOR_VERSION=mutter_major_version | ||||
| MUTTER_MINOR_VERSION=mutter_minor_version | ||||
| MUTTER_MICRO_VERSION=mutter_micro_version | ||||
| @@ -34,7 +38,7 @@ AC_SUBST(MUTTER_PLUGIN_DIR) | ||||
| # Honor aclocal flags | ||||
| AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}") | ||||
|  | ||||
| GETTEXT_PACKAGE=mutter | ||||
| GETTEXT_PACKAGE=mutter-wayland | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) | ||||
|  | ||||
| @@ -73,8 +77,10 @@ MUTTER_PC_MODULES=" | ||||
|    cairo >= 1.10.0 | ||||
|    gsettings-desktop-schemas >= 3.7.3 | ||||
|    xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0 | ||||
|    $CLUTTER_PACKAGE >= 1.13.5 | ||||
|    $CLUTTER_PACKAGE >= 1.15.94 | ||||
|    cogl-1.0 >= 1.13.3 | ||||
|    upower-glib > 0.9.11 | ||||
|    gnome-desktop-3.0 | ||||
| " | ||||
|  | ||||
| GLIB_GSETTINGS | ||||
| @@ -113,14 +119,32 @@ AC_ARG_ENABLE(shape, | ||||
|                  [disable mutter's use of the shaped window extension]),, | ||||
|   enable_shape=auto) | ||||
|  | ||||
| ## Wayland support requires the xserver.xml protocol extension found in the weston | ||||
| ## repository but since there aren't currently established conventions for | ||||
| ## installing and discovering these we simply require a location to be given | ||||
| ## explicitly... | ||||
| AC_ARG_WITH([wayland-protocols], | ||||
|             [AS_HELP_STRING([--with-wayland-protocols], [Location for wayland extension protocol specs])], | ||||
|             [ | ||||
|             ], | ||||
|             []) | ||||
|  | ||||
| AC_ARG_WITH([xwayland-path], | ||||
|             [AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])], | ||||
|             [XWAYLAND_PATH="$withval"], | ||||
|             [XWAYLAND_PATH="$bindir/Xorg"]) | ||||
|  | ||||
| AM_GLIB_GNU_GETTEXT | ||||
|  | ||||
| ## here we get the flags we'll actually use | ||||
| # GRegex requires Glib-2.14.0 | ||||
| PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0) | ||||
| # gtk_window_set_icon_name requires gtk2+-2.6.0 | ||||
| PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-3.0) | ||||
| PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-3.0) | ||||
| PKG_CHECK_MODULES(MUTTER_LAUNCH, libdrm libsystemd-login) | ||||
|  | ||||
| saved_LIBS="$LIBS" | ||||
| LIBS="$LIBS $MUTTER_LAUNCH" | ||||
| AC_CHECK_FUNCS([sd_session_get_vt]) | ||||
| LIBS="$saved_LIBS" | ||||
|  | ||||
| # Unconditionally use this dir to avoid a circular dep with gnomecc | ||||
| GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings" | ||||
| @@ -185,20 +209,18 @@ if test x$found_introspection != xno; then | ||||
|   AC_SUBST(META_GIR) | ||||
| fi | ||||
|  | ||||
| AC_MSG_CHECKING([Xcursor]) | ||||
| if $PKG_CONFIG xcursor; then | ||||
|      have_xcursor=yes | ||||
|   else | ||||
|      have_xcursor=no | ||||
|   fi | ||||
|   AC_MSG_RESULT($have_xcursor) | ||||
| MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor" | ||||
|  | ||||
| if test x$have_xcursor = xyes; then | ||||
|   echo "Building with Xcursor" | ||||
|   MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor" | ||||
|   AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support]) | ||||
| fi | ||||
| # We always build with wayland enabled | ||||
| AC_DEFINE(HAVE_WAYLAND, , [Building with Wayland support]) | ||||
|  | ||||
| AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no]) | ||||
| AS_IF([test "x$WAYLAND_SCANNER" = "xno"], | ||||
|   AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols])) | ||||
| AC_SUBST([WAYLAND_SCANNER]) | ||||
| AC_SUBST(XWAYLAND_PATH) | ||||
|  | ||||
| MUTTER_PC_MODULES="$MUTTER_PC_MODULES clutter-wayland-1.0 clutter-wayland-compositor-1.0 clutter-egl-1.0 wayland-server libdrm" | ||||
| PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) | ||||
|  | ||||
| PKG_CHECK_EXISTS([xi >= 1.6.99.1], | ||||
| @@ -307,9 +329,6 @@ if test "x$found_xsync" = "xyes"; then | ||||
| fi | ||||
|  | ||||
| MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" | ||||
| MUTTER_MESSAGE_LIBS="$MUTTER_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" | ||||
| MUTTER_WINDOW_DEMO_LIBS="$MUTTER_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" | ||||
| MUTTER_PROPS_LIBS="$MUTTER_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" | ||||
|  | ||||
| found_sm=no | ||||
| case "$MUTTER_LIBS" in | ||||
| @@ -364,6 +383,8 @@ if test "x$enable_debug" = "xyes"; then | ||||
| 	CFLAGS="$CFLAGS -g -O" | ||||
| fi | ||||
|  | ||||
| GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) | ||||
|  | ||||
| #### Warnings (last since -Werror can disturb other tests) | ||||
|  | ||||
| # Stay command-line compatible with the gnome-common configure option. Here | ||||
| @@ -434,12 +455,12 @@ AC_CONFIG_FILES([ | ||||
| Makefile | ||||
| doc/Makefile | ||||
| doc/man/Makefile | ||||
| doc/reference/Makefile | ||||
| doc/reference/meta-docs.sgml | ||||
| src/Makefile | ||||
| src/wm-tester/Makefile | ||||
| src/libmutter.pc | ||||
| src/mutter-plugins.pc | ||||
| src/tools/Makefile | ||||
| src/libmutter-wayland.pc | ||||
| src/compositor/plugins/Makefile | ||||
| protocol/Makefile | ||||
| po/Makefile.in | ||||
| ]) | ||||
|  | ||||
| @@ -455,7 +476,7 @@ fi | ||||
|  | ||||
| dnl ========================================================================== | ||||
| echo " | ||||
| mutter-$VERSION | ||||
| mutter-wayland-$VERSION | ||||
|  | ||||
| 	prefix:                   ${prefix} | ||||
| 	source code location:	  ${srcdir} | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| SUBDIRS = man | ||||
| SUBDIRS = man reference | ||||
|  | ||||
| EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \ | ||||
| 	how-to-get-focus-right.txt | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| man_MANS = mutter.1 mutter-theme-viewer.1 \ | ||||
| 	   mutter-window-demo.1 mutter-message.1 | ||||
| man_MANS = mutter.1 | ||||
|  | ||||
| EXTRA_DIST = $(man_MANS) | ||||
|   | ||||
| @@ -1,60 +0,0 @@ | ||||
| .\"                                      Hey, EMACS: -*- nroff -*- | ||||
| .\" First parameter, NAME, should be all caps | ||||
| .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection | ||||
| .\" other parameters are allowed: see man(7), man(1) | ||||
| .\" ----- | ||||
| .\" This file was confirmed to be licenced under the GPL | ||||
| .\" by its author and copyright holder, Akira TAGOH, on June 1st 2008: | ||||
| .\" | ||||
| .\" > I'm comfortable with DFSG-free. that sounds great if you think it's | ||||
| .\" > useful and worth containing it in upstream. | ||||
| .\" ... | ||||
| .\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever, | ||||
| .\" > since I have contributed that for Debian. so GPL is no problem for me. | ||||
| .\" ----- | ||||
| .TH MUTTER\-MESSAGE 1 "28 August 2002" | ||||
| .\" Please adjust this date whenever revising the manpage. | ||||
| .\" | ||||
| .\" Some roff macros, for reference: | ||||
| .\" .nh        disable hyphenation | ||||
| .\" .hy        enable hyphenation | ||||
| .\" .ad l      left justify | ||||
| .\" .ad b      justify to both left and right margins | ||||
| .\" .nf        disable filling | ||||
| .\" .fi        enable filling | ||||
| .\" .br        insert line break | ||||
| .\" .sp <n>    insert n+1 empty lines | ||||
| .\" for manpage-specific macros, see man(7) | ||||
| .SH NAME | ||||
| MUTTER\-MESSAGE \- a command to send a message to Mutter | ||||
| .SH SYNOPSIS | ||||
| .B MUTTER\-MESSAGE | ||||
| [restart|reload\-theme|enable\-keybindings|disable\-keybindings] | ||||
| .SH DESCRIPTION | ||||
| This manual page documents briefly the | ||||
| .B mutter\-message\fP. | ||||
| This manual page was written for the Debian distribution | ||||
| because the original program does not have a manual page. | ||||
| .PP | ||||
| .\" TeX users may be more comfortable with the \fB<whatever>\fP and | ||||
| .\" \fI<whatever>\fP escape sequences to invode bold face and italics,  | ||||
| .\" respectively. | ||||
| \fBmutter\-message\fP send a specified message to \fBmutter\fP(1). | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .B restart | ||||
| Restart \fBmutter\fP(1) which is running. | ||||
| .TP | ||||
| .B reload-theme | ||||
| Reload a theme which is specified on gsettings database. | ||||
| .TP | ||||
| .B enable-keybindings | ||||
| Enable all of keybindings which is specified on gsettings database. | ||||
| .TP | ||||
| .B disable-keybindings | ||||
| Disable all of keybindings which is specified on gsettings database. | ||||
| .SH SEE ALSO | ||||
| .BR mutter (1) | ||||
| .SH AUTHOR | ||||
| This manual page was written by Akira TAGOH <tagoh@debian.org>, | ||||
| for the Debian GNU/Linux system (but may be used by others). | ||||
| @@ -1,43 +0,0 @@ | ||||
| .\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection | ||||
| .\" other parms are allowed: see man(7), man(1) | ||||
| .\" | ||||
| .\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>. | ||||
| .\"  | ||||
| .TH MUTTER-THEME-VIEWER 1 "1 June 2004"  | ||||
| .SH NAME | ||||
| mutter-theme-viewer \- view mutter themes | ||||
| .SH SYNOPSIS | ||||
| .B mutter-theme-viewer | ||||
| [ | ||||
| .I THEMENAME | ||||
| ] | ||||
| .SH DESCRIPTION | ||||
| .\" Putting a newline after each sentence can generate better output. | ||||
| .B mutter-theme-viewer | ||||
| allows you to preview any installed Mutter theme. | ||||
| .PP | ||||
| When designing a new Mutter theme, you can use | ||||
| .B mutter-theme-viewer | ||||
| to measure the performance of a window frame option, and to preview | ||||
| the option. | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .I THEMENAME | ||||
| Name of the theme to be shown (\fIAtlanta\fR by default). | ||||
| It is case-sensitive. | ||||
| .SH FILES | ||||
| .br | ||||
| .nf | ||||
| .TP | ||||
| .I /usr/share/themes | ||||
| system themes directory | ||||
| .TP | ||||
| .I /usr/share/themes/*/mutter-1/mutter-theme-1.xml | ||||
| theme specification file | ||||
| .SH AUTHOR | ||||
| This manual page was written by Jose M. Moya <josem@die.upm.es>, for | ||||
| the Debian  GNU/Linux system (but may be used by others). | ||||
| .SH "SEE ALSO" | ||||
| .\" Always quote multiple words for .SH | ||||
| .BR mutter (1), | ||||
| .BR mutter-window-demo (1). | ||||
| @@ -1,25 +0,0 @@ | ||||
| .\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection | ||||
| .\" other parms are allowed: see man(7), man(1) | ||||
| .\" | ||||
| .\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>. | ||||
| .\"  | ||||
| .TH MUTTER-WINDOW-DEMO 1 "1 June 2004"  | ||||
| .SH NAME | ||||
| mutter-window-demo \- demo of window features | ||||
| .SH SYNOPSIS | ||||
| .B mutter-window-demo | ||||
| .SH DESCRIPTION | ||||
| .\" Putting a newline after each sentence can generate better output. | ||||
| This program demonstrates various kinds of windows that window | ||||
| managers and window manager themes should handle. | ||||
| .PP | ||||
| Be sure to tear off the menu and toolbar, those are also a special | ||||
| kind of window. | ||||
| .SH AUTHOR | ||||
| This manual page was written by Jose M. Moya <josem@die.upm.es>, for | ||||
| the Debian  GNU/Linux system (but may be used by others). | ||||
| .SH "SEE ALSO" | ||||
| .\" Always quote multiple words for .SH | ||||
| .BR x-window-manager (1), | ||||
| .BR mutter (1), | ||||
| .BR mutter-theme-viewer (1). | ||||
							
								
								
									
										166
									
								
								doc/reference/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								doc/reference/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,166 @@ | ||||
| ## Process this file with automake to produce Makefile.in | ||||
|  | ||||
| # We require automake 1.6 at least. | ||||
| AUTOMAKE_OPTIONS = 1.6 | ||||
|  | ||||
| # This is a blank Makefile.am for using gtk-doc. | ||||
| # Copy this to your project's API docs directory and modify the variables to | ||||
| # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples | ||||
| # of using the various options. | ||||
|  | ||||
| # The name of the module, e.g. 'glib'. | ||||
| DOC_MODULE=meta | ||||
|  | ||||
| # Uncomment for versioned docs and specify the version of the module, e.g. '2'. | ||||
| #DOC_MODULE_VERSION=2 | ||||
|  | ||||
|  | ||||
| # The top-level SGML file. You can change this if you want to. | ||||
| DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml | ||||
|  | ||||
| # Directories containing the source code, relative to $(srcdir). | ||||
| # gtk-doc will search all .c and .h files beneath these paths | ||||
| # for inline comments documenting functions and macros. | ||||
| # e.g. DOC_SOURCE_DIR=../../../gtk ../../../gdk | ||||
| DOC_SOURCE_DIR=../../src/ | ||||
|  | ||||
| # Extra options to pass to gtkdoc-scangobj. Not normally needed. | ||||
| SCANGOBJ_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-scan. | ||||
| # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" | ||||
| SCAN_OPTIONS=--rebuild-types | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkdb. | ||||
| # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
| MKDB_OPTIONS=--xml-mode --output-format=xml | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mktmpl | ||||
| # e.g. MKTMPL_OPTIONS=--only-section-tmpl | ||||
| MKTMPL_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-mkhtml | ||||
| MKHTML_OPTIONS= | ||||
|  | ||||
| # Extra options to supply to gtkdoc-fixref. Not normally needed. | ||||
| # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html | ||||
| FIXXREF_OPTIONS= | ||||
|  | ||||
| # Used for dependencies. The docs will be rebuilt if any of these change. | ||||
| # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h | ||||
| # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c | ||||
| HFILE_GLOB=$(top_srcdir)/src/*.h | ||||
| CFILE_GLOB=$(top_srcdir)/src/*.c | ||||
|  | ||||
| # Extra header to include when scanning, which are not under DOC_SOURCE_DIR | ||||
| # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h | ||||
| EXTRA_HFILES= | ||||
|  | ||||
| # Header files or dirs to ignore when scanning. Use base file/dir names | ||||
| # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code | ||||
| IGNORE_HFILES= \ | ||||
| 	async-getprop.h \ | ||||
| 	atoms.h \ | ||||
| 	bell.h \ | ||||
| 	boxes-private.h \ | ||||
| 	clutter-utils.h \ | ||||
| 	cogl-utils.h \ | ||||
| 	compositor-private.h \ | ||||
| 	constraints.h \ | ||||
| 	core.h \ | ||||
| 	display-private.h \ | ||||
| 	draw-workspace.h \ | ||||
| 	edge-resistance.h \ | ||||
| 	eventqueue.h \ | ||||
| 	frame.h \ | ||||
| 	frames.h \ | ||||
| 	group-private.h \ | ||||
| 	group-props.h \ | ||||
| 	iconcache.h \ | ||||
| 	inlinepixbufs.h \ | ||||
| 	keybindings-private.h \ | ||||
| 	menu.h \ | ||||
| 	metaaccellabel.h \ | ||||
| 	meta-background-actor-private.h \ | ||||
| 	meta-background-group-private.h \ | ||||
| 	meta-module.h \ | ||||
| 	meta-plugin-manager.h \ | ||||
| 	meta-shadow-factory-private.h \ | ||||
| 	meta-texture-rectangle.h \ | ||||
| 	meta-texture-tower.h \ | ||||
| 	meta-window-actor-private.h \ | ||||
| 	meta-window-group.h \ | ||||
| 	meta-window-shape.h \ | ||||
| 	mutter-enum-types.h \ | ||||
| 	mutter-Xatomtype.h \ | ||||
| 	place.h \ | ||||
| 	preview-widget.h \ | ||||
| 	region-utils.h \ | ||||
| 	resizepopup.h \ | ||||
| 	screen-private.h \ | ||||
| 	session.h \ | ||||
| 	stack.h \ | ||||
| 	stack-tracker.h \ | ||||
| 	stamp-mutter-enum-types.h \ | ||||
| 	tabpopup.h \ | ||||
| 	theme.h \ | ||||
| 	theme-private.h \ | ||||
| 	tile-preview.h \ | ||||
| 	ui.h \ | ||||
| 	window-private.h \ | ||||
| 	window-props.h \ | ||||
| 	workspace-private.h \ | ||||
| 	xprops.h \ | ||||
| 	$(NULL) | ||||
|  | ||||
| MKDB_OPTIONS+=--ignore-files="$(IGNORE_HFILES)" | ||||
|  | ||||
| # Images to copy into HTML directory. | ||||
| # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png | ||||
| HTML_IMAGES= | ||||
|  | ||||
| # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). | ||||
| # e.g. content_files=running.sgml building.sgml changes-2.0.sgml | ||||
| content_files= \ | ||||
| 	mutter-overview.xml \ | ||||
| 	running-mutter.xml \ | ||||
| 	$(NULL) | ||||
|  | ||||
| # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded | ||||
| # These files must be listed here *and* in content_files | ||||
| # e.g. expand_content_files=running.sgml | ||||
| expand_content_files= \ | ||||
| 	mutter-overview.xml \ | ||||
| 	running-mutter.xml \ | ||||
| 	$(NULL) | ||||
|  | ||||
| # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. | ||||
| # Only needed if you are using gtkdoc-scangobj to dynamically query widget | ||||
| # signals and properties. | ||||
| # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) | ||||
| # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) | ||||
| GTKDOC_CFLAGS=$(MUTTER_CFLAGS) | ||||
| GTKDOC_LIBS=$(MUTTER_LIBS) $(top_builddir)/src/libmutter-wayland.la | ||||
|  | ||||
| # This includes the standard gtk-doc make rules, copied by gtkdocize. | ||||
| include $(top_srcdir)/gtk-doc.make | ||||
|  | ||||
| # Other files to distribute | ||||
| # e.g. EXTRA_DIST += version.xml.in | ||||
| EXTRA_DIST += | ||||
|  | ||||
| # Files not to distribute | ||||
| # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types | ||||
| # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt | ||||
| DISTCLEANFILES = $(DOC_MODULES).types | ||||
|  | ||||
| # Comment this out if you want 'make check' to test you doc status | ||||
| # and run some sanity checks | ||||
| if ENABLE_GTK_DOC | ||||
| TESTS_ENVIRONMENT = cd $(srcdir) && \ | ||||
|   DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ | ||||
|   SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) | ||||
| #TESTS = $(GTKDOC_CHECK) | ||||
| endif | ||||
|  | ||||
| -include $(top_srcdir)/git.mk | ||||
							
								
								
									
										59
									
								
								doc/reference/meta-docs.sgml.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								doc/reference/meta-docs.sgml.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| <?xml version="1.0"?> | ||||
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" | ||||
|                "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" | ||||
| [ | ||||
|   <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'"> | ||||
|   <!ENTITY version "@VERSION@"> | ||||
| ]> | ||||
| <book id="index"> | ||||
|   <bookinfo> | ||||
|     <title>Mutter Reference Manual</title> | ||||
|     <releaseinfo> | ||||
|       This document is for Mutter &version;. | ||||
|       The latest version of this documentation can be found on-line at | ||||
|       <ulink role="online-location" url="http://developer.gnome.org/meta/">http://developer.gnome.org/meta/</ulink>. | ||||
|     </releaseinfo> | ||||
|   </bookinfo> | ||||
|  | ||||
|   <xi:include href="xml/mutter-overview.xml"/> | ||||
|   <xi:include href="xml/running-mutter.xml"/> | ||||
|  | ||||
|   <part id="core-reference"> | ||||
|     <title>Mutter Core Reference</title> | ||||
|     <xi:include href="xml/main.xml"/> | ||||
|     <xi:include href="xml/common.xml"/> | ||||
|     <xi:include href="xml/gradient.xml"/> | ||||
|     <xi:include href="xml/prefs.xml"/> | ||||
|     <xi:include href="xml/util.xml"/> | ||||
|     <xi:include href="xml/errors.xml"/> | ||||
|     <xi:include href="xml/meta-plugin.xml"/> | ||||
|     <xi:include href="xml/barrier.xml"/> | ||||
|     <xi:include href="xml/boxes.xml"/> | ||||
|     <xi:include href="xml/compositor.xml"/> | ||||
|     <xi:include href="xml/display.xml"/> | ||||
|     <xi:include href="xml/group.xml"/> | ||||
|     <xi:include href="xml/keybindings.xml"/> | ||||
|     <xi:include href="xml/meta-background-actor.xml"/> | ||||
|     <xi:include href="xml/meta-shadow-factory.xml"/> | ||||
|     <xi:include href="xml/meta-shaped-texture.xml"/> | ||||
|     <xi:include href="xml/meta-window-actor.xml"/> | ||||
|     <xi:include href="xml/screen.xml"/> | ||||
|     <xi:include href="xml/window.xml"/> | ||||
|     <xi:include href="xml/workspace.xml"/> | ||||
|   </part> | ||||
|  | ||||
|   <chapter id="object-tree"> | ||||
|     <title>Object Hierarchy</title> | ||||
|      <xi:include href="xml/tree_index.sgml"/> | ||||
|   </chapter> | ||||
|   <index id="api-index-full"> | ||||
|     <title>API Index</title> | ||||
|     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> | ||||
|   </index> | ||||
|   <index id="deprecated-api-index" role="deprecated"> | ||||
|     <title>Index of deprecated API</title> | ||||
|     <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include> | ||||
|   </index> | ||||
|  | ||||
|   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> | ||||
| </book> | ||||
							
								
								
									
										666
									
								
								doc/reference/meta-sections.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										666
									
								
								doc/reference/meta-sections.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,666 @@ | ||||
| <SECTION> | ||||
| <FILE>barrier</FILE> | ||||
| <TITLE>MetaBarrier</TITLE> | ||||
| MetaBarrier | ||||
| MetaBarrierClass | ||||
| meta_barrier_is_active | ||||
| meta_barrier_destroy | ||||
| meta_barrier_release | ||||
| MetaBarrierDirection | ||||
| MetaBarrierEvent | ||||
| <SUBSECTION Standard> | ||||
| META_BARRIER | ||||
| META_BARRIER_CLASS | ||||
| META_BARRIER_GET_CLASS | ||||
| META_IS_BARRIER | ||||
| META_IS_BARRIER_CLASS | ||||
| META_TYPE_BARRIER | ||||
| META_TYPE_BARRIER_EVENT | ||||
| MetaBarrierPrivate | ||||
| meta_barrier_event_get_type | ||||
| meta_barrier_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>boxes</FILE> | ||||
| MetaRectangle | ||||
| MetaStrut | ||||
| MetaEdgeType | ||||
| MetaEdge | ||||
| meta_rectangle_copy | ||||
| meta_rectangle_free | ||||
| meta_rect | ||||
| meta_rectangle_area | ||||
| meta_rectangle_intersect | ||||
| meta_rectangle_equal | ||||
| meta_rectangle_union | ||||
| meta_rectangle_overlap | ||||
| meta_rectangle_vert_overlap | ||||
| meta_rectangle_horiz_overlap | ||||
| meta_rectangle_could_fit_rect | ||||
| meta_rectangle_contains_rect | ||||
| <SUBSECTION Standard> | ||||
| META_TYPE_RECTANGLE | ||||
| meta_rectangle_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>common</FILE> | ||||
| META_VIRTUAL_CORE_POINTER_ID | ||||
| META_VIRTUAL_CORE_KEYBOARD_ID | ||||
| MetaFrameFlags | ||||
| MetaMenuOp | ||||
| MetaWindowMenuFunc | ||||
| MetaGrabOp | ||||
| MetaCursor | ||||
| MetaFrameType | ||||
| MetaVirtualModifier | ||||
| MetaDirection | ||||
| MetaMotionDirection | ||||
| MetaSide | ||||
| MetaButtonFunction | ||||
| MAX_BUTTONS_PER_CORNER | ||||
| MetaButtonLayout | ||||
| MetaFrameBorders | ||||
| meta_frame_borders_clear | ||||
| META_ICON_WIDTH | ||||
| META_ICON_HEIGHT | ||||
| META_MINI_ICON_WIDTH | ||||
| META_MINI_ICON_HEIGHT | ||||
| META_DEFAULT_ICON_NAME | ||||
| META_PRIORITY_RESIZE | ||||
| META_PRIORITY_BEFORE_REDRAW | ||||
| META_PRIORITY_REDRAW | ||||
| META_PRIORITY_PREFS_NOTIFY | ||||
| POINT_IN_RECT | ||||
| MetaStackLayer | ||||
| MetaWindowMenu | ||||
| MetaResizePopup | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>compositor</FILE> | ||||
| MetaCompEffect | ||||
| MetaCompositor | ||||
| meta_compositor_new | ||||
| meta_compositor_destroy | ||||
| meta_compositor_manage_screen | ||||
| meta_compositor_unmanage_screen | ||||
| meta_compositor_window_shape_changed | ||||
| meta_compositor_process_event | ||||
| meta_compositor_filter_keybinding | ||||
| meta_compositor_add_window | ||||
| meta_compositor_remove_window | ||||
| meta_compositor_show_window | ||||
| meta_compositor_hide_window | ||||
| meta_compositor_switch_workspace | ||||
| meta_compositor_maximize_window | ||||
| meta_compositor_unmaximize_window | ||||
| meta_compositor_window_mapped | ||||
| meta_compositor_window_unmapped | ||||
| meta_compositor_sync_window_geometry | ||||
| meta_compositor_set_updates_frozen | ||||
| meta_compositor_queue_frame_drawn | ||||
| meta_compositor_sync_stack | ||||
| meta_compositor_sync_screen_size | ||||
| meta_compositor_flash_screen | ||||
| meta_get_stage_for_screen | ||||
| meta_get_overlay_group_for_screen | ||||
| meta_get_overlay_window | ||||
| meta_get_window_actors | ||||
| meta_get_window_group_for_screen | ||||
| meta_get_top_window_group_for_screen | ||||
| meta_disable_unredirect_for_screen | ||||
| meta_enable_unredirect_for_screen | ||||
| meta_set_stage_input_region | ||||
| meta_empty_stage_input_region | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>display</FILE> | ||||
| MetaTabList | ||||
| MetaTabShowType | ||||
| meta_XFree | ||||
| meta_display_get_compositor_version | ||||
| meta_display_get_xinput_opcode | ||||
| meta_display_supports_extended_barriers | ||||
| meta_display_get_xdisplay | ||||
| meta_display_get_compositor | ||||
| meta_display_get_screens | ||||
| meta_display_has_shape | ||||
| meta_display_screen_for_root | ||||
| meta_display_get_focus_window | ||||
| meta_display_xwindow_is_a_no_focus_window | ||||
| meta_display_get_damage_event_base | ||||
| meta_display_get_shape_event_base | ||||
| meta_display_xserver_time_is_before | ||||
| meta_display_get_last_user_time | ||||
| meta_display_get_current_time | ||||
| meta_display_get_current_time_roundtrip | ||||
| meta_display_get_ignored_modifier_mask | ||||
| meta_display_get_tab_list | ||||
| meta_display_get_tab_next | ||||
| meta_display_get_tab_current | ||||
| meta_display_begin_grab_op | ||||
| meta_display_end_grab_op | ||||
| meta_display_get_grab_op | ||||
| meta_display_add_keybinding | ||||
| meta_display_remove_keybinding | ||||
| meta_display_get_keybinding_action | ||||
| meta_display_set_input_focus_window | ||||
| meta_display_focus_the_no_focus_window | ||||
| meta_display_sort_windows_by_stacking | ||||
| meta_display_get_leader_window | ||||
| meta_display_add_ignored_crossing_serial | ||||
| meta_display_unmanage_screen | ||||
| meta_display_clear_mouse_mode | ||||
| MetaDisplay | ||||
| MetaDisplayClass | ||||
| <SUBSECTION Standard> | ||||
| META_DISPLAY | ||||
| META_DISPLAY_CLASS | ||||
| META_DISPLAY_GET_CLASS | ||||
| META_IS_DISPLAY | ||||
| META_IS_DISPLAY_CLASS | ||||
| META_TYPE_DISPLAY | ||||
| meta_display_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>errors</FILE> | ||||
| meta_error_trap_push | ||||
| meta_error_trap_pop | ||||
| meta_error_trap_push_with_return | ||||
| meta_error_trap_pop_with_return | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>gradient</FILE> | ||||
| MetaGradientType | ||||
| meta_gradient_create_simple | ||||
| meta_gradient_create_multi | ||||
| meta_gradient_create_interwoven | ||||
| meta_gradient_add_alpha | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>group</FILE> | ||||
| MetaGroup | ||||
| meta_window_get_group | ||||
| meta_window_compute_group | ||||
| meta_window_shutdown_group | ||||
| meta_window_group_leader_changed | ||||
| meta_display_lookup_group | ||||
| meta_group_list_windows | ||||
| meta_group_update_layers | ||||
| meta_group_get_startup_id | ||||
| meta_group_get_size | ||||
| meta_group_property_notify | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>keybindings</FILE> | ||||
| MetaKeyBinding | ||||
| META_TYPE_KEY_BINDING | ||||
| meta_key_binding_get_name | ||||
| meta_key_binding_get_modifiers | ||||
| meta_key_binding_get_mask | ||||
| meta_key_binding_is_builtin | ||||
| meta_keybindings_set_custom_handler | ||||
| meta_keybindings_switch_window | ||||
| meta_screen_ungrab_all_keys | ||||
| meta_screen_grab_all_keys | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>main</FILE> | ||||
| meta_get_option_context | ||||
| meta_init | ||||
| meta_run | ||||
| meta_get_replace_current_wm | ||||
| meta_set_wm_name | ||||
| meta_set_gnome_wm_keybindings | ||||
| MetaExitCode | ||||
| meta_exit | ||||
| meta_quit | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-background</FILE> | ||||
| <TITLE>MetaBackground</TITLE> | ||||
| MetaBackgroundEffects | ||||
| MetaBackground | ||||
| MetaBackgroundClass | ||||
| meta_background_new | ||||
| meta_background_copy | ||||
| meta_background_load_gradient | ||||
| meta_background_load_color | ||||
| meta_background_load_still_frame | ||||
| meta_background_load_file_async | ||||
| meta_background_load_file_finish | ||||
| meta_background_get_filename | ||||
| meta_background_get_style | ||||
| meta_background_get_shading | ||||
| meta_background_get_color | ||||
| meta_background_get_second_color | ||||
| <SUBSECTION Standard> | ||||
| META_BACKGROUND | ||||
| META_BACKGROUND_CLASS | ||||
| META_BACKGROUND_GET_CLASS | ||||
| META_IS_BACKGROUND | ||||
| META_IS_BACKGROUND_CLASS | ||||
| META_TYPE_BACKGROUND | ||||
| MetaBackgroundPrivate | ||||
| meta_background_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-background-actor</FILE> | ||||
| <TITLE>MetaBackgroundActor</TITLE> | ||||
| MetaBackgroundActor | ||||
| MetaBackgroundActorClass | ||||
| meta_background_actor_new_for_screen | ||||
| MetaSnippetHook | ||||
| meta_background_actor_add_glsl_snippet | ||||
| meta_background_actor_set_uniform_float | ||||
| <SUBSECTION Standard> | ||||
| META_BACKGROUND_ACTOR | ||||
| META_BACKGROUND_ACTOR_CLASS | ||||
| META_BACKGROUND_ACTOR_GET_CLASS | ||||
| META_IS_BACKGROUND_ACTOR | ||||
| META_IS_BACKGROUND_ACTOR_CLASS | ||||
| META_TYPE_BACKGROUND_ACTOR | ||||
| MetaBackgroundActorPrivate | ||||
| meta_background_actor_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-background-group</FILE> | ||||
| <TITLE>MetaBackgroundGroup</TITLE> | ||||
| MetaBackgroundGroupClass | ||||
| meta_background_group_new | ||||
| <SUBSECTION Standard> | ||||
| META_BACKGROUND_GROUP | ||||
| META_BACKGROUND_GROUP_CLASS | ||||
| META_BACKGROUND_GROUP_GET_CLASS | ||||
| META_IS_BACKGROUND_GROUP | ||||
| META_IS_BACKGROUND_GROUP_CLASS | ||||
| META_TYPE_BACKGROUND_GROUP | ||||
| MetaBackgroundGroupPrivate | ||||
| meta_background_group_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-plugin</FILE> | ||||
| <TITLE>MetaPlugin</TITLE> | ||||
| MetaPlugin | ||||
| MetaPluginClass | ||||
| MetaPluginInfo | ||||
| meta_plugin_running | ||||
| meta_plugin_debug_mode | ||||
| meta_plugin_get_info | ||||
| MetaPluginVersion | ||||
| META_PLUGIN_DECLARE | ||||
| meta_plugin_switch_workspace_completed | ||||
| meta_plugin_minimize_completed | ||||
| meta_plugin_maximize_completed | ||||
| meta_plugin_unmaximize_completed | ||||
| meta_plugin_map_completed | ||||
| meta_plugin_destroy_completed | ||||
| MetaModalOptions | ||||
| meta_plugin_begin_modal | ||||
| meta_plugin_end_modal | ||||
| meta_plugin_get_screen | ||||
| meta_plugin_manager_set_plugin_type | ||||
| <SUBSECTION Standard> | ||||
| META_IS_PLUGIN | ||||
| META_IS_PLUGIN_CLASS | ||||
| META_PLUGIN | ||||
| META_PLUGIN_CLASS | ||||
| META_PLUGIN_GET_CLASS | ||||
| META_TYPE_PLUGIN | ||||
| MetaPluginPrivate | ||||
| meta_plugin_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-shadow-factory</FILE> | ||||
| MetaShadowParams | ||||
| meta_shadow_factory_get_default | ||||
| meta_shadow_factory_set_params | ||||
| meta_shadow_factory_get_params | ||||
| MetaShadowFactory | ||||
| MetaShadowFactoryClass | ||||
| <SUBSECTION Standard> | ||||
| META_IS_SHADOW_FACTORY | ||||
| META_IS_SHADOW_FACTORY_CLASS | ||||
| META_SHADOW_FACTORY | ||||
| META_SHADOW_FACTORY_CLASS | ||||
| META_SHADOW_FACTORY_GET_CLASS | ||||
| META_TYPE_SHADOW_FACTORY | ||||
| meta_shadow_factory_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-shaped-texture</FILE> | ||||
| <TITLE>MetaShapedTexture</TITLE> | ||||
| MetaShapedTexture | ||||
| MetaShapedTextureClass | ||||
| meta_shaped_texture_new | ||||
| meta_shaped_texture_set_create_mipmaps | ||||
| meta_shaped_texture_update_area | ||||
| meta_shaped_texture_set_pixmap | ||||
| meta_shaped_texture_get_texture | ||||
| meta_shaped_texture_set_mask_texture | ||||
| meta_shaped_texture_set_clip_region | ||||
| meta_shaped_texture_get_image | ||||
| <SUBSECTION Standard> | ||||
| META_IS_SHAPED_TEXTURE | ||||
| META_IS_SHAPED_TEXTURE_CLASS | ||||
| META_SHAPED_TEXTURE | ||||
| META_SHAPED_TEXTURE_CLASS | ||||
| META_SHAPED_TEXTURE_GET_CLASS | ||||
| META_TYPE_SHAPED_TEXTURE | ||||
| MetaShapedTexturePrivate | ||||
| meta_shaped_texture_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>meta-window-actor</FILE> | ||||
| <TITLE>MetaWindowActor</TITLE> | ||||
| MetaWindowActor | ||||
| MetaWindowActorClass | ||||
| meta_window_actor_get_x_window | ||||
| meta_window_actor_get_workspace | ||||
| meta_window_actor_get_meta_window | ||||
| meta_window_actor_get_texture | ||||
| meta_window_actor_is_override_redirect | ||||
| meta_window_actor_get_description | ||||
| meta_window_actor_showing_on_its_workspace | ||||
| meta_window_actor_is_destroyed | ||||
| <SUBSECTION Standard> | ||||
| META_IS_WINDOW_ACTOR | ||||
| META_IS_WINDOW_ACTOR_CLASS | ||||
| META_TYPE_WINDOW_ACTOR | ||||
| META_WINDOW_ACTOR | ||||
| META_WINDOW_ACTOR_CLASS | ||||
| META_WINDOW_ACTOR_GET_CLASS | ||||
| MetaWindowActorPrivate | ||||
| meta_window_actor_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>prefs</FILE> | ||||
| MetaPreference | ||||
| MetaPrefsChangedFunc | ||||
| meta_prefs_add_listener | ||||
| meta_prefs_remove_listener | ||||
| meta_prefs_init | ||||
| meta_prefs_override_preference_schema | ||||
| meta_preference_to_string | ||||
| meta_prefs_get_mouse_button_mods | ||||
| meta_prefs_get_mouse_button_resize | ||||
| meta_prefs_get_mouse_button_menu | ||||
| meta_prefs_get_focus_mode | ||||
| meta_prefs_get_focus_new_windows | ||||
| meta_prefs_get_attach_modal_dialogs | ||||
| meta_prefs_get_raise_on_click | ||||
| meta_prefs_get_theme | ||||
| meta_prefs_get_titlebar_font | ||||
| meta_prefs_get_num_workspaces | ||||
| meta_prefs_get_dynamic_workspaces | ||||
| meta_prefs_get_disable_workarounds | ||||
| meta_prefs_get_auto_raise | ||||
| meta_prefs_get_auto_raise_delay | ||||
| meta_prefs_get_focus_change_on_pointer_rest | ||||
| meta_prefs_get_gnome_accessibility | ||||
| meta_prefs_get_gnome_animations | ||||
| meta_prefs_get_edge_tiling | ||||
| meta_prefs_get_auto_maximize | ||||
| meta_prefs_get_button_layout | ||||
| meta_prefs_get_action_double_click_titlebar | ||||
| meta_prefs_get_action_middle_click_titlebar | ||||
| meta_prefs_get_action_right_click_titlebar | ||||
| meta_prefs_set_num_workspaces | ||||
| meta_prefs_get_workspace_name | ||||
| meta_prefs_change_workspace_name | ||||
| meta_prefs_get_cursor_theme | ||||
| meta_prefs_get_cursor_size | ||||
| meta_prefs_get_compositing_manager | ||||
| meta_prefs_get_force_fullscreen | ||||
| meta_prefs_set_force_fullscreen | ||||
| meta_prefs_get_workspaces_only_on_primary | ||||
| meta_prefs_get_no_tab_popup | ||||
| meta_prefs_set_no_tab_popup | ||||
| meta_prefs_get_draggable_border_width | ||||
| meta_prefs_get_ignore_request_hide_titlebar | ||||
| meta_prefs_set_ignore_request_hide_titlebar | ||||
| MetaKeyBindingAction | ||||
| MetaKeyBindingFlags | ||||
| MetaKeyCombo | ||||
| MetaKeyHandlerFunc | ||||
| meta_prefs_get_keybindings | ||||
| meta_prefs_get_keybinding_action | ||||
| meta_prefs_get_window_binding | ||||
| meta_prefs_get_overlay_binding | ||||
| meta_prefs_get_visual_bell | ||||
| meta_prefs_bell_is_audible | ||||
| meta_prefs_get_visual_bell_type | ||||
| MetaKeyHandler | ||||
| <SUBSECTION Standard> | ||||
| meta_key_binding_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>screen</FILE> | ||||
| MetaScreen | ||||
| MetaScreenClass | ||||
| meta_screen_get_screen_number | ||||
| meta_screen_get_display | ||||
| meta_screen_get_xroot | ||||
| meta_screen_get_size | ||||
| meta_screen_get_compositor_data | ||||
| meta_screen_set_compositor_data | ||||
| meta_screen_for_x_screen | ||||
| meta_screen_set_cm_selection | ||||
| meta_screen_unset_cm_selection | ||||
| meta_screen_get_startup_sequences | ||||
| meta_screen_get_workspaces | ||||
| meta_screen_get_n_workspaces | ||||
| meta_screen_get_workspace_by_index | ||||
| meta_screen_remove_workspace | ||||
| meta_screen_append_new_workspace | ||||
| meta_screen_get_active_workspace_index | ||||
| meta_screen_get_active_workspace | ||||
| meta_screen_get_n_monitors | ||||
| meta_screen_get_primary_monitor | ||||
| meta_screen_get_current_monitor | ||||
| meta_screen_get_monitor_geometry | ||||
| meta_screen_get_monitor_index_for_rect | ||||
| meta_screen_focus_default_window | ||||
| MetaScreenCorner | ||||
| meta_screen_override_workspace_layout | ||||
| <SUBSECTION Standard> | ||||
| META_IS_SCREEN | ||||
| META_IS_SCREEN_CLASS | ||||
| META_SCREEN | ||||
| META_SCREEN_CLASS | ||||
| META_SCREEN_GET_CLASS | ||||
| META_TYPE_SCREEN | ||||
| meta_screen_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>util</FILE> | ||||
| meta_is_verbose | ||||
| meta_set_verbose | ||||
| meta_is_debugging | ||||
| meta_set_debugging | ||||
| meta_is_syncing | ||||
| meta_set_syncing | ||||
| meta_set_replace_current_wm | ||||
| meta_debug_spew_real | ||||
| meta_verbose_real | ||||
| meta_bug | ||||
| meta_warning | ||||
| meta_fatal | ||||
| MetaDebugTopic | ||||
| meta_topic_real | ||||
| meta_add_verbose_topic | ||||
| meta_remove_verbose_topic | ||||
| meta_push_no_msg_prefix | ||||
| meta_pop_no_msg_prefix | ||||
| meta_unsigned_long_equal | ||||
| meta_unsigned_long_hash | ||||
| meta_frame_type_to_string | ||||
| meta_gravity_to_string | ||||
| _ | ||||
| N_ | ||||
| meta_g_utf8_strndup | ||||
| meta_free_gslist_and_elements | ||||
| meta_show_dialog | ||||
| meta_debug_spew | ||||
| meta_verbose | ||||
| meta_topic | ||||
| MetaLaterType | ||||
| meta_later_add | ||||
| meta_later_remove | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>window</FILE> | ||||
| MetaWindow | ||||
| MetaWindowClass | ||||
| MetaWindowType | ||||
| MetaMaximizeFlags | ||||
| meta_window_get_frame | ||||
| meta_window_has_focus | ||||
| meta_window_appears_focused | ||||
| meta_window_is_shaded | ||||
| meta_window_is_monitor_sized | ||||
| meta_window_is_override_redirect | ||||
| meta_window_is_skip_taskbar | ||||
| meta_window_get_rect | ||||
| meta_window_get_input_rect | ||||
| meta_window_get_outer_rect | ||||
| meta_window_get_screen | ||||
| meta_window_get_display | ||||
| meta_window_get_xwindow | ||||
| meta_window_get_window_type | ||||
| meta_window_get_window_type_atom | ||||
| meta_window_get_workspace | ||||
| meta_window_get_monitor | ||||
| meta_window_is_on_all_workspaces | ||||
| meta_window_located_on_workspace | ||||
| meta_window_is_hidden | ||||
| meta_window_activate | ||||
| meta_window_activate_with_workspace | ||||
| meta_window_get_description | ||||
| meta_window_get_wm_class | ||||
| meta_window_get_wm_class_instance | ||||
| meta_window_showing_on_its_workspace | ||||
| meta_window_get_gtk_application_id | ||||
| meta_window_get_gtk_unique_bus_name | ||||
| meta_window_get_gtk_application_object_path | ||||
| meta_window_get_gtk_window_object_path | ||||
| meta_window_get_gtk_app_menu_object_path | ||||
| meta_window_get_gtk_menubar_object_path | ||||
| meta_window_move | ||||
| meta_window_move_frame | ||||
| meta_window_move_resize_frame | ||||
| meta_window_move_to_monitor | ||||
| meta_window_resize | ||||
| meta_window_set_demands_attention | ||||
| meta_window_unset_demands_attention | ||||
| meta_window_get_startup_id | ||||
| meta_window_change_workspace_by_index | ||||
| meta_window_change_workspace | ||||
| meta_window_get_compositor_private | ||||
| meta_window_set_compositor_private | ||||
| meta_window_configure_notify | ||||
| meta_window_get_role | ||||
| meta_window_get_layer | ||||
| meta_window_find_root_ancestor | ||||
| meta_window_is_ancestor_of_transient | ||||
| MetaWindowForeachFunc | ||||
| meta_window_foreach_transient | ||||
| meta_window_foreach_ancestor | ||||
| meta_window_get_maximized | ||||
| meta_window_is_fullscreen | ||||
| meta_window_is_on_primary_monitor | ||||
| meta_window_requested_bypass_compositor | ||||
| meta_window_requested_dont_bypass_compositor | ||||
| meta_window_is_mapped | ||||
| meta_window_toplevel_is_mapped | ||||
| meta_window_get_icon_geometry | ||||
| meta_window_set_icon_geometry | ||||
| meta_window_maximize | ||||
| meta_window_unmaximize | ||||
| meta_window_minimize | ||||
| meta_window_unminimize | ||||
| meta_window_raise | ||||
| meta_window_lower | ||||
| meta_window_get_title | ||||
| meta_window_get_transient_for | ||||
| meta_window_get_transient_for_as_xid | ||||
| meta_window_delete | ||||
| meta_window_get_stable_sequence | ||||
| meta_window_get_user_time | ||||
| meta_window_get_pid | ||||
| meta_window_get_client_machine | ||||
| meta_window_is_remote | ||||
| meta_window_is_modal | ||||
| meta_window_is_attached_dialog | ||||
| meta_window_get_mutter_hints | ||||
| meta_window_get_frame_type | ||||
| meta_window_get_frame_bounds | ||||
| meta_window_get_tile_match | ||||
| meta_window_make_fullscreen | ||||
| meta_window_unmake_fullscreen | ||||
| meta_window_make_above | ||||
| meta_window_unmake_above | ||||
| meta_window_shade | ||||
| meta_window_unshade | ||||
| meta_window_stick | ||||
| meta_window_unstick | ||||
| meta_window_kill | ||||
| meta_window_focus | ||||
| meta_window_check_alive | ||||
| meta_window_get_work_area_current_monitor | ||||
| meta_window_get_work_area_for_monitor | ||||
| meta_window_get_work_area_all_monitors | ||||
| meta_window_begin_grab_op | ||||
| <SUBSECTION Standard> | ||||
| META_IS_WINDOW | ||||
| META_IS_WINDOW_CLASS | ||||
| META_TYPE_WINDOW | ||||
| META_WINDOW | ||||
| META_WINDOW_CLASS | ||||
| META_WINDOW_GET_CLASS | ||||
| meta_window_get_type | ||||
| </SECTION> | ||||
|  | ||||
| <SECTION> | ||||
| <FILE>workspace</FILE> | ||||
| MetaWorkspace | ||||
| MetaWorkspaceClass | ||||
| meta_workspace_index | ||||
| meta_workspace_get_screen | ||||
| meta_workspace_list_windows | ||||
| meta_workspace_get_work_area_for_monitor | ||||
| meta_workspace_get_work_area_all_monitors | ||||
| meta_workspace_activate | ||||
| meta_workspace_activate_with_focus | ||||
| meta_workspace_update_window_hints | ||||
| meta_workspace_set_builtin_struts | ||||
| meta_workspace_get_neighbor | ||||
| <SUBSECTION Standard> | ||||
| META_IS_WORKSPACE | ||||
| META_IS_WORKSPACE_CLASS | ||||
| META_TYPE_WORKSPACE | ||||
| META_WORKSPACE | ||||
| META_WORKSPACE_CLASS | ||||
| META_WORKSPACE_GET_CLASS | ||||
| meta_workspace_get_type | ||||
| </SECTION> | ||||
|  | ||||
							
								
								
									
										15
									
								
								doc/reference/mutter-overview.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								doc/reference/mutter-overview.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| <part id="mutter-overview"> | ||||
|  | ||||
|   <title>Overview</title> | ||||
|  | ||||
|   <partintro> | ||||
|  | ||||
|     <para>Mutter is a GObject-based library for creating compositing window managers.</para> | ||||
|  | ||||
|     <para>Compositors that wish to use Mutter must implement a subclass of #MetaPlugin and register it with meta_plugin_manager_set_plugin_type() before calling meta_init() but after g_type_init().</para> | ||||
|  | ||||
|     <para>#MetaPlugin provides virtual functions that allow to override default behavior in the window management code, such as the effect to perform when a window is created or when switching workspaces.</para> | ||||
|  | ||||
|   </partintro> | ||||
|  | ||||
| </part> | ||||
							
								
								
									
										100
									
								
								doc/reference/running-mutter.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								doc/reference/running-mutter.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| <part id="running-mutter"> | ||||
|  | ||||
|   <title>Running Mutter</title> | ||||
|  | ||||
|   <partintro> | ||||
|  | ||||
|     <section id="environment-variables"> | ||||
|       <title>Environment Variables</title> | ||||
|  | ||||
|       <para> | ||||
|         Mutter automatically checks environment variables during | ||||
|         its initialization. These environment variables are meant | ||||
|         as debug tools or overrides for default behaviours: | ||||
|       </para> | ||||
|  | ||||
|       <variablelist> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_VERBOSE</term> | ||||
|           <listitem> | ||||
|             <para>Enable verbose mode, in which more information is printed to the console. Mutter needs to be built with the --enable-verbose-mode option (enabled by default). For more fine-grained control of the output, see meta_add_verbose_topic().</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DEBUG</term> | ||||
|           <listitem> | ||||
|             <para>Traps and prints X errors to the console.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_G_FATAL_WARNINGS</term> | ||||
|           <listitem> | ||||
|             <para>Causes any logging from the domains Mutter, Gtk, Gdk, Pango or GLib to terminate the process (only when using the log functions in GLib).</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_USE_LOGFILE</term> | ||||
|           <listitem> | ||||
|             <para>Log all messages to a temporary file.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DEBUG_XINERAMA</term> | ||||
|           <listitem> | ||||
|             <para>Log extra information about support of the XINERAMA extension.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DEBUG_SM</term> | ||||
|           <listitem> | ||||
|             <para>Log extra information about session management.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DEBUG_BUTTON_GRABS</term> | ||||
|           <listitem> | ||||
|             <para>Log extra information about button grabs.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_SYNC</term> | ||||
|           <listitem> | ||||
|             <para>Call XSync after each X call.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DISPLAY</term> | ||||
|           <listitem> | ||||
|             <para>Name of the X11 display to use.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>META_DISABLE_MIPMAPS</term> | ||||
|           <listitem> | ||||
|             <para>Disable use of mipmaps for the textures that back window pixmaps.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_USE_STATIC_GRAVITY</term> | ||||
|           <listitem> | ||||
|             <para>Enable support for clients with static bit-gravity.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_WM_CLASS_FILTER</term> | ||||
|           <listitem> | ||||
|             <para>Comma-separated list of WM_CLASS names to which to restrict Mutter to.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|         <varlistentry> | ||||
|           <term>MUTTER_DISABLE_FALLBACK_COLOR</term> | ||||
|           <listitem> | ||||
|             <para>Disable fallback for themed colors, for easier detection of typographical errors.</para> | ||||
|           </listitem> | ||||
|         </varlistentry> | ||||
|       </variablelist> | ||||
|  | ||||
|     </section> | ||||
|  | ||||
|   </partintro> | ||||
| </part> | ||||
| @@ -44,6 +44,7 @@ is | ||||
| it | ||||
| ja | ||||
| ka | ||||
| kk | ||||
| kn | ||||
| ko | ||||
| ku | ||||
| @@ -80,6 +81,7 @@ sr@latin | ||||
| sv | ||||
| ta | ||||
| te | ||||
| tg | ||||
| th | ||||
| tk | ||||
| tr | ||||
|   | ||||
| @@ -12,6 +12,7 @@ src/core/display.c | ||||
| src/core/errors.c | ||||
| src/core/keybindings.c | ||||
| src/core/main.c | ||||
| src/core/monitor.c | ||||
| src/core/mutter.c | ||||
| src/core/prefs.c | ||||
| src/core/screen.c | ||||
| @@ -20,15 +21,12 @@ src/core/util.c | ||||
| src/core/window.c | ||||
| src/core/window-props.c | ||||
| src/core/xprops.c | ||||
| src/mutter.desktop.in | ||||
| src/mutter-wm.desktop.in | ||||
| src/mutter-wayland.desktop.in | ||||
| src/org.gnome.mutter.gschema.xml.in | ||||
| src/tools/mutter-message.c | ||||
| src/org.gnome.mutter.wayland.gschema.xml.in | ||||
| src/ui/frames.c | ||||
| src/ui/menu.c | ||||
| src/ui/metaaccellabel.c | ||||
| src/ui/resizepopup.c | ||||
| src/ui/theme.c | ||||
| src/ui/theme-parser.c | ||||
| src/ui/theme-viewer.c | ||||
|  | ||||
|   | ||||
							
								
								
									
										224
									
								
								po/ar.po
									
									
									
									
									
								
							
							
						
						
									
										224
									
								
								po/ar.po
									
									
									
									
									
								
							| @@ -4,14 +4,14 @@ | ||||
| # 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. | ||||
| # Khaled Hosny <khaledhosny@eglug.org>, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013. | ||||
| # Anas Afif Emad <anas.e87@gmail.com>, 2008. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity.HEAD\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2012-12-24 13:14+0200\n" | ||||
| "PO-Revision-Date: 2012-12-24 13:17+0200\n" | ||||
| "POT-Creation-Date: 2013-03-09 22:48+0200\n" | ||||
| "PO-Revision-Date: 2013-03-09 22:48+0200\n" | ||||
| "Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n" | ||||
| "Language-Team: Arabic <doc@arabeyes.org>\n" | ||||
| "Language: ar\n" | ||||
| @@ -167,8 +167,8 @@ msgid "Close window" | ||||
| msgstr "أغلق النّافذة" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| msgid "Minimize window" | ||||
| msgstr "صغّر النّافذة" | ||||
| msgid "Hide window" | ||||
| msgstr "أخفِ النّافذة" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| msgid "Move window" | ||||
| @@ -212,13 +212,17 @@ msgstr "المنظور مقسوم على اليسار" | ||||
|  | ||||
| #. 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:512 | ||||
| #: ../src/compositor/compositor.c:502 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| "\"." | ||||
| msgstr "يعمل مدير مزج آخر على الشاشة %i والعرض \"%s\"." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1180 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| msgid "Bell event" | ||||
| msgstr "حدث جرس" | ||||
| @@ -251,23 +255,28 @@ msgstr "ا_نتظر" | ||||
| msgid "_Force Quit" | ||||
| msgstr "أ_جبر الإنهاء" | ||||
|  | ||||
| #: ../src/core/display.c:394 | ||||
| #: ../src/core/display.c:402 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "الامتداد %s مفقود، لكنه مطلوب للتركيب" | ||||
|  | ||||
| #: ../src/core/display.c:491 | ||||
| #: ../src/core/display.c:494 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| "binding\n" | ||||
| msgstr "يستعمل برنامج آخر المفتاح %s بالفعل مع المغيرين %x كرابط\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" ليس اختصارا صحيحا\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "عطّل الاتصال بمدير الجلسة" | ||||
| @@ -292,12 +301,12 @@ msgstr "ابدأ الجلسة من ملف محفوظ" | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "اجعل نداءات س متزامنة" | ||||
|  | ||||
| #: ../src/core/main.c:496 | ||||
| #: ../src/core/main.c:533 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "فشلت قراءة دليل السِمات : %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:512 | ||||
| #: ../src/core/main.c:549 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -325,7 +334,7 @@ msgstr "اطبع الإصدارة" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "ملحق مَتَر الذي سيُستخدم" | ||||
|  | ||||
| #: ../src/core/prefs.c:1079 | ||||
| #: ../src/core/prefs.c:1087 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| @@ -333,12 +342,12 @@ msgstr "" | ||||
| "عطّلت الحلول الجزئيّة للتطبيقات المعطوبة . ربما لن تتصرف بعض التطبيقات " | ||||
| "بسلامة.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1154 | ||||
| #: ../src/core/prefs.c:1162 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "لا يمكن تحليل وصف الخط \"%s\" من مفتاح GSettings %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1220 | ||||
| #: ../src/core/prefs.c:1228 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| @@ -346,7 +355,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لمغير أزرار الفأرة\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1757 | ||||
| #: ../src/core/prefs.c:1780 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| @@ -355,17 +364,17 @@ msgstr "" | ||||
| "\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لارتباط المفتاح \"%s" | ||||
| "\"\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1854 | ||||
| #: ../src/core/prefs.c:1879 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "مساحة العمل %d" | ||||
|  | ||||
| #: ../src/core/screen.c:658 | ||||
| #: ../src/core/screen.c:674 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "الشاشة %d على العرض '%s' غير صحيحة\n" | ||||
|  | ||||
| #: ../src/core/screen.c:674 | ||||
| #: ../src/core/screen.c:690 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -374,18 +383,18 @@ msgstr "" | ||||
| "الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل " | ||||
| "--replace لتحُلّ محلّ مدير النوافذ الحالي.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:701 | ||||
| #: ../src/core/screen.c:717 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "لا يمكن الحصول على اختيار مدير النوافذ على الشاشة %d العرض \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/screen.c:770 | ||||
| #: ../src/core/screen.c:795 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل\n" | ||||
|  | ||||
| #: ../src/core/screen.c:955 | ||||
| #: ../src/core/screen.c:980 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "لا يمكن ترك الشاشة %d على العرض \"%s\"\n" | ||||
| @@ -482,7 +491,7 @@ msgid "Window manager error: " | ||||
| msgstr "خطأ مدير النوافذ: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7275 | ||||
| #: ../src/core/window.c:7538 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -498,7 +507,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:7941 | ||||
| #: ../src/core/window.c:8262 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -507,22 +516,22 @@ msgstr "" | ||||
| "ضبطت النافذة %s تلميحة MWM يدل على انه لا يمكن تحجيمها، لكنها تضبط الحجم " | ||||
| "الأدنى %d x %d و الحجم الأقصى %d x %d، هذا ليس له أي معنى.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:274 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "ضبط التطبيق رمز NET_WM_PID غير مفهوم %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:393 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (على %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1448 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "نافذة WM_TRANSIENT_FOR  0x%lx غير صحيحة ل %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1459 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, fuzzy, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "نافذة WM_TRANSIENT_FOR  0x%lx غير صحيحة ل %s.\n" | ||||
| @@ -645,10 +654,20 @@ msgid "" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| msgid "Select window from tab popup" | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -851,69 +870,69 @@ msgstr "Mod5" | ||||
| #. Translators: This represents the size of a window.  The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #. | ||||
| #: ../src/ui/resizepopup.c:113 | ||||
| #: ../src/ui/resizepopup.c:136 | ||||
| #, c-format | ||||
| msgid "%d x %d" | ||||
| msgstr "%d × %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:234 | ||||
| #: ../src/ui/theme.c:235 | ||||
| msgid "top" | ||||
| msgstr "أعلى" | ||||
|  | ||||
| #: ../src/ui/theme.c:236 | ||||
| #: ../src/ui/theme.c:237 | ||||
| msgid "bottom" | ||||
| msgstr "أسفل" | ||||
|  | ||||
| #: ../src/ui/theme.c:238 | ||||
| #: ../src/ui/theme.c:239 | ||||
| msgid "left" | ||||
| msgstr "يسار" | ||||
|  | ||||
| #: ../src/ui/theme.c:240 | ||||
| #: ../src/ui/theme.c:241 | ||||
| msgid "right" | ||||
| msgstr "يمين" | ||||
|  | ||||
| #: ../src/ui/theme.c:268 | ||||
| #: ../src/ui/theme.c:269 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "هندسة الإطار لا تخصص البعد \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:287 | ||||
| #: ../src/ui/theme.c:288 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "هندسة الإطار لا تخصص البعد \"%s\" للحد \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:324 | ||||
| #: ../src/ui/theme.c:325 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "النسبة الجانبية للزر %g غير معقولة" | ||||
|  | ||||
| #: ../src/ui/theme.c:336 | ||||
| #: ../src/ui/theme.c:337 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "هندسة الإطار لا تخصص حجم الأزرار" | ||||
|  | ||||
| #: ../src/ui/theme.c:1049 | ||||
| #: ../src/ui/theme.c:1050 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "يجب أن يكون للتّدرُّجات لونان على الأقل" | ||||
|  | ||||
| #: ../src/ui/theme.c:1201 | ||||
| #: ../src/ui/theme.c:1202 | ||||
| #, fuzzy, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| "parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\"" | ||||
| msgstr "" | ||||
| "يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:fg" | ||||
| "[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\"" | ||||
| "يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:" | ||||
| "fg[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1217 | ||||
| #: ../src/ui/theme.c:1218 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| "_ are valid" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/ui/theme.c:1231 | ||||
| #: ../src/ui/theme.c:1232 | ||||
| #, fuzzy, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| @@ -921,7 +940,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة" | ||||
|  | ||||
| #: ../src/ui/theme.c:1276 | ||||
| #: ../src/ui/theme.c:1277 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| @@ -930,158 +949,158 @@ msgstr "" | ||||
| "يجب أن تكون حالة تخصيصات ألوان جتك  في قوسان قائمان، مثال gtk:fg[NORMAL] " | ||||
| "NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1290 | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| "fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "" | ||||
| "يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:fg" | ||||
| "[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\"" | ||||
| "يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:" | ||||
| "fg[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1301 | ||||
| #: ../src/ui/theme.c:1302 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "لم تفهم الحالة \"%s\" في تخصيص الألوان" | ||||
|  | ||||
| #: ../src/ui/theme.c:1314 | ||||
| #: ../src/ui/theme.c:1315 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "لم يفهم جزء اللون \"%s\" في تخصيص اللون" | ||||
|  | ||||
| #: ../src/ui/theme.c:1343 | ||||
| #: ../src/ui/theme.c:1344 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| "format" | ||||
| msgstr "تهيئة الخلط \"blend/bg_color/fg_color/alpha\"، \"%s\"لا يناسب التهيئة" | ||||
|  | ||||
| #: ../src/ui/theme.c:1354 | ||||
| #: ../src/ui/theme.c:1355 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "لا يمكن تحليل قيمة الشفافية \"%s\" في اللون المخلط" | ||||
|  | ||||
| #: ../src/ui/theme.c:1364 | ||||
| #: ../src/ui/theme.c:1365 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "قيمة الشفافية \"%s\" في اللون المخلوط ليست بين 0.0 و 1.0" | ||||
|  | ||||
| #: ../src/ui/theme.c:1411 | ||||
| #: ../src/ui/theme.c:1412 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "" | ||||
| "تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة" | ||||
|  | ||||
| #: ../src/ui/theme.c:1422 | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "لا يمكن تحليل عامل التظليل \"%s\" في اللون المظلل" | ||||
|  | ||||
| #: ../src/ui/theme.c:1432 | ||||
| #: ../src/ui/theme.c:1433 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "عامل التظليل \"%s\" في اللون المظلل سلبي" | ||||
|  | ||||
| #: ../src/ui/theme.c:1461 | ||||
| #: ../src/ui/theme.c:1462 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "لا يمكن تحليل اللون \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1778 | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "تعبير الإحداثيّات يحتوي على الرمز '%s' الممنوع" | ||||
|  | ||||
| #: ../src/ui/theme.c:1805 | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| "parsed" | ||||
| msgstr "تعبير الإحداثيّات يحتوي على عدد نقطة متغيرة '%s' تعذّر تحليله" | ||||
|  | ||||
| #: ../src/ui/theme.c:1819 | ||||
| #: ../src/ui/theme.c:1820 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "تعبير الإحداثيّات يحتوي على عدد صحيح '%s' تعذّر تحليله" | ||||
|  | ||||
| #: ../src/ui/theme.c:1940 | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| "\"%s\"" | ||||
| msgstr "تعبير الإحداثيّات يحتوي على مقسوم مجهول عند بداية هذا النص: \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1997 | ||||
| #: ../src/ui/theme.c:1998 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "تعبير الإحداثيّات فارغ أو لم يفهم" | ||||
|  | ||||
| #: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154 | ||||
| #: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "تعبير الإحداثيّات ينتُج عند القسمة على صفر" | ||||
|  | ||||
| #: ../src/ui/theme.c:2162 | ||||
| #: ../src/ui/theme.c:2163 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| msgstr "تعبير الإحداثيّاتيّات يحاول استعمال مقسوم mod على عدد فاصلة متحرّكة" | ||||
|  | ||||
| #: ../src/ui/theme.c:2218 | ||||
| #: ../src/ui/theme.c:2219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "تعبير الإحداثيّات له مقسوم \"%s\" بالرغم من ترقبه قاسم" | ||||
|  | ||||
| #: ../src/ui/theme.c:2227 | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "تعبير الإحداثيّات له قاسم بالرغم من ترقبه لمقسوم" | ||||
|  | ||||
| #: ../src/ui/theme.c:2235 | ||||
| #: ../src/ui/theme.c:2236 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "انتهى تعبير الإحداثيّات بمقسوم عوضا عن قاسم" | ||||
|  | ||||
| #: ../src/ui/theme.c:2245 | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| "operand in between" | ||||
| msgstr "لتعبير الإحداثيّات مقسوم \"%c\" يتبع القاسم \"%c\" بدون قاسم بينهما" | ||||
|  | ||||
| #: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441 | ||||
| #: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "كان لتعبير الإحداثيّات متغير أو ثابت \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:2495 | ||||
| #: ../src/ui/theme.c:2496 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "غمر محلّل تعبير الإحداثيّات مجاله" | ||||
|  | ||||
| #: ../src/ui/theme.c:2524 | ||||
| #: ../src/ui/theme.c:2525 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "كان لتعبير الإحداثيّات قوس غلق بدون قوس فتح" | ||||
|  | ||||
| #: ../src/ui/theme.c:2588 | ||||
| #: ../src/ui/theme.c:2589 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "كان لتعبير الإحداثيات قوس فتح بدون قوس غلق" | ||||
|  | ||||
| #: ../src/ui/theme.c:2599 | ||||
| #: ../src/ui/theme.c:2600 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "تعبير الإحداثيات لا يملك قاسمات و مقسومات" | ||||
|  | ||||
| #: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852 | ||||
| #: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "احتوت السِمة على تعبير ادى الى خطأ: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4498 | ||||
| #: ../src/ui/theme.c:4499 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| @@ -1090,25 +1109,25 @@ msgstr "" | ||||
| "يجب تخصيص <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> " | ||||
| "لأسلوب الإطار هذا" | ||||
|  | ||||
| #: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034 | ||||
| #: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> مفقود" | ||||
|  | ||||
| #: ../src/ui/theme.c:5082 | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "فشل تحميل السِمة \"%s\": %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232 | ||||
| #: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246 | ||||
| #: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233 | ||||
| #: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "لا <%s> ضبط للسِمة \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:5254 | ||||
| #: ../src/ui/theme.c:5255 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| @@ -1117,14 +1136,14 @@ msgstr "" | ||||
| "لا أسلوب إطار مضبوط لنوع النافذة \"%s\" في السِمة \"%s\"، اضف عنصر <window " | ||||
| "type=\"%s\" style_set=\"whatever\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775 | ||||
| #: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| msgstr "" | ||||
| "الثوابت المعرفة من طرف المستخدم يجب أن تبدأ بحروف كبيرة، \"%s\" لا يبدأ بذلك" | ||||
|  | ||||
| #: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783 | ||||
| #: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "عُرِّف الثابت \"%s\" بالفعل" | ||||
| @@ -1599,56 +1618,56 @@ msgstr "حد" | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "صندوق حوار سائد" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:739 | ||||
| #: ../src/ui/theme-viewer.c:737 | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "تجربة تصميم الأزرار %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:768 | ||||
| #: ../src/ui/theme-viewer.c:766 | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g ملي ثانية لرسم إظار واحد للنافذة" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:813 | ||||
| #: ../src/ui/theme-viewer.c:811 | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "الإستعمال: metacity-theme-viewer [THEMENAME]\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:820 | ||||
| #: ../src/ui/theme-viewer.c:818 | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "خطأ عند تحميل السِمة: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:826 | ||||
| #: ../src/ui/theme-viewer.c:824 | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "حُمِّلت السِمة \"%s\" في %g ثواني\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:870 | ||||
| #: ../src/ui/theme-viewer.c:869 | ||||
| msgid "Normal Title Font" | ||||
| msgstr "خط عنوان عادي" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:876 | ||||
| #: ../src/ui/theme-viewer.c:875 | ||||
| msgid "Small Title Font" | ||||
| msgstr "خط عنوان صغير" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:882 | ||||
| #: ../src/ui/theme-viewer.c:881 | ||||
| msgid "Large Title Font" | ||||
| msgstr "خط عنوان كبير" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:887 | ||||
| #: ../src/ui/theme-viewer.c:886 | ||||
| msgid "Button Layouts" | ||||
| msgstr "تصاميم الأزرار" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:892 | ||||
| #: ../src/ui/theme-viewer.c:891 | ||||
| msgid "Benchmark" | ||||
| msgstr "علامة إهتداء" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:949 | ||||
| #: ../src/ui/theme-viewer.c:947 | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "عنوان النافذة يكون هنا" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1052 | ||||
| #: ../src/ui/theme-viewer.c:1053 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| @@ -1658,43 +1677,46 @@ msgstr "" | ||||
| "دفعت %d إطارات في %g ثوان بإتجاه العميل (%g ملي ثانية لكل إطار) و %g ثواني " | ||||
| "بوقت ساعة حائطية مع مصادر خادوم X (%g ملي ثانية لكل إطار)\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1271 | ||||
| #: ../src/ui/theme-viewer.c:1273 | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "أرجع إختبار تعبير الموقع TRUE لكنه لم يكتشف الخطأ" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1273 | ||||
| #: ../src/ui/theme-viewer.c:1275 | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "أرجع إختبار تعبير الموقع خطأ لكنه لم يكتشف الخطأ" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1277 | ||||
| #: ../src/ui/theme-viewer.c:1279 | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "تُرُقِّب خطأ لكن لم يعطى أي خطأ" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1279 | ||||
| #: ../src/ui/theme-viewer.c:1281 | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "تُرقّب %d لكن أعطى %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1285 | ||||
| #: ../src/ui/theme-viewer.c:1287 | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "لم يُترقب خطأ لكنه أرجع واحدًا: %s" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1289 | ||||
| #: ../src/ui/theme-viewer.c:1291 | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "قيمة س كانت %d، تُرُقِّب %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1292 | ||||
| #: ../src/ui/theme-viewer.c:1294 | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "قيمة ص كانت %d، تُرُقَِب %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1357 | ||||
| #: ../src/ui/theme-viewer.c:1359 | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "حُلِّلت %d تعابير الإحداثيات في %g ثواني (بمعدّل %g ثوان)\n" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "صغّر النّافذة" | ||||
|  | ||||
| #~ msgid "Comma-separated list of compositor plugins" | ||||
| #~ msgstr "قائمة بملحقات المزج مفصولة بفاصلة" | ||||
|  | ||||
|   | ||||
							
								
								
									
										453
									
								
								po/be.po
									
									
									
									
									
								
							
							
						
						
									
										453
									
								
								po/be.po
									
									
									
									
									
								
							| @@ -1,10 +1,10 @@ | ||||
| # Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2011. | ||||
| # Ihar Hrachyshka <ihar.hrachyshka@gmail.com>, 2011, 2013. | ||||
| 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: 2013-01-11 15:23+0000\n" | ||||
| "POT-Creation-Date: 2013-08-18 20:03+0000\n" | ||||
| "PO-Revision-Date: 2012-10-13 17:44+0300\n" | ||||
| "Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n" | ||||
| "Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n" | ||||
| @@ -206,7 +206,7 @@ msgstr "Падзяліць прагляд справа" | ||||
|  | ||||
| #. 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:512 | ||||
| #: ../src/compositor/compositor.c:589 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| @@ -214,7 +214,11 @@ msgid "" | ||||
| msgstr "" | ||||
| "Іншы кампазітны кіраўнік вокнаў ужо абслугоўвае экран %i дысплея \"%s\"." | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/compositor/meta-background.c:1076 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "не ўдалося стварыць фонавую тэкстуру з файла" | ||||
|  | ||||
| #: ../src/core/bell.c:322 | ||||
| msgid "Bell event" | ||||
| msgstr "Падзея з сігналам" | ||||
|  | ||||
| @@ -247,18 +251,18 @@ msgstr "_Пачакаць" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Змусіць да выхаду" | ||||
|  | ||||
| #: ../src/core/display.c:394 | ||||
| #: ../src/core/display.c:421 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "" | ||||
| "Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду" | ||||
|  | ||||
| #: ../src/core/display.c:491 | ||||
| #: ../src/core/display.c:513 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:1136 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -267,36 +271,41 @@ msgstr "" | ||||
| "Нейкая іншая праграма ўжо выкарыстоўвае як скарот клавішу %s з " | ||||
| "мадыфікатарамі %x\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/keybindings.c:1333 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" - гэта хібны клавіятурны скарот\n" | ||||
|  | ||||
| #: ../src/core/main.c:197 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Выключыць злучэнне з кіраўніком сеансаў" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:203 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Замяніць дзейнага кіраўніка вокнаў" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:209 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Вызначыць ідэнтыфікатар для кіравання сеансам" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:214 | ||||
| msgid "X Display to use" | ||||
| msgstr "Патрэбны X-дысплей" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Ініцыяваць сеанс з файла" | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:226 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Сінхронна выконваць выклікі X-сістэмы" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:534 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Не ўдалося праглядзець каталог з матывамі аздаблення: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:550 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -304,6 +313,19 @@ msgstr "" | ||||
| "Не ўдалося адшукаць матыў аздаблення! Праверце, каб каталог %s існаваў і " | ||||
| "змяшчаў звычайныя матывы.\n" | ||||
|  | ||||
| #: ../src/core/monitor.c:711 | ||||
| msgid "Built-in display" | ||||
| msgstr "Убудаваны дысплей" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor name (in case we don't know | ||||
| #. the vendor), it's Unknown followed by a size in inches, | ||||
| #. like 'Unknown 15"' | ||||
| #. | ||||
| #: ../src/core/monitor.c:739 | ||||
| #, c-format | ||||
| msgid "Unknown %s" | ||||
| msgstr "Невядомы %s" | ||||
|  | ||||
| #: ../src/core/mutter.c:40 | ||||
| #, c-format | ||||
| msgid "" | ||||
| @@ -328,7 +350,7 @@ msgstr "Вывесці нумар версіі праграмы" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Патрэбны плугін Mutter" | ||||
|  | ||||
| #: ../src/core/prefs.c:1087 | ||||
| #: ../src/core/prefs.c:1202 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| @@ -336,12 +358,12 @@ msgstr "" | ||||
| "Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя " | ||||
| "праграмы могуць перастаць працаваць, як мае быць.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1162 | ||||
| #: ../src/core/prefs.c:1277 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1228 | ||||
| #: ../src/core/prefs.c:1343 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| @@ -350,7 +372,7 @@ msgstr "" | ||||
| "Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае " | ||||
| "мадыфікатар мышынай кнопкі\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1780 | ||||
| #: ../src/core/prefs.c:1909 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| @@ -359,17 +381,17 @@ msgstr "" | ||||
| "Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае " | ||||
| "клавіятурны скарот \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1877 | ||||
| #: ../src/core/prefs.c:1999 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Прастора працы %d" | ||||
|  | ||||
| #: ../src/core/screen.c:658 | ||||
| #: ../src/core/screen.c:534 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Экран %d на дысплеі \"%s\" хібны\n" | ||||
|  | ||||
| #: ../src/core/screen.c:674 | ||||
| #: ../src/core/screen.c:550 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -378,19 +400,19 @@ msgstr "" | ||||
| "Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго " | ||||
| "новым, дадайце опцыю --replace.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:701 | ||||
| #: ../src/core/screen.c:577 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "" | ||||
| "Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/screen.c:770 | ||||
| #: ../src/core/screen.c:655 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n" | ||||
|  | ||||
| #: ../src/core/screen.c:955 | ||||
| #: ../src/core/screen.c:846 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n" | ||||
| @@ -451,46 +473,45 @@ msgstr "" | ||||
| "Гэтыя вокны не падтрымліваюць функцыі захавання дзейнага ладу працы, і таму " | ||||
| "іх прыйдзецца запусціць уручную пасля наступнага ўваходу ў сістэму." | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:84 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "Не ўдалося адкрыць адладачны журнал: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:94 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "Не ўдалося выканаць fdopen() для журнальнага файла %s: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:100 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "Журнальны файл %s адкрыты\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| #: ../src/core/util.c:119 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "" | ||||
| "Праграма \"Mutter\" была скампіляваная без падтрымкі падрабязнага " | ||||
| "пратакаліравання\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:264 | ||||
| msgid "Window manager: " | ||||
| msgstr "Кіраўнік вокнаў: " | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:414 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "Хіба ў кіраўніку вокнаў: " | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:445 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "Перасцярога ад кіраўніка вокнаў: " | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:473 | ||||
| msgid "Window manager error: " | ||||
| msgstr "Памылка кіраўніка вокнаў: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7279 | ||||
| #: ../src/core/window.c:7533 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -506,7 +527,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:7945 | ||||
| #: ../src/core/window.c:8257 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -516,22 +537,22 @@ msgstr "" | ||||
| "памеру, але разам з гэтым прызначыла для сябе мінімальны памер %d x %d і " | ||||
| "максімальны памер %d x %d. Такія паводзіны не маюць сэнсу.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:274 | ||||
| #: ../src/core/window-props.c:347 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Праграма прызначыла памылковае значэнне _NET_WM_PID %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:393 | ||||
| #: ../src/core/window-props.c:463 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (на %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1448 | ||||
| #: ../src/core/window-props.c:1546 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Для %2$s вызначана хібнае акно WM_TRANSIENT_FOR 0x%1$lx.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1459 | ||||
| #: ../src/core/window-props.c:1557 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "WM_TRANSIENT_FOR акно 0x%lx для %s стварыла б цыкл.\n" | ||||
| @@ -681,12 +702,15 @@ msgstr "" | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
| "Аўтаматычна максімалізаваць вокны, якія расцягнутыя амаль на ўвесь экран" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "" | ||||
| "If enabled, monitor nearly monitor sized windows automatically get maximized " | ||||
| "when mapped." | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Калі ўключана, новыя вокны з памерам, блізкім да памераў манітора, будуць " | ||||
| "аўтаматычна максімалізавацца." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| @@ -696,109 +720,104 @@ msgstr "Выбраць акно з выплыўнога акенца" | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Закрыць выплыўное акенца" | ||||
|  | ||||
| #: ../src/tools/mutter-message.c:123 | ||||
| #, c-format | ||||
| msgid "Usage: %s\n" | ||||
| msgstr "Правілы выкарыстання: %s\n" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:69 | ||||
| #: ../src/ui/menu.c:67 | ||||
| msgid "Mi_nimize" | ||||
| msgstr "_Мінімалізаваць" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:71 | ||||
| #: ../src/ui/menu.c:69 | ||||
| msgid "Ma_ximize" | ||||
| msgstr "Ма_ксімалізаваць" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:73 | ||||
| #: ../src/ui/menu.c:71 | ||||
| msgid "Unma_ximize" | ||||
| msgstr "Скасаваць ма_ксімалізацыю" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:75 | ||||
| #: ../src/ui/menu.c:73 | ||||
| msgid "Roll _Up" | ||||
| msgstr "_Скруціць акно ў загаловак" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:77 | ||||
| #: ../src/ui/menu.c:75 | ||||
| msgid "_Unroll" | ||||
| msgstr "Рас_круціць акно з загалоўка" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:79 | ||||
| #: ../src/ui/menu.c:77 | ||||
| msgid "_Move" | ||||
| msgstr "_Перамясціць акно" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:81 | ||||
| #: ../src/ui/menu.c:79 | ||||
| msgid "_Resize" | ||||
| msgstr "_Змяніць памер акна" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:83 | ||||
| #: ../src/ui/menu.c:81 | ||||
| msgid "Move Titlebar On_screen" | ||||
| msgstr "Перамясціць загаловак акна па _экране" | ||||
|  | ||||
| #. separator | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:86 ../src/ui/menu.c:88 | ||||
| #: ../src/ui/menu.c:84 ../src/ui/menu.c:86 | ||||
| msgid "Always on _Top" | ||||
| msgstr "Заўсёды _наверсе" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:90 | ||||
| #: ../src/ui/menu.c:88 | ||||
| msgid "_Always on Visible Workspace" | ||||
| msgstr "Заўсёды на _бачнай прасторы працы" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:92 | ||||
| #: ../src/ui/menu.c:90 | ||||
| msgid "_Only on This Workspace" | ||||
| msgstr "_Толькі на гэтай прасторы працы" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:94 | ||||
| #: ../src/ui/menu.c:92 | ||||
| msgid "Move to Workspace _Left" | ||||
| msgstr "Перамясціць на прастору працы з_лева" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:96 | ||||
| #: ../src/ui/menu.c:94 | ||||
| msgid "Move to Workspace R_ight" | ||||
| msgstr "Перамясціць на прастору працы с_права" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:98 | ||||
| #: ../src/ui/menu.c:96 | ||||
| msgid "Move to Workspace _Up" | ||||
| msgstr "Перамясціць на прастору працы з_верху" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:100 | ||||
| #: ../src/ui/menu.c:98 | ||||
| msgid "Move to Workspace _Down" | ||||
| msgstr "Перамясціць на прастору працы з_нізу" | ||||
|  | ||||
| #. separator | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| #: ../src/ui/menu.c:104 | ||||
| #: ../src/ui/menu.c:102 | ||||
| msgid "_Close" | ||||
| msgstr "_Закрыць акно" | ||||
|  | ||||
| #: ../src/ui/menu.c:204 | ||||
| #: ../src/ui/menu.c:202 | ||||
| #, c-format | ||||
| msgid "Workspace %d%n" | ||||
| msgstr "Прастора працы %d%n" | ||||
|  | ||||
| #: ../src/ui/menu.c:214 | ||||
| #: ../src/ui/menu.c:212 | ||||
| #, c-format | ||||
| msgid "Workspace 1_0" | ||||
| msgstr "Прастора працы 1_0" | ||||
|  | ||||
| #: ../src/ui/menu.c:216 | ||||
| #: ../src/ui/menu.c:214 | ||||
| #, c-format | ||||
| msgid "Workspace %s%d" | ||||
| msgstr "Прастора працы %s%d" | ||||
|  | ||||
| #: ../src/ui/menu.c:397 | ||||
| #: ../src/ui/menu.c:384 | ||||
| msgid "Move to Another _Workspace" | ||||
| msgstr "П_ерамясціць на іншую прастору працы" | ||||
|  | ||||
| @@ -895,54 +914,54 @@ msgstr "Mod5" | ||||
| #. Translators: This represents the size of a window.  The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #. | ||||
| #: ../src/ui/resizepopup.c:113 | ||||
| #: ../src/ui/resizepopup.c:136 | ||||
| #, c-format | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:235 | ||||
| #: ../src/ui/theme.c:236 | ||||
| msgid "top" | ||||
| msgstr "верхнюю" | ||||
|  | ||||
| #: ../src/ui/theme.c:237 | ||||
| #: ../src/ui/theme.c:238 | ||||
| msgid "bottom" | ||||
| msgstr "ніжнюю" | ||||
|  | ||||
| #: ../src/ui/theme.c:239 | ||||
| #: ../src/ui/theme.c:240 | ||||
| msgid "left" | ||||
| msgstr "левую" | ||||
|  | ||||
| #: ../src/ui/theme.c:241 | ||||
| #: ../src/ui/theme.c:242 | ||||
| msgid "right" | ||||
| msgstr "правую" | ||||
|  | ||||
| #: ../src/ui/theme.c:269 | ||||
| #: ../src/ui/theme.c:270 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу" | ||||
|  | ||||
| #: ../src/ui/theme.c:288 | ||||
| #: ../src/ui/theme.c:289 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "" | ||||
| "апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:325 | ||||
| #: ../src/ui/theme.c:326 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "Прапорцыі кнопкі %g не маюць сэнсу" | ||||
|  | ||||
| #: ../src/ui/theme.c:337 | ||||
| #: ../src/ui/theme.c:338 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак" | ||||
|  | ||||
| #: ../src/ui/theme.c:1050 | ||||
| #: ../src/ui/theme.c:1051 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "Градыент мусіць мець прынамсі два колеры" | ||||
|  | ||||
| #: ../src/ui/theme.c:1202 | ||||
| #: ../src/ui/theme.c:1203 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| @@ -951,7 +970,7 @@ msgstr "" | ||||
| "Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога " | ||||
| "колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1218 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| @@ -960,7 +979,7 @@ msgstr "" | ||||
| "Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя " | ||||
| "толькі A-Za-z0-9-_" | ||||
|  | ||||
| #: ../src/ui/theme.c:1232 | ||||
| #: ../src/ui/theme.c:1233 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| @@ -969,7 +988,7 @@ msgstr "" | ||||
| "Фармат gtk:custom: \"gtk:custom(назва_колеру,запасны_колер)\"; \"%s\" не " | ||||
| "адпавядае фармату" | ||||
|  | ||||
| #: ../src/ui/theme.c:1277 | ||||
| #: ../src/ui/theme.c:1278 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| @@ -978,7 +997,7 @@ msgstr "" | ||||
| "Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:" | ||||
| "fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #: ../src/ui/theme.c:1292 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| @@ -988,17 +1007,17 @@ msgstr "" | ||||
| "напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s" | ||||
| "\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1302 | ||||
| #: ../src/ui/theme.c:1303 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру" | ||||
|  | ||||
| #: ../src/ui/theme.c:1315 | ||||
| #: ../src/ui/theme.c:1316 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру" | ||||
|  | ||||
| #: ../src/ui/theme.c:1344 | ||||
| #: ../src/ui/theme.c:1345 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| @@ -1007,58 +1026,58 @@ msgstr "" | ||||
| "Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не " | ||||
| "адпавядае фармату." | ||||
|  | ||||
| #: ../src/ui/theme.c:1355 | ||||
| #: ../src/ui/theme.c:1356 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры" | ||||
|  | ||||
| #: ../src/ui/theme.c:1365 | ||||
| #: ../src/ui/theme.c:1366 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "" | ||||
| "Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да " | ||||
| "1.0" | ||||
|  | ||||
| #: ../src/ui/theme.c:1412 | ||||
| #: ../src/ui/theme.c:1413 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "" | ||||
| "Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату." | ||||
|  | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #: ../src/ui/theme.c:1424 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры" | ||||
|  | ||||
| #: ../src/ui/theme.c:1433 | ||||
| #: ../src/ui/theme.c:1434 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны" | ||||
|  | ||||
| #: ../src/ui/theme.c:1462 | ||||
| #: ../src/ui/theme.c:1463 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "Не ўдалося разабраць колер \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #: ../src/ui/theme.c:1780 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #: ../src/ui/theme.c:1807 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| "parsed" | ||||
| msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1820 | ||||
| #: ../src/ui/theme.c:1821 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #: ../src/ui/theme.c:1942 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| @@ -1066,17 +1085,17 @@ msgid "" | ||||
| msgstr "" | ||||
| "Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1998 | ||||
| #: ../src/ui/theme.c:1999 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "Каардынатны выраз пусты ці незразумелы" | ||||
|  | ||||
| #: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155 | ||||
| #: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "Каардынатны выраз вымагае дзялення на нуль" | ||||
|  | ||||
| #: ../src/ui/theme.c:2163 | ||||
| #: ../src/ui/theme.c:2164 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| @@ -1084,24 +1103,24 @@ msgstr "" | ||||
| "Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з " | ||||
| "нефіксаванай коскай" | ||||
|  | ||||
| #: ../src/ui/theme.c:2219 | ||||
| #: ../src/ui/theme.c:2220 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "" | ||||
| "У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд" | ||||
|  | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар" | ||||
|  | ||||
| #: ../src/ui/theme.c:2236 | ||||
| #: ../src/ui/theme.c:2237 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам" | ||||
|  | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #: ../src/ui/theme.c:2247 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| @@ -1110,41 +1129,41 @@ msgstr "" | ||||
| "У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж " | ||||
| "імі няма аперанда" | ||||
|  | ||||
| #: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442 | ||||
| #: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:2496 | ||||
| #: ../src/ui/theme.c:2497 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер." | ||||
|  | ||||
| #: ../src/ui/theme.c:2525 | ||||
| #: ../src/ui/theme.c:2526 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "" | ||||
| "У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б " | ||||
| "адкрываліся" | ||||
|  | ||||
| #: ../src/ui/theme.c:2589 | ||||
| #: ../src/ui/theme.c:2590 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "" | ||||
| "У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б " | ||||
| "закрываліся" | ||||
|  | ||||
| #: ../src/ui/theme.c:2600 | ||||
| #: ../src/ui/theme.c:2601 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў" | ||||
|  | ||||
| #: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853 | ||||
| #: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4499 | ||||
| #: ../src/ui/theme.c:4500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| @@ -1153,25 +1172,25 @@ msgstr "" | ||||
| "Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" " | ||||
| "draw_ops=\"whatever\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035 | ||||
| #: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #: ../src/ui/theme.c:5082 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "Не ўдалося загрузіць матыў аздаблення \"%s\": %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233 | ||||
| #: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247 | ||||
| #: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232 | ||||
| #: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5255 | ||||
| #: ../src/ui/theme.c:5254 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| @@ -1180,7 +1199,7 @@ msgstr "" | ||||
| "Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s" | ||||
| "\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>." | ||||
|  | ||||
| #: ../src/ui/theme.c:5659 ../src/ui/theme.c:5721 ../src/ui/theme.c:5784 | ||||
| #: ../src/ui/theme.c:5661 ../src/ui/theme.c:5723 ../src/ui/theme.c:5786 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| @@ -1188,7 +1207,7 @@ msgstr "" | ||||
| "Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай " | ||||
| "літары. \"%s\" не адпавядае гэтаму патрабаванню." | ||||
|  | ||||
| #: ../src/ui/theme.c:5667 ../src/ui/theme.c:5729 ../src/ui/theme.c:5792 | ||||
| #: ../src/ui/theme.c:5669 ../src/ui/theme.c:5731 ../src/ui/theme.c:5794 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "Канстанта \"%s\" ужо азначана" | ||||
| @@ -1574,208 +1593,8 @@ msgstr "Выкарыстанне тэксту ўнутры элемента <%s> | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> двойчы вызначаны для гэтага матыву аздаблення" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4336 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Памылка пошуку правільнага файла для матыву аздаблення %s\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:99 | ||||
| msgid "_Windows" | ||||
| msgstr "_Вокны" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:100 | ||||
| msgid "_Dialog" | ||||
| msgstr "_Дыялогавае акенца" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:101 | ||||
| msgid "_Modal dialog" | ||||
| msgstr "_Мадальнае дыялогавае акенца" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:102 | ||||
| msgid "_Utility" | ||||
| msgstr "_Дапаможная праграма" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:103 | ||||
| msgid "_Splashscreen" | ||||
| msgstr "_Экранная застаўка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:104 | ||||
| msgid "_Top dock" | ||||
| msgstr "_Верхняя ўбудова" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:105 | ||||
| msgid "_Bottom dock" | ||||
| msgstr "_Ніжняя ўбудова" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:106 | ||||
| msgid "_Left dock" | ||||
| msgstr "_Левая ўбудова" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:107 | ||||
| msgid "_Right dock" | ||||
| msgstr "_Правая ўбудова" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:108 | ||||
| msgid "_All docks" | ||||
| msgstr "_Усе ўбудовы" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:109 | ||||
| msgid "Des_ktop" | ||||
| msgstr "_Стол" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:115 | ||||
| msgid "Open another one of these windows" | ||||
| msgstr "Адкрыць чарговае з гэтых вокнаў" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:117 | ||||
| msgid "This is a demo button with an 'open' icon" | ||||
| msgstr "Гэта дэманстрацыйная кнопка са значком \"Адкрыць\"" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:119 | ||||
| msgid "This is a demo button with a 'quit' icon" | ||||
| msgstr "Гэта дэманстрацыйная кнопка са значком \"Выйсці\"" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:248 | ||||
| msgid "This is a sample message in a sample dialog" | ||||
| msgstr "Гэта ўзорнае паведамленне ва ўзорным дыялогавым акенцы" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:328 | ||||
| #, c-format | ||||
| msgid "Fake menu item %d\n" | ||||
| msgstr "Несапраўдны пункт меню %d\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:363 | ||||
| msgid "Border-only window" | ||||
| msgstr "Акно толькі з аблямоўкай" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:365 | ||||
| msgid "Bar" | ||||
| msgstr "Стужка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:382 | ||||
| msgid "Normal Application Window" | ||||
| msgstr "Звычайнае акно праграмы" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:386 | ||||
| msgid "Dialog Box" | ||||
| msgstr "Дыялогавае акенца" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:390 | ||||
| msgid "Modal Dialog Box" | ||||
| msgstr "Мадальнае дыялогавае акенца" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:394 | ||||
| msgid "Utility Palette" | ||||
| msgstr "Дапаможная палітра" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:398 | ||||
| msgid "Torn-off Menu" | ||||
| msgstr "Адчэпленае меню" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:402 | ||||
| msgid "Border" | ||||
| msgstr "Аблямоўка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:406 | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "Прычапленае мадальнае дыялогавае акенца" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:739 | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "Выпрабаванне размяшчэння кнопак %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:768 | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g мілісекунд, каб намаляваць адну рамку акна" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:813 | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "Правілы карыстання: metacity-theme-viewer [НАЗВА_МАТЫВУ]\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:820 | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "Памылка загрузкі матыву аздаблення: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:826 | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "Матыў аздаблення \"%s\" загружаны за %g секунд\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:871 | ||||
| msgid "Normal Title Font" | ||||
| msgstr "Звычайны шрыфт загалоўка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:877 | ||||
| msgid "Small Title Font" | ||||
| msgstr "Маленькі шрыфт загалоўка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:883 | ||||
| msgid "Large Title Font" | ||||
| msgstr "Вялікі шрыфт загалоўка" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:888 | ||||
| msgid "Button Layouts" | ||||
| msgstr "Размяшчэнне кнопак" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:893 | ||||
| msgid "Benchmark" | ||||
| msgstr "Выпрабаванне" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:949 | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "Месца для загалоўка акна" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1055 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| "seconds wall clock time including X server resources (%g milliseconds per " | ||||
| "frame)\n" | ||||
| msgstr "" | ||||
| "Намалявана %d рамак цягам %g секунд кліенцкага часу (%g мілісекунд на рамку) " | ||||
| "і %g секунд каляндарнага часу, уключна з рэсурсамі X-сервера (%g мілісекунд " | ||||
| "на рамку)\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1275 | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "выпрабаванне выразу пазіцыі вярнула TRUE, але паведаміла аб памылцы" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1277 | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "" | ||||
| "выпрабаванне выразу пазіцыі вярнула FALSE, але не паведаміла аб памылцы" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1281 | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "Чакалася памылка, але звесткі не атрыманыя" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1283 | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "Чакалася памылка %d, але атрымана %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1289 | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "Атрымана нечаканая памылка: %s" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1293 | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "X-значэнне было %d, а чакалася %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1296 | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "Y-значэнне было %d, а чакалася %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1361 | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
| "%d каардынатных выразаў разабраныя за %g секунд (у сярэднім %g секунд)\n" | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										112
									
								
								po/el.po
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								po/el.po
									
									
									
									
									
								
							| @@ -18,8 +18,8 @@ msgstr "" | ||||
| "Project-Id-Version: metacity.gnome-2-26\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter" | ||||
| "&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-02-20 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-02-26 11:38+0300\n" | ||||
| "POT-Creation-Date: 2013-03-01 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-03-09 09:02+0300\n" | ||||
| "Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) <dmtrs32@gmail.com>\n" | ||||
| "Language-Team: team@gnome.gr\n" | ||||
| "Language: el\n" | ||||
| @@ -228,7 +228,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Εκτελείται ένας άλλος διαχειριστής παραθύρων στην οθόνη %i προβολή \"%s\"." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1111 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "η υφή παρασκηνίου δεν μπόρεσε να δημιουργηθεί από αρχείο" | ||||
|  | ||||
| @@ -243,7 +243,6 @@ msgstr "Άγνωστη αίτηση πληροφοριών παραθύρου: % | ||||
|  | ||||
| #: ../src/core/delete.c:111 | ||||
| #, c-format | ||||
| #| msgid "%s is not responding." | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "Το “%s” δεν ανταποκρίνεται." | ||||
|  | ||||
| @@ -267,18 +266,18 @@ msgstr "_Αναμονή" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Εξαναγκασμός σε τερματισμό" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Λείπει η επέκταση %s που απαιτείται για compositing" | ||||
|  | ||||
| # gconf/gconf-internals.c:2416 | ||||
| #: ../src/core/display.c:485 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Αποτυχία ανοίγματος οθόνης του συστήματος παραθύρων Χ '%s'\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -287,6 +286,12 @@ msgstr "" | ||||
| "Κάποιο άλλο πρόγραμμα χρησιμοποιεί ήδη το κλειδί %s με μετατροπείς %x ώς " | ||||
| "δεσμό\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| #| msgid "\"%s\" is not a valid value for focus attribute" | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "Το \"%s\" δεν είναι έγκυρος επιταχυντής\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Απενεργοποίηση σύνδεσης στο διαχειριστή συνεδρίας" | ||||
| @@ -395,9 +400,10 @@ msgstr "Η οθόνη %d στην προβολή '%s' δεν είναι έγκυ | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| "replace option to replace the current window manager.\n" | ||||
| msgstr "Η οθόνη %d στην προβολή \"%s\" έχει ήδη ένα διαχειριστή παραθύρων· προσπαθήστε " | ||||
| "να χρησιμοποιήσετε την επιλογή --replace για να αντικαταστήσετε τον τρέχων " | ||||
| "διαχειριστή παραθύρων.\n" | ||||
| msgstr "" | ||||
| "Η οθόνη %d στην προβολή \"%s\" έχει ήδη ένα διαχειριστή παραθύρων· " | ||||
| "προσπαθήστε να χρησιμοποιήσετε την επιλογή --replace για να αντικαταστήσετε " | ||||
| "τον τρέχων διαχειριστή παραθύρων.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:716 | ||||
| #, c-format | ||||
| @@ -516,7 +522,7 @@ msgid "Window manager error: " | ||||
| msgstr "Σφάλμα διαχειριστή παραθύρων: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7503 | ||||
| #: ../src/core/window.c:7539 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -532,31 +538,32 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8227 | ||||
| #: ../src/core/window.c:8263 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| "%d x %d and max size %d x %d; this doesn't make much sense.\n" | ||||
| msgstr "Το παράθυρο %s όρισε μια συμβουλή MWM ότι δεν είναι δυνατή η αλλαγή " | ||||
| msgstr "" | ||||
| "Το παράθυρο %s όρισε μια συμβουλή MWM ότι δεν είναι δυνατή η αλλαγή " | ||||
| "μεγέθους, αλλά όρισε ελάχιστο μέγεθος %d x %d και μέγιστο μέγεθος %d x %d; " | ||||
| "αυτό είναι ακατανόητο.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:304 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Η εφαρμογή έθεσε ένα πλαστό _NET_WM_PID %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:423 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (σε %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1506 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Άκυρο WM_TRANSIENT_FOR παράθυρο 0x%lx που καθορίστηκε για %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "" | ||||
| @@ -588,7 +595,8 @@ msgstr "Η ιδιότητα %s στο παράθυρο 0x%lx περιείχε μ | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n" | ||||
| msgstr "Η ιδιότητα %s στο παράθυρο 0x%lx περιείχε μη έγκυρο UTF-8  για το " | ||||
| msgstr "" | ||||
| "Η ιδιότητα %s στο παράθυρο 0x%lx περιείχε μη έγκυρο UTF-8  για το " | ||||
| "αντικείμενο %d στη λίστα\n" | ||||
|  | ||||
| #: ../src/mutter.desktop.in.h:1 ../src/mutter-wm.desktop.in.h:1 | ||||
| @@ -606,10 +614,10 @@ msgid "" | ||||
| "\"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. Αναμένεται ότι " | ||||
| "αυτή η αντιστοίχιση θα είναι είτε η προεπιλογή ή θα ορίζεται στο κενό " | ||||
| "αλφαριθμητικό." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| @@ -639,8 +647,8 @@ msgid "" | ||||
| "area. Dropping windows on the top screen edge maximizes them completely." | ||||
| msgstr "" | ||||
| "Αν είναι ενεργοποιημένο, με τη μετακίνηση των παραθύρων στις κάθετες πλευρές " | ||||
| "της οθόνης τα παράθυρα μεγιστοποιούνται και αλλάζουν το μέγεθος τους ώστε " | ||||
| "να καλύψουν το μισό της οθόνης. Το σύρσιμο των παραθύρων στο πάνω μέρος της " | ||||
| "της οθόνης τα παράθυρα μεγιστοποιούνται και αλλάζουν το μέγεθος τους ώστε να " | ||||
| "καλύψουν το μισό της οθόνης. Το σύρσιμο των παραθύρων στο πάνω μέρος της " | ||||
| "οθόνης τα μεγιστοποιεί ολοκληρωτικά." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| @@ -1012,8 +1020,8 @@ msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| "where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "" | ||||
| "Ο καθορισμός χρώματος GTK θα πρέπει να έχει τη κατάσταση σε αγκύλες, π.χ " | ||||
| "gtk:fg[NORMAL] όπου NORMAL είναι η κατάσταση· αδυναμία ανάλυσης \"%s\"" | ||||
| "Ο καθορισμός χρώματος GTK θα πρέπει να έχει τη κατάσταση σε αγκύλες, π.χ gtk:" | ||||
| "fg[NORMAL] όπου NORMAL είναι η κατάσταση· αδυναμία ανάλυσης \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #, c-format | ||||
| @@ -1060,8 +1068,8 @@ msgstr "" | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "" | ||||
| "Ο τύπος σκίασης είναι \"shade/base_color/factor\", το \"%s\" δεν ταιριάζει στον " | ||||
| "τύπο" | ||||
| "Ο τύπος σκίασης είναι \"shade/base_color/factor\", το \"%s\" δεν ταιριάζει " | ||||
| "στον τύπο" | ||||
|  | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #, c-format | ||||
| @@ -1081,7 +1089,8 @@ msgstr "Αδύνατη η ανάλυση χρώματος \"%s\"" | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "Η έκφραση συντεταγμένης περιέχει ένα χαρακτήρα '%s' που δεν επιτρέπεται" | ||||
| msgstr "" | ||||
| "Η έκφραση συντεταγμένης περιέχει ένα χαρακτήρα '%s' που δεν επιτρέπεται" | ||||
|  | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #, c-format | ||||
| @@ -1096,8 +1105,7 @@ msgstr "" | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "" | ||||
| "Η έκφραση συντεταγμένης περιέχει έναν ακέραιο '%s' που δεν μπορεί να " | ||||
| "αναλυθεί" | ||||
| "Η έκφραση συντεταγμένης περιέχει έναν ακέραιο '%s' που δεν μπορεί να αναλυθεί" | ||||
|  | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #, c-format | ||||
| @@ -1130,7 +1138,8 @@ msgstr "" | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "Η συντεταγμένη έκφραση έχει έναν τελεστή \"%s\" ενώ αναμενόταν τελεστέος" | ||||
| msgstr "" | ||||
| "Η συντεταγμένη έκφραση έχει έναν τελεστή \"%s\" ενώ αναμενόταν τελεστέος" | ||||
|  | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #, c-format | ||||
| @@ -1199,7 +1208,8 @@ msgstr "" | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "Λείπει <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "Λείπει <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #, c-format | ||||
| @@ -1219,8 +1229,8 @@ msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| "type=\"%s\" style_set=\"whatever\"/> element" | ||||
| msgstr "" | ||||
| "Δεν έχει ορισθεί τεχνοτροπία πλαισίου για τον τύπο παραθύρου \"%s\" στο θέμα \"" | ||||
| "%s\", προσθέστε ένα <window type=\"%s\" style_set=\"whatever\"/> στοιχείο" | ||||
| "Δεν έχει ορισθεί τεχνοτροπία πλαισίου για τον τύπο παραθύρου \"%s\" στο θέμα " | ||||
| "\"%s\", προσθέστε ένα <window type=\"%s\" style_set=\"whatever\"/> στοιχείο" | ||||
|  | ||||
| #: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787 | ||||
| #, c-format | ||||
| @@ -1298,7 +1308,8 @@ msgstr "Η γωνία θα πρέπει να είναι ανάμεσα σε 0.0 | ||||
| #: ../src/ui/theme-parser.c:798 | ||||
| #, c-format | ||||
| msgid "Alpha must be between 0.0 (invisible) and 1.0 (fully opaque), was %g\n" | ||||
| msgstr "Το Alpha θα πρέπει να είναι ανάμεσα σε 0.0 (αόρατο) και 1.0 (πλήρης ορατό), " | ||||
| msgstr "" | ||||
| "Το Alpha θα πρέπει να είναι ανάμεσα σε 0.0 (αόρατο) και 1.0 (πλήρης ορατό), " | ||||
| "ήταν %g\n" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:863 | ||||
| @@ -1390,13 +1401,15 @@ msgstr "Το περίγραμμα \"%s\" είναι άγνωστο" | ||||
| #, c-format | ||||
| msgid "No \"start_angle\" or \"from\" attribute on element <%s>" | ||||
| msgstr "" | ||||
| "Δεν υπάρχει γνώρισμα \"έναρξη_γωνίας\" ή γνώρισμα \"από\" για το στοιχείο <%s>" | ||||
| "Δεν υπάρχει γνώρισμα \"έναρξη_γωνίας\" ή γνώρισμα \"από\" για το στοιχείο <" | ||||
| "%s>" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:1875 | ||||
| #, c-format | ||||
| msgid "No \"extent_angle\" or \"to\" attribute on element <%s>" | ||||
| msgstr "" | ||||
| "Δεν υπάρχει γνώρισμα \"επέκταση_γωνίας\" ή γνώρισμα \"σε\" για το στοιχείο <%s>" | ||||
| "Δεν υπάρχει γνώρισμα \"επέκταση_γωνίας\" ή γνώρισμα \"σε\" για το στοιχείο <" | ||||
| "%s>" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:2115 | ||||
| #, c-format | ||||
| @@ -1433,8 +1446,8 @@ msgstr "Δεν έχουν ορισθεί <draw_ops> που ονομάζοντα | ||||
| #, c-format | ||||
| msgid "Including draw_ops \"%s\" here would create a circular reference" | ||||
| msgstr "" | ||||
| "Αν συμπεριλάβετε εδώ λειτουργίες_σχεδίασης \"%s\" θα δημιουργήσετε μια κυκλική " | ||||
| "αναφορά" | ||||
| "Αν συμπεριλάβετε εδώ λειτουργίες_σχεδίασης \"%s\" θα δημιουργήσετε μια " | ||||
| "κυκλική αναφορά" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:2917 | ||||
| #, c-format | ||||
| @@ -1531,8 +1544,8 @@ msgid "" | ||||
| "Can't have a two draw_ops for a <piece> element (theme specified a draw_ops " | ||||
| "attribute and also a <draw_ops> element, or specified two elements)" | ||||
| msgstr "" | ||||
| "Δεν μπορεί να υπάρχουν δυο λειτουργίες_σχεδίασης για ένα στοιχείο <piece> ( " | ||||
| "το θέμα έχει καθορίσει ένα γνώρισμα λειτουργίας_σχεδίασης και ακόμα ένα " | ||||
| "Δεν μπορεί να υπάρχουν δυο λειτουργίες_σχεδίασης για ένα στοιχείο <piece> " | ||||
| "( το θέμα έχει καθορίσει ένα γνώρισμα λειτουργίας_σχεδίασης και ακόμα ένα " | ||||
| "στοιχείο <draw_ops> ή καθόρισε δύο στοιχεία)" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:3332 | ||||
| @@ -1540,8 +1553,8 @@ msgid "" | ||||
| "Can't have a two draw_ops for a <button> element (theme specified a draw_ops " | ||||
| "attribute and also a <draw_ops> element, or specified two elements)" | ||||
| msgstr "" | ||||
| "Δεν μπορεί να υπάρχουν δυο λειτουργίες_σχεδίασης για ένα στοιχείο <button> ( " | ||||
| "το θέμα έχει καθορίσει ένα γνώρισμα λειτουργίας_σχεδίασης και ακόμα ένα " | ||||
| "Δεν μπορεί να υπάρχουν δυο λειτουργίες_σχεδίασης για ένα στοιχείο <button> " | ||||
| "( το θέμα έχει καθορίσει ένα γνώρισμα λειτουργίας_σχεδίασης και ακόμα ένα " | ||||
| "στοιχείο <draw_ops> ή καθόρισε δύο στοιχεία)" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:3370 | ||||
| @@ -1584,8 +1597,8 @@ msgstr "" | ||||
| msgid "" | ||||
| "Element <%s> is not allowed inside a name/author/date/description element" | ||||
| msgstr "" | ||||
| "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο " | ||||
| "ονόματος/συγγραφέα/ημερομηνίας/περιγραφής" | ||||
| "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο ονόματος/συγγραφέα/" | ||||
| "ημερομηνίας/περιγραφής" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:3587 | ||||
| #, c-format | ||||
| @@ -1597,13 +1610,14 @@ msgstr "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε  | ||||
| msgid "" | ||||
| "Element <%s> is not allowed inside a distance/border/aspect_ratio element" | ||||
| msgstr "" | ||||
| "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο " | ||||
| "απόστασης/περιγράμματος/aspect_ratio" | ||||
| "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο απόστασης/περιγράμματος/" | ||||
| "aspect_ratio" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:3621 | ||||
| #, c-format | ||||
| msgid "Element <%s> is not allowed inside a draw operation element" | ||||
| msgstr "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο λειτουργίας σχεδίασης" | ||||
| msgstr "" | ||||
| "Το στοιχείο <%s> δεν επιτρέπεται μέσα σε στοιχείο λειτουργίας σχεδίασης" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:3631 ../src/ui/theme-parser.c:3661 | ||||
| #: ../src/ui/theme-parser.c:3666 ../src/ui/theme-parser.c:3671 | ||||
|   | ||||
							
								
								
									
										664
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										664
									
								
								po/en_GB.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										257
									
								
								po/et.po
									
									
									
									
									
								
							
							
						
						
									
										257
									
								
								po/et.po
									
									
									
									
									
								
							| @@ -7,15 +7,15 @@ | ||||
| # | ||||
| # Tõivo Leedjärv <toivo linux ee>, 2004. | ||||
| # Ivar Smolin <okul linux ee>, 2005, 2006, 2009–2011. | ||||
| # Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012. | ||||
| # Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012, 2013. | ||||
| # | ||||
| msgid "" | ||||
| 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: 2012-12-18 22:30+0000\n" | ||||
| "PO-Revision-Date: 2012-12-19 18:06+0300\n" | ||||
| "POT-Creation-Date: 2013-09-10 15:25+0000\n" | ||||
| "PO-Revision-Date: 2013-09-11 23:20+0300\n" | ||||
| "Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n" | ||||
| "Language-Team: Estonian <>\n" | ||||
| "Language: et\n" | ||||
| @@ -23,6 +23,7 @@ msgstr "" | ||||
| "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.5.4\n" | ||||
|  | ||||
| msgid "Navigation" | ||||
| msgstr "Navigeerimine" | ||||
| @@ -132,8 +133,8 @@ msgstr "Varjatud oleku vahetamine" | ||||
| msgid "Close window" | ||||
| msgstr "Akna sulgemine" | ||||
|  | ||||
| msgid "Minimize window" | ||||
| msgstr "Akna minimeerimine" | ||||
| msgid "Hide window" | ||||
| msgstr "Peida aken" | ||||
|  | ||||
| msgid "Move window" | ||||
| msgstr "Akna liigutamine" | ||||
| @@ -173,6 +174,9 @@ msgid "" | ||||
| "\"." | ||||
| msgstr "Teine komposiithaldur juba töötab ekraani %i kuval \"%s\"." | ||||
|  | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "failist polnud võimalik taustatekstuuri luua" | ||||
|  | ||||
| msgid "Bell event" | ||||
| msgstr "Helina sündmus" | ||||
|  | ||||
| @@ -214,6 +218,10 @@ msgstr "" | ||||
| "Mõni teine programm juba kasutab klahvi %s koos muuteklahvidega %x " | ||||
| "kiirklahvina\n" | ||||
|  | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" pole sobiv kiirklahv\n" | ||||
|  | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Seansihalduriga ühendumise keelamine" | ||||
|  | ||||
| @@ -242,6 +250,17 @@ msgid "" | ||||
| msgstr "" | ||||
| "Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n" | ||||
|  | ||||
| msgid "Built-in display" | ||||
| msgstr "Sisseehitatud kuva" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor name (in case we don't know | ||||
| #. the vendor), it's Unknown followed by a size in inches, | ||||
| #. like 'Unknown 15"' | ||||
| #. | ||||
| #, c-format | ||||
| msgid "Unknown %s" | ||||
| msgstr "Tundmatu %s" | ||||
|  | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| @@ -374,7 +393,6 @@ msgstr "Tõrge logifaili %s avamisel funktsiooniga fdopen(): %s\n" | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "Avati logifail %s\n" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n" | ||||
|  | ||||
| @@ -549,16 +567,22 @@ msgstr "" | ||||
| "Lohistatava äärise laius. Kui kujunduse nähtavatest ääristest ei piisa, " | ||||
| "lisatakse puuduoleva osa jaoks nähtamatu ääris." | ||||
|  | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "Peaaegu monitori suurused ekraanid maksimeeritakse automaatselt" | ||||
|  | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Kui lubatud, maksimeeritakse automaatselt aknad, mis on avanedes monitori " | ||||
| "suurused." | ||||
|  | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Akna valimine tabulaatori hüpikaknalt" | ||||
|  | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Tabulaatori hüpikakna katkestamine" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Usage: %s\n" | ||||
| msgstr "Kasutamine: %s\n" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| msgid "Mi_nimize" | ||||
| msgstr "_Minimeeri" | ||||
| @@ -1264,156 +1288,151 @@ msgstr "Selle teema jaoks on <%s> määratud kaks korda" | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n" | ||||
|  | ||||
| msgid "_Windows" | ||||
| msgstr "_Aknad" | ||||
| #~ msgid "Usage: %s\n" | ||||
| #~ msgstr "Kasutamine: %s\n" | ||||
|  | ||||
| msgid "_Dialog" | ||||
| msgstr "_Dialoog" | ||||
| #~ msgid "_Windows" | ||||
| #~ msgstr "_Aknad" | ||||
|  | ||||
| msgid "_Modal dialog" | ||||
| msgstr "_Modaaldialoog" | ||||
| #~ msgid "_Dialog" | ||||
| #~ msgstr "_Dialoog" | ||||
|  | ||||
| msgid "_Utility" | ||||
| msgstr "_Utiliit" | ||||
| #~ msgid "_Modal dialog" | ||||
| #~ msgstr "_Modaaldialoog" | ||||
|  | ||||
| msgid "_Splashscreen" | ||||
| msgstr "_Käivitusekraan" | ||||
| #~ msgid "_Utility" | ||||
| #~ msgstr "_Utiliit" | ||||
|  | ||||
| msgid "_Top dock" | ||||
| msgstr "Ü_lemine dokk" | ||||
| #~ msgid "_Splashscreen" | ||||
| #~ msgstr "_Käivitusekraan" | ||||
|  | ||||
| msgid "_Bottom dock" | ||||
| msgstr "_Alumine dokk" | ||||
| #~ msgid "_Top dock" | ||||
| #~ msgstr "Ü_lemine dokk" | ||||
|  | ||||
| msgid "_Left dock" | ||||
| msgstr "_Vasak dokk" | ||||
| #~ msgid "_Bottom dock" | ||||
| #~ msgstr "_Alumine dokk" | ||||
|  | ||||
| msgid "_Right dock" | ||||
| msgstr "_Parem dokk" | ||||
| #~ msgid "_Left dock" | ||||
| #~ msgstr "_Vasak dokk" | ||||
|  | ||||
| msgid "_All docks" | ||||
| msgstr "_Kõik dokid" | ||||
| #~ msgid "_Right dock" | ||||
| #~ msgstr "_Parem dokk" | ||||
|  | ||||
| msgid "Des_ktop" | ||||
| msgstr "_Töölaud" | ||||
| #~ msgid "_All docks" | ||||
| #~ msgstr "_Kõik dokid" | ||||
|  | ||||
| msgid "Open another one of these windows" | ||||
| msgstr "Ava neist akendest järgmine" | ||||
| #~ msgid "Des_ktop" | ||||
| #~ msgstr "_Töölaud" | ||||
|  | ||||
| msgid "This is a demo button with an 'open' icon" | ||||
| msgstr "See on näidisnupp koos 'ava' ikooniga" | ||||
| #~ msgid "Open another one of these windows" | ||||
| #~ msgstr "Ava neist akendest järgmine" | ||||
|  | ||||
| msgid "This is a demo button with a 'quit' icon" | ||||
| msgstr "See on näidisnupp koos 'lõpeta' ikooniga" | ||||
| #~ msgid "This is a demo button with an 'open' icon" | ||||
| #~ msgstr "See on näidisnupp koos 'ava' ikooniga" | ||||
|  | ||||
| msgid "This is a sample message in a sample dialog" | ||||
| msgstr "See on näidisteade näidisdialoogis" | ||||
| #~ msgid "This is a demo button with a 'quit' icon" | ||||
| #~ msgstr "See on näidisnupp koos 'lõpeta' ikooniga" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Fake menu item %d\n" | ||||
| msgstr "Võltsitud menüüpunkt %d\n" | ||||
| #~ msgid "This is a sample message in a sample dialog" | ||||
| #~ msgstr "See on näidisteade näidisdialoogis" | ||||
|  | ||||
| msgid "Border-only window" | ||||
| msgstr "Ainult raamiga aken" | ||||
| #~ msgid "Fake menu item %d\n" | ||||
| #~ msgstr "Võltsitud menüüpunkt %d\n" | ||||
|  | ||||
| msgid "Bar" | ||||
| msgstr "Riba" | ||||
| #~ msgid "Border-only window" | ||||
| #~ msgstr "Ainult raamiga aken" | ||||
|  | ||||
| msgid "Normal Application Window" | ||||
| msgstr "Tavaline rakenduseaken" | ||||
| #~ msgid "Bar" | ||||
| #~ msgstr "Riba" | ||||
|  | ||||
| msgid "Dialog Box" | ||||
| msgstr "Dialoogikast" | ||||
| #~ msgid "Normal Application Window" | ||||
| #~ msgstr "Tavaline rakenduseaken" | ||||
|  | ||||
| msgid "Modal Dialog Box" | ||||
| msgstr "Modaalne dialoogikast" | ||||
| #~ msgid "Dialog Box" | ||||
| #~ msgstr "Dialoogikast" | ||||
|  | ||||
| msgid "Utility Palette" | ||||
| msgstr "Rakendite palett" | ||||
| #~ msgid "Modal Dialog Box" | ||||
| #~ msgstr "Modaalne dialoogikast" | ||||
|  | ||||
| msgid "Torn-off Menu" | ||||
| msgstr "Ärarebitav menüü" | ||||
| #~ msgid "Utility Palette" | ||||
| #~ msgstr "Rakendite palett" | ||||
|  | ||||
| msgid "Border" | ||||
| msgstr "Raam" | ||||
| #~ msgid "Torn-off Menu" | ||||
| #~ msgstr "Ärarebitav menüü" | ||||
|  | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "Kinnistatud modaaldialoog" | ||||
| #~ msgid "Border" | ||||
| #~ msgstr "Raam" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "Nuppude paigutuse test %d" | ||||
| #~ msgid "Attached Modal Dialog" | ||||
| #~ msgstr "Kinnistatud modaaldialoog" | ||||
|  | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g millisekundit kulub ühe akna raami joonistamiseks" | ||||
| #~ msgid "Button layout test %d" | ||||
| #~ msgstr "Nuppude paigutuse test %d" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n" | ||||
| #~ msgid "%g milliseconds to draw one window frame" | ||||
| #~ msgstr "%g millisekundit kulub ühe akna raami joonistamiseks" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "Viga teema laadimisel: %s\n" | ||||
| #~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| #~ msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "Teema \"%s\" laaditi %g sekundiga\n" | ||||
| #~ msgid "Error loading theme: %s\n" | ||||
| #~ msgstr "Viga teema laadimisel: %s\n" | ||||
|  | ||||
| msgid "Normal Title Font" | ||||
| msgstr "Tiitli tavasuurusega kirjatüüp" | ||||
| #~ msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| #~ msgstr "Teema \"%s\" laaditi %g sekundiga\n" | ||||
|  | ||||
| msgid "Small Title Font" | ||||
| msgstr "Tiitli väike kirjatüüp" | ||||
| #~ msgid "Normal Title Font" | ||||
| #~ msgstr "Tiitli tavasuurusega kirjatüüp" | ||||
|  | ||||
| msgid "Large Title Font" | ||||
| msgstr "Tiitli suur kirjatüüp" | ||||
| #~ msgid "Small Title Font" | ||||
| #~ msgstr "Tiitli väike kirjatüüp" | ||||
|  | ||||
| msgid "Button Layouts" | ||||
| msgstr "Nuppude paigutus" | ||||
| #~ msgid "Large Title Font" | ||||
| #~ msgstr "Tiitli suur kirjatüüp" | ||||
|  | ||||
| msgid "Benchmark" | ||||
| msgstr "Jõudlus" | ||||
| #~ msgid "Button Layouts" | ||||
| #~ msgstr "Nuppude paigutus" | ||||
|  | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "Siia tuleb akna pealkiri" | ||||
| #~ msgid "Benchmark" | ||||
| #~ msgstr "Jõudlus" | ||||
|  | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| "seconds wall clock time including X server resources (%g milliseconds per " | ||||
| "frame)\n" | ||||
| msgstr "" | ||||
| "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit kaadrile) " | ||||
| "ja %g sekundiga seinakella järgi, millesse on kaasatud X-serveri " | ||||
| "ressursikasutus (%g millisekundit kaadrile)\n" | ||||
| #~ msgid "Window Title Goes Here" | ||||
| #~ msgstr "Siia tuleb akna pealkiri" | ||||
|  | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea" | ||||
| #~ msgid "" | ||||
| #~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and " | ||||
| #~ "%g seconds wall clock time including X server resources (%g milliseconds " | ||||
| #~ "per frame)\n" | ||||
| #~ msgstr "" | ||||
| #~ "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit " | ||||
| #~ "kaadrile) ja %g sekundiga seinakella järgi, millesse on kaasatud X-" | ||||
| #~ "serveri ressursikasutus (%g millisekundit kaadrile)\n" | ||||
|  | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga" | ||||
| #~ msgid "position expression test returned TRUE but set error" | ||||
| #~ msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea" | ||||
|  | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "Oodati viga, aga ühtegi ei edastatud" | ||||
| #~ msgid "position expression test returned FALSE but didn't set error" | ||||
| #~ msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "Oodati viga %d, aga edastati viga %d" | ||||
| #~ msgid "Error was expected but none given" | ||||
| #~ msgstr "Oodati viga, aga ühtegi ei edastatud" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "Viga ei oodatud, aga üks edastati: %s" | ||||
| #~ msgid "Error %d was expected but %d given" | ||||
| #~ msgstr "Oodati viga %d, aga edastati viga %d" | ||||
|  | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "x väärtus oli %d, oodati väärtust %d" | ||||
| #~ msgid "Error not expected but one was returned: %s" | ||||
| #~ msgstr "Viga ei oodatud, aga üks edastati: %s" | ||||
|  | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "y väärtus oli %d, oodati väärtust %d" | ||||
| #~ msgid "x value was %d, %d was expected" | ||||
| #~ msgstr "x väärtus oli %d, oodati väärtust %d" | ||||
|  | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
| "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n" | ||||
| #~ msgid "y value was %d, %d was expected" | ||||
| #~ msgstr "y väärtus oli %d, oodati väärtust %d" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| #~ msgstr "" | ||||
| #~ "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "Akna minimeerimine" | ||||
|   | ||||
							
								
								
									
										33
									
								
								po/fr.po
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								po/fr.po
									
									
									
									
									
								
							| @@ -20,7 +20,7 @@ msgstr "" | ||||
| "org/enter_bug.cgi?product=mutter&component=general\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-02-20 15:50+0000\n" | ||||
| "POT-Creation-Date: 2013-03-01 15:50+0000\n" | ||||
| "PO-Revision-Date: 2012-10-15 21:26+0200\n" | ||||
| "Last-Translator: Alain Lojewski <allomervan@gmail.com>\n" | ||||
| "Language-Team: GNOME French Team <gnomefr@traduc.org>\n" | ||||
| @@ -229,7 +229,7 @@ msgstr "" | ||||
| "Un autre gestionnaire de composition est déjà lancé sur l'écran %i de " | ||||
| "l'affichage « %s »." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1111 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "la texture d'arrière-plan n'a pas pu être créée depuis le fichier" | ||||
|  | ||||
| @@ -267,17 +267,17 @@ msgstr "_Attendre" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Forcer à quitter" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Il manque l'extension %s nécessaire à la composition" | ||||
|  | ||||
| #: ../src/core/display.c:485 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Impossible d'ouvrir le visuel « %s » du système X Window\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -286,6 +286,11 @@ msgstr "" | ||||
| "Un autre programme utilise déjà la clé %s avec les modificateurs %x comme " | ||||
| "liaison\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "« %s » n'est pas un accélérateur valide\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Désactiver la connexion au gestionnaire de sessions" | ||||
| @@ -514,7 +519,7 @@ msgid "Window manager error: " | ||||
| msgstr "Erreur du gestionnaire de fenêtres : " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7503 | ||||
| #: ../src/core/window.c:7539 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -530,7 +535,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8227 | ||||
| #: ../src/core/window.c:8263 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -540,22 +545,22 @@ msgstr "" | ||||
| "redimensionnable, mais positionne une taille minimale de %d x %d et une " | ||||
| "taille maximale de %d x %d ; ceci n'a pas beaucoup de sens.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:304 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "L'application a défini un _NET_WM_PID %lu erroné\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:423 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (sur %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1506 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Fenêtre WM_TRANSIENT_FOR 0x%lx non valide indiquée pour %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "Fenêtre WM_TRANSIENT_FOR 0x%lx pour %s créerait une boucle.\n" | ||||
| @@ -716,8 +721,8 @@ msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Si activé, les nouvelles fenêtres qui ont presque la taille de l'écran " | ||||
| "à l'ouverture seront maximisées automatiquement." | ||||
| "Si activé, les nouvelles fenêtres qui ont presque la taille de l'écran à " | ||||
| "l'ouverture seront maximisées automatiquement." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| @@ -1347,7 +1352,7 @@ msgstr "<%s> doit indiquer une géométrie ou un parent qui en possède une" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:1196 | ||||
| msgid "You must specify a background for an alpha value to be meaningful" | ||||
| msgstr "Vous devez indiquer une valeur pour le paramètre alpha." | ||||
| msgstr "Vous devez indiquer un arrière-plan pour qu'une valeur alpha ait du sens." | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:1264 | ||||
| #, c-format | ||||
|   | ||||
							
								
								
									
										201
									
								
								po/he.po
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								po/he.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity.HEAD.he\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2013-02-21 19:11+0200\n" | ||||
| "PO-Revision-Date: 2013-02-21 19:14+0200\n" | ||||
| "POT-Creation-Date: 2013-04-03 08:27+0300\n" | ||||
| "PO-Revision-Date: 2013-04-03 08:28+0200\n" | ||||
| "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" | ||||
| "Language-Team: Hebrew <he@li.org>\n" | ||||
| "Language: he\n" | ||||
| @@ -209,16 +209,16 @@ msgstr "פיצול הצפייה מימין" | ||||
|  | ||||
| #. 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:507 | ||||
| #: ../src/compositor/compositor.c:568 | ||||
| #, c-format | ||||
| msgid "Another compositing manager is already running on screen %i on display \"%s\"." | ||||
| msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1064 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "לא ניתן ליצור מרקם רקע מקובץ" | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/core/bell.c:322 | ||||
| msgid "Bell event" | ||||
| msgstr "אירוע פעמון" | ||||
|  | ||||
| @@ -248,51 +248,56 @@ msgstr "ה_מתנה" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_אילוץ סגירה" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Missing %s extension required for compositing" | ||||
|  | ||||
| #: ../src/core/display.c:484 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Failed to open X Window System display '%s'\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:935 | ||||
| #, c-format | ||||
| msgid "Some other program is already using the key %s with modifiers %x as a binding\n" | ||||
| msgstr "תכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/keybindings.c:1135 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" אינו מקש האצה תקני\n" | ||||
|  | ||||
| #: ../src/core/main.c:197 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Disable connection to session manager" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:203 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Replace the running window manager" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:209 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Specify session management ID" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:214 | ||||
| msgid "X Display to use" | ||||
| msgstr "X Display to use" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Initialize session from savefile" | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:226 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Make X calls synchronous" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:534 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Failed to scan themes directory: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:550 | ||||
| #, c-format | ||||
| msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| msgstr "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -318,51 +323,51 @@ msgstr "Print version" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "תוסף ה־mutter לשימוש" | ||||
|  | ||||
| #: ../src/core/prefs.c:1087 | ||||
| #: ../src/core/prefs.c:1095 | ||||
| msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n" | ||||
| msgstr "Workarounds for broken applications disabled. Some applications may not behave properly.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1162 | ||||
| #: ../src/core/prefs.c:1170 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1228 | ||||
| #: ../src/core/prefs.c:1236 | ||||
| #, c-format | ||||
| msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n" | ||||
| msgstr "\"%s\" found in configuration database is not a valid value for mouse button modifier\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1780 | ||||
| #: ../src/core/prefs.c:1788 | ||||
| #, c-format | ||||
| msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n" | ||||
| msgstr "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1879 | ||||
| #: ../src/core/prefs.c:1887 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "סביבת עבודה %d" | ||||
|  | ||||
| #: ../src/core/screen.c:673 | ||||
| #: ../src/core/screen.c:691 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Screen %d on display '%s' is invalid\n" | ||||
|  | ||||
| #: ../src/core/screen.c:689 | ||||
| #: ../src/core/screen.c:707 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n" | ||||
| msgstr "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:716 | ||||
| #: ../src/core/screen.c:734 | ||||
| #, c-format | ||||
| msgid "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/screen.c:794 | ||||
| #: ../src/core/screen.c:812 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "Screen %d on display \"%s\" already has a window manager\n" | ||||
|  | ||||
| #: ../src/core/screen.c:979 | ||||
| #: ../src/core/screen.c:998 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "Could not release screen %d on display \"%s\"\n" | ||||
| @@ -421,45 +426,45 @@ msgstr "Unknown element %s" | ||||
| msgid "These windows do not support "save current setup" and will have to be restarted manually next time you log in." | ||||
| msgstr "חלונות אלו אינם תומכים ב"שמירת ההגדרות הנוכחיות", ויהיה צורך באתחול ידני בכניסה הבאה שלך." | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:84 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "Failed to open debug log: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:94 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "Failed to fdopen() log file %s: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:100 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "Opened log file %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 | ||||
| #: ../src/core/util.c:119 | ||||
| #: ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter הודר ללא תמיכה במצב פירוט\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:264 | ||||
| msgid "Window manager: " | ||||
| msgstr "Window manager: " | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:412 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "Bug in window manager: " | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:443 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "Window manager warning: " | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:471 | ||||
| msgid "Window manager error: " | ||||
| msgstr "Window manager error: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7504 | ||||
| #: ../src/core/window.c:7596 | ||||
| #, c-format | ||||
| msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n" | ||||
| msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n" | ||||
| @@ -471,7 +476,7 @@ msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADE | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8228 | ||||
| #: ../src/core/window.c:8320 | ||||
| #, c-format | ||||
| msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n" | ||||
| msgstr "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n" | ||||
| @@ -811,247 +816,247 @@ msgstr "Mod5" | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:235 | ||||
| #: ../src/ui/theme.c:236 | ||||
| msgid "top" | ||||
| msgstr "top" | ||||
|  | ||||
| #: ../src/ui/theme.c:237 | ||||
| #: ../src/ui/theme.c:238 | ||||
| msgid "bottom" | ||||
| msgstr "bottom" | ||||
|  | ||||
| #: ../src/ui/theme.c:239 | ||||
| #: ../src/ui/theme.c:240 | ||||
| msgid "left" | ||||
| msgstr "left" | ||||
|  | ||||
| #: ../src/ui/theme.c:241 | ||||
| #: ../src/ui/theme.c:242 | ||||
| msgid "right" | ||||
| msgstr "right" | ||||
|  | ||||
| #: ../src/ui/theme.c:269 | ||||
| #: ../src/ui/theme.c:270 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "frame geometry does not specify \"%s\" dimension" | ||||
|  | ||||
| #: ../src/ui/theme.c:288 | ||||
| #: ../src/ui/theme.c:289 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:325 | ||||
| #: ../src/ui/theme.c:326 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "Button aspect ratio %g is not reasonable" | ||||
|  | ||||
| #: ../src/ui/theme.c:337 | ||||
| #: ../src/ui/theme.c:338 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "Frame geometry does not specify size of buttons" | ||||
|  | ||||
| #: ../src/ui/theme.c:1050 | ||||
| #: ../src/ui/theme.c:1051 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "Gradients should have at least two colors" | ||||
|  | ||||
| #: ../src/ui/theme.c:1202 | ||||
| #: ../src/ui/theme.c:1203 | ||||
| #, c-format | ||||
| msgid "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\"" | ||||
| msgstr "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1218 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid" | ||||
| msgstr "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid" | ||||
|  | ||||
| #: ../src/ui/theme.c:1232 | ||||
| #: ../src/ui/theme.c:1233 | ||||
| #, c-format | ||||
| msgid "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format" | ||||
| msgstr "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format" | ||||
|  | ||||
| #: ../src/ui/theme.c:1277 | ||||
| #: ../src/ui/theme.c:1278 | ||||
| #, c-format | ||||
| msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #: ../src/ui/theme.c:1292 | ||||
| #, c-format | ||||
| msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1302 | ||||
| #: ../src/ui/theme.c:1303 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "Did not understand state \"%s\" in color specification" | ||||
|  | ||||
| #: ../src/ui/theme.c:1315 | ||||
| #: ../src/ui/theme.c:1316 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "Did not understand color component \"%s\" in color specification" | ||||
|  | ||||
| #: ../src/ui/theme.c:1344 | ||||
| #: ../src/ui/theme.c:1345 | ||||
| #, c-format | ||||
| msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format" | ||||
| msgstr "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format" | ||||
|  | ||||
| #: ../src/ui/theme.c:1355 | ||||
| #: ../src/ui/theme.c:1356 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "Could not parse alpha value \"%s\" in blended color" | ||||
|  | ||||
| #: ../src/ui/theme.c:1365 | ||||
| #: ../src/ui/theme.c:1366 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
|  | ||||
| #: ../src/ui/theme.c:1412 | ||||
| #: ../src/ui/theme.c:1413 | ||||
| #, c-format | ||||
| msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
|  | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #: ../src/ui/theme.c:1424 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "Could not parse shade factor \"%s\" in shaded color" | ||||
|  | ||||
| #: ../src/ui/theme.c:1433 | ||||
| #: ../src/ui/theme.c:1434 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "Shade factor \"%s\" in shaded color is negative" | ||||
|  | ||||
| #: ../src/ui/theme.c:1462 | ||||
| #: ../src/ui/theme.c:1463 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "Could not parse color \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #: ../src/ui/theme.c:1780 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "Coordinate expression contains character '%s' which is not allowed" | ||||
|  | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #: ../src/ui/theme.c:1807 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains floating point number '%s' which could not be parsed" | ||||
| msgstr "Coordinate expression contains floating point number '%s' which could not be parsed" | ||||
|  | ||||
| #: ../src/ui/theme.c:1820 | ||||
| #: ../src/ui/theme.c:1821 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "Coordinate expression contains integer '%s' which could not be parsed" | ||||
|  | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #: ../src/ui/theme.c:1942 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\"" | ||||
| msgstr "Coordinate expression contained unknown operator at the start of this text: \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1998 | ||||
| #: ../src/ui/theme.c:1999 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "Coordinate expression was empty or not understood" | ||||
|  | ||||
| #: ../src/ui/theme.c:2111 | ||||
| #: ../src/ui/theme.c:2121 | ||||
| #: ../src/ui/theme.c:2155 | ||||
| #: ../src/ui/theme.c:2112 | ||||
| #: ../src/ui/theme.c:2122 | ||||
| #: ../src/ui/theme.c:2156 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "Coordinate expression results in division by zero" | ||||
|  | ||||
| #: ../src/ui/theme.c:2163 | ||||
| #: ../src/ui/theme.c:2164 | ||||
| #, c-format | ||||
| msgid "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| msgstr "Coordinate expression tries to use mod operator on a floating-point number" | ||||
|  | ||||
| #: ../src/ui/theme.c:2219 | ||||
| #: ../src/ui/theme.c:2220 | ||||
| #, c-format | ||||
| msgid "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
|  | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "Coordinate expression had an operand where an operator was expected" | ||||
|  | ||||
| #: ../src/ui/theme.c:2236 | ||||
| #: ../src/ui/theme.c:2237 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "Coordinate expression ended with an operator instead of an operand" | ||||
|  | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #: ../src/ui/theme.c:2247 | ||||
| #, c-format | ||||
| msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between" | ||||
| msgstr "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between" | ||||
|  | ||||
| #: ../src/ui/theme.c:2397 | ||||
| #: ../src/ui/theme.c:2442 | ||||
| #: ../src/ui/theme.c:2398 | ||||
| #: ../src/ui/theme.c:2443 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "Coordinate expression had unknown variable or constant \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:2496 | ||||
| #: ../src/ui/theme.c:2497 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "Coordinate expression parser overflowed its buffer." | ||||
|  | ||||
| #: ../src/ui/theme.c:2525 | ||||
| #: ../src/ui/theme.c:2526 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
|  | ||||
| #: ../src/ui/theme.c:2589 | ||||
| #: ../src/ui/theme.c:2590 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
|  | ||||
| #: ../src/ui/theme.c:2600 | ||||
| #: ../src/ui/theme.c:2601 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "Coordinate expression doesn't seem to have any operators or operands" | ||||
|  | ||||
| #: ../src/ui/theme.c:2813 | ||||
| #: ../src/ui/theme.c:2833 | ||||
| #: ../src/ui/theme.c:2853 | ||||
| #: ../src/ui/theme.c:2814 | ||||
| #: ../src/ui/theme.c:2834 | ||||
| #: ../src/ui/theme.c:2854 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "Theme contained an expression that resulted in an error: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4499 | ||||
| #: ../src/ui/theme.c:4500 | ||||
| #, c-format | ||||
| msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style" | ||||
| msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style" | ||||
|  | ||||
| #: ../src/ui/theme.c:5010 | ||||
| #: ../src/ui/theme.c:5035 | ||||
| #: ../src/ui/theme.c:5011 | ||||
| #: ../src/ui/theme.c:5036 | ||||
| #, c-format | ||||
| msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #: ../src/ui/theme.c:5084 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "Failed to load theme \"%s\": %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5219 | ||||
| #: ../src/ui/theme.c:5226 | ||||
| #: ../src/ui/theme.c:5233 | ||||
| #: ../src/ui/theme.c:5240 | ||||
| #: ../src/ui/theme.c:5247 | ||||
| #: ../src/ui/theme.c:5220 | ||||
| #: ../src/ui/theme.c:5227 | ||||
| #: ../src/ui/theme.c:5234 | ||||
| #: ../src/ui/theme.c:5241 | ||||
| #: ../src/ui/theme.c:5248 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "No <%s> set for theme \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:5255 | ||||
| #: ../src/ui/theme.c:5256 | ||||
| #, c-format | ||||
| msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element" | ||||
| msgstr "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element" | ||||
|  | ||||
| #: ../src/ui/theme.c:5662 | ||||
| #: ../src/ui/theme.c:5724 | ||||
| #: ../src/ui/theme.c:5787 | ||||
| #: ../src/ui/theme.c:5663 | ||||
| #: ../src/ui/theme.c:5725 | ||||
| #: ../src/ui/theme.c:5788 | ||||
| #, c-format | ||||
| msgid "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| msgstr "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
|  | ||||
| #: ../src/ui/theme.c:5670 | ||||
| #: ../src/ui/theme.c:5732 | ||||
| #: ../src/ui/theme.c:5795 | ||||
| #: ../src/ui/theme.c:5671 | ||||
| #: ../src/ui/theme.c:5733 | ||||
| #: ../src/ui/theme.c:5796 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "Constant \"%s\" has already been defined" | ||||
| @@ -1423,7 +1428,7 @@ msgstr "מלל לא מורשה בתג <%s>" | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> צוין פעמיים עבור ערכת נושא זו" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4336 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Failed to find a valid file for theme %s\n" | ||||
|   | ||||
							
								
								
									
										37
									
								
								po/it.po
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								po/it.po
									
									
									
									
									
								
							| @@ -12,8 +12,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2013-02-25 22:09+0100\n" | ||||
| "PO-Revision-Date: 2013-02-25 22:09+0100\n" | ||||
| "POT-Creation-Date: 2013-03-12 18:34+0100\n" | ||||
| "PO-Revision-Date: 2013-03-12 18:35+0100\n" | ||||
| "Last-Translator: Milo Casagrande <milo@ubuntu.com>\n" | ||||
| "Language-Team: Italian <tp@lists.linux.it>\n" | ||||
| "Language: it\n" | ||||
| @@ -216,7 +216,7 @@ msgstr "Massimizza a destra" | ||||
|  | ||||
| #. 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:507 | ||||
| #: ../src/compositor/compositor.c:502 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| @@ -225,7 +225,7 @@ msgstr "" | ||||
| "Un altro compositing manager è già in esecuzione sullo schermo %i sul " | ||||
| "display «%s»." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1180 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "La texture dello sfondo non può essere creata dal file" | ||||
|  | ||||
| @@ -265,17 +265,17 @@ msgstr "_Attendi" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Forza uscita" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:402 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Estensione %s richiesta per il compositing mancante" | ||||
|  | ||||
| #: ../src/core/display.c:484 | ||||
| #: ../src/core/display.c:494 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Apertura del display «%s» di X Window System non riuscita\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -284,6 +284,11 @@ msgstr "" | ||||
| "Qualche altro programma sta già usando il tasto %s con i modificatori %x " | ||||
| "come una associazione di tasti\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "«%s» non è una scorciatoia valida\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Disabilita la connessione al gestore di sessione" | ||||
| @@ -308,12 +313,12 @@ msgstr "Inizializza la sessione da file salvato" | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Rende le chiamate X sincrone" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:533 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Scansione della directory dei temi non riuscita: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:549 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -382,12 +387,12 @@ msgstr "" | ||||
| msgid "Workspace %d" | ||||
| msgstr "Spazio di lavoro %d" | ||||
|  | ||||
| #: ../src/core/screen.c:673 | ||||
| #: ../src/core/screen.c:674 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Lo schermo %d nel display «%s» non è valido\n" | ||||
|  | ||||
| #: ../src/core/screen.c:689 | ||||
| #: ../src/core/screen.c:690 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -396,7 +401,7 @@ msgstr "" | ||||
| "Lo schermo %d sul display «%s» ha già un window manager; provare a " | ||||
| "utilizzare l'opzione --replace per sostituirlo.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:716 | ||||
| #: ../src/core/screen.c:717 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| @@ -404,12 +409,12 @@ msgstr "" | ||||
| "Impossibile acquisire la selezione del window manager per lo schermo %d nel " | ||||
| "display «%s»\n" | ||||
|  | ||||
| #: ../src/core/screen.c:794 | ||||
| #: ../src/core/screen.c:795 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "Lo schermo %d sul display «%s» ha già un window manager\n" | ||||
|  | ||||
| #: ../src/core/screen.c:979 | ||||
| #: ../src/core/screen.c:980 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "Impossibile rilasciare lo schermo %d sul display «%s»\n" | ||||
| @@ -509,7 +514,7 @@ msgid "Window manager error: " | ||||
| msgstr "Errore del window manager: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7540 | ||||
| #: ../src/core/window.c:7538 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -525,7 +530,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8264 | ||||
| #: ../src/core/window.c:8262 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
|   | ||||
							
								
								
									
										176
									
								
								po/nb.po
									
									
									
									
									
								
							
							
						
						
									
										176
									
								
								po/nb.po
									
									
									
									
									
								
							| @@ -4,10 +4,10 @@ | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter 3.7.x\n" | ||||
| "Project-Id-Version: mutter 3.9.x\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2013-03-04 14:57+0100\n" | ||||
| "PO-Revision-Date: 2013-03-04 14:57+0100\n" | ||||
| "POT-Creation-Date: 2013-08-08 22:14+0200\n" | ||||
| "PO-Revision-Date: 2013-05-28 09:48+0200\n" | ||||
| "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" | ||||
| "Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n" | ||||
| "Language: \n" | ||||
| @@ -205,18 +205,18 @@ msgstr "Visning delt til høyre" | ||||
|  | ||||
| #. 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:509 | ||||
| #: ../src/compositor/compositor.c:589 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| "\"." | ||||
| msgstr "En annen compositing manager kjører skjerm %i på display «%s»." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1180 | ||||
| #: ../src/compositor/meta-background.c:1076 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "bakgrunnstekstur kunne ikke lages fra fil" | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/core/bell.c:322 | ||||
| msgid "Bell event" | ||||
| msgstr "Klokkehendelse" | ||||
|  | ||||
| @@ -250,17 +250,17 @@ msgstr "_Vent" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Tvungen nedstenging" | ||||
|  | ||||
| #: ../src/core/display.c:401 | ||||
| #: ../src/core/display.c:421 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon" | ||||
|  | ||||
| #: ../src/core/display.c:493 | ||||
| #: ../src/core/display.c:513 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Feil under åpning av X Window System skjerm «%s»\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #: ../src/core/keybindings.c:1138 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -269,41 +269,41 @@ msgstr "" | ||||
| "Et annet program bruker allerede nøkkelen %s med modifikatorer %x som " | ||||
| "binding\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #: ../src/core/keybindings.c:1335 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "«%s» er ikke en gyldig aksellerator\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/main.c:197 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Deaktiver tilkobling til sesjonshåndtereren" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:203 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Erstatt kjørende vindushåndterer" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:209 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Oppgi sesjonshåndterings-ID" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:214 | ||||
| msgid "X Display to use" | ||||
| msgstr "X-skjerm som skal brukes" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Initier sesjonen fra en lagret fil" | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:226 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Gjør X-kall synkrone" | ||||
|  | ||||
| #: ../src/core/main.c:533 | ||||
| #: ../src/core/main.c:534 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Feil under søk i temakatalog: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:549 | ||||
| #: ../src/core/main.c:550 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -333,7 +333,7 @@ msgstr "Skriv versjonsnummer" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Mutter-tillegg som skal brukes" | ||||
|  | ||||
| #: ../src/core/prefs.c:1087 | ||||
| #: ../src/core/prefs.c:1202 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| @@ -341,12 +341,12 @@ msgstr "" | ||||
| "Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen " | ||||
| "programmer vil kanskje ikke oppføre seg korrekt.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1162 | ||||
| #: ../src/core/prefs.c:1277 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1228 | ||||
| #: ../src/core/prefs.c:1343 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| @@ -355,7 +355,7 @@ msgstr "" | ||||
| "«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av " | ||||
| "musknapp\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1780 | ||||
| #: ../src/core/prefs.c:1909 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| @@ -364,17 +364,17 @@ msgstr "" | ||||
| "«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for " | ||||
| "tastaturbinding «%s»\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1879 | ||||
| #: ../src/core/prefs.c:1999 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Arbeidsområde %d" | ||||
|  | ||||
| #: ../src/core/screen.c:673 | ||||
| #: ../src/core/screen.c:691 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Skjerm %d på display «%s» er ugyldig\n" | ||||
|  | ||||
| #: ../src/core/screen.c:689 | ||||
| #: ../src/core/screen.c:707 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -383,19 +383,19 @@ msgstr "" | ||||
| "Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke " | ||||
| "flagget --replace for å erstatte aktiv vindushåndterer.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:716 | ||||
| #: ../src/core/screen.c:734 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "" | ||||
| "Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n" | ||||
|  | ||||
| #: ../src/core/screen.c:794 | ||||
| #: ../src/core/screen.c:812 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n" | ||||
|  | ||||
| #: ../src/core/screen.c:979 | ||||
| #: ../src/core/screen.c:998 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "Kunne ikke slippe skjerm %d på display «%s»\n" | ||||
| @@ -455,44 +455,44 @@ msgstr "" | ||||
| "Disse vinduene støtter ikke "lagre aktiv konfigurasjon"og vil " | ||||
| "måtte startes på nytt manuelt neste gang du logger inn." | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:84 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "Feil under åpning av feilsøkingslogg: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:94 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "Feil under fdopen() av loggfil %s: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:100 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "Åpnet loggfil %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 ../src/tools/mutter-message.c:149 | ||||
| #: ../src/core/util.c:119 ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter er kompilert uten støtte for «verbose» modus\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:264 | ||||
| msgid "Window manager: " | ||||
| msgstr "Vindushåndterer: " | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:412 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "Feil i vindushåndterer: " | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:443 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "Advarsel fra vindushåndterer: " | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:471 | ||||
| msgid "Window manager error: " | ||||
| msgstr "Feil i vindushåndterer: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7539 | ||||
| #: ../src/core/window.c:7513 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -508,7 +508,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8263 | ||||
| #: ../src/core/window.c:8237 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -685,6 +685,8 @@ msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Nye vinduer som i utgangspunktet er samme størrelse som skjermen vil " | ||||
| "automatisk bli maksimert hvis denne slås på." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| @@ -898,48 +900,48 @@ msgstr "Mod5" | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:235 | ||||
| #: ../src/ui/theme.c:236 | ||||
| msgid "top" | ||||
| msgstr "topp" | ||||
|  | ||||
| #: ../src/ui/theme.c:237 | ||||
| #: ../src/ui/theme.c:238 | ||||
| msgid "bottom" | ||||
| msgstr "bunn" | ||||
|  | ||||
| #: ../src/ui/theme.c:239 | ||||
| #: ../src/ui/theme.c:240 | ||||
| msgid "left" | ||||
| msgstr "venstre" | ||||
|  | ||||
| #: ../src/ui/theme.c:241 | ||||
| #: ../src/ui/theme.c:242 | ||||
| msgid "right" | ||||
| msgstr "høyre" | ||||
|  | ||||
| #: ../src/ui/theme.c:269 | ||||
| #: ../src/ui/theme.c:270 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "rammegeometrien spesifiserer ikke «%s»-dimensjon" | ||||
|  | ||||
| #: ../src/ui/theme.c:288 | ||||
| #: ../src/ui/theme.c:289 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "rammegeometri spesifiserer ikke dimensjon «%s» for kant «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:325 | ||||
| #: ../src/ui/theme.c:326 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "Aspektrate %g for knapp er ikke fornuftig" | ||||
|  | ||||
| #: ../src/ui/theme.c:337 | ||||
| #: ../src/ui/theme.c:338 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper" | ||||
|  | ||||
| #: ../src/ui/theme.c:1050 | ||||
| #: ../src/ui/theme.c:1051 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "Gradienter må ha minst to farger" | ||||
|  | ||||
| #: ../src/ui/theme.c:1202 | ||||
| #: ../src/ui/theme.c:1203 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| @@ -948,7 +950,7 @@ msgstr "" | ||||
| "Egendefinert GTK-fargespesifikasjon må ha fargenavn og reserve i parantes, f." | ||||
| "eks gtk:custom(foo,bar); kunne ikke lese «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1218 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| @@ -957,7 +959,7 @@ msgstr "" | ||||
| "Ugyldig tegn «%c» i parameter color_name for gtk:custom, kun A-Za-z0-9-_ er " | ||||
| "gyldig" | ||||
|  | ||||
| #: ../src/ui/theme.c:1232 | ||||
| #: ../src/ui/theme.c:1233 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| @@ -966,7 +968,7 @@ msgstr "" | ||||
| "Gtk:custom-format er «gtk:custom(color_name,fallback)», «%s» passer ikke i " | ||||
| "formatet" | ||||
|  | ||||
| #: ../src/ui/theme.c:1277 | ||||
| #: ../src/ui/theme.c:1278 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| @@ -975,7 +977,7 @@ msgstr "" | ||||
| "GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor " | ||||
| "NORMAL er tilstanden; kunne ikke lese «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #: ../src/ui/theme.c:1292 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| @@ -984,17 +986,17 @@ msgstr "" | ||||
| "GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. " | ||||
| "gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1302 | ||||
| #: ../src/ui/theme.c:1303 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen" | ||||
|  | ||||
| #: ../src/ui/theme.c:1315 | ||||
| #: ../src/ui/theme.c:1316 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen" | ||||
|  | ||||
| #: ../src/ui/theme.c:1344 | ||||
| #: ../src/ui/theme.c:1345 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| @@ -1003,56 +1005,56 @@ msgstr "" | ||||
| "Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i " | ||||
| "formatet" | ||||
|  | ||||
| #: ../src/ui/theme.c:1355 | ||||
| #: ../src/ui/theme.c:1356 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge" | ||||
|  | ||||
| #: ../src/ui/theme.c:1365 | ||||
| #: ../src/ui/theme.c:1366 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0" | ||||
|  | ||||
| #: ../src/ui/theme.c:1412 | ||||
| #: ../src/ui/theme.c:1413 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "" | ||||
| "Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet" | ||||
|  | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #: ../src/ui/theme.c:1424 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge" | ||||
|  | ||||
| #: ../src/ui/theme.c:1433 | ||||
| #: ../src/ui/theme.c:1434 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ" | ||||
|  | ||||
| #: ../src/ui/theme.c:1462 | ||||
| #: ../src/ui/theme.c:1463 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "Kunne ikke lese farge «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #: ../src/ui/theme.c:1780 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt" | ||||
|  | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #: ../src/ui/theme.c:1807 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| "parsed" | ||||
| msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes" | ||||
|  | ||||
| #: ../src/ui/theme.c:1820 | ||||
| #: ../src/ui/theme.c:1821 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes" | ||||
|  | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #: ../src/ui/theme.c:1942 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| @@ -1061,39 +1063,39 @@ msgstr "" | ||||
| "Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne " | ||||
| "teksten: «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1998 | ||||
| #: ../src/ui/theme.c:1999 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "Koordinatuttrykket var tomt eller ble ikke forstått" | ||||
|  | ||||
| #: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155 | ||||
| #: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "Koordinatuttrykket resulterer i divisjon med null" | ||||
|  | ||||
| #: ../src/ui/theme.c:2163 | ||||
| #: ../src/ui/theme.c:2164 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall" | ||||
|  | ||||
| #: ../src/ui/theme.c:2219 | ||||
| #: ../src/ui/theme.c:2220 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet" | ||||
|  | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet" | ||||
|  | ||||
| #: ../src/ui/theme.c:2236 | ||||
| #: ../src/ui/theme.c:2237 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand" | ||||
|  | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #: ../src/ui/theme.c:2247 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| @@ -1102,38 +1104,38 @@ msgstr "" | ||||
| "Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen " | ||||
| "operand mellom dem." | ||||
|  | ||||
| #: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442 | ||||
| #: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:2496 | ||||
| #: ../src/ui/theme.c:2497 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen." | ||||
|  | ||||
| #: ../src/ui/theme.c:2525 | ||||
| #: ../src/ui/theme.c:2526 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start" | ||||
|  | ||||
| #: ../src/ui/theme.c:2589 | ||||
| #: ../src/ui/theme.c:2590 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes" | ||||
|  | ||||
| #: ../src/ui/theme.c:2600 | ||||
| #: ../src/ui/theme.c:2601 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "" | ||||
| "Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander" | ||||
|  | ||||
| #: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853 | ||||
| #: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "Tema inneholdt et uttrykk som resulterte i en feil: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4499 | ||||
| #: ../src/ui/theme.c:4500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| @@ -1142,25 +1144,25 @@ msgstr "" | ||||
| "<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må " | ||||
| "spesifiseres for denne rammestilen" | ||||
|  | ||||
| #: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035 | ||||
| #: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #: ../src/ui/theme.c:5084 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "Klarte ikke å laste tema «%s»: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233 | ||||
| #: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247 | ||||
| #: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234 | ||||
| #: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "<%s> er ikke satt for tema «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:5255 | ||||
| #: ../src/ui/theme.c:5256 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| @@ -1169,14 +1171,14 @@ msgstr "" | ||||
| "Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window " | ||||
| "type=«%s» style_set=«ett-eller-annet»/>-element" | ||||
|  | ||||
| #: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787 | ||||
| #: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| msgstr "" | ||||
| "Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det" | ||||
|  | ||||
| #: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795 | ||||
| #: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "Konstant «%s» er allerede definert" | ||||
| @@ -1557,7 +1559,7 @@ msgstr "Ingen tekst er tillatt inne i element <%s>" | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> spesifisert to ganger for dette temaet" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4336 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Fant ikke en gyldig fil for tema %s\n" | ||||
|   | ||||
							
								
								
									
										504
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										504
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										99
									
								
								po/sl.po
									
									
									
									
									
								
							
							
						
						
									
										99
									
								
								po/sl.po
									
									
									
									
									
								
							| @@ -11,8 +11,8 @@ 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: 2013-01-12 04:34+0000\n" | ||||
| "PO-Revision-Date: 2013-01-13 11:53+0100\n" | ||||
| "POT-Creation-Date: 2013-03-07 14:02+0000\n" | ||||
| "PO-Revision-Date: 2013-03-07 17:16+0100\n" | ||||
| "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" | ||||
| "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" | ||||
| "Language: sl_SI\n" | ||||
| @@ -215,7 +215,7 @@ msgstr "Poglej razdelek na desni" | ||||
|  | ||||
| #. 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:512 | ||||
| #: ../src/compositor/compositor.c:502 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| @@ -223,6 +223,10 @@ msgid "" | ||||
| msgstr "" | ||||
| "Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza \"%s\"." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1180 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "teksture ozadja iz datoteke ni mogoče ustvariti" | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| msgid "Bell event" | ||||
| msgstr "Dogodek zvonjenja" | ||||
| @@ -257,24 +261,29 @@ msgstr "_Počakaj" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Vsili konec" | ||||
|  | ||||
| #: ../src/core/display.c:394 | ||||
| #: ../src/core/display.c:402 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Manjka razširitev %s, ki je ključna za sestavljanje" | ||||
|  | ||||
| #: ../src/core/display.c:491 | ||||
| #: ../src/core/display.c:494 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n" | ||||
|  | ||||
| # G:1 K:0 O:0 | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| "binding\n" | ||||
| msgstr "Tipko %s s spremenilnikom %x uporablja že nek drug program\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" ni veljaven pospeševalnik\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Onemogoči povezavo z upravljalnikom sej" | ||||
| @@ -299,12 +308,12 @@ msgstr "Začni sejo iz shranjene datoteke" | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "Uskladi klice X" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:533 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Ni mogoče preiskati mape tem: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:549 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -367,17 +376,17 @@ msgstr "" | ||||
| "bližnjico \"%s\"\n" | ||||
|  | ||||
| # G:1 K:0 O:0 | ||||
| #: ../src/core/prefs.c:1877 | ||||
| #: ../src/core/prefs.c:1879 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Delovna površina %d" | ||||
|  | ||||
| #: ../src/core/screen.c:658 | ||||
| #: ../src/core/screen.c:674 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "Zaslon %d na prikazu '%s' ni veljaven\n" | ||||
|  | ||||
| #: ../src/core/screen.c:674 | ||||
| #: ../src/core/screen.c:690 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -386,19 +395,19 @@ msgstr "" | ||||
| "Zaslon %d na prikazu \"%s\" je že upravljan z upravljalnikom oken; " | ||||
| "poskušajte uporabiti možnost --replace za zamenjavo trenutnega.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:701 | ||||
| #: ../src/core/screen.c:717 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "" | ||||
| "Ni mogoče dobiti izbire upravljalnika oken na zaslonu %d prikaza \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/screen.c:770 | ||||
| #: ../src/core/screen.c:795 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "Zaslon %d na prikazu \"%s\"  je že upravljan z upravljalnikom oken\n" | ||||
|  | ||||
| #: ../src/core/screen.c:955 | ||||
| #: ../src/core/screen.c:980 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "Ni mogoče opustiti zaslona %d na prikazu \"%s\"\n" | ||||
| @@ -500,7 +509,7 @@ msgid "Window manager error: " | ||||
| msgstr "Napaka upravljalnika oken: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7279 | ||||
| #: ../src/core/window.c:7538 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -516,7 +525,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:7945 | ||||
| #: ../src/core/window.c:8262 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -526,22 +535,22 @@ msgstr "" | ||||
| "pa določi najmanjšo velikost na %d x %d in največjo na %d x %d; vrednost ni " | ||||
| "smiselna.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:274 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Program je nastavil pokvarjen _NET_WM_PID %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:393 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (na %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1448 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Neveljaven WM_TRANSIENT_FOR za okno 0x%lx naveden za %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1459 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "Predmet WM_TRANSIENT_FOR okna 0x%lx za %s lahko ustvari zanko.\n" | ||||
| @@ -691,11 +700,11 @@ msgstr "Samodejno razpni okna, ki so skoraj enaka velikosti zaslona" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "" | ||||
| "If enabled, monitor nearly monitor sized windows automatically get maximized " | ||||
| "when mapped." | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Izbrana možnost omogoča, da bodo okna, ki so skoraj tako velika kot je velik " | ||||
| "zaslon, samodejno razpeta med preslikavo." | ||||
| "Izbrana možnost omogoča, da bodo okna, ki so skoraj tako velika, kot je " | ||||
| "velik zaslon, med preslikavo samodejno razpeta." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| @@ -922,7 +931,7 @@ msgstr "Mod5" | ||||
| #. Translators: This represents the size of a window.  The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #. | ||||
| #: ../src/ui/resizepopup.c:113 | ||||
| #: ../src/ui/resizepopup.c:136 | ||||
| #, c-format | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
| @@ -1702,56 +1711,56 @@ msgstr "Okvir" | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "Pripeto modalno okno" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:739 | ||||
| #: ../src/ui/theme-viewer.c:737 | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "Preizkus razporeditve gumbov %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:768 | ||||
| #: ../src/ui/theme-viewer.c:766 | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g milisekund za risanje ene sličice okna" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:813 | ||||
| #: ../src/ui/theme-viewer.c:811 | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "Uporaba: metacity-theme-viewer [IMETEME]\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:820 | ||||
| #: ../src/ui/theme-viewer.c:818 | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "Napaka med nalaganjem teme: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:826 | ||||
| #: ../src/ui/theme-viewer.c:824 | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "Tema \"%s\" naložena v %g sekundah\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:871 | ||||
| #: ../src/ui/theme-viewer.c:869 | ||||
| msgid "Normal Title Font" | ||||
| msgstr "Običajna pisava naziva" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:877 | ||||
| #: ../src/ui/theme-viewer.c:875 | ||||
| msgid "Small Title Font" | ||||
| msgstr "Majhna pisava naziva" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:883 | ||||
| #: ../src/ui/theme-viewer.c:881 | ||||
| msgid "Large Title Font" | ||||
| msgstr "Velika pisava naziva" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:888 | ||||
| #: ../src/ui/theme-viewer.c:886 | ||||
| msgid "Button Layouts" | ||||
| msgstr "Razpored gumbov" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:893 | ||||
| #: ../src/ui/theme-viewer.c:891 | ||||
| msgid "Benchmark" | ||||
| msgstr "Primerjalni preizkus" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:949 | ||||
| #: ../src/ui/theme-viewer.c:947 | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "Tukaj je izpisan naziv okna" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1055 | ||||
| #: ../src/ui/theme-viewer.c:1053 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| @@ -1762,41 +1771,41 @@ msgstr "" | ||||
| "sekund v času stenske ure, upoštevajoč sredstva strežnika X (%g milisekund " | ||||
| "na sličico)\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1275 | ||||
| #: ../src/ui/theme-viewer.c:1273 | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "" | ||||
| "preizkus izjave položaja je vrnil logični PRAV, vendar je določil  tudi " | ||||
| "napako" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1277 | ||||
| #: ../src/ui/theme-viewer.c:1275 | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "preizkus izjave položaja je vrnil logični NAPAK in ni določil  napake" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1281 | ||||
| #: ../src/ui/theme-viewer.c:1279 | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "Pričakovana je napaka, vendar ni odziva" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1283 | ||||
| #: ../src/ui/theme-viewer.c:1281 | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "Pričakovana je napaka %d, vrnjena pa je bila %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1289 | ||||
| #: ../src/ui/theme-viewer.c:1287 | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "Napaka ni pričakovana, vendar je vrnjen odziv: %s" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1293 | ||||
| #: ../src/ui/theme-viewer.c:1291 | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "vrednost x je %d, pričakovana pa je %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1296 | ||||
| #: ../src/ui/theme-viewer.c:1294 | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "vrednost y je %d, pričakovana pa je %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1361 | ||||
| #: ../src/ui/theme-viewer.c:1359 | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
|   | ||||
							
								
								
									
										44
									
								
								po/sr.po
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								po/sr.po
									
									
									
									
									
								
							| @@ -10,8 +10,8 @@ msgstr "" | ||||
| "Project-Id-Version: mutter\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter" | ||||
| "&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-02-20 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-03-01 11:30+0200\n" | ||||
| "POT-Creation-Date: 2013-08-18 20:03+0000\n" | ||||
| "PO-Revision-Date: 2013-09-06 09:19+0200\n" | ||||
| "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" | ||||
| "Language-Team: Serbian <gnom@prevod.org>\n" | ||||
| "Language: sr\n" | ||||
| @@ -220,7 +220,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Неки други композитни управник је већ покренут на приказу %i еркана „%s“." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1111 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "склоп позадине не може бити створен из датотеке" | ||||
|  | ||||
| @@ -258,17 +258,17 @@ msgstr "_Сачекај" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Приморај излаз" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Недостаје потребан композитни додатак %s" | ||||
|  | ||||
| #: ../src/core/display.c:485 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -277,6 +277,12 @@ msgstr "" | ||||
| "Неки други програм већ користи тастер %s са измењивачима %x за неку " | ||||
| "функцију\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| #| msgid "\"%s\" is not a valid value for focus attribute" | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "„%s“ није исправна пречица\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Искључује везу са управником сесије" | ||||
| @@ -314,6 +320,20 @@ msgstr "" | ||||
| "Не могу да пронађем тему! Проверите да „%s“ постоји и да садржи уобичајене " | ||||
| "теме.\n" | ||||
|  | ||||
| #: ../src/core/monitor.c:711 | ||||
| msgid "Built-in display" | ||||
| msgstr "Уграђени дисплеј" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor name (in case we don't know | ||||
| #. the vendor), it's Unknown followed by a size in inches, | ||||
| #. like 'Unknown 15"' | ||||
| #. | ||||
| #: ../src/core/monitor.c:739 | ||||
| #, c-format | ||||
| #| msgid "Unknown element %s" | ||||
| msgid "Unknown %s" | ||||
| msgstr "Непознат %s" | ||||
|  | ||||
| #: ../src/core/mutter.c:40 | ||||
| #, c-format | ||||
| msgid "" | ||||
| @@ -493,7 +513,7 @@ msgid "Window manager error: " | ||||
| msgstr "Грешка управника прозора: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7503 | ||||
| #: ../src/core/window.c:7539 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -509,7 +529,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8227 | ||||
| #: ../src/core/window.c:8263 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -519,22 +539,22 @@ msgstr "" | ||||
| "али је поставио најмању величину %d x %d и највећу величину %d x %d што нема " | ||||
| "много смисла.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:304 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Програм је поставио нетачан _NET_WM_PID %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:423 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (на %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1506 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Неисправан прозор 0x%lx наведен као WM_TRANSIENT_FOR за %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "WM_TRANSIENT_FOR прозор 0x%lx за %s ће направити петљу.\n" | ||||
|   | ||||
| @@ -10,8 +10,8 @@ msgstr "" | ||||
| "Project-Id-Version: mutter\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter" | ||||
| "&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-02-20 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-03-01 11:30+0200\n" | ||||
| "POT-Creation-Date: 2013-08-18 20:03+0000\n" | ||||
| "PO-Revision-Date: 2013-09-06 09:19+0200\n" | ||||
| "Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n" | ||||
| "Language-Team: Serbian <gnom@prevod.org>\n" | ||||
| "Language: sr\n" | ||||
| @@ -220,7 +220,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Neki drugi kompozitni upravnik je već pokrenut na prikazu %i erkana „%s“." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1111 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "sklop pozadine ne može biti stvoren iz datoteke" | ||||
|  | ||||
| @@ -258,17 +258,17 @@ msgstr "_Sačekaj" | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Primoraj izlaz" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Nedostaje potreban kompozitni dodatak %s" | ||||
|  | ||||
| #: ../src/core/display.c:485 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:929 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -277,6 +277,12 @@ msgstr "" | ||||
| "Neki drugi program već koristi taster %s sa izmenjivačima %x za neku " | ||||
| "funkciju\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:1129 | ||||
| #, c-format | ||||
| #| msgid "\"%s\" is not a valid value for focus attribute" | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "„%s“ nije ispravna prečica\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Isključuje vezu sa upravnikom sesije" | ||||
| @@ -314,6 +320,20 @@ msgstr "" | ||||
| "Ne mogu da pronađem temu! Proverite da „%s“ postoji i da sadrži uobičajene " | ||||
| "teme.\n" | ||||
|  | ||||
| #: ../src/core/monitor.c:711 | ||||
| msgid "Built-in display" | ||||
| msgstr "Ugrađeni displej" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor name (in case we don't know | ||||
| #. the vendor), it's Unknown followed by a size in inches, | ||||
| #. like 'Unknown 15"' | ||||
| #. | ||||
| #: ../src/core/monitor.c:739 | ||||
| #, c-format | ||||
| #| msgid "Unknown element %s" | ||||
| msgid "Unknown %s" | ||||
| msgstr "Nepoznat %s" | ||||
|  | ||||
| #: ../src/core/mutter.c:40 | ||||
| #, c-format | ||||
| msgid "" | ||||
| @@ -493,7 +513,7 @@ msgid "Window manager error: " | ||||
| msgstr "Greška upravnika prozora: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7503 | ||||
| #: ../src/core/window.c:7539 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -509,7 +529,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8227 | ||||
| #: ../src/core/window.c:8263 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -519,22 +539,22 @@ msgstr "" | ||||
| "ali je postavio najmanju veličinu %d x %d i najveću veličinu %d x %d što nema " | ||||
| "mnogo smisla.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:304 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Program je postavio netačan _NET_WM_PID %lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:423 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (na %s)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1506 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Neispravan prozor 0x%lx naveden kao WM_TRANSIENT_FOR za %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "WM_TRANSIENT_FOR prozor 0x%lx za %s će napraviti petlju.\n" | ||||
|   | ||||
							
								
								
									
										282
									
								
								po/ta.po
									
									
									
									
									
								
							
							
						
						
									
										282
									
								
								po/ta.po
									
									
									
									
									
								
							| @@ -7,17 +7,17 @@ | ||||
| # Dinesh Nadarajah <n_dinesh@yahoo.com>, 2003. | ||||
| # Jayaradha N <jaya@pune.redhat.com>, 2004. | ||||
| # Felix <ifelix@redhat.com>, 2006. | ||||
| # Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012. | ||||
| # Dr.T.Vasudevan <agnihot3@gmail.com>, 2007, 2010, 2011, 2012, 2013. | ||||
| # Dr.T.vasudevan <agnihot3@gmail.com>, 2009. | ||||
| # I. Felix <ifelix@redhat.com>, 2009, 2011. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: metacity.gnome-2-26.ta\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2012-12-02 17:25+0530\n" | ||||
| "PO-Revision-Date: 2012-12-02 18:58+0530\n" | ||||
| "POT-Creation-Date: 2013-03-23 14:03+0530\n" | ||||
| "PO-Revision-Date: 2013-03-23 14:11+0530\n" | ||||
| "Last-Translator: Dr.T.Vasudevan <drtvasudevan@gmail.com>\n" | ||||
| "Language-Team: American English <gnome-tamil-translation@googlegroups.com>\n" | ||||
| "Language-Team: American English <<gnome-tamil-translation@googlegroups.com>>\n" | ||||
| "Language: en_US\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| @@ -70,58 +70,62 @@ msgid "Switch applications" | ||||
| msgstr "பயன்பாடுகளுக்கிடையே மாறவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| msgid "Switch windows" | ||||
| msgstr "சாளரத்தை மாற்றுக" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே மாறவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| msgid "Switch system controls" | ||||
| msgstr "கணினி கட்டுப்பாடுகளை மாற்றவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "சாளரங்களிடையே உடனடியாக நகரவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "ஒரு பயன்பாட்டின் சாளரங்களிடையே நேரடியாக நகரவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "கணினி கட்டுப்பாடுகளை நேரடியாக மாற்றவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "எல்லா வழக்கமான சாளரங்களையும் மறை" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "பணியிடம் 1க்கு மாறு" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "பணியிடம் 2 க்கு மாறு" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "பணியிடம் 3 க்கு மாறு" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "பணியிடம் 4 க்கு மாறு" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "வேலையிடத்தை இடப்பக்கத்திற்கு நகர்த்தவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "வேலையிடத்தை வலப்பக்கத்திற்கு நகர்த்தவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "வேலையிடத்தை மேல்பக்கத்திற்கு நகர்த்தவும்" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:25 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "வேலையிடத்தை கீழே நகர்த்தவும் " | ||||
|  | ||||
| @@ -170,8 +174,8 @@ msgid "Close window" | ||||
| msgstr "சாளரம் மூடவும்" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| msgid "Minimize window" | ||||
| msgstr "சாளரத்தை சிறிதாக்கு" | ||||
| msgid "Hide window" | ||||
| msgstr "சாளரத்தை மறை " | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| msgid "Move window" | ||||
| @@ -217,7 +221,7 @@ msgstr "வலது பக்கத்தில் பிளந்து பா | ||||
|  | ||||
| #. 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:492 | ||||
| #: ../src/compositor/compositor.c:568 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| @@ -225,7 +229,11 @@ msgid "" | ||||
| msgstr "" | ||||
| " %i திரையில் காட்சி \"%s\" இல் இன்னொரு சாளர மேலாளர் இயங்கிக்கொண்டு இருக்கிறது." | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/compositor/meta-background.c:1191 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "கோப்பிலிருந்து பின் புல இழை நய அமைப்பை உருவாக்க முடியவில்லை." | ||||
|  | ||||
| #: ../src/core/bell.c:322 | ||||
| msgid "Bell event" | ||||
| msgstr "மணி நிகழ்ச்சி" | ||||
|  | ||||
| @@ -260,17 +268,17 @@ msgstr "_காத்திரு" | ||||
| msgid "_Force Quit" | ||||
| msgstr "கட்டாய வெளியேற்றம் (_F)" | ||||
|  | ||||
| #: ../src/core/display.c:397 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "நீட்சி  %s  காணப்படவில்லை பவின் ஆக்கத்துக்கு அது அவசியம்" | ||||
|  | ||||
| #: ../src/core/display.c:494 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "X சாளர காட்சியை திறப்பதில் தோல்வி '%s'\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:860 | ||||
| #: ../src/core/keybindings.c:935 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -278,36 +286,41 @@ msgid "" | ||||
| msgstr "" | ||||
| "விசை %s ஐ மாற்றி  %x ஓடு இணைத்து வேறு நிரல் பயன்படுத்திக்கொண்டிருக்கிறது\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/keybindings.c:1135 | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" செல்லாத முடுக்கி\n" | ||||
|  | ||||
| #: ../src/core/main.c:197 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "அமர்வு மேலாளருடன் இருக்கும் இணைப்பை முடக்கு" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:203 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "இயங்கும் சாளர மேலாளரை  மாற்றுக" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:209 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "அமர்வு மேலாண் எண்ணை குறிப்பிடு" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:214 | ||||
| msgid "X Display to use" | ||||
| msgstr "பயன்படுத்த வேண்டிய X காட்சி" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "அமர்வை சேவ்பைல் இலிருந்து துவக்கு " | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:226 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "எக்ஸ் அழைப்புகளை ஒத்திசை." | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:534 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "கருப்பொருள் அடைவை வருடுவதில் தோல்வி: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:550 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -341,7 +354,7 @@ msgstr "அச்சு பதிப்பு" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "பயன்படுத்த க்ளட்டர் செருகிகள்" | ||||
|  | ||||
| #: ../src/core/prefs.c:1079 | ||||
| #: ../src/core/prefs.c:1095 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| @@ -349,14 +362,14 @@ msgstr "" | ||||
| "உடைந்த பயன்பாடுகளின் செயல்பாடு தடைசெய்யப்பட்டது, சில பயன்பாடுகள் சரியாக வேலை " | ||||
| "செய்யாது.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1154 | ||||
| #: ../src/core/prefs.c:1170 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "" | ||||
| "எழுத்துரு விளக்கம் \"%s\" ஐ ஜிசெட்டிங்க்ஸ் விசையிலிருந்து பகுக்க முடியவில்லை %" | ||||
| "s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1220 | ||||
| #: ../src/core/prefs.c:1236 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| @@ -364,24 +377,24 @@ msgid "" | ||||
| msgstr "" | ||||
| "அமைப்பு பாங்கில் உள்ள \"%s\" சுட்டி பட்டன் மாற்றியில் செல்லாத மதிப்பு\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1757 | ||||
| #: ../src/core/prefs.c:1788 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| "\"%s\"\n" | ||||
| msgstr "\"%s\" அமைப்பு தரவுத்தளத்தில் உள்ள மதிப்பு செல்லாத கீபைன்டிங்\"%s\"\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1854 | ||||
| #: ../src/core/prefs.c:1887 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "வேலையிடம் %d" | ||||
|  | ||||
| #: ../src/core/screen.c:652 | ||||
| #: ../src/core/screen.c:691 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "திரை %d காட்சி '%s' இல் செல்லாது\n" | ||||
|  | ||||
| #: ../src/core/screen.c:668 | ||||
| #: ../src/core/screen.c:707 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -390,18 +403,18 @@ msgstr "" | ||||
| "திரை %d காட்சி \"%s\" க்கு சாளர மேலாளர் உள்ளது; --replace தேர்வை பயன்படுத்தி " | ||||
| "தற்போதைய சாளரத்தை மாற்றவும்.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:695 | ||||
| #: ../src/core/screen.c:734 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "திரையில் சாளர மேலாளர் தேர்வை பெறமுடியவில்லை %d காட்சி \"%s\"\n" | ||||
|  | ||||
| #: ../src/core/screen.c:750 | ||||
| #: ../src/core/screen.c:812 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "திரை %d யின் காட்சி \"%s\" க்கு சாளர மேலாளர் ஏற்கெனவே உள்ளது\n" | ||||
|  | ||||
| #: ../src/core/screen.c:935 | ||||
| #: ../src/core/screen.c:998 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "திரை %d ஐ விடுவிக்க முடியவில்லை \"%s\"\n" | ||||
| @@ -462,44 +475,44 @@ msgstr "" | ||||
| " "தற்போதைய அமைப்பை சேமி" செயலுக்கு ஆதரவு இல்லை மேலும் அடுத்த முறை " | ||||
| "உள்நுழையும் போது நீங்களாக துவக்க வேண்டும்" | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:84 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "பிழைதிருத்த பட்டியலை திறப்பதில் தோல்வி: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:94 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "fdopen() பதிவுக்கோப்பு தோல்வி %s: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:100 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "பதிவுக்கோப்பு திறக்கப்பட்டது %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 ../src/tools/mutter-message.c:149 | ||||
| #: ../src/core/util.c:119 ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "வெர்போஸ் ஆதரவு இல்லாமல் மட்டர் அமைக்கப்பட்டது\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:264 | ||||
| msgid "Window manager: " | ||||
| msgstr "சாளர மேலாளர்:" | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:412 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "சாளர மேலாளரில் பிழை" | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:443 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "சாளர மேலாளர் எச்சரிக்கை:" | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:471 | ||||
| msgid "Window manager error: " | ||||
| msgstr "சாளர மேலாளர் பிழை" | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7240 | ||||
| #: ../src/core/window.c:7596 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -516,7 +529,7 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:7905 | ||||
| #: ../src/core/window.c:8320 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| @@ -526,22 +539,22 @@ msgstr "" | ||||
| "அதிக " | ||||
| "பட்ச அளவு %d x %d; பொருள் தரும்படி இல்லை.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:274 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "பயன்பாடு பொய்யான ஒரு _NET_WM_PID %lu ஐ அமைத்தது\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:393 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (%s மீது)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1448 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "செல்லாத WM_TRANSIENT_FOR சாளரம் 0x%lx இதற்கு குறிக்கப்பட்டது: %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1459 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "WM_TRANSIENT_FOR சாளரம் 0x%lx %s க்கு சுழல் நிகழ்வை உருவாக்கும்.\n" | ||||
| @@ -693,10 +706,22 @@ msgstr "" | ||||
| "இந்த மதிப்பை அடைய மறை விளிம்பு சேர்க்கப்படும்." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "ஏறத்தாழ திரை அளவுள்ள சாளரங்களை தானியங்கியாக அதிக பட்ச அளவாக்கு" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "செயலாக்கினால், துவக்கத்தில் ஏறத்தாழ திரை அளவுள்ள புதிய சாளரங்கள் தானியங்கியாக " | ||||
| "அதிக பட்ச அளவாக்கப்படும்" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "கீற்றுத்துள்ளலிருந்து சாளரத்தை தேர்ந்தெடுக்கவும்." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "கீற்று துள்ளுவதை இரத்து செய்" | ||||
|  | ||||
| @@ -899,53 +924,53 @@ msgstr "Mod5" | ||||
| #. Translators: This represents the size of a window.  The first number is | ||||
| #. * the width of the window and the second is the height. | ||||
| #. | ||||
| #: ../src/ui/resizepopup.c:113 | ||||
| #: ../src/ui/resizepopup.c:136 | ||||
| #, c-format | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:234 | ||||
| #: ../src/ui/theme.c:236 | ||||
| msgid "top" | ||||
| msgstr "மேல்" | ||||
|  | ||||
| #: ../src/ui/theme.c:236 | ||||
| #: ../src/ui/theme.c:238 | ||||
| msgid "bottom" | ||||
| msgstr "கீழ்" | ||||
|  | ||||
| #: ../src/ui/theme.c:238 | ||||
| #: ../src/ui/theme.c:240 | ||||
| msgid "left" | ||||
| msgstr "இடது" | ||||
|  | ||||
| #: ../src/ui/theme.c:240 | ||||
| #: ../src/ui/theme.c:242 | ||||
| msgid "right" | ||||
| msgstr "வலது" | ||||
|  | ||||
| #: ../src/ui/theme.c:268 | ||||
| #: ../src/ui/theme.c:270 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "சட்ட வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:287 | ||||
| #: ../src/ui/theme.c:289 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "\"%s\" ஓரத்திற்கு வடிவியல் \"%s\" அளவை குறிப்பிடவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:324 | ||||
| #: ../src/ui/theme.c:326 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "பட்டன் அளவு விகிதம் %g சரியில்ல" | ||||
|  | ||||
| #: ../src/ui/theme.c:336 | ||||
| #: ../src/ui/theme.c:338 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "சட்ட அளவு பட்டன் அளவை குறிப்பிடவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1049 | ||||
| #: ../src/ui/theme.c:1051 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "க்ரேடியன்டில் இரண்டு நிறங்களாவது இருக்க வேண்டும்" | ||||
|  | ||||
| #: ../src/ui/theme.c:1201 | ||||
| #: ../src/ui/theme.c:1203 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| @@ -955,7 +980,7 @@ msgstr "" | ||||
| "அடைப்புக்குறிகளுக்குள்ளும்  " | ||||
| "கொண்டிருக்க வேண்டும் உம்  gtk:custom(foo,bar); \"%s\" ஐ பகுக்க முடியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1217 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| @@ -965,7 +990,7 @@ msgstr "" | ||||
| "A-Za-z0-9-" | ||||
| "_ ஆகியன மட்டுமே செல்லுபடியாகும்." | ||||
|  | ||||
| #: ../src/ui/theme.c:1231 | ||||
| #: ../src/ui/theme.c:1233 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| @@ -974,7 +999,7 @@ msgstr "" | ||||
| "ஜிடிகே:தனிப்பயன் ஒழுங்கு \"gtk:custom(color_name,fallback)\", \"%s\" இந்த " | ||||
| "ஒழுங்குக்கு பொருந்தாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1276 | ||||
| #: ../src/ui/theme.c:1278 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| @@ -984,7 +1009,7 @@ msgstr "" | ||||
| "நிலையை " | ||||
| "குறிக்கும் பகுக்க முடியாது \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1290 | ||||
| #: ../src/ui/theme.c:1292 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| @@ -994,17 +1019,17 @@ msgstr "" | ||||
| "NORMAL " | ||||
| "நிலையை குறிக்கும் பகுக்க முடியாது \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1301 | ||||
| #: ../src/ui/theme.c:1303 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "நிலை \"%s\" வண்ண குறிப்பில் புரிந்துகொள்ள முடியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1314 | ||||
| #: ../src/ui/theme.c:1316 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "நிலை \"%s\" வண்ண குறிப்பு பொருளில் புரிந்துகொள்ள முடியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1343 | ||||
| #: ../src/ui/theme.c:1345 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| @@ -1013,18 +1038,18 @@ msgstr "" | ||||
| "வளைந்த அமைப்பு \"blend/bg_color/fg_color/alpha\", \"%s\" இந்த வடிவமைப்பிற்கு " | ||||
| "பொருந்தாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1354 | ||||
| #: ../src/ui/theme.c:1356 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "ஆம்ஃபா மதிப்பை \"%s\" வளைந்த நிறத்தில் பகுக்க முடியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1364 | ||||
| #: ../src/ui/theme.c:1366 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "" | ||||
| "ஆல்ஃபா மதுப்பு \"%s\"வளைவு நிறத்தில் 0.0 க்கும் 1.0 க்கும் இடையில் இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1411 | ||||
| #: ../src/ui/theme.c:1413 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| @@ -1032,39 +1057,39 @@ msgstr "" | ||||
| "நிழல் வடிவமைப்பு \"shade/base_color/factor\", \"%s\" இந்த அமைப்பிற்கு " | ||||
| "பொருந்தாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1422 | ||||
| #: ../src/ui/theme.c:1424 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "நிழல்விகிதத்தை \"%s\" நிறத்தோடு பகுக்க முடியாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1432 | ||||
| #: ../src/ui/theme.c:1434 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "நிழல் விகிதம் \"%s\" முழுக்களாக உள்ளது " | ||||
|  | ||||
| #: ../src/ui/theme.c:1461 | ||||
| #: ../src/ui/theme.c:1463 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "\"%s\" நிறத்தை பகுக்க முடியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1778 | ||||
| #: ../src/ui/theme.c:1780 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "அச்சுக்கள் எழுத்தால் குறிக்கப்பட்டுள்ளது '%s' க்கு அனுமதி இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:1805 | ||||
| #: ../src/ui/theme.c:1807 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| "parsed" | ||||
| msgstr "அச்சுக்கள் பின்ன எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1819 | ||||
| #: ../src/ui/theme.c:1821 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "அச்சுக்கள் இயல் எண்ணால் குறிக்கப்பட்டுள்ளது '%s' ஐ பகுக்க முடியாது" | ||||
|  | ||||
| #: ../src/ui/theme.c:1940 | ||||
| #: ../src/ui/theme.c:1942 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| @@ -1072,41 +1097,41 @@ msgid "" | ||||
| msgstr "" | ||||
| "உரையின் துவக்கத்தில் அச்சின் கூற்றில் தெரியாத செயல் இடம்பெற்றுள்ளது \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1997 | ||||
| #: ../src/ui/theme.c:1999 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "அச்சு கூற்று காலியாக உள்ளது அல்லது புரியவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154 | ||||
| #: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "அச்சு கூற்று பூஜ்ஜியத்தால் வகுத்தல் பிழையை தந்தது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2162 | ||||
| #: ../src/ui/theme.c:2164 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| msgstr "அச்சு கூற்று mod ஆப்பரேட்டரை பின்ன எண்ணில் பயன்படுத்த முயல்கிறது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2218 | ||||
| #: ../src/ui/theme.c:2220 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "" | ||||
| "அச்சு கூற்றில் ஆப்பரேட்டர் உள்ளது \"%s\" ஆப்பரன் எதிர்பார்க்கப்படுகிறது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2227 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "" | ||||
| "அச்சு கூற்றில் ஆப்பரன்ட் உள்ளது ஆனால் ஆப்பரேட்டர் எதிர்பார்க்கப்படுகிறது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2235 | ||||
| #: ../src/ui/theme.c:2237 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "அச்சு கூற்றில் ஆப்பரன்ட்டுக்கு பதில் ஆப்பரேட்டரால் முடிந்தது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2245 | ||||
| #: ../src/ui/theme.c:2247 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| @@ -1115,39 +1140,39 @@ msgstr "" | ||||
| "அச்சு கூற்றில்  \"%c\" ஆப்பரேட்டர் உள்ளது \"%c\" ஆப்பரேட்டருக்கு ஆப்பரன்ட் " | ||||
| "இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441 | ||||
| #: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "அச்சு கூற்றில் செல்லாத மாற்றி மற்றும் கான்ஸ்ட்டன் உள்ளது \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:2495 | ||||
| #: ../src/ui/theme.c:2497 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "ஆயத்தொலைவு தெரிவிப்பு பகுப்பி அதன் இடையகத்தை நிரப்பியது" | ||||
|  | ||||
| #: ../src/ui/theme.c:2524 | ||||
| #: ../src/ui/theme.c:2526 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "" | ||||
| "அச்சு கூற்றில் மூடிய அடைப்புக்குறி உள்ளது ஆனால் திறந்த அடைப்புகுறி இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:2588 | ||||
| #: ../src/ui/theme.c:2590 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "" | ||||
| "அச்சு கூற்றில் திறந்த அடைப்புக்குறி உள்ளது ஆனால் மூடிய அடைப்புகுறி இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:2599 | ||||
| #: ../src/ui/theme.c:2601 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "அச்சுக்கூற்றில் ஆப்பரன்ட் மற்றும் ஆப்பரேட்டர் காணப்படவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852 | ||||
| #: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "கருப்பொருளில் ஒரு கூற்று இருந்தது. அது பிழையை ஏற்படுத்தியது : %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4498 | ||||
| #: ../src/ui/theme.c:4500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| @@ -1157,25 +1182,25 @@ msgstr "" | ||||
| "பாணிக்கு " | ||||
| "குறிப்பிடப்பட வேண்டும்" | ||||
|  | ||||
| #: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034 | ||||
| #: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "காணவில்லை <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5082 | ||||
| #: ../src/ui/theme.c:5084 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "கருப்பொருளை ஏற்றுவதில் தோல்வி \"%s\": %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232 | ||||
| #: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246 | ||||
| #: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234 | ||||
| #: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "இல்லை<%s> கருப்பொருளுக்காக அமைக்கப்பட்டது \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:5254 | ||||
| #: ../src/ui/theme.c:5256 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| @@ -1184,7 +1209,7 @@ msgstr "" | ||||
| "சட்ட பாணி சாளர வகை இல்லை\"%s\" கருப்பொருளில் \"%s\", <window type=\"%s\" " | ||||
| "style_set=\"whatever\"/> உறுப்பை சேர்க்கவும்" | ||||
|  | ||||
| #: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775 | ||||
| #: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| @@ -1192,7 +1217,7 @@ msgstr "" | ||||
| "பயனீட்டாளர்-குறிப்பிட்ட கான்ஸ்டன் பெரிய எழுத்தில் துவங்க வேண்டும்; \"%s\" " | ||||
| "இல்லை" | ||||
|  | ||||
| #: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783 | ||||
| #: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "கான்ஸ்டன் \"%s\" ஏற்கெனவே குறிப்பிடப்பட்டது" | ||||
| @@ -1575,7 +1600,7 @@ msgstr "உறுப்பிற்குள் உரை அனுமதி இ | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> இந்த கருப்பொருளுக்கு இரண்டுமுறை குறிப்பிட்டுள்ளது" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4336 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "%s கருத்துக்கு செல்லுபடியாகும் கோப்பு கண்டுபிடித்தல் தோல்வியுற்றது \n" | ||||
| @@ -1681,56 +1706,56 @@ msgstr "ஓரம்" | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "இணைத்த மாதிரி உரையாடல்" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:739 | ||||
| #: ../src/ui/theme-viewer.c:737 | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "பட்டன் உருவரை சோதனை %d" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:768 | ||||
| #: ../src/ui/theme-viewer.c:766 | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g சாளரத்தை வரைய மில்லிசெக்கண்டு" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:813 | ||||
| #: ../src/ui/theme-viewer.c:811 | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "பயன்பாடு: metacity-theme-viewer [THEMENAME]\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:820 | ||||
| #: ../src/ui/theme-viewer.c:818 | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "கருப்பொருளை ஏற்றுவதில் பிழை: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:826 | ||||
| #: ../src/ui/theme-viewer.c:824 | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "கருப்பொருள்  \"%s\" %g செகண்டில்\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:870 | ||||
| #: ../src/ui/theme-viewer.c:869 | ||||
| msgid "Normal Title Font" | ||||
| msgstr "இயல்பான தலைப்பு எழுத்துரு" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:876 | ||||
| #: ../src/ui/theme-viewer.c:875 | ||||
| msgid "Small Title Font" | ||||
| msgstr "சிறிய தலைப்பு எழுத்துரு" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:882 | ||||
| #: ../src/ui/theme-viewer.c:881 | ||||
| msgid "Large Title Font" | ||||
| msgstr "பெரிய தலைப்பு எழுத்துரு" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:887 | ||||
| #: ../src/ui/theme-viewer.c:886 | ||||
| msgid "Button Layouts" | ||||
| msgstr "பட்டன் உருவரை" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:892 | ||||
| #: ../src/ui/theme-viewer.c:891 | ||||
| msgid "Benchmark" | ||||
| msgstr "நிர்ணயம்" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:944 | ||||
| #: ../src/ui/theme-viewer.c:947 | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "சாளர தலைப்பு இங்கே" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1047 | ||||
| #: ../src/ui/theme-viewer.c:1053 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| @@ -1741,43 +1766,46 @@ msgstr "" | ||||
| "சேவகனின் " | ||||
| "மூலத்தில் (%g மில்லி செகண்ட் சட்டத்திற்கு)\n" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1266 | ||||
| #: ../src/ui/theme-viewer.c:1273 | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "நிலை கூற்று சோதனை உண்மையை தந்தது ஆனால் பிழை" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1268 | ||||
| #: ../src/ui/theme-viewer.c:1275 | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "நிலை கூற்று சோதனை பொய்யை தந்தது ஆனால் பிழை" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1272 | ||||
| #: ../src/ui/theme-viewer.c:1279 | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1274 | ||||
| #: ../src/ui/theme-viewer.c:1281 | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "பிழை %d எதிர்பார்க்கப்பட்டது %d தரப்படவில்லை" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1280 | ||||
| #: ../src/ui/theme-viewer.c:1287 | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "பிழை எதிர்பார்க்கப்பட்டடு ஆனால் தரப்படவில்லை: %s" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1284 | ||||
| #: ../src/ui/theme-viewer.c:1291 | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "x மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1287 | ||||
| #: ../src/ui/theme-viewer.c:1294 | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "y மதிப்பு %d, %d எதிர்பார்க்கப்பட்டது" | ||||
|  | ||||
| #: ../src/ui/theme-viewer.c:1352 | ||||
| #: ../src/ui/theme-viewer.c:1359 | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "%d அச்சு கூற்று பகுக்கப்பட்டது %g செகண்டில் (%g சராசரி செகண்ட்)\n" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "சாளரத்தை சிறிதாக்கு" | ||||
|  | ||||
| #~ msgid "Comma-separated list of compositor plugins" | ||||
| #~ msgstr "பல்வினையாக்கியின் சொருகிகளின் கமாவால் பிரித்த பட்டியல்." | ||||
|  | ||||
|   | ||||
							
								
								
									
										186
									
								
								po/ug.po
									
									
									
									
									
								
							
							
						
						
									
										186
									
								
								po/ug.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-02-20 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-02-25 18:42+0900\n" | ||||
| "POT-Creation-Date: 2013-03-31 13:47+0000\n" | ||||
| "PO-Revision-Date: 2013-04-06 18:40+0900\n" | ||||
| "Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n" | ||||
| "Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n" | ||||
| "Language: \n" | ||||
| @@ -208,18 +208,18 @@ msgstr "كۆزنەكنىڭ ئوڭ تەرىپىدە كۆرسەتسۇن" | ||||
|  | ||||
| #. 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:507 | ||||
| #: ../src/compositor/compositor.c:568 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| "\"." | ||||
| msgstr "كۆرسەتكۈچ «%2$s» نىڭدىكى ئېكران %1$i دا بۆلەك باشقۇرغۇچ ئىجرا قىلىنىۋاتىدۇ." | ||||
|  | ||||
| #: ../src/compositor/meta-background.c:1116 | ||||
| #: ../src/compositor/meta-background.c:1064 | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "ھۆججەتتىن تەگلىك texture نى قۇرغىلى بولمايدۇ" | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/core/bell.c:322 | ||||
| msgid "Bell event" | ||||
| msgstr "قوڭغۇراق ھادىسىسى" | ||||
|  | ||||
| @@ -251,53 +251,59 @@ msgstr "كۈت(_W)" | ||||
| msgid "_Force Quit" | ||||
| msgstr "مەجبۇرى ئاخىرلاشتۇر(_F)" | ||||
|  | ||||
| #: ../src/core/display.c:392 | ||||
| #: ../src/core/display.c:401 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "بىرىكتۈرۈش ئۈچۈن زۆرۈر بولغان كېڭەيتىلمە %s يوق" | ||||
|  | ||||
| #: ../src/core/display.c:485 | ||||
| #: ../src/core/display.c:493 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "X كۆزنەك سىستېمىسى كۆرسەتكۈچى ‹%s› نى ئېچىش مەغلۇپ بولدى\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:876 | ||||
| #: ../src/core/keybindings.c:935 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| "binding\n" | ||||
| msgstr "باشقا پروگرامما %s كۇنۇپكىسى بىلەن سۈپەتلىگۈچى كۇنۇپكا %x نىڭ بىرىكمىسىنى ئىشلىتىۋاتىدۇ\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/keybindings.c:1135 | ||||
| #, c-format | ||||
| #| msgid "\"%s\" is not a valid value for focus attribute" | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "«%s» ئىناۋەتلىك  تېزلەتكۈچ ئەمەس\n" | ||||
|  | ||||
| #: ../src/core/main.c:197 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "ئەڭگىمە باشقۇرغۇچقا باغلىنىشنى ئىناۋەتسىز قىل" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:203 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "ئىجرا قىلىنىۋاتقان كۆزنەك باشقۇرغۇچنى ئالماشتۇر" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:209 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "ئەڭگىمە باشقۇرغۇ ID سېنى بەلگىلە" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:214 | ||||
| msgid "X Display to use" | ||||
| msgstr "ئىشلىتىدىغان X كۆرسەتكۈچى" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "ساقلانغان ھۆججەتتىن ئەڭگىمەنى دەسلەپلەشتۈرۈش" | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:226 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "X نى قەدەمداش قىلىپ ئىشلەت" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:534 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "ئۆرنەكلەر مۇندەرىجىسىنى ئىزدەش مەغلۇپ بولدى: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:550 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -324,60 +330,60 @@ msgstr "نەشرىنى باس" | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "ئىشلىتىدىغان Mutter قىستۇرمىسى" | ||||
|  | ||||
| #: ../src/core/prefs.c:1087 | ||||
| #: ../src/core/prefs.c:1095 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| msgstr "بۇزۇلغان پروگراممىلارنى تۈزىتىش-ياخشىلاش ئىناۋەتسىز قىلىنغان. بەزى پروگراممىلار نورمال ئىشلىمەسلىكى مۇمكىن.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1162 | ||||
| #: ../src/core/prefs.c:1170 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "GSettings ئاچقۇچى %s نىڭ تەركىبىدىكى فونت چۈشەندۈرۈشى «%s»نى تەھلىل قىلغىنى بولمىدى\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1228 | ||||
| #: ../src/core/prefs.c:1236 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| "modifier\n" | ||||
| msgstr "سەپلىمە سانداندىن تېپىلغان «%s» چاشقىنەك توپچىسىنىڭ سۈپەتلىگۈچىسى ئۈچۈن ئىناۋەتسىز\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1780 | ||||
| #: ../src/core/prefs.c:1788 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| "\"%s\"\n" | ||||
| msgstr "سەپلىمە ساندىنىدىن تېپىلغان «%s»، «%s» كۇنۇپكا باغلانمىسىنىڭ ئىناۋەتلىك قىممىتى ئەمەس\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1879 | ||||
| #: ../src/core/prefs.c:1887 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "خىزمەت بوشلۇقى %d" | ||||
|  | ||||
| #: ../src/core/screen.c:673 | ||||
| #: ../src/core/screen.c:691 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "كۆرسەتكۈچ ‹%2$s› دىكى ئېكران %1$d ئىناۋەتسىز\n" | ||||
|  | ||||
| #: ../src/core/screen.c:689 | ||||
| #: ../src/core/screen.c:707 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| "replace option to replace the current window manager.\n" | ||||
| msgstr "كۆرسەتكۈچ «%2$s» دىكى ئېكران %1$d نىڭ كۆزنەك باشقۇرغۇسى بار؛ ھازىرقى كۆزنەك باشقۇرغۇنى ئالماشتۇرۇش ئۈچۈن --replace تاللانمىسىنى ئىشلىتىپ كۆرۈپ بېقىڭ.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:716 | ||||
| #: ../src/core/screen.c:734 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| msgstr "كۆرسەتكۈچ «%2$s» نىڭدىكى ئېكران %1$d دا كۆزنەك باشقۇرغۇنىڭ تاللانمىسىنى ئالغىلى بولمىدى\n" | ||||
|  | ||||
| #: ../src/core/screen.c:794 | ||||
| #: ../src/core/screen.c:812 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "«%2$s» دىكى %1$d ئېكراندا بىر كۆزنەك باشقۇرغۇ  بار\n" | ||||
|  | ||||
| #: ../src/core/screen.c:979 | ||||
| #: ../src/core/screen.c:998 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "«%2$s» دىكى %1$d  ئېكراننى بوشاتقىلى بولمىدى\n" | ||||
| @@ -435,49 +441,49 @@ msgid "" | ||||
| "be restarted manually next time you log in." | ||||
| msgstr "بۇ كۆزنەكلەردە «ھازىرقى تەڭشەكنى ساقلاش» ئىقتىدارىنى ئىشلەتكىلى بولمايدۇ. كېيىن كىرگەندە يەنە قوزغىتىڭ." | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:84 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "سازلاش خاتىرىسىنى ئېچىش مەغلۇپ بولدى:%s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:94 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "خاتىرە ھۆججىتى %s غا  fdopen()  مەشغۇلاتى قىلغىلى بولمىدى:%s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:100 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "ئاچقان خاتىرە ھۆججەت %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 ../src/tools/mutter-message.c:149 | ||||
| #: ../src/core/util.c:119 ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter تەرجىمە-تەھرىرلىگەندە تەپسىلات قوللاش ھالىتى قوشۇلمىغان\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:264 | ||||
| msgid "Window manager: " | ||||
| msgstr "كۆزنەك باشقۇرغۇ: " | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:412 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "كۆزنەك باشقۇرغۇدىكى كەمتۈك: " | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:443 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "كۆزنەك باشقۇرغۇ ئاگاھلاندۇرۇشى: " | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:471 | ||||
| msgid "Window manager error: " | ||||
| msgstr "كۆزنەك باشقۇرغۇ خاتالىقى: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7503 | ||||
| #: ../src/core/window.c:7596 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| "window as specified in the ICCCM.\n" | ||||
| msgstr "كۆزنەك %s  بەلگىلىمە ICCCM دا بەلگىلەنگەن WM_CLIENT_LEADER كۆزنەكنى ئەمەس SM_CLIENT_ID نى ئۆزى بەلگىلىۋېپتۇ.\n" | ||||
| msgstr "كۆزنەك %s  بەلگىلىمە ICCCM دا بەلگىلەنگەن WM_CLIENT_LEADER كۆزنەكنى ئەمەس SM_CLIENT_ID نى ئۆزى بەلگىلىۋېلىپتۇ.\n" | ||||
|  | ||||
| #. We ignore mwm_has_resize_func because WM_NORMAL_HINTS is the | ||||
| #. * authoritative source for that info. Some apps such as mplayer or | ||||
| @@ -486,29 +492,29 @@ msgstr "كۆزنەك %s  بەلگىلىمە ICCCM دا بەلگىلەنگەن WM | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:8227 | ||||
| #: ../src/core/window.c:8320 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets an MWM hint indicating it isn't resizable, but sets min size " | ||||
| "%d x %d and max size %d x %d; this doesn't make much sense.\n" | ||||
| msgstr "كۆزنەك %s نىڭدا MWM بەلگىلەنگەن بولۇپ، بۇ كۆزنەك چوڭلۇقىنى ئۆزگەرتكىلى بولمايدۇ دېگەن مەنىدە. بىراق ئەڭ كىچىك چوڭلۇقى%d x %d، ۋە ئەڭ كىچىك چوڭلۇقى %d x %d قىلىپ بەلگىلىنىپتۇ. بۇنىڭ ھېچقانداق ئەھمىيىتى يوق.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:304 | ||||
| #: ../src/core/window-props.c:318 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "پروگرامما بىر ساختا _NET_WM_PID نى بەلگىلىدى%lu\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:423 | ||||
| #: ../src/core/window-props.c:434 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (ھازىر %s نىڭ ئۈستىدە)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1506 | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "%2$s  گە بەلگىلەنگەن ئۈنۈمسىز WM_TRANSIENT_FOR كۆزنەك 0x%1$lx بولىدۇ.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1517 | ||||
| #: ../src/core/window-props.c:1528 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "%2$s نىڭ WM_TRANSIENT_FOR كۆزنەك0x%1$lx دەۋرىيلىك قۇرۇشى مۇمكىن.\n" | ||||
| @@ -850,261 +856,261 @@ msgstr "Mod5" | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:235 | ||||
| #: ../src/ui/theme.c:236 | ||||
| msgid "top" | ||||
| msgstr "چوققا" | ||||
|  | ||||
| #: ../src/ui/theme.c:237 | ||||
| #: ../src/ui/theme.c:238 | ||||
| msgid "bottom" | ||||
| msgstr "ئاستى" | ||||
|  | ||||
| #: ../src/ui/theme.c:239 | ||||
| #: ../src/ui/theme.c:240 | ||||
| msgid "left" | ||||
| msgstr "سول" | ||||
|  | ||||
| #: ../src/ui/theme.c:241 | ||||
| #: ../src/ui/theme.c:242 | ||||
| msgid "right" | ||||
| msgstr "ئوڭ" | ||||
|  | ||||
| #: ../src/ui/theme.c:269 | ||||
| #: ../src/ui/theme.c:270 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "كاندۇكنىڭ گېئومېتىرىيىلىك شەكلى «%s» ئۆلچەمنى ئىپادىلىمەيدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:288 | ||||
| #: ../src/ui/theme.c:289 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "كاندۇكنىڭ گېئومېتىرىيىلىك شەكلى گىرۋەك «%2$s» نىڭ ئۆلچىمى «%1$s» ئىپادىلىمەيدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:325 | ||||
| #: ../src/ui/theme.c:326 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "توپچىنىڭ ئېگىزلىك ۋە كەڭلىك نىسبىتى %g مۇۋاپىق ئەمەس" | ||||
|  | ||||
| #: ../src/ui/theme.c:337 | ||||
| #: ../src/ui/theme.c:338 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "كاندۇكنىڭ گېئومېتىرىيىلىك شەكلى توپچىلارنىڭ چوڭلۇقىنى ئىپادىلىمەيدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:1050 | ||||
| #: ../src/ui/theme.c:1051 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "تەدرىجىي ئۆزگىرىشتە ئاز دېگەندە ئىككى خىل رەڭ بولۇش كېرەك" | ||||
|  | ||||
| #: ../src/ui/theme.c:1202 | ||||
| #: ../src/ui/theme.c:1203 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| "parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\"" | ||||
| msgstr "GTK رەڭ ئۆلچىمىدە ھالەتتىن كېيىن چوقۇم رەڭ ئاتى ۋە زاپاس بولۇشى لازىم، مەسىلەن، gtk:custom(foo,bar) ھالەت؛ «%s» نى تەھلىل قىلالمايدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:1218 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| "_ are valid" | ||||
| msgstr "gtk:custom نىڭ color_name پارامېتىرىدىكى ئىناۋەتسىز ھەرپ '%c'، پەقەت A-Za-z0-9-_  نىلا ئىشلەتكىلى بولىدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:1232 | ||||
| #: ../src/ui/theme.c:1233 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| "fit the format" | ||||
| msgstr "Gtk:custom نىڭ پىچىمى \"gtk:custom(color_name,fallback)\" بولۇپ، «%s» پىچىمغا توغرا كەلمەيدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:1277 | ||||
| #: ../src/ui/theme.c:1278 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| "where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "GTK رەڭ بەلگىلىمىسىنىڭ ھالىتى چوقۇم gtk:fg[NORMAL] نىڭدەك تىرناق ئىچىگە ئېلىنىشى كېرەك؛ «%s» نى تەھلىل قىلغىلى بولمىدى." | ||||
|  | ||||
| #: ../src/ui/theme.c:1291 | ||||
| #: ../src/ui/theme.c:1292 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| "fg[NORMAL] where NORMAL is the state; could not parse \"%s\"" | ||||
| msgstr "GTK رەڭ بەلگىلىمىسىنىڭ ھالىتىنىڭ ئارقىسىغا سول تىرناق يېزىلىشى كېرەك.  مەسىلەن gtk:fg[NORMAL] نىڭدەك بۇ يەردىكى «NORMAL» ھالەتنى بىلدۈرىدۇ؛ «%s» نى تەھلىل قىلغىلى بولمىدى." | ||||
|  | ||||
| #: ../src/ui/theme.c:1302 | ||||
| #: ../src/ui/theme.c:1303 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "رەڭ بەلگىلىمىسىدىكى «%s» ھالەتنى چۈشەنگىلى بولمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1315 | ||||
| #: ../src/ui/theme.c:1316 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "رەڭ بەلگىلىمىسىدىكى «%s» رەڭ بۆلىكىنى چۈشەنگىلى بولمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1344 | ||||
| #: ../src/ui/theme.c:1345 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| "format" | ||||
| msgstr "بىرىكمە رەڭنىڭ فورماتى \"blend/bg_color/fg_color/alpha\"،  «%s» بۇ پىچىمغا ماس كەلمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1355 | ||||
| #: ../src/ui/theme.c:1356 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "بىرىكمە رەڭدىكى ئالفا قىممىتى «%s» نى تەھلىل قىلغىلى بولمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1365 | ||||
| #: ../src/ui/theme.c:1366 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "بىرىكمە رەڭنىڭ ئالفا قىممىتى «%s» نىڭ دائىرىسى  0.0 ~1.0 ئىچىدە ئەمەس" | ||||
|  | ||||
| #: ../src/ui/theme.c:1412 | ||||
| #: ../src/ui/theme.c:1413 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| msgstr "سايە پىچىمى «shade/base_color/factor»، «%s» بۇ پىچىمغا ماسلاشمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1423 | ||||
| #: ../src/ui/theme.c:1424 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "سايە رەڭگىدىكى سايە فاكتور «%s» نى تەھلىل قىلغىلى بولمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1433 | ||||
| #: ../src/ui/theme.c:1434 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "سايە رەڭگىدىكى سايە فاكتورى «%s» مەنپىي سان" | ||||
|  | ||||
| #: ../src/ui/theme.c:1462 | ||||
| #: ../src/ui/theme.c:1463 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "رەڭ «%s» نى ئانالىز قىلغىلى بولمىدى" | ||||
|  | ||||
| #: ../src/ui/theme.c:1779 | ||||
| #: ../src/ui/theme.c:1780 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە رۇخسەت قىلىنمىغان ھەرپ '‹%s› بار" | ||||
|  | ||||
| #: ../src/ui/theme.c:1806 | ||||
| #: ../src/ui/theme.c:1807 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| "parsed" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە تەھلىل قىلغىلى بولمايدىغان كەسىر سان ‹%s› بار" | ||||
|  | ||||
| #: ../src/ui/theme.c:1820 | ||||
| #: ../src/ui/theme.c:1821 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە تەھلىل قىلغىلى بولمايدىغان پۈتۈن سان ‹%s› بار" | ||||
|  | ||||
| #: ../src/ui/theme.c:1941 | ||||
| #: ../src/ui/theme.c:1942 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| "\"%s\"" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ بېشىدا نامەلۇم ئەمەل بار: «%s»" | ||||
|  | ||||
| #: ../src/ui/theme.c:1998 | ||||
| #: ../src/ui/theme.c:1999 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "كوئوردېنات ئىپادىسى قۇرۇق ياكى چۈشىنىكسىز" | ||||
|  | ||||
| #: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155 | ||||
| #: ../src/ui/theme.c:2112 ../src/ui/theme.c:2122 ../src/ui/theme.c:2156 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "كوئوردېنات ئىپادىسى 0 نى بۆلگۈچى قىلغان" | ||||
|  | ||||
| #: ../src/ui/theme.c:2163 | ||||
| #: ../src/ui/theme.c:2164 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| msgstr "كوئوردېنات ئىپادىسى كەسىر سانغا mod ئەمىلىنى ئىشلەتمەكچى" | ||||
|  | ||||
| #: ../src/ui/theme.c:2219 | ||||
| #: ../src/ui/theme.c:2220 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە سان كېلىدىغان يەردە ئەمەل «%s» بار ئىكەن" | ||||
|  | ||||
| #: ../src/ui/theme.c:2228 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە ئەمەل كېلىدىغان يەردە سان بار ئىكەن" | ||||
|  | ||||
| #: ../src/ui/theme.c:2236 | ||||
| #: ../src/ui/theme.c:2237 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "كوئوردېنات ئىپادىسى سان بىلەن ئاياغلاشماي ئەمەل بىلەن ئاياغلاشقان" | ||||
|  | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #: ../src/ui/theme.c:2247 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| "operand in between" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە ئەمەل «%2$c» نىڭ ئارقىسىدىن ئەمەل «%1$c» كېلىپتۇ، ئارىلىقتا سان يوق ئىكەن" | ||||
|  | ||||
| #: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442 | ||||
| #: ../src/ui/theme.c:2398 ../src/ui/theme.c:2443 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە نامەلۇم ئۆزگەرگۈچى ياكى تۇراقلىق سان «%s» بار ئىكەن" | ||||
|  | ||||
| #: ../src/ui/theme.c:2496 | ||||
| #: ../src/ui/theme.c:2497 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "كوئوردېنات ئىپادىسىنى تەھلىل قىلىۋاتقاندا يىغلەك تېشىپ كەتتى." | ||||
|  | ||||
| #: ../src/ui/theme.c:2525 | ||||
| #: ../src/ui/theme.c:2526 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدىكى يېپىلغان تىرناققا ماس كېلىدىغان ئېچىلغان تىرناق يوق" | ||||
|  | ||||
| #: ../src/ui/theme.c:2589 | ||||
| #: ../src/ui/theme.c:2590 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدىكى ئېچىلغان تىرناققا ماس كېلىدىغان يېپىلغان تىرناق يوق" | ||||
|  | ||||
| #: ../src/ui/theme.c:2600 | ||||
| #: ../src/ui/theme.c:2601 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "كوئوردېنات ئىپادىسىنىڭ تەركىبىدە ئەمەل(قوشۇش، ئېلىش...) ياكى سان يوق" | ||||
|  | ||||
| #: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853 | ||||
| #: ../src/ui/theme.c:2814 ../src/ui/theme.c:2834 ../src/ui/theme.c:2854 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "ئۆرنەك تەركىبىدە خاتالىق چىقىرىدىغان ئىپادە بار: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4499 | ||||
| #: ../src/ui/theme.c:4500 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| "specified for this frame style" | ||||
| msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/>بۇ كۆزنەكنىڭ ئۇسلۇبى ئۈچۈن بەلگىلىنىشى زۆرۈر" | ||||
|  | ||||
| #: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035 | ||||
| #: ../src/ui/theme.c:5011 ../src/ui/theme.c:5036 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> يوق" | ||||
|  | ||||
| #: ../src/ui/theme.c:5083 | ||||
| #: ../src/ui/theme.c:5084 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "ئۆرنەك «%s»  نى ئوقۇش مەغلۇپ بولدى: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233 | ||||
| #: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247 | ||||
| #: ../src/ui/theme.c:5220 ../src/ui/theme.c:5227 ../src/ui/theme.c:5234 | ||||
| #: ../src/ui/theme.c:5241 ../src/ui/theme.c:5248 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "ئۆرنەك «%2$s» نىڭ <%1$s> ئى بەلگىلەنمىگەن" | ||||
|  | ||||
| #: ../src/ui/theme.c:5255 | ||||
| #: ../src/ui/theme.c:5256 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| "type=\"%s\" style_set=\"whatever\"/> element" | ||||
| msgstr "ئۆرنەك «%2$s» نىڭ ئىچىدىكى كۆزنەك تىپى <%1$s> نىڭ كاندۇك ئۇسلۇبى بەلگىلەنمىگەن. بىر <window type=\"%3$s\" style_set=\"whatever\"/> ئېلېمېنتى قوشۇڭ" | ||||
|  | ||||
| #: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787 | ||||
| #: ../src/ui/theme.c:5663 ../src/ui/theme.c:5725 ../src/ui/theme.c:5788 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| msgstr "ئىشلەتكۈچى بەلگىلىگەن تۇراقلىق مىقدار چوقۇم چوڭ ھەرپ بىلەن باشلانسۇن؛ «%s» بولمايدۇ" | ||||
|  | ||||
| #: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795 | ||||
| #: ../src/ui/theme.c:5671 ../src/ui/theme.c:5733 ../src/ui/theme.c:5796 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "تۇراقلىق سان «%s» غا ئېنىقلىما بېرىلگەن" | ||||
| @@ -1464,7 +1470,7 @@ msgstr "ئېلېمېنت <%s> نىڭ ئىچىدە تېكىست بولسا بول | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "بۇ ئۆرنەك ئۈچۈن <%s> ئىككى قېتىم بەلگىلەنگەن" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4336 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "ئۆرنەك %s  ئۈچۈن ئىناۋەتلىك ھۆججەتنى تېپىش مەغلۇپ بولدى\n" | ||||
|   | ||||
							
								
								
									
										10
									
								
								po/vi.po
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								po/vi.po
									
									
									
									
									
								
							| @@ -9,7 +9,7 @@ msgstr "" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-03-01 15:50+0000\n" | ||||
| "PO-Revision-Date: 2013-03-02 18:04+0700\n" | ||||
| "PO-Revision-Date: 2013-03-17 19:37+0700\n" | ||||
| "Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n" | ||||
| "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" | ||||
| "Language: vi\n" | ||||
| @@ -797,11 +797,11 @@ msgstr "Vùng làm việc 1_0" | ||||
| #: ../src/ui/menu.c:216 | ||||
| #, c-format | ||||
| msgid "Workspace %s%d" | ||||
| msgstr "Vùng làm việc «%s%d»" | ||||
| msgstr "Vùng làm việc %s%d" | ||||
|  | ||||
| #: ../src/ui/menu.c:397 | ||||
| msgid "Move to Another _Workspace" | ||||
| msgstr "Chuyển sang Vùng làm việc _khác" | ||||
| msgstr "Chuyển sang vùng làm việc _khác" | ||||
|  | ||||
| # Name: don't translate / Tên: đừng dịch | ||||
| #. This is the text that should appear next to menu accelerators | ||||
| @@ -850,7 +850,7 @@ msgstr "Meta" | ||||
| #. | ||||
| #: ../src/ui/metaaccellabel.c:101 | ||||
| msgid "Super" | ||||
| msgstr "Cao cấp" | ||||
| msgstr "Super" | ||||
|  | ||||
| #. This is the text that should appear next to menu accelerators | ||||
| #. * that use the hyper key. If the text on this key isn't typically | ||||
| @@ -859,7 +859,7 @@ msgstr "Cao cấp" | ||||
| #. | ||||
| #: ../src/ui/metaaccellabel.c:107 | ||||
| msgid "Hyper" | ||||
| msgstr "Cao" | ||||
| msgstr "Hyper" | ||||
|  | ||||
| # Name: don't translate / Tên: đừng dịch | ||||
| #. This is the text that should appear next to menu accelerators | ||||
|   | ||||
							
								
								
									
										651
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
							
						
						
									
										651
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										651
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										651
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1
									
								
								protocol/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								protocol/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| EXTRA_DIST = xserver.xml | ||||
							
								
								
									
										30
									
								
								protocol/gtk-shell.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								protocol/gtk-shell.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| <protocol name="gtk"> | ||||
|  | ||||
|   <interface name="gtk_shell" version="1"> | ||||
|     <enum name="capability"> | ||||
|       <entry name="global_app_menu" value="1"/> | ||||
|       <entry name="global_menu_bar" value="2"/> | ||||
|     </enum> | ||||
|  | ||||
|     <event name="capabilities"> | ||||
|       <arg name="capabilities" type="uint"/> | ||||
|     </event> | ||||
|  | ||||
|     <request name="get_gtk_surface"> | ||||
|       <arg name="gtk_surface" type="new_id" interface="gtk_surface"/> | ||||
|       <arg name="surface" type="object" interface="wl_surface"/> | ||||
|     </request> | ||||
|   </interface> | ||||
|  | ||||
|   <interface name="gtk_surface" version="1"> | ||||
|     <request name="set_dbus_properties"> | ||||
|       <arg name="application_id" type="string" allow-null="true"/> | ||||
|       <arg name="app_menu_path" type="string" allow-null="true"/> | ||||
|       <arg name="menubar_path" type="string" allow-null="true"/> | ||||
|       <arg name="window_object_path" type="string" allow-null="true"/> | ||||
|       <arg name="application_object_path" type="string" allow-null="true"/> | ||||
|       <arg name="unique_bus_name" type="string" allow-null="true"/> | ||||
|     </request> | ||||
|   </interface> | ||||
|  | ||||
| </protocol> | ||||
							
								
								
									
										18
									
								
								protocol/xserver.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								protocol/xserver.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| <protocol name="xserver"> | ||||
|  | ||||
|   <interface name="xserver" version="1"> | ||||
|     <request name="set_window_id"> | ||||
|       <arg name="surface" type="object" interface="wl_surface"/> | ||||
|       <arg name="id" type="uint"/> | ||||
|     </request> | ||||
|  | ||||
|     <event name="client"> | ||||
|       <arg name="fd" type="fd"/> | ||||
|     </event> | ||||
|  | ||||
|     <event name="listen_socket"> | ||||
|       <arg name="fd" type="fd"/> | ||||
|     </event> | ||||
|   </interface> | ||||
|  | ||||
| </protocol> | ||||
							
								
								
									
										174
									
								
								src/Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										174
									
								
								src/Makefile.am
									
									
									
									
									
								
							| @@ -1,15 +1,16 @@ | ||||
| # Flag build for parallelism; see https://savannah.gnu.org/patch/?6905 | ||||
| .AUTOPARALLEL: | ||||
|  | ||||
| lib_LTLIBRARIES = libmutter.la | ||||
| lib_LTLIBRARIES = libmutter-wayland.la | ||||
|  | ||||
| SUBDIRS=wm-tester tools compositor/plugins | ||||
| SUBDIRS=compositor/plugins | ||||
|  | ||||
| INCLUDES=								\ | ||||
| 	-DCLUTTER_ENABLE_EXPERIMENTAL_API				\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_API					\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_2_0_API                              \ | ||||
| 	$(MUTTER_CFLAGS)						\ | ||||
| 	-I$(top_builddir)						\ | ||||
| 	-I$(srcdir)							\ | ||||
| 	-I$(srcdir)/core						\ | ||||
| 	-I$(srcdir)/ui							\ | ||||
| @@ -29,11 +30,24 @@ INCLUDES=								\ | ||||
| 	-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\"			\ | ||||
| 	-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" | ||||
|  | ||||
| mutter_built_sources = \ | ||||
| 	mutter-enum-types.h \ | ||||
| 	mutter-enum-types.c | ||||
| INCLUDES += \ | ||||
| 	-I$(srcdir)/wayland						\ | ||||
| 	-I$(builddir)/wayland						\ | ||||
| 	-DXWAYLAND_PATH='"@XWAYLAND_PATH@"' | ||||
|  | ||||
| libmutter_la_SOURCES =				\ | ||||
| mutter_built_sources = \ | ||||
| 	$(dbus_idle_built_sources)		\ | ||||
| 	$(dbus_xrandr_built_sources)		\ | ||||
| 	mutter-enum-types.h 			\ | ||||
| 	mutter-enum-types.c			\ | ||||
| 	wayland/gtk-shell-protocol.c		\ | ||||
| 	wayland/gtk-shell-server-protocol.h	\ | ||||
| 	wayland/gtk-shell-client-protocol.h	\ | ||||
| 	wayland/xserver-protocol.c		\ | ||||
| 	wayland/xserver-server-protocol.h	\ | ||||
| 	wayland/xserver-client-protocol.h | ||||
|  | ||||
| libmutter_wayland_la_SOURCES =			\ | ||||
| 	core/async-getprop.c			\ | ||||
| 	core/async-getprop.h			\ | ||||
| 	core/barrier.c				\ | ||||
| @@ -62,6 +76,7 @@ libmutter_la_SOURCES =				\ | ||||
| 	compositor/meta-shadow-factory.c	\ | ||||
| 	compositor/meta-shadow-factory-private.h	\ | ||||
| 	compositor/meta-shaped-texture.c	\ | ||||
| 	compositor/meta-shaped-texture-private.h 	\ | ||||
| 	compositor/meta-texture-rectangle.c	\ | ||||
| 	compositor/meta-texture-rectangle.h	\ | ||||
| 	compositor/meta-texture-tower.c		\ | ||||
| @@ -94,10 +109,10 @@ libmutter_la_SOURCES =				\ | ||||
| 	ui/draw-workspace.h			\ | ||||
| 	core/edge-resistance.c			\ | ||||
| 	core/edge-resistance.h			\ | ||||
| 	core/edid-parse.c			\ | ||||
| 	core/edid.h				\ | ||||
| 	core/errors.c				\ | ||||
| 	meta/errors.h				\ | ||||
| 	core/eventqueue.c			\ | ||||
| 	core/eventqueue.h			\ | ||||
| 	core/frame.c				\ | ||||
| 	core/frame.h				\ | ||||
| 	ui/gradient.c				\ | ||||
| @@ -112,6 +127,16 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/keybindings.c			\ | ||||
| 	core/keybindings-private.h		\ | ||||
| 	core/main.c				\ | ||||
| 	core/meta-cursor-tracker.c		\ | ||||
| 	core/meta-cursor-tracker-private.h	\ | ||||
| 	core/meta-idle-monitor.c		\ | ||||
| 	core/meta-idle-monitor-private.h	\ | ||||
| 	core/meta-xrandr-shared.h		\ | ||||
| 	core/monitor.c				\ | ||||
| 	core/monitor-config.c			\ | ||||
| 	core/monitor-kms.c			\ | ||||
| 	core/monitor-private.h			\ | ||||
| 	core/monitor-xrandr.c			\ | ||||
| 	core/mutter-Xatomtype.h			\ | ||||
| 	core/place.c				\ | ||||
| 	core/place.h				\ | ||||
| @@ -129,6 +154,7 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/stack-tracker.h			\ | ||||
| 	core/util.c				\ | ||||
| 	meta/util.h				\ | ||||
| 	core/util-private.h			\ | ||||
| 	core/window-props.c			\ | ||||
| 	core/window-props.h			\ | ||||
| 	core/window.c				\ | ||||
| @@ -141,7 +167,6 @@ libmutter_la_SOURCES =				\ | ||||
| 	meta/common.h				\ | ||||
| 	core/core.h				\ | ||||
| 	ui/ui.h					\ | ||||
| 	inlinepixbufs.h				\ | ||||
| 	ui/frames.c				\ | ||||
| 	ui/frames.h				\ | ||||
| 	ui/menu.c				\ | ||||
| @@ -159,12 +184,32 @@ libmutter_la_SOURCES =				\ | ||||
| 	meta/theme.h				\ | ||||
| 	ui/theme-private.h			\ | ||||
| 	ui/ui.c					\ | ||||
| 	meta/preview-widget.h			\ | ||||
| 	ui/preview-widget.c			\ | ||||
| 	$(mutter_built_sources) | ||||
|  | ||||
| libmutter_la_LDFLAGS = -no-undefined | ||||
| libmutter_la_LIBADD  = $(MUTTER_LIBS) | ||||
| libmutter_wayland_la_SOURCES +=			\ | ||||
| 	wayland/meta-wayland.c			\ | ||||
| 	wayland/meta-wayland-private.h		\ | ||||
| 	wayland/meta-xwayland-private.h		\ | ||||
| 	wayland/meta-xwayland.c			\ | ||||
| 	wayland/meta-wayland-data-device.c      \ | ||||
| 	wayland/meta-wayland-data-device.h      \ | ||||
| 	wayland/meta-wayland-keyboard.c		\ | ||||
| 	wayland/meta-wayland-keyboard.h		\ | ||||
| 	wayland/meta-wayland-pointer.c		\ | ||||
| 	wayland/meta-wayland-pointer.h		\ | ||||
| 	wayland/meta-wayland-seat.c		\ | ||||
| 	wayland/meta-wayland-seat.h		\ | ||||
| 	wayland/meta-wayland-stage.h		\ | ||||
| 	wayland/meta-wayland-stage.c		\ | ||||
| 	wayland/meta-wayland-surface.c		\ | ||||
| 	wayland/meta-wayland-surface.h		\ | ||||
| 	wayland/meta-wayland-types.h		\ | ||||
| 	wayland/meta-wayland-versions.h		\ | ||||
| 	wayland/meta-weston-launch.c		\ | ||||
| 	wayland/meta-weston-launch.h | ||||
|  | ||||
| libmutter_wayland_la_LDFLAGS = -no-undefined | ||||
| libmutter_wayland_la_LIBADD  = $(MUTTER_LIBS) | ||||
|  | ||||
| # Headers installed for plugins; introspected information will | ||||
| # be extracted into Mutter-<version>.gir | ||||
| @@ -183,6 +228,8 @@ libmutterinclude_base_headers =		\ | ||||
| 	meta/meta-background-actor.h		\ | ||||
| 	meta/meta-background-group.h		\ | ||||
| 	meta/meta-background.h			\ | ||||
| 	meta/meta-cursor-tracker.h		\ | ||||
| 	meta/meta-idle-monitor.h		\ | ||||
| 	meta/meta-plugin.h			\ | ||||
| 	meta/meta-shaped-texture.h		\ | ||||
| 	meta/meta-shadow-factory.h		\ | ||||
| @@ -198,22 +245,29 @@ libmutterinclude_base_headers =		\ | ||||
| # Excluded from scanning for introspection but installed | ||||
| # atomnames.h: macros cause problems for scanning process | ||||
| libmutterinclude_extra_headers =		\ | ||||
| 	meta/preview-widget.h			\ | ||||
| 	meta/atomnames.h | ||||
|  | ||||
| libmutterincludedir = $(includedir)/mutter/meta | ||||
| libmutterincludedir = $(includedir)/mutter-wayland/meta | ||||
|  | ||||
| libmutterinclude_HEADERS =			\ | ||||
| 	$(libmutterinclude_base_headers)	\ | ||||
| 	$(libmutterinclude_extra_headers) | ||||
|  | ||||
| mutter_theme_viewer_SOURCES=  \ | ||||
| 	ui/theme-viewer.c | ||||
| bin_PROGRAMS=mutter-wayland | ||||
|  | ||||
| bin_PROGRAMS=mutter mutter-theme-viewer | ||||
| mutter_wayland_SOURCES = core/mutter.c | ||||
| mutter_wayland_LDADD = $(MUTTER_LIBS) libmutter-wayland.la | ||||
|  | ||||
| mutter_SOURCES = core/mutter.c | ||||
| mutter_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| bin_PROGRAMS+=mutter-launch | ||||
|  | ||||
| mutter_launch_SOURCES = wayland/weston-launch.c wayland/weston-launch.h | ||||
|  | ||||
| mutter_launch_CFLAGS = $(MUTTER_LAUNCH_CFLAGS) -DLIBDIR=\"$(libdir)\" | ||||
| mutter_launch_LDFLAGS = $(MUTTER_LAUNCH_LIBS) -lpam | ||||
|  | ||||
| install-exec-hook: | ||||
| 	-chown root $(DESTDIR)$(bindir)/mutter-launch | ||||
| 	-chmod u+s $(DESTDIR)$(bindir)/mutter-launch | ||||
|  | ||||
| if HAVE_INTROSPECTION | ||||
| include $(INTROSPECTION_MAKEFILE) | ||||
| @@ -235,43 +289,36 @@ typelib_DATA = Meta-$(api_version).typelib | ||||
|  | ||||
| INTROSPECTION_GIRS = Meta-$(api_version).gir | ||||
|  | ||||
| Meta-$(api_version).gir: libmutter.la | ||||
| Meta-$(api_version).gir: libmutter-wayland.la | ||||
| @META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0 | ||||
| @META_GIR@_EXPORT_PACKAGES = libmutter | ||||
| @META_GIR@_EXPORT_PACKAGES = libmutter-wayland | ||||
| @META_GIR@_CFLAGS = $(INCLUDES) | ||||
| @META_GIR@_LIBS = libmutter.la | ||||
| @META_GIR@_LIBS = libmutter-wayland.la | ||||
| @META_GIR@_FILES =				\ | ||||
| 	mutter-enum-types.h			\ | ||||
| 	$(libmutterinclude_base_headers)	\ | ||||
| 	$(filter %.c,$(libmutter_la_SOURCES)) | ||||
| 	$(filter %.c,$(libmutter_wayland_la_SOURCES)) | ||||
| @META_GIR@_SCANNERFLAGS = --warn-all --warn-error | ||||
|  | ||||
| endif | ||||
|  | ||||
| mutter_theme_viewer_LDADD= $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| testboxes_SOURCES = core/testboxes.c | ||||
| testgradient_SOURCES = ui/testgradient.c | ||||
| testasyncgetprop_SOURCES = core/testasyncgetprop.c | ||||
|  | ||||
| noinst_PROGRAMS=testboxes testgradient testasyncgetprop | ||||
|  | ||||
| testboxes_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testgradient_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testboxes_LDADD = $(MUTTER_LIBS) libmutter-wayland.la | ||||
| testgradient_LDADD = $(MUTTER_LIBS) libmutter-wayland.la | ||||
| testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter-wayland.la | ||||
|  | ||||
| @INTLTOOL_DESKTOP_RULE@ | ||||
|  | ||||
| desktopfilesdir=$(datadir)/applications | ||||
| desktopfiles_in_files=mutter.desktop.in | ||||
| desktopfiles_in_files=mutter-wayland.desktop.in | ||||
| desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop) | ||||
| desktopfiles_DATA = $(desktopfiles_files) | ||||
|  | ||||
| wmpropertiesdir=$(datadir)/gnome/wm-properties | ||||
| wmproperties_in_files=mutter-wm.desktop.in | ||||
| wmproperties_files=$(wmproperties_in_files:.desktop.in=.desktop) | ||||
| wmproperties_DATA = $(wmproperties_files) | ||||
|  | ||||
| xmldir       = @GNOME_KEYBINDINGS_KEYSDIR@ | ||||
| xml_in_files = \ | ||||
|         50-mutter-navigation.xml.in	\ | ||||
| @@ -279,35 +326,28 @@ xml_in_files = \ | ||||
|         50-mutter-windows.xml.in | ||||
| xml_DATA     = $(xml_in_files:.xml.in=.xml) | ||||
|  | ||||
| gsettings_SCHEMAS = org.gnome.mutter.gschema.xml | ||||
| dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h | ||||
|  | ||||
| gsettings_SCHEMAS = org.gnome.mutter.gschema.xml org.gnome.mutter.wayland.gschema.xml | ||||
| @INTLTOOL_XML_NOMERGE_RULE@ | ||||
| @GSETTINGS_RULES@ | ||||
|  | ||||
| convertdir = $(datadir)/GConf/gsettings | ||||
| convert_DATA = mutter-schemas.convert | ||||
|  | ||||
| IMAGES=stock_maximize.png stock_minimize.png stock_delete.png | ||||
| VARIABLES=stock_maximize_data $(srcdir)/stock_maximize.png \ | ||||
|           stock_minimize_data $(srcdir)/stock_minimize.png \ | ||||
|           stock_delete_data $(srcdir)/stock_delete.png | ||||
|  | ||||
| BUILT_SOURCES = inlinepixbufs.h | ||||
| CLEANFILES =					\ | ||||
| 	inlinepixbufs.h				\ | ||||
| 	mutter.desktop				\ | ||||
| 	mutter-wayland.desktop			\ | ||||
| 	mutter-wm.desktop			\ | ||||
| 	org.gnome.mutter.gschema.xml		\ | ||||
| 	org.gnome.mutter.wayland.gschema.xml	\ | ||||
| 	$(xml_DATA)				\ | ||||
| 	$(mutter_built_sources)			\ | ||||
| 	$(typelib_DATA)				\ | ||||
| 	$(gir_DATA) | ||||
|  | ||||
| inlinepixbufs.h: $(IMAGES) | ||||
| 	$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
|  | ||||
| pkgconfig_DATA = libmutter.pc mutter-plugins.pc | ||||
| pkgconfig_DATA = libmutter-wayland.pc | ||||
|  | ||||
| EXTRA_DIST=$(desktopfiles_files) 	\ | ||||
| 	$(wmproperties_files)		\ | ||||
| @@ -316,13 +356,14 @@ EXTRA_DIST=$(desktopfiles_files) 	\ | ||||
| 	$(wmproperties_in_files)	\ | ||||
| 	$(xml_in_files)			\ | ||||
| 	org.gnome.mutter.gschema.xml.in \ | ||||
| 	org.gnome.mutter.wayland.gschema.xml.in \ | ||||
| 	mutter-schemas.convert \ | ||||
| 	libmutter.pc.in \ | ||||
| 	mutter-plugins.pc.in  \ | ||||
| 	libmutter-wayland.pc.in \ | ||||
| 	mutter-enum-types.h.in \ | ||||
| 	mutter-enum-types.c.in | ||||
| 	mutter-enum-types.c.in \ | ||||
| 	xrandr.xml idle-monitor.xml | ||||
|  | ||||
| BUILT_SOURCES += $(mutter_built_sources) | ||||
| BUILT_SOURCES = $(mutter_built_sources) | ||||
| MUTTER_STAMP_FILES = stamp-mutter-enum-types.h | ||||
| CLEANFILES += $(MUTTER_STAMP_FILES) | ||||
|  | ||||
| @@ -344,3 +385,32 @@ mutter-enum-types.c: stamp-mutter-enum-types.h mutter-enum-types.c.in | ||||
| 	  $(libmutterinclude_base_headers) ) >> xgen-tetc && \ | ||||
| 	cp xgen-tetc mutter-enum-types.c && \ | ||||
| 	rm -f xgen-tetc | ||||
|  | ||||
| dbus_xrandr_built_sources = meta-dbus-xrandr.c meta-dbus-xrandr.h | ||||
|  | ||||
| $(dbus_xrandr_built_sources) : Makefile.am xrandr.xml | ||||
| 	$(AM_V_GEN)gdbus-codegen							\ | ||||
| 		--interface-prefix org.gnome.Mutter					\ | ||||
| 		--c-namespace MetaDBus							\ | ||||
| 		--generate-c-code meta-dbus-xrandr					\ | ||||
| 		$(srcdir)/xrandr.xml | ||||
|  | ||||
| dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h | ||||
|  | ||||
| $(dbus_idle_built_sources) : Makefile.am idle-monitor.xml | ||||
| 	$(AM_V_GEN)gdbus-codegen							\ | ||||
| 		--interface-prefix org.gnome.Mutter					\ | ||||
| 		--c-namespace MetaDBus							\ | ||||
| 		--generate-c-code meta-dbus-idle-monitor				\ | ||||
| 		--c-generate-object-manager						\ | ||||
| 		$(srcdir)/idle-monitor.xml | ||||
|  | ||||
| wayland/%-protocol.c : $(top_builddir)/protocol/%.xml | ||||
| 	mkdir -p wayland | ||||
| 	$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@ | ||||
| wayland/%-server-protocol.h : $(top_builddir)/protocol/%.xml | ||||
| 	mkdir -p wayland | ||||
| 	$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@ | ||||
| wayland/%-client-protocol.h : $(top_builddir)/protocol/%.xml | ||||
| 	mkdir -p wayland | ||||
| 	$(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@ | ||||
|   | ||||
| @@ -26,10 +26,10 @@ | ||||
|  | ||||
| /** | ||||
|  * meta_create_color_texture_4ub: | ||||
|  * @red: | ||||
|  * @green: | ||||
|  * @blue: | ||||
|  * @alpha: | ||||
|  * @red: red component | ||||
|  * @green: green component | ||||
|  * @blue: blue component | ||||
|  * @alpha: alpha component | ||||
|  * @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE; | ||||
|  *   %COGL_TEXTURE_NO_SLICING is useful if the texture will be | ||||
|  *   repeated to create a constant color fill, since hardware | ||||
| @@ -50,7 +50,7 @@ meta_create_color_texture_4ub (guint8           red, | ||||
|   CoglColor color; | ||||
|   guint8 pixel[4]; | ||||
|  | ||||
|   cogl_color_set_from_4ub (&color, red, green, blue, alpha); | ||||
|   cogl_color_init_from_4ub (&color, red, green, blue, alpha); | ||||
|   cogl_color_premultiply (&color); | ||||
|  | ||||
|   pixel[0] = cogl_color_get_red_byte (&color); | ||||
| @@ -73,10 +73,8 @@ meta_create_color_texture_4ub (guint8           red, | ||||
|  * @src_texture: (allow-none): texture to use initially for the layer | ||||
|  * | ||||
|  * Creates a pipeline with a single layer. Using a common template | ||||
|  * allows sharing a shader for different uses in Mutter. To share the same | ||||
|  * shader with all other pipelines that are just texture plus opacity | ||||
|  * would require Cogl fixes. | ||||
|  * (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425) | ||||
|  * makes it easier for Cogl to share a shader for different uses in | ||||
|  * Mutter. | ||||
|  * | ||||
|  * Return value: (transfer full): a newly created #CoglPipeline | ||||
|  */ | ||||
| @@ -86,22 +84,21 @@ meta_create_texture_pipeline (CoglTexture *src_texture) | ||||
|   static CoglPipeline *texture_pipeline_template = NULL; | ||||
|   CoglPipeline *pipeline; | ||||
|  | ||||
|   /* We use a pipeline that has a dummy texture as a base for all | ||||
|      texture pipelines. The idea is that only the Cogl texture object | ||||
|      would be different in the children so it is likely that Cogl will | ||||
|      be able to share GL programs between all the textures. */ | ||||
|   /* The only state used in the pipeline that would affect the shader | ||||
|      generation is the texture type on the layer. Therefore we create | ||||
|      a template pipeline which sets this state and all texture | ||||
|      pipelines are created as a copy of this. That way Cogl can find | ||||
|      the shader state for the pipeline more quickly by looking at the | ||||
|      pipeline ancestry instead of resorting to the shader cache. */ | ||||
|   if (G_UNLIKELY (texture_pipeline_template == NULL)) | ||||
|     { | ||||
|       CoglTexture *dummy_texture; | ||||
|       CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|  | ||||
|       dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff, | ||||
|                                                      COGL_TEXTURE_NONE); | ||||
|  | ||||
|       CoglContext *ctx = | ||||
|         clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|  | ||||
|       texture_pipeline_template = cogl_pipeline_new (ctx); | ||||
|       cogl_pipeline_set_layer_texture (texture_pipeline_template, 0, dummy_texture); | ||||
|       cogl_object_unref (dummy_texture); | ||||
|       cogl_pipeline_set_layer_null_texture (texture_pipeline_template, | ||||
|                                             0, /* layer */ | ||||
|                                             COGL_TEXTURE_TYPE_2D); | ||||
|     } | ||||
|  | ||||
|   pipeline = cogl_pipeline_copy (texture_pipeline_template); | ||||
|   | ||||
| @@ -66,8 +66,6 @@ void meta_switch_workspace_completed (MetaScreen    *screen); | ||||
|  | ||||
| gboolean meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|                                       MetaPlugin       *plugin, | ||||
|                                       Window            grab_window, | ||||
|                                       Cursor            cursor, | ||||
|                                       MetaModalOptions  options, | ||||
|                                       guint32           timestamp); | ||||
| void     meta_end_modal_for_plugin   (MetaScreen       *screen, | ||||
|   | ||||
| @@ -1,5 +1,69 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:compositor | ||||
|  * @Title: MetaCompositor | ||||
|  * @Short_Description: Compositor API | ||||
|  * | ||||
|  * At a high-level, a window is not-visible or visible. When a | ||||
|  * window is added (with meta_compositor_add_window()) it is not visible. | ||||
|  * meta_compositor_show_window() indicates a transition from not-visible to | ||||
|  * visible. Some of the reasons for this: | ||||
|  * | ||||
|  * - Window newly created | ||||
|  * - Window is unminimized | ||||
|  * - Window is moved to the current desktop | ||||
|  * - Window was made sticky | ||||
|  * | ||||
|  * meta_compositor_hide_window() indicates that the window has transitioned from | ||||
|  * visible to not-visible. Some reasons include: | ||||
|  * | ||||
|  * - Window was destroyed | ||||
|  * - Window is minimized | ||||
|  * - Window is moved to a different desktop | ||||
|  * - Window no longer sticky. | ||||
|  * | ||||
|  * Note that combinations are possible - a window might have first | ||||
|  * been minimized and then moved to a different desktop. The 'effect' parameter | ||||
|  * to meta_compositor_show_window() and meta_compositor_hide_window() is a hint | ||||
|  * as to the appropriate effect to show the user and should not | ||||
|  * be considered to be indicative of a state change. | ||||
|  * | ||||
|  * When the active workspace is changed, meta_compositor_switch_workspace() is | ||||
|  * called first, then meta_compositor_show_window() and | ||||
|  * meta_compositor_hide_window() are called individually for each window | ||||
|  * affected, with an effect of META_COMP_EFFECT_NONE. | ||||
|  * If hiding windows will affect the switch workspace animation, the | ||||
|  * compositor needs to delay hiding the windows until the switch | ||||
|  * workspace animation completes. | ||||
|  * | ||||
|  * meta_compositor_maximize_window() and meta_compositor_unmaximize_window() | ||||
|  * are transitions within the visible state. The window is resized __before__ | ||||
|  * the call, so it may be necessary to readjust the display based on the | ||||
|  * old_rect to start the animation. | ||||
|  * | ||||
|  * meta_compositor_window_mapped() and meta_compositor_window_unmapped() are | ||||
|  * notifications when the toplevel window (frame or client window) is mapped or | ||||
|  * unmapped. That is, when the result of meta_window_toplevel_is_mapped() | ||||
|  * changes. The main use of this is to drop resources when a window is unmapped. | ||||
|  * A window will always be mapped before meta_compositor_show_window() | ||||
|  * is called and will not be unmapped until after meta_compositor_hide_window() | ||||
|  * is called. If the live_hidden_windows preference is set, windows will never | ||||
|  * be unmapped. | ||||
|  * | ||||
|  * # Containers # | ||||
|  * | ||||
|  * There's two containers in the stage that are used to place window actors, here | ||||
|  * are listed in the order in which they are painted: | ||||
|  * | ||||
|  * - window group, accessible with meta_get_window_group_for_screen() | ||||
|  * - top window group, accessible with meta_get_top_window_group_for_screen() | ||||
|  * | ||||
|  * Mutter will place actors representing windows in the window group, except for | ||||
|  * override-redirect windows (ie. popups and menus) which will be placed in the | ||||
|  * top window group. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <clutter/x11/clutter-x11.h> | ||||
| @@ -20,6 +84,10 @@ | ||||
| #include "meta-window-group.h" | ||||
| #include "window-private.h" /* to check window->hidden */ | ||||
| #include "display-private.h" /* for meta_display_lookup_x_window() */ | ||||
| #include "util-private.h" | ||||
| #include "meta-wayland-private.h" | ||||
| #include "meta-wayland-pointer.h" | ||||
| #include "meta-wayland-keyboard.h" | ||||
| #include <X11/extensions/shape.h> | ||||
| #include <X11/extensions/Xcomposite.h> | ||||
|  | ||||
| @@ -108,7 +176,7 @@ process_damage (MetaCompositor     *compositor, | ||||
|   if (window_actor == NULL) | ||||
|     return; | ||||
|  | ||||
|   meta_window_actor_process_damage (window_actor, event); | ||||
|   meta_window_actor_process_x11_damage (window_actor, event); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -189,23 +257,6 @@ meta_get_stage_for_screen (MetaScreen *screen) | ||||
|   return info->stage; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_get_overlay_group_for_screen: | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  * Returns: (transfer none): The overlay group corresponding to @screen | ||||
|  */ | ||||
| ClutterActor * | ||||
| meta_get_overlay_group_for_screen (MetaScreen *screen) | ||||
| { | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|   if (!info) | ||||
|     return NULL; | ||||
|  | ||||
|   return info->overlay_group; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_get_window_group_for_screen: | ||||
|  * @screen: a #MetaScreen | ||||
| @@ -280,29 +331,37 @@ void | ||||
| meta_set_stage_input_region (MetaScreen   *screen, | ||||
|                              XserverRegion region) | ||||
| { | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|   MetaDisplay  *display = meta_screen_get_display (screen); | ||||
|   Display      *xdpy    = meta_display_get_xdisplay (display); | ||||
|   /* As a wayland compositor we can simply ignore all this trickery | ||||
|    * for setting an input region on the stage for capturing events in | ||||
|    * clutter since all input comes to us first and we get to choose | ||||
|    * who else sees them. | ||||
|    */ | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|       MetaDisplay  *display = meta_screen_get_display (screen); | ||||
|       Display      *xdpy    = meta_display_get_xdisplay (display); | ||||
|  | ||||
|   if (info->stage && info->output) | ||||
|     { | ||||
|       do_set_stage_input_region (screen, region); | ||||
|       if (info->stage && info->output) | ||||
|         { | ||||
|           do_set_stage_input_region (screen, region); | ||||
|         } | ||||
|       else  | ||||
|         { | ||||
|           /* Reset info->pending_input_region if one existed before and set the new | ||||
|            * one to use it later. */  | ||||
|           if (info->pending_input_region) | ||||
|             { | ||||
|               XFixesDestroyRegion (xdpy, info->pending_input_region); | ||||
|               info->pending_input_region = None; | ||||
|             } | ||||
|           if (region != None) | ||||
|             { | ||||
|               info->pending_input_region = XFixesCreateRegion (xdpy, NULL, 0); | ||||
|               XFixesCopyRegion (xdpy, info->pending_input_region, region); | ||||
|             } | ||||
|         }  | ||||
|     } | ||||
|   else  | ||||
|     { | ||||
|       /* Reset info->pending_input_region if one existed before and set the new | ||||
|        * one to use it later. */  | ||||
|       if (info->pending_input_region) | ||||
|         { | ||||
|           XFixesDestroyRegion (xdpy, info->pending_input_region); | ||||
|           info->pending_input_region = None; | ||||
|         } | ||||
|       if (region != None) | ||||
|         { | ||||
|           info->pending_input_region = XFixesCreateRegion (xdpy, NULL, 0); | ||||
|           XFixesCopyRegion (xdpy, info->pending_input_region, region); | ||||
|         } | ||||
|     }  | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -322,28 +381,67 @@ meta_empty_stage_input_region (MetaScreen *screen) | ||||
|   meta_set_stage_input_region (screen, region); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|                              MetaPlugin       *plugin, | ||||
|                              Window            grab_window, | ||||
|                              Cursor            cursor, | ||||
|                              MetaModalOptions  options, | ||||
|                              guint32           timestamp) | ||||
| void | ||||
| meta_focus_stage_window (MetaScreen *screen, | ||||
|                          guint32     timestamp) | ||||
| { | ||||
|   /* To some extent this duplicates code in meta_display_begin_grab_op(), but there | ||||
|    * are significant differences in how we handle grabs that make it difficult to | ||||
|    * merge the two. | ||||
|    */ | ||||
|   MetaDisplay    *display    = meta_screen_get_display (screen); | ||||
|   Display        *xdpy       = meta_display_get_xdisplay (display); | ||||
|   MetaCompositor *compositor = display->compositor; | ||||
|   gboolean pointer_grabbed = FALSE; | ||||
|   gboolean keyboard_grabbed = FALSE; | ||||
|   int result; | ||||
|   ClutterStage *stage; | ||||
|   Window window; | ||||
|  | ||||
|   if (compositor->modal_plugin != NULL || display->grab_op != META_GRAB_OP_NONE) | ||||
|   stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen)); | ||||
|   if (!stage) | ||||
|     return; | ||||
|  | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       window = clutter_x11_get_stage_window (stage); | ||||
|  | ||||
|       if (window == None) | ||||
|         return; | ||||
|  | ||||
|       meta_display_set_input_focus_xwindow (screen->display, | ||||
|                                             screen, | ||||
|                                             META_FOCUS_STAGE, | ||||
|                                             window, | ||||
|                                             timestamp); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       meta_display_set_input_focus_xwindow (screen->display, | ||||
|                                             screen, | ||||
|                                             META_FOCUS_STAGE, | ||||
|                                             None, | ||||
|                                             timestamp); | ||||
|     } | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_stage_is_focused (MetaScreen *screen) | ||||
| { | ||||
|   ClutterStage *stage; | ||||
|  | ||||
|   stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen)); | ||||
|   if (!stage) | ||||
|     return FALSE; | ||||
|  | ||||
|   return (screen->display->focus_type == META_FOCUS_STAGE); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| begin_modal_x11 (MetaScreen       *screen, | ||||
|                  MetaPlugin       *plugin, | ||||
|                  MetaModalOptions  options, | ||||
|                  guint32           timestamp) | ||||
| { | ||||
|   MetaDisplay    *display     = meta_screen_get_display (screen); | ||||
|   Display        *xdpy        = meta_display_get_xdisplay (display); | ||||
|   MetaCompScreen *info        = meta_screen_get_compositor_data (screen); | ||||
|   Window          grab_window = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|   Cursor          cursor      = None; | ||||
|   int             result; | ||||
|   gboolean        pointer_grabbed = FALSE; | ||||
|   gboolean        keyboard_grabbed = FALSE; | ||||
|  | ||||
|   if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0) | ||||
|     { | ||||
|       unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
| @@ -392,14 +490,6 @@ meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|       keyboard_grabbed = TRUE; | ||||
|     } | ||||
|  | ||||
|   display->grab_op = META_GRAB_OP_COMPOSITOR; | ||||
|   display->grab_window = NULL; | ||||
|   display->grab_screen = screen; | ||||
|   display->grab_have_pointer = TRUE; | ||||
|   display->grab_have_keyboard = TRUE; | ||||
|  | ||||
|   compositor->modal_plugin = plugin; | ||||
|  | ||||
|   return TRUE; | ||||
|  | ||||
|  fail: | ||||
| @@ -411,6 +501,80 @@ meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| begin_modal_wayland (MetaScreen       *screen, | ||||
|                      MetaPlugin       *plugin, | ||||
|                      MetaModalOptions  options, | ||||
|                      guint32           timestamp) | ||||
| { | ||||
|   MetaWaylandCompositor *compositor; | ||||
|   gboolean pointer_grabbed = FALSE; | ||||
|   gboolean keyboard_grabbed = FALSE; | ||||
|  | ||||
|   compositor = meta_wayland_compositor_get_default (); | ||||
|  | ||||
|   if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0) | ||||
|     { | ||||
|       if (!meta_wayland_pointer_begin_modal (&compositor->seat->pointer)) | ||||
|         goto fail; | ||||
|  | ||||
|       pointer_grabbed = TRUE; | ||||
|     } | ||||
|   if ((options & META_MODAL_KEYBOARD_ALREADY_GRABBED) == 0) | ||||
|     { | ||||
|       if (!meta_wayland_keyboard_begin_modal (&compositor->seat->keyboard, | ||||
|                                               timestamp)) | ||||
|         goto fail; | ||||
|  | ||||
|       keyboard_grabbed = TRUE; | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
|  | ||||
|  fail: | ||||
|   if (pointer_grabbed) | ||||
|     meta_wayland_pointer_end_modal (&compositor->seat->pointer); | ||||
|   if (keyboard_grabbed) | ||||
|     meta_wayland_keyboard_end_modal (&compositor->seat->keyboard, timestamp); | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|                              MetaPlugin       *plugin, | ||||
|                              MetaModalOptions  options, | ||||
|                              guint32           timestamp) | ||||
| { | ||||
|   /* To some extent this duplicates code in meta_display_begin_grab_op(), but there | ||||
|    * are significant differences in how we handle grabs that make it difficult to | ||||
|    * merge the two. | ||||
|    */ | ||||
|   MetaDisplay    *display    = meta_screen_get_display (screen); | ||||
|   MetaCompositor *compositor = display->compositor; | ||||
|   gboolean ok; | ||||
|  | ||||
|   if (compositor->modal_plugin != NULL || display->grab_op != META_GRAB_OP_NONE) | ||||
|     return FALSE; | ||||
|  | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     ok = begin_modal_wayland (screen, plugin, options, timestamp); | ||||
|   else | ||||
|     ok = begin_modal_x11 (screen, plugin, options, timestamp); | ||||
|   if (!ok) | ||||
|     return FALSE; | ||||
|  | ||||
|   display->grab_op = META_GRAB_OP_COMPOSITOR; | ||||
|   display->grab_window = NULL; | ||||
|   display->grab_screen = screen; | ||||
|   display->grab_have_pointer = TRUE; | ||||
|   display->grab_have_keyboard = TRUE; | ||||
|  | ||||
|   compositor->modal_plugin = plugin; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_end_modal_for_plugin (MetaScreen     *screen, | ||||
|                            MetaPlugin     *plugin, | ||||
| @@ -422,8 +586,19 @@ meta_end_modal_for_plugin (MetaScreen     *screen, | ||||
|  | ||||
|   g_return_if_fail (compositor->modal_plugin == plugin); | ||||
|  | ||||
|   XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp); | ||||
|   XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp); | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default (); | ||||
|  | ||||
|       meta_wayland_pointer_end_modal (&compositor->seat->pointer); | ||||
|       meta_wayland_keyboard_end_modal (&compositor->seat->keyboard, | ||||
|                                        timestamp); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp); | ||||
|       XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp); | ||||
|     } | ||||
|  | ||||
|   display->grab_op = META_GRAB_OP_NONE; | ||||
|   display->grab_window = NULL; | ||||
| @@ -448,20 +623,20 @@ meta_check_end_modal (MetaScreen *screen) | ||||
|     { | ||||
|       meta_end_modal_for_plugin (screen, | ||||
|                                    compositor->modal_plugin, | ||||
|                                    CurrentTime); | ||||
|  | ||||
|                                  CurrentTime); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| after_stage_paint (gpointer data) | ||||
| static void | ||||
| after_stage_paint (ClutterStage *stage, | ||||
|                    gpointer      data) | ||||
| { | ||||
|   MetaCompScreen *info = (MetaCompScreen*) data; | ||||
|   GList *l; | ||||
|  | ||||
|   for (l = info->windows; l; l = l->next) | ||||
|     meta_window_actor_post_paint (l->data); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -475,6 +650,11 @@ redirect_windows (MetaCompositor *compositor, | ||||
|   guint        n_retries; | ||||
|   guint        max_retries; | ||||
|  | ||||
|   /* If we're running with wayland, connected to a headless xwayland | ||||
|    * server then all the windows are implicitly redirected offscreen | ||||
|    * already and it would generate an error to try and explicitly | ||||
|    * redirect them via XCompositeRedirectSubwindows() */ | ||||
|  | ||||
|   if (meta_get_replace_current_wm ()) | ||||
|     max_retries = 5; | ||||
|   else | ||||
| @@ -515,8 +695,9 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|   MetaCompScreen *info; | ||||
|   MetaDisplay    *display       = meta_screen_get_display (screen); | ||||
|   Display        *xdisplay      = meta_display_get_xdisplay (display); | ||||
|   Window          xwin; | ||||
|   Window          xwin = None; | ||||
|   gint            width, height; | ||||
|   MetaWaylandCompositor *wayland_compositor; | ||||
|  | ||||
|   /* Check if the screen is already managed */ | ||||
|   if (meta_screen_get_compositor_data (screen)) | ||||
| @@ -529,7 +710,14 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|    * We have to initialize info->pending_input_region to an empty region explicitly,  | ||||
|    * because None value is used to mean that the whole screen is an input region. | ||||
|    */ | ||||
|   info->pending_input_region = XFixesCreateRegion (xdisplay, NULL, 0); | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     info->pending_input_region = XFixesCreateRegion (xdisplay, NULL, 0); | ||||
|   else | ||||
|     { | ||||
|       /* Stage input region trickery isn't needed when we're running as a | ||||
|        * wayland compositor. */ | ||||
|       info->pending_input_region = None; | ||||
|     } | ||||
|  | ||||
|   info->screen = screen; | ||||
|  | ||||
| @@ -540,106 +728,132 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|  | ||||
|   meta_screen_set_cm_selection (screen); | ||||
|  | ||||
|   info->stage = clutter_stage_new (); | ||||
|   /* We will have already created a stage if running as a wayland | ||||
|    * compositor... */ | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       wayland_compositor = meta_wayland_compositor_get_default (); | ||||
|       info->stage = wayland_compositor->stage; | ||||
|  | ||||
|   clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT, | ||||
|                                          after_stage_paint, | ||||
|                                          info, NULL); | ||||
|       meta_screen_get_size (screen, &width, &height); | ||||
|       clutter_actor_set_size (info->stage, width, height); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       info->stage = clutter_stage_new (); | ||||
|  | ||||
|       meta_screen_get_size (screen, &width, &height); | ||||
|       clutter_actor_realize (info->stage); | ||||
|  | ||||
|       xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|  | ||||
|       XResizeWindow (xdisplay, xwin, width, height); | ||||
|  | ||||
|         { | ||||
|           long event_mask; | ||||
|           unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
|           XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; | ||||
|           XWindowAttributes attr; | ||||
|  | ||||
|           meta_core_add_old_event_mask (xdisplay, xwin, &mask); | ||||
|  | ||||
|           XISetMask (mask.mask, XI_KeyPress); | ||||
|           XISetMask (mask.mask, XI_KeyRelease); | ||||
|           XISetMask (mask.mask, XI_ButtonPress); | ||||
|           XISetMask (mask.mask, XI_ButtonRelease); | ||||
|           XISetMask (mask.mask, XI_Enter); | ||||
|           XISetMask (mask.mask, XI_Leave); | ||||
|           XISetMask (mask.mask, XI_FocusIn); | ||||
|           XISetMask (mask.mask, XI_FocusOut); | ||||
|           XISetMask (mask.mask, XI_Motion); | ||||
|           XIClearMask (mask.mask, XI_TouchBegin); | ||||
|           XIClearMask (mask.mask, XI_TouchEnd); | ||||
|           XIClearMask (mask.mask, XI_TouchUpdate); | ||||
|           XISelectEvents (xdisplay, xwin, &mask, 1); | ||||
|  | ||||
|           event_mask = ExposureMask | PropertyChangeMask | StructureNotifyMask; | ||||
|           if (XGetWindowAttributes (xdisplay, xwin, &attr)) | ||||
|             event_mask |= attr.your_event_mask; | ||||
|  | ||||
|           XSelectInput (xdisplay, xwin, event_mask); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   clutter_stage_set_paint_callback (CLUTTER_STAGE (info->stage), | ||||
|                                     after_stage_paint, | ||||
|                                     info, | ||||
|                                     NULL); | ||||
|  | ||||
|   clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY); | ||||
|  | ||||
|   meta_screen_get_size (screen, &width, &height); | ||||
|   clutter_actor_realize (info->stage); | ||||
|  | ||||
|   xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|  | ||||
|   XResizeWindow (xdisplay, xwin, width, height); | ||||
|  | ||||
|   { | ||||
|     long event_mask; | ||||
|     unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
|     XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; | ||||
|     XWindowAttributes attr; | ||||
|  | ||||
|     meta_core_add_old_event_mask (xdisplay, xwin, &mask); | ||||
|  | ||||
|     XISetMask (mask.mask, XI_KeyPress); | ||||
|     XISetMask (mask.mask, XI_KeyRelease); | ||||
|     XISetMask (mask.mask, XI_ButtonPress); | ||||
|     XISetMask (mask.mask, XI_ButtonRelease); | ||||
|     XISetMask (mask.mask, XI_Enter); | ||||
|     XISetMask (mask.mask, XI_Leave); | ||||
|     XISetMask (mask.mask, XI_FocusIn); | ||||
|     XISetMask (mask.mask, XI_FocusOut); | ||||
|     XISetMask (mask.mask, XI_Motion); | ||||
|     XISelectEvents (xdisplay, xwin, &mask, 1); | ||||
|  | ||||
|     event_mask = ExposureMask | PropertyChangeMask | StructureNotifyMask; | ||||
|     if (XGetWindowAttributes (xdisplay, xwin, &attr)) | ||||
|       event_mask |= attr.your_event_mask; | ||||
|  | ||||
|     XSelectInput (xdisplay, xwin, event_mask); | ||||
|   } | ||||
|  | ||||
|   info->window_group = meta_window_group_new (screen); | ||||
|   info->top_window_group = meta_window_group_new (screen); | ||||
|   info->overlay_group = clutter_actor_new (); | ||||
|  | ||||
|   clutter_actor_add_child (info->stage, info->window_group); | ||||
|   clutter_actor_add_child (info->stage, info->top_window_group); | ||||
|   clutter_actor_add_child (info->stage, info->overlay_group); | ||||
|  | ||||
|   info->plugin_mgr = meta_plugin_manager_new (screen); | ||||
|  | ||||
|   /* | ||||
|    * Delay the creation of the overlay window as long as we can, to avoid | ||||
|    * blanking out the screen. This means that during the plugin loading, the | ||||
|    * overlay window is not accessible; if the plugin needs to access it | ||||
|    * directly, it should hook into the "show" signal on stage, and do | ||||
|    * its stuff there. | ||||
|    */ | ||||
|   info->output = get_output_window (screen); | ||||
|   XReparentWindow (xdisplay, xwin, info->output, 0, 0); | ||||
|  | ||||
|  /* Make sure there isn't any left-over output shape on the  | ||||
|   * overlay window by setting the whole screen to be an | ||||
|   * output region. | ||||
|   *  | ||||
|   * Note: there doesn't seem to be any real chance of that | ||||
|   *  because the X server will destroy the overlay window | ||||
|   *  when the last client using it exits. | ||||
|   */ | ||||
|   XFixesSetWindowShapeRegion (xdisplay, info->output, ShapeBounding, 0, 0, None); | ||||
|  | ||||
|   do_set_stage_input_region (screen, info->pending_input_region); | ||||
|   if (info->pending_input_region != None) | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       XFixesDestroyRegion (xdisplay, info->pending_input_region); | ||||
|       info->pending_input_region = None; | ||||
|       /* NB: When running as a wayland compositor we don't need an X | ||||
|        * composite overlay window, and we don't need to play any input | ||||
|        * region tricks to redirect events into clutter. */ | ||||
|       info->output = None; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       /* | ||||
|        * Delay the creation of the overlay window as long as we can, to avoid | ||||
|        * blanking out the screen. This means that during the plugin loading, the | ||||
|        * overlay window is not accessible; if the plugin needs to access it | ||||
|        * directly, it should hook into the "show" signal on stage, and do | ||||
|        * its stuff there. | ||||
|        */ | ||||
|       info->output = get_output_window (screen); | ||||
|       XReparentWindow (xdisplay, xwin, info->output, 0, 0); | ||||
|  | ||||
|   clutter_actor_show (info->overlay_group); | ||||
|       /* Make sure there isn't any left-over output shape on the  | ||||
|        * overlay window by setting the whole screen to be an | ||||
|        * output region. | ||||
|        *  | ||||
|        * Note: there doesn't seem to be any real chance of that | ||||
|        *  because the X server will destroy the overlay window | ||||
|        *  when the last client using it exits. | ||||
|        */ | ||||
|       XFixesSetWindowShapeRegion (xdisplay, info->output, ShapeBounding, 0, 0, None); | ||||
|  | ||||
|   /* Map overlay window before redirecting windows offscreen so we catch their | ||||
|    * contents until we show the stage. | ||||
|    */ | ||||
|   XMapWindow (xdisplay, info->output); | ||||
|       do_set_stage_input_region (screen, info->pending_input_region); | ||||
|       if (info->pending_input_region != None) | ||||
|         { | ||||
|           XFixesDestroyRegion (xdisplay, info->pending_input_region); | ||||
|           info->pending_input_region = None; | ||||
|         } | ||||
|  | ||||
|   redirect_windows (compositor, screen); | ||||
|       /* Map overlay window before redirecting windows offscreen so we catch their | ||||
|        * contents until we show the stage. | ||||
|        */ | ||||
|       XMapWindow (xdisplay, info->output); | ||||
|  | ||||
|       redirect_windows (compositor, screen); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_unmanage_screen (MetaCompositor *compositor, | ||||
|                                  MetaScreen     *screen) | ||||
| { | ||||
|   MetaDisplay    *display       = meta_screen_get_display (screen); | ||||
|   Display        *xdisplay      = meta_display_get_xdisplay (display); | ||||
|   Window          xroot         = meta_screen_get_xroot (screen); | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       MetaDisplay    *display       = meta_screen_get_display (screen); | ||||
|       Display        *xdisplay      = meta_display_get_xdisplay (display); | ||||
|       Window          xroot         = meta_screen_get_xroot (screen); | ||||
|  | ||||
|   /* This is the most important part of cleanup - we have to do this | ||||
|    * before giving up the window manager selection or the next | ||||
|    * window manager won't be able to redirect subwindows */ | ||||
|   XCompositeUnredirectSubwindows (xdisplay, xroot, CompositeRedirectManual); | ||||
|       /* This is the most important part of cleanup - we have to do this | ||||
|        * before giving up the window manager selection or the next | ||||
|        * window manager won't be able to redirect subwindows */ | ||||
|       XCompositeUnredirectSubwindows (xdisplay, xroot, CompositeRedirectManual); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -711,15 +925,18 @@ meta_compositor_remove_window (MetaCompositor *compositor, | ||||
|   if (!window_actor) | ||||
|     return; | ||||
|  | ||||
|   screen = meta_window_get_screen (window); | ||||
|   info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|   if (window_actor == info->unredirected_window) | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       meta_window_actor_set_redirected (window_actor, TRUE); | ||||
|       meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), | ||||
|                                  NULL); | ||||
|       info->unredirected_window = NULL; | ||||
|       screen = meta_window_get_screen (window); | ||||
|       info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|       if (window_actor == info->unredirected_window) | ||||
|         { | ||||
|           meta_window_actor_set_redirected (window_actor, TRUE); | ||||
|           meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), | ||||
|                                      NULL); | ||||
|           info->unredirected_window = NULL; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   meta_window_actor_destroy (window_actor); | ||||
| @@ -784,6 +1001,9 @@ meta_compositor_window_shape_changed (MetaCompositor *compositor, | ||||
| { | ||||
|   MetaWindowActor *window_actor; | ||||
|   window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window)); | ||||
|   if (!window_actor) | ||||
|     return; | ||||
|  | ||||
|   meta_window_actor_update_shape (window_actor); | ||||
| } | ||||
|  | ||||
| @@ -835,6 +1055,9 @@ maybe_spoof_guard_window_event_as_stage_event (MetaCompScreen *info, | ||||
|  | ||||
| /** | ||||
|  * meta_compositor_process_event: (skip) | ||||
|  * @compositor:  | ||||
|  * @event:  | ||||
|  * @window:  | ||||
|  * | ||||
|  */ | ||||
| gboolean | ||||
| @@ -844,10 +1067,7 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
| { | ||||
|   if (compositor->modal_plugin && is_grabbed_event (compositor->display, event)) | ||||
|     { | ||||
|       MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin); | ||||
|  | ||||
|       if (klass->xevent_filter) | ||||
|         klass->xevent_filter (compositor->modal_plugin, event); | ||||
|       _meta_plugin_xevent_filter (compositor->modal_plugin, event); | ||||
|  | ||||
|       /* We always consume events even if the plugin says it didn't handle them; | ||||
|        * exclusive is exclusive */ | ||||
| @@ -900,7 +1120,8 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       if (event->type == meta_display_get_damage_event_base (compositor->display) + XDamageNotify) | ||||
|       if (!meta_is_wayland_compositor () && | ||||
|           event->type == meta_display_get_damage_event_base (compositor->display) + XDamageNotify) | ||||
|         { | ||||
|           /* Core code doesn't handle damage events, so we need to extract the MetaWindow | ||||
|            * ourselves | ||||
| @@ -919,7 +1140,7 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
|  | ||||
|   /* Clutter needs to know about MapNotify events otherwise it will | ||||
|      think the stage is invisible */ | ||||
|   if (event->type == MapNotify) | ||||
|   if (!meta_is_wayland_compositor () && event->type == MapNotify) | ||||
|     clutter_x11_handle_event (event); | ||||
|  | ||||
|   /* The above handling is basically just "observing" the events, so we return | ||||
| @@ -1052,6 +1273,7 @@ sync_actor_stacking (MetaCompScreen *info) | ||||
|    * we go ahead and do it */ | ||||
|  | ||||
|   children = clutter_actor_get_children (info->window_group); | ||||
|   has_windows = FALSE; | ||||
|   reordered = FALSE; | ||||
|  | ||||
|   /* We allow for actors in the window group other than the actors we | ||||
| @@ -1095,13 +1317,17 @@ sync_actor_stacking (MetaCompScreen *info) | ||||
|     } | ||||
|  | ||||
|   /* reorder the actors by lowering them in turn to the bottom of the stack. | ||||
|    * windows first, then background */ | ||||
|    * windows first, then background. | ||||
|    * | ||||
|    * We reorder the actors even if they're not parented to the window group, | ||||
|    * to allow stacking to work with intermediate actors (eg during effects) | ||||
|    */ | ||||
|   for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev) | ||||
|     { | ||||
|       ClutterActor *actor = tmp->data; | ||||
|       ClutterActor *actor = tmp->data, *parent; | ||||
|  | ||||
|       if (clutter_actor_get_parent (actor) == info->window_group) | ||||
|         clutter_actor_set_child_below_sibling (info->window_group, actor, NULL); | ||||
|       parent = clutter_actor_get_parent (actor); | ||||
|       clutter_actor_set_child_below_sibling (parent, actor, NULL); | ||||
|     } | ||||
|  | ||||
|   /* we prepended the backgrounds above so the last actor in the list | ||||
| @@ -1109,10 +1335,10 @@ sync_actor_stacking (MetaCompScreen *info) | ||||
|    */ | ||||
|   for (tmp = backgrounds; tmp != NULL; tmp = tmp->next) | ||||
|     { | ||||
|       ClutterActor *actor = tmp->data; | ||||
|       ClutterActor *actor = tmp->data, *parent; | ||||
|  | ||||
|       if (clutter_actor_get_parent (actor) == info->window_group) | ||||
|         clutter_actor_set_child_below_sibling (info->window_group, actor, NULL); | ||||
|       parent = clutter_actor_get_parent (actor); | ||||
|       clutter_actor_set_child_below_sibling (parent, actor, NULL); | ||||
|     } | ||||
|   g_list_free (backgrounds); | ||||
| } | ||||
| @@ -1259,20 +1485,38 @@ meta_compositor_sync_screen_size (MetaCompositor  *compositor, | ||||
| { | ||||
|   MetaDisplay    *display = meta_screen_get_display (screen); | ||||
|   MetaCompScreen *info    = meta_screen_get_compositor_data (screen); | ||||
|   Display        *xdisplay; | ||||
|   Window          xwin; | ||||
|  | ||||
|   DEBUG_TRACE ("meta_compositor_sync_screen_size\n"); | ||||
|   g_return_if_fail (info); | ||||
|   if (meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       /* FIXME: when we support a sliced stage, this is the place to do it | ||||
|          But! This is not the place to apply KMS config, here we only | ||||
|          notify Clutter/Cogl/GL that the framebuffer sizes changed. | ||||
|  | ||||
|   xdisplay = meta_display_get_xdisplay (display); | ||||
|   xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|          And because for now clutter does not do sliced, we use one | ||||
|          framebuffer the size of the whole screen, and when running on | ||||
|          bare metal MetaMonitorManager will do the necessary tricks to | ||||
|          show the right portions on the right screens. | ||||
|       */ | ||||
|  | ||||
|   XResizeWindow (xdisplay, xwin, width, height); | ||||
|       clutter_actor_set_size (info->stage, width, height); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       Display        *xdisplay; | ||||
|       Window          xwin; | ||||
|  | ||||
|       DEBUG_TRACE ("meta_compositor_sync_screen_size\n"); | ||||
|       g_return_if_fail (info); | ||||
|  | ||||
|       xdisplay = meta_display_get_xdisplay (display); | ||||
|       xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|  | ||||
|       XResizeWindow (xdisplay, xwin, width, height); | ||||
|     } | ||||
|  | ||||
|   meta_verbose ("Changed size for stage on screen %d to %dx%d\n", | ||||
| 		meta_screen_get_screen_number (screen), | ||||
| 		width, height); | ||||
|                 meta_screen_get_screen_number (screen), | ||||
|                 width, height); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -1336,29 +1580,32 @@ pre_paint_windows (MetaCompScreen *info) | ||||
|   if (info->windows == NULL) | ||||
|     return; | ||||
|  | ||||
|   top_window = g_list_last (info->windows)->data; | ||||
|  | ||||
|   if (meta_window_actor_should_unredirect (top_window) && | ||||
|       info->disable_unredirect_count == 0) | ||||
|     expected_unredirected_window = top_window; | ||||
|  | ||||
|   if (info->unredirected_window != expected_unredirected_window) | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       if (info->unredirected_window != NULL) | ||||
|         { | ||||
|           meta_window_actor_set_redirected (info->unredirected_window, TRUE); | ||||
|           meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), | ||||
|                                      NULL); | ||||
|         } | ||||
|       top_window = g_list_last (info->windows)->data; | ||||
|  | ||||
|       if (expected_unredirected_window != NULL) | ||||
|         { | ||||
|           meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (top_window)), | ||||
|                                      meta_window_actor_get_meta_window (top_window)); | ||||
|           meta_window_actor_set_redirected (top_window, FALSE); | ||||
|         } | ||||
|       if (meta_window_actor_should_unredirect (top_window) && | ||||
|           info->disable_unredirect_count == 0) | ||||
|         expected_unredirected_window = top_window; | ||||
|  | ||||
|       info->unredirected_window = expected_unredirected_window; | ||||
|       if (info->unredirected_window != expected_unredirected_window) | ||||
|         { | ||||
|           if (info->unredirected_window != NULL) | ||||
|             { | ||||
|               meta_window_actor_set_redirected (info->unredirected_window, TRUE); | ||||
|               meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), | ||||
|                                          NULL); | ||||
|             } | ||||
|  | ||||
|           if (expected_unredirected_window != NULL) | ||||
|             { | ||||
|               meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (top_window)), | ||||
|                                          meta_window_actor_get_meta_window (top_window)); | ||||
|               meta_window_actor_set_redirected (top_window, FALSE); | ||||
|             } | ||||
|  | ||||
|           info->unredirected_window = expected_unredirected_window; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   for (l = info->windows; l; l = l->next) | ||||
| @@ -1407,6 +1654,7 @@ on_shadow_factory_changed (MetaShadowFactory *factory, | ||||
|  | ||||
| /** | ||||
|  * meta_compositor_new: (skip) | ||||
|  * @display: | ||||
|  * | ||||
|  */ | ||||
| MetaCompositor * | ||||
| @@ -1451,6 +1699,7 @@ meta_compositor_new (MetaDisplay *display) | ||||
|  | ||||
| /** | ||||
|  * meta_get_overlay_window: (skip) | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  */ | ||||
| Window | ||||
| @@ -1488,8 +1737,10 @@ void | ||||
| meta_enable_unredirect_for_screen (MetaScreen *screen) | ||||
| { | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|   if (info != NULL) | ||||
|    info->disable_unredirect_count = MAX(0, info->disable_unredirect_count - 1); | ||||
|   if (info != NULL && info->disable_unredirect_count == 0) | ||||
|     g_warning ("Called enable_unredirect_for_screen while unredirection is enabled."); | ||||
|   if (info != NULL && info->disable_unredirect_count > 0) | ||||
|    info->disable_unredirect_count = info->disable_unredirect_count - 1; | ||||
| } | ||||
|  | ||||
| #define FLASH_TIME_MS 50 | ||||
|   | ||||
| @@ -6,9 +6,9 @@ | ||||
| #include <meta/screen.h> | ||||
| #include <meta/meta-background-actor.h> | ||||
|  | ||||
| void meta_background_actor_set_visible_region  (MetaBackgroundActor *self, | ||||
|                                                 cairo_region_t      *visible_region); | ||||
| void meta_background_actor_set_clip_region  (MetaBackgroundActor *self, | ||||
|                                              cairo_region_t      *clip_region); | ||||
|  | ||||
| cairo_region_t *meta_background_actor_get_visible_region (MetaBackgroundActor *self); | ||||
| cairo_region_t *meta_background_actor_get_clip_region (MetaBackgroundActor *self); | ||||
|  | ||||
| #endif /* META_BACKGROUND_ACTOR_PRIVATE_H */ | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
| /* | ||||
|  * meta-background-actor.c: Actor for painting the root window background | ||||
|  * | ||||
|  * Copyright 2009 Sander Dijkhuis | ||||
|  * Copyright 2010 Red Hat, Inc. | ||||
|  * | ||||
| @@ -23,6 +21,13 @@ | ||||
|  * Portions adapted from gnome-shell/src/shell-global.c | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-background-actor | ||||
|  * @title: MetaBackgroundActor | ||||
|  * @short_description: Actor for painting the root window background | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <cogl/cogl-texture-pixmap-x11.h> | ||||
| @@ -39,7 +44,7 @@ | ||||
|  | ||||
| struct _MetaBackgroundActorPrivate | ||||
| { | ||||
|   cairo_region_t *visible_region; | ||||
|   cairo_region_t *clip_region; | ||||
| }; | ||||
|  | ||||
| G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR); | ||||
| @@ -49,7 +54,7 @@ meta_background_actor_dispose (GObject *object) | ||||
| { | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object); | ||||
|  | ||||
|   meta_background_actor_set_visible_region (self, NULL); | ||||
|   meta_background_actor_set_clip_region (self, NULL); | ||||
|  | ||||
|   G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object); | ||||
| } | ||||
| @@ -162,17 +167,17 @@ meta_background_actor_new (void) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_set_visible_region: | ||||
|  * meta_background_actor_set_clip_region: | ||||
|  * @self: a #MetaBackgroundActor | ||||
|  * @visible_region: (allow-none): the area of the actor (in allocate-relative | ||||
|  * @clip_region: (allow-none): the area of the actor (in allocate-relative | ||||
|  *   coordinates) that is visible. | ||||
|  * | ||||
|  * Sets the area of the background that is unobscured by overlapping windows. | ||||
|  * This is used to optimize and only paint the visible portions. | ||||
|  */ | ||||
| void | ||||
| meta_background_actor_set_visible_region (MetaBackgroundActor *self, | ||||
|                                           cairo_region_t      *visible_region) | ||||
| meta_background_actor_set_clip_region (MetaBackgroundActor *self, | ||||
|                                        cairo_region_t      *clip_region) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv; | ||||
|  | ||||
| @@ -180,16 +185,16 @@ meta_background_actor_set_visible_region (MetaBackgroundActor *self, | ||||
|  | ||||
|   priv = self->priv; | ||||
|  | ||||
|   g_clear_pointer (&priv->visible_region, | ||||
|   g_clear_pointer (&priv->clip_region, | ||||
|                    (GDestroyNotify) | ||||
|                    cairo_region_destroy); | ||||
|  | ||||
|   if (visible_region) | ||||
|     priv->visible_region = cairo_region_copy (visible_region); | ||||
|   if (clip_region) | ||||
|     priv->clip_region = cairo_region_copy (clip_region); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_get_visible_region: | ||||
|  * meta_background_actor_get_clip_region: | ||||
|  * @self: a #MetaBackgroundActor | ||||
|  * | ||||
|  * Return value (transfer full): a #cairo_region_t that represents the part of | ||||
| @@ -197,16 +202,16 @@ meta_background_actor_set_visible_region (MetaBackgroundActor *self, | ||||
|  * #MetaWindowActor objects. | ||||
|  */ | ||||
| cairo_region_t * | ||||
| meta_background_actor_get_visible_region (MetaBackgroundActor *self) | ||||
| meta_background_actor_get_clip_region (MetaBackgroundActor *self) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   ClutterActorBox content_box; | ||||
|   cairo_rectangle_int_t content_area = { 0 }; | ||||
|   cairo_region_t *visible_region; | ||||
|   cairo_region_t *clip_region; | ||||
|  | ||||
|   g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL); | ||||
|  | ||||
|   if (!priv->visible_region) | ||||
|   if (!priv->clip_region) | ||||
|       return NULL; | ||||
|  | ||||
|   clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box); | ||||
| @@ -216,8 +221,8 @@ meta_background_actor_get_visible_region (MetaBackgroundActor *self) | ||||
|   content_area.width = content_box.x2 - content_box.x1; | ||||
|   content_area.height = content_box.y2 - content_box.y1; | ||||
|  | ||||
|   visible_region = cairo_region_create_rectangle (&content_area); | ||||
|   cairo_region_intersect (visible_region, priv->visible_region); | ||||
|   clip_region = cairo_region_create_rectangle (&content_area); | ||||
|   cairo_region_intersect (clip_region, priv->clip_region); | ||||
|  | ||||
|   return visible_region; | ||||
|   return clip_region; | ||||
| } | ||||
|   | ||||
| @@ -6,6 +6,6 @@ | ||||
| #include <meta/screen.h> | ||||
| #include <meta/meta-background-group.h> | ||||
|  | ||||
| void meta_background_group_set_visible_region  (MetaBackgroundGroup *self, | ||||
|                                                 cairo_region_t      *visible_region); | ||||
| void meta_background_group_set_clip_region  (MetaBackgroundGroup *self, | ||||
|                                              cairo_region_t      *visible_region); | ||||
| #endif /* META_BACKGROUND_GROUP_PRIVATE_H */ | ||||
|   | ||||
| @@ -1,5 +1,19 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-background-group | ||||
|  * @title: MetaBackgroundGroup | ||||
|  * @short_description: Container for background actors | ||||
|  * | ||||
|  * This class is a subclass of ClutterActor with special handling for | ||||
|  * MetaBackgroundActor/MetaBackgroundGroup when painting children. | ||||
|  * It makes sure to only draw the parts of the backgrounds not | ||||
|  * occluded by opaque windows. | ||||
|  * | ||||
|  * See #MetaWindowGroup for more information behind the motivation, | ||||
|  * and details on implementation. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include "compositor-private.h" | ||||
| @@ -7,11 +21,11 @@ | ||||
| #include "meta-background-actor-private.h" | ||||
| #include "meta-background-group-private.h" | ||||
|  | ||||
| G_DEFINE_TYPE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_GROUP); | ||||
| G_DEFINE_TYPE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| struct _MetaBackgroundGroupPrivate | ||||
| { | ||||
|   ClutterLayoutManager *layout_manager; | ||||
|   gpointer dummy; | ||||
| }; | ||||
|  | ||||
| static void | ||||
| @@ -45,24 +59,19 @@ meta_background_group_init (MetaBackgroundGroup *self) | ||||
|   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, | ||||
|                                             META_TYPE_BACKGROUND_GROUP, | ||||
|                                             MetaBackgroundGroupPrivate); | ||||
|  | ||||
|   self->priv->layout_manager = clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_FIXED, | ||||
|                                                        CLUTTER_BIN_ALIGNMENT_FIXED); | ||||
|  | ||||
|   clutter_actor_set_layout_manager (CLUTTER_ACTOR (self), self->priv->layout_manager); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_group_set_visible_region: | ||||
|  * meta_background_group_set_clip_region: | ||||
|  * @self: a #MetaBackgroundGroup | ||||
|  * @visible_region: (allow-none): the parts of the background to paint | ||||
|  * @region: (allow-none): the parts of the background to paint | ||||
|  * | ||||
|  * Sets the area of the backgrounds that is unobscured by overlapping windows. | ||||
|  * This is used to optimize and only paint the visible portions. | ||||
|  */ | ||||
| void | ||||
| meta_background_group_set_visible_region (MetaBackgroundGroup *self, | ||||
|                                           cairo_region_t      *region) | ||||
| meta_background_group_set_clip_region (MetaBackgroundGroup *self, | ||||
|                                        cairo_region_t      *region) | ||||
| { | ||||
|   GList *children, *l; | ||||
|  | ||||
| @@ -73,7 +82,7 @@ meta_background_group_set_visible_region (MetaBackgroundGroup *self, | ||||
|  | ||||
|       if (META_IS_BACKGROUND_ACTOR (actor)) | ||||
|         { | ||||
|           meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (actor), region); | ||||
|           meta_background_actor_set_clip_region (META_BACKGROUND_ACTOR (actor), region); | ||||
|         } | ||||
|       else if (META_IS_BACKGROUND_GROUP (actor)) | ||||
|         { | ||||
| @@ -83,7 +92,7 @@ meta_background_group_set_visible_region (MetaBackgroundGroup *self, | ||||
|             continue; | ||||
|  | ||||
|           cairo_region_translate (region, -x, -y); | ||||
|           meta_background_group_set_visible_region (META_BACKGROUND_GROUP (actor), region); | ||||
|           meta_background_group_set_clip_region (META_BACKGROUND_GROUP (actor), region); | ||||
|           cairo_region_translate (region, x, y); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* | ||||
|  * meta-background.c: CoglTexture for painting the system background | ||||
|  * | ||||
|  * Copyright 2013 Red Hat, Inc. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
| @@ -20,6 +19,13 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-background | ||||
|  * @title: MetaBackground | ||||
|  * @short_description: ClutterContent for painting the system background | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <cogl/cogl-texture-pixmap-x11.h> | ||||
| @@ -31,38 +37,9 @@ | ||||
| #include "mutter-enum-types.h" | ||||
| #include <meta/errors.h> | ||||
| #include <meta/meta-background.h> | ||||
| #include "util-private.h" | ||||
| #include "meta-background-actor-private.h" | ||||
|  | ||||
| #define TEXTURE_LOOKUP_SHADER_DECLARATIONS                                     \ | ||||
| "uniform vec2 pixel_step;\n"                                                   \ | ||||
| "vec4 apply_blur(in sampler2D texture, in vec2 coordinates) {\n"               \ | ||||
| " vec4 texel;\n"                                                               \ | ||||
| " texel  = texture2D(texture, coordinates.st);\n"                                \ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0, -1.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2( 0.0, -1.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0, -1.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0,  0.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0,  0.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(-1.0, +1.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2( 0.0, +1.0));\n"\ | ||||
| " texel += texture2D(texture, coordinates.st + pixel_step * vec2(+1.0, +1.0));\n"\ | ||||
| " texel /= 9.0;\n"                                                             \ | ||||
| " return texel;\n"                                                             \ | ||||
| "}\n"                                                                          \ | ||||
| "uniform float saturation;\n"                                                  \ | ||||
| "vec3 desaturate(const vec3 color)\n"                                          \ | ||||
| "{\n"                                                                          \ | ||||
| "   const vec3 gray_conv = vec3(0.299, 0.587, 0.114);\n"                       \ | ||||
| "   vec3 gray = vec3(dot(gray_conv, color));\n"                                \ | ||||
| "   return vec3(mix(color.rgb, gray, 1.0 - saturation));\n"                    \ | ||||
| "}\n"                                                                          \ | ||||
|  | ||||
| #define DESATURATE_CODE                                                        \ | ||||
| "cogl_texel.rgb = desaturate(cogl_texel.rgb);\n" | ||||
|  | ||||
| #define BLUR_CODE                                                              \ | ||||
| "cogl_texel = apply_blur(cogl_sampler, cogl_tex_coord.st);\n" | ||||
|  | ||||
| #define FRAGMENT_SHADER_DECLARATIONS                                           \ | ||||
| "uniform vec2 texture_scale;\n"                                                \ | ||||
| "uniform vec2 actor_size;\n"                                                   \ | ||||
| @@ -85,7 +62,6 @@ | ||||
|  * | ||||
|  * This object provides a ClutterContent object to assist in sharing between actors. | ||||
|  */ | ||||
| typedef struct _MetaBackgroundPrivate MetaBackgroundPrivate; | ||||
|  | ||||
| struct _MetaBackgroundPrivate | ||||
| { | ||||
| @@ -105,7 +81,6 @@ struct _MetaBackgroundPrivate | ||||
|  | ||||
|   float brightness; | ||||
|   float vignette_sharpness; | ||||
|   float saturation; | ||||
| }; | ||||
|  | ||||
| enum | ||||
| @@ -115,7 +90,6 @@ enum | ||||
|   PROP_EFFECTS, | ||||
|   PROP_BRIGHTNESS, | ||||
|   PROP_VIGNETTE_SHARPNESS, | ||||
|   PROP_SATURATION | ||||
| }; | ||||
|  | ||||
| static void clutter_content_iface_init (ClutterContentIface *iface); | ||||
| @@ -125,7 +99,6 @@ G_DEFINE_TYPE_WITH_CODE (MetaBackground, meta_background, G_TYPE_OBJECT, | ||||
|                          G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTENT, | ||||
|                                                 clutter_content_iface_init)) | ||||
|  | ||||
|  | ||||
| static gboolean | ||||
| meta_background_get_preferred_size (ClutterContent *content, | ||||
|                                     gfloat         *width, | ||||
| @@ -356,25 +329,6 @@ clip_region_to_actor_box (cairo_region_t  *region, | ||||
|   cairo_region_intersect_rectangle (region, &clip_rect); | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_blur_parameters (MetaBackground  *self, | ||||
|                      ClutterActorBox *actor_box) | ||||
| { | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|   float pixel_step[2]; | ||||
|  | ||||
|   if (!(priv->effects & META_BACKGROUND_EFFECTS_BLUR)) | ||||
|     return; | ||||
|  | ||||
|   pixel_step[0] = 1.0 / (actor_box->x2 - actor_box->x1); | ||||
|   pixel_step[1] = 1.0 / (actor_box->y2 - actor_box->y1); | ||||
|  | ||||
|   cogl_pipeline_set_uniform_float (priv->pipeline, | ||||
|                                    cogl_pipeline_get_uniform_location (priv->pipeline, | ||||
|                                                                        "pixel_step"), | ||||
|                                    2, 1, pixel_step); | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_vignette_parameters (MetaBackground        *self, | ||||
|                          ClutterActorBox       *actor_box, | ||||
| @@ -436,8 +390,6 @@ meta_background_paint_content (ClutterContent   *content, | ||||
|  | ||||
|   clutter_actor_get_content_box (actor, &actor_box); | ||||
|  | ||||
|   set_blur_parameters (self, &actor_box); | ||||
|  | ||||
|   /* First figure out where on the monitor the texture is supposed to be painted. | ||||
|    * If the actor is not the size of the monitor, this function makes sure to scale | ||||
|    * everything down to fit in the actor. | ||||
| @@ -461,13 +413,13 @@ meta_background_paint_content (ClutterContent   *content, | ||||
|    */ | ||||
|   if (META_IS_BACKGROUND_ACTOR (actor)) | ||||
|     { | ||||
|       cairo_region_t *visible_region; | ||||
|       visible_region = meta_background_actor_get_visible_region (META_BACKGROUND_ACTOR (actor)); | ||||
|       cairo_region_t *clip_region; | ||||
|       clip_region = meta_background_actor_get_clip_region (META_BACKGROUND_ACTOR (actor)); | ||||
|  | ||||
|       if (visible_region != NULL) | ||||
|       if (clip_region != NULL) | ||||
|         { | ||||
|           cairo_region_intersect (paintable_region, visible_region); | ||||
|           cairo_region_destroy (visible_region); | ||||
|           cairo_region_intersect (paintable_region, clip_region); | ||||
|           cairo_region_destroy (clip_region); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -521,6 +473,17 @@ meta_background_dispose (GObject *object) | ||||
|   G_OBJECT_CLASS (meta_background_parent_class)->dispose (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_finalize (GObject *object) | ||||
| { | ||||
|   MetaBackground        *self = META_BACKGROUND (object); | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|  | ||||
|   g_free (priv->filename); | ||||
|  | ||||
|   G_OBJECT_CLASS (meta_background_parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| ensure_pipeline (MetaBackground *self) | ||||
| { | ||||
| @@ -578,74 +541,22 @@ set_vignette_sharpness (MetaBackground *self, | ||||
|   g_object_notify (G_OBJECT (self), "vignette-sharpness"); | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_saturation (MetaBackground *self, | ||||
|                 gfloat          saturation) | ||||
| { | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|  | ||||
|   if (priv->saturation == saturation) | ||||
|     return; | ||||
|  | ||||
|   priv->saturation = saturation; | ||||
|  | ||||
|   ensure_pipeline (self); | ||||
|  | ||||
|   cogl_pipeline_set_uniform_1f (priv->pipeline, | ||||
| 				cogl_pipeline_get_uniform_location (priv->pipeline, | ||||
| 								    "saturation"), | ||||
| 				priv->saturation); | ||||
|  | ||||
|  | ||||
|   clutter_content_invalidate (CLUTTER_CONTENT (self)); | ||||
|  | ||||
|   g_object_notify (G_OBJECT (self), "saturation"); | ||||
| } | ||||
|  | ||||
| static void | ||||
| add_texture_lookup_shader (MetaBackground *self) | ||||
| { | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|   CoglSnippet *snippet; | ||||
|   const char *code = NULL; | ||||
|  | ||||
|   if ((priv->effects & META_BACKGROUND_EFFECTS_BLUR) && | ||||
|       (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE)) | ||||
|     code = BLUR_CODE "\n" DESATURATE_CODE; | ||||
|   else if (priv->effects & META_BACKGROUND_EFFECTS_BLUR) | ||||
|     code = BLUR_CODE; | ||||
|   else if (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE) | ||||
|     code = DESATURATE_CODE; | ||||
|   else | ||||
|     return; | ||||
|  | ||||
|   ensure_pipeline (self); | ||||
|  | ||||
|   snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_TEXTURE_LOOKUP, | ||||
|                               TEXTURE_LOOKUP_SHADER_DECLARATIONS, | ||||
|                               NULL); | ||||
|   cogl_snippet_set_replace (snippet, code); | ||||
|   cogl_pipeline_add_layer_snippet (priv->pipeline, 0, snippet); | ||||
|   cogl_object_unref (snippet); | ||||
|  | ||||
|   if (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE) | ||||
|       cogl_pipeline_set_uniform_1f (priv->pipeline, | ||||
|                                     cogl_pipeline_get_uniform_location (priv->pipeline, | ||||
|                                                                         "saturation"), | ||||
|                                     priv->saturation); | ||||
| } | ||||
|  | ||||
| static void | ||||
| add_vignette (MetaBackground *self) | ||||
| { | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|   CoglSnippet *snippet; | ||||
|   static CoglSnippet *snippet = NULL; | ||||
|  | ||||
|   ensure_pipeline (self); | ||||
|  | ||||
|   snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_FRAGMENT, FRAGMENT_SHADER_DECLARATIONS, VIGNETTE_CODE); | ||||
|   /* Cogl automatically caches pipelines with no eviction policy, | ||||
|    * so we need to prevent identical pipelines from getting cached | ||||
|    * separately, by reusing the same fragement shader snippet. | ||||
|    */ | ||||
|   if (snippet == NULL) | ||||
|     snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_FRAGMENT, FRAGMENT_SHADER_DECLARATIONS, VIGNETTE_CODE); | ||||
|  | ||||
|   cogl_pipeline_add_snippet (priv->pipeline, snippet); | ||||
|   cogl_object_unref (snippet); | ||||
|  | ||||
|   cogl_pipeline_set_uniform_1f (priv->pipeline, | ||||
|                                 cogl_pipeline_get_uniform_location (priv->pipeline, | ||||
| @@ -666,10 +577,6 @@ set_effects (MetaBackground        *self, | ||||
|  | ||||
|   priv->effects = effects; | ||||
|  | ||||
|   if ((priv->effects & META_BACKGROUND_EFFECTS_BLUR) || | ||||
|       (priv->effects & META_BACKGROUND_EFFECTS_DESATURATE)) | ||||
|     add_texture_lookup_shader (self); | ||||
|  | ||||
|   if ((priv->effects & META_BACKGROUND_EFFECTS_VIGNETTE)) | ||||
|     add_vignette (self); | ||||
|  | ||||
| @@ -702,9 +609,6 @@ meta_background_set_property (GObject      *object, | ||||
|     case PROP_VIGNETTE_SHARPNESS: | ||||
|       set_vignette_sharpness (self, g_value_get_float (value)); | ||||
|       break; | ||||
|     case PROP_SATURATION: | ||||
|       set_saturation (self, g_value_get_float (value)); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
| @@ -736,9 +640,6 @@ meta_background_get_property (GObject      *object, | ||||
|     case PROP_VIGNETTE_SHARPNESS: | ||||
|       g_value_set_float (value, priv->vignette_sharpness); | ||||
|       break; | ||||
|     case PROP_SATURATION: | ||||
|       g_value_set_float (value, priv->saturation); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
| @@ -754,6 +655,7 @@ meta_background_class_init (MetaBackgroundClass *klass) | ||||
|   g_type_class_add_private (klass, sizeof (MetaBackgroundPrivate)); | ||||
|  | ||||
|   object_class->dispose = meta_background_dispose; | ||||
|   object_class->finalize = meta_background_finalize; | ||||
|   object_class->set_property = meta_background_set_property; | ||||
|   object_class->get_property = meta_background_get_property; | ||||
|  | ||||
| @@ -793,17 +695,9 @@ meta_background_class_init (MetaBackgroundClass *klass) | ||||
|                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT); | ||||
|   g_object_class_install_property (object_class, PROP_VIGNETTE_SHARPNESS, param_spec); | ||||
|  | ||||
|   param_spec = g_param_spec_float ("saturation", | ||||
|                                    "saturation", | ||||
|                                    "Values less than 1.0 grays background", | ||||
|                                    0.0, 1.0, | ||||
|                                    1.0, | ||||
|                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT); | ||||
|   g_object_class_install_property (object_class, PROP_SATURATION, param_spec); | ||||
|  | ||||
|   param_spec = g_param_spec_flags ("effects", | ||||
|                                    "Effects", | ||||
|                                    "Set to alter saturation, to blur, etc", | ||||
|                                    "Set to enable vignette", | ||||
| 				   meta_background_effects_get_type (), | ||||
|                                    META_BACKGROUND_EFFECTS_NONE, | ||||
|                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); | ||||
| @@ -822,7 +716,8 @@ static void | ||||
| unset_texture (MetaBackground *self) | ||||
| { | ||||
|   MetaBackgroundPrivate *priv = self->priv; | ||||
|   cogl_pipeline_set_layer_texture (priv->pipeline, 0, NULL); | ||||
|   if (priv->pipeline != NULL) | ||||
|     cogl_pipeline_set_layer_texture (priv->pipeline, 0, NULL); | ||||
|  | ||||
|   g_clear_pointer (&priv->texture, | ||||
|                    (GDestroyNotify) | ||||
| @@ -1118,6 +1013,7 @@ meta_background_load_file_async (MetaBackground          *self, | ||||
|     g_task_set_task_data (task, task_data, (GDestroyNotify) load_file_task_data_free); | ||||
|  | ||||
|     g_task_run_in_thread (task, (GTaskThreadFunc) load_file); | ||||
|     g_object_unref (task); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1136,7 +1032,6 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|                                   GAsyncResult    *result, | ||||
|                                   GError         **error) | ||||
| { | ||||
|   static CoglUserDataKey key; | ||||
|   GTask *task; | ||||
|   LoadFileTaskData *task_data; | ||||
|   CoglTexture *texture; | ||||
| @@ -1144,6 +1039,7 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|   int width, height, row_stride; | ||||
|   guchar *pixels; | ||||
|   gboolean has_alpha; | ||||
|   gboolean loaded = FALSE; | ||||
|  | ||||
|   g_return_val_if_fail (g_task_is_valid (result, self), FALSE); | ||||
|  | ||||
| @@ -1152,7 +1048,7 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|   pixbuf = g_task_propagate_pointer (task, error); | ||||
|  | ||||
|   if (pixbuf == NULL) | ||||
|     return FALSE; | ||||
|     goto out; | ||||
|  | ||||
|   task_data = g_task_get_task_data (task); | ||||
|  | ||||
| @@ -1164,7 +1060,7 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|  | ||||
|   texture = cogl_texture_new_from_data (width, | ||||
|                                         height, | ||||
|                                         COGL_TEXTURE_NO_SLICING, | ||||
|                                         COGL_TEXTURE_NO_ATLAS, | ||||
|                                         has_alpha ? | ||||
|                                         COGL_PIXEL_FORMAT_RGBA_8888 : | ||||
|                                         COGL_PIXEL_FORMAT_RGB_888, | ||||
| @@ -1178,15 +1074,9 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|                            COGL_BITMAP_ERROR, | ||||
|                            COGL_BITMAP_ERROR_FAILED, | ||||
|                            _("background texture could not be created from file")); | ||||
|       return FALSE; | ||||
|       goto out; | ||||
|     } | ||||
|  | ||||
|   cogl_object_set_user_data (COGL_OBJECT (texture), | ||||
|                              &key, | ||||
|                              g_object_ref (pixbuf), | ||||
|                              (CoglUserDataDestroyCallback) | ||||
|                              g_object_unref); | ||||
|  | ||||
|   ensure_pipeline (self); | ||||
|   unset_texture (self); | ||||
|   set_style (self, task_data->style); | ||||
| @@ -1194,8 +1084,12 @@ meta_background_load_file_finish (MetaBackground  *self, | ||||
|   set_texture (self, texture); | ||||
|  | ||||
|   clutter_content_invalidate (CLUTTER_CONTENT (self)); | ||||
|   loaded = TRUE; | ||||
|  | ||||
|   return TRUE; | ||||
| out: | ||||
|   if (pixbuf != NULL) | ||||
|     g_object_unref (pixbuf); | ||||
|   return loaded; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -1239,15 +1133,11 @@ meta_background_copy (MetaBackground        *self, | ||||
|       background->priv->pipeline = cogl_pipeline_copy (self->priv->pipeline); | ||||
|       background->priv->texture = cogl_object_ref (self->priv->texture); | ||||
|       background->priv->style = self->priv->style; | ||||
|       background->priv->saturation = self->priv->saturation; | ||||
|  | ||||
|       if (effects != self->priv->effects) | ||||
|         { | ||||
|           set_effects (background, effects); | ||||
|  | ||||
|           if (effects & META_BACKGROUND_EFFECTS_DESATURATE) | ||||
|             set_saturation (background, self->priv->saturation); | ||||
|  | ||||
|           if (effects & META_BACKGROUND_EFFECTS_VIGNETTE) | ||||
|             { | ||||
|               set_brightness (background, self->priv->brightness); | ||||
| @@ -1268,9 +1158,6 @@ meta_background_copy (MetaBackground        *self, | ||||
|       set_style (background, self->priv->style); | ||||
|       set_effects (background, effects); | ||||
|  | ||||
|       if (effects & META_BACKGROUND_EFFECTS_DESATURATE) | ||||
|         set_saturation (background, self->priv->saturation); | ||||
|  | ||||
|       if (effects & META_BACKGROUND_EFFECTS_VIGNETTE) | ||||
|         { | ||||
|           set_brightness (background, self->priv->brightness); | ||||
| @@ -1292,8 +1179,7 @@ meta_background_copy (MetaBackground        *self, | ||||
|  * The returned object should be set on a #MetaBackgroundActor with | ||||
|  * clutter_actor_set_content(). | ||||
|  * | ||||
|  * The background may be desaturated, blurred, or given a vignette depending | ||||
|  * on @effects. | ||||
|  * The background may be given a vignette by setting @effects | ||||
|  * | ||||
|  * Return value: the newly created background content | ||||
|  */ | ||||
|   | ||||
| @@ -192,10 +192,7 @@ meta_module_class_init (MetaModuleClass *klass) | ||||
| static void | ||||
| meta_module_init (MetaModule *self) | ||||
| { | ||||
|   MetaModulePrivate *priv; | ||||
|  | ||||
|   self->priv = priv = META_MODULE_GET_PRIVATE (self); | ||||
|  | ||||
|   self->priv = META_MODULE_GET_PRIVATE (self); | ||||
| } | ||||
|  | ||||
| GType | ||||
|   | ||||
| @@ -85,12 +85,20 @@ meta_plugin_manager_load (const gchar       *plugin_name) | ||||
|   g_free (path); | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_confirm_display_change (MetaMonitorManager *monitors, | ||||
|                            MetaPluginManager  *plugin_mgr) | ||||
| { | ||||
|   meta_plugin_manager_confirm_display_change (plugin_mgr); | ||||
| } | ||||
|  | ||||
| MetaPluginManager * | ||||
| meta_plugin_manager_new (MetaScreen *screen) | ||||
| { | ||||
|   MetaPluginManager *plugin_mgr; | ||||
|   MetaPluginClass *klass; | ||||
|   MetaPlugin *plugin; | ||||
|   MetaMonitorManager *monitors; | ||||
|  | ||||
|   plugin_mgr = g_new0 (MetaPluginManager, 1); | ||||
|   plugin_mgr->screen = screen; | ||||
| @@ -101,6 +109,10 @@ meta_plugin_manager_new (MetaScreen *screen) | ||||
|   if (klass->start) | ||||
|     klass->start (plugin); | ||||
|  | ||||
|   monitors = meta_monitor_manager_get (); | ||||
|   g_signal_connect (monitors, "confirm-display-change", | ||||
|                     G_CALLBACK (on_confirm_display_change), plugin_mgr); | ||||
|  | ||||
|   return plugin_mgr; | ||||
| } | ||||
|  | ||||
| @@ -294,29 +306,23 @@ meta_plugin_manager_filter_keybinding (MetaPluginManager *plugin_mgr, | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * The public method that the compositor hooks into for desktop switching. | ||||
|  * | ||||
|  * Returns TRUE if the plugin handled the event type (i.e., | ||||
|  * if the return value is FALSE, there will be no subsequent call to the | ||||
|  * manager completed() callback, and the compositor must ensure that any | ||||
|  * appropriate post-effect cleanup is carried out. | ||||
|  */ | ||||
| gboolean | ||||
| meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr, | ||||
|                                    XEvent            *xev) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|  | ||||
|   return _meta_plugin_xevent_filter (plugin, xev); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_plugin_manager_confirm_display_change (MetaPluginManager *plugin_mgr) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|   /* We need to make sure that clutter gets certain events, like | ||||
|    * ConfigureNotify on the stage window. If there is a plugin that | ||||
|    * provides an xevent_filter function, then it's the responsibility | ||||
|    * of that plugin to pass events to Clutter. Otherwise, we send the | ||||
|    * event directly to Clutter ourselves. | ||||
|    */ | ||||
|   if (klass->xevent_filter) | ||||
|     return klass->xevent_filter (plugin, xev); | ||||
|   if (klass->confirm_display_change) | ||||
|     return klass->confirm_display_change (plugin); | ||||
|   else | ||||
|     return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE; | ||||
|     return meta_plugin_complete_display_change (plugin, TRUE); | ||||
| } | ||||
|   | ||||
| @@ -72,5 +72,9 @@ gboolean meta_plugin_manager_filter_keybinding (MetaPluginManager  *mgr, | ||||
|  | ||||
| gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr, | ||||
|                                             XEvent            *xev); | ||||
| gboolean _meta_plugin_xevent_filter (MetaPlugin *plugin, | ||||
|                                      XEvent     *xev); | ||||
|  | ||||
| void     meta_plugin_manager_confirm_display_change (MetaPluginManager *mgr); | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -21,6 +21,13 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-plugin | ||||
|  * @title: MetaPlugin | ||||
|  * @short_description: Entry point for plugins | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include <meta/meta-plugin.h> | ||||
| #include "meta-plugin-manager.h" | ||||
| #include <meta/screen.h> | ||||
| @@ -34,6 +41,7 @@ | ||||
|  | ||||
| #include "compositor-private.h" | ||||
| #include "meta-window-actor-private.h" | ||||
| #include "monitor-private.h" | ||||
|  | ||||
| G_DEFINE_ABSTRACT_TYPE (MetaPlugin, meta_plugin, G_TYPE_OBJECT); | ||||
|  | ||||
| @@ -130,9 +138,7 @@ meta_plugin_class_init (MetaPluginClass *klass) | ||||
| static void | ||||
| meta_plugin_init (MetaPlugin *self) | ||||
| { | ||||
|   MetaPluginPrivate *priv; | ||||
|  | ||||
|   self->priv = priv = META_PLUGIN_GET_PRIVATE (self); | ||||
|   self->priv = META_PLUGIN_GET_PRIVATE (self); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| @@ -177,6 +183,28 @@ _meta_plugin_effect_started (MetaPlugin *plugin) | ||||
|   priv->running++; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| _meta_plugin_xevent_filter (MetaPlugin *plugin, | ||||
|                             XEvent     *xev) | ||||
| { | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|   /* When mutter is running as a wayland compositor, things like input | ||||
|    * events just come directly from clutter so it won't have disabled | ||||
|    * clutter's event retrieval and won't need to forward it events (if | ||||
|    * it did it would lead to recursion). Also when running as a | ||||
|    * wayland compositor we shouldn't be assuming that we're running | ||||
|    * with the clutter x11 backend. | ||||
|    */ | ||||
|  | ||||
|   if (klass->xevent_filter && klass->xevent_filter (plugin, xev)) | ||||
|     return TRUE; | ||||
|   else if (!meta_is_wayland_compositor ()) | ||||
|     return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE; | ||||
|   else | ||||
|     return FALSE; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_plugin_switch_workspace_completed (MetaPlugin *plugin) | ||||
| { | ||||
| @@ -259,10 +287,6 @@ meta_plugin_destroy_completed (MetaPlugin      *plugin, | ||||
| /** | ||||
|  * meta_plugin_begin_modal: | ||||
|  * @plugin: a #MetaPlugin | ||||
|  * @grab_window: the X window to grab the keyboard and mouse on | ||||
|  * @cursor: the cursor to use for the pointer grab, or None, | ||||
|  *          to use the normal cursor for the grab window and | ||||
|  *          its descendants. | ||||
|  * @options: flags that modify the behavior of the modal grab | ||||
|  * @timestamp: the timestamp used for establishing grabs | ||||
|  * | ||||
| @@ -283,15 +307,13 @@ meta_plugin_destroy_completed (MetaPlugin      *plugin, | ||||
|  */ | ||||
| gboolean | ||||
| meta_plugin_begin_modal (MetaPlugin       *plugin, | ||||
|                          Window            grab_window, | ||||
|                          Cursor            cursor, | ||||
|                          MetaModalOptions  options, | ||||
|                          guint32           timestamp) | ||||
| { | ||||
|   MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv; | ||||
|  | ||||
|   return meta_begin_modal_for_plugin (priv->screen, plugin, | ||||
|                                       grab_window, cursor, options, timestamp); | ||||
|                                       options, timestamp); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -331,3 +353,13 @@ meta_plugin_get_screen (MetaPlugin *plugin) | ||||
|  | ||||
|   return priv->screen; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_plugin_complete_display_change (MetaPlugin *plugin, | ||||
|                                      gboolean    ok) | ||||
| { | ||||
|   MetaMonitorManager *manager; | ||||
|  | ||||
|   manager = meta_monitor_manager_get (); | ||||
|   meta_monitor_manager_confirm_configuration (manager, ok); | ||||
| } | ||||
|   | ||||
| @@ -1,9 +1,5 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
| /* | ||||
|  * MetaShadowFactory: | ||||
|  * | ||||
|  * Create and cache shadow textures for abritrary window shapes | ||||
|  * | ||||
|  * Copyright 2010 Red Hat, Inc. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
| @@ -21,6 +17,13 @@ | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-shadow-factory | ||||
|  * @title: MetaShadowFactory | ||||
|  * @short_description: Create and cache shadow textures for abritrary window shapes | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
| #include <math.h> | ||||
| #include <string.h> | ||||
| @@ -120,12 +123,12 @@ static guint signals[LAST_SIGNAL] = { 0 }; | ||||
| /* The first element in this array also defines the default parameters | ||||
|  * for newly created classes */ | ||||
| MetaShadowClassInfo default_shadow_classes[] = { | ||||
|   { "normal",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } }, | ||||
|   { "dialog",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } }, | ||||
|   { "modal_dialog", { 6, -1, 0, 1, 255 }, { 3, -1, 0, 3, 128 } }, | ||||
|   { "utility",      { 3, -1, 0, 1, 255 }, { 3, -1, 0, 1, 128 } }, | ||||
|   { "border",       { 6, -1, 0, 3, 255 }, { 3, -1, 0, 3, 128 } }, | ||||
|   { "menu",         { 6, -1, 0, 3, 255 }, { 3, -1, 0, 0, 128 } }, | ||||
|   { "normal",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } }, | ||||
|   { "dialog",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } }, | ||||
|   { "modal_dialog", { 6, -1, 0, 1, 128 }, { 3, -1, 0, 3, 32 } }, | ||||
|   { "utility",      { 3, -1, 0, 1, 128 }, { 3, -1, 0, 1, 32 } }, | ||||
|   { "border",       { 6, -1, 0, 3, 128 }, { 3, -1, 0, 3, 32 } }, | ||||
|   { "menu",         { 6, -1, 0, 3, 128 }, { 3, -1, 0, 0, 32 } }, | ||||
|  | ||||
|   { "popup-menu",    { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } }, | ||||
|  | ||||
|   | ||||
							
								
								
									
										44
									
								
								src/compositor/meta-shaped-texture-private.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/compositor/meta-shaped-texture-private.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| /* | ||||
|  * shaped texture | ||||
|  * | ||||
|  * An actor to draw a texture clipped to a list of rectangles | ||||
|  * | ||||
|  * Authored By Neil Roberts  <neil@linux.intel.com> | ||||
|  * | ||||
|  * Copyright (C) 2008 Intel Corporation | ||||
|  *               2013 Red Hat, Inc. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef __META_SHAPED_TEXTURE_PRIVATE_H__ | ||||
| #define __META_SHAPED_TEXTURE_PRIVATE_H__ | ||||
|  | ||||
| #include <meta/meta-shaped-texture.h> | ||||
| #include "meta-wayland-private.h" | ||||
|  | ||||
| ClutterActor *meta_shaped_texture_new_with_xwindow (Window xwindow); | ||||
| ClutterActor *meta_shaped_texture_new_with_wayland_surface  (MetaWaylandSurface *surface); | ||||
| void meta_shaped_texture_set_wayland_surface                (MetaShapedTexture  *stex, | ||||
|                                                              MetaWaylandSurface *surface); | ||||
| MetaWaylandSurface *meta_shaped_texture_get_wayland_surface (MetaShapedTexture *stex); | ||||
|  | ||||
| void meta_shaped_texture_set_pixmap (MetaShapedTexture *stex, | ||||
|                                      Pixmap             pixmap); | ||||
| void meta_shaped_texture_attach_wayland_buffer (MetaShapedTexture  *stex, | ||||
|                                                 MetaWaylandBuffer  *buffer); | ||||
|  | ||||
| #endif | ||||
| @@ -1,8 +1,4 @@ | ||||
| /* | ||||
|  * shaped texture | ||||
|  * | ||||
|  * An actor to draw a masked texture. | ||||
|  * | ||||
|  * Authored By Neil Roberts  <neil@linux.intel.com> | ||||
|  * and Jasper St. Pierre <jstpierre@mecheye.net> | ||||
|  * | ||||
| @@ -25,11 +21,22 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-shaped-texture | ||||
|  * @title: MetaShapedTexture | ||||
|  * @short_description: An actor to draw a masked texture. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <meta/meta-shaped-texture.h> | ||||
| #include <meta/util.h> | ||||
| #include "meta-texture-tower.h" | ||||
|  | ||||
| #include "meta-shaped-texture-private.h" | ||||
| #include "meta-wayland-private.h" | ||||
| #include <cogl/cogl-wayland-server.h> | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| #include <cogl/cogl.h> | ||||
| #include <cogl/cogl-texture-pixmap-x11.h> | ||||
| @@ -53,6 +60,13 @@ static void meta_shaped_texture_get_preferred_height (ClutterActor *self, | ||||
|  | ||||
| static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume); | ||||
|  | ||||
| typedef enum _MetaShapedTextureType | ||||
| { | ||||
|   META_SHAPED_TEXTURE_TYPE_X11_PIXMAP, | ||||
|   META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE, | ||||
| } MetaShapedTextureType; | ||||
|  | ||||
|  | ||||
| G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture, | ||||
|                CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| @@ -63,13 +77,24 @@ G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture, | ||||
| struct _MetaShapedTexturePrivate | ||||
| { | ||||
|   MetaTextureTower *paint_tower; | ||||
|   Pixmap pixmap; | ||||
|   CoglTexturePixmapX11 *texture; | ||||
|  | ||||
|   MetaShapedTextureType type; | ||||
|   union { | ||||
|     struct { | ||||
|       Pixmap pixmap; | ||||
|     } x11; | ||||
|     struct { | ||||
|       MetaWaylandSurface *surface; | ||||
|     } wayland; | ||||
|   }; | ||||
|  | ||||
|   CoglTexture *texture; | ||||
|  | ||||
|   CoglTexture *mask_texture; | ||||
|   CoglPipeline *pipeline; | ||||
|   CoglPipeline *pipeline_unshaped; | ||||
|  | ||||
|   cairo_region_t *clip_region; | ||||
|   cairo_region_t *input_shape_region; | ||||
|   cairo_region_t *opaque_region; | ||||
|  | ||||
|   guint tex_width, tex_height; | ||||
|  | ||||
| @@ -101,7 +126,10 @@ meta_shaped_texture_init (MetaShapedTexture *self) | ||||
|   priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self); | ||||
|  | ||||
|   priv->paint_tower = meta_texture_tower_new (); | ||||
|  | ||||
|   priv->type = META_SHAPED_TEXTURE_TYPE_X11_PIXMAP; | ||||
|   priv->texture = NULL; | ||||
|  | ||||
|   priv->mask_texture = NULL; | ||||
|   priv->create_mipmaps = TRUE; | ||||
| } | ||||
| @@ -116,9 +144,8 @@ meta_shaped_texture_dispose (GObject *object) | ||||
|     meta_texture_tower_free (priv->paint_tower); | ||||
|   priv->paint_tower = NULL; | ||||
|  | ||||
|   g_clear_pointer (&priv->pipeline, cogl_object_unref); | ||||
|   g_clear_pointer (&priv->pipeline_unshaped, cogl_object_unref); | ||||
|   g_clear_pointer (&priv->texture, cogl_object_unref); | ||||
|   g_clear_pointer (&priv->opaque_region, cairo_region_destroy); | ||||
|  | ||||
|   meta_shaped_texture_set_mask_texture (self, NULL); | ||||
|   meta_shaped_texture_set_clip_region (self, NULL); | ||||
| @@ -126,19 +153,133 @@ meta_shaped_texture_dispose (GObject *object) | ||||
|   G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object); | ||||
| } | ||||
|  | ||||
| static CoglPipeline * | ||||
| get_unmasked_pipeline (CoglContext *ctx) | ||||
| { | ||||
|   return cogl_pipeline_new (ctx); | ||||
| } | ||||
|  | ||||
| static CoglPipeline * | ||||
| get_masked_pipeline (CoglContext *ctx) | ||||
| { | ||||
|   static CoglPipeline *template = NULL; | ||||
|   if (G_UNLIKELY (template == NULL)) | ||||
|     { | ||||
|       template = cogl_pipeline_new (ctx); | ||||
|       cogl_pipeline_set_layer_combine (template, 1, | ||||
|                                        "RGBA = MODULATE (PREVIOUS, TEXTURE[A])", | ||||
|                                        NULL); | ||||
|     } | ||||
|  | ||||
|   return cogl_pipeline_copy (template); | ||||
| } | ||||
|  | ||||
| static CoglPipeline * | ||||
| get_unblended_pipeline (CoglContext *ctx) | ||||
| { | ||||
|   static CoglPipeline *template = NULL; | ||||
|   if (G_UNLIKELY (template == NULL)) | ||||
|     { | ||||
|       CoglColor color; | ||||
|       template = cogl_pipeline_new (ctx); | ||||
|       cogl_color_init_from_4ub (&color, 255, 255, 255, 255); | ||||
|       cogl_pipeline_set_blend (template, | ||||
|                                "RGBA = ADD (SRC_COLOR, 0)", | ||||
|                                NULL); | ||||
|       cogl_pipeline_set_color (template, &color); | ||||
|     } | ||||
|  | ||||
|   return cogl_pipeline_copy (template); | ||||
| } | ||||
|  | ||||
| static void | ||||
| paint_clipped_rectangle (CoglFramebuffer       *fb, | ||||
|                          CoglPipeline          *pipeline, | ||||
|                          cairo_rectangle_int_t *rect, | ||||
|                          ClutterActorBox       *alloc) | ||||
| { | ||||
|   float coords[8]; | ||||
|   float x1, y1, x2, y2; | ||||
|  | ||||
|   x1 = rect->x; | ||||
|   y1 = rect->y; | ||||
|   x2 = rect->x + rect->width; | ||||
|   y2 = rect->y + rect->height; | ||||
|  | ||||
|   coords[0] = rect->x / (alloc->x2 - alloc->x1); | ||||
|   coords[1] = rect->y / (alloc->y2 - alloc->y1); | ||||
|   coords[2] = (rect->x + rect->width) / (alloc->x2 - alloc->x1); | ||||
|   coords[3] = (rect->y + rect->height) / (alloc->y2 - alloc->y1); | ||||
|  | ||||
|   coords[4] = coords[0]; | ||||
|   coords[5] = coords[1]; | ||||
|   coords[6] = coords[2]; | ||||
|   coords[7] = coords[3]; | ||||
|  | ||||
|   cogl_framebuffer_draw_multitextured_rectangle (fb, pipeline, | ||||
|                                                  x1, y1, x2, y2, | ||||
|                                                  &coords[0], 8); | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| static void | ||||
| set_cogl_texture (MetaShapedTexture *stex, | ||||
|                   CoglTexture       *cogl_tex) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   guint width, height; | ||||
|  | ||||
|   g_return_if_fail (META_IS_SHAPED_TEXTURE (stex)); | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->texture) | ||||
|     cogl_object_unref (priv->texture); | ||||
|  | ||||
|   priv->texture = cogl_object_ref (cogl_tex); | ||||
|  | ||||
|   if (cogl_tex != NULL) | ||||
|     { | ||||
|       width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex)); | ||||
|       height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex)); | ||||
|  | ||||
|       if (width != priv->tex_width || | ||||
|           height != priv->tex_height) | ||||
|         { | ||||
|           priv->tex_width = width; | ||||
|           priv->tex_height = height; | ||||
|  | ||||
|           clutter_actor_queue_relayout (CLUTTER_ACTOR (stex)); | ||||
|         } | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       /* size changed to 0 going to an invalid handle */ | ||||
|       priv->tex_width = 0; | ||||
|       priv->tex_height = 0; | ||||
|       clutter_actor_queue_relayout (CLUTTER_ACTOR (stex)); | ||||
|     } | ||||
|  | ||||
|   /* NB: We don't queue a redraw of the actor here because we don't | ||||
|    * know how much of the buffer has changed with respect to the | ||||
|    * previous buffer. We only queue a redraw in response to surface | ||||
|    * damage. */ | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_shaped_texture_paint (ClutterActor *actor) | ||||
| { | ||||
|   MetaShapedTexture *stex = (MetaShapedTexture *) actor; | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|   CoglTexture *paint_tex; | ||||
|   guint tex_width, tex_height; | ||||
|   guchar opacity; | ||||
|   CoglContext *ctx; | ||||
|   CoglFramebuffer *fb; | ||||
|   CoglPipeline *pipeline = NULL; | ||||
|   CoglTexture *paint_tex; | ||||
|   ClutterActorBox alloc; | ||||
|  | ||||
|   static CoglPipeline *pipeline_template = NULL; | ||||
|   static CoglPipeline *pipeline_unshaped_template = NULL; | ||||
|  | ||||
|   CoglPipeline *pipeline; | ||||
|   cairo_region_t *blended_region = NULL; | ||||
|  | ||||
|   if (priv->clip_region && cairo_region_is_empty (priv->clip_region)) | ||||
|     return; | ||||
| @@ -175,38 +316,74 @@ meta_shaped_texture_paint (ClutterActor *actor) | ||||
|   if (tex_width == 0 || tex_height == 0) /* no contents yet */ | ||||
|     return; | ||||
|  | ||||
|   ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|   fb = cogl_get_draw_framebuffer (); | ||||
|  | ||||
|   opacity = clutter_actor_get_paint_opacity (actor); | ||||
|   clutter_actor_get_allocation_box (actor, &alloc); | ||||
|  | ||||
|   if (priv->opaque_region != NULL && opacity == 255) | ||||
|     { | ||||
|       CoglPipeline *opaque_pipeline; | ||||
|       cairo_region_t *region; | ||||
|       int n_rects; | ||||
|       int i; | ||||
|  | ||||
|       if (priv->clip_region != NULL) | ||||
|         { | ||||
|           region = cairo_region_copy (priv->clip_region); | ||||
|           cairo_region_intersect (region, priv->opaque_region); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           region = cairo_region_reference (priv->opaque_region); | ||||
|         } | ||||
|  | ||||
|       if (cairo_region_is_empty (region)) | ||||
|         goto paint_blended; | ||||
|  | ||||
|       opaque_pipeline = get_unblended_pipeline (ctx); | ||||
|       cogl_pipeline_set_layer_texture (opaque_pipeline, 0, paint_tex); | ||||
|  | ||||
|       n_rects = cairo_region_num_rectangles (region); | ||||
|       for (i = 0; i < n_rects; i++) | ||||
|         { | ||||
|           cairo_rectangle_int_t rect; | ||||
|           cairo_region_get_rectangle (region, i, &rect); | ||||
|           paint_clipped_rectangle (fb, opaque_pipeline, &rect, &alloc); | ||||
|         } | ||||
|  | ||||
|       cogl_object_unref (opaque_pipeline); | ||||
|  | ||||
|       if (priv->clip_region != NULL) | ||||
|         { | ||||
|           blended_region = cairo_region_copy (priv->clip_region); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           cairo_rectangle_int_t rect = { 0, 0, tex_width, tex_height }; | ||||
|           blended_region = cairo_region_create_rectangle (&rect); | ||||
|         } | ||||
|  | ||||
|       cairo_region_subtract (blended_region, priv->opaque_region); | ||||
|  | ||||
|     paint_blended: | ||||
|       cairo_region_destroy (region); | ||||
|     } | ||||
|  | ||||
|   if (blended_region == NULL && priv->clip_region != NULL) | ||||
|     blended_region = cairo_region_reference (priv->clip_region); | ||||
|  | ||||
|   if (blended_region != NULL && cairo_region_is_empty (blended_region)) | ||||
|     goto out; | ||||
|  | ||||
|   if (priv->mask_texture == NULL) | ||||
|     { | ||||
|       /* Use a single-layer texture if we don't have a mask. */ | ||||
|  | ||||
|       if (priv->pipeline_unshaped == NULL) | ||||
|         { | ||||
|           if (G_UNLIKELY (pipeline_unshaped_template == NULL)) | ||||
|             { | ||||
|               CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|               pipeline_unshaped_template = cogl_pipeline_new (ctx); | ||||
|             } | ||||
|  | ||||
|           priv->pipeline_unshaped = cogl_pipeline_copy (pipeline_unshaped_template); | ||||
|         } | ||||
|         pipeline = priv->pipeline_unshaped; | ||||
|       pipeline = get_unmasked_pipeline (ctx); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if (priv->pipeline == NULL) | ||||
| 	{ | ||||
| 	   if (G_UNLIKELY (pipeline_template == NULL)) | ||||
| 	    { | ||||
|               CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
| 	      pipeline_template =  cogl_pipeline_new (ctx); | ||||
| 	      cogl_pipeline_set_layer_combine (pipeline_template, 1, | ||||
| 					   "RGBA = MODULATE (PREVIOUS, TEXTURE[A])", | ||||
| 					   NULL); | ||||
| 	    } | ||||
| 	  priv->pipeline = cogl_pipeline_copy (pipeline_template); | ||||
| 	} | ||||
|       pipeline = priv->pipeline; | ||||
|  | ||||
|       pipeline = get_masked_pipeline (ctx); | ||||
|       cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture); | ||||
|     } | ||||
|  | ||||
| @@ -214,66 +391,50 @@ meta_shaped_texture_paint (ClutterActor *actor) | ||||
|  | ||||
|   { | ||||
|     CoglColor color; | ||||
|     guchar opacity = clutter_actor_get_paint_opacity (actor); | ||||
|     cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity); | ||||
|     cogl_color_init_from_4ub (&color, opacity, opacity, opacity, opacity); | ||||
|     cogl_pipeline_set_color (pipeline, &color); | ||||
|   } | ||||
|  | ||||
|   cogl_set_source (pipeline); | ||||
|  | ||||
|   clutter_actor_get_allocation_box (actor, &alloc); | ||||
|  | ||||
|   if (priv->clip_region) | ||||
|   if (blended_region != NULL) | ||||
|     { | ||||
|       int n_rects; | ||||
|       int i; | ||||
|       cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height }; | ||||
|  | ||||
|       /* Limit to how many separate rectangles we'll draw; beyond this just | ||||
|        * fall back and draw the whole thing */ | ||||
| #     define MAX_RECTS 16 | ||||
|  | ||||
|       n_rects = cairo_region_num_rectangles (priv->clip_region); | ||||
|       n_rects = cairo_region_num_rectangles (blended_region); | ||||
|       if (n_rects <= MAX_RECTS) | ||||
| 	{ | ||||
| 	  float coords[8]; | ||||
|           float x1, y1, x2, y2; | ||||
|           int i; | ||||
|           cairo_rectangle_int_t tex_rect = { 0, 0, tex_width, tex_height }; | ||||
|  | ||||
| 	  for (i = 0; i < n_rects; i++) | ||||
| 	    { | ||||
| 	      cairo_rectangle_int_t rect; | ||||
|  | ||||
| 	      cairo_region_get_rectangle (priv->clip_region, i, &rect); | ||||
| 	      cairo_region_get_rectangle (blended_region, i, &rect); | ||||
|  | ||||
| 	      if (!gdk_rectangle_intersect (&tex_rect, &rect, &rect)) | ||||
| 		continue; | ||||
|  | ||||
| 	      x1 = rect.x; | ||||
| 	      y1 = rect.y; | ||||
| 	      x2 = rect.x + rect.width; | ||||
| 	      y2 = rect.y + rect.height; | ||||
|  | ||||
| 	      coords[0] = rect.x / (alloc.x2 - alloc.x1); | ||||
| 	      coords[1] = rect.y / (alloc.y2 - alloc.y1); | ||||
| 	      coords[2] = (rect.x + rect.width) / (alloc.x2 - alloc.x1); | ||||
| 	      coords[3] = (rect.y + rect.height) / (alloc.y2 - alloc.y1); | ||||
|  | ||||
|               coords[4] = coords[0]; | ||||
|               coords[5] = coords[1]; | ||||
|               coords[6] = coords[2]; | ||||
|               coords[7] = coords[3]; | ||||
|  | ||||
|               cogl_rectangle_with_multitexture_coords (x1, y1, x2, y2, | ||||
|                                                        &coords[0], 8); | ||||
|               paint_clipped_rectangle (fb, pipeline, &rect, &alloc); | ||||
|             } | ||||
|  | ||||
| 	  return; | ||||
|           goto out; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|   cogl_rectangle (0, 0, | ||||
| 		  alloc.x2 - alloc.x1, | ||||
| 		  alloc.y2 - alloc.y1); | ||||
|   cogl_framebuffer_draw_rectangle (fb, pipeline, | ||||
|                                    0, 0, | ||||
|                                    alloc.x2 - alloc.x1, | ||||
|                                    alloc.y2 - alloc.y1); | ||||
|  | ||||
|  out: | ||||
|   if (pipeline != NULL) | ||||
|     cogl_object_unref (pipeline); | ||||
|   if (blended_region != NULL) | ||||
|     cairo_region_destroy (blended_region); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @@ -283,38 +444,61 @@ meta_shaped_texture_pick (ClutterActor       *actor, | ||||
|   MetaShapedTexture *stex = (MetaShapedTexture *) actor; | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|  | ||||
|   if (!clutter_actor_should_pick_paint (actor) || | ||||
|       (priv->clip_region && cairo_region_is_empty (priv->clip_region))) | ||||
|     return; | ||||
|  | ||||
|   /* If there is no region then use the regular pick */ | ||||
|   if (priv->mask_texture == NULL) | ||||
|     CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class) | ||||
|       ->pick (actor, color); | ||||
|   else if (clutter_actor_should_pick_paint (actor)) | ||||
|   if (priv->input_shape_region == NULL) | ||||
|     CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)->pick (actor, color); | ||||
|   else | ||||
|     { | ||||
|       CoglTexture *paint_tex; | ||||
|       ClutterActorBox alloc; | ||||
|       guint tex_width, tex_height; | ||||
|       int n_rects; | ||||
|       float *rectangles; | ||||
|       int i; | ||||
|       CoglPipeline *pipeline; | ||||
|       CoglContext *ctx; | ||||
|       CoglFramebuffer *fb; | ||||
|       CoglColor cogl_color; | ||||
|  | ||||
|       paint_tex = COGL_TEXTURE (priv->texture); | ||||
|       /* Note: We don't bother trying to intersect the pick and clip regions | ||||
|        * since needing to copy the region, do the intersection, and probably | ||||
|        * increase the number of rectangles seems more likely to have a negative | ||||
|        * effect. | ||||
|        * | ||||
|        * NB: Most of the time when just using rectangles for picking then | ||||
|        * picking shouldn't involve any rendering, and minimizing the number of | ||||
|        * rectangles has more benefit than reducing the area of the pick | ||||
|        * region. | ||||
|        */ | ||||
|  | ||||
|       if (paint_tex == NULL) | ||||
|         return; | ||||
|       n_rects = cairo_region_num_rectangles (priv->input_shape_region); | ||||
|       rectangles = g_alloca (sizeof (float) * 4 * n_rects); | ||||
|  | ||||
|       tex_width = cogl_texture_get_width (paint_tex); | ||||
|       tex_height = cogl_texture_get_height (paint_tex); | ||||
|       for (i = 0; i < n_rects; i++) | ||||
|         { | ||||
|           cairo_rectangle_int_t rect; | ||||
|           int pos = i * 4; | ||||
|  | ||||
|       if (tex_width == 0 || tex_height == 0) /* no contents yet */ | ||||
|         return; | ||||
|           cairo_region_get_rectangle (priv->input_shape_region, i, &rect); | ||||
|  | ||||
|       cogl_set_source_color4ub (color->red, color->green, color->blue, | ||||
|                                  color->alpha); | ||||
|           rectangles[pos] = rect.x; | ||||
|           rectangles[pos + 1] = rect.y; | ||||
|           rectangles[pos + 2] = rect.x + rect.width; | ||||
|           rectangles[pos + 3] = rect.y + rect.height; | ||||
|         } | ||||
|  | ||||
|       clutter_actor_get_allocation_box (actor, &alloc); | ||||
|       ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|       fb = cogl_get_draw_framebuffer (); | ||||
|  | ||||
|       /* Paint the mask rectangle in the given color */ | ||||
|       cogl_set_source_texture (priv->mask_texture); | ||||
|       cogl_rectangle_with_texture_coords (0, 0, | ||||
|                                           alloc.x2 - alloc.x1, | ||||
|                                           alloc.y2 - alloc.y1, | ||||
|                                           0, 0, 1, 1); | ||||
|       cogl_color_init_from_4ub (&cogl_color, color->red, color->green, color->blue, color->alpha); | ||||
|  | ||||
|       pipeline = cogl_pipeline_new (ctx); | ||||
|       cogl_pipeline_set_color (pipeline, &cogl_color); | ||||
|  | ||||
|       cogl_framebuffer_draw_rectangles (fb, pipeline, | ||||
|                                         rectangles, n_rects); | ||||
|       cogl_object_unref (pipeline); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -364,11 +548,45 @@ meta_shaped_texture_get_paint_volume (ClutterActor *self, | ||||
| } | ||||
|  | ||||
| ClutterActor * | ||||
| meta_shaped_texture_new (void) | ||||
| meta_shaped_texture_new_with_wayland_surface (MetaWaylandSurface *surface) | ||||
| { | ||||
|   ClutterActor *self = g_object_new (META_TYPE_SHAPED_TEXTURE, NULL); | ||||
|   ClutterActor *actor = g_object_new (META_TYPE_SHAPED_TEXTURE, NULL); | ||||
|   MetaShapedTexturePrivate *priv = META_SHAPED_TEXTURE (actor)->priv; | ||||
|  | ||||
|   return self; | ||||
|   /* XXX: it could probably be better to have a "type" construct-only | ||||
|    * property or create wayland/x11 subclasses */ | ||||
|   priv->type = META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE; | ||||
|  | ||||
|   meta_shaped_texture_set_wayland_surface (META_SHAPED_TEXTURE (actor), | ||||
|                                            surface); | ||||
|  | ||||
|   return actor; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_shaped_texture_set_wayland_surface (MetaShapedTexture *stex, | ||||
|                                          MetaWaylandSurface *surface) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|  | ||||
|   priv->wayland.surface = surface; | ||||
|  | ||||
|   if (surface && surface->buffer_ref.buffer) | ||||
|     meta_shaped_texture_attach_wayland_buffer (stex, | ||||
|                                                surface->buffer_ref.buffer); | ||||
| } | ||||
|  | ||||
| MetaWaylandSurface * | ||||
| meta_shaped_texture_get_wayland_surface (MetaShapedTexture *stex) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|   return priv->wayland.surface; | ||||
| } | ||||
|  | ||||
| ClutterActor * | ||||
| meta_shaped_texture_new_with_xwindow (Window xwindow) | ||||
| { | ||||
|   return g_object_new (META_TYPE_SHAPED_TEXTURE, NULL); | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -387,8 +605,7 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex, | ||||
|     { | ||||
|       CoglTexture *base_texture; | ||||
|       priv->create_mipmaps = create_mipmaps; | ||||
|       base_texture = create_mipmaps ? | ||||
|         COGL_TEXTURE (priv->texture) : NULL; | ||||
|       base_texture = create_mipmaps ? priv->texture : NULL; | ||||
|       meta_texture_tower_set_base_texture (priv->paint_tower, base_texture); | ||||
|     } | ||||
| } | ||||
| @@ -414,74 +631,194 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex, | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stex)); | ||||
| } | ||||
|  | ||||
| void | ||||
| static void | ||||
| wayland_surface_update_area (MetaShapedTexture *stex, | ||||
|                              int                x, | ||||
|                              int                y, | ||||
|                              int                width, | ||||
|                              int                height) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   MetaWaylandBuffer *buffer; | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   g_return_if_fail (priv->type == META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE); | ||||
|   g_return_if_fail (priv->texture != NULL); | ||||
|  | ||||
|   buffer = priv->wayland.surface->buffer_ref.buffer; | ||||
|  | ||||
|   if (buffer) | ||||
|     { | ||||
|       struct wl_resource *resource = buffer->resource; | ||||
|       struct wl_shm_buffer *shm_buffer = wl_shm_buffer_get (resource); | ||||
|  | ||||
|       if (shm_buffer) | ||||
|         { | ||||
|           CoglPixelFormat format; | ||||
|  | ||||
|           switch (wl_shm_buffer_get_format (shm_buffer)) | ||||
|             { | ||||
| #if G_BYTE_ORDER == G_BIG_ENDIAN | ||||
|             case WL_SHM_FORMAT_ARGB8888: | ||||
|               format = COGL_PIXEL_FORMAT_ARGB_8888_PRE; | ||||
|               break; | ||||
|             case WL_SHM_FORMAT_XRGB8888: | ||||
|               format = COGL_PIXEL_FORMAT_ARGB_8888; | ||||
|               break; | ||||
| #elif G_BYTE_ORDER == G_LITTLE_ENDIAN | ||||
|             case WL_SHM_FORMAT_ARGB8888: | ||||
|               format = COGL_PIXEL_FORMAT_BGRA_8888_PRE; | ||||
|               break; | ||||
|             case WL_SHM_FORMAT_XRGB8888: | ||||
|               format = COGL_PIXEL_FORMAT_BGRA_8888; | ||||
|               break; | ||||
| #endif | ||||
|             default: | ||||
|               g_warn_if_reached (); | ||||
|               format = COGL_PIXEL_FORMAT_ARGB_8888; | ||||
|             } | ||||
|  | ||||
|           cogl_texture_set_region (priv->texture, | ||||
|                                    x, y, | ||||
|                                    x, y, | ||||
|                                    width, height, | ||||
|                                    width, height, | ||||
|                                    format, | ||||
|                                    wl_shm_buffer_get_stride (shm_buffer), | ||||
|                                    wl_shm_buffer_get_data (shm_buffer)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| get_clip (MetaShapedTexture *stex, | ||||
|           int x, | ||||
|           int y, | ||||
|           int width, | ||||
|           int height, | ||||
|           cairo_rectangle_int_t *clip) | ||||
| { | ||||
|   ClutterActor *self = CLUTTER_ACTOR (stex); | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   ClutterActorBox allocation; | ||||
|   float scale_x; | ||||
|   float scale_y; | ||||
|  | ||||
|   /* NB: clutter_actor_queue_redraw_with_clip expects a box in the actor's | ||||
|    * coordinate space so we need to convert from surface coordinates to | ||||
|    * actor coordinates... | ||||
|    */ | ||||
|  | ||||
|   /* Calling clutter_actor_get_allocation_box() is enormously expensive | ||||
|    * if the actor has an out-of-date allocation, since it triggers | ||||
|    * a full redraw. clutter_actor_queue_redraw_with_clip() would redraw | ||||
|    * the whole stage anyways in that case, so just go ahead and do | ||||
|    * it here. | ||||
|    */ | ||||
|   if (!clutter_actor_has_allocation (self)) | ||||
|     return FALSE; | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->tex_width == 0 || priv->tex_height == 0) | ||||
|     return FALSE; | ||||
|  | ||||
|   clutter_actor_get_allocation_box (self, &allocation); | ||||
|  | ||||
|   scale_x = (allocation.x2 - allocation.x1) / priv->tex_width; | ||||
|   scale_y = (allocation.y2 - allocation.y1) / priv->tex_height; | ||||
|  | ||||
|   clip->x = x * scale_x; | ||||
|   clip->y = y * scale_y; | ||||
|   clip->width = width * scale_x; | ||||
|   clip->height = height * scale_y; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_update_area: | ||||
|  * @stex: #MetaShapedTexture | ||||
|  * @x: the x coordinate of the damaged area | ||||
|  * @y: the y coordinate of the damaged area | ||||
|  * @width: the width of the damaged area | ||||
|  * @height: the height of the damaged area | ||||
|  * @unobscured_region: The unobscured region of the window or %NULL if | ||||
|  * there is no valid one (like when the actor is transformed or | ||||
|  * has a mapped clone) | ||||
|  * | ||||
|  * Repairs the damaged area indicated by @x, @y, @width and @height | ||||
|  * and queues a redraw for the intersection @visibible_region and | ||||
|  * the damage area. If @visibible_region is %NULL a redraw will always | ||||
|  * get queued. | ||||
|  * | ||||
|  * Return value: Whether a redraw have been queued or not | ||||
|  */ | ||||
| gboolean | ||||
| meta_shaped_texture_update_area (MetaShapedTexture *stex, | ||||
| 				 int                x, | ||||
| 				 int                y, | ||||
| 				 int                width, | ||||
| 				 int                height) | ||||
| 				 int                height, | ||||
| 				 cairo_region_t    *unobscured_region) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   const cairo_rectangle_int_t clip = { x, y, width, height }; | ||||
|   cairo_rectangle_int_t clip; | ||||
|   gboolean has_clip; | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->texture == NULL) | ||||
|     return; | ||||
|     return FALSE; | ||||
|  | ||||
|   cogl_texture_pixmap_x11_update_area (priv->texture, | ||||
|                                        x, y, width, height); | ||||
|   switch (priv->type) | ||||
|     { | ||||
|     case META_SHAPED_TEXTURE_TYPE_X11_PIXMAP: | ||||
|       cogl_texture_pixmap_x11_update_area (COGL_TEXTURE_PIXMAP_X11 (priv->texture), | ||||
|                                            x, y, width, height); | ||||
|       break; | ||||
|     case META_SHAPED_TEXTURE_TYPE_WAYLAND_SURFACE: | ||||
|       wayland_surface_update_area (stex, x, y, width, height); | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   meta_texture_tower_update_area (priv->paint_tower, x, y, width, height); | ||||
|  | ||||
|   clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &clip); | ||||
| } | ||||
|   has_clip = get_clip (stex, x, y, width, height, &clip); | ||||
|  | ||||
| static void | ||||
| set_cogl_texture (MetaShapedTexture    *stex, | ||||
|                   CoglTexturePixmapX11 *cogl_tex) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   guint width, height; | ||||
|  | ||||
|   g_return_if_fail (META_IS_SHAPED_TEXTURE (stex)); | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->texture != NULL) | ||||
|     cogl_object_unref (priv->texture); | ||||
|  | ||||
|   priv->texture = cogl_tex; | ||||
|  | ||||
|   if (priv->pipeline != NULL) | ||||
|     cogl_pipeline_set_layer_texture (priv->pipeline, 0, COGL_TEXTURE (cogl_tex)); | ||||
|  | ||||
|   if (priv->pipeline_unshaped != NULL) | ||||
|     cogl_pipeline_set_layer_texture (priv->pipeline_unshaped, 0, COGL_TEXTURE (cogl_tex)); | ||||
|  | ||||
|   if (cogl_tex != NULL) | ||||
|   if (unobscured_region) | ||||
|     { | ||||
|       width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex)); | ||||
|       height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex)); | ||||
|       cairo_region_t *intersection; | ||||
|  | ||||
|       if (width != priv->tex_width || | ||||
|           height != priv->tex_height) | ||||
|       if (cairo_region_is_empty (unobscured_region)) | ||||
|         return FALSE; | ||||
|  | ||||
|       intersection = cairo_region_copy (unobscured_region); | ||||
|       if (has_clip) | ||||
| 	cairo_region_intersect_rectangle (intersection, &clip); | ||||
|  | ||||
|       if (!cairo_region_is_empty (intersection)) | ||||
|         { | ||||
|           priv->tex_width = width; | ||||
|           priv->tex_height = height; | ||||
|           cairo_rectangle_int_t damage_rect; | ||||
|           cairo_region_get_extents (intersection, &damage_rect); | ||||
|           clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &damage_rect); | ||||
|           cairo_region_destroy (intersection); | ||||
|  | ||||
|           clutter_actor_queue_relayout (CLUTTER_ACTOR (stex)); | ||||
|           return TRUE; | ||||
|         } | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       /* size changed to 0 going to an inavlid texture */ | ||||
|       priv->tex_width = 0; | ||||
|       priv->tex_height = 0; | ||||
|       clutter_actor_queue_relayout (CLUTTER_ACTOR (stex)); | ||||
|  | ||||
|       cairo_region_destroy (intersection); | ||||
|  | ||||
|       return FALSE; | ||||
|     } | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stex)); | ||||
|   if (has_clip) | ||||
|     clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stex), &clip); | ||||
|   else | ||||
|     clutter_actor_queue_redraw (CLUTTER_ACTOR (stex)); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -499,16 +836,18 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex, | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->pixmap == pixmap) | ||||
|   if (priv->x11.pixmap == pixmap) | ||||
|     return; | ||||
|  | ||||
|   priv->pixmap = pixmap; | ||||
|   priv->x11.pixmap = pixmap; | ||||
|  | ||||
|   if (pixmap != None) | ||||
|     { | ||||
|       CoglContext *ctx = | ||||
|         clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|       set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL)); | ||||
|       CoglTexture *texture = | ||||
|         COGL_TEXTURE (cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL)); | ||||
|       set_cogl_texture (stex, texture); | ||||
|     } | ||||
|   else | ||||
|     set_cogl_texture (stex, NULL); | ||||
| @@ -518,6 +857,33 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex, | ||||
|                                          COGL_TEXTURE (priv->texture)); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_shaped_texture_attach_wayland_buffer (MetaShapedTexture  *stex, | ||||
|                                            MetaWaylandBuffer  *buffer) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|  | ||||
|   g_return_if_fail (META_IS_SHAPED_TEXTURE (stex)); | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   /* TODO: we should change this api to be something like | ||||
|    * meta_shaped_texture_notify_buffer_attach() since we now maintain | ||||
|    * a reference to the MetaWaylandSurface where we can access the | ||||
|    * buffer without it being explicitly passed as an argument. | ||||
|    */ | ||||
|   g_return_if_fail (priv->wayland.surface->buffer_ref.buffer == buffer); | ||||
|  | ||||
|   if (buffer) | ||||
|     set_cogl_texture (stex, buffer->texture); | ||||
|   else | ||||
|     set_cogl_texture (stex, NULL); | ||||
|  | ||||
|   if (priv->create_mipmaps) | ||||
|     meta_texture_tower_set_base_texture (priv->paint_tower, | ||||
|                                          COGL_TEXTURE (priv->texture)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_get_texture: | ||||
|  * @stex: The #MetaShapedTexture | ||||
| @@ -531,11 +897,46 @@ meta_shaped_texture_get_texture (MetaShapedTexture *stex) | ||||
|   return COGL_TEXTURE (stex->priv->texture); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_set_input_shape_region: | ||||
|  * @stex: a #MetaShapedTexture | ||||
|  * @shape_region: the region of the texture that should respond to | ||||
|  *    input. | ||||
|  * | ||||
|  * Determines what region of the texture should accept input. For | ||||
|  * X based windows this is defined by the ShapeInput region of the | ||||
|  * window. | ||||
|  */ | ||||
| void | ||||
| meta_shaped_texture_set_input_shape_region (MetaShapedTexture *stex, | ||||
|                                             cairo_region_t    *shape_region) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|  | ||||
|   g_return_if_fail (META_IS_SHAPED_TEXTURE (stex)); | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->input_shape_region != NULL) | ||||
|     { | ||||
|       cairo_region_destroy (priv->input_shape_region); | ||||
|       priv->input_shape_region = NULL; | ||||
|     } | ||||
|  | ||||
|   if (shape_region != NULL) | ||||
|     { | ||||
|       cairo_region_reference (shape_region); | ||||
|       priv->input_shape_region = shape_region; | ||||
|     } | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stex)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_set_clip_region: | ||||
|  * @stex: a #MetaShapedTexture | ||||
|  * @clip_region: (transfer full): the region of the texture that | ||||
|  *   is visible and should be painted. | ||||
|  * @clip_region: the region of the texture that is visible and | ||||
|  *   should be painted. | ||||
|  * | ||||
|  * Provides a hint to the texture about what areas of the texture | ||||
|  * are not completely obscured and thus need to be painted. This | ||||
| @@ -556,10 +957,7 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex, | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->clip_region) | ||||
|     { | ||||
|       cairo_region_destroy (priv->clip_region); | ||||
|       priv->clip_region = NULL; | ||||
|     } | ||||
|     cairo_region_destroy (priv->clip_region); | ||||
|  | ||||
|   if (clip_region) | ||||
|     priv->clip_region = cairo_region_copy (clip_region); | ||||
| @@ -567,6 +965,36 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex, | ||||
|     priv->clip_region = NULL; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_set_opaque_region: | ||||
|  * @stex: a #MetaShapedTexture | ||||
|  * @opaque_region: (transfer full): the region of the texture that | ||||
|  *   can have blending turned off. | ||||
|  * | ||||
|  * As most windows have a large portion that does not require blending, | ||||
|  * we can easily turn off blending if we know the areas that do not | ||||
|  * require blending. This sets the region where we will not blend for | ||||
|  * optimization purposes. | ||||
|  */ | ||||
| void | ||||
| meta_shaped_texture_set_opaque_region (MetaShapedTexture *stex, | ||||
|                                        cairo_region_t    *opaque_region) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|  | ||||
|   g_return_if_fail (META_IS_SHAPED_TEXTURE (stex)); | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->opaque_region) | ||||
|     cairo_region_destroy (priv->opaque_region); | ||||
|  | ||||
|   if (opaque_region) | ||||
|     priv->opaque_region = cairo_region_reference (opaque_region); | ||||
|   else | ||||
|     priv->opaque_region = NULL; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_shaped_texture_get_image: | ||||
|  * @stex: A #MetaShapedTexture | ||||
|   | ||||
| @@ -5,6 +5,9 @@ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <wayland-server.h> | ||||
| #include <meta-wayland-private.h> | ||||
|  | ||||
| #include <X11/extensions/Xdamage.h> | ||||
| #include <meta/compositor-mutter.h> | ||||
|  | ||||
| @@ -24,8 +27,18 @@ void meta_window_actor_unmaximize (MetaWindowActor *self, | ||||
|                                    MetaRectangle   *old_rect, | ||||
|                                    MetaRectangle   *new_rect); | ||||
|  | ||||
| void meta_window_actor_process_damage (MetaWindowActor    *self, | ||||
|                                        XDamageNotifyEvent *event); | ||||
| void meta_window_actor_process_x11_damage (MetaWindowActor    *self, | ||||
|                                            XDamageNotifyEvent *event); | ||||
|  | ||||
| void meta_window_actor_process_wayland_damage (MetaWindowActor *self, | ||||
|                                                int              x, | ||||
|                                                int              y, | ||||
|                                                int              width, | ||||
|                                                int              height); | ||||
| void meta_window_actor_set_wayland_surface    (MetaWindowActor    *self, | ||||
|                                                MetaWaylandSurface *surface); | ||||
| void meta_window_actor_attach_wayland_buffer  (MetaWindowActor   *self, | ||||
|                                                MetaWaylandBuffer *buffer); | ||||
|  | ||||
| void meta_window_actor_pre_paint      (MetaWindowActor    *self); | ||||
| void meta_window_actor_post_paint     (MetaWindowActor    *self); | ||||
| @@ -57,11 +70,14 @@ void     meta_window_actor_queue_frame_drawn   (MetaWindowActor *self, | ||||
|  | ||||
| cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self); | ||||
|  | ||||
| void meta_window_actor_set_visible_region         (MetaWindowActor *self, | ||||
|                                                    cairo_region_t  *visible_region); | ||||
| void meta_window_actor_set_visible_region_beneath (MetaWindowActor *self, | ||||
|                                                    cairo_region_t  *beneath_region); | ||||
| void meta_window_actor_reset_visible_regions      (MetaWindowActor *self); | ||||
| void meta_window_actor_set_clip_region         (MetaWindowActor *self, | ||||
|                                                 cairo_region_t  *clip_region); | ||||
| void meta_window_actor_set_clip_region_beneath (MetaWindowActor *self, | ||||
|                                                 cairo_region_t  *beneath_region); | ||||
| void meta_window_actor_reset_clip_regions      (MetaWindowActor *self); | ||||
|  | ||||
| void meta_window_actor_set_unobscured_region      (MetaWindowActor *self, | ||||
|                                                    cairo_region_t  *unobscured_region); | ||||
|  | ||||
| void meta_window_actor_effect_completed (MetaWindowActor *actor, | ||||
|                                          gulong           event); | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -13,6 +13,7 @@ | ||||
| #include "meta-window-group.h" | ||||
| #include "meta-background-actor-private.h" | ||||
| #include "meta-background-group-private.h" | ||||
| #include "window-private.h" | ||||
|  | ||||
| struct _MetaWindowGroupClass | ||||
| { | ||||
| @@ -89,16 +90,30 @@ painting_untransformed (MetaWindowGroup *window_group, | ||||
| static void | ||||
| meta_window_group_paint (ClutterActor *actor) | ||||
| { | ||||
|   cairo_region_t *visible_region; | ||||
|   ClutterActor *stage; | ||||
|   cairo_rectangle_int_t visible_rect; | ||||
|   GList *children, *l; | ||||
|   cairo_region_t *clip_region; | ||||
|   cairo_region_t *unobscured_region; | ||||
|   ClutterActorIter iter; | ||||
|   ClutterActor *child; | ||||
|   cairo_rectangle_int_t visible_rect, clip_rect; | ||||
|   int paint_x_origin, paint_y_origin; | ||||
|   int actor_x_origin, actor_y_origin; | ||||
|   int paint_x_offset, paint_y_offset; | ||||
|  | ||||
|   MetaWindowGroup *window_group = META_WINDOW_GROUP (actor); | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen); | ||||
|   ClutterActor *stage = clutter_actor_get_stage (actor); | ||||
|  | ||||
|   /* Start off by treating all windows as completely unobscured, so damage anywhere | ||||
|    * in a window queues redraws, but confine it more below. */ | ||||
|   clutter_actor_iter_init (&iter, actor); | ||||
|   while (clutter_actor_iter_next (&iter, &child)) | ||||
|     { | ||||
|       if (META_IS_WINDOW_ACTOR (child)) | ||||
|         { | ||||
|           MetaWindowActor *window_actor = META_WINDOW_ACTOR (child); | ||||
|           meta_window_actor_set_unobscured_region (window_actor, NULL); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   /* Normally we expect an actor to be drawn at it's position on the screen. | ||||
|    * However, if we're inside the paint of a ClutterClone, that won't be the | ||||
| @@ -123,12 +138,11 @@ meta_window_group_paint (ClutterActor *actor) | ||||
|   paint_x_offset = paint_x_origin - actor_x_origin; | ||||
|   paint_y_offset = paint_y_origin - actor_y_origin; | ||||
|  | ||||
|   /* We walk the list from top to bottom (opposite of painting order), | ||||
|    * and subtract the opaque area of each window out of the visible | ||||
|    * region that we pass to the windows below. | ||||
|    */ | ||||
|   children = clutter_actor_get_children (actor); | ||||
|   children = g_list_reverse (children); | ||||
|   visible_rect.x = visible_rect.y = 0; | ||||
|   visible_rect.width = clutter_actor_get_width (CLUTTER_ACTOR (stage)); | ||||
|   visible_rect.height = clutter_actor_get_height (CLUTTER_ACTOR (stage)); | ||||
|  | ||||
|   unobscured_region = cairo_region_create_rectangle (&visible_rect); | ||||
|  | ||||
|   /* Get the clipped redraw bounds from Clutter so that we can avoid | ||||
|    * painting shadows on windows that don't need to be painted in this | ||||
| @@ -136,27 +150,38 @@ meta_window_group_paint (ClutterActor *actor) | ||||
|    * sizes, we could intersect this with an accurate union of the | ||||
|    * monitors to avoid painting shadows that are visible only in the | ||||
|    * holes. */ | ||||
|   stage = clutter_actor_get_stage (actor); | ||||
|   clutter_stage_get_redraw_clip_bounds (CLUTTER_STAGE (stage), | ||||
|                                         &visible_rect); | ||||
|                                         &clip_rect); | ||||
|  | ||||
|   visible_region = cairo_region_create_rectangle (&visible_rect); | ||||
|   clip_region = cairo_region_create_rectangle (&clip_rect); | ||||
|  | ||||
|   if (info->unredirected_window != NULL) | ||||
|   if (!meta_is_wayland_compositor ()) | ||||
|     { | ||||
|       cairo_rectangle_int_t unredirected_rect; | ||||
|       MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window); | ||||
|       info = meta_screen_get_compositor_data (window_group->screen); | ||||
|       if (info->unredirected_window != NULL) | ||||
|         { | ||||
|           cairo_rectangle_int_t unredirected_rect; | ||||
|           MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window); | ||||
|  | ||||
|       meta_window_get_outer_rect (window, (MetaRectangle *)&unredirected_rect); | ||||
|       cairo_region_subtract_rectangle (visible_region, &unredirected_rect); | ||||
|           meta_window_get_outer_rect (window, (MetaRectangle *)&unredirected_rect); | ||||
|           cairo_region_subtract_rectangle (unobscured_region, &unredirected_rect); | ||||
|           cairo_region_subtract_rectangle (clip_region, &unredirected_rect); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   for (l = children; l; l = l->next) | ||||
|   /* We walk the list from top to bottom (opposite of painting order), | ||||
|    * and subtract the opaque area of each window out of the visible | ||||
|    * region that we pass to the windows below. | ||||
|    */ | ||||
|   clutter_actor_iter_init (&iter, actor); | ||||
|   while (clutter_actor_iter_prev (&iter, &child)) | ||||
|     { | ||||
|       if (!CLUTTER_ACTOR_IS_VISIBLE (l->data)) | ||||
|       if (!CLUTTER_ACTOR_IS_VISIBLE (child)) | ||||
|         continue; | ||||
|  | ||||
|       if (l->data == info->unredirected_window) | ||||
|       if (!meta_is_wayland_compositor () && | ||||
|           info->unredirected_window != NULL && | ||||
|           child == CLUTTER_ACTOR (info->unredirected_window)) | ||||
|         continue; | ||||
|  | ||||
|       /* If an actor has effects applied, then that can change the area | ||||
| @@ -175,12 +200,12 @@ meta_window_group_paint (ClutterActor *actor) | ||||
|        * as well for the same reason, but omitted for simplicity in the | ||||
|        * hopes that no-one will do that. | ||||
|        */ | ||||
|       if (clutter_actor_has_effects (l->data)) | ||||
|       if (clutter_actor_has_effects (child)) | ||||
|         continue; | ||||
|  | ||||
|       if (META_IS_WINDOW_ACTOR (l->data)) | ||||
|       if (META_IS_WINDOW_ACTOR (child)) | ||||
|         { | ||||
|           MetaWindowActor *window_actor = l->data; | ||||
|           MetaWindowActor *window_actor = META_WINDOW_ACTOR (child); | ||||
|           int x, y; | ||||
|  | ||||
|           if (!meta_actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y)) | ||||
| @@ -189,65 +214,72 @@ meta_window_group_paint (ClutterActor *actor) | ||||
|           x += paint_x_offset; | ||||
|           y += paint_y_offset; | ||||
|  | ||||
|           /* Temporarily move to the coordinate system of the actor */ | ||||
|           cairo_region_translate (visible_region, - x, - y); | ||||
|  | ||||
|           meta_window_actor_set_visible_region (window_actor, visible_region); | ||||
|           /* Temporarily move to the coordinate system of the actor */ | ||||
|           cairo_region_translate (unobscured_region, - x, - y); | ||||
|           cairo_region_translate (clip_region, - x, - y); | ||||
|  | ||||
|           meta_window_actor_set_unobscured_region (window_actor, unobscured_region); | ||||
|           meta_window_actor_set_clip_region (window_actor, clip_region); | ||||
|  | ||||
|           if (clutter_actor_get_paint_opacity (CLUTTER_ACTOR (window_actor)) == 0xff) | ||||
|             { | ||||
|               cairo_region_t *obscured_region = meta_window_actor_get_obscured_region (window_actor); | ||||
|               if (obscured_region) | ||||
|                 cairo_region_subtract (visible_region, obscured_region); | ||||
|                 { | ||||
|                   cairo_region_subtract (unobscured_region, obscured_region); | ||||
|                   cairo_region_subtract (clip_region, obscured_region); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|           meta_window_actor_set_visible_region_beneath (window_actor, visible_region); | ||||
|           cairo_region_translate (visible_region, x, y); | ||||
|           meta_window_actor_set_clip_region_beneath (window_actor, clip_region); | ||||
|  | ||||
|           cairo_region_translate (unobscured_region, x, y); | ||||
|           cairo_region_translate (clip_region, x, y); | ||||
|         } | ||||
|       else if (META_IS_BACKGROUND_ACTOR (l->data) || | ||||
|                META_IS_BACKGROUND_GROUP (l->data)) | ||||
|       else if (META_IS_BACKGROUND_ACTOR (child) || | ||||
|                META_IS_BACKGROUND_GROUP (child)) | ||||
|         { | ||||
|           ClutterActor *background_actor = l->data; | ||||
|           int x, y; | ||||
|  | ||||
|           if (!meta_actor_is_untransformed (CLUTTER_ACTOR (background_actor), &x, &y)) | ||||
|           if (!meta_actor_is_untransformed (child, &x, &y)) | ||||
|             continue; | ||||
|  | ||||
|           x += paint_x_offset; | ||||
|           y += paint_y_offset; | ||||
|  | ||||
|           cairo_region_translate (visible_region, - x, - y); | ||||
|           cairo_region_translate (clip_region, - x, - y); | ||||
|  | ||||
|           if (META_IS_BACKGROUND_GROUP (background_actor)) | ||||
|             meta_background_group_set_visible_region (META_BACKGROUND_GROUP (background_actor), visible_region); | ||||
|           if (META_IS_BACKGROUND_GROUP (child)) | ||||
|             meta_background_group_set_clip_region (META_BACKGROUND_GROUP (child), clip_region); | ||||
|           else | ||||
|             meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (background_actor), visible_region); | ||||
|           cairo_region_translate (visible_region, x, y); | ||||
|             meta_background_actor_set_clip_region (META_BACKGROUND_ACTOR (child), clip_region); | ||||
|           cairo_region_translate (clip_region, x, y); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   cairo_region_destroy (visible_region); | ||||
|   cairo_region_destroy (unobscured_region); | ||||
|   cairo_region_destroy (clip_region); | ||||
|  | ||||
|   CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor); | ||||
|  | ||||
|   /* Now that we are done painting, unset the visible regions (they will | ||||
|    * mess up painting clones of our actors) | ||||
|    */ | ||||
|   for (l = children; l; l = l->next) | ||||
|   clutter_actor_iter_init (&iter, actor); | ||||
|   while (clutter_actor_iter_next (&iter, &child)) | ||||
|     { | ||||
|       if (META_IS_WINDOW_ACTOR (l->data)) | ||||
|       if (META_IS_WINDOW_ACTOR (child)) | ||||
|         { | ||||
|           MetaWindowActor *window_actor = l->data; | ||||
|           meta_window_actor_reset_visible_regions (window_actor); | ||||
|           MetaWindowActor *window_actor = META_WINDOW_ACTOR (child); | ||||
|           meta_window_actor_reset_clip_regions (window_actor); | ||||
|         } | ||||
|       else if (META_IS_BACKGROUND_ACTOR (l->data)) | ||||
|       else if (META_IS_BACKGROUND_ACTOR (child)) | ||||
|         { | ||||
|           MetaBackgroundActor *background_actor = l->data; | ||||
|           meta_background_actor_set_visible_region (background_actor, NULL); | ||||
|           MetaBackgroundActor *background_actor = META_BACKGROUND_ACTOR (child); | ||||
|           meta_background_actor_set_clip_region (background_actor, NULL); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   g_list_free (children); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
|   | ||||
| @@ -10,13 +10,15 @@ | ||||
| /** | ||||
|  * MetaWindowGroup: | ||||
|  * | ||||
|  * This class is a subclass of ClutterGroup with special handling for | ||||
|  * MetaWindowActor when painting the group. When we are painting a stack | ||||
|  * of 5-10 maximized windows, the standard bottom-to-top method of | ||||
|  * drawing every actor results in a tremendous amount of overdraw | ||||
|  * and can easily max out the available memory bandwidth on a low-end | ||||
|  * graphics chipset. It's even worse if window textures are being accessed | ||||
|  * over the AGP bus. | ||||
|  * This class is a subclass of ClutterActor with special handling for | ||||
|  * MetaWindowActor/MetaBackgroundActor/MetaBackgroundGroup when painting | ||||
|  * children. | ||||
|  * | ||||
|  * When we are painting a stack of 5-10 maximized windows, the | ||||
|  * standard bottom-to-top method of drawing every actor results in a | ||||
|  * tremendous amount of overdraw and can easily max out the available | ||||
|  * memory bandwidth on a low-end graphics chipset. It's even worse if | ||||
|  * window textures are being accessed over the AGP bus. | ||||
|  * | ||||
|  * The basic technique applied here is to do a pre-pass before painting | ||||
|  * where we walk window from top to bottom and compute the visible area | ||||
|   | ||||
| @@ -21,13 +21,14 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #include <meta/meta-plugin.h> | ||||
| #include <meta/window.h> | ||||
| #include <meta/meta-background-group.h> | ||||
| #include <meta/meta-background-actor.h> | ||||
| #include <meta/util.h> | ||||
|  | ||||
| #include <libintl.h> | ||||
| #define _(x) dgettext (GETTEXT_PACKAGE, x) | ||||
| #define N_(x) x | ||||
| #include <glib/gi18n-lib.h> | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| #include <gmodule.h> | ||||
| @@ -98,6 +99,8 @@ static void kill_window_effects   (MetaPlugin      *plugin, | ||||
|                                    MetaWindowActor *actor); | ||||
| static void kill_switch_workspace (MetaPlugin      *plugin); | ||||
|  | ||||
| static void confirm_display_change (MetaPlugin *plugin); | ||||
|  | ||||
| static const MetaPluginInfo * plugin_info (MetaPlugin *plugin); | ||||
|  | ||||
| META_PLUGIN_DECLARE(MetaDefaultPlugin, meta_default_plugin); | ||||
| @@ -113,6 +116,8 @@ struct _MetaDefaultPluginPrivate | ||||
|   ClutterActor          *desktop1; | ||||
|   ClutterActor          *desktop2; | ||||
|  | ||||
|   ClutterActor          *background_group; | ||||
|  | ||||
|   MetaPluginInfo         info; | ||||
| }; | ||||
|  | ||||
| @@ -203,6 +208,7 @@ meta_default_plugin_class_init (MetaDefaultPluginClass *klass) | ||||
|   plugin_class->plugin_info      = plugin_info; | ||||
|   plugin_class->kill_window_effects   = kill_window_effects; | ||||
|   plugin_class->kill_switch_workspace = kill_switch_workspace; | ||||
|   plugin_class->confirm_display_change = confirm_display_change; | ||||
|  | ||||
|   g_type_class_add_private (gobject_class, sizeof (MetaDefaultPluginPrivate)); | ||||
| } | ||||
| @@ -299,9 +305,58 @@ show_stage (MetaPlugin *plugin) | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_monitors_changed (MetaScreen *screen, | ||||
|                      MetaPlugin *plugin) | ||||
| { | ||||
|   MetaDefaultPlugin *self = META_DEFAULT_PLUGIN (plugin); | ||||
|   int i, n; | ||||
|  | ||||
|   clutter_actor_destroy_all_children (self->priv->background_group); | ||||
|  | ||||
|   n = meta_screen_get_n_monitors (screen); | ||||
|   for (i = 0; i < n; i++) | ||||
|     { | ||||
|       MetaRectangle rect; | ||||
|       ClutterActor *background; | ||||
|       ClutterColor color; | ||||
|  | ||||
|       meta_screen_get_monitor_geometry (screen, i, &rect); | ||||
|  | ||||
|       background = meta_background_actor_new (); | ||||
|  | ||||
|       clutter_actor_set_position (background, rect.x, rect.y); | ||||
|       clutter_actor_set_size (background, rect.width, rect.height); | ||||
|  | ||||
|       /* Don't use rand() here, mesa calls srand() internally when | ||||
|          parsing the driconf XML, but it's nice if the colors are | ||||
|          reproducible. | ||||
|       */ | ||||
|       clutter_color_init (&color, | ||||
|                           g_random_int () % 255, | ||||
|                           g_random_int () % 255, | ||||
|                           g_random_int () % 255, | ||||
|                           255); | ||||
|       clutter_actor_set_background_color (background, &color); | ||||
|  | ||||
|       clutter_actor_add_child (self->priv->background_group, background); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| start (MetaPlugin *plugin) | ||||
| { | ||||
|   MetaDefaultPlugin *self = META_DEFAULT_PLUGIN (plugin); | ||||
|   MetaScreen *screen = meta_plugin_get_screen (plugin); | ||||
|  | ||||
|   self->priv->background_group = meta_background_group_new (); | ||||
|   clutter_actor_insert_child_below (meta_get_window_group_for_screen (screen), | ||||
|                                     self->priv->background_group, NULL); | ||||
|  | ||||
|   g_signal_connect (screen, "monitors-changed", | ||||
|                     G_CALLBACK (on_monitors_changed), plugin); | ||||
|   on_monitors_changed (screen, plugin); | ||||
|  | ||||
|   meta_later_add (META_LATER_BEFORE_REDRAW, | ||||
|                   (GSourceFunc) show_stage, | ||||
|                   plugin, | ||||
| @@ -782,3 +837,33 @@ plugin_info (MetaPlugin *plugin) | ||||
|  | ||||
|   return &priv->info; | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_dialog_closed (GPid     pid, | ||||
|                   gint     status, | ||||
|                   gpointer user_data) | ||||
| { | ||||
|   MetaPlugin *plugin = user_data; | ||||
|   gboolean ok; | ||||
|  | ||||
|   ok = g_spawn_check_exit_status (status, NULL); | ||||
|   meta_plugin_complete_display_change (plugin, ok); | ||||
| } | ||||
|  | ||||
| static void | ||||
| confirm_display_change (MetaPlugin *plugin) | ||||
| { | ||||
|   GPid pid; | ||||
|  | ||||
|   pid = meta_show_dialog ("--question", | ||||
|                           "Does the display look OK?", | ||||
|                           "20", | ||||
|                           NULL, | ||||
|                           "_Keep This Configuration", | ||||
|                           "_Restore Previous Configuration", | ||||
|                           "preferences-desktop-display", | ||||
|                           0, | ||||
|                           NULL, NULL); | ||||
|  | ||||
|   g_child_watch_add (pid, on_dialog_closed, plugin); | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,11 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:barrier | ||||
|  * @Title: MetaBarrier | ||||
|  * @Short_Description: Pointer barriers | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #include <glib-object.h> | ||||
| @@ -53,6 +59,8 @@ struct _MetaBarrierPrivate | ||||
|   PointerBarrier xbarrier; | ||||
| }; | ||||
|  | ||||
| static void meta_barrier_event_unref (MetaBarrierEvent *event); | ||||
|  | ||||
| static void | ||||
| meta_barrier_get_property (GObject    *object, | ||||
|                            guint       prop_id, | ||||
| @@ -353,6 +361,8 @@ meta_barrier_fire_event (MetaBarrier    *barrier, | ||||
|     default: | ||||
|       g_assert_not_reached (); | ||||
|     } | ||||
|  | ||||
|   meta_barrier_event_unref (event); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
|   | ||||
| @@ -22,8 +22,8 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:Bell | ||||
| /* | ||||
|  * SECTION:bell | ||||
|  * @short_description: Ring the bell or flash the screen | ||||
|  * | ||||
|  * Sometimes, X programs "ring the bell", whatever that means. Mutter lets | ||||
| @@ -52,7 +52,10 @@ | ||||
| #include <config.h> | ||||
| #include "bell.h" | ||||
| #include "screen-private.h" | ||||
| #include "window-private.h" | ||||
| #include "util-private.h" | ||||
| #include <meta/prefs.h> | ||||
| #include <meta/compositor.h> | ||||
| #ifdef HAVE_LIBCANBERRA | ||||
| #include <canberra-gtk.h> | ||||
| #endif | ||||
|   | ||||
| @@ -28,30 +28,35 @@ | ||||
|  | ||||
| #ifdef HAVE_XKB | ||||
| /** | ||||
|  * meta_bell_notify: | ||||
|  * @display: The display the bell event came in on | ||||
|  * @xkb_ev: The bell event we just received  | ||||
|  * | ||||
|  * Gives the user some kind of visual bell; in fact, this is our response | ||||
|  * to any kind of bell request, but we set it up so that we only get | ||||
|  * notified about visual bells, and X deals with audible ones. | ||||
|  * | ||||
|  * If the configure script found we had no XKB, this does not exist. | ||||
|  * | ||||
|  * \param display  The display the bell event came in on | ||||
|  * \param xkb_ev   The bell event we just received | ||||
|  */ | ||||
| void meta_bell_notify (MetaDisplay *display, XkbAnyEvent *xkb_ev); | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * meta_bell_set_audible: | ||||
|  * @display: The display we're configuring | ||||
|  * @audible: True for an audible bell, false for a visual bell | ||||
|  * | ||||
|  * Turns the bell to audible or visual. This tells X what to do, but | ||||
|  * not Mutter; you will need to set the "visual bell" pref for that. | ||||
|  * | ||||
|  * If the configure script found we had no XKB, this is a no-op. | ||||
|  * | ||||
|  * \param display  The display we're configuring | ||||
|  * \param audible  True for an audible bell, false for a visual bell | ||||
|  */ | ||||
| void meta_bell_set_audible (MetaDisplay *display, gboolean audible); | ||||
|  | ||||
| /** | ||||
|  * meta_bell_init: | ||||
|  * @display: The display which is opening | ||||
|  * | ||||
|  * Initialises the bell subsystem. This involves intialising | ||||
|  * XKB (which, despite being a keyboard extension, is the | ||||
|  * place to look for bell notifications), then asking it | ||||
| @@ -64,8 +69,6 @@ void meta_bell_set_audible (MetaDisplay *display, gboolean audible); | ||||
|  * we will have HAVE_XKB undefined, which will cause this | ||||
|  * function to be a no-op. | ||||
|  * | ||||
|  * \param display  The display which is opening | ||||
|  * | ||||
|  * \bug There is a line of code that's never run that tells | ||||
|  * XKB to reset the bell status after we quit. Bill H said | ||||
|  * (<http://bugzilla.gnome.org/show_bug.cgi?id=99886#c12>) | ||||
| @@ -75,9 +78,10 @@ void meta_bell_set_audible (MetaDisplay *display, gboolean audible); | ||||
| gboolean meta_bell_init (MetaDisplay *display); | ||||
|  | ||||
| /** | ||||
|  * Shuts down the bell subsystem. | ||||
|  * meta_bell_shutdown: | ||||
|  * @display: The display which is closing | ||||
|  * | ||||
|  * \param display  The display which is closing | ||||
|  * Shuts down the bell subsystem. | ||||
|  * | ||||
|  * \bug This is never called! If we had XkbSetAutoResetControls | ||||
|  * enabled in meta_bell_init(), this wouldn't be a problem, but | ||||
| @@ -86,11 +90,12 @@ gboolean meta_bell_init (MetaDisplay *display); | ||||
| void meta_bell_shutdown (MetaDisplay *display); | ||||
|  | ||||
| /** | ||||
|  * meta_bell_notify_frame_destroy: | ||||
|  * @frame: The frame which is being destroyed | ||||
|  * | ||||
|  * Deals with a frame being destroyed. This is important because if we're | ||||
|  * using a visual bell, we might be flashing the edges of the frame, and | ||||
|  * so we'd have a timeout function waiting ready to un-flash them. If the | ||||
|  * frame's going away, we can tell the timeout not to bother. | ||||
|  * | ||||
|  * \param frame  The frame which is being destroyed | ||||
|  */ | ||||
| void meta_bell_notify_frame_destroy (MetaFrame *frame); | ||||
|   | ||||
| @@ -1,6 +1,10 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* Simple box operations */ | ||||
| /** | ||||
|  * SECTION:boxes | ||||
|  * @Title: MetaRectangle | ||||
|  * @Short_Description: Simple box operations | ||||
|  */ | ||||
|  | ||||
| /*  | ||||
|  * Copyright (C) 2005, 2006 Elijah Newren | ||||
|   | ||||
| @@ -35,7 +35,8 @@ typedef enum | ||||
|   META_DO_GRAVITY_ADJUST    = 1 << 1, | ||||
|   META_IS_USER_ACTION       = 1 << 2, | ||||
|   META_IS_MOVE_ACTION       = 1 << 3, | ||||
|   META_IS_RESIZE_ACTION     = 1 << 4 | ||||
|   META_IS_RESIZE_ACTION     = 1 << 4, | ||||
|   META_IS_WAYLAND_RESIZE    = 1 << 5 | ||||
| } MetaMoveResizeFlags; | ||||
|  | ||||
| void meta_window_constrain (MetaWindow          *window, | ||||
|   | ||||
| @@ -29,6 +29,7 @@ | ||||
| #include "workspace-private.h" | ||||
| #include <meta/prefs.h> | ||||
| #include <meta/errors.h> | ||||
| #include "util-private.h" | ||||
|  | ||||
| /* Looks up the MetaWindow representing the frame of the given X window. | ||||
|  * Used as a helper function by a bunch of the functions below. | ||||
| @@ -89,7 +90,7 @@ meta_core_get (Display *xdisplay, | ||||
|   if (request != META_CORE_WINDOW_HAS_FRAME && | ||||
|       (window == NULL || window->frame == NULL)) { | ||||
|     meta_bug ("No such frame window 0x%lx!\n", xwindow); | ||||
|     return; | ||||
|     goto out; | ||||
|   } | ||||
|  | ||||
|   while (request != META_CORE_GET_END) { | ||||
| @@ -99,7 +100,7 @@ meta_core_get (Display *xdisplay, | ||||
|     switch (request) { | ||||
|       case META_CORE_WINDOW_HAS_FRAME: | ||||
|         *((gboolean*)answer) = window != NULL && window->frame != NULL; | ||||
|         if (!*((gboolean*)answer)) return; /* see above */ | ||||
|         if (!*((gboolean*)answer)) goto out; /* see above */ | ||||
|         break;  | ||||
|       case META_CORE_GET_CLIENT_WIDTH: | ||||
|         *((gint*)answer) = window->rect.width; | ||||
| @@ -154,12 +155,13 @@ meta_core_get (Display *xdisplay, | ||||
|         break; | ||||
|  | ||||
|       default: | ||||
|         meta_warning(_("Unknown window information request: %d"), request); | ||||
|         meta_warning("Unknown window information request: %d\n", request); | ||||
|     } | ||||
|  | ||||
|     request = va_arg (args, MetaCoreGetType); | ||||
|   }  | ||||
|  | ||||
|  out: | ||||
|   va_end (args); | ||||
| } | ||||
|  | ||||
| @@ -269,6 +271,8 @@ meta_core_lower_beneath_grab_window (Display *xdisplay, | ||||
|   MetaDisplay *display; | ||||
|   MetaScreen *screen; | ||||
|   MetaWindow *grab_window; | ||||
|   MetaStackWindow stack_window; | ||||
|   MetaStackWindow stack_sibling; | ||||
|  | ||||
|   display = meta_display_for_x_display (xdisplay); | ||||
|   screen = meta_display_screen_for_xwindow (display, xwindow); | ||||
| @@ -281,9 +285,13 @@ meta_core_lower_beneath_grab_window (Display *xdisplay, | ||||
|   changes.sibling = grab_window->frame ? grab_window->frame->xwindow | ||||
|                                        : grab_window->xwindow; | ||||
|  | ||||
|   stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11; | ||||
|   stack_window.x11.xwindow = xwindow; | ||||
|   stack_sibling.any.type = META_WINDOW_CLIENT_TYPE_X11; | ||||
|   stack_sibling.x11.xwindow = changes.sibling; | ||||
|   meta_stack_tracker_record_lower_below (screen->stack_tracker, | ||||
|                                          xwindow, | ||||
|                                          changes.sibling, | ||||
|                                          &stack_window, | ||||
|                                          &stack_sibling, | ||||
|                                          XNextRequest (screen->display->xdisplay)); | ||||
|  | ||||
|   meta_error_trap_push (display); | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
| #define _XOPEN_SOURCE /* for kill() */ | ||||
|  | ||||
| #include <config.h> | ||||
| #include <meta/util.h> | ||||
| #include "util-private.h" | ||||
| #include "window-private.h" | ||||
| #include <meta/errors.h> | ||||
| #include <meta/workspace.h> | ||||
|   | ||||
| @@ -33,7 +33,6 @@ | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <X11/Xlib.h> | ||||
| #include "eventqueue.h" | ||||
| #include <meta/common.h> | ||||
| #include <meta/boxes.h> | ||||
| #include <meta/display.h> | ||||
| @@ -87,6 +86,14 @@ typedef enum { | ||||
|   META_TILE_MAXIMIZED | ||||
| } MetaTileMode; | ||||
|  | ||||
| typedef enum { | ||||
|   META_FOCUS_NONE = 0, | ||||
|   META_FOCUS_X_CLIENT = 1, | ||||
|   META_FOCUS_WAYLAND_CLIENT = 2, | ||||
|   META_FOCUS_NO_FOCUS_WINDOW = 3, | ||||
|   META_FOCUS_STAGE = 4 | ||||
| } MetaFocusType; | ||||
|  | ||||
| struct _MetaDisplay | ||||
| { | ||||
|   GObject parent_instance; | ||||
| @@ -104,19 +111,21 @@ struct _MetaDisplay | ||||
| #include <meta/atomnames.h> | ||||
| #undef item | ||||
|  | ||||
|   /* This is the actual window from focus events, | ||||
|    * not the one we last set | ||||
|   /* The window and serial of the most recent FocusIn event. */ | ||||
|   Window server_focus_window; | ||||
|   gulong server_focus_serial; | ||||
|  | ||||
|   /* Our best guess as to the "currently" focused window (that is, the | ||||
|    * window that we expect will be focused at the point when the X | ||||
|    * server processes our next request), and the serial of the request | ||||
|    * or event that caused this. | ||||
|    */ | ||||
|   MetaWindow *focus_window; | ||||
|  | ||||
|   /* window we are expecting a FocusIn event for or the current focus | ||||
|    * window if we are not expecting any FocusIn/FocusOut events; not | ||||
|    * perfect because applications can call XSetInputFocus directly. | ||||
|    * (It could also be messed up if a timestamp later than current | ||||
|    * time is sent to meta_display_set_input_focus_window, though that | ||||
|    * would be a programming error).  See bug 154598 for more info. | ||||
|    */ | ||||
|   MetaWindow *expected_focus_window; | ||||
|   /* For windows we've focused that don't necessarily have an X window, | ||||
|    * like the no_focus_window or the stage X window. */ | ||||
|   Window focus_xwindow; | ||||
|   gulong focus_serial; | ||||
|   MetaFocusType focus_type; | ||||
|  | ||||
|   /* last timestamp passed to XSetInputFocus */ | ||||
|   guint32 last_focus_time; | ||||
| @@ -142,10 +151,10 @@ struct _MetaDisplay | ||||
|    | ||||
|   /*< private-ish >*/ | ||||
|   guint error_trap_synced_at_last_pop : 1; | ||||
|   MetaEventQueue *events; | ||||
|   GSList *screens; | ||||
|   MetaScreen *active_screen; | ||||
|   GHashTable *xids; | ||||
|   GHashTable *wayland_windows; | ||||
|   int error_traps; | ||||
|   int (* error_trap_handler) (Display     *display, | ||||
|                               XErrorEvent *error);   | ||||
| @@ -221,9 +230,6 @@ struct _MetaDisplay | ||||
| #ifdef HAVE_XKB | ||||
|   int         xkb_base_event_type; | ||||
|   guint32     last_bell_time; | ||||
| #endif | ||||
| #ifdef HAVE_XSYNC | ||||
|   gint64      grab_sync_counter_wait_serial; | ||||
| #endif | ||||
|   int	      grab_resize_timeout_id; | ||||
|  | ||||
| @@ -244,6 +250,8 @@ struct _MetaDisplay | ||||
|   unsigned int meta_mask; | ||||
|   MetaKeyCombo overlay_key_combo; | ||||
|   gboolean overlay_key_only_pressed; | ||||
|   MetaKeyCombo *iso_next_group_combos; | ||||
|   int n_iso_next_group_combos; | ||||
|    | ||||
|   /* Monitor cache */ | ||||
|   unsigned int monitor_cache_invalidated : 1; | ||||
| @@ -373,6 +381,11 @@ void        meta_display_register_x_window   (MetaDisplay *display, | ||||
| void        meta_display_unregister_x_window (MetaDisplay *display, | ||||
|                                               Window       xwindow); | ||||
|  | ||||
| void        meta_display_register_wayland_window   (MetaDisplay *display, | ||||
|                                                     MetaWindow  *window); | ||||
| void        meta_display_unregister_wayland_window (MetaDisplay *display, | ||||
|                                                     MetaWindow  *window); | ||||
|  | ||||
| #ifdef HAVE_XSYNC | ||||
| MetaWindow* meta_display_lookup_sync_alarm     (MetaDisplay *display, | ||||
|                                                 XSyncAlarm   alarm); | ||||
| @@ -462,14 +475,25 @@ void meta_display_remove_autoraise_callback (MetaDisplay *display); | ||||
| void meta_display_overlay_key_activate (MetaDisplay *display); | ||||
| void meta_display_accelerator_activate (MetaDisplay *display, | ||||
|                                         guint        action, | ||||
|                                         guint        deviceid); | ||||
|                                         guint        deviceid, | ||||
|                                         guint        timestamp); | ||||
| gboolean meta_display_modifiers_accelerator_activate (MetaDisplay *display); | ||||
|  | ||||
| /* In above-tab-keycode.c */ | ||||
| guint meta_display_get_above_tab_keycode (MetaDisplay *display); | ||||
|  | ||||
| gboolean meta_display_handle_event (MetaDisplay *display, | ||||
|                                     XEvent      *event); | ||||
|  | ||||
| #ifdef HAVE_XI23 | ||||
| gboolean meta_display_process_barrier_event (MetaDisplay    *display, | ||||
|                                              XIBarrierEvent *event); | ||||
| #endif /* HAVE_XI23 */ | ||||
|  | ||||
| void meta_display_set_input_focus_xwindow (MetaDisplay   *display, | ||||
|                                            MetaScreen    *screen, | ||||
|                                            MetaFocusType  type, | ||||
|                                            Window         window, | ||||
|                                            guint32        timestamp); | ||||
|  | ||||
| #endif | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										539
									
								
								src/core/edid-parse.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										539
									
								
								src/core/edid-parse.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,539 @@ | ||||
| /* | ||||
|  * Copyright 2007 Red Hat, Inc. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
|  * to deal in the Software without restriction, including without limitation | ||||
|  * on the rights to use, copy, modify, merge, publish, distribute, sub | ||||
|  * license, and/or sell copies of the Software, and to permit persons to whom | ||||
|  * the Software is furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the next | ||||
|  * paragraph) shall be included in all copies or substantial portions of the | ||||
|  * Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL | ||||
|  * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||||
|  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||||
|  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* Author: Soren Sandmann <sandmann@redhat.com> */ | ||||
|  | ||||
| #include "edid.h" | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <math.h> | ||||
| #include <glib.h> | ||||
|  | ||||
| static int | ||||
| get_bit (int in, int bit) | ||||
| { | ||||
|   return (in & (1 << bit)) >> bit; | ||||
| } | ||||
|  | ||||
| static int | ||||
| get_bits (int in, int begin, int end) | ||||
| { | ||||
|   int mask = (1 << (end - begin + 1)) - 1; | ||||
|  | ||||
|   return (in >> begin) & mask; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_header (const uchar *edid) | ||||
| { | ||||
|   if (memcmp (edid, "\x00\xff\xff\xff\xff\xff\xff\x00", 8) == 0) | ||||
|     return TRUE; | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_vendor_and_product_identification (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int is_model_year; | ||||
|  | ||||
|   /* Manufacturer Code */ | ||||
|   info->manufacturer_code[0]  = get_bits (edid[0x08], 2, 6); | ||||
|   info->manufacturer_code[1]  = get_bits (edid[0x08], 0, 1) << 3; | ||||
|   info->manufacturer_code[1] |= get_bits (edid[0x09], 5, 7); | ||||
|   info->manufacturer_code[2]  = get_bits (edid[0x09], 0, 4); | ||||
|   info->manufacturer_code[3]  = '\0'; | ||||
|  | ||||
|   info->manufacturer_code[0] += 'A' - 1; | ||||
|   info->manufacturer_code[1] += 'A' - 1; | ||||
|   info->manufacturer_code[2] += 'A' - 1; | ||||
|  | ||||
|   /* Product Code */ | ||||
|   info->product_code = edid[0x0b] << 8 | edid[0x0a]; | ||||
|  | ||||
|   /* Serial Number */ | ||||
|   info->serial_number = | ||||
|     edid[0x0c] | edid[0x0d] << 8 | edid[0x0e] << 16 | edid[0x0f] << 24; | ||||
|  | ||||
|   /* Week and Year */ | ||||
|   is_model_year = FALSE; | ||||
|   switch (edid[0x10]) | ||||
|     { | ||||
|     case 0x00: | ||||
|       info->production_week = -1; | ||||
|       break; | ||||
|  | ||||
|     case 0xff: | ||||
|       info->production_week = -1; | ||||
|       is_model_year = TRUE; | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       info->production_week = edid[0x10]; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   if (is_model_year) | ||||
|     { | ||||
|       info->production_year = -1; | ||||
|       info->model_year = 1990 + edid[0x11]; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       info->production_year = 1990 + edid[0x11]; | ||||
|       info->model_year = -1; | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_edid_version (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   info->major_version = edid[0x12]; | ||||
|   info->minor_version = edid[0x13]; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_display_parameters (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   /* Digital vs Analog */ | ||||
|   info->is_digital = get_bit (edid[0x14], 7); | ||||
|  | ||||
|   if (info->is_digital) | ||||
|     { | ||||
|       int bits; | ||||
|  | ||||
|       static const int bit_depth[8] = | ||||
|         { | ||||
|           -1, 6, 8, 10, 12, 14, 16, -1 | ||||
|         }; | ||||
|  | ||||
|       static const Interface interfaces[6] = | ||||
|         { | ||||
|           UNDEFINED, DVI, HDMI_A, HDMI_B, MDDI, DISPLAY_PORT | ||||
|         }; | ||||
|  | ||||
|       bits = get_bits (edid[0x14], 4, 6); | ||||
|       info->connector.digital.bits_per_primary = bit_depth[bits]; | ||||
|  | ||||
|       bits = get_bits (edid[0x14], 0, 3); | ||||
|  | ||||
|       if (bits <= 5) | ||||
|         info->connector.digital.interface = interfaces[bits]; | ||||
|       else | ||||
|         info->connector.digital.interface = UNDEFINED; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       int bits = get_bits (edid[0x14], 5, 6); | ||||
|  | ||||
|       static const double levels[][3] = | ||||
|         { | ||||
|           { 0.7,   0.3,    1.0 }, | ||||
|           { 0.714, 0.286,  1.0 }, | ||||
|           { 1.0,   0.4,    1.4 }, | ||||
|           { 0.7,   0.0,    0.7 }, | ||||
|         }; | ||||
|  | ||||
|       info->connector.analog.video_signal_level = levels[bits][0]; | ||||
|       info->connector.analog.sync_signal_level = levels[bits][1]; | ||||
|       info->connector.analog.total_signal_level = levels[bits][2]; | ||||
|  | ||||
|       info->connector.analog.blank_to_black = get_bit (edid[0x14], 4); | ||||
|  | ||||
|       info->connector.analog.separate_hv_sync = get_bit (edid[0x14], 3); | ||||
|       info->connector.analog.composite_sync_on_h = get_bit (edid[0x14], 2); | ||||
|       info->connector.analog.composite_sync_on_green = get_bit (edid[0x14], 1); | ||||
|  | ||||
|       info->connector.analog.serration_on_vsync = get_bit (edid[0x14], 0); | ||||
|     } | ||||
|  | ||||
|   /* Screen Size / Aspect Ratio */ | ||||
|   if (edid[0x15] == 0 && edid[0x16] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1; | ||||
|       info->aspect_ratio = -1.0; | ||||
|     } | ||||
|   else if (edid[0x16] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1;  | ||||
|       info->aspect_ratio = 100.0 / (edid[0x15] + 99); | ||||
|     } | ||||
|   else if (edid[0x15] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1; | ||||
|       info->aspect_ratio = 100.0 / (edid[0x16] + 99); | ||||
|       info->aspect_ratio = 1/info->aspect_ratio; /* portrait */ | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       info->width_mm = 10 * edid[0x15]; | ||||
|       info->height_mm = 10 * edid[0x16]; | ||||
|     } | ||||
|  | ||||
|   /* Gamma */ | ||||
|   if (edid[0x17] == 0xFF) | ||||
|     info->gamma = -1.0; | ||||
|   else | ||||
|     info->gamma = (edid[0x17] + 100.0) / 100.0; | ||||
|  | ||||
|   /* Features */ | ||||
|   info->standby = get_bit (edid[0x18], 7); | ||||
|   info->suspend = get_bit (edid[0x18], 6); | ||||
|   info->active_off = get_bit (edid[0x18], 5); | ||||
|  | ||||
|   if (info->is_digital) | ||||
|     { | ||||
|       info->connector.digital.rgb444 = TRUE; | ||||
|       if (get_bit (edid[0x18], 3)) | ||||
|         info->connector.digital.ycrcb444 = 1; | ||||
|       if (get_bit (edid[0x18], 4)) | ||||
|         info->connector.digital.ycrcb422 = 1; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       int bits = get_bits (edid[0x18], 3, 4); | ||||
|       ColorType color_type[4] = | ||||
|         { | ||||
|           MONOCHROME, RGB, OTHER_COLOR, UNDEFINED_COLOR | ||||
|         }; | ||||
|  | ||||
|       info->connector.analog.color_type = color_type[bits]; | ||||
|     } | ||||
|  | ||||
|   info->srgb_is_standard = get_bit (edid[0x18], 2); | ||||
|  | ||||
|   /* In 1.3 this is called "has preferred timing" */ | ||||
|   info->preferred_timing_includes_native = get_bit (edid[0x18], 1); | ||||
|  | ||||
|   /* FIXME: In 1.3 this indicates whether the monitor accepts GTF */ | ||||
|   info->continuous_frequency = get_bit (edid[0x18], 0); | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static double | ||||
| decode_fraction (int high, int low) | ||||
| { | ||||
|   double result = 0.0; | ||||
|   int i; | ||||
|  | ||||
|   high = (high << 2) | low; | ||||
|  | ||||
|   for (i = 0; i < 10; ++i) | ||||
|     result += get_bit (high, i) * pow (2, i - 10); | ||||
|  | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_color_characteristics (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   info->red_x = decode_fraction (edid[0x1b], get_bits (edid[0x19], 6, 7)); | ||||
|   info->red_y = decode_fraction (edid[0x1c], get_bits (edid[0x19], 5, 4)); | ||||
|   info->green_x = decode_fraction (edid[0x1d], get_bits (edid[0x19], 2, 3)); | ||||
|   info->green_y = decode_fraction (edid[0x1e], get_bits (edid[0x19], 0, 1)); | ||||
|   info->blue_x = decode_fraction (edid[0x1f], get_bits (edid[0x1a], 6, 7)); | ||||
|   info->blue_y = decode_fraction (edid[0x20], get_bits (edid[0x1a], 4, 5)); | ||||
|   info->white_x = decode_fraction (edid[0x21], get_bits (edid[0x1a], 2, 3)); | ||||
|   info->white_y = decode_fraction (edid[0x22], get_bits (edid[0x1a], 0, 1)); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_established_timings (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   static const Timing established[][8] =  | ||||
|     { | ||||
|       { | ||||
|         { 800, 600, 60 }, | ||||
|         { 800, 600, 56 }, | ||||
|         { 640, 480, 75 }, | ||||
|         { 640, 480, 72 }, | ||||
|         { 640, 480, 67 }, | ||||
|         { 640, 480, 60 }, | ||||
|         { 720, 400, 88 }, | ||||
|         { 720, 400, 70 } | ||||
|       }, | ||||
|       { | ||||
|         { 1280, 1024, 75 }, | ||||
|         { 1024, 768, 75 }, | ||||
|         { 1024, 768, 70 }, | ||||
|         { 1024, 768, 60 }, | ||||
|         { 1024, 768, 87 }, | ||||
|         { 832, 624, 75 }, | ||||
|         { 800, 600, 75 }, | ||||
|         { 800, 600, 72 } | ||||
| 	}, | ||||
|       { | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 1152, 870, 75 } | ||||
|       }, | ||||
|     }; | ||||
|  | ||||
|   int i, j, idx; | ||||
|  | ||||
|   idx = 0; | ||||
|   for (i = 0; i < 3; ++i) | ||||
|     { | ||||
|       for (j = 0; j < 8; ++j) | ||||
| 	{ | ||||
|           int byte = edid[0x23 + i]; | ||||
|  | ||||
|           if (get_bit (byte, j) && established[i][j].frequency != 0) | ||||
|             info->established[idx++] = established[i][j]; | ||||
| 	} | ||||
|     } | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_standard_timings (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   for (i = 0; i < 8; i++) | ||||
|     { | ||||
|       int first = edid[0x26 + 2 * i]; | ||||
|       int second = edid[0x27 + 2 * i]; | ||||
|  | ||||
|       if (first != 0x01 && second != 0x01) | ||||
| 	{ | ||||
|           int w = 8 * (first + 31); | ||||
|           int h = 0; | ||||
|  | ||||
|           switch (get_bits (second, 6, 7)) | ||||
|             { | ||||
| 	    case 0x00: h = (w / 16) * 10; break; | ||||
| 	    case 0x01: h = (w / 4) * 3; break; | ||||
| 	    case 0x02: h = (w / 5) * 4; break; | ||||
| 	    case 0x03: h = (w / 16) * 9; break; | ||||
| 	    } | ||||
|  | ||||
|           info->standard[i].width = w; | ||||
|           info->standard[i].height = h; | ||||
|           info->standard[i].frequency = get_bits (second, 0, 5) + 60; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_lf_string (const uchar *s, int n_chars, char *result) | ||||
| { | ||||
|   int i; | ||||
|   for (i = 0; i < n_chars; ++i) | ||||
|     { | ||||
|       if (s[i] == 0x0a) | ||||
| 	{ | ||||
|           *result++ = '\0'; | ||||
|           break; | ||||
| 	} | ||||
|       else if (s[i] == 0x00) | ||||
| 	{ | ||||
|           /* Convert embedded 0's to spaces */ | ||||
|           *result++ = ' '; | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           *result++ = s[i]; | ||||
| 	} | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_display_descriptor (const uchar *desc, | ||||
| 			   MonitorInfo *info) | ||||
| { | ||||
|   switch (desc[0x03]) | ||||
|     { | ||||
|     case 0xFC: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_product_name); | ||||
|       break; | ||||
|     case 0xFF: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_serial_number); | ||||
|       break; | ||||
|     case 0xFE: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_string); | ||||
|       break; | ||||
|     case 0xFD: | ||||
|       /* Range Limits */ | ||||
|       break; | ||||
|     case 0xFB: | ||||
|       /* Color Point */ | ||||
|       break; | ||||
|     case 0xFA: | ||||
|       /* Timing Identifications */ | ||||
|       break; | ||||
|     case 0xF9: | ||||
|       /* Color Management */ | ||||
|       break; | ||||
|     case 0xF8: | ||||
|       /* Timing Codes */ | ||||
|       break; | ||||
|     case 0xF7: | ||||
|       /* Established Timings */ | ||||
|       break; | ||||
|     case 0x10: | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_detailed_timing (const uchar *timing, | ||||
| 			DetailedTiming *detailed) | ||||
| { | ||||
|   int bits; | ||||
|   StereoType stereo[] = | ||||
|     { | ||||
|       NO_STEREO, NO_STEREO, FIELD_RIGHT, FIELD_LEFT, | ||||
|       TWO_WAY_RIGHT_ON_EVEN, TWO_WAY_LEFT_ON_EVEN, | ||||
|       FOUR_WAY_INTERLEAVED, SIDE_BY_SIDE | ||||
|     }; | ||||
|  | ||||
|   detailed->pixel_clock = (timing[0x00] | timing[0x01] << 8) * 10000; | ||||
|   detailed->h_addr = timing[0x02] | ((timing[0x04] & 0xf0) << 4); | ||||
|   detailed->h_blank = timing[0x03] | ((timing[0x04] & 0x0f) << 8); | ||||
|   detailed->v_addr = timing[0x05] | ((timing[0x07] & 0xf0) << 4); | ||||
|   detailed->v_blank = timing[0x06] | ((timing[0x07] & 0x0f) << 8); | ||||
|   detailed->h_front_porch = timing[0x08] | get_bits (timing[0x0b], 6, 7) << 8; | ||||
|   detailed->h_sync = timing[0x09] | get_bits (timing[0x0b], 4, 5) << 8; | ||||
|   detailed->v_front_porch = | ||||
|     get_bits (timing[0x0a], 4, 7) | get_bits (timing[0x0b], 2, 3) << 4; | ||||
|   detailed->v_sync = | ||||
|     get_bits (timing[0x0a], 0, 3) | get_bits (timing[0x0b], 0, 1) << 4; | ||||
|   detailed->width_mm =  timing[0x0c] | get_bits (timing[0x0e], 4, 7) << 8; | ||||
|   detailed->height_mm = timing[0x0d] | get_bits (timing[0x0e], 0, 3) << 8; | ||||
|   detailed->right_border = timing[0x0f]; | ||||
|   detailed->top_border = timing[0x10]; | ||||
|  | ||||
|   detailed->interlaced = get_bit (timing[0x11], 7); | ||||
|  | ||||
|   /* Stereo */ | ||||
|   bits = get_bits (timing[0x11], 5, 6) << 1 | get_bit (timing[0x11], 0); | ||||
|   detailed->stereo = stereo[bits]; | ||||
|  | ||||
|   /* Sync */ | ||||
|   bits = timing[0x11]; | ||||
|  | ||||
|   detailed->digital_sync = get_bit (bits, 4); | ||||
|   if (detailed->digital_sync) | ||||
|     { | ||||
|       detailed->connector.digital.composite = !get_bit (bits, 3); | ||||
|  | ||||
|       if (detailed->connector.digital.composite) | ||||
| 	{ | ||||
|           detailed->connector.digital.serrations = get_bit (bits, 2); | ||||
|           detailed->connector.digital.negative_vsync = FALSE; | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           detailed->connector.digital.serrations = FALSE; | ||||
|           detailed->connector.digital.negative_vsync = !get_bit (bits, 2); | ||||
| 	} | ||||
|  | ||||
|       detailed->connector.digital.negative_hsync = !get_bit (bits, 0); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       detailed->connector.analog.bipolar = get_bit (bits, 3); | ||||
|       detailed->connector.analog.serrations = get_bit (bits, 2); | ||||
|       detailed->connector.analog.sync_on_green = !get_bit (bits, 1); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_descriptors (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|   int timing_idx; | ||||
|  | ||||
|   timing_idx = 0; | ||||
|  | ||||
|   for (i = 0; i < 4; ++i) | ||||
|     { | ||||
|       int index = 0x36 + i * 18; | ||||
|  | ||||
|       if (edid[index + 0] == 0x00 && edid[index + 1] == 0x00) | ||||
| 	{ | ||||
|           decode_display_descriptor (edid + index, info); | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           decode_detailed_timing (edid + index, &(info->detailed_timings[timing_idx++])); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|   info->n_detailed_timings = timing_idx; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_check_sum (const uchar *edid, | ||||
| 		  MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|   uchar check = 0; | ||||
|  | ||||
|   for (i = 0; i < 128; ++i) | ||||
|     check += edid[i]; | ||||
|  | ||||
|   info->checksum = check; | ||||
| } | ||||
|  | ||||
| MonitorInfo * | ||||
| decode_edid (const uchar *edid) | ||||
| { | ||||
|   MonitorInfo *info = g_new0 (MonitorInfo, 1); | ||||
|  | ||||
|   decode_check_sum (edid, info); | ||||
|  | ||||
|   if (decode_header (edid) | ||||
|       && decode_vendor_and_product_identification (edid, info) | ||||
|       && decode_edid_version (edid, info) | ||||
|       && decode_display_parameters (edid, info) | ||||
|       && decode_color_characteristics (edid, info) | ||||
|       && decode_established_timings (edid, info) | ||||
|       && decode_standard_timings (edid, info) | ||||
|       && decode_descriptors (edid, info)) | ||||
|     { | ||||
|       return info; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       g_free (info); | ||||
|       return NULL; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										195
									
								
								src/core/edid.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								src/core/edid.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,195 @@ | ||||
| /* edid.h | ||||
|  * | ||||
|  * Copyright 2007, 2008, Red Hat, Inc. | ||||
|  *  | ||||
|  * This file is part of the Gnome Library. | ||||
|  *  | ||||
|  * The Gnome Library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * The Gnome Library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with the Gnome Library; see the file COPYING.LIB.  If not, | ||||
|  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|  * Boston, MA 02110-1301, USA. | ||||
|  *  | ||||
|  * Author: Soren Sandmann <sandmann@redhat.com> | ||||
|  */ | ||||
|  | ||||
| #ifndef EDID_H | ||||
| #define EDID_H | ||||
|  | ||||
| typedef unsigned char uchar; | ||||
| typedef struct MonitorInfo MonitorInfo; | ||||
| typedef struct Timing Timing; | ||||
| typedef struct DetailedTiming DetailedTiming; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   UNDEFINED, | ||||
|   DVI, | ||||
|   HDMI_A, | ||||
|   HDMI_B, | ||||
|   MDDI, | ||||
|   DISPLAY_PORT | ||||
| } Interface; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   UNDEFINED_COLOR, | ||||
|   MONOCHROME, | ||||
|   RGB, | ||||
|   OTHER_COLOR | ||||
| } ColorType; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   NO_STEREO, | ||||
|   FIELD_RIGHT, | ||||
|   FIELD_LEFT, | ||||
|   TWO_WAY_RIGHT_ON_EVEN, | ||||
|   TWO_WAY_LEFT_ON_EVEN, | ||||
|   FOUR_WAY_INTERLEAVED, | ||||
|   SIDE_BY_SIDE | ||||
| } StereoType; | ||||
|  | ||||
| struct Timing | ||||
| { | ||||
|   int width; | ||||
|   int height; | ||||
|   int frequency; | ||||
| }; | ||||
|  | ||||
| struct DetailedTiming | ||||
| { | ||||
|   int		pixel_clock; | ||||
|   int		h_addr; | ||||
|   int		h_blank; | ||||
|   int		h_sync; | ||||
|   int		h_front_porch; | ||||
|   int		v_addr; | ||||
|   int		v_blank; | ||||
|   int		v_sync; | ||||
|   int		v_front_porch; | ||||
|   int		width_mm; | ||||
|   int		height_mm; | ||||
|   int		right_border; | ||||
|   int		top_border; | ||||
|   int		interlaced; | ||||
|   StereoType	stereo; | ||||
|  | ||||
|   int		digital_sync; | ||||
|   union | ||||
|   { | ||||
|     struct | ||||
|     { | ||||
|       int bipolar; | ||||
|       int serrations; | ||||
|       int sync_on_green; | ||||
|     } analog; | ||||
|  | ||||
|     struct | ||||
|     { | ||||
|       int composite; | ||||
|       int serrations; | ||||
|       int negative_vsync; | ||||
|       int negative_hsync; | ||||
|     } digital; | ||||
|   } connector; | ||||
| }; | ||||
|  | ||||
| struct MonitorInfo | ||||
| { | ||||
|   int		checksum; | ||||
|   char		manufacturer_code[4]; | ||||
|   int		product_code; | ||||
|   unsigned int	serial_number; | ||||
|  | ||||
|   int		production_week;	/* -1 if not specified */ | ||||
|   int		production_year;	/* -1 if not specified */ | ||||
|   int		model_year;		/* -1 if not specified */ | ||||
|  | ||||
|   int		major_version; | ||||
|   int		minor_version; | ||||
|  | ||||
|   int		is_digital; | ||||
|  | ||||
|   union | ||||
|   { | ||||
|     struct | ||||
|     { | ||||
|       int	bits_per_primary; | ||||
|       Interface	interface; | ||||
|       int	rgb444; | ||||
|       int	ycrcb444; | ||||
|       int	ycrcb422; | ||||
|     } digital; | ||||
|  | ||||
|     struct | ||||
|     { | ||||
|       double	video_signal_level; | ||||
|       double	sync_signal_level; | ||||
|       double	total_signal_level; | ||||
|  | ||||
|       int	blank_to_black; | ||||
|  | ||||
|       int	separate_hv_sync; | ||||
|       int	composite_sync_on_h; | ||||
|       int	composite_sync_on_green; | ||||
|       int	serration_on_vsync; | ||||
|       ColorType	color_type; | ||||
|     } analog; | ||||
|   } connector; | ||||
|  | ||||
|   int		width_mm;		/* -1 if not specified */ | ||||
|   int		height_mm;		/* -1 if not specified */ | ||||
|   double	aspect_ratio;		/* -1.0 if not specififed */ | ||||
|  | ||||
|   double	gamma;			/* -1.0 if not specified */ | ||||
|  | ||||
|   int		standby; | ||||
|   int		suspend; | ||||
|   int		active_off; | ||||
|  | ||||
|   int		srgb_is_standard; | ||||
|   int		preferred_timing_includes_native; | ||||
|   int		continuous_frequency; | ||||
|  | ||||
|   double	red_x; | ||||
|   double	red_y; | ||||
|   double	green_x; | ||||
|   double	green_y; | ||||
|   double	blue_x; | ||||
|   double	blue_y; | ||||
|   double	white_x; | ||||
|   double	white_y; | ||||
|  | ||||
|   Timing	established[24];	/* Terminated by 0x0x0 */ | ||||
|   Timing	standard[8]; | ||||
|  | ||||
|   int		n_detailed_timings; | ||||
|   DetailedTiming detailed_timings[4];	/* If monitor has a preferred | ||||
|                                          * mode, it is the first one | ||||
|                                          * (whether it has, is | ||||
|                                          * determined by the  | ||||
|                                          * preferred_timing_includes | ||||
|                                          * bit. | ||||
|                                          */ | ||||
|  | ||||
|   /* Optional product description */ | ||||
|   char		dsc_serial_number[14]; | ||||
|   char		dsc_product_name[14]; | ||||
|   char		dsc_string[14];		/* Unspecified ASCII data */ | ||||
| }; | ||||
|  | ||||
| MonitorInfo *decode_edid (const uchar *data); | ||||
| char *make_display_name (const MonitorInfo *info); | ||||
| char *make_display_size_string (int width_mm, int height_mm); | ||||
|  | ||||
| #endif | ||||
| @@ -1,7 +1,5 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* Mutter X error handling */ | ||||
|  | ||||
| /*  | ||||
|  * Copyright (C) 2001 Havoc Pennington, error trapping inspired by GDK | ||||
|  * code copyrighted by the GTK team. | ||||
| @@ -22,6 +20,12 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:errors | ||||
|  * @title: Errors | ||||
|  * @short_description: Mutter X error handling | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
| #include <meta/errors.h> | ||||
| #include "display-private.h" | ||||
|   | ||||
| @@ -1,184 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* Mutter X event source for main loop */ | ||||
|  | ||||
| /*  | ||||
|  * Copyright (C) 2001 Havoc Pennington (based on GDK code (C) Owen | ||||
|  * Taylor, Red Hat Inc.) | ||||
|  *  | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  * 02111-1307, USA.  */ | ||||
|  | ||||
| #include "eventqueue.h" | ||||
| #include <X11/Xlib.h> | ||||
|  | ||||
| static gboolean eq_prepare  (GSource     *source, | ||||
|                              gint        *timeout); | ||||
| static gboolean eq_check    (GSource     *source); | ||||
| static gboolean eq_dispatch (GSource     *source, | ||||
|                              GSourceFunc  callback, | ||||
|                              gpointer     user_data); | ||||
| static void     eq_destroy  (GSource     *source); | ||||
|  | ||||
| static GSourceFuncs eq_funcs = { | ||||
|   eq_prepare, | ||||
|   eq_check, | ||||
|   eq_dispatch, | ||||
|   eq_destroy | ||||
| }; | ||||
|  | ||||
| struct _MetaEventQueue | ||||
| { | ||||
|   GSource source; | ||||
|  | ||||
|   Display *display; | ||||
|   GPollFD poll_fd; | ||||
|   int connection_fd; | ||||
|   GQueue *events; | ||||
| }; | ||||
|  | ||||
| MetaEventQueue* | ||||
| meta_event_queue_new (Display *display, MetaEventQueueFunc func, gpointer data) | ||||
| { | ||||
|   GSource *source; | ||||
|   MetaEventQueue *eq; | ||||
|  | ||||
|   source = g_source_new (&eq_funcs, sizeof (MetaEventQueue)); | ||||
|   eq = (MetaEventQueue*) source; | ||||
|    | ||||
|   eq->connection_fd = ConnectionNumber (display); | ||||
|   eq->poll_fd.fd = eq->connection_fd; | ||||
|   eq->poll_fd.events = G_IO_IN; | ||||
|  | ||||
|   eq->events = g_queue_new (); | ||||
|  | ||||
|   eq->display = display; | ||||
|    | ||||
|   g_source_set_priority (source, G_PRIORITY_DEFAULT); | ||||
|   g_source_add_poll (source, &eq->poll_fd); | ||||
|   g_source_set_can_recurse (source, TRUE); | ||||
|  | ||||
|   g_source_set_callback (source, (GSourceFunc) func, data, NULL); | ||||
|    | ||||
|   g_source_attach (source, NULL); | ||||
|   g_source_unref (source); | ||||
|  | ||||
|   return eq; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_event_queue_free (MetaEventQueue *eq) | ||||
| { | ||||
|   GSource *source; | ||||
|  | ||||
|   source = (GSource*) eq; | ||||
|    | ||||
|   g_source_destroy (source); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| eq_events_pending (MetaEventQueue *eq) | ||||
| { | ||||
|   return eq->events->length > 0 || XPending (eq->display); | ||||
| } | ||||
|  | ||||
| static void | ||||
| eq_queue_events (MetaEventQueue *eq) | ||||
| { | ||||
|   XEvent xevent; | ||||
|  | ||||
|   while (XPending (eq->display)) | ||||
|     { | ||||
|       XEvent *copy; | ||||
|        | ||||
|       XNextEvent (eq->display, &xevent); | ||||
|  | ||||
|       copy = g_new (XEvent, 1); | ||||
|       *copy = xevent; | ||||
|  | ||||
|       g_queue_push_tail (eq->events, copy); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean   | ||||
| eq_prepare (GSource *source, gint *timeout) | ||||
| { | ||||
|   MetaEventQueue *eq; | ||||
|  | ||||
|   eq = (MetaEventQueue*) source; | ||||
|    | ||||
|   *timeout = -1; | ||||
|  | ||||
|   return eq_events_pending (eq); | ||||
| } | ||||
|  | ||||
| static gboolean   | ||||
| eq_check (GSource  *source)  | ||||
| { | ||||
|   MetaEventQueue *eq; | ||||
|  | ||||
|   eq = (MetaEventQueue*) source; | ||||
|  | ||||
|   if (eq->poll_fd.revents & G_IO_IN) | ||||
|     return eq_events_pending (eq); | ||||
|   else | ||||
|     return FALSE; | ||||
| } | ||||
|  | ||||
| static gboolean   | ||||
| eq_dispatch (GSource *source, GSourceFunc callback, gpointer user_data) | ||||
| { | ||||
|   MetaEventQueue *eq; | ||||
|  | ||||
|   eq = (MetaEventQueue*) source; | ||||
|    | ||||
|   eq_queue_events (eq); | ||||
|  | ||||
|   if (eq->events->length > 0) | ||||
|     { | ||||
|       XEvent *event; | ||||
|       MetaEventQueueFunc func; | ||||
|  | ||||
|       event = g_queue_pop_head (eq->events); | ||||
|       func = (MetaEventQueueFunc) callback; | ||||
|        | ||||
|       (* func) (event, user_data); | ||||
|  | ||||
|       g_free (event); | ||||
|     } | ||||
|    | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| eq_destroy (GSource *source) | ||||
| { | ||||
|   MetaEventQueue *eq; | ||||
|  | ||||
|   eq = (MetaEventQueue*) source; | ||||
|  | ||||
|   while (eq->events->length > 0) | ||||
|     { | ||||
|       XEvent *event; | ||||
|        | ||||
|       event = g_queue_pop_head (eq->events); | ||||
|  | ||||
|       g_free (event); | ||||
|     } | ||||
|  | ||||
|   g_queue_free (eq->events); | ||||
|  | ||||
|   /* source itself is freed by glib */ | ||||
| } | ||||
| @@ -47,6 +47,7 @@ meta_window_ensure_frame (MetaWindow *window) | ||||
|   XSetWindowAttributes attrs; | ||||
|   Visual *visual; | ||||
|   gulong create_serial; | ||||
|   MetaStackWindow stack_window; | ||||
|    | ||||
|   if (window->frame) | ||||
|     return; | ||||
| @@ -105,8 +106,10 @@ meta_window_ensure_frame (MetaWindow *window) | ||||
| 						frame->rect.height, | ||||
| 						frame->window->screen->number, | ||||
|                                                 &create_serial); | ||||
|   stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11; | ||||
|   stack_window.x11.xwindow = frame->xwindow; | ||||
|   meta_stack_tracker_record_add (window->screen->stack_tracker, | ||||
|                                  frame->xwindow, | ||||
|                                  &stack_window, | ||||
|                                  create_serial); | ||||
|  | ||||
|   meta_verbose ("Frame for %s is 0x%lx\n", frame->window->desc, frame->xwindow); | ||||
| @@ -138,8 +141,9 @@ meta_window_ensure_frame (MetaWindow *window) | ||||
|   window->rect.x = 0; | ||||
|   window->rect.y = 0; | ||||
|  | ||||
|   stack_window.x11.xwindow = window->xwindow; | ||||
|   meta_stack_tracker_record_remove (window->screen->stack_tracker, | ||||
|                                     window->xwindow, | ||||
|                                     &stack_window, | ||||
|                                     XNextRequest (window->display->xdisplay)); | ||||
|   XReparentWindow (window->display->xdisplay, | ||||
|                    window->xwindow, | ||||
| @@ -174,6 +178,7 @@ meta_window_destroy_frame (MetaWindow *window) | ||||
| { | ||||
|   MetaFrame *frame; | ||||
|   MetaFrameBorders borders; | ||||
|   MetaStackWindow stack_window; | ||||
|    | ||||
|   if (window->frame == NULL) | ||||
|     return; | ||||
| @@ -200,8 +205,10 @@ meta_window_destroy_frame (MetaWindow *window) | ||||
|                   "Incrementing unmaps_pending on %s for reparent back to root\n", window->desc); | ||||
|       window->unmaps_pending += 1; | ||||
|     } | ||||
|   stack_window.any.type = META_WINDOW_CLIENT_TYPE_X11; | ||||
|   stack_window.x11.xwindow = window->xwindow; | ||||
|   meta_stack_tracker_record_add (window->screen->stack_tracker, | ||||
|                                  window->xwindow, | ||||
|                                  &stack_window, | ||||
|                                  XNextRequest (window->display->xdisplay)); | ||||
|   XReparentWindow (window->display->xdisplay, | ||||
|                    window->xwindow, | ||||
| @@ -332,19 +339,6 @@ meta_frame_calc_borders (MetaFrame        *frame, | ||||
|                                borders); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_frame_get_corner_radiuses (MetaFrame *frame, | ||||
|                                 float     *top_left, | ||||
|                                 float     *top_right, | ||||
|                                 float     *bottom_left, | ||||
|                                 float     *bottom_right) | ||||
| { | ||||
|   meta_ui_get_corner_radiuses (frame->window->screen->ui, | ||||
|                                frame->xwindow, | ||||
|                                top_left, top_right, | ||||
|                                bottom_left, bottom_right); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_frame_sync_to_window (MetaFrame *frame, | ||||
|                            int        resize_gravity, | ||||
| @@ -400,6 +394,14 @@ meta_frame_get_frame_bounds (MetaFrame *frame) | ||||
|                                    frame->rect.height); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_frame_get_mask (MetaFrame                    *frame, | ||||
|                      cairo_t                      *cr) | ||||
| { | ||||
|   meta_ui_get_frame_mask (frame->window->screen->ui, frame->xwindow, | ||||
|                           frame->rect.width, frame->rect.height, cr); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_frame_queue_draw (MetaFrame *frame) | ||||
| { | ||||
|   | ||||
| @@ -63,12 +63,6 @@ Window         meta_frame_get_xwindow (MetaFrame *frame); | ||||
| void meta_frame_calc_borders      (MetaFrame        *frame, | ||||
|                                    MetaFrameBorders *borders); | ||||
|  | ||||
| void meta_frame_get_corner_radiuses (MetaFrame *frame, | ||||
|                                      float     *top_left, | ||||
|                                      float     *top_right, | ||||
|                                      float     *bottom_left, | ||||
|                                      float     *bottom_right); | ||||
|  | ||||
| gboolean meta_frame_sync_to_window (MetaFrame         *frame, | ||||
|                                     int                gravity, | ||||
|                                     gboolean           need_move, | ||||
| @@ -76,6 +70,9 @@ gboolean meta_frame_sync_to_window (MetaFrame         *frame, | ||||
|  | ||||
| cairo_region_t *meta_frame_get_frame_bounds (MetaFrame *frame); | ||||
|  | ||||
| void meta_frame_get_mask (MetaFrame *frame, | ||||
|                           cairo_t   *cr); | ||||
|  | ||||
| void meta_frame_set_screen_cursor (MetaFrame	*frame, | ||||
| 				   MetaCursor	cursor); | ||||
|  | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user