Compare commits
	
		
			55 Commits
		
	
	
		
			3.9.2
			...
			wip/cb2eb3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7623b97399 | ||
|   | 8d8e0cb055 | ||
|   | 1620131434 | ||
|   | 873da3405c | ||
|   | 8a062b39ab | ||
|   | 3ab3c8423e | ||
|   | 11e1f687f9 | ||
|   | 25815473e6 | ||
|   | 5053997021 | ||
|   | b6468a7fa5 | ||
|   | e2e0ead870 | ||
|   | f80a5d892f | ||
|   | 5823c5e0f5 | ||
|   | ecac8c9d09 | ||
|   | 2666303045 | ||
|   | 0a9bc8995a | ||
|   | 143436c37c | ||
|   | 7c11e0b0eb | ||
|   | beccdd64f5 | ||
|   | dd0a6d7e08 | ||
|   | 02bb550bd6 | ||
|   | 8f789a8fad | ||
|   | 865b9df9a9 | ||
|   | 1e9268045d | ||
|   | 20acb73024 | ||
|   | b97ad209c2 | ||
|   | f2d8e3266b | ||
|   | 11be2fa36a | ||
|   | 302302a116 | ||
|   | fd13dad0c4 | ||
|   | 2da1ed1ae0 | ||
|   | 58f04c7284 | ||
|   | a6737ef129 | ||
|   | 52fee4df1c | ||
|   | 8da12ac0e0 | ||
|   | e43f8db6e8 | ||
|   | a7cbc9ad9a | ||
|   | 0be3f81841 | ||
|   | f53e26bc39 | ||
|   | cc3be6da4d | ||
|   | fef2a061a8 | ||
|   | bdb995d758 | ||
|   | 2a729f89aa | ||
|   | af242b27b2 | ||
|   | a198ff415a | ||
|   | 981c1c2ab5 | ||
|   | fb35f9fa49 | ||
|   | 9194a04faa | ||
|   | a0ed41d8ce | ||
|   | e3e87727b6 | ||
|   | 2d878f29eb | ||
|   | 307e4c7d0e | ||
|   | 43e7687d89 | ||
|   | 2e4f67f3f9 | ||
|   | 69c11b59c4 | 
							
								
								
									
										20
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -19,8 +19,6 @@ libtool | ||||
| ltmain.sh | ||||
| missing | ||||
| .deps | ||||
| src/50-mutter-navigation.xml | ||||
| src/50-mutter-system.xml | ||||
| src/50-mutter-windows.xml | ||||
| src/mutter-wm.desktop | ||||
| src/mutter.desktop | ||||
| @@ -62,7 +60,6 @@ mutter-message | ||||
| mutter-window-demo | ||||
| focus-window | ||||
| test-attached | ||||
| test-focus | ||||
| test-gravity | ||||
| test-resizing | ||||
| test-size-hints | ||||
| @@ -76,20 +73,3 @@ src/stamp-mutter-enum-types.h | ||||
| src/mutter-marshal.[ch] | ||||
| src/stamp-mutter-marshal.h | ||||
| src/mutter-plugins.pc | ||||
| 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 | ||||
|   | ||||
| @@ -4,5 +4,3 @@ SUBDIRS=src 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 | ||||
|   | ||||
							
								
								
									
										364
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										364
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,367 +1,3 @@ | ||||
| 3.9.2 | ||||
| ===== | ||||
| * Add meta_window_can_close() function [Jasper; #699269] | ||||
| * Add support for string-array preferences [Florian; #700223] | ||||
| * Fix a potential race condition with _NET_WM_MOVERESIZE [Jasper; #699777] | ||||
| * Fix shade window action [Stef; #693714] | ||||
| * Remove overlay_group [Giovanni; #700735] | ||||
| * Improve tracking of the focus window [Dan, Jasper; #647706] | ||||
| * Add API to freeze/unfreeze the keyboard [Rui; #697001] | ||||
| * Grab and emit a signal when XK_ISO_Next_Group is pressed [Rui; #697002] | ||||
| * Misc bug fixes and cleanups [Dieter, Jasper, Rui; #699636, #700735, #697000] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Rui Matos, Florian Müllner, Jasper St. Pierre, | ||||
|   Dieter Verfaillie, Stef Walter, Dan Winship | ||||
|  | ||||
| Translations: | ||||
|   Kjartan Maraas [nb], Ján Kyselica [sk] | ||||
|  | ||||
| 3.9.1 | ||||
| ===== | ||||
| * Fix miscellaneous memory leaks [Pavel; #698710] | ||||
| * Misc fixes and cleanups [Stef, Simon; #698179, #697758] | ||||
|  | ||||
| Contributors: | ||||
|   Simon McVittie, Pavel Vasin, Stef Walter | ||||
|  | ||||
| 3.8.1 | ||||
| ===== | ||||
| * Fix crash when getting default font [Bastien; #696814] | ||||
| * Fix ungrabbing of keybindings [Rui; #697003] | ||||
| * Misc fixes and cleanups [Jasper, Simon; #697758] | ||||
|  | ||||
| Contributors: | ||||
|   Jasper Lievisse Adriaanse, Rui Matos, Simon McVittie, Bastien Nocera | ||||
|  | ||||
| Translations: | ||||
|   Guillaume Desmottes [fr], Shankar Prasad [kn], Bruce Cowan [en_GB], | ||||
|   Andika Triwidada [id], Yaron Shahrabani [he], Kjartan Maraas [nb], | ||||
|   Gheyret Kenji [ug] | ||||
|  | ||||
| 3.8.0 | ||||
| ===== | ||||
| * Address major memory leak when changing backgrounds [Ray; #696157] | ||||
|  | ||||
| Contributors: | ||||
|   Ray Strode | ||||
|  | ||||
| Translations: | ||||
|   Sandeep Sheshrao Shedmake [mr], Victor Ibragimov [tg], Gabor Kelemen [hu], | ||||
|   Ville-Pekka Vainio [fi], Rajesh Ranjan [hi], Dr.T.Vasudevan [ta], | ||||
|   ManojKumar Giri [or], Yuri Myasoedov [ru], Petr Kovar [cs], | ||||
|   Jiro Matsuzawa [ja], Krishnababu Krothapalli [te], Ani Peter [ml], | ||||
|   Inaki Larranaga Murgoitio [eu] | ||||
|  | ||||
| 3.7.92 | ||||
| ====== | ||||
| * Build and improve reference docs [Tomeu; #676856, #695641, #695935] | ||||
| * Add tracking of whether there are fullscreen windows [Owen; 649748] | ||||
| * Misc bug fixes and cleanups [Adel, Giovanni, Owen, Jasper, Florian; #695269, | ||||
|   #695711, #694046, #695813, #695881, #676856, #696053, #682779, #696089, | ||||
|   #696091, #696087] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Adel Gadllah, Florian Müllner, Jasper St. Pierre, | ||||
|   Tomeu Vizoso, Owen W. Taylor | ||||
|  | ||||
| Translations: | ||||
|   Chao-Hsiung Liao [zh_HK, zh_TW], Rafael Ferreira [pt_BR], | ||||
|   Ihar Hrachyshka [be], Nilamdyuti Goswami [as], Matej Urbančič [sl], | ||||
|   Dimitris Spingos [el], Jan Kyselica [sk], Khaled Hosny [ar], | ||||
|   Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], Sweta Kothari [gu], | ||||
|   Milo Casagrande [it], Changwoo Ryu [ko], Gil Forcada [ca], | ||||
|   Carles Ferrando [ca@valencia], Mattias Põldaru [et], Alexandre Franke [fr], | ||||
|   Ask H. Larsen [da], Rūdolfs Mazurs [lv], Nguyễn Thái Ngọc Duy [vi] | ||||
|  | ||||
| 3.7.91 | ||||
| ====== | ||||
| * Fix windows being treated as remote after hostname changes [Ray; #688716] | ||||
| * Add meta_window_get_all_monitors() method [Adel; #646861] | ||||
| * Add grab API for externally defined accelerators [Florian; #643111] | ||||
| * Make session registration an explicit step [Ray; #694876] | ||||
| * Avoid unnecessary stage redraws [Adel; #694988, #695006] | ||||
| * Misc fixes [Giovanni, Ray, Jasper, Rui, Pavel, Owen; #694801, #694725, | ||||
|   #694641, #694393, #678917, #695093, #694837, #695135, #694771, #694321] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Adel Gadllah, Rui Matos, Florian Müllner, | ||||
|   Jasper St. Pierre, Ray Strode, Owen Taylor, Pavel Vasin | ||||
|  | ||||
| Translations: | ||||
|   Daniel Mustieles [es], Yaron Shahrabani [he], A S Alam [pa], Piotr Drąg [pl], | ||||
|   Gheyret Kenji [ug], Alexandre Franke [fr], Milo Casagrande [it], | ||||
|   Fran Diéguez [gl], Dimitris Spingos [el], Мирослав Николић [sr, sr@latin], | ||||
|   Chao-Hsiung Liao [zh_HK, zh_TW], Nguyễn Thái Ngọc Duy [vi], | ||||
|   Aurimas Černius [lt], Mario Blättermann [de], Kjartan Maraas [nb] | ||||
|  | ||||
| 3.7.90 | ||||
| ====== | ||||
| * Support _NET_WM_OPAQUE_REGION [Jasper, Adel; #679901] | ||||
| * Add wrapper for XI2.3 pointer barriers [Jasper; #677215] | ||||
| * Update style of resize popups [Cosimo; #692741] | ||||
| * Implement compositor <-> application frame synchronization [Owen; #685463] | ||||
| * Handle animated backgrounds [Ray; #682427] | ||||
| * Add a new window group for override-redirect windows [Gayan; #633620] | ||||
| * Pass on pointer events on guard window to Clutter [Jasper; #681540] | ||||
| * Show correct shortcut in window menus [Giovanni; #694045] | ||||
| * Don't put minimized windows at the back of alt-tab [Jasper; #693991] | ||||
| * Misc bug fixes and cleanups [Jasper, Rico, Adel, Florian, Rui, Giovanni, | ||||
|   Owen; #692679, #693354, #690581, #693439, #692718, #693475, #693482, #693540, | ||||
|   #690580, #680990, #693833, #693922, #693854, #694224] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner, | ||||
|   Gayan Perera, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz | ||||
|  | ||||
| Translations: | ||||
|   Fran Diéguez [gl], A S Alam [pa], Alexandre Franke [fr], Aurimas Černius [lt], | ||||
|   Мирослав Николић [sr, sr@latin], Fran Diéguez [gl], Piotr Drąg [pl], | ||||
|   Luca Ferretti [it], Daniel Mustieles [es] | ||||
|  | ||||
| 3.7.5 | ||||
| ===== | ||||
| * Don't allow multiline window titles [Jon; #683056] | ||||
| * Make meta_window_located_on_workspace() public [Jasper; #691744] | ||||
| * Request XI2.3 [Colin; #692877] | ||||
| * Add meta_window_set_icon_geometry() method [Florian; #692997] | ||||
| * Require XFixes 5.0 [Jasper; #677215] | ||||
| * Change unredirection hints to match spec changes [Adel; #693064] | ||||
| * Improve unredict heuristicts [Adel; #683786] | ||||
| * Misc bug fixes and cleanups [Florian, Jasper, Adel; #691874, #679901, | ||||
|   #692952, #693042] | ||||
|  | ||||
| Contributors: | ||||
|   Adel Gadllah, William Jon McCann, Florian Müllner, Jasper St. Pierre, | ||||
|   Colin Walters | ||||
|  | ||||
| Translations: | ||||
|   Daniel Mustieles [es], Ihar Hrachyshka [be], Nilamdyuti Goswami [as], | ||||
|   Gheyret Kenji [ug], Kjartan Maraas [nb], Yaron Shahrabani [he], | ||||
|   Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK,zh_TW], Milo Casagrande [it] | ||||
|  | ||||
| 3.7.4 | ||||
| ===== | ||||
| * Add support for bypass compositor hints [Adel; #683020] | ||||
| * Make automaximization optional [Adel; #680990] | ||||
| * Add method for checking if the application is responding [Giovanni; #684340] | ||||
| * Expose the xinput opcode [Jasper; #690590] | ||||
| * Rebrand "minimize" as "hide" [Florian; #682887] | ||||
| * Misc bug fixes and cleanups [Giovanni, Ray, Jasper, Matthias, Debarshi, | ||||
|   Florian, Rui; #690454, #690573, #690593, #690956, #691363, #690609, #690317, | ||||
|   #689263] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Matthias Clasen, Adel Gadllah, Rui Matos, Florian Müllner, | ||||
|   Debarshi Ray, Jasper St. Pierre, Ray Strode | ||||
|  | ||||
| Translations: | ||||
|   Mattias Põldaru [et], Yaron Shahrabani [he], Daniel Mustieles [es], | ||||
|   Khaled Hosny [ar], Fran Diéguez [gl], A S Alam [pa], Piotr Drąg [pl], | ||||
|   Rafael Ferreira [pt_BR], Nilamdyuti Goswami [as], Alexander Shopov [bg], | ||||
|   Matej Urbančič [sl] | ||||
|  | ||||
| 3.7.3 | ||||
| ===== | ||||
| * Fix maximized windows jumping to other monitors [Alban; #556696] | ||||
| * Add 'switch-applications' keybinding [Florian; #688913] | ||||
| * Add a convenience method to focus the default window [Jasper; #689652] | ||||
| * Increase typical icon size to 96 [Jasper; #689651] | ||||
| * Port to XInput2 [Jasper; #688779] | ||||
| * Give dynamic keybindings a keybinding action [Florian; #682315] | ||||
| * Misc. fixes and cleanups [Jasper, Rui; #688777] | ||||
|  | ||||
| Contributors: | ||||
|   Alban Crequy, Rui Matos, Florian Müllner, Jasper St. Pierre | ||||
|  | ||||
| Translations: | ||||
|   Nilamdyuti Goswami [as], Piotr Drąg [pl], Yaron Shahrabani [he], | ||||
|   Dr.T.Vasudevan [ta], ManojKumar Giri [or], Shankar Prasad [kn] | ||||
|  | ||||
| 3.7.2 | ||||
| ===== | ||||
| * Fix spurious focus changes when showing desktop [Florian; #686928] | ||||
| * MetaPluginManager: don't send events to Clutter twice [Owen; #686406] | ||||
| * Add the ability to add shader hooks to MetaBackgroundActor [Giovanni; #669798] | ||||
| * Only process keyboard mapping events for the core X keyboard [Rui; #674859] | ||||
| * Import keybinding files from Metacity [Florian; #687672] | ||||
| * Add compositor hook to process keybindings selectively [Florian; #688202] | ||||
| * MetaBackgroundActor: add a setter for GLSL uniforms [Giovanni; #682536] | ||||
| * Misc. fixes and cleanups [Jasper, Rui, Florian, Rico; #688182] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Rui Matos, Florian Müllner, Jasper St. Pierre, | ||||
|   Owen Taylor, Rico Tzschichholz | ||||
|  | ||||
| Translations: | ||||
|   Rafael Ferreira [pt_BR], Tobias Endrigkeit [de], Yaron Shahrabani [he] | ||||
|  | ||||
| 3.7.1 | ||||
| ===== | ||||
| * screen: Ignore num-workspaces when using dynamic workspaces [Florian; #685439] | ||||
|  | ||||
| Contributors: | ||||
|   Florian Müllner | ||||
|  | ||||
| Translations: | ||||
|   Mattias Põldaru [et], Kjartan Maraas [nb], Мирослав Николић [sr, sr@latin], | ||||
|   Marek Černocký [cs], Andika Triwidada [id], Daniel Mustieles [es], | ||||
|   Fran Diéguez [gl], Matej Urbančič [sl] | ||||
|  | ||||
| 3.6.1 | ||||
| ===== | ||||
| * Fix crash when opening large popup menus [Jasper; #681676] | ||||
| * window: Don't move the desktop window after monitor hotplug [Jasper; #681159] | ||||
| * Expose MetaPlugin to introspection [Evan; #671098] | ||||
| * Optionally delay focus changes in focus-follows-mouse mode [Florian; #678169] | ||||
| * Resize the guard window when the X screen is resized [Benjamin; #670396] | ||||
| * display: Only manage the default X screen [Jürg; #648156] | ||||
| * Misc cleanups: [Owen; #587255] | ||||
|  | ||||
| Contributors: | ||||
|   Benjamin Berg, Jürg Billeter, Evan Broder, Florian Müllner, Jasper St. Pierre, | ||||
|   Owen Taylor | ||||
|  | ||||
| Translations: | ||||
|   Alexandre Franke [fr], Theppitak Karoonboonyanan [th], Sayak Sarkar [bn_IN], | ||||
|   Sandeep Sheshrao Shedmake [mr], Ask H. Larsen [da], Shankar Prasad [kn], | ||||
|   Alexander Shopov [bg], Aurimas Černius [lt], Ihar Hrachyshka [be], | ||||
|   Kjartan Maraas [nb], Daniel Mustieles [es], Changwoo Ryu [ko], | ||||
|   Yuri Myasoedov [ru], Tom Tryfonidis [el], Rūdolfs Mazurs [lv], | ||||
|   Chris Leonard [en_GB], Piotr Drąg [pl], Fran Diéguez [gl], Gil Forcada [ca], | ||||
|   Matej Urbančič [sl], Andika Triwidada [id], Carles Ferrando [ca] | ||||
|  | ||||
| 3.6.0 | ||||
| ===== | ||||
|  | ||||
| Translations: | ||||
|   Alexander Shopov [bg], Daniel Korostil [uk], Rajesh Ranjan [hi], | ||||
|   Krishnababu Krothapalli [te], Ani Peter [ml], Rūdolfs Mazurs [lv], | ||||
|   Sweta Kothari [gu], Ihar Hrachyshka [be], Noriko Mizumoto [ja], | ||||
|   Timo Jyrinki [fi], Mattias Põldaru [et] | ||||
|  | ||||
| 3.5.92 | ||||
| ====== | ||||
| * screen: Allow NULL out arguments in meta_screen_get_size [Tomeu] | ||||
| * display: Add API to set wm_name / wm_keybindings [Florian; #671010] | ||||
| * Improve the not responding dialog [Jon, Florian; #684306] | ||||
| * Misc. bugfixes [Jasper] | ||||
|  | ||||
| Contributors: | ||||
|   William Jon McCann, Florian Müllner, Jasper St. Pierre, Tomeu Vizoso | ||||
|  | ||||
| Translations: | ||||
|   Gabor Kelemen [hu], Piotr Drąg [pl], Dr.T.Vasudevan [ta], Bruce Cowan [en_GB], | ||||
|   Alexandre Franke [fr], Theppitak Karoonboonyanan [th], Gil Forcada [ca], | ||||
|   Carles Ferrando [ca@valencia], Tobias Endrigkeit [de], Tom Tryfonidis [el], | ||||
|   Nguyễn Thái Ngọc Duy [vi], Changwoo Ryu [ko], Ask H. Larsen [da], | ||||
|   Rafael Ferreira [pt_BR], Marek Černocký [cs] | ||||
|  | ||||
| 3.5.91 | ||||
| ====== | ||||
| * Do not include markup in app not responding dialog [Alex] | ||||
| * Fix subtracting unredirected windows from visible region [Jasper; #677116] | ||||
| * Minor improvements and bugfixes [Jasper, Florian; #682648, #682993] | ||||
|  | ||||
| Contributors: | ||||
|   Alexander Larsson, Florian Müllner, Jasper St. Pierre | ||||
|  | ||||
| Translations: | ||||
|   Dirgita [id], Piotr Drąg [pl], A S Alam [pa], Yuri Myasoedov [ru], | ||||
|   Milo Casagrande [it], Nilamdyuti Goswami [as], Tom Tryfonidis [el], | ||||
|   Duarte Loreto [pt], Fran Diéguez [gl], Nguyễn Thái Ngọc Duy [vi], | ||||
|   Aurimas Černius [lt], Daniel Nylander [sv] | ||||
|  | ||||
| 3.5.90 | ||||
| ====== | ||||
| * Fix logic for handling translations of the windows group [Owen; #681221] | ||||
| * Handle painting inside a Clutter clone [Owen; #681953] | ||||
| * Update overlay-key on settings changes [Florian; #681906] | ||||
| * Add keybinding for overlay-key [Florian; #665547] | ||||
| * Minor fixes and improvements [Javier, Florian] | ||||
|  | ||||
| Contributors: | ||||
|   Javier Jardón, Florian Müllner, Owen Taylor | ||||
|  | ||||
| Translations: | ||||
|   Sweta Kothari [gu], Muhammet Kara [tr], Khaled Hosny [ar], | ||||
|   Sandeep Sheshrao Shedmake [mr] | ||||
|  | ||||
| 3.5.5 | ||||
| ===== | ||||
| * Fix flickering around windows when using window group [Tom; #681221] | ||||
|  | ||||
| Contributor(s): | ||||
|   Tom Beckmann | ||||
|  | ||||
| Translations: | ||||
|   Chao-Hsiung Liao [zh_HK, zh_TW], Matej Urbančič [sl], Fran Diéguez [gl], | ||||
|   Мирослав Николић [sr, sr@latin], Yaron Shahrabani [he], Kjartan Maraas [nb] | ||||
|  | ||||
| 3.5.4 | ||||
| ===== | ||||
| * Make it possible to reimplement move-to-workspace keybindings from plugins | ||||
|   [Giovanni; #674104] | ||||
| * Add a preference to ignore hide-titlebar-when-maximized hint [Rico; #678947] | ||||
| * window: Also use hide-titlebar-when-maximized when tiled [Florian; #679290] | ||||
| * Center modal dialogs on their parent instead [Florian; #674499] | ||||
| * Reduce amount of markup in translated messages [Matthias; #679660] | ||||
| * Fix focus problem after closing a window with focus-follows-mouse | ||||
|   [Jasper; #675982] | ||||
| * Handle changes of the attach-modal-dialogs preference [Florian; #679904] | ||||
| * Do not restore tiling on unmaximize [Florian; #677565] | ||||
| * Misc. fixes and cleanups [Jasper Adriaanse, Jasper, Debarshi, Pavel; | ||||
|   #679153, 673824] | ||||
|  | ||||
| Contributors: | ||||
|  Jasper Lievisse Adriaanse, Giovanni Campagna, Matthias Clasen, Florian Müllner, | ||||
|  Debarshi Ray, Jasper St. Pierre, Rico Tzschichholz, Pavel Vasin | ||||
|  | ||||
| Translations: | ||||
|  Alexander Shopov [bg], Kjartan Maraas [nb], Yaron Shahrabani [he], | ||||
|  Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Daniel Mustieles [es] | ||||
|  | ||||
| 3.5.3 | ||||
| ===== | ||||
| * Simplify plugin system [Jasper; #676855] | ||||
| * meta-window-actor: Don't unredirect shaped windows [Jasper; #677657] | ||||
| * screen: Add new public meta_screen_get_current_monitor API [Tim; #642591] | ||||
| * frames: Increase the size of resize corners [Jasper; #677669] | ||||
| * window: Make some window methods public [Jasper; #678126] | ||||
| * Fix crash when running mutter stand-alone [Jasper; #678238] | ||||
| * meta-window-actor: Fix potential crash in shaping code [Jasper; #677977] | ||||
| * Misc. fixes [Jasper, Marc-Antoine, Rico] | ||||
|  | ||||
| Contributors: | ||||
|  Tim L, Marc-Antoine Perennou, Jasper St. Pierre, Rico Tzschichholz | ||||
|  | ||||
| Translations: | ||||
|  | ||||
|  Daniel Mustieles [es], Matej Urbančič [sl], Khaled Hosny [ar], | ||||
|  Bruno Brouard [fr], Fran Diéguez [gl] | ||||
|  | ||||
| 3.5.2 | ||||
| ===== | ||||
| * keybindings: Remove 'toggle-recording' binding [Florian; #674376] | ||||
| * Switch to gtk-doc syntax [Jasper; #673752] | ||||
| * shaped-texture: never slice shape mask texture [Robert; #674731] | ||||
| * Make Mutter stop relying on Cogl including a GL header [Neil; #672711] | ||||
| * Make support for "XFree86" Xinerama mandatory [Owen; #674727] | ||||
| * meta_window_move_frame(): fix crash when frame is NULL [Owen; #675254] | ||||
| * Fix memory leaks [Pavel; #672640] | ||||
| * Code cleanups [Jasper; #671104 #674876 #676052] | ||||
| * Look for themes in XDG user data dir [Jasper; #675316] | ||||
| * Remove frame pixel caching [Jasper; #675111] | ||||
| * stack: Ignore keep-on-top property on maximized windows [Florian; #673581] | ||||
| * Misc. fixes [Javier, Jasper, Owen, Rico] | ||||
|  | ||||
| Contributors: | ||||
|  Robert Bragg, Javier Járdon, Florian Müllner, Neil Roberts, Jasper St. Pierre,  | ||||
|  Owen Taylor, Rico Tzschichholz, Pavel Vasin | ||||
|  | ||||
| Translations: | ||||
|  Praveen Illa [te], Luca Ferretti [it], Daniel Mustieles [es] | ||||
|  | ||||
| 3.4.1 | ||||
| ===== | ||||
| * API change: the meta_display_add_keybinding() function added in 3.4 | ||||
|   | ||||
							
								
								
									
										18
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								README
									
									
									
									
									
								
							| @@ -1,10 +1,16 @@ | ||||
| The original codebase named "Metacity" is not a meta-City as in an | ||||
| urban center, but rather Meta-ness as in the state of being | ||||
| meta. i.e. metacity : meta as opacity : opaque. Also it may have | ||||
| something to do with the Meta key on UNIX keyboards. | ||||
| Metacity is not a meta-City as in an urban center, but rather | ||||
| Meta-ness as in the state of being meta. i.e. metacity : meta as | ||||
| opacity : opaque. Also it may have something to do with the Meta key | ||||
| on UNIX keyboards. | ||||
|  | ||||
| Since then, it has been renamed mutter after a rebase on top of | ||||
| clutter as a compositing manager. | ||||
| The first release of Metacity was version 2.3. Metacity has no need for | ||||
| your petty hangups about version numbers. | ||||
|  | ||||
| The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, | ||||
| 2.10.x, 2.12.x, 2.14.x, 2.16.x. | ||||
|  | ||||
| Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x, | ||||
| 2.15.x, 2.17.x. | ||||
|  | ||||
| COMPILING MUTTER | ||||
| === | ||||
|   | ||||
| @@ -7,7 +7,7 @@ test -z "$srcdir" && srcdir=. | ||||
| PKG_NAME="mutter" | ||||
| REQUIRED_AUTOMAKE_VERSION=1.10 | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
| (test -f $srcdir/configure.in \ | ||||
|   && test -d $srcdir/src) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
|     echo " top-level metacity directory" | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| AC_PREREQ(2.50) | ||||
| 
 | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [9]) | ||||
| m4_define([mutter_micro_version], [2]) | ||||
| m4_define([mutter_minor_version], [4]) | ||||
| m4_define([mutter_micro_version], [1]) | ||||
| 
 | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
| @@ -71,10 +71,10 @@ MUTTER_PC_MODULES=" | ||||
|    gio-2.0 >= 2.25.10 | ||||
|    pango >= 1.2.0 | ||||
|    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 | ||||
|    cogl-1.0 >= 1.13.3 | ||||
|    gsettings-desktop-schemas >= 3.3.0 | ||||
|    xcomposite >= 0.2 xfixes xrender xdamage | ||||
|    $CLUTTER_PACKAGE >= 1.9.10 | ||||
|    cogl-1.0 >= 1.9.6 | ||||
| " | ||||
| 
 | ||||
| GLIB_GSETTINGS | ||||
| @@ -113,6 +113,9 @@ AC_ARG_ENABLE(shape, | ||||
|                  [disable mutter's use of the shaped window extension]),, | ||||
|   enable_shape=auto) | ||||
| 
 | ||||
| ## try definining HAVE_BACKTRACE | ||||
| AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)]) | ||||
| 
 | ||||
| AM_GLIB_GNU_GETTEXT | ||||
| 
 | ||||
| ## here we get the flags we'll actually use | ||||
| @@ -201,9 +204,6 @@ fi | ||||
| 
 | ||||
| PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) | ||||
| 
 | ||||
| PKG_CHECK_EXISTS([xi >= 1.6.99.1], | ||||
|                  AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater])) | ||||
| 
 | ||||
| # This is used for plugins | ||||
| AC_SUBST(CLUTTER_PACKAGE) | ||||
| PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE) | ||||
| @@ -364,7 +364,11 @@ if test "x$enable_debug" = "xyes"; then | ||||
| 	CFLAGS="$CFLAGS -g -O" | ||||
| fi | ||||
| 
 | ||||
| GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) | ||||
| # For fix-meta-rectangle.py | ||||
| AM_PATH_PYTHON([2.5]) | ||||
| 
 | ||||
| # Use gnome-doc-utils: | ||||
| GNOME_DOC_INIT([0.8.0]) | ||||
| 
 | ||||
| #### Warnings (last since -Werror can disturb other tests) | ||||
| 
 | ||||
| @@ -436,8 +440,6 @@ 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 | ||||
| @@ -1,4 +1,4 @@ | ||||
| SUBDIRS = man reference | ||||
| SUBDIRS = man | ||||
|  | ||||
| EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \ | ||||
| 	how-to-get-focus-right.txt | ||||
|   | ||||
| @@ -1,166 +0,0 @@ | ||||
| ## 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.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 | ||||
| @@ -1,59 +0,0 @@ | ||||
| <?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> | ||||
| @@ -1,667 +0,0 @@ | ||||
| <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_application_based | ||||
| 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> | ||||
|  | ||||
| @@ -1,15 +0,0 @@ | ||||
| <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> | ||||
| @@ -1,100 +0,0 @@ | ||||
| <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> | ||||
| @@ -259,8 +259,6 @@ Overview of Theme Format Version 1 | ||||
|     <!-- color obtained by a 0.5 alpha composite of the second color onto the first --> | ||||
|     <color value="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.5"/> | ||||
|   </gradient> | ||||
|   <!-- image has an optional colorize="#color" attribute to give the | ||||
|        image a certain color --> | ||||
|   <image filename="foo.png" alpha="0.7" | ||||
|          x="10" y="30" width="width / 3" height="height / 4"/> | ||||
|   <gtk_arrow state="normal" shadow="in" arrow="up" | ||||
|   | ||||
| @@ -39,11 +39,4 @@ environment.</description> | ||||
|       <gnome:userid>otaylor</gnome:userid> | ||||
|     </foaf:Person> | ||||
|   </maintainer> | ||||
|   <maintainer> | ||||
|     <foaf:Person> | ||||
|       <foaf:name>Florian Müllner</foaf:name> | ||||
|       <foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" /> | ||||
|       <gnome:userid>fmuellner</gnome:userid> | ||||
|     </foaf:Person> | ||||
|   </maintainer> | ||||
| </Project> | ||||
|   | ||||
| @@ -80,7 +80,6 @@ sr@latin | ||||
| sv | ||||
| ta | ||||
| te | ||||
| tg | ||||
| th | ||||
| tk | ||||
| tr | ||||
|   | ||||
| @@ -1,10 +1,7 @@ | ||||
| # List of source files containing translatable strings. | ||||
| # Please keep this file sorted alphabetically. | ||||
| src/50-mutter-navigation.xml.in | ||||
| src/50-mutter-system.xml.in | ||||
| src/50-mutter-windows.xml.in | ||||
| src/compositor/compositor.c | ||||
| src/compositor/meta-background.c | ||||
| src/core/bell.c | ||||
| src/core/core.c | ||||
| src/core/delete.c | ||||
|   | ||||
							
								
								
									
										184
									
								
								po/ast.po
									
									
									
									
									
								
							
							
						
						
									
										184
									
								
								po/ast.po
									
									
									
									
									
								
							| @@ -37,6 +37,7 @@ msgstr "Petición d'información ventana desconocida: %d" | ||||
| #. Translators: %s is a window title | ||||
| #: ../src/core/delete.c:95 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<tt>%s</tt> is not responding." | ||||
| msgstr "<tt>%s</tt> nun ta respondiendo." | ||||
|  | ||||
| @@ -121,6 +122,7 @@ msgstr "Comandu de terminal nun definíu.\n" | ||||
|  | ||||
| #: ../src/core/main.c:130 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| @@ -259,6 +261,7 @@ msgstr "Error axustando númberu d'arees de trabayu a %d: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2028 ../src/core/prefs.c:2531 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Espaciu de Trabayu %d" | ||||
|  | ||||
| @@ -272,6 +275,7 @@ msgstr "\"%s\" atopau na base de datos de configuración nun ye un valor válidu | ||||
|  | ||||
| #: ../src/core/prefs.c:2612 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting name for workspace %d to \"%s\": %s\n" | ||||
| msgstr "Fallu al afitar nome pal espaciu de trabayu %d a \"%s\": %s\n" | ||||
|  | ||||
| @@ -282,16 +286,19 @@ msgstr "Fallu al afitar l'estáu del compositor: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2845 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting clutter plugin list: %s\n" | ||||
| msgstr "Fallu al afitar la llista desordenada de plugin: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2889 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting live hidden windows status status: %s\n" | ||||
| msgstr "Fallu al afitar l'estáu de les ventanes anubríes: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2917 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting no tab popup status: %s\n" | ||||
| msgstr "Fallu al afitar l'estáu de les llingüetes emerxentes: %s\n" | ||||
|  | ||||
| @@ -351,6 +358,7 @@ msgstr "Falló analizar ficheru de sesión guardáu: %s\n" | ||||
|  | ||||
| #: ../src/core/session.c:1198 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<mutter_session> attribute seen but we already have the session ID" | ||||
| msgstr "Vióse l'atributu <mutter_session> pero yá tenemos la ID de sesión" | ||||
|  | ||||
| @@ -396,6 +404,7 @@ msgstr "Abiertu archivu log %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:139 ../src/tools/mutter-message.c:176 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter compilose ensin sofitu pal mou testu\n" | ||||
|  | ||||
| @@ -490,19 +499,19 @@ msgid "" | ||||
| msgstr "La propiedá %s del ventanu 0x%lx contien un códigu UTF-8 non válidu pal " | ||||
| "elementu %d na llista\n" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:88 ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #: ../src/include/all-keybindings.h:88 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Cambiar a espaciu de trabayu 1" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:90 ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #: ../src/include/all-keybindings.h:90 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Cambiar a espaciu de trabayu 2" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:92 ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #: ../src/include/all-keybindings.h:92 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Cambiar a espaciu de trabayu 3" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:94 ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #: ../src/include/all-keybindings.h:94 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Cambiar a espaciu de trabayu 4" | ||||
|  | ||||
| @@ -631,57 +640,47 @@ msgstr "Saca una semeya d'una ventana" | ||||
| msgid "Run a terminal" | ||||
| msgstr "Executar una terminal" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:271 ../src/50-mutter-windows.xml.in.h:1 | ||||
| #: ../src/include/all-keybindings.h:271 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Activar el menú de la ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:274 ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:274 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a modu pantalla completa\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a mou pantalla completa" | ||||
| msgstr "Camudar a modu pantalla completa" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:276 ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:276 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a estáu maximizáu\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Conmutar l'estáu maximizáu" | ||||
| msgstr "Camudar a estáu maximizáu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:278 | ||||
| msgid "Toggle whether a window will always be visible over other windows" | ||||
| msgstr "Conmutar si una ventana siempres se verá encima d'otres ventanes" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:280 ../src/50-mutter-windows.xml.in.h:4 | ||||
| #: ../src/include/all-keybindings.h:280 | ||||
| msgid "Maximize window" | ||||
| msgstr "Maximizar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:282 ../src/50-mutter-windows.xml.in.h:12 | ||||
| #: ../src/include/all-keybindings.h:282 | ||||
| msgid "Restore window" | ||||
| msgstr "Restaurar la ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:284 ../src/50-mutter-windows.xml.in.h:15 | ||||
| #: ../src/include/all-keybindings.h:284 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Activa estáu endolcáu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:286 ../src/50-mutter-windows.xml.in.h:7 | ||||
| #: ../src/include/all-keybindings.h:286 | ||||
| msgid "Minimize window" | ||||
| msgstr "Minimizar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:288 ../src/50-mutter-windows.xml.in.h:2 | ||||
| #: ../src/include/all-keybindings.h:288 | ||||
| msgid "Close window" | ||||
| msgstr "Zarrar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:290 ../src/50-mutter-windows.xml.in.h:8 | ||||
| #: ../src/include/all-keybindings.h:290 | ||||
| msgid "Move window" | ||||
| msgstr "Mover ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:292 ../src/50-mutter-windows.xml.in.h:11 | ||||
| #: ../src/include/all-keybindings.h:292 | ||||
| msgid "Resize window" | ||||
| msgstr "Cambiar el tamañu la ventana" | ||||
|  | ||||
| @@ -690,22 +689,18 @@ msgid "Toggle whether window is on all workspaces or just one" | ||||
| msgstr "Conmutar si la ventana apaez en toles árees de trabayu o namái nuna" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:299 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Mover ventana al espaciu de trabayu 1" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:302 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Mover ventana al espaciu de trabayu 2" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:305 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Mover ventana al espaciu de trabayu 3" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:308 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Mover ventana al espaciu de trabayu 4" | ||||
|  | ||||
| @@ -741,24 +736,19 @@ msgstr "Mover ventana al espaciu de trabayu 11" | ||||
| msgid "Move window to workspace 12" | ||||
| msgstr "Mover ventana al espaciu de trabayu 12" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:344 ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #: ../src/include/all-keybindings.h:344 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Mover ventana un espaciu de trabayu a manzorga" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:347 ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:347 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Mover ventana un espaciu de trabayu a derecha\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Mover ventana un espaciu de trabayu a madrecha" | ||||
| msgstr "Mover ventana un espaciu de trabayu a derecha" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:350 ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #: ../src/include/all-keybindings.h:350 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Mover ventana un espaciu de trabayu p'arriba" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:353 ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #: ../src/include/all-keybindings.h:353 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Mover ventana un espaciu de trabayu p'abaxo" | ||||
|  | ||||
| @@ -767,29 +757,19 @@ msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| msgstr "" | ||||
| "Llevantar la ventana si ta cubierta por otra ventana, minimizala n'otru casu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:358 ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:358 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Poner el ventanu en primer planu\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Poner la ventana en primer planu" | ||||
| msgstr "Poner el ventanu en primer planu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:360 ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:360 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Ventanu más baxu per debaxo d'otros ventanos\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Ventana más baxa per debaxo d'otres ventanes" | ||||
| msgstr "Ventanu más baxu per debaxo d'otros ventanos" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:364 ../src/50-mutter-windows.xml.in.h:6 | ||||
| #: ../src/include/all-keybindings.h:364 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Maximizar ventana verticalmente" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:368 ../src/50-mutter-windows.xml.in.h:5 | ||||
| #: ../src/include/all-keybindings.h:368 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Maximizar ventana horizontalmente" | ||||
|  | ||||
| @@ -1003,6 +983,7 @@ msgstr "Espaciu de Trabayu %d%n" | ||||
|  | ||||
| #: ../src/ui/menu.c:213 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Workspace 1_0" | ||||
| msgstr "Espaciu de Trabayu 1_0" | ||||
|  | ||||
| @@ -1743,6 +1724,7 @@ msgstr "Nun se permite testu dientro del elementu <%s>" | ||||
| #: ../src/ui/theme-parser.c:3748 ../src/ui/theme-parser.c:3760 | ||||
| #: ../src/ui/theme-parser.c:3772 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> especificáu dos vegaes pa esti tema" | ||||
|  | ||||
| @@ -1954,96 +1936,6 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "%d espresiones de coordenaes interpretaes en %g segundos (%g segundos de " | ||||
| "media)\n" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Anubrir toles ventanes normales" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Mover al área de trabayu d'arriba" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Mover al área de trabayu d'abaxo" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Mover al área de trabayu de la izquierda" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Mover al área de trabayu de la derecha" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navegación" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "Movese ente aplicaciones" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "Cambiar ente controles del sistema" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Movese ente los controles del sistema direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Cambiar ventanes direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Movese ente les ventanes d'una aplicación direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Movese ente les ventanes d'una aplicación" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Amosar el resume d'actividaes" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Amosar l'elementu «executar comando»" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Llevantar la ventana si ta cubierta, minimizala n'otru casu" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Conmutar la ventana en toles árees de trabayu o namái nuna" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Windows" | ||||
| msgstr "Ventanes" | ||||
|  | ||||
| #~ msgid "Desktop" | ||||
| #~ msgstr "Escritoriu" | ||||
|  | ||||
|   | ||||
							
								
								
									
										2743
									
								
								po/bn_IN.po
									
									
									
									
									
								
							
							
						
						
									
										2743
									
								
								po/bn_IN.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										684
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										684
									
								
								po/en_GB.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										313
									
								
								po/eo.po
									
									
									
									
									
								
							
							
						
						
									
										313
									
								
								po/eo.po
									
									
									
									
									
								
							| @@ -1493,260 +1493,17 @@ msgstr "Y-valoro estis %d, %d estis atendita" | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Ŝalti al laborspaco 1" | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "Ŝalti al laborspaco 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Ŝalti al laborspaco 2" | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "Ŝalti al laborspaco 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Ŝalti al laborspaco 3" | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "Ŝalti al laborspaco 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Ŝalti al laborspaco 4" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Aktivigi la fenestromenuon" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Baskuligi tutekranan reĝimon" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Maximize window" | ||||
| msgstr "Maksimumigi la fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Restore window" | ||||
| msgstr "Restaŭri fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Minimize window" | ||||
| msgstr "Minimumigi fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Close window" | ||||
| msgstr "Fermi la fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Move window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Resize window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Ŝanĝi la fenestrograndon\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Ŝanĝi fenestrograndon" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al laborspaco 1\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al laborspaco 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al laborspaco 2\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al laborspaco 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al laborspaco 3\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al laborspaco 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al laborspaco 4\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al laborspaco 4" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al la maldekstra laborspaco\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al la maldekstra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al la dekstra laborspaco\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al la dekstra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al la supra laborspaco\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al la supra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi la fenestron al la suba laborspaco\n" | ||||
| "#-#-#-#-#  eo.po (mutter)  #-#-#-#-#\n" | ||||
| "Movi fenestron al la suba laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Vertikale maksimumigi la fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Horizontale maksimumigi la fenestron" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navigado" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Ŝalti fenestrojn de aplikaĵo" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Kaŝi ĉiujn normalajn fenestrojn" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Movi al la maldekstra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Movi al la dekstra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Movi al la supra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Movi al la malsupra laborspaco" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Sistemo" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "" | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "Ŝalti al laborspaco 4" | ||||
|  | ||||
| #~ msgid "Switch to workspace 5" | ||||
| #~ msgstr "Ŝalti al laborspaco 5" | ||||
| @@ -1841,6 +1598,42 @@ msgstr "" | ||||
| #~ msgid "Run a terminal" | ||||
| #~ msgstr "Ruli terminalon" | ||||
|  | ||||
| #~ msgid "Activate the window menu" | ||||
| #~ msgstr "Aktivigi la fenestromenuon" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "Baskuligi tutekranan reĝimon" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "Maksimumigi la fenestron" | ||||
|  | ||||
| #~ msgid "Restore window" | ||||
| #~ msgstr "Restaŭri fenestron" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "Minimumigi fenestron" | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "Fermi la fenestron" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "Movi la fenestron" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "Ŝanĝi la fenestrograndon" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 1" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 2" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 3" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 4" | ||||
|  | ||||
| #~ msgid "Move window to workspace 5" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 5" | ||||
|  | ||||
| @@ -1865,6 +1658,24 @@ msgstr "" | ||||
| #~ msgid "Move window to workspace 12" | ||||
| #~ msgstr "Movi la fenestron al laborspaco 12" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "Movi la fenestron al la maldekstra laborspaco" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "Movi la fenestron al la dekstra laborspaco" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "Movi la fenestron al la supra laborspaco" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "Movi la fenestron al la suba laborspaco" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "Vertikale maksimumigi la fenestron" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "Horizontale maksimumigi la fenestron" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "There was an error running <tt>%s</tt>:\n" | ||||
| #~ "\n" | ||||
|   | ||||
							
								
								
									
										220
									
								
								po/et.po
									
									
									
									
									
								
							
							
						
						
									
										220
									
								
								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, 2013. | ||||
| # Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012. | ||||
| # | ||||
| 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-03-12 18:53+0000\n" | ||||
| "PO-Revision-Date: 2013-03-12 20:55+0300\n" | ||||
| "POT-Creation-Date: 2012-03-11 22:19+0000\n" | ||||
| "PO-Revision-Date: 2012-03-12 00:47+0200\n" | ||||
| "Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n" | ||||
| "Language-Team: Estonian <>\n" | ||||
| "Language: et\n" | ||||
| @@ -24,141 +24,9 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n!=1);\n" | ||||
|  | ||||
| msgid "Navigation" | ||||
| msgstr "Navigeerimine" | ||||
|  | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Akna liigutamine 1. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Akna liigutamine 2. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Akna liigutamine 3. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Akna liigutamine 4. tööalale" | ||||
|  | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Akna tõstmine vasakpoolsele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Akna tõstmine parempoolsele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Akna tõstmine ülemisele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Akna tõstmine alumisele tööalale" | ||||
|  | ||||
| msgid "Switch applications" | ||||
| msgstr "Rakenduste vahetamine" | ||||
|  | ||||
| msgid "Switch windows" | ||||
| msgstr "Akende vahetamine" | ||||
|  | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Rakenduse akende vahetamine" | ||||
|  | ||||
| msgid "Switch system controls" | ||||
| msgstr "Süsteemi juhtalade vahetamine" | ||||
|  | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Akende kohene vahetamine" | ||||
|  | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Rakenduse akende kohene vahetamine" | ||||
|  | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Süsteemi juhtalade kohene vahetamine" | ||||
|  | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Kõigi tavaliste akende peitmine" | ||||
|  | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "1. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "2. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "3. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "4. tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Vasakpoolsele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Parempoolsele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Ülemisele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Alumisele tööalale liikumine" | ||||
|  | ||||
| msgid "System" | ||||
| msgstr "Süsteem" | ||||
|  | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Käsuviiba kuvamine" | ||||
|  | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Tegevuste ülevaate avamine" | ||||
|  | ||||
| msgid "Windows" | ||||
| msgstr "Aknad" | ||||
|  | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Aknamenüü avamine" | ||||
|  | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Täisekraanoleku vahetamine" | ||||
|  | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Maksimeeritud oleku vahetamine" | ||||
|  | ||||
| msgid "Maximize window" | ||||
| msgstr "Akna maksimeerimine" | ||||
|  | ||||
| msgid "Restore window" | ||||
| msgstr "Akna taastamine" | ||||
|  | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Varjatud oleku vahetamine" | ||||
|  | ||||
| msgid "Close window" | ||||
| msgstr "Akna sulgemine" | ||||
|  | ||||
| msgid "Hide window" | ||||
| msgstr "Peida aken" | ||||
|  | ||||
| msgid "Move window" | ||||
| msgstr "Akna liigutamine" | ||||
|  | ||||
| msgid "Resize window" | ||||
| msgstr "Akna suuruse muutmine" | ||||
|  | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Akna kõigil või ühel tööalal olemise vahetamine" | ||||
|  | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Akna tõstmine, kui see on kaetud, muul juhul langetamine" | ||||
|  | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Akna tõstmine teiste kohale" | ||||
|  | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Akna langetamine teiste taha" | ||||
|  | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Akna vertikaalne maksimeerimine" | ||||
|  | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Akna horisontaalne maksimeerimine" | ||||
|  | ||||
| msgid "View split on left" | ||||
| msgstr "Vaade poolitatakse vasakult" | ||||
|  | ||||
| @@ -173,9 +41,6 @@ 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" | ||||
|  | ||||
| @@ -184,8 +49,8 @@ msgid "Unknown window information request: %d" | ||||
| msgstr "Tundmatu aknateabe päring: %d" | ||||
|  | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "„%s” ei vasta." | ||||
| msgid "<tt>%s</tt> is not responding." | ||||
| msgstr "<tt>%s</tt> ei vasta." | ||||
|  | ||||
| msgid "Application is not responding." | ||||
| msgstr "Rakendus ei vasta." | ||||
| @@ -217,10 +82,6 @@ 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" | ||||
|  | ||||
| @@ -267,8 +128,8 @@ msgstr "" | ||||
| msgid "Print version" | ||||
| msgstr "Versiooni printimine" | ||||
|  | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Millist Mutteri pluginat kasutada" | ||||
| msgid "Comma-separated list of compositor plugins" | ||||
| msgstr "Komaga eraldatud nimekiri komposiitmontaaži pluginatest" | ||||
|  | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| @@ -492,6 +353,16 @@ msgstr "" | ||||
| "Kui märgitud, siis eraldi tiitliribade asemel on moodaalsed dialoogid " | ||||
| "emaakna tiitliribade küljes ning liiguvad koos emaaknaga." | ||||
|  | ||||
| msgid "Live Hidden Windows" | ||||
| msgstr "Varjatud akende aktiivsus" | ||||
|  | ||||
| msgid "" | ||||
| "Determines whether hidden windows (i.e., minimized windows and windows on " | ||||
| "other workspaces than the current one) should be kept alive." | ||||
| msgstr "" | ||||
| "Määrab, kas varjatud aknaid (nt minimeeritud ja teistel tööaladel aknad) " | ||||
| "hoitakse elus." | ||||
|  | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "Akna ümberpaigutamine selle lohistamisel ekraani serva" | ||||
|  | ||||
| @@ -535,17 +406,6 @@ msgstr "" | ||||
| "Kui märgitud, siis on hüpikaken ja esiletõstmise raam keelatud akende " | ||||
| "vahetamisel." | ||||
|  | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Fookusemuutused lükatakse edasi kuni kursor peatub" | ||||
|  | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| msgstr "" | ||||
| "Kui tõene ning fookusrežiim on kas \"sloppy\" või \"mouse\", siis fookust ei " | ||||
| "vahetata kohe, kui kursor aknale liigub, vaid alles pärast kursori peatumist." | ||||
|  | ||||
| msgid "Draggable border width" | ||||
| msgstr "Lohistatava äärise laius." | ||||
|  | ||||
| @@ -556,16 +416,6 @@ 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" | ||||
|  | ||||
| @@ -576,6 +426,39 @@ msgstr "Tabulaatori hüpikakna katkestamine" | ||||
| msgid "Usage: %s\n" | ||||
| msgstr "Kasutamine: %s\n" | ||||
|  | ||||
| msgid "Close Window" | ||||
| msgstr "Sulge aken" | ||||
|  | ||||
| msgid "Window Menu" | ||||
| msgstr "Aknamenüü" | ||||
|  | ||||
| msgid "Minimize Window" | ||||
| msgstr "Akna minimeerimine" | ||||
|  | ||||
| msgid "Maximize Window" | ||||
| msgstr "Akna maksimeerimine" | ||||
|  | ||||
| msgid "Restore Window" | ||||
| msgstr "Akna taastamine" | ||||
|  | ||||
| msgid "Roll Up Window" | ||||
| msgstr "Akna kokkukerimine" | ||||
|  | ||||
| msgid "Unroll Window" | ||||
| msgstr "Akna lahtikerimine" | ||||
|  | ||||
| msgid "Keep Window On Top" | ||||
| msgstr "Akna kõige pealmiseks määramine" | ||||
|  | ||||
| msgid "Remove Window From Top" | ||||
| msgstr "Eemalda aken kõige pealmise kohalt" | ||||
|  | ||||
| msgid "Always On Visible Workspace" | ||||
| msgstr "Alati nähtaval tööalal" | ||||
|  | ||||
| msgid "Put Window On Only One Workspace" | ||||
| msgstr "Tõsta aken ainult ühele tööalale" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| msgid "Mi_nimize" | ||||
| msgstr "_Minimeeri" | ||||
| @@ -1434,6 +1317,3 @@ 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" | ||||
|   | ||||
							
								
								
									
										360
									
								
								po/fa.po
									
									
									
									
									
								
							
							
						
						
									
										360
									
								
								po/fa.po
									
									
									
									
									
								
							| @@ -20,7 +20,8 @@ msgstr "" | ||||
| "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" | ||||
| "X-Poedit-SourceCharset: utf-8\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17 | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #| msgid "/_Windows" | ||||
| msgid "Windows" | ||||
| msgstr "پنجرهها" | ||||
|  | ||||
| @@ -1485,291 +1486,6 @@ msgstr "مقدار y %Id بود، %Id انتظار میرفت" | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (متوسط %Ig ثانیه)\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Close window" | ||||
| msgstr "بستن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "پایین بردن پنجره زیر پنجرههای دیگر" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Maximize window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "حداکثر کردن پنجره\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "بیشینه کردن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "حداکثر کردن افقی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "حداکثر کردن عمودی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Minimize window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "حداقل کردن پنجره\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "کمینه کردن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window" | ||||
| msgstr "جابهجایی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری پایینی\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری پایینی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری چپ \n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری چپ " | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری راست\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری راست" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری بالایی\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری بالایی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۱\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۱" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۲\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۲" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "نقلمکان پنجره به فضای کاری ۳\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۳" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۴\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۴" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "پیش آوردن پنجره روی همهی پنجرهها" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Resize window" | ||||
| msgstr "تغییر اندازهی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۱\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۱" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۲\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۲" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۳\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۳" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۴\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۴" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "ضامن حالت تمام صفحه" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "ضامن همیشه در وضیعت حداکثر\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "ضامن همیشه در وضعیت حداکثر" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "ضامن وضعیت سایه خورده" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "Hide all normal windows and set focus to the desktop" | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "مخفی کردن همهی پنجرههای معمول" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Left" | ||||
| msgid "Move to workspace above" | ||||
| msgstr "جابهجایی به فضایکاری _چپ" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Down" | ||||
| msgid "Move to workspace below" | ||||
| msgstr "جابهجایی به فضایکاری پایین" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Left" | ||||
| msgid "Move to workspace left" | ||||
| msgstr "جابهجایی به فضایکاری سمت چپ" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace R_ight" | ||||
| msgid "Move to workspace right" | ||||
| msgstr "جابهجایی به فضایکاری سمت راست" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "جابهجایی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "تعویض برنامهها" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "تعویض کنترلهای سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "تعویض مستقیمِ کنترلهای سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "تعویض مستیقیم پنجرهها" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| #| msgid "Move between windows of an application immediately" | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "تعویض مستقیمِ پنجرههای یک برنامه" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| #| msgid "Move between windows of an application immediately" | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "تعویض پنجرههای یک برنامه" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "نمایش نمایکلی فعالیتها" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| #| msgid "Show the panel's main menu" | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "نمایش خط فرمان اجرا" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Activate the window menu" | ||||
| msgstr "فعال کردن منوی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| #| msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "بالا آوردن پنجره در صورتی که پوشیده شده است، در غیر اینصورت پایین برود" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Restore window" | ||||
| msgstr "بازگرداندن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| #| msgid "Toggle whether window is on all workspaces or just one" | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "تغییر حالت پنجره در یک یا تمام فضاهایکاری" | ||||
|  | ||||
| #~ msgid "Failed to parse message \"%s\" from dialog process\n" | ||||
| #~ msgstr "شکست در تجزیه پیغام «%s» از پردازش محاوره\n" | ||||
|  | ||||
| @@ -1906,6 +1622,9 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "(کلیک راست) میشود. تغییردهنده به صورت مثلاً«<Alt>» یا «<Super>» " | ||||
| #~ "نمایش داده میشود." | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "بستن پنجره" | ||||
|  | ||||
| #~ msgid "Commands to run in response to keybindings" | ||||
| #~ msgstr "فرمانهایی که در پاسخ به کلیدهای مقید اجرا میشوند" | ||||
|  | ||||
| @@ -1984,6 +1703,21 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgstr "" | ||||
| #~ "اگر درست بود از قابلیت کاربری در قبال استفادهی کمتر از منابع صرف نظر شود" | ||||
|  | ||||
| #~ msgid "Lower window below other windows" | ||||
| #~ msgstr "پایین بردن پنجره زیر پنجرههای دیگر" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "حداکثر کردن پنجره" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "حداکثر کردن افقی پنجره" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "حداکثر کردن عمودی پنجره" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "حداقل کردن پنجره" | ||||
|  | ||||
| #~ msgid "Move backward between panels and the desktop immediately" | ||||
| #~ msgstr "جابهجایی آنی به عقب بین تابلو و رومیزی" | ||||
|  | ||||
| @@ -2005,6 +1739,24 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Move focus backwards between windows using popup display" | ||||
| #~ msgstr "انتقال تمرکز به عقب بین پنجرهها با نمایش واشو" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "جابهجایی پنجره" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری پایینی" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری چپ " | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری راست" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری بالایی" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱" | ||||
|  | ||||
| #~ msgid "Move window to workspace 10" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱۰" | ||||
|  | ||||
| @@ -2014,6 +1766,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Move window to workspace 12" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱۲" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۲" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "نقلمکان پنجره به فضای کاری ۳" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۴" | ||||
|  | ||||
| #~ msgid "Move window to workspace 5" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۵" | ||||
|  | ||||
| @@ -2043,6 +1804,12 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "تعداد فضاهای کاری. باید بیش از صفر باشد و حداکثر مشخصی دارد (برای این که " | ||||
| #~ "اتفاقی رومیزیتان را با درخواست ۳۴ میلیون فضای کاری از بین نبرید)." | ||||
|  | ||||
| #~ msgid "Raise window above other windows" | ||||
| #~ msgstr "پیش آوردن پنجره روی همهی پنجرهها" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "تغییر اندازهی پنجره" | ||||
|  | ||||
| #~ msgid "Run a defined command" | ||||
| #~ msgstr "اجرای یک فرمان تعریف شده" | ||||
|  | ||||
| @@ -2083,6 +1850,9 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "بعضی از دور زدنها دورزدن کمبودهای خود قواعد جزئی هستند، بنابراین بعضی " | ||||
| #~ "وقتها اشکال در حالت دور زدن بدون دستکاری قواعد قبل رفع نیست." | ||||
|  | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "تعویض به فضای کاری ۱" | ||||
|  | ||||
| #~ msgid "Switch to workspace 10" | ||||
| #~ msgstr "تعویض به فضای کاری ۱۰" | ||||
|  | ||||
| @@ -2092,6 +1862,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Switch to workspace 12" | ||||
| #~ msgstr "تعویض به فضای کاری ۱۲" | ||||
|  | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "تعویض به فضای کاری ۲" | ||||
|  | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "تعویض به فضای کاری ۳" | ||||
|  | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "تعویض به فضای کاری ۴" | ||||
|  | ||||
| #~ msgid "Switch to workspace 5" | ||||
| #~ msgstr "تعویض به فضای کاری ۵" | ||||
|  | ||||
| @@ -3146,6 +2925,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Toggle always on top state" | ||||
| #~ msgstr "ضامن همیشه در وضعیت بالایی" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "ضامن حالت تمام صفحه" | ||||
|  | ||||
| #~ msgid "Toggle maximization state" | ||||
| #~ msgstr "ضامن همیشه در وضیعت حداکثر" | ||||
|  | ||||
| #~ msgid "Toggle shaded state" | ||||
| #~ msgstr "ضامن وضعیت سایه خورده" | ||||
|  | ||||
| #~ msgid "Toggle window on all workspaces" | ||||
| #~ msgstr "ضامن پنجره در تمام فضاهای کاری" | ||||
|  | ||||
|   | ||||
							
								
								
									
										287
									
								
								po/nl.po
									
									
									
									
									
								
							
							
						
						
									
										287
									
								
								po/nl.po
									
									
									
									
									
								
							| @@ -21,7 +21,7 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17 | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| msgid "Windows" | ||||
| msgstr "Vensters" | ||||
|  | ||||
| @@ -1589,220 +1589,17 @@ msgstr "" | ||||
| "%d coördinatenexpressies verwerkt in %g seconden (gemiddelde van %g " | ||||
| "seconden)\n" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Schakelen naar werkblad 1" | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "Schakelen naar werkblad 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Schakelen naar werkblad 2" | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "Schakelen naar werkblad 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Schakelen naar werkblad 3" | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "Schakelen naar werkblad 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Schakelen naar werkblad 4" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Venstermenu activeren" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Volledig scherm-modus omschakelen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Maximalisatie in- of uitschakelen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Maximize window" | ||||
| msgstr "Venster maximaliseren" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Restore window" | ||||
| msgstr "Venster herstellen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Oprollen in- of uitschakelen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Minimize window" | ||||
| msgstr "Venster minimaliseren" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Close window" | ||||
| msgstr "Venster sluiten" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window" | ||||
| msgstr "Venster verplaatsen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Resize window" | ||||
| msgstr "Vensterafmetingen veranderen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Venster verplaatsen naar werkblad 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Venster verplaatsen naar werkblad 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Venster verplaatsen naar werkblad 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Venster verplaatsen naar werkblad 4" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Venster één werkblad naar links verplaatsen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Venster één werkblad naar rechts verplaatsen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Venster één werkblad naar boven verplaatsen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Venster één werkblad naar beneden verplaatsen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Venster voor andere vensters brengen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Venster achter andere vensters brengen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Een venster verticaal maximaliseren" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Een venster horizontaal maximaliseren" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Alle normale vensters verbergen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Verplaatsen naar werkblad hierboven" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Verplaatsen naar werkblad hieronder" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Verplaatsen naar werkblad links" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Verplaatsen naar werkblad rechts" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navigatie" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "Tussen toepassingen schakelen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "Systeemschermen wisselen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Direct tussen systeemschermen schakelen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Direct tussen vensters schakelen" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Direct wisselen van venster binnen een toepassing" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Wisselen van venster binnen een toepassing" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Het activiteitenoverzicht tonen" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Het opdrachtregelvenster tonen" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Systeem" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Deels bedekte vensters naar voren halen of anders naar achter halen" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "‘Venster is op alle werkbladen zichtbaar’ in- of uitschakelen" | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "Schakelen naar werkblad 4" | ||||
|  | ||||
| #~ msgid "Switch to workspace 5" | ||||
| #~ msgstr "Schakelen naar werkblad 5" | ||||
| @@ -1902,12 +1699,54 @@ msgstr "‘Venster is op alle werkbladen zichtbaar’ in- of uitschakelen" | ||||
| #~ msgid "Run a terminal" | ||||
| #~ msgstr "Een terminal opstarten" | ||||
|  | ||||
| #~ msgid "Activate the window menu" | ||||
| #~ msgstr "Venstermenu activeren" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "Volledig scherm-modus omschakelen" | ||||
|  | ||||
| #~ msgid "Toggle maximization state" | ||||
| #~ msgstr "Maximalisatie in- of uitschakelen" | ||||
|  | ||||
| #~ msgid "Toggle whether a window will always be visible over other windows" | ||||
| #~ msgstr "‘Altijd bovenop’-instelling omschakelen" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "Venster maximaliseren" | ||||
|  | ||||
| #~ msgid "Restore window" | ||||
| #~ msgstr "Venster herstellen" | ||||
|  | ||||
| #~ msgid "Toggle shaded state" | ||||
| #~ msgstr "Oprollen in- of uitschakelen" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "Venster minimaliseren" | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "Venster sluiten" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "Venster verplaatsen" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "Vensterafmetingen veranderen" | ||||
|  | ||||
| #~ msgid "Toggle whether window is on all workspaces or just one" | ||||
| #~ msgstr "‘Venster is op alle werkbladen zichtbaar’ omschakelen" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 1" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 2" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 3" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 4" | ||||
|  | ||||
| #~ msgid "Move window to workspace 5" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 5" | ||||
|  | ||||
| @@ -1932,11 +1771,35 @@ msgstr "‘Venster is op alle werkbladen zichtbaar’ in- of uitschakelen" | ||||
| #~ msgid "Move window to workspace 12" | ||||
| #~ msgstr "Venster verplaatsen naar werkblad 12" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "Venster één werkblad naar links verplaatsen" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "Venster één werkblad naar rechts verplaatsen" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "Venster één werkblad naar boven verplaatsen" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "Venster één werkblad naar beneden verplaatsen" | ||||
|  | ||||
| #~ msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| #~ msgstr "" | ||||
| #~ "Venster naar boven halen indien overlapt door een ander venster, anders " | ||||
| #~ "naar beneden halen" | ||||
|  | ||||
| #~ msgid "Raise window above other windows" | ||||
| #~ msgstr "Venster voor andere vensters brengen" | ||||
|  | ||||
| #~ msgid "Lower window below other windows" | ||||
| #~ msgstr "Venster achter andere vensters brengen" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "Een venster verticaal maximaliseren" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "Een venster horizontaal maximaliseren" | ||||
|  | ||||
| #~ msgid "Move window to north-west (top left) corner" | ||||
| #~ msgstr "Venster verplaatsen naar de noordwest-hoek (linksboven)" | ||||
|  | ||||
|   | ||||
							
								
								
									
										721
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										721
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										27
									
								
								po/ro.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/ro.po
									
									
									
									
									
								
							| @@ -1944,33 +1944,6 @@ msgstr "" | ||||
| "Expresiile pentru coordonate %d parsate în %g secunde (o medie de %g " | ||||
| "secunde)\n" | ||||
|  | ||||
| #: ../src/50-mutter-launchers.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Launchers" | ||||
| msgstr "Lansatori" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navigare" | ||||
|  | ||||
| #: ../src/50-mutter-screenshot.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "Take a screenshot" | ||||
| msgid "Screenshots" | ||||
| msgstr "Capturi de ecran" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Sistem" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "/_Windows" | ||||
| msgid "Windows" | ||||
| msgstr "Ferestre" | ||||
|  | ||||
| #~ msgid "Window Management" | ||||
| #~ msgstr "Administrare ferestre" | ||||
|  | ||||
|   | ||||
							
								
								
									
										2943
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
							
						
						
									
										2943
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										257
									
								
								po/tr.po
									
									
									
									
									
								
							
							
						
						
									
										257
									
								
								po/tr.po
									
									
									
									
									
								
							| @@ -6,22 +6,22 @@ | ||||
| # Baris Cicek <baris@teamforce.name.tr>, 2004, 2005, 2008, 2009. | ||||
| # İlker DAĞLI <ilker@ilkerdagli.info>, 2011. | ||||
| # Muhammed EKEN <gnome@m-eken.com>, 2011. | ||||
| # Muhammet Kara <muhammetk@acikkaynak.name.tr>, 2011, 2012. | ||||
| # Muhammet Kara <muhammet.k@gmail.com>, 2011, 2012. | ||||
| 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-08-06 23:35+0000\n" | ||||
| "PO-Revision-Date: 2012-08-09 16:48+0000\n" | ||||
| "Last-Translator: Muhammet Kara <muhammetk@acikkaynak.name.tr>\n" | ||||
| "POT-Creation-Date: 2012-03-15 21:29+0000\n" | ||||
| "PO-Revision-Date: 2012-03-23 21:56+0000\n" | ||||
| "Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n" | ||||
| "Language-Team: Turkish <gnome-turk@gnome.org>\n" | ||||
| "Language: tr\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Lokalize 1.4\n" | ||||
| "X-Generator: Lokalize 1.2\n" | ||||
| "Plural-Forms: nplurals=1; plural=0;\n" | ||||
| "Language: tr\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| msgid "Windows" | ||||
| @@ -46,7 +46,7 @@ msgstr "" | ||||
| "\"%2$s\" monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi " | ||||
| "çalışıyor." | ||||
|  | ||||
| #: ../src/core/bell.c:320 | ||||
| #: ../src/core/bell.c:307 | ||||
| msgid "Bell event" | ||||
| msgstr "Etkinlik zili" | ||||
|  | ||||
| @@ -55,17 +55,16 @@ msgstr "Etkinlik zili" | ||||
| msgid "Unknown window information request: %d" | ||||
| msgstr "Bilinmeyen pencere bilgi isteği: %d" | ||||
|  | ||||
| #: ../src/core/delete.c:114 | ||||
| #: ../src/core/delete.c:111 | ||||
| #, c-format | ||||
| #| msgid "<tt>%s</tt> is not responding." | ||||
| msgid "%s is not responding." | ||||
| msgstr "%s yanıt vermiyor." | ||||
| msgid "<tt>%s</tt> is not responding." | ||||
| msgstr "<tt>%s</tt> cevap vermiyor." | ||||
|  | ||||
| #: ../src/core/delete.c:118 | ||||
| #: ../src/core/delete.c:114 | ||||
| msgid "Application is not responding." | ||||
| msgstr "Uygulama cevap vermiyor" | ||||
|  | ||||
| #: ../src/core/delete.c:123 | ||||
| #: ../src/core/delete.c:119 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| @@ -73,25 +72,25 @@ msgstr "" | ||||
| "Uygulamanın devam etmesi için bir müddet bekleyi seçebilirsiniz ya d a " | ||||
| "uygulamanın tamamen çıkması için onu zorlayabilirsiniz." | ||||
|  | ||||
| #: ../src/core/delete.c:130 | ||||
| #: ../src/core/delete.c:126 | ||||
| msgid "_Wait" | ||||
| msgstr "_Bekle" | ||||
|  | ||||
| #: ../src/core/delete.c:130 | ||||
| #: ../src/core/delete.c:126 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Sonlandır" | ||||
|  | ||||
| #: ../src/core/display.c:380 | ||||
| #: ../src/core/display.c:387 | ||||
| #, c-format | ||||
| msgid "Missing %s extension required for compositing" | ||||
| msgstr "Kompozisyon için gerekli olan %s eklentisi eksik" | ||||
|  | ||||
| #: ../src/core/display.c:446 | ||||
| #: ../src/core/display.c:453 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "X Pencere Sistemi '%s' ekranı açılamadı\n" | ||||
|  | ||||
| #: ../src/core/keybindings.c:844 | ||||
| #: ../src/core/keybindings.c:852 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Some other program is already using the key %s with modifiers %x as a " | ||||
| @@ -100,36 +99,36 @@ msgstr "" | ||||
| "%s tuşu %x değiştiricileriyle birlikte başka bir uygulama tarafından tuş " | ||||
| "bağıolarak kullanılıyor\n" | ||||
|  | ||||
| #: ../src/core/main.c:196 | ||||
| #: ../src/core/main.c:206 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Ortam yöneticisine olan bağlantıyı kapat" | ||||
|  | ||||
| #: ../src/core/main.c:202 | ||||
| #: ../src/core/main.c:212 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "Çalışan pencere yöneticisinin yerini al" | ||||
|  | ||||
| #: ../src/core/main.c:208 | ||||
| #: ../src/core/main.c:218 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Ortam yönetim ID'sini belirtin" | ||||
|  | ||||
| #: ../src/core/main.c:213 | ||||
| #: ../src/core/main.c:223 | ||||
| msgid "X Display to use" | ||||
| msgstr "Kullanılacak X Ekranı" | ||||
|  | ||||
| #: ../src/core/main.c:219 | ||||
| #: ../src/core/main.c:229 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "Ortamı kayıtlı dosyadan başlat" | ||||
|  | ||||
| #: ../src/core/main.c:225 | ||||
| #: ../src/core/main.c:235 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "X çağrılarını eşazamanlı yap" | ||||
|  | ||||
| #: ../src/core/main.c:494 | ||||
| #: ../src/core/main.c:504 | ||||
| #, c-format | ||||
| msgid "Failed to scan themes directory: %s\n" | ||||
| msgstr "Tema dizini taranırken hata oluştu: %s\n" | ||||
|  | ||||
| #: ../src/core/main.c:510 | ||||
| #: ../src/core/main.c:520 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not find a theme! Be sure %s exists and contains the usual themes.\n" | ||||
| @@ -156,10 +155,10 @@ msgid "Print version" | ||||
| msgstr "Sürümü yazdır" | ||||
|  | ||||
| #: ../src/core/mutter.c:60 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Kullanılacak Mutter eklentisi" | ||||
| msgid "Comma-separated list of compositor plugins" | ||||
| msgstr "Kompozisyon eklentilerinin listesi (virgül ile ayrılmış)" | ||||
|  | ||||
| #: ../src/core/prefs.c:1065 | ||||
| #: ../src/core/prefs.c:1077 | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| "behave properly.\n" | ||||
| @@ -167,13 +166,13 @@ msgstr "" | ||||
| "Hatalı uygulamalara yönelik çözümler devre dışı. Bazı uygulamalar düzgün " | ||||
| "işlemeyebilir.\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1140 | ||||
| #: ../src/core/prefs.c:1152 | ||||
| #, c-format | ||||
| msgid "Could not parse font description \"%s\" from GSettings key %s\n" | ||||
| msgstr "" | ||||
| "\"%s\" yazıtipi tanımlaması, %s GSettings anahtarından ayrıştırılamadı\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1206 | ||||
| #: ../src/core/prefs.c:1218 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for mouse button " | ||||
| @@ -182,7 +181,7 @@ msgstr "" | ||||
| "Yapılandırma veritabanında bulunan \"%s\", fare düğme düzenleyicisi olarak " | ||||
| "geçerli bir değer değil\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1724 | ||||
| #: ../src/core/prefs.c:1739 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "\"%s\" found in configuration database is not a valid value for keybinding " | ||||
| @@ -191,17 +190,17 @@ msgstr "" | ||||
| "Yapılandırma veritabanında bulunan \"%s\", \"%s\" tuş bağı olarak geçerli " | ||||
| "bir değer değil\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:1821 | ||||
| #: ../src/core/prefs.c:1836 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Çalışma Alanı %d" | ||||
|  | ||||
| #: ../src/core/screen.c:652 | ||||
| #: ../src/core/screen.c:730 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "'%2$s' X oturumundaki ekran %1$d geçersiz\n" | ||||
|  | ||||
| #: ../src/core/screen.c:668 | ||||
| #: ../src/core/screen.c:746 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Screen %d on display \"%s\" already has a window manager; try using the --" | ||||
| @@ -211,7 +210,7 @@ msgstr "" | ||||
| "geçerli pencere yöneticisinin yerine bir başkasını koymak için --replace " | ||||
| "seçeneğini kullanmayı deneyin.\n" | ||||
|  | ||||
| #: ../src/core/screen.c:695 | ||||
| #: ../src/core/screen.c:773 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Could not acquire window manager selection on screen %d display \"%s\"\n" | ||||
| @@ -219,13 +218,13 @@ msgstr "" | ||||
| "\"%2$s\" X oturumundaki ekran %1$d hangi pencere yöneticisine " | ||||
| "sahipöğrenilemedi\n" | ||||
|  | ||||
| #: ../src/core/screen.c:750 | ||||
| #: ../src/core/screen.c:828 | ||||
| #, c-format | ||||
| msgid "Screen %d on display \"%s\" already has a window manager\n" | ||||
| msgstr "" | ||||
| "\"%2$s\" X oturumundaki ekran %1$d bir pencere yöneticisine zaten sahip\n" | ||||
|  | ||||
| #: ../src/core/screen.c:935 | ||||
| #: ../src/core/screen.c:1013 | ||||
| #, c-format | ||||
| msgid "Could not release screen %d on display \"%s\"\n" | ||||
| msgstr "\"%2$s\" X oturumundaki ekran %1$d serberst bırakılamadı\"\n" | ||||
| @@ -287,44 +286,44 @@ msgstr "" | ||||
| "Bu pencereler, "geçerli ayarları kaydet" özelliğini desteklemiyor " | ||||
| "ve bir dahaki girişinizde elle yeniden başlatmanız gerekecek." | ||||
|  | ||||
| #: ../src/core/util.c:80 | ||||
| #: ../src/core/util.c:111 | ||||
| #, c-format | ||||
| msgid "Failed to open debug log: %s\n" | ||||
| msgstr "Hata ayıklama günlüğü açılamadı: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:90 | ||||
| #: ../src/core/util.c:121 | ||||
| #, c-format | ||||
| msgid "Failed to fdopen() log file %s: %s\n" | ||||
| msgstr "fdopen() günlük dosyası %s açılamadı: %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:96 | ||||
| #: ../src/core/util.c:127 | ||||
| #, c-format | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "%s günlük dosyası açıldı\n" | ||||
|  | ||||
| #: ../src/core/util.c:115 ../src/tools/mutter-message.c:149 | ||||
| #: ../src/core/util.c:146 ../src/tools/mutter-message.c:149 | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n" | ||||
|  | ||||
| #: ../src/core/util.c:259 | ||||
| #: ../src/core/util.c:290 | ||||
| msgid "Window manager: " | ||||
| msgstr "Pencere yöneticisi: " | ||||
|  | ||||
| #: ../src/core/util.c:407 | ||||
| #: ../src/core/util.c:438 | ||||
| msgid "Bug in window manager: " | ||||
| msgstr "Pencere yöneticisinde hata: " | ||||
|  | ||||
| #: ../src/core/util.c:438 | ||||
| #: ../src/core/util.c:471 | ||||
| msgid "Window manager warning: " | ||||
| msgstr "Pencere yöneticisi uyarısı: " | ||||
|  | ||||
| #: ../src/core/util.c:466 | ||||
| #: ../src/core/util.c:499 | ||||
| msgid "Window manager error: " | ||||
| msgstr "Pencere yöneticisi hatası: " | ||||
|  | ||||
| #. first time through | ||||
| #: ../src/core/window.c:7234 | ||||
| #: ../src/core/window.c:7269 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER " | ||||
| @@ -340,32 +339,32 @@ msgstr "" | ||||
| #. * MWM but not WM_NORMAL_HINTS are basically broken. We complain | ||||
| #. * about these apps but make them work. | ||||
| #. | ||||
| #: ../src/core/window.c:7899 | ||||
| #: ../src/core/window.c:7932 | ||||
| #, 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" | ||||
| "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 penceresi bir yandan yeniden boyutlandırılamaz olduğunu gösteren bir MWM " | ||||
| "ipucu verirken anlamsız bir biçimde en küçük (%d x %d) ve en büyük (%d x %d) " | ||||
| "boyut sınırlarını da atıyor.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:310 | ||||
| #: ../src/core/window-props.c:309 | ||||
| #, c-format | ||||
| msgid "Application set a bogus _NET_WM_PID %lu\n" | ||||
| msgstr "Uygulama geçersiz _NET_WM_PID %lu atadı\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:429 | ||||
| #: ../src/core/window-props.c:426 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (%s üzerinde)" | ||||
|  | ||||
| #: ../src/core/window-props.c:1484 | ||||
| #: ../src/core/window-props.c:1481 | ||||
| #, c-format | ||||
| msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n" | ||||
| msgstr "Geçersiz WM_TRANSIENT_FOR pencere 0x%lx belirtilen %s.\n" | ||||
|  | ||||
| #: ../src/core/window-props.c:1495 | ||||
| #: ../src/core/window-props.c:1492 | ||||
| #, c-format | ||||
| msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n" | ||||
| msgstr "WM_TRANSIENT_FOR penceresi 0x%lx  (%s için) döngü oluşturacak.\n" | ||||
| @@ -433,11 +432,23 @@ msgstr "" | ||||
| "birlikte hareket eder." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| msgid "Live Hidden Windows" | ||||
| msgstr "Çalışır Durumdaki Gizli Pencereler" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| msgid "" | ||||
| "Determines whether hidden windows (i.e., minimized windows and windows on " | ||||
| "other workspaces than the current one) should be kept alive." | ||||
| msgstr "" | ||||
| "Gizli pencerelerin (ö.r. küçültülmüş pencereler ve diğer çalışma alanındaki " | ||||
| "pencereler) çalışır bırakılıp bırakılmayacağını belirler." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| @@ -448,25 +459,26 @@ msgstr "" | ||||
| "şekilde yeniden boyutlandırılır. Ekranın tepedeki kenarına bırakılan " | ||||
| "pencereler ekranı tamamen kaplar." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Çalışma alanları dinamik olarak yönetilir" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
| "Çalışma alanlarının dinamik olarak mı yönetileceğini yoksa sabit sayıda " | ||||
| "çalışma alanı mı olacağını belirler (org.gnome.desktop.wm.preferences " | ||||
| "içindeki num-workspaces değişkeni tarafından belirlenir)." | ||||
| "çalışma alanı mı olacağını " | ||||
| "belirler (org.gnome.desktop.wm.preferences içindeki num-workspaces değişkeni " | ||||
| "tarafından belirlenir)." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "Sadece birincil monitördeki çalışma alanları" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| @@ -474,11 +486,11 @@ msgstr "" | ||||
| "Çalışma alanı değiştirilmesinin, tüm monitörlerdeki pencerelerde mi yoksa " | ||||
| "sadece birincil monitördekilerde mi gerçekleşeceğini belirler." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| msgid "No tab popup" | ||||
| msgstr "Sekme açılır penceresi yok" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| @@ -486,11 +498,11 @@ msgstr "" | ||||
| "Pencere geçişinde çerçeve vurgulanması ve açılır pencere kullanımının " | ||||
| "kapatılıp kapatılmayacağını belirler." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| msgid "Draggable border width" | ||||
| msgstr "Sürüklenebilir kenarlık genişliği" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "not enough, invisible borders will be added to meet this value." | ||||
| @@ -499,11 +511,11 @@ msgstr "" | ||||
| "kenarlıkları yetersiz gelirse, bu değere ulaşmak için görünmez kenarlıklar " | ||||
| "eklenir." | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Pencereyi, sekme açılır penceresinden seç" | ||||
|  | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| #: ../src/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Sekmeyi yeni pencerede açmayı iptal et" | ||||
|  | ||||
| @@ -711,49 +723,49 @@ msgstr "Mod5" | ||||
| msgid "%d x %d" | ||||
| msgstr "%d x %d" | ||||
|  | ||||
| #: ../src/ui/theme.c:234 | ||||
| #: ../src/ui/theme.c:253 | ||||
| msgid "top" | ||||
| msgstr "üst" | ||||
|  | ||||
| #: ../src/ui/theme.c:236 | ||||
| #: ../src/ui/theme.c:255 | ||||
| msgid "bottom" | ||||
| msgstr "alt" | ||||
|  | ||||
| #: ../src/ui/theme.c:238 | ||||
| #: ../src/ui/theme.c:257 | ||||
| msgid "left" | ||||
| msgstr "sol" | ||||
|  | ||||
| #: ../src/ui/theme.c:240 | ||||
| #: ../src/ui/theme.c:259 | ||||
| msgid "right" | ||||
| msgstr "sağ" | ||||
|  | ||||
| #: ../src/ui/theme.c:268 | ||||
| #: ../src/ui/theme.c:286 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify \"%s\" dimension" | ||||
| msgstr "çerçeve geometrisi \"%s\" boyutunu tanımlamıyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:287 | ||||
| #: ../src/ui/theme.c:305 | ||||
| #, c-format | ||||
| msgid "frame geometry does not specify dimension \"%s\" for border \"%s\"" | ||||
| msgstr "" | ||||
| "çerçeve geometrisi \"%s\" boyutunu \"%s\" pencere kenarı için tanımlamıyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:324 | ||||
| #: ../src/ui/theme.c:342 | ||||
| #, c-format | ||||
| msgid "Button aspect ratio %g is not reasonable" | ||||
| msgstr "%g kabul edilebilir bir düğme en-boy oranı değil" | ||||
|  | ||||
| #: ../src/ui/theme.c:336 | ||||
| #: ../src/ui/theme.c:354 | ||||
| #, c-format | ||||
| msgid "Frame geometry does not specify size of buttons" | ||||
| msgstr "Çerçeve geometrisi düğmelerin boyutunu tanımlamıyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1049 | ||||
| #: ../src/ui/theme.c:1067 | ||||
| #, c-format | ||||
| msgid "Gradients should have at least two colors" | ||||
| msgstr "Renk geçişlerinde en az iki renk olmalı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1201 | ||||
| #: ../src/ui/theme.c:1219 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK custom color specification must have color name and fallback in " | ||||
| @@ -762,7 +774,7 @@ msgstr "" | ||||
| "GTK özel renk belirtiminde parantez içinde renk adı ve fallback kelimesi yer " | ||||
| "almalıdır; örneğin, gtk:custom[foo,bar]; \"%s\" ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1217 | ||||
| #: ../src/ui/theme.c:1235 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-" | ||||
| @@ -771,7 +783,7 @@ msgstr "" | ||||
| "gtk:custom color_name parametresinin adında geçersiz karakter '%c'; sadece A-" | ||||
| "Za-z0-9-_ karakterleri geçerlidir" | ||||
|  | ||||
| #: ../src/ui/theme.c:1231 | ||||
| #: ../src/ui/theme.c:1249 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not " | ||||
| @@ -780,7 +792,7 @@ msgstr "" | ||||
| "Gtk:custom biçimi \"gtk:custom(color_name,fallback)\" şeklindedir; \"%s\" " | ||||
| "biçime uymuyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1276 | ||||
| #: ../src/ui/theme.c:1294 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] " | ||||
| @@ -790,7 +802,7 @@ msgstr "" | ||||
| "örneğin, gtk:fg[NORMAL] belirtiminde NORMAL, durumu gösterir; \"%s\" " | ||||
| "ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1290 | ||||
| #: ../src/ui/theme.c:1308 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "GTK color specification must have a close bracket after the state, e.g. gtk:" | ||||
| @@ -800,17 +812,17 @@ msgstr "" | ||||
| "örneğin, gtk:fg[NORMAL] belirtiminde NORMAL, durumu gösterir; \"%s\" " | ||||
| "ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1301 | ||||
| #: ../src/ui/theme.c:1319 | ||||
| #, c-format | ||||
| msgid "Did not understand state \"%s\" in color specification" | ||||
| msgstr "Renk belirtimindeki \"%s\" durumu anlaşılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1314 | ||||
| #: ../src/ui/theme.c:1332 | ||||
| #, c-format | ||||
| msgid "Did not understand color component \"%s\" in color specification" | ||||
| msgstr "Renk belirtimindeki \"%s\" renk bileşeni anlaşılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1343 | ||||
| #: ../src/ui/theme.c:1361 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the " | ||||
| @@ -819,17 +831,17 @@ msgstr "" | ||||
| "Renk karışımının doğru biçimi \"blend/bg_color/fg_color/alpha\"dır; \"%s\" " | ||||
| "bu biçime uymuyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1354 | ||||
| #: ../src/ui/theme.c:1372 | ||||
| #, c-format | ||||
| msgid "Could not parse alpha value \"%s\" in blended color" | ||||
| msgstr "Renk karışımındaki \"%s\" alfa değeri ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1364 | ||||
| #: ../src/ui/theme.c:1382 | ||||
| #, c-format | ||||
| msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0" | ||||
| msgstr "Renk karışımının alfa değeri \"%s\", 0.0 ile 1.0 arasında değil" | ||||
|  | ||||
| #: ../src/ui/theme.c:1411 | ||||
| #: ../src/ui/theme.c:1429 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format" | ||||
| @@ -837,27 +849,27 @@ msgstr "" | ||||
| "Gölgelendirmenin doğru biçimi \"shade/bas_color/factor\"dır; \"%s\" bu " | ||||
| "biçime uymuyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1422 | ||||
| #: ../src/ui/theme.c:1440 | ||||
| #, c-format | ||||
| msgid "Could not parse shade factor \"%s\" in shaded color" | ||||
| msgstr "Gölgeli rengin gölge katsayısı olan \"%s\" ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1432 | ||||
| #: ../src/ui/theme.c:1450 | ||||
| #, c-format | ||||
| msgid "Shade factor \"%s\" in shaded color is negative" | ||||
| msgstr "Gölgeli rengin gölge katsayısı olan \"%s\", negatif" | ||||
|  | ||||
| #: ../src/ui/theme.c:1461 | ||||
| #: ../src/ui/theme.c:1479 | ||||
| #, c-format | ||||
| msgid "Could not parse color \"%s\"" | ||||
| msgstr "\"%s\" rengi ayrıştırılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:1778 | ||||
| #: ../src/ui/theme.c:1790 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains character '%s' which is not allowed" | ||||
| msgstr "Kordinat ifadesi izin verilmeyen '%s' karakterini içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1805 | ||||
| #: ../src/ui/theme.c:1817 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contains floating point number '%s' which could not be " | ||||
| @@ -865,12 +877,12 @@ msgid "" | ||||
| msgstr "" | ||||
| "Kordinat ifadesi '%s' gerçel sayısını içeriyor ve bu sayı ayrıştırılamıyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1819 | ||||
| #: ../src/ui/theme.c:1831 | ||||
| #, c-format | ||||
| msgid "Coordinate expression contains integer '%s' which could not be parsed" | ||||
| msgstr "Kordinat ifadesi ayrıştırılamayan '%s' tamsayısını içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:1940 | ||||
| #: ../src/ui/theme.c:1953 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression contained unknown operator at the start of this text: " | ||||
| @@ -878,17 +890,17 @@ msgid "" | ||||
| msgstr "" | ||||
| "Kordinat ifadesi bu metnin başında bilinmeyen bir işleç içeriyor: \"%s\"" | ||||
|  | ||||
| #: ../src/ui/theme.c:1997 | ||||
| #: ../src/ui/theme.c:2010 | ||||
| #, c-format | ||||
| msgid "Coordinate expression was empty or not understood" | ||||
| msgstr "Kordinat ifadesi boş ya da anlaşılamadı" | ||||
|  | ||||
| #: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154 | ||||
| #: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165 | ||||
| #, c-format | ||||
| msgid "Coordinate expression results in division by zero" | ||||
| msgstr "Kordinat ifadesi sıfıra bölümle sonuçlanıyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2162 | ||||
| #: ../src/ui/theme.c:2173 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression tries to use mod operator on a floating-point number" | ||||
| @@ -896,23 +908,23 @@ msgstr "" | ||||
| "Kordinat ifadesi bir gerçel sayı üzerinde mod (kalan bulma) işlecini " | ||||
| "kullanmaya çalıştı" | ||||
|  | ||||
| #: ../src/ui/theme.c:2218 | ||||
| #: ../src/ui/theme.c:2229 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has an operator \"%s\" where an operand was expected" | ||||
| msgstr "Kordinat ifadesi işleneni beklenen \"%s\", işlecini içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2227 | ||||
| #: ../src/ui/theme.c:2238 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an operand where an operator was expected" | ||||
| msgstr "Kordinat ifadesi işleci beklenen bir işlenen içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2235 | ||||
| #: ../src/ui/theme.c:2246 | ||||
| #, c-format | ||||
| msgid "Coordinate expression ended with an operator instead of an operand" | ||||
| msgstr "Kordinat ifadesi bir işlenen yerine işleçle bitiyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2245 | ||||
| #: ../src/ui/theme.c:2256 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Coordinate expression has operator \"%c\" following operator \"%c\" with no " | ||||
| @@ -921,38 +933,38 @@ msgstr "" | ||||
| "Kordinat ifadesi birbirlerinin izleyen ve aralarında işlenen olmayan \"%2$c" | ||||
| "\" ve \"%1$c\" işleçlerini içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441 | ||||
| #: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had unknown variable or constant \"%s\"" | ||||
| msgstr "" | ||||
| "Kordinat ifadesi bilinmeyen bir değişken ya da sabit olan \"%s\" içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2495 | ||||
| #: ../src/ui/theme.c:2506 | ||||
| #, c-format | ||||
| msgid "Coordinate expression parser overflowed its buffer." | ||||
| msgstr "Kordinat belirtim ayrıştırıcısı tamponundan taştı." | ||||
|  | ||||
| #: ../src/ui/theme.c:2524 | ||||
| #: ../src/ui/theme.c:2535 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had a close parenthesis with no open parenthesis" | ||||
| msgstr "Kordinat ifadesi sol parantezi olmayan bir sağ parantez içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2588 | ||||
| #: ../src/ui/theme.c:2599 | ||||
| #, c-format | ||||
| msgid "Coordinate expression had an open parenthesis with no close parenthesis" | ||||
| msgstr "Kordinat ifadesi sağ parantezi olmayan bir sol parantez içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2599 | ||||
| #: ../src/ui/theme.c:2610 | ||||
| #, c-format | ||||
| msgid "Coordinate expression doesn't seem to have any operators or operands" | ||||
| msgstr "Kordinat ifadesi göründüğü kadarıyla ne işleç ne de işlenen içeriyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852 | ||||
| #: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862 | ||||
| #, c-format | ||||
| msgid "Theme contained an expression that resulted in an error: %s\n" | ||||
| msgstr "Tema bir hata ile sonuçlanan ifadeye sahip: %s\n" | ||||
|  | ||||
| #: ../src/ui/theme.c:4498 | ||||
| #: ../src/ui/theme.c:4533 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be " | ||||
| @@ -961,25 +973,25 @@ msgstr "" | ||||
| "Bu çerçeve biçeminde <button function=\"%s\" state=\"%s\" draw_ops=\"her " | ||||
| "neyse\"/> belirtilmek zorunda" | ||||
|  | ||||
| #: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034 | ||||
| #: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>" | ||||
| msgstr "" | ||||
| "Eksik <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"her neyse\"/>" | ||||
|  | ||||
| #: ../src/ui/theme.c:5082 | ||||
| #: ../src/ui/theme.c:5139 | ||||
| #, c-format | ||||
| msgid "Failed to load theme \"%s\": %s\n" | ||||
| msgstr "\"%s\" teması yüklenemedi: %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:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289 | ||||
| #: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303 | ||||
| #, c-format | ||||
| msgid "No <%s> set for theme \"%s\"" | ||||
| msgstr "\"%2$s\" temasında hiç <%1$s> atanmamış" | ||||
|  | ||||
| #: ../src/ui/theme.c:5254 | ||||
| #: ../src/ui/theme.c:5311 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "No frame style set for window type \"%s\" in theme \"%s\", add a <window " | ||||
| @@ -988,14 +1000,14 @@ msgstr "" | ||||
| "\"%2$s\" temasında \"%1$s\" pencere türüne çerçeve biçemi atanmamış, bir " | ||||
| "<window type=\"%3$s\" style_set=\"her neyse\"/> öğesi ekleyin" | ||||
|  | ||||
| #: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775 | ||||
| #: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "User-defined constants must begin with a capital letter; \"%s\" does not" | ||||
| msgstr "" | ||||
| "Kullanıcı tanımlı sabitler büyük harfle başlamalıdır; \"%s\" buna uymuyor" | ||||
|  | ||||
| #: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783 | ||||
| #: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842 | ||||
| #, c-format | ||||
| msgid "Constant \"%s\" has already been defined" | ||||
| msgstr "\"%s\" sabit değeri zaten tanımlanmış" | ||||
| @@ -1378,7 +1390,7 @@ msgstr "<%s> öğesinin içinde metin bulunmamalıdır" | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "Bu tema için <%s> iki kez belirtilmiş" | ||||
|  | ||||
| #: ../src/ui/theme-parser.c:4334 | ||||
| #: ../src/ui/theme-parser.c:4348 | ||||
| #, c-format | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Tema %s için geçerli bir dosya bulunamadı\n" | ||||
| @@ -1582,19 +1594,6 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
| "%d kordinat ifadesi %g saniye içinde ayrıştırıldı (%g saniye ortalama ile)\n" | ||||
|  | ||||
| #~ msgid "Comma-separated list of compositor plugins" | ||||
| #~ msgstr "Kompozisyon eklentilerinin listesi (virgül ile ayrılmış)" | ||||
|  | ||||
| #~ msgid "Live Hidden Windows" | ||||
| #~ msgstr "Çalışır Durumdaki Gizli Pencereler" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "Determines whether hidden windows (i.e., minimized windows and windows on " | ||||
| #~ "other workspaces than the current one) should be kept alive." | ||||
| #~ msgstr "" | ||||
| #~ "Gizli pencerelerin (ö.r. küçültülmüş pencereler ve diğer çalışma " | ||||
| #~ "alanındaki pencereler) çalışır bırakılıp bırakılmayacağını belirler." | ||||
|  | ||||
| #~ msgid "Close Window" | ||||
| #~ msgstr "Pencereyi Kapat" | ||||
|  | ||||
|   | ||||
							
								
								
									
										244
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
							
						
						
									
										244
									
								
								po/zh_CN.po
									
									
									
									
									
								
							| @@ -25,7 +25,7 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bits\n" | ||||
| "Plural-Forms: nplurals=1; plural=0;\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17 | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| msgid "Windows" | ||||
| msgstr "窗口" | ||||
|  | ||||
| @@ -1530,177 +1530,17 @@ msgstr "y 值为 %d,但应该为 %d " | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "在 %2$g 秒内处理了 %1$d 个坐标表达式(平均 %3$g 秒)\n" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "切换到工作区 1" | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "切换到工作区 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "切换到工作区 2" | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "切换到工作区 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "切换到工作区 3" | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "切换到工作区 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "切换到工作区 4" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "激活窗口菜单" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:13 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "切换全屏模式" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:14 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "切换最大化状态" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:4 | ||||
| msgid "Maximize window" | ||||
| msgstr "最大化窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:12 | ||||
| msgid "Restore window" | ||||
| msgstr "恢复窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:15 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "切换卷起状态" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:7 | ||||
| msgid "Minimize window" | ||||
| msgstr "最小化窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:2 | ||||
| msgid "Close window" | ||||
| msgstr "关闭窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:8 | ||||
| msgid "Move window" | ||||
| msgstr "移动窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:11 | ||||
| msgid "Resize window" | ||||
| msgstr "改变窗口大小" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "将窗口移到工作区 1" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "将窗口移到工作区 2" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "将窗口移到工作区 3" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "将窗口移到工作区 4" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:7 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "将窗口左移一个工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:8 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "将窗口右移一个工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:9 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "将窗口上移一个工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:6 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "将窗口下移一个工作区" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "将窗口提升到其它窗口之上" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:3 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "将窗口降低到其它窗口之下" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:6 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "垂直最大化窗口" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:5 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "水平最大化窗口" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "隐藏所有正常窗口" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "移动到上层工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "移动到下层工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "移动到左侧工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "移动到右侧工作区" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| msgid "Navigation" | ||||
| msgstr "导航" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| msgid "Switch applications" | ||||
| msgstr "切换应用程序" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| msgid "Switch system controls" | ||||
| msgstr "切换系统控制" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "直接切换系统控制" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "直接切换窗口" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "在应用程序窗口间直接移动焦点" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "在应用程序的窗口之间切换窗口" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "显示活动大纲" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "显示运行命令提示符" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| msgid "System" | ||||
| msgstr "系统" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "在位于所有或仅一个工作区的窗口间切换" | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "切换到工作区 4" | ||||
|  | ||||
| #~ msgid "Switch to workspace 5" | ||||
| #~ msgstr "切换到工作区 5" | ||||
| @@ -1796,12 +1636,54 @@ msgstr "在位于所有或仅一个工作区的窗口间切换" | ||||
| #~ msgid "Run a terminal" | ||||
| #~ msgstr "运行终端" | ||||
|  | ||||
| #~ msgid "Activate the window menu" | ||||
| #~ msgstr "激活窗口菜单" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "切换全屏模式" | ||||
|  | ||||
| #~ msgid "Toggle maximization state" | ||||
| #~ msgstr "切换最大化状态" | ||||
|  | ||||
| #~ msgid "Toggle whether a window will always be visible over other windows" | ||||
| #~ msgstr "在窗口是否永远可见于其它窗口之上间切换" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "最大化窗口" | ||||
|  | ||||
| #~ msgid "Restore window" | ||||
| #~ msgstr "恢复窗口" | ||||
|  | ||||
| #~ msgid "Toggle shaded state" | ||||
| #~ msgstr "切换卷起状态" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "最小化窗口" | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "关闭窗口" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "移动窗口" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "改变窗口大小" | ||||
|  | ||||
| #~ msgid "Toggle whether window is on all workspaces or just one" | ||||
| #~ msgstr "在窗口位于所有或仅一个工作区间切换" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "将窗口移到工作区 1" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "将窗口移到工作区 2" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "将窗口移到工作区 3" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "将窗口移到工作区 4" | ||||
|  | ||||
| #~ msgid "Move window to workspace 5" | ||||
| #~ msgstr "将窗口移到工作区 5" | ||||
|  | ||||
| @@ -1826,9 +1708,33 @@ msgstr "在位于所有或仅一个工作区的窗口间切换" | ||||
| #~ msgid "Move window to workspace 12" | ||||
| #~ msgstr "将窗口移到工作区 12" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "将窗口左移一个工作区" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "将窗口右移一个工作区" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "将窗口上移一个工作区" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "将窗口下移一个工作区" | ||||
|  | ||||
| #~ msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| #~ msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它" | ||||
|  | ||||
| #~ msgid "Raise window above other windows" | ||||
| #~ msgstr "将窗口提升到其它窗口之上" | ||||
|  | ||||
| #~ msgid "Lower window below other windows" | ||||
| #~ msgstr "将窗口降低到其它窗口之下" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "垂直最大化窗口" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "水平最大化窗口" | ||||
|  | ||||
| #~ msgid "Move window to north-west (top left) corner" | ||||
| #~ msgstr "将窗口移到西北(左上)角" | ||||
|  | ||||
|   | ||||
							
								
								
									
										596
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
							
						
						
									
										596
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										609
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										609
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,80 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
|                 group="system" | ||||
|                 _name="Navigation" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-1" | ||||
| 	              _description="Move window to workspace 1" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-2" | ||||
| 	              _description="Move window to workspace 2" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-3" | ||||
| 	              _description="Move window to workspace 3" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-4" | ||||
| 	              _description="Move window to workspace 4" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-left" | ||||
| 	              _description="Move window one workspace to the left" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-right" | ||||
| 	              _description="Move window one workspace to the right" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-up" | ||||
| 	              _description="Move window one workspace up" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-down" | ||||
| 	              _description="Move window one workspace down" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-applications" | ||||
| 	              _description="Switch applications"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-windows" | ||||
| 	              _description="Switch windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-group" | ||||
| 	              _description="Switch windows of an application"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-panels" | ||||
| 	              _description="Switch system controls"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-windows" | ||||
| 	              _description="Switch windows directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-group" | ||||
| 	              _description="Switch windows of an app directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-panels" | ||||
| 	              _description="Switch system controls directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="show-desktop" | ||||
| 	              _description="Hide all normal windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-1" | ||||
| 	              _description="Switch to workspace 1" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-2" | ||||
| 	              _description="Switch to workspace 2" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-3" | ||||
| 	              _description="Switch to workspace 3" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-4" | ||||
| 	              _description="Switch to workspace 4" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-left" | ||||
| 	              _description="Move to workspace left" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-right" | ||||
| 	              _description="Move to workspace right" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-up" | ||||
| 	              _description="Move to workspace above" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-down" | ||||
| 	              _description="Move to workspace below" /> | ||||
|  | ||||
| </KeyListEntries> | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
|                 group="system" | ||||
|                 _name="System" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="panel-run-dialog" _description="Show the run command prompt"/> | ||||
|  | ||||
| 	<KeyListEntry name="panel-main-menu" _description="Show the activities overview"/> | ||||
|  | ||||
| </KeyListEntries> | ||||
|  | ||||
| @@ -1,49 +1,14 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
| <KeyListEntries schema="org.gnome.mutter.keybindings" | ||||
|                 group="system" | ||||
|                 _name="Windows" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="activate-window-menu" _description="Activate the window menu"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-fullscreen" _description="Toggle fullscreen mode"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-maximized" _description="Toggle maximization state"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize" _description="Maximize window"/> | ||||
|  | ||||
| 	<KeyListEntry name="unmaximize" _description="Restore window"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-shaded" _description="Toggle shaded state"/> | ||||
|  | ||||
| 	<KeyListEntry name="close" _description="Close window"/> | ||||
|  | ||||
| 	<KeyListEntry name="minimize" _description="Hide window"/> | ||||
|  | ||||
| 	<KeyListEntry name="begin-move" _description="Move window"/> | ||||
|  | ||||
| 	<KeyListEntry name="begin-resize" _description="Resize window"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-on-all-workspaces" | ||||
| 	              _description="Toggle window on all workspaces or one"/> | ||||
|  | ||||
| 	<KeyListEntry name="raise-or-lower" _description="Raise window if covered, otherwise lower it"/> | ||||
|  | ||||
| 	<KeyListEntry name="raise" _description="Raise window above other windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="lower" _description="Lower window below other windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize-vertically" _description="Maximize window vertically"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize-horizontally" _description="Maximize window horizontally"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-left" | ||||
|                       schema="org.gnome.mutter.keybindings" | ||||
|                       _description="View split on left"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-right" | ||||
|                       schema="org.gnome.mutter.keybindings" | ||||
|                       _description="View split on right"/> | ||||
|  | ||||
| </KeyListEntries> | ||||
|   | ||||
| @@ -6,9 +6,6 @@ lib_LTLIBRARIES = libmutter.la | ||||
| SUBDIRS=wm-tester tools compositor/plugins | ||||
|  | ||||
| INCLUDES=								\ | ||||
| 	-DCLUTTER_ENABLE_EXPERIMENTAL_API				\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_API					\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_2_0_API                              \ | ||||
| 	$(MUTTER_CFLAGS)						\ | ||||
| 	-I$(srcdir)							\ | ||||
| 	-I$(srcdir)/core						\ | ||||
| @@ -36,24 +33,17 @@ mutter_built_sources = \ | ||||
| libmutter_la_SOURCES =				\ | ||||
| 	core/async-getprop.c			\ | ||||
| 	core/async-getprop.h			\ | ||||
| 	core/barrier.c				\ | ||||
| 	meta/barrier.h				\ | ||||
| 	core/bell.c				\ | ||||
| 	core/bell.h				\ | ||||
| 	core/boxes.c				\ | ||||
| 	core/boxes-private.h			\ | ||||
| 	meta/boxes.h				\ | ||||
| 	compositor/clutter-utils.c		\ | ||||
| 	compositor/clutter-utils.h		\ | ||||
| 	compositor/cogl-utils.c			\ | ||||
| 	compositor/cogl-utils.h			\ | ||||
| 	compositor/compositor.c			\ | ||||
| 	compositor/compositor-private.h		\ | ||||
| 	compositor/meta-background.c		\ | ||||
| 	compositor/meta-background-actor.c	\ | ||||
| 	compositor/meta-background-actor-private.h	\ | ||||
| 	compositor/meta-background-group.c	\ | ||||
| 	compositor/meta-background-group-private.h	\ | ||||
| 	compositor/meta-module.c		\ | ||||
| 	compositor/meta-module.h		\ | ||||
| 	compositor/meta-plugin.c		\ | ||||
| @@ -75,9 +65,7 @@ libmutter_la_SOURCES =				\ | ||||
| 	compositor/region-utils.c		\ | ||||
| 	compositor/region-utils.h		\ | ||||
| 	meta/compositor.h			\ | ||||
| 	meta/meta-background.h			\ | ||||
| 	meta/meta-background-actor.h		\ | ||||
| 	meta/meta-background-group.h		\ | ||||
| 	meta/meta-plugin.h			\ | ||||
| 	meta/meta-shadow-factory.h		\ | ||||
| 	meta/meta-window-actor.h		\ | ||||
| @@ -96,10 +84,10 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/edge-resistance.h			\ | ||||
| 	core/errors.c				\ | ||||
| 	meta/errors.h				\ | ||||
| 	core/eventqueue.c			\ | ||||
| 	core/eventqueue.h			\ | ||||
| 	core/frame.c				\ | ||||
| 	core/frame.h				\ | ||||
| 	ui/gradient.c				\ | ||||
| 	meta/gradient.h				\ | ||||
| 	core/group-private.h			\ | ||||
| 	core/group-props.c			\ | ||||
| 	core/group-props.h			\ | ||||
| @@ -140,8 +128,8 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/core.h				\ | ||||
| 	ui/ui.h					\ | ||||
| 	inlinepixbufs.h				\ | ||||
| 	ui/frames.c				\ | ||||
| 	ui/frames.h				\ | ||||
| 	ui/uiframe.c				\ | ||||
| 	ui/uiframe.h				\ | ||||
| 	ui/menu.c				\ | ||||
| 	ui/menu.h				\ | ||||
| 	ui/metaaccellabel.c			\ | ||||
| @@ -152,13 +140,7 @@ libmutter_la_SOURCES =				\ | ||||
| 	ui/tabpopup.h				\ | ||||
| 	ui/tile-preview.c			\ | ||||
| 	ui/tile-preview.h			\ | ||||
| 	ui/theme-parser.c			\ | ||||
| 	ui/theme.c				\ | ||||
| 	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 | ||||
| @@ -167,27 +149,22 @@ libmutter_la_LIBADD  = $(MUTTER_LIBS) | ||||
| # Headers installed for plugins; introspected information will | ||||
| # be extracted into Mutter-<version>.gir | ||||
| libmutterinclude_base_headers =		\ | ||||
| 	meta/barrier.h				\ | ||||
| 	meta/boxes.h				\ | ||||
| 	meta/common.h				\ | ||||
| 	meta/compositor-mutter.h		\ | ||||
| 	meta/compositor.h			\ | ||||
| 	meta/display.h				\ | ||||
| 	meta/errors.h				\ | ||||
| 	meta/gradient.h				\ | ||||
| 	meta/group.h				\ | ||||
| 	meta/keybindings.h			\ | ||||
| 	meta/main.h				\ | ||||
| 	meta/meta-background-actor.h		\ | ||||
| 	meta/meta-background-group.h		\ | ||||
| 	meta/meta-background.h			\ | ||||
| 	meta/meta-plugin.h			\ | ||||
| 	meta/meta-shaped-texture.h		\ | ||||
| 	meta/meta-shadow-factory.h		\ | ||||
| 	meta/meta-window-actor.h		\ | ||||
| 	meta/prefs.h				\ | ||||
| 	meta/screen.h				\ | ||||
| 	meta/theme.h				\ | ||||
| 	meta/types.h				\ | ||||
| 	meta/util.h				\ | ||||
| 	meta/window.h				\ | ||||
| @@ -196,7 +173,6 @@ 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 | ||||
| @@ -205,10 +181,7 @@ libmutterinclude_HEADERS =			\ | ||||
| 	$(libmutterinclude_base_headers)	\ | ||||
| 	$(libmutterinclude_extra_headers) | ||||
|  | ||||
| mutter_theme_viewer_SOURCES=  \ | ||||
| 	ui/theme-viewer.c | ||||
|  | ||||
| bin_PROGRAMS=mutter mutter-theme-viewer | ||||
| bin_PROGRAMS=mutter | ||||
|  | ||||
| mutter_SOURCES = core/mutter.c | ||||
| mutter_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| @@ -234,7 +207,7 @@ typelib_DATA = Meta-$(api_version).typelib | ||||
| INTROSPECTION_GIRS = Meta-$(api_version).gir | ||||
|  | ||||
| Meta-$(api_version).gir: libmutter.la | ||||
| @META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0 | ||||
| @META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 | ||||
| @META_GIR@_EXPORT_PACKAGES = libmutter | ||||
| @META_GIR@_CFLAGS = $(INCLUDES) | ||||
| @META_GIR@_LIBS = libmutter.la | ||||
| @@ -246,16 +219,12 @@ Meta-$(api_version).gir: libmutter.la | ||||
|  | ||||
| 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 | ||||
| noinst_PROGRAMS=testboxes testasyncgetprop | ||||
|  | ||||
| testboxes_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testgradient_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| @INTLTOOL_DESKTOP_RULE@ | ||||
| @@ -272,8 +241,6 @@ wmproperties_DATA = $(wmproperties_files) | ||||
|  | ||||
| xmldir       = @GNOME_KEYBINDINGS_KEYSDIR@ | ||||
| xml_in_files = \ | ||||
|         50-mutter-navigation.xml.in	\ | ||||
|         50-mutter-system.xml.in		\ | ||||
|         50-mutter-windows.xml.in | ||||
| xml_DATA     = $(xml_in_files:.xml.in=.xml) | ||||
|  | ||||
|   | ||||
| @@ -1,120 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
| /* | ||||
|  * Utilities for use with Cogl | ||||
|  * | ||||
|  * Copyright 2010 Red Hat, Inc. | ||||
|  * Copyright 2010 Intel Corporation | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| #include "clutter-utils.h" | ||||
| #include <math.h> | ||||
|  | ||||
| /* This file uses pixel-aligned region computation to determine what | ||||
|  * can be clipped out. This only really works if everything is aligned | ||||
|  * to the pixel grid - not scaled or rotated and at integer offsets. | ||||
|  * | ||||
|  * (This could be relaxed - if we turned off filtering for unscaled | ||||
|  * windows then windows would be, by definition aligned to the pixel | ||||
|  * grid. And for rectangular windows without a shape, the outline that | ||||
|  * we draw for an unrotated window is always a rectangle because we | ||||
|  * don't use antialasing for the window boundary - with or without | ||||
|  * filtering, with or without a scale. But figuring out exactly | ||||
|  * what pixels will be drawn by the graphics system in these cases | ||||
|  * gets tricky, so we just go for the easiest part - no scale, | ||||
|  * and at integer offsets.) | ||||
|  * | ||||
|  * The way we check for pixel-aligned is by looking at the | ||||
|  * transformation into screen space of the allocation box of an actor | ||||
|  * and and checking if the corners are "close enough" to integral | ||||
|  * pixel values. | ||||
|  */ | ||||
|  | ||||
| /* The definition of "close enough" to integral pixel values is | ||||
|  * equality when we convert to 24.8 fixed-point. | ||||
|  */ | ||||
| static inline int | ||||
| round_to_fixed (float x) | ||||
| { | ||||
|   return roundf (x * 256); | ||||
| } | ||||
|  | ||||
| /* This helper function checks if (according to our fixed point precision) | ||||
|  * the vertices @verts form a box of width @widthf and height @heightf | ||||
|  * located at integral coordinates. These coordinates are returned | ||||
|  * in @x_origin and @y_origin. | ||||
|  */ | ||||
| gboolean | ||||
| meta_actor_vertices_are_untransformed (ClutterVertex *verts, | ||||
|                                        float          widthf, | ||||
|                                        float          heightf, | ||||
|                                        int           *x_origin, | ||||
|                                        int           *y_origin) | ||||
| { | ||||
|   int width, height; | ||||
|   int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y; | ||||
|   int x, y; | ||||
|  | ||||
|   width = round_to_fixed (widthf); height = round_to_fixed (heightf); | ||||
|  | ||||
|   v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y); | ||||
|   v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y); | ||||
|   v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y); | ||||
|   v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y); | ||||
|  | ||||
|   /* Using shifting for converting fixed => int, gets things right for | ||||
|    * negative values. / 256. wouldn't do the same | ||||
|    */ | ||||
|   x = v0x >> 8; | ||||
|   y = v0y >> 8; | ||||
|  | ||||
|   /* At integral coordinates? */ | ||||
|   if (x * 256 != v0x || y * 256 != v0y) | ||||
|     return FALSE; | ||||
|  | ||||
|   /* Not scaled? */ | ||||
|   if (v1x - v0x != width || v2y - v0y != height) | ||||
|     return FALSE; | ||||
|  | ||||
|   /* Not rotated/skewed? */ | ||||
|   if (v0x != v2x || v0y != v1y || | ||||
|       v3x != v1x || v3y != v2y) | ||||
|     return FALSE; | ||||
|  | ||||
|   *x_origin = x; | ||||
|   *y_origin = y; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| /* Check if an actor is "untransformed" - which actually means transformed by | ||||
|  * at most a integer-translation. The integer translation, if any, is returned. | ||||
|  */ | ||||
| gboolean | ||||
| meta_actor_is_untransformed (ClutterActor *actor, | ||||
|                              int          *x_origin, | ||||
|                              int          *y_origin) | ||||
| { | ||||
|   gfloat widthf, heightf; | ||||
|   ClutterVertex verts[4]; | ||||
|  | ||||
|   clutter_actor_get_size (actor, &widthf, &heightf); | ||||
|   clutter_actor_get_abs_allocation_vertices (actor, verts); | ||||
|  | ||||
|   return meta_actor_vertices_are_untransformed (verts, widthf, heightf, x_origin, y_origin); | ||||
| } | ||||
|  | ||||
| @@ -1,36 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
| /* | ||||
|  * Utilities for use with Clutter | ||||
|  * | ||||
|  * Copyright 2010 Red Hat, Inc. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, but | ||||
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef __META_CLUTTER_UTILS_H__ | ||||
| #define __META_CLUTTER_UTILS_H__ | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| gboolean meta_actor_vertices_are_untransformed (ClutterVertex *verts, | ||||
|                                                 float          widthf, | ||||
|                                                 float          heightf, | ||||
|                                                 int           *x_origin, | ||||
|                                                 int           *y_origin); | ||||
| gboolean meta_actor_is_untransformed (ClutterActor *actor, | ||||
|                                       int          *x_origin, | ||||
|                                       int          *y_origin); | ||||
|  | ||||
| #endif /* __META_CLUTTER_UTILS_H__ */ | ||||
| @@ -21,15 +21,14 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| #include "cogl-utils.h" | ||||
|  | ||||
| /** | ||||
|  * meta_create_color_texture_4ub: | ||||
|  * @red: red component | ||||
|  * @green: green component | ||||
|  * @blue: blue component | ||||
|  * @alpha: alpha component | ||||
|  * @red: | ||||
|  * @green: | ||||
|  * @blue: | ||||
|  * @alpha: | ||||
|  * @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 | ||||
| @@ -40,7 +39,7 @@ | ||||
|  * | ||||
|  * Return value: (transfer full): a newly created Cogl texture | ||||
|  */ | ||||
| CoglTexture * | ||||
| CoglHandle | ||||
| meta_create_color_texture_4ub (guint8           red, | ||||
|                                guint8           green, | ||||
|                                guint8           blue, | ||||
| @@ -69,45 +68,43 @@ meta_create_color_texture_4ub (guint8           red, | ||||
| /* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */ | ||||
|  | ||||
| /** | ||||
|  * meta_create_texture_pipeline: | ||||
|  * meta_create_texture_material: | ||||
|  * @src_texture: (allow-none): texture to use initially for the layer | ||||
|  * | ||||
|  * Creates a pipeline with a single layer. Using a common template | ||||
|  * Creates a material 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 | ||||
|  * shader with all other materials that are just texture plus opacity | ||||
|  * would require Cogl fixes. | ||||
|  * (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425) | ||||
|  * | ||||
|  * Return value: (transfer full): a newly created #CoglPipeline | ||||
|  * Return value: (transfer full): a newly created Cogl material | ||||
|  */ | ||||
| CoglPipeline * | ||||
| meta_create_texture_pipeline (CoglTexture *src_texture) | ||||
| CoglHandle | ||||
| meta_create_texture_material (CoglHandle src_texture) | ||||
| { | ||||
|   static CoglPipeline *texture_pipeline_template = NULL; | ||||
|   CoglPipeline *pipeline; | ||||
|   static CoglHandle texture_material_template = COGL_INVALID_HANDLE; | ||||
|   CoglHandle material; | ||||
|  | ||||
|   /* 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 | ||||
|   /* We use a material that has a dummy texture as a base for all | ||||
|      texture materials. 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. */ | ||||
|   if (G_UNLIKELY (texture_pipeline_template == NULL)) | ||||
|   if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE)) | ||||
|     { | ||||
|       CoglTexture *dummy_texture; | ||||
|       CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|       CoglHandle dummy_texture; | ||||
|  | ||||
|       dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff, | ||||
|                                                      COGL_TEXTURE_NONE); | ||||
|  | ||||
|  | ||||
|       texture_pipeline_template = cogl_pipeline_new (ctx); | ||||
|       cogl_pipeline_set_layer_texture (texture_pipeline_template, 0, dummy_texture); | ||||
|       cogl_object_unref (dummy_texture); | ||||
|       texture_material_template = cogl_material_new (); | ||||
|       cogl_material_set_layer (texture_material_template, 0, dummy_texture); | ||||
|       cogl_handle_unref (dummy_texture); | ||||
|     } | ||||
|  | ||||
|   pipeline = cogl_pipeline_copy (texture_pipeline_template); | ||||
|   material = cogl_material_copy (texture_material_template); | ||||
|  | ||||
|   if (src_texture != NULL) | ||||
|     cogl_pipeline_set_layer_texture (pipeline, 0, src_texture); | ||||
|   if (src_texture != COGL_INVALID_HANDLE) | ||||
|     cogl_material_set_layer (material, 0, src_texture); | ||||
|  | ||||
|   return pipeline; | ||||
|   return material; | ||||
| } | ||||
|   | ||||
| @@ -25,11 +25,11 @@ | ||||
|  | ||||
| #include <cogl/cogl.h> | ||||
|  | ||||
| CoglTexture * meta_create_color_texture_4ub (guint8           red, | ||||
|                                              guint8           green, | ||||
|                                              guint8           blue, | ||||
|                                              guint8           alpha, | ||||
|                                              CoglTextureFlags flags); | ||||
| CoglPipeline * meta_create_texture_pipeline (CoglTexture *texture); | ||||
| CoglHandle meta_create_color_texture_4ub (guint8           red, | ||||
|                                           guint8           green, | ||||
|                                           guint8           blue, | ||||
|                                           guint8           alpha, | ||||
|                                           CoglTextureFlags flags); | ||||
| CoglHandle meta_create_texture_material  (CoglHandle src_texture); | ||||
|  | ||||
| #endif /* __META_COGL_UTILS_H__ */ | ||||
|   | ||||
| @@ -18,6 +18,7 @@ struct _MetaCompositor | ||||
|   MetaDisplay    *display; | ||||
|  | ||||
|   Atom            atom_x_root_pixmap; | ||||
|   Atom            atom_x_set_root; | ||||
|   Atom            atom_net_wm_window_opacity; | ||||
|   guint           repaint_func_id; | ||||
|  | ||||
| @@ -25,28 +26,22 @@ struct _MetaCompositor | ||||
|  | ||||
|   MetaPlugin     *modal_plugin; | ||||
|  | ||||
|   gint64          server_time_query_time; | ||||
|   gint64          server_time_offset; | ||||
|  | ||||
|   guint           server_time_is_monotonic_time : 1; | ||||
|   guint           show_redraw : 1; | ||||
|   guint           debug       : 1; | ||||
|   guint           no_mipmaps  : 1; | ||||
|   gboolean        show_redraw : 1; | ||||
|   gboolean        debug       : 1; | ||||
|   gboolean        no_mipmaps  : 1; | ||||
| }; | ||||
|  | ||||
| struct _MetaCompScreen | ||||
| { | ||||
|   MetaScreen            *screen; | ||||
|  | ||||
|   ClutterActor          *stage, *window_group, *top_window_group, *overlay_group; | ||||
|   ClutterActor          *stage, *window_group, *overlay_group; | ||||
|   ClutterActor          *background_actor; | ||||
|   ClutterActor		*hidden_group; | ||||
|   GList                 *windows; | ||||
|   GHashTable            *windows_by_xid; | ||||
|   Window                 output; | ||||
|  | ||||
|   CoglOnscreen          *onscreen; | ||||
|   CoglFrameClosure      *frame_closure; | ||||
|  | ||||
|   /* Used for unredirecting fullscreen windows */ | ||||
|   guint                   disable_unredirect_count; | ||||
|   MetaWindowActor             *unredirected_window; | ||||
| @@ -59,9 +54,6 @@ struct _MetaCompScreen | ||||
|   MetaPluginManager *plugin_mgr; | ||||
| }; | ||||
|  | ||||
| /* Wait 2ms after vblank before starting to draw next frame */ | ||||
| #define META_SYNC_DELAY 2 | ||||
|  | ||||
| void meta_switch_workspace_completed (MetaScreen    *screen); | ||||
|  | ||||
| gboolean meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
| @@ -74,9 +66,6 @@ void     meta_end_modal_for_plugin   (MetaScreen       *screen, | ||||
|                                       MetaPlugin       *plugin, | ||||
|                                       guint32           timestamp); | ||||
|  | ||||
| gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display, | ||||
|                                                       gint64       monotonic_time); | ||||
|  | ||||
| void meta_check_end_modal (MetaScreen *screen); | ||||
|  | ||||
| #endif /* META_COMPOSITOR_PRIVATE_H */ | ||||
|   | ||||
| @@ -1,74 +1,9 @@ | ||||
| /* -*- 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> | ||||
|  | ||||
| #include "core.h" | ||||
| #include <meta/screen.h> | ||||
| #include <meta/errors.h> | ||||
| #include <meta/window.h> | ||||
| @@ -77,11 +12,10 @@ | ||||
| #include "xprops.h" | ||||
| #include <meta/prefs.h> | ||||
| #include <meta/main.h> | ||||
| #include <meta/meta-background-actor.h> | ||||
| #include <meta/meta-background-group.h> | ||||
| #include <meta/meta-shadow-factory.h> | ||||
| #include "meta-window-actor-private.h" | ||||
| #include "meta-window-group.h" | ||||
| #include "meta-background-actor-private.h" | ||||
| #include "window-private.h" /* to check window->hidden */ | ||||
| #include "display-private.h" /* for meta_display_lookup_x_window() */ | ||||
| #include <X11/extensions/shape.h> | ||||
| @@ -182,6 +116,21 @@ process_property_notify (MetaCompositor	*compositor, | ||||
| { | ||||
|   MetaWindowActor *window_actor; | ||||
|  | ||||
|   if (event->atom == compositor->atom_x_root_pixmap) | ||||
|     { | ||||
|       GSList *l; | ||||
|  | ||||
|       for (l = meta_display_get_screens (compositor->display); l; l = l->next) | ||||
|         { | ||||
| 	  MetaScreen  *screen = l->data; | ||||
|           if (event->window == meta_screen_get_xroot (screen)) | ||||
|             { | ||||
|               meta_background_actor_update (screen); | ||||
|               return; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   if (window == NULL) | ||||
|     return; | ||||
|  | ||||
| @@ -208,28 +157,23 @@ get_output_window (MetaScreen *screen) | ||||
|   Window       output, xroot; | ||||
|   XWindowAttributes attr; | ||||
|   long         event_mask; | ||||
|   unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
|   XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; | ||||
|  | ||||
|   xroot = meta_screen_get_xroot (screen); | ||||
|  | ||||
|   event_mask = FocusChangeMask | | ||||
|                ExposureMask | | ||||
|                EnterWindowMask | LeaveWindowMask | | ||||
| 	       PointerMotionMask | | ||||
|                PropertyChangeMask | | ||||
|                ButtonPressMask | ButtonReleaseMask | | ||||
|                KeyPressMask | KeyReleaseMask; | ||||
|  | ||||
|   output = XCompositeGetOverlayWindow (xdisplay, xroot); | ||||
|  | ||||
|   meta_core_add_old_event_mask (xdisplay, output, &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, output, &mask, 1); | ||||
|  | ||||
|   event_mask = ExposureMask | PropertyChangeMask; | ||||
|   if (XGetWindowAttributes (xdisplay, output, &attr)) | ||||
|     event_mask |= attr.your_event_mask; | ||||
|       { | ||||
|         event_mask |= attr.your_event_mask; | ||||
|       } | ||||
|  | ||||
|   XSelectInput (xdisplay, output, event_mask); | ||||
|  | ||||
| @@ -253,6 +197,23 @@ 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 | ||||
| @@ -271,20 +232,24 @@ meta_get_window_group_for_screen (MetaScreen *screen) | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_get_top_window_group_for_screen: | ||||
|  * meta_get_background_actor_for_screen: | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  * Returns: (transfer none): The top window group corresponding to @screen | ||||
|  * Gets the actor that draws the root window background under the windows. | ||||
|  * The root window background automatically tracks the image or color set | ||||
|  * by the environment. | ||||
|  * | ||||
|  * Returns: (transfer none): The background actor corresponding to @screen | ||||
|  */ | ||||
| ClutterActor * | ||||
| meta_get_top_window_group_for_screen (MetaScreen *screen) | ||||
| meta_get_background_actor_for_screen (MetaScreen *screen) | ||||
| { | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|   if (!info) | ||||
|     return NULL; | ||||
|  | ||||
|   return info->top_window_group; | ||||
|   return info->background_actor; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -369,28 +334,6 @@ meta_empty_stage_input_region (MetaScreen *screen) | ||||
|   meta_set_stage_input_region (screen, region); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_focus_stage_window (MetaScreen *screen, | ||||
|                          guint32     timestamp) | ||||
| { | ||||
|   ClutterStage *stage; | ||||
|   Window window; | ||||
|  | ||||
|   stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen)); | ||||
|   if (!stage) | ||||
|     return; | ||||
|  | ||||
|   window = clutter_x11_get_stage_window (stage); | ||||
|  | ||||
|   if (window == None) | ||||
|     return; | ||||
|  | ||||
|   meta_display_set_input_focus_xwindow (screen->display, | ||||
|                                         screen, | ||||
|                                         window, | ||||
|                                         timestamp); | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|                              MetaPlugin       *plugin, | ||||
| @@ -415,23 +358,14 @@ meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|  | ||||
|   if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0) | ||||
|     { | ||||
|       unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
|       XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; | ||||
|  | ||||
|       XISetMask (mask.mask, XI_ButtonPress); | ||||
|       XISetMask (mask.mask, XI_ButtonRelease); | ||||
|       XISetMask (mask.mask, XI_Enter); | ||||
|       XISetMask (mask.mask, XI_Leave); | ||||
|       XISetMask (mask.mask, XI_Motion); | ||||
|  | ||||
|       result = XIGrabDevice (xdpy, | ||||
|                              META_VIRTUAL_CORE_POINTER_ID, | ||||
|                              grab_window, | ||||
|                              timestamp, | ||||
|                              cursor, | ||||
|                              XIGrabModeAsync, XIGrabModeAsync, | ||||
|       result = XGrabPointer (xdpy, grab_window, | ||||
|                              False, /* owner_events */ | ||||
|                              &mask); | ||||
|                              (ButtonPressMask | ButtonReleaseMask | | ||||
|                               EnterWindowMask | LeaveWindowMask | PointerMotionMask), | ||||
|                              GrabModeAsync, GrabModeAsync, | ||||
|                              None, /* confine to */ | ||||
|                              cursor, | ||||
|                              timestamp); | ||||
|       if (result != Success) | ||||
|         goto fail; | ||||
|  | ||||
| @@ -440,20 +374,10 @@ meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|  | ||||
|   if ((options & META_MODAL_KEYBOARD_ALREADY_GRABBED) == 0) | ||||
|     { | ||||
|       unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; | ||||
|       XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; | ||||
|  | ||||
|       XISetMask (mask.mask, XI_KeyPress); | ||||
|       XISetMask (mask.mask, XI_KeyRelease); | ||||
|  | ||||
|       result = XIGrabDevice (xdpy, | ||||
|                              META_VIRTUAL_CORE_KEYBOARD_ID, | ||||
|                              grab_window, | ||||
|                              timestamp, | ||||
|                              None, | ||||
|                              XIGrabModeAsync, XIGrabModeAsync, | ||||
|                              False, /* owner_events */ | ||||
|                              &mask); | ||||
|       result = XGrabKeyboard (xdpy, grab_window, | ||||
|                               False, /* owner_events */ | ||||
|                               GrabModeAsync, GrabModeAsync, | ||||
|                               timestamp); | ||||
|  | ||||
|       if (result != Success) | ||||
|         goto fail; | ||||
| @@ -473,9 +397,9 @@ meta_begin_modal_for_plugin (MetaScreen       *screen, | ||||
|  | ||||
|  fail: | ||||
|   if (pointer_grabbed) | ||||
|     XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp); | ||||
|     XUngrabPointer (xdpy, timestamp); | ||||
|   if (keyboard_grabbed) | ||||
|     XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp); | ||||
|     XUngrabKeyboard (xdpy, timestamp); | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
| @@ -491,8 +415,8 @@ 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); | ||||
|   XUngrabPointer (xdpy, timestamp); | ||||
|   XUngrabKeyboard (xdpy, timestamp); | ||||
|  | ||||
|   display->grab_op = META_GRAB_OP_NONE; | ||||
|   display->grab_window = NULL; | ||||
| @@ -521,28 +445,25 @@ meta_check_end_modal (MetaScreen *screen) | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| after_stage_paint (gpointer data) | ||||
| void | ||||
| meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|                                MetaScreen     *screen) | ||||
| { | ||||
|   MetaCompScreen *info = (MetaCompScreen*) data; | ||||
|   GList *l; | ||||
|   MetaCompScreen *info; | ||||
|   MetaDisplay    *display       = meta_screen_get_display (screen); | ||||
|   Display        *xdisplay      = meta_display_get_xdisplay (display); | ||||
|   int             screen_number = meta_screen_get_screen_number (screen); | ||||
|   Window          xroot         = meta_screen_get_xroot (screen); | ||||
|   Window          xwin; | ||||
|   gint            width, height; | ||||
|   XWindowAttributes attr; | ||||
|   long            event_mask; | ||||
|   guint           n_retries; | ||||
|   guint           max_retries; | ||||
|  | ||||
|   for (l = info->windows; l; l = l->next) | ||||
|     meta_window_actor_post_paint (l->data); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| redirect_windows (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); | ||||
|   int          screen_number = meta_screen_get_screen_number (screen); | ||||
|   guint        n_retries; | ||||
|   guint        max_retries; | ||||
|   /* Check if the screen is already managed */ | ||||
|   if (meta_screen_get_compositor_data (screen)) | ||||
|     return; | ||||
|  | ||||
|   if (meta_get_replace_current_wm ()) | ||||
|     max_retries = 5; | ||||
| @@ -575,21 +496,6 @@ redirect_windows (MetaCompositor *compositor, | ||||
|       n_retries++; | ||||
|       g_usleep (G_USEC_PER_SEC); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|                                MetaScreen     *screen) | ||||
| { | ||||
|   MetaCompScreen *info; | ||||
|   MetaDisplay    *display       = meta_screen_get_display (screen); | ||||
|   Display        *xdisplay      = meta_display_get_xdisplay (display); | ||||
|   Window          xwin; | ||||
|   gint            width, height; | ||||
|  | ||||
|   /* Check if the screen is already managed */ | ||||
|   if (meta_screen_get_compositor_data (screen)) | ||||
|     return; | ||||
|  | ||||
|   info = g_new0 (MetaCompScreen, 1); | ||||
|   /* | ||||
| @@ -611,12 +517,6 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|  | ||||
|   info->stage = clutter_stage_new (); | ||||
|  | ||||
|   clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT, | ||||
|                                          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); | ||||
|  | ||||
| @@ -624,39 +524,42 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|  | ||||
|   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; | ||||
|   event_mask = FocusChangeMask | | ||||
|                ExposureMask | | ||||
|                EnterWindowMask | LeaveWindowMask | | ||||
|                PointerMotionMask | | ||||
|                PropertyChangeMask | | ||||
|                ButtonPressMask | ButtonReleaseMask | | ||||
|                KeyPressMask | KeyReleaseMask | | ||||
|                StructureNotifyMask; | ||||
|  | ||||
|     meta_core_add_old_event_mask (xdisplay, xwin, &mask); | ||||
|   if (XGetWindowAttributes (xdisplay, xwin, &attr)) | ||||
|       { | ||||
|         event_mask |= attr.your_event_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); | ||||
|   } | ||||
|   XSelectInput (xdisplay, xwin, event_mask); | ||||
|  | ||||
|   info->window_group = meta_window_group_new (screen); | ||||
|   info->top_window_group = meta_window_group_new (screen); | ||||
|   info->background_actor = meta_background_actor_new_for_screen (screen); | ||||
|   info->overlay_group = clutter_group_new (); | ||||
|   info->hidden_group = clutter_group_new (); | ||||
|  | ||||
|   clutter_actor_add_child (info->stage, info->window_group); | ||||
|   clutter_actor_add_child (info->stage, info->top_window_group); | ||||
|   clutter_container_add (CLUTTER_CONTAINER (info->window_group), | ||||
|                          info->background_actor, | ||||
|                          NULL); | ||||
|  | ||||
|   info->plugin_mgr = meta_plugin_manager_new (screen); | ||||
|   clutter_container_add (CLUTTER_CONTAINER (info->stage), | ||||
|                          info->window_group, | ||||
|                          info->overlay_group, | ||||
| 			 info->hidden_group, | ||||
|                          NULL); | ||||
|  | ||||
|   clutter_actor_hide (info->hidden_group); | ||||
|  | ||||
|   info->plugin_mgr = | ||||
|     meta_plugin_manager_get (screen); | ||||
|   meta_plugin_manager_initialize (info->plugin_mgr); | ||||
|  | ||||
|   /* | ||||
|    * Delay the creation of the overlay window as long as we can, to avoid | ||||
| @@ -685,12 +588,8 @@ meta_compositor_manage_screen (MetaCompositor *compositor, | ||||
|       info->pending_input_region = None; | ||||
|     } | ||||
|  | ||||
|   /* 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); | ||||
|   clutter_actor_show (info->overlay_group); | ||||
|   clutter_actor_show (info->stage); | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -791,53 +690,25 @@ meta_compositor_remove_window (MetaCompositor *compositor, | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_set_updates_frozen (MetaCompositor *compositor, | ||||
|                                     MetaWindow     *window, | ||||
|                                     gboolean        updates_frozen) | ||||
| meta_compositor_set_updates (MetaCompositor *compositor, | ||||
|                              MetaWindow     *window, | ||||
|                              gboolean        updates) | ||||
| { | ||||
|   MetaWindowActor *window_actor; | ||||
|  | ||||
|   DEBUG_TRACE ("meta_compositor_set_updates_frozen\n"); | ||||
|   window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window)); | ||||
|   if (!window_actor) | ||||
|     return; | ||||
|  | ||||
|   meta_window_actor_set_updates_frozen (window_actor, updates_frozen); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_queue_frame_drawn (MetaCompositor *compositor, | ||||
|                                    MetaWindow     *window, | ||||
|                                    gboolean        no_delay_frame) | ||||
| { | ||||
|   MetaWindowActor *window_actor; | ||||
|  | ||||
|   DEBUG_TRACE ("meta_compositor_queue_frame_drawn\n"); | ||||
|   window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window)); | ||||
|   if (!window_actor) | ||||
|     return; | ||||
|  | ||||
|   meta_window_actor_queue_frame_drawn (window_actor, no_delay_frame); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| is_grabbed_event (MetaDisplay *display, | ||||
|                   XEvent      *event) | ||||
| is_grabbed_event (XEvent *event) | ||||
| { | ||||
|   if (event->type == GenericEvent && | ||||
|       event->xcookie.extension == display->xinput_opcode) | ||||
|   switch (event->xany.type) | ||||
|     { | ||||
|       XIEvent *xev = (XIEvent *) event->xcookie.data; | ||||
|  | ||||
|       switch (xev->evtype) | ||||
|         { | ||||
|         case XI_Motion: | ||||
|         case XI_ButtonPress: | ||||
|         case XI_ButtonRelease: | ||||
|         case XI_KeyPress: | ||||
|         case XI_KeyRelease: | ||||
|           return TRUE; | ||||
|         } | ||||
|     case ButtonPress: | ||||
|     case ButtonRelease: | ||||
|     case EnterNotify: | ||||
|     case LeaveNotify: | ||||
|     case MotionNotify: | ||||
|     case KeyPress: | ||||
|     case KeyRelease: | ||||
|       return TRUE; | ||||
|     } | ||||
|  | ||||
|   return FALSE; | ||||
| @@ -849,63 +720,11 @@ 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); | ||||
| } | ||||
|  | ||||
| /* Clutter makes the assumption that there is only one X window | ||||
|  * per stage, which is a valid assumption to make for a generic | ||||
|  * application toolkit. As such, it will ignore any events sent | ||||
|  * to the a stage that isn't its X window. | ||||
|  * | ||||
|  * When a user clicks on what she thinks is the wallpaper, she | ||||
|  * is actually clicking on the guard window, which is an entirely | ||||
|  * separate top-level override-redirect window in the hierarchy. | ||||
|  * We want to recieve events on this guard window so that users | ||||
|  * can right-click on the background actor. We do this by telling | ||||
|  * Clutter a little white lie, by transforming clicks on the guard | ||||
|  * window to become clicks on the stage window, allowing Clutter | ||||
|  * to process the event normally. | ||||
|  */ | ||||
| static void | ||||
| maybe_spoof_guard_window_event_as_stage_event (MetaCompScreen *info, | ||||
|                                                XEvent         *event) | ||||
| { | ||||
|   MetaDisplay *display = meta_screen_get_display (info->screen); | ||||
|  | ||||
|   if (event->type == GenericEvent && | ||||
|       event->xcookie.extension == display->xinput_opcode) | ||||
|     { | ||||
|       XIEvent *input_event = (XIEvent *) event->xcookie.data; | ||||
|  | ||||
|       /* Only care about pointer events for now. */ | ||||
|       switch (input_event->evtype) | ||||
|         { | ||||
|         case XI_Motion: | ||||
|         case XI_ButtonPress: | ||||
|         case XI_ButtonRelease: | ||||
|           { | ||||
|             XIDeviceEvent *device_event = ((XIDeviceEvent *) input_event); | ||||
|             if (device_event->event == info->screen->guard_window) | ||||
|               { | ||||
|                 Window xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage)); | ||||
|                 device_event->event = xwin; | ||||
|               } | ||||
|           } | ||||
|           break; | ||||
|         default: | ||||
|           break; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_compositor_process_event: (skip) | ||||
|  * @compositor:  | ||||
|  * @event:  | ||||
|  * @window:  | ||||
|  * | ||||
|  */ | ||||
| gboolean | ||||
| @@ -913,7 +732,7 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
|                                XEvent         *event, | ||||
|                                MetaWindow     *window) | ||||
| { | ||||
|   if (compositor->modal_plugin && is_grabbed_event (compositor->display, event)) | ||||
|   if (compositor->modal_plugin && is_grabbed_event (event)) | ||||
|     { | ||||
|       MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin); | ||||
|  | ||||
| @@ -952,8 +771,6 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
|  | ||||
| 	  info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|           maybe_spoof_guard_window_event_as_stage_event (info, event); | ||||
|  | ||||
| 	  if (meta_plugin_manager_xevent_filter (info->plugin_mgr, event)) | ||||
| 	    { | ||||
| 	      DEBUG_TRACE ("meta_compositor_process_event (filtered,window==NULL)\n"); | ||||
| @@ -1000,19 +817,6 @@ meta_compositor_process_event (MetaCompositor *compositor, | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_compositor_filter_keybinding (MetaCompositor *compositor, | ||||
|                                    MetaScreen     *screen, | ||||
|                                    MetaKeyBinding *binding) | ||||
| { | ||||
|   MetaCompScreen *info = meta_screen_get_compositor_data (screen); | ||||
|  | ||||
|   if (info->plugin_mgr) | ||||
|     return meta_plugin_manager_filter_keybinding (info->plugin_mgr, binding); | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_show_window (MetaCompositor *compositor, | ||||
| 			     MetaWindow	    *window, | ||||
| @@ -1109,11 +913,8 @@ static void | ||||
| sync_actor_stacking (MetaCompScreen *info) | ||||
| { | ||||
|   GList *children; | ||||
|   GList *expected_window_node; | ||||
|   GList *tmp; | ||||
|   GList *old; | ||||
|   GList *backgrounds; | ||||
|   gboolean has_windows; | ||||
|   gboolean reordered; | ||||
|  | ||||
|   /* NB: The first entries in the lists are stacked the lowest */ | ||||
| @@ -1122,74 +923,60 @@ sync_actor_stacking (MetaCompScreen *info) | ||||
|    * little effort to make sure we actually need to restack before | ||||
|    * we go ahead and do it */ | ||||
|  | ||||
|   children = clutter_actor_get_children (info->window_group); | ||||
|   children = clutter_container_get_children (CLUTTER_CONTAINER (info->window_group)); | ||||
|   reordered = FALSE; | ||||
|  | ||||
|   old = children; | ||||
|  | ||||
|   /* We allow for actors in the window group other than the actors we | ||||
|    * know about, but it's up to a plugin to try and keep them stacked correctly | ||||
|    * (we really need extra API to make that reliable.) | ||||
|    */ | ||||
|  | ||||
|   /* First we collect a list of all backgrounds, and check if they're at the | ||||
|    * bottom. Then we check if the window actors are in the correct sequence */ | ||||
|   backgrounds = NULL; | ||||
|   expected_window_node = info->windows; | ||||
|   for (old = children; old != NULL; old = old->next) | ||||
|   /* Of the actors we know, the bottom actor should be the background actor */ | ||||
|  | ||||
|   while (old && old->data != info->background_actor && !META_IS_WINDOW_ACTOR (old->data)) | ||||
|     old = old->next; | ||||
|   if (old == NULL || old->data != info->background_actor) | ||||
|     { | ||||
|       ClutterActor *actor = old->data; | ||||
|  | ||||
|       if (META_IS_BACKGROUND_GROUP (actor) || | ||||
|           META_IS_BACKGROUND_ACTOR (actor)) | ||||
|         { | ||||
|           backgrounds = g_list_prepend (backgrounds, actor); | ||||
|  | ||||
|           if (has_windows) | ||||
|             reordered = TRUE; | ||||
|         } | ||||
|       else if (META_IS_WINDOW_ACTOR (actor) && !reordered) | ||||
|         { | ||||
|           has_windows = TRUE; | ||||
|  | ||||
|           if (expected_window_node != NULL && actor == expected_window_node->data) | ||||
|             expected_window_node = expected_window_node->next; | ||||
|           else | ||||
|             reordered = TRUE; | ||||
|         } | ||||
|       reordered = TRUE; | ||||
|       goto done_with_check; | ||||
|     } | ||||
|  | ||||
|   /* Then the window actors should follow in sequence */ | ||||
|  | ||||
|   old = old->next; | ||||
|   for (tmp = info->windows; tmp != NULL; tmp = tmp->next) | ||||
|     { | ||||
|       while (old && !META_IS_WINDOW_ACTOR (old->data)) | ||||
|         old = old->next; | ||||
|  | ||||
|       /* old == NULL: someone reparented a window out of the window group, | ||||
|        * order undefined, always restack */ | ||||
|       if (old == NULL || old->data != tmp->data) | ||||
|         { | ||||
|           reordered = TRUE; | ||||
|           goto done_with_check; | ||||
|         } | ||||
|  | ||||
|       old = old->next; | ||||
|     } | ||||
|  | ||||
|  done_with_check: | ||||
|  | ||||
|   g_list_free (children); | ||||
|  | ||||
|   if (!reordered) | ||||
|     { | ||||
|       g_list_free (backgrounds); | ||||
|       return; | ||||
|     } | ||||
|     return; | ||||
|  | ||||
|   /* reorder the actors by lowering them in turn to the bottom of the stack. | ||||
|    * 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, *parent; | ||||
|       MetaWindowActor *window_actor = tmp->data; | ||||
|  | ||||
|       parent = clutter_actor_get_parent (actor); | ||||
|       clutter_actor_set_child_below_sibling (parent, actor, NULL); | ||||
|       clutter_actor_lower_bottom (CLUTTER_ACTOR (window_actor)); | ||||
|     } | ||||
|  | ||||
|   /* we prepended the backgrounds above so the last actor in the list | ||||
|    * should get lowered to the bottom last. | ||||
|    */ | ||||
|   for (tmp = backgrounds; tmp != NULL; tmp = tmp->next) | ||||
|     { | ||||
|       ClutterActor *actor = tmp->data, *parent; | ||||
|  | ||||
|       parent = clutter_actor_get_parent (actor); | ||||
|       clutter_actor_set_child_below_sibling (parent, actor, NULL); | ||||
|     } | ||||
|   g_list_free (backgrounds); | ||||
|   clutter_actor_lower_bottom (info->background_actor); | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -1310,8 +1097,7 @@ meta_compositor_window_unmapped (MetaCompositor *compositor, | ||||
|  | ||||
| void | ||||
| meta_compositor_sync_window_geometry (MetaCompositor *compositor, | ||||
| 				      MetaWindow *window, | ||||
|                                       gboolean did_placement) | ||||
| 				      MetaWindow *window) | ||||
| { | ||||
|   MetaWindowActor *window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window)); | ||||
|   MetaScreen      *screen = meta_window_get_screen (window); | ||||
| @@ -1323,7 +1109,7 @@ meta_compositor_sync_window_geometry (MetaCompositor *compositor, | ||||
|   if (!window_actor) | ||||
|     return; | ||||
|  | ||||
|   meta_window_actor_sync_actor_geometry (window_actor, did_placement); | ||||
|   meta_window_actor_sync_actor_position (window_actor); | ||||
| } | ||||
|  | ||||
| void | ||||
| @@ -1345,53 +1131,13 @@ meta_compositor_sync_screen_size (MetaCompositor  *compositor, | ||||
|  | ||||
|   XResizeWindow (xdisplay, xwin, width, height); | ||||
|  | ||||
|   meta_background_actor_screen_size_changed (screen); | ||||
|  | ||||
|   meta_verbose ("Changed size for stage on screen %d to %dx%d\n", | ||||
| 		meta_screen_get_screen_number (screen), | ||||
| 		width, height); | ||||
| } | ||||
|  | ||||
| static void | ||||
| frame_callback (CoglOnscreen  *onscreen, | ||||
|                 CoglFrameEvent event, | ||||
|                 CoglFrameInfo *frame_info, | ||||
|                 void          *user_data) | ||||
| { | ||||
|   MetaCompScreen *info = user_data; | ||||
|   GList *l; | ||||
|  | ||||
|   if (event == COGL_FRAME_EVENT_COMPLETE) | ||||
|     { | ||||
|       gint64 presentation_time_cogl = cogl_frame_info_get_presentation_time (frame_info); | ||||
|       gint64 presentation_time; | ||||
|  | ||||
|       if (presentation_time_cogl != 0) | ||||
|         { | ||||
|           /* Cogl reports presentation in terms of its own clock, which is | ||||
|            * guaranteed to be in nanoseconds but with no specified base. The | ||||
|            * normal case with the open source GPU drivers on Linux 3.8 and | ||||
|            * newer is that the base of cogl_get_clock_time() is that of | ||||
|            * clock_gettime(CLOCK_MONOTONIC), so the same as g_get_monotonic_time), | ||||
|            * but there's no exposure of that through the API. clock_gettime() | ||||
|            * is fairly fast, so calling it twice and subtracting to get a | ||||
|            * nearly-zero number is acceptable, if a litle ugly. | ||||
|            */ | ||||
|           CoglContext *context = cogl_framebuffer_get_context (COGL_FRAMEBUFFER (onscreen)); | ||||
|           gint64 current_cogl_time = cogl_get_clock_time (context); | ||||
|           gint64 current_monotonic_time = g_get_monotonic_time (); | ||||
|  | ||||
|           presentation_time = | ||||
|             current_monotonic_time + (presentation_time_cogl - current_cogl_time) / 1000; | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           presentation_time = 0; | ||||
|         } | ||||
|  | ||||
|       for (l = info->windows; l; l = l->next) | ||||
|         meta_window_actor_frame_complete (l->data, frame_info, presentation_time); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| pre_paint_windows (MetaCompScreen *info) | ||||
| { | ||||
| @@ -1399,15 +1145,6 @@ pre_paint_windows (MetaCompScreen *info) | ||||
|   MetaWindowActor *top_window; | ||||
|   MetaWindowActor *expected_unredirected_window = NULL; | ||||
|  | ||||
|   if (info->onscreen == NULL) | ||||
|     { | ||||
|       info->onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ()); | ||||
|       info->frame_closure = cogl_onscreen_add_frame_callback (info->onscreen, | ||||
|                                                               frame_callback, | ||||
|                                                               info, | ||||
|                                                               NULL); | ||||
|     } | ||||
|  | ||||
|   if (info->windows == NULL) | ||||
|     return; | ||||
|  | ||||
| @@ -1482,7 +1219,6 @@ on_shadow_factory_changed (MetaShadowFactory *factory, | ||||
|  | ||||
| /** | ||||
|  * meta_compositor_new: (skip) | ||||
|  * @display: | ||||
|  * | ||||
|  */ | ||||
| MetaCompositor * | ||||
| @@ -1490,6 +1226,7 @@ meta_compositor_new (MetaDisplay *display) | ||||
| { | ||||
|   char *atom_names[] = { | ||||
|     "_XROOTPMAP_ID", | ||||
|     "_XSETROOT_ID", | ||||
|     "_NET_WM_WINDOW_OPACITY", | ||||
|   }; | ||||
|   Atom                   atoms[G_N_ELEMENTS(atom_names)]; | ||||
| @@ -1516,7 +1253,8 @@ meta_compositor_new (MetaDisplay *display) | ||||
|                     compositor); | ||||
|  | ||||
|   compositor->atom_x_root_pixmap = atoms[0]; | ||||
|   compositor->atom_net_wm_window_opacity = atoms[1]; | ||||
|   compositor->atom_x_set_root = atoms[1]; | ||||
|   compositor->atom_net_wm_window_opacity = atoms[2]; | ||||
|  | ||||
|   compositor->repaint_func_id = clutter_threads_add_repaint_func (meta_repaint_func, | ||||
|                                                                   compositor, | ||||
| @@ -1527,7 +1265,6 @@ meta_compositor_new (MetaDisplay *display) | ||||
|  | ||||
| /** | ||||
|  * meta_get_overlay_window: (skip) | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  */ | ||||
| Window | ||||
| @@ -1572,91 +1309,43 @@ meta_enable_unredirect_for_screen (MetaScreen *screen) | ||||
| #define FLASH_TIME_MS 50 | ||||
|  | ||||
| static void | ||||
| flash_out_completed (ClutterTimeline *timeline, | ||||
|                      gboolean         is_finished, | ||||
|                      gpointer         user_data) | ||||
| flash_out_completed (ClutterAnimation *animation, | ||||
|                      ClutterActor     *flash) | ||||
| { | ||||
|   ClutterActor *flash = CLUTTER_ACTOR (user_data); | ||||
|   clutter_actor_destroy (flash); | ||||
| } | ||||
|  | ||||
| static void | ||||
| flash_in_completed (ClutterAnimation *animation, | ||||
|                     ClutterActor     *flash) | ||||
| { | ||||
|   clutter_actor_animate (flash, CLUTTER_EASE_IN_QUAD, | ||||
|                          FLASH_TIME_MS, | ||||
|                          "opacity", 0, | ||||
|                          "signal-after::completed", flash_out_completed, flash, | ||||
|                          NULL); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_compositor_flash_screen (MetaCompositor *compositor, | ||||
|                               MetaScreen     *screen) | ||||
| { | ||||
|   ClutterActor *stage; | ||||
|   ClutterActor *flash; | ||||
|   ClutterTransition *transition; | ||||
|   ClutterColor black = { 0, 0, 0, 255 }; | ||||
|   gfloat width, height; | ||||
|  | ||||
|   stage = meta_get_stage_for_screen (screen); | ||||
|   clutter_actor_get_size (stage, &width, &height); | ||||
|  | ||||
|   flash = clutter_actor_new (); | ||||
|   clutter_actor_set_background_color (flash, CLUTTER_COLOR_Black); | ||||
|   flash = clutter_rectangle_new_with_color (&black); | ||||
|   clutter_actor_set_size (flash, width, height); | ||||
|   clutter_actor_set_opacity (flash, 0); | ||||
|   clutter_actor_add_child (stage, flash); | ||||
|   clutter_container_add_actor (CLUTTER_CONTAINER (stage), flash); | ||||
|  | ||||
|   clutter_actor_save_easing_state (flash); | ||||
|   clutter_actor_set_easing_mode (flash, CLUTTER_EASE_IN_QUAD); | ||||
|   clutter_actor_set_easing_duration (flash, FLASH_TIME_MS); | ||||
|   clutter_actor_set_opacity (flash, 192); | ||||
|  | ||||
|   transition = clutter_actor_get_transition (flash, "opacity"); | ||||
|   clutter_timeline_set_auto_reverse (CLUTTER_TIMELINE (transition), TRUE); | ||||
|   clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (transition), 2); | ||||
|  | ||||
|   g_signal_connect (transition, "stopped", | ||||
|                     G_CALLBACK (flash_out_completed), flash); | ||||
|  | ||||
|   clutter_actor_restore_easing_state (flash); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_compositor_monotonic_time_to_server_time: | ||||
|  * @display: a #MetaDisplay | ||||
|  * @monotonic_time: time in the units of g_get_monotonic_time() | ||||
|  * | ||||
|  * _NET_WM_FRAME_DRAWN and _NET_WM_FRAME_TIMINGS messages represent time | ||||
|  * as a "high resolution server time" - this is the server time interpolated | ||||
|  * to microsecond resolution. The advantage of this time representation | ||||
|  * is that if  X server is running on the same computer as a client, and | ||||
|  * the Xserver uses 'clock_gettime(CLOCK_MONOTONIC, ...)' for the server | ||||
|  * time, the client can detect this, and all such clients will share a | ||||
|  * a time representation with high accuracy. If there is not a common | ||||
|  * time source, then the time synchronization will be less accurate. | ||||
|  */ | ||||
| gint64 | ||||
| meta_compositor_monotonic_time_to_server_time (MetaDisplay *display, | ||||
|                                                gint64       monotonic_time) | ||||
| { | ||||
|   MetaCompositor *compositor = display->compositor; | ||||
|  | ||||
|   if (compositor->server_time_query_time == 0 || | ||||
|       (!compositor->server_time_is_monotonic_time && | ||||
|        monotonic_time > compositor->server_time_query_time + 10*1000*1000)) /* 10 seconds */ | ||||
|     { | ||||
|       guint32 server_time = meta_display_get_current_time_roundtrip (display); | ||||
|       gint64 server_time_usec = (gint64)server_time * 1000; | ||||
|       gint64 current_monotonic_time = g_get_monotonic_time (); | ||||
|       compositor->server_time_query_time = current_monotonic_time; | ||||
|  | ||||
|       /* If the server time is within a second of the monotonic time, | ||||
|        * we assume that they are identical. This seems like a big margin, | ||||
|        * but we want to be as robust as possible even if the system | ||||
|        * is under load and our processing of the server response is | ||||
|        * delayed. | ||||
|        */ | ||||
|       if (server_time_usec > current_monotonic_time - 1000*1000 && | ||||
|           server_time_usec < current_monotonic_time + 1000*1000) | ||||
|         compositor->server_time_is_monotonic_time = TRUE; | ||||
|  | ||||
|       compositor->server_time_offset = server_time_usec - current_monotonic_time; | ||||
|     } | ||||
|  | ||||
|   if (compositor->server_time_is_monotonic_time) | ||||
|     return monotonic_time; | ||||
|   else | ||||
|     return monotonic_time + compositor->server_time_offset; | ||||
|   clutter_actor_animate (flash, CLUTTER_EASE_OUT_QUAD, | ||||
|                          FLASH_TIME_MS, | ||||
|                          "opacity", 192, | ||||
|                          "signal-after::completed", flash_in_completed, flash, | ||||
|                          NULL); | ||||
| } | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
| void meta_background_actor_set_visible_region  (MetaBackgroundActor *self, | ||||
|                                                 cairo_region_t      *visible_region); | ||||
|  | ||||
| cairo_region_t *meta_background_actor_get_visible_region (MetaBackgroundActor *self); | ||||
| void meta_background_actor_update              (MetaScreen *screen); | ||||
| void meta_background_actor_screen_size_changed (MetaScreen *screen); | ||||
|  | ||||
| #endif /* META_BACKGROUND_ACTOR_PRIVATE_H */ | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| /* -*- 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. | ||||
|  * | ||||
| @@ -21,17 +23,12 @@ | ||||
|  * 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> | ||||
|  | ||||
| #define COGL_ENABLE_EXPERIMENTAL_API | ||||
| #include <cogl/cogl-texture-pixmap-x11.h> | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
| #include <clutter/clutter.h> | ||||
|  | ||||
| #include <X11/Xatom.h> | ||||
| @@ -39,23 +36,226 @@ | ||||
| #include "cogl-utils.h" | ||||
| #include "compositor-private.h" | ||||
| #include <meta/errors.h> | ||||
| #include <meta/meta-background.h> | ||||
| #include "meta-background-actor-private.h" | ||||
|  | ||||
| /* We allow creating multiple MetaBackgroundActors for the same MetaScreen to | ||||
|  * allow different rendering options to be set for different copies. | ||||
|  * But we want to share the same underlying CoglTexture for efficiency and | ||||
|  * to avoid driver bugs that might occur if we created multiple CoglTexturePixmaps | ||||
|  * for the same pixmap. | ||||
|  * | ||||
|  * This structure holds common information. | ||||
|  */ | ||||
| typedef struct _MetaScreenBackground MetaScreenBackground; | ||||
|  | ||||
| struct _MetaScreenBackground | ||||
| { | ||||
|   MetaScreen *screen; | ||||
|   GSList *actors; | ||||
|  | ||||
|   float texture_width; | ||||
|   float texture_height; | ||||
|   CoglHandle texture; | ||||
|   CoglMaterialWrapMode wrap_mode; | ||||
|   guint have_pixmap : 1; | ||||
| }; | ||||
|  | ||||
| struct _MetaBackgroundActorPrivate | ||||
| { | ||||
|   MetaScreenBackground *background; | ||||
|   CoglHandle material; | ||||
|   cairo_region_t *visible_region; | ||||
|   float dim_factor; | ||||
| }; | ||||
|  | ||||
| enum | ||||
| { | ||||
|   PROP_0, | ||||
|  | ||||
|   PROP_DIM_FACTOR, | ||||
|  | ||||
|   PROP_LAST | ||||
| }; | ||||
|  | ||||
| static GParamSpec *obj_props[PROP_LAST]; | ||||
|  | ||||
| G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| static void set_texture                (MetaScreenBackground *background, | ||||
|                                         CoglHandle            texture); | ||||
| static void set_texture_to_stage_color (MetaScreenBackground *background); | ||||
|  | ||||
| static void | ||||
| on_notify_stage_color (GObject              *stage, | ||||
|                        GParamSpec           *pspec, | ||||
|                        MetaScreenBackground *background) | ||||
| { | ||||
|   if (!background->have_pixmap) | ||||
|     set_texture_to_stage_color (background); | ||||
| } | ||||
|  | ||||
| static void | ||||
| free_screen_background (MetaScreenBackground *background) | ||||
| { | ||||
|   set_texture (background, COGL_INVALID_HANDLE); | ||||
|  | ||||
|   if (background->screen != NULL) | ||||
|     { | ||||
|       ClutterActor *stage = meta_get_stage_for_screen (background->screen); | ||||
|       g_signal_handlers_disconnect_by_func (stage, | ||||
|                                             (gpointer) on_notify_stage_color, | ||||
|                                             background); | ||||
|       background->screen = NULL; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static MetaScreenBackground * | ||||
| meta_screen_background_get (MetaScreen *screen) | ||||
| { | ||||
|   MetaScreenBackground *background; | ||||
|  | ||||
|   background = g_object_get_data (G_OBJECT (screen), "meta-screen-background"); | ||||
|   if (background == NULL) | ||||
|     { | ||||
|       ClutterActor *stage; | ||||
|  | ||||
|       background = g_new0 (MetaScreenBackground, 1); | ||||
|  | ||||
|       background->screen = screen; | ||||
|       g_object_set_data_full (G_OBJECT (screen), "meta-screen-background", | ||||
|                               background, (GDestroyNotify) free_screen_background); | ||||
|  | ||||
|       stage = meta_get_stage_for_screen (screen); | ||||
|       g_signal_connect (stage, "notify::color", | ||||
|                         G_CALLBACK (on_notify_stage_color), background); | ||||
|  | ||||
|       meta_background_actor_update (screen); | ||||
|     } | ||||
|  | ||||
|   return background; | ||||
| } | ||||
|  | ||||
| static void | ||||
| update_wrap_mode_of_actor (MetaBackgroundActor *self) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|  | ||||
|   cogl_material_set_layer_wrap_mode (priv->material, 0, priv->background->wrap_mode); | ||||
| } | ||||
|  | ||||
| static void | ||||
| update_wrap_mode (MetaScreenBackground *background) | ||||
| { | ||||
|   GSList *l; | ||||
|   int width, height; | ||||
|  | ||||
|   meta_screen_get_size (background->screen, &width, &height); | ||||
|  | ||||
|   /* We turn off repeating when we have a full-screen pixmap to keep from | ||||
|    * getting artifacts from one side of the image sneaking into the other | ||||
|    * side of the image via bilinear filtering. | ||||
|    */ | ||||
|   if (width == background->texture_width && height == background->texture_height) | ||||
|     background->wrap_mode = COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE; | ||||
|   else | ||||
|     background->wrap_mode = COGL_MATERIAL_WRAP_MODE_REPEAT; | ||||
|  | ||||
|   for (l = background->actors; l; l = l->next) | ||||
|     update_wrap_mode_of_actor (l->data); | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_texture_on_actor (MetaBackgroundActor *self) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   MetaDisplay *display = meta_screen_get_display (priv->background->screen); | ||||
|  | ||||
|   /* This may trigger destruction of an old texture pixmap, which, if | ||||
|    * the underlying X pixmap is already gone has the tendency to trigger | ||||
|    * X errors inside DRI. For safety, trap errors */ | ||||
|   meta_error_trap_push (display); | ||||
|   cogl_material_set_layer (priv->material, 0, priv->background->texture); | ||||
|   meta_error_trap_pop (display); | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_texture (MetaScreenBackground *background, | ||||
|              CoglHandle            texture) | ||||
| { | ||||
|   MetaDisplay *display = meta_screen_get_display (background->screen); | ||||
|   GSList *l; | ||||
|  | ||||
|   /* This may trigger destruction of an old texture pixmap, which, if | ||||
|    * the underlying X pixmap is already gone has the tendency to trigger | ||||
|    * X errors inside DRI. For safety, trap errors */ | ||||
|   meta_error_trap_push (display); | ||||
|   if (background->texture != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (background->texture); | ||||
|       background->texture = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|   meta_error_trap_pop (display); | ||||
|  | ||||
|   if (texture != COGL_INVALID_HANDLE) | ||||
|     background->texture = cogl_handle_ref (texture); | ||||
|  | ||||
|   background->texture_width = cogl_texture_get_width (background->texture); | ||||
|   background->texture_height = cogl_texture_get_height (background->texture); | ||||
|  | ||||
|   for (l = background->actors; l; l = l->next) | ||||
|     set_texture_on_actor (l->data); | ||||
|  | ||||
|   update_wrap_mode (background); | ||||
| } | ||||
|  | ||||
| /* Sets our material to paint with a 1x1 texture of the stage's background | ||||
|  * color; doing this when we have no pixmap allows the application to turn | ||||
|  * off painting the stage. There might be a performance benefit to | ||||
|  * painting in this case with a solid color, but the normal solid color | ||||
|  * case is a 1x1 root pixmap, so we'd have to reverse-engineer that to | ||||
|  * actually pick up the (small?) performance win. This is just a fallback. | ||||
|  */ | ||||
| static void | ||||
| set_texture_to_stage_color (MetaScreenBackground *background) | ||||
| { | ||||
|   ClutterActor *stage = meta_get_stage_for_screen (background->screen); | ||||
|   ClutterColor color; | ||||
|   CoglHandle texture; | ||||
|  | ||||
|   clutter_stage_get_color (CLUTTER_STAGE (stage), &color); | ||||
|  | ||||
|   /* Slicing will prevent COGL from using hardware texturing for | ||||
|    * the tiled 1x1 pixmap, and will cause it to draw the window | ||||
|    * background in millions of separate 1x1 rectangles */ | ||||
|   texture = meta_create_color_texture_4ub (color.red, color.green, | ||||
|                                            color.blue, 0xff, | ||||
|                                            COGL_TEXTURE_NO_SLICING); | ||||
|   set_texture (background, texture); | ||||
|   cogl_handle_unref (texture); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_dispose (GObject *object) | ||||
| { | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|  | ||||
|   meta_background_actor_set_visible_region (self, NULL); | ||||
|  | ||||
|   if (priv->background != NULL) | ||||
|     { | ||||
|       priv->background->actors = g_slist_remove (priv->background->actors, self); | ||||
|       priv->background = NULL; | ||||
|     } | ||||
|  | ||||
|   if (priv->material != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (priv->material); | ||||
|       priv->material = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|  | ||||
|   G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object); | ||||
| } | ||||
|  | ||||
| @@ -65,15 +265,11 @@ meta_background_actor_get_preferred_width (ClutterActor *actor, | ||||
|                                            gfloat       *min_width_p, | ||||
|                                            gfloat       *natural_width_p) | ||||
| { | ||||
|   ClutterContent *content; | ||||
|   gfloat width; | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   int width, height; | ||||
|  | ||||
|   content = clutter_actor_get_content (actor); | ||||
|  | ||||
|   if (content) | ||||
|     clutter_content_get_preferred_size (content, &width, NULL); | ||||
|   else | ||||
|     width = 0; | ||||
|   meta_screen_get_size (priv->background->screen, &width, &height); | ||||
|  | ||||
|   if (min_width_p) | ||||
|     *min_width_p = width; | ||||
| @@ -88,15 +284,11 @@ meta_background_actor_get_preferred_height (ClutterActor *actor, | ||||
|                                             gfloat       *natural_height_p) | ||||
|  | ||||
| { | ||||
|   ClutterContent *content; | ||||
|   gfloat height; | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   int width, height; | ||||
|  | ||||
|   content = clutter_actor_get_content (actor); | ||||
|  | ||||
|   if (content) | ||||
|     clutter_content_get_preferred_size (content, NULL, &height); | ||||
|   else | ||||
|     height = 0; | ||||
|   meta_screen_get_size (priv->background->screen, &width, &height); | ||||
|  | ||||
|   if (min_height_p) | ||||
|     *min_height_p = height; | ||||
| @@ -104,19 +296,64 @@ meta_background_actor_get_preferred_height (ClutterActor *actor, | ||||
|     *natural_height_p = height; | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_paint (ClutterActor *actor) | ||||
| { | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   guint8 opacity = clutter_actor_get_paint_opacity (actor); | ||||
|   guint8 color_component; | ||||
|   int width, height; | ||||
|  | ||||
|   meta_screen_get_size (priv->background->screen, &width, &height); | ||||
|  | ||||
|   color_component = (int)(0.5 + opacity * priv->dim_factor); | ||||
|  | ||||
|   cogl_material_set_color4ub (priv->material, | ||||
|                               color_component, | ||||
|                               color_component, | ||||
|                               color_component, | ||||
|                               opacity); | ||||
|  | ||||
|   cogl_set_source (priv->material); | ||||
|  | ||||
|   if (priv->visible_region) | ||||
|     { | ||||
|       int n_rectangles = cairo_region_num_rectangles (priv->visible_region); | ||||
|       int i; | ||||
|  | ||||
|       for (i = 0; i < n_rectangles; i++) | ||||
|         { | ||||
|           cairo_rectangle_int_t rect; | ||||
|           cairo_region_get_rectangle (priv->visible_region, i, &rect); | ||||
|  | ||||
|           cogl_rectangle_with_texture_coords (rect.x, rect.y, | ||||
|                                               rect.x + rect.width, rect.y + rect.height, | ||||
|                                               rect.x / priv->background->texture_width, | ||||
|                                               rect.y / priv->background->texture_height, | ||||
|                                               (rect.x + rect.width) / priv->background->texture_width, | ||||
|                                               (rect.y + rect.height) / priv->background->texture_height); | ||||
|         } | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       cogl_rectangle_with_texture_coords (0.0f, 0.0f, | ||||
|                                           width, height, | ||||
|                                           0.0f, 0.0f, | ||||
|                                           width / priv->background->texture_width, | ||||
|                                           height / priv->background->texture_height); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_background_actor_get_paint_volume (ClutterActor       *actor, | ||||
|                                         ClutterPaintVolume *volume) | ||||
| { | ||||
|   ClutterContent *content; | ||||
|   gfloat width, height; | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   int width, height; | ||||
|  | ||||
|   content = clutter_actor_get_content (actor); | ||||
|  | ||||
|   if (!content) | ||||
|     return FALSE; | ||||
|  | ||||
|   clutter_content_get_preferred_size (content, &width, &height); | ||||
|   meta_screen_get_size (priv->background->screen, &width, &height); | ||||
|  | ||||
|   clutter_paint_volume_set_width (volume, width); | ||||
|   clutter_paint_volume_set_height (volume, height); | ||||
| @@ -124,48 +361,214 @@ meta_background_actor_get_paint_volume (ClutterActor       *actor, | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_set_dim_factor (MetaBackgroundActor *self, | ||||
|                                       gfloat               dim_factor) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|  | ||||
|   if (priv->dim_factor == dim_factor) | ||||
|     return; | ||||
|  | ||||
|   priv->dim_factor = dim_factor; | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); | ||||
|  | ||||
|   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_DIM_FACTOR]); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_get_property(GObject         *object, | ||||
|                                    guint            prop_id, | ||||
|                                    GValue          *value, | ||||
|                                    GParamSpec      *pspec) | ||||
| { | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object); | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|  | ||||
|   switch (prop_id) | ||||
|     { | ||||
|     case PROP_DIM_FACTOR: | ||||
|       g_value_set_float (value, priv->dim_factor); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_set_property(GObject         *object, | ||||
|                                    guint            prop_id, | ||||
|                                    const GValue    *value, | ||||
|                                    GParamSpec      *pspec) | ||||
| { | ||||
|   MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object); | ||||
|  | ||||
|   switch (prop_id) | ||||
|     { | ||||
|     case PROP_DIM_FACTOR: | ||||
|       meta_background_actor_set_dim_factor (self, g_value_get_float (value)); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_class_init (MetaBackgroundActorClass *klass) | ||||
| { | ||||
|   GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||||
|   ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); | ||||
|   GParamSpec *pspec; | ||||
|  | ||||
|   g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate)); | ||||
|  | ||||
|   object_class->dispose = meta_background_actor_dispose; | ||||
|   object_class->get_property = meta_background_actor_get_property; | ||||
|   object_class->set_property = meta_background_actor_set_property; | ||||
|  | ||||
|   actor_class->get_preferred_width = meta_background_actor_get_preferred_width; | ||||
|   actor_class->get_preferred_height = meta_background_actor_get_preferred_height; | ||||
|   actor_class->paint = meta_background_actor_paint; | ||||
|   actor_class->get_paint_volume = meta_background_actor_get_paint_volume; | ||||
|  | ||||
|   /** | ||||
|    * MetaBackgroundActor:dim-factor: | ||||
|    * | ||||
|    * Factor to dim the background by, between 0.0 (black) and 1.0 (original | ||||
|    * colors) | ||||
|    */ | ||||
|   pspec = g_param_spec_float ("dim-factor", | ||||
|                               "Dim factor", | ||||
|                               "Factor to dim the background by", | ||||
|                               0.0, 1.0, | ||||
|                               1.0, | ||||
|                               G_PARAM_READWRITE); | ||||
|   obj_props[PROP_DIM_FACTOR] = pspec; | ||||
|   g_object_class_install_property (object_class, PROP_DIM_FACTOR, pspec); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_actor_init (MetaBackgroundActor *self) | ||||
| { | ||||
|   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, | ||||
|                                             META_TYPE_BACKGROUND_ACTOR, | ||||
|                                             MetaBackgroundActorPrivate); | ||||
|   MetaBackgroundActorPrivate *priv; | ||||
|  | ||||
|   priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, | ||||
|                                                    META_TYPE_BACKGROUND_ACTOR, | ||||
|                                                    MetaBackgroundActorPrivate); | ||||
|   priv->dim_factor = 1.0; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_new: | ||||
|  * @screen: the #MetaScreen | ||||
|  * | ||||
|  * Creates a new actor to draw the background for the given monitor. | ||||
|  * This actor should be associated with a #MetaBackground using | ||||
|  * clutter_actor_set_content() | ||||
|  * Creates a new actor to draw the background for the given screen. | ||||
|  * | ||||
|  * Return value: the newly created background actor | ||||
|  */ | ||||
| ClutterActor * | ||||
| meta_background_actor_new (void) | ||||
| meta_background_actor_new_for_screen (MetaScreen *screen) | ||||
| { | ||||
|   MetaBackgroundActor *self; | ||||
|   MetaBackgroundActorPrivate *priv; | ||||
|  | ||||
|   g_return_val_if_fail (META_IS_SCREEN (screen), NULL); | ||||
|  | ||||
|   self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL); | ||||
|   priv = self->priv; | ||||
|  | ||||
|   priv->background = meta_screen_background_get (screen); | ||||
|   priv->background->actors = g_slist_prepend (priv->background->actors, self); | ||||
|  | ||||
|   priv->material = meta_create_texture_material (NULL); | ||||
|  | ||||
|   set_texture_on_actor (self); | ||||
|   update_wrap_mode_of_actor (self); | ||||
|  | ||||
|   return CLUTTER_ACTOR (self); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_update: | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  * Refetches the _XROOTPMAP_ID property for the root window and updates | ||||
|  * the contents of the background actor based on that. There's no attempt | ||||
|  * to optimize out pixmap values that don't change (since a root pixmap | ||||
|  * could be replaced by with another pixmap with the same ID under some | ||||
|  * circumstances), so this should only be called when we actually receive | ||||
|  * a PropertyNotify event for the property. | ||||
|  */ | ||||
| void | ||||
| meta_background_actor_update (MetaScreen *screen) | ||||
| { | ||||
|   MetaScreenBackground *background; | ||||
|   MetaDisplay *display; | ||||
|   MetaCompositor *compositor; | ||||
|   Atom type; | ||||
|   int format; | ||||
|   gulong nitems; | ||||
|   gulong bytes_after; | ||||
|   guchar *data; | ||||
|   Pixmap root_pixmap_id; | ||||
|  | ||||
|   background = meta_screen_background_get (screen); | ||||
|   display = meta_screen_get_display (screen); | ||||
|   compositor = meta_display_get_compositor (display); | ||||
|  | ||||
|   root_pixmap_id = None; | ||||
|   if (!XGetWindowProperty (meta_display_get_xdisplay (display), | ||||
|                            meta_screen_get_xroot (screen), | ||||
|                            compositor->atom_x_root_pixmap, | ||||
|                            0, LONG_MAX, | ||||
|                            False, | ||||
|                            AnyPropertyType, | ||||
|                            &type, &format, &nitems, &bytes_after, &data) && | ||||
|       type != None) | ||||
|   { | ||||
|      /* Got a property. */ | ||||
|      if (type == XA_PIXMAP && format == 32 && nitems == 1) | ||||
|        { | ||||
|          /* Was what we expected. */ | ||||
|          root_pixmap_id = *(Pixmap *)data; | ||||
|        } | ||||
|  | ||||
|      XFree(data); | ||||
|   } | ||||
|  | ||||
|   if (root_pixmap_id != None) | ||||
|     { | ||||
|       CoglHandle texture; | ||||
|       CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ()); | ||||
|       GError *error = NULL; | ||||
|  | ||||
|       meta_error_trap_push (display); | ||||
|       texture = cogl_texture_pixmap_x11_new (ctx, root_pixmap_id, FALSE, &error); | ||||
|       meta_error_trap_pop (display); | ||||
|  | ||||
|       if (texture != COGL_INVALID_HANDLE) | ||||
|         { | ||||
|           set_texture (background, texture); | ||||
|           cogl_handle_unref (texture); | ||||
|  | ||||
|           background->have_pixmap = True; | ||||
|           return; | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           g_warning ("Failed to create background texture from pixmap: %s", | ||||
|                      error->message); | ||||
|           g_error_free (error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   background->have_pixmap = False; | ||||
|   set_texture_to_stage_color (background); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_set_visible_region: | ||||
|  * @self: a #MetaBackgroundActor | ||||
| @@ -185,44 +588,40 @@ meta_background_actor_set_visible_region (MetaBackgroundActor *self, | ||||
|  | ||||
|   priv = self->priv; | ||||
|  | ||||
|   g_clear_pointer (&priv->visible_region, | ||||
|                    (GDestroyNotify) | ||||
|                    cairo_region_destroy); | ||||
|   if (priv->visible_region) | ||||
|     { | ||||
|       cairo_region_destroy (priv->visible_region); | ||||
|       priv->visible_region = NULL; | ||||
|     } | ||||
|  | ||||
|   if (visible_region) | ||||
|     priv->visible_region = cairo_region_copy (visible_region); | ||||
|     { | ||||
|       cairo_rectangle_int_t screen_rect = { 0 }; | ||||
|       meta_screen_get_size (priv->background->screen, &screen_rect.width, &screen_rect.height); | ||||
|  | ||||
|       /* Doing the intersection here is probably unnecessary - MetaWindowGroup | ||||
|        * should never compute a visible area that's larger than the root screen! | ||||
|        * but it's not that expensive and adds some extra robustness. | ||||
|        */ | ||||
|       priv->visible_region = cairo_region_create_rectangle (&screen_rect); | ||||
|       cairo_region_intersect (priv->visible_region, visible_region); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_actor_get_visible_region: | ||||
|  * @self: a #MetaBackgroundActor | ||||
|  * meta_background_actor_screen_size_changed: | ||||
|  * @screen: a #MetaScreen | ||||
|  * | ||||
|  * Return value (transfer full): a #cairo_region_t that represents the part of | ||||
|  * the background not obscured by other #MetaBackgroundActor or | ||||
|  * #MetaWindowActor objects. | ||||
|  * Called by the compositor when the size of the #MetaScreen changes | ||||
|  */ | ||||
| cairo_region_t * | ||||
| meta_background_actor_get_visible_region (MetaBackgroundActor *self) | ||||
| void | ||||
| meta_background_actor_screen_size_changed (MetaScreen *screen) | ||||
| { | ||||
|   MetaBackgroundActorPrivate *priv = self->priv; | ||||
|   ClutterActorBox content_box; | ||||
|   cairo_rectangle_int_t content_area = { 0 }; | ||||
|   cairo_region_t *visible_region; | ||||
|   MetaScreenBackground *background = meta_screen_background_get (screen); | ||||
|   GSList *l; | ||||
|  | ||||
|   g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL); | ||||
|   update_wrap_mode (background); | ||||
|  | ||||
|   if (!priv->visible_region) | ||||
|       return NULL; | ||||
|  | ||||
|   clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box); | ||||
|  | ||||
|   content_area.x = content_box.x1; | ||||
|   content_area.y = content_box.y1; | ||||
|   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); | ||||
|  | ||||
|   return visible_region; | ||||
|   for (l = background->actors; l; l = l->next) | ||||
|     clutter_actor_queue_relayout (l->data); | ||||
| } | ||||
|   | ||||
| @@ -1,11 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| #ifndef META_BACKGROUND_GROUP_PRIVATE_H | ||||
| #define META_BACKGROUND_GROUP_PRIVATE_H | ||||
|  | ||||
| #include <meta/screen.h> | ||||
| #include <meta/meta-background-group.h> | ||||
|  | ||||
| void meta_background_group_set_visible_region  (MetaBackgroundGroup *self, | ||||
|                                                 cairo_region_t      *visible_region); | ||||
| #endif /* META_BACKGROUND_GROUP_PRIVATE_H */ | ||||
| @@ -1,110 +0,0 @@ | ||||
| /* -*- 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" | ||||
| #include "clutter-utils.h" | ||||
| #include "meta-background-actor-private.h" | ||||
| #include "meta-background-group-private.h" | ||||
|  | ||||
| G_DEFINE_TYPE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_ACTOR); | ||||
|  | ||||
| struct _MetaBackgroundGroupPrivate | ||||
| { | ||||
|   gpointer dummy; | ||||
| }; | ||||
|  | ||||
| static void | ||||
| meta_background_group_dispose (GObject *object) | ||||
| { | ||||
|   G_OBJECT_CLASS (meta_background_group_parent_class)->dispose (object); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_background_group_get_paint_volume (ClutterActor       *actor, | ||||
|                                         ClutterPaintVolume *volume) | ||||
| { | ||||
|   return clutter_paint_volume_set_from_allocation (volume, actor); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_group_class_init (MetaBackgroundGroupClass *klass) | ||||
| { | ||||
|   GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||||
|   ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); | ||||
|  | ||||
|   actor_class->get_paint_volume = meta_background_group_get_paint_volume; | ||||
|   object_class->dispose = meta_background_group_dispose; | ||||
|  | ||||
|   g_type_class_add_private (klass, sizeof (MetaBackgroundGroupPrivate)); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_background_group_init (MetaBackgroundGroup *self) | ||||
| { | ||||
|   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, | ||||
|                                             META_TYPE_BACKGROUND_GROUP, | ||||
|                                             MetaBackgroundGroupPrivate); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_background_group_set_visible_region: | ||||
|  * @self: a #MetaBackgroundGroup | ||||
|  * @visible_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) | ||||
| { | ||||
|   GList *children, *l; | ||||
|  | ||||
|   children = clutter_actor_get_children (CLUTTER_ACTOR (self)); | ||||
|   for (l = children; l; l = l->next) | ||||
|     { | ||||
|       ClutterActor *actor = l->data; | ||||
|  | ||||
|       if (META_IS_BACKGROUND_ACTOR (actor)) | ||||
|         { | ||||
|           meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (actor), region); | ||||
|         } | ||||
|       else if (META_IS_BACKGROUND_GROUP (actor)) | ||||
|         { | ||||
|           int x, y; | ||||
|  | ||||
|           if (!meta_actor_is_untransformed (actor, &x, &y)) | ||||
|             continue; | ||||
|  | ||||
|           cairo_region_translate (region, -x, -y); | ||||
|           meta_background_group_set_visible_region (META_BACKGROUND_GROUP (actor), region); | ||||
|           cairo_region_translate (region, x, y); | ||||
|         } | ||||
|     } | ||||
|   g_list_free (children); | ||||
| } | ||||
|  | ||||
| ClutterActor * | ||||
| meta_background_group_new (void) | ||||
| { | ||||
|   MetaBackgroundGroup *background_group; | ||||
|  | ||||
|   background_group = g_object_new (META_TYPE_BACKGROUND_GROUP, NULL); | ||||
|  | ||||
|   return CLUTTER_ACTOR (background_group); | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -35,32 +35,34 @@ | ||||
|  | ||||
| #include <clutter/x11/clutter-x11.h> | ||||
|  | ||||
| static GType plugin_type = G_TYPE_NONE; | ||||
| static GSList *plugin_types; | ||||
|  | ||||
| /* | ||||
|  * We have one "default plugin manager" that acts for the first screen, | ||||
|  * but also can be used before we open any screens, and additional | ||||
|  * plugin managers for each screen. (This is ugly. Probably we should | ||||
|  * have one plugin manager and only make the plugins per-screen.) | ||||
|  */ | ||||
| static MetaPluginManager *default_plugin_manager; | ||||
|  | ||||
| struct MetaPluginManager | ||||
| { | ||||
|   MetaScreen *screen; | ||||
|   MetaPlugin *plugin; | ||||
|   MetaScreen   *screen; | ||||
|  | ||||
|   GList /* MetaPlugin */ *plugins;  /* TODO -- maybe use hash table */ | ||||
| }; | ||||
|  | ||||
| void | ||||
| meta_plugin_manager_set_plugin_type (GType gtype) | ||||
| { | ||||
|   if (plugin_type != G_TYPE_NONE) | ||||
|     meta_fatal ("Mutter plugin already set: %s", g_type_name (plugin_type)); | ||||
|  | ||||
|   plugin_type = gtype; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Loads the given plugin. | ||||
|  */ | ||||
| void | ||||
| meta_plugin_manager_load (const gchar       *plugin_name) | ||||
| meta_plugin_manager_load (MetaPluginManager *plugin_mgr, | ||||
|                           const gchar       *plugin_name) | ||||
| { | ||||
|   const gchar *dpath = MUTTER_PLUGIN_DIR "/"; | ||||
|   gchar       *path; | ||||
|   MetaModule  *module; | ||||
|   GType        plugin_type; | ||||
|  | ||||
|   if (g_path_is_absolute (plugin_name)) | ||||
|     path = g_strdup (plugin_name); | ||||
| @@ -79,57 +81,162 @@ meta_plugin_manager_load (const gchar       *plugin_name) | ||||
|       exit (1); | ||||
|     } | ||||
|  | ||||
|   meta_plugin_manager_set_plugin_type (meta_module_get_plugin_type (module)); | ||||
|   plugin_type = meta_module_get_plugin_type (module); | ||||
|   meta_plugin_manager_register (plugin_mgr, plugin_type); | ||||
|  | ||||
|   g_type_module_unuse (G_TYPE_MODULE (module)); | ||||
|   g_free (path); | ||||
| } | ||||
|  | ||||
| MetaPluginManager * | ||||
| /* | ||||
|  * Registers the given plugin type | ||||
|  */ | ||||
| void | ||||
| meta_plugin_manager_register (MetaPluginManager *plugin_mgr, | ||||
|                               GType              plugin_type) | ||||
| { | ||||
|   MetaPlugin  *plugin; | ||||
|  | ||||
|   plugin_types = g_slist_prepend (plugin_types, GSIZE_TO_POINTER (plugin_type)); | ||||
|  | ||||
|   plugin = g_object_new (plugin_type, NULL); | ||||
|   plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_plugin_manager_initialize (MetaPluginManager *plugin_mgr) | ||||
| { | ||||
|   GList *iter; | ||||
|  | ||||
|   if (!plugin_mgr->plugins) | ||||
|     { | ||||
|       /* | ||||
|        * If no plugins are specified, load the default plugin. | ||||
|        */ | ||||
|       meta_plugin_manager_load (plugin_mgr, "default"); | ||||
|     } | ||||
|  | ||||
|   for (iter = plugin_mgr->plugins; iter; iter = iter->next) | ||||
|     { | ||||
|       MetaPlugin *plugin = (MetaPlugin*) iter->data; | ||||
|       MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       g_object_set (plugin, | ||||
|                     "screen", plugin_mgr->screen, | ||||
|                     NULL); | ||||
|  | ||||
|       if (klass->start) | ||||
|         klass->start (plugin); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static MetaPluginManager * | ||||
| meta_plugin_manager_new (MetaScreen *screen) | ||||
| { | ||||
|   MetaPluginManager *plugin_mgr; | ||||
|   MetaPluginClass *klass; | ||||
|   MetaPlugin *plugin; | ||||
|  | ||||
|   plugin_mgr = g_new0 (MetaPluginManager, 1); | ||||
|   plugin_mgr->screen = screen; | ||||
|   plugin_mgr->plugin = plugin = g_object_new (plugin_type, "screen", screen, NULL); | ||||
|  | ||||
|   klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|   if (klass->start) | ||||
|     klass->start (plugin); | ||||
|   if (screen) | ||||
|     g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", plugin_mgr); | ||||
|  | ||||
|   return plugin_mgr; | ||||
| } | ||||
|  | ||||
| MetaPluginManager * | ||||
| meta_plugin_manager_get_default (void) | ||||
| { | ||||
|   if (!default_plugin_manager) | ||||
|     { | ||||
|       default_plugin_manager = meta_plugin_manager_new (NULL); | ||||
|     } | ||||
|  | ||||
|   return default_plugin_manager; | ||||
| } | ||||
|  | ||||
| MetaPluginManager * | ||||
| meta_plugin_manager_get (MetaScreen *screen) | ||||
| { | ||||
|   MetaPluginManager *plugin_mgr; | ||||
|  | ||||
|   plugin_mgr = g_object_get_data (G_OBJECT (screen), "meta-plugin-manager"); | ||||
|   if (plugin_mgr) | ||||
|     return plugin_mgr; | ||||
|  | ||||
|   if (!default_plugin_manager) | ||||
|     meta_plugin_manager_get_default (); | ||||
|  | ||||
|   if (!default_plugin_manager->screen) | ||||
|     { | ||||
|       /* The default plugin manager is so far unused, we can recycle it */ | ||||
|       default_plugin_manager->screen = screen; | ||||
|       g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", default_plugin_manager); | ||||
|  | ||||
|       return default_plugin_manager; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       GSList *iter; | ||||
|       GType plugin_type; | ||||
|       MetaPlugin *plugin; | ||||
|  | ||||
|       plugin_mgr = meta_plugin_manager_new (screen); | ||||
|  | ||||
|       for (iter = plugin_types; iter; iter = iter->next) | ||||
|         { | ||||
|           plugin_type = (GType)GPOINTER_TO_SIZE (iter->data); | ||||
|           plugin = g_object_new (plugin_type, "screen", screen,  NULL); | ||||
|           plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin); | ||||
|         } | ||||
|  | ||||
|       return plugin_mgr; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_manager_kill_window_effects (MetaPluginManager *plugin_mgr, | ||||
|                                          MetaWindowActor   *actor) | ||||
| { | ||||
|   MetaPlugin        *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   GList *l = plugin_mgr->plugins; | ||||
|  | ||||
|   if (klass->kill_window_effects) | ||||
|     klass->kill_window_effects (plugin, actor); | ||||
|   while (l) | ||||
|     { | ||||
|       MetaPlugin        *plugin = l->data; | ||||
|       MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       if (!meta_plugin_disabled (plugin) | ||||
| 	  && klass->kill_window_effects) | ||||
|         klass->kill_window_effects (plugin, actor); | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_manager_kill_switch_workspace (MetaPluginManager *plugin_mgr) | ||||
| { | ||||
|   MetaPlugin        *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   GList *l = plugin_mgr->plugins; | ||||
|  | ||||
|   if (klass->kill_switch_workspace) | ||||
|     klass->kill_switch_workspace (plugin); | ||||
|   while (l) | ||||
|     { | ||||
|       MetaPlugin        *plugin = l->data; | ||||
|       MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       if (!meta_plugin_disabled (plugin) | ||||
|           && (meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE) | ||||
| 	  && klass->kill_switch_workspace) | ||||
|         klass->kill_switch_workspace (plugin); | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Public method that the compositor hooks into for events that require | ||||
|  * no additional parameters. | ||||
|  * | ||||
|  * Returns TRUE if the plugin handled the event type (i.e., | ||||
|  * Returns TRUE if at least one of the plugins handled the event type (i.e., | ||||
|  * if the return value is FALSE, there will be no subsequent call to the | ||||
|  * manager completed() callback, and the compositor must ensure that any | ||||
|  * appropriate post-effect cleanup is carried out. | ||||
| @@ -139,48 +246,60 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr, | ||||
|                                   MetaWindowActor   *actor, | ||||
|                                   unsigned long      event) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   MetaDisplay *display  = meta_screen_get_display (plugin_mgr->screen); | ||||
|   GList *l = plugin_mgr->plugins; | ||||
|   gboolean retval = FALSE; | ||||
|   MetaDisplay *display  = meta_screen_get_display (plugin_mgr->screen); | ||||
|  | ||||
|   if (display->display_opening) | ||||
|     return FALSE; | ||||
|  | ||||
|   switch (event) | ||||
|   while (l) | ||||
|     { | ||||
|     case META_PLUGIN_MINIMIZE: | ||||
|       if (klass->minimize) | ||||
|         { | ||||
|           retval = TRUE; | ||||
|           meta_plugin_manager_kill_window_effects (plugin_mgr, | ||||
|                                                    actor); | ||||
|       MetaPlugin        *plugin = l->data; | ||||
|       MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|           _meta_plugin_effect_started (plugin); | ||||
|           klass->minimize (plugin, actor); | ||||
|         } | ||||
|       break; | ||||
|     case META_PLUGIN_MAP: | ||||
|       if (klass->map) | ||||
|       if (!meta_plugin_disabled (plugin) && | ||||
|           (meta_plugin_features (plugin) & event)) | ||||
|         { | ||||
|           retval = TRUE; | ||||
|           meta_plugin_manager_kill_window_effects (plugin_mgr, | ||||
|                                                    actor); | ||||
|  | ||||
|           _meta_plugin_effect_started (plugin); | ||||
|           klass->map (plugin, actor); | ||||
|           switch (event) | ||||
|             { | ||||
|             case META_PLUGIN_MINIMIZE: | ||||
|               if (klass->minimize) | ||||
|                 { | ||||
|                   meta_plugin_manager_kill_window_effects ( | ||||
| 		      plugin_mgr, | ||||
| 		      actor); | ||||
|  | ||||
|                   _meta_plugin_effect_started (plugin); | ||||
|                   klass->minimize (plugin, actor); | ||||
|                 } | ||||
|               break; | ||||
|             case META_PLUGIN_MAP: | ||||
|               if (klass->map) | ||||
|                 { | ||||
|                   meta_plugin_manager_kill_window_effects ( | ||||
| 		      plugin_mgr, | ||||
| 		      actor); | ||||
|  | ||||
|                   _meta_plugin_effect_started (plugin); | ||||
|                   klass->map (plugin, actor); | ||||
|                 } | ||||
|               break; | ||||
|             case META_PLUGIN_DESTROY: | ||||
|               if (klass->destroy) | ||||
|                 { | ||||
|                   _meta_plugin_effect_started (plugin); | ||||
|                   klass->destroy (plugin, actor); | ||||
|                 } | ||||
|               break; | ||||
|             default: | ||||
|               g_warning ("Incorrect handler called for event %lu", event); | ||||
|             } | ||||
|         } | ||||
|       break; | ||||
|     case META_PLUGIN_DESTROY: | ||||
|       if (klass->destroy) | ||||
|         { | ||||
|           retval = TRUE; | ||||
|           _meta_plugin_effect_started (plugin); | ||||
|           klass->destroy (plugin, actor); | ||||
|         } | ||||
|       break; | ||||
|     default: | ||||
|       g_warning ("Incorrect handler called for event %lu", event); | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
|  | ||||
|   return retval; | ||||
| @@ -190,7 +309,7 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr, | ||||
|  * The public method that the compositor hooks into for maximize and unmaximize | ||||
|  * events. | ||||
|  * | ||||
|  * Returns TRUE if the plugin handled the event type (i.e., | ||||
|  * Returns TRUE if at least one of the plugins handled the event type (i.e., | ||||
|  * if the return value is FALSE, there will be no subsequent call to the | ||||
|  * manager completed() callback, and the compositor must ensure that any | ||||
|  * appropriate post-effect cleanup is carried out. | ||||
| @@ -204,44 +323,57 @@ meta_plugin_manager_event_maximize (MetaPluginManager *plugin_mgr, | ||||
|                                     gint               target_width, | ||||
|                                     gint               target_height) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen); | ||||
|   GList *l = plugin_mgr->plugins; | ||||
|   gboolean retval = FALSE; | ||||
|   MetaDisplay *display  = meta_screen_get_display (plugin_mgr->screen); | ||||
|  | ||||
|   if (display->display_opening) | ||||
|     return FALSE; | ||||
|  | ||||
|   switch (event) | ||||
|   while (l) | ||||
|     { | ||||
|     case META_PLUGIN_MAXIMIZE: | ||||
|       if (klass->maximize) | ||||
|       MetaPlugin        *plugin = l->data; | ||||
|       MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       if (!meta_plugin_disabled (plugin) && | ||||
|           (meta_plugin_features (plugin) & event)) | ||||
|         { | ||||
|           retval = TRUE; | ||||
|           meta_plugin_manager_kill_window_effects (plugin_mgr, | ||||
|                                                    actor); | ||||
|  | ||||
|           _meta_plugin_effect_started (plugin); | ||||
|           klass->maximize (plugin, actor, | ||||
|                            target_x, target_y, | ||||
|                            target_width, target_height); | ||||
|         } | ||||
|       break; | ||||
|     case META_PLUGIN_UNMAXIMIZE: | ||||
|       if (klass->unmaximize) | ||||
|         { | ||||
|           retval = TRUE; | ||||
|           meta_plugin_manager_kill_window_effects (plugin_mgr, | ||||
|                                                    actor); | ||||
|           switch (event) | ||||
|             { | ||||
|             case META_PLUGIN_MAXIMIZE: | ||||
|               if (klass->maximize) | ||||
|                 { | ||||
|                   meta_plugin_manager_kill_window_effects ( | ||||
| 		      plugin_mgr, | ||||
| 		      actor); | ||||
|  | ||||
|           _meta_plugin_effect_started (plugin); | ||||
|           klass->unmaximize (plugin, actor, | ||||
|                              target_x, target_y, | ||||
|                              target_width, target_height); | ||||
|                   _meta_plugin_effect_started (plugin); | ||||
|                   klass->maximize (plugin, actor, | ||||
|                                    target_x, target_y, | ||||
|                                    target_width, target_height); | ||||
|                 } | ||||
|               break; | ||||
|             case META_PLUGIN_UNMAXIMIZE: | ||||
|               if (klass->unmaximize) | ||||
|                 { | ||||
|                   meta_plugin_manager_kill_window_effects ( | ||||
| 		      plugin_mgr, | ||||
| 		      actor); | ||||
|  | ||||
|                   _meta_plugin_effect_started (plugin); | ||||
|                   klass->unmaximize (plugin, actor, | ||||
|                                      target_x, target_y, | ||||
|                                      target_width, target_height); | ||||
|                 } | ||||
|               break; | ||||
|             default: | ||||
|               g_warning ("Incorrect handler called for event %lu", event); | ||||
|             } | ||||
|         } | ||||
|       break; | ||||
|     default: | ||||
|       g_warning ("Incorrect handler called for event %lu", event); | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
|  | ||||
|   return retval; | ||||
| @@ -250,7 +382,7 @@ meta_plugin_manager_event_maximize (MetaPluginManager *plugin_mgr, | ||||
| /* | ||||
|  * The public method that the compositor hooks into for desktop switching. | ||||
|  * | ||||
|  * Returns TRUE if the plugin handled the event type (i.e., | ||||
|  * Returns TRUE if at least one of the plugins handled the event type (i.e., | ||||
|  * if the return value is FALSE, there will be no subsequent call to the | ||||
|  * manager completed() callback, and the compositor must ensure that any | ||||
|  * appropriate post-effect cleanup is carried out. | ||||
| @@ -261,43 +393,41 @@ meta_plugin_manager_switch_workspace (MetaPluginManager   *plugin_mgr, | ||||
|                                       gint                 to, | ||||
|                                       MetaMotionDirection  direction) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen); | ||||
|   GList *l = plugin_mgr->plugins; | ||||
|   gboolean retval = FALSE; | ||||
|   MetaDisplay *display  = meta_screen_get_display (plugin_mgr->screen); | ||||
|  | ||||
|   if (display->display_opening) | ||||
|     return FALSE; | ||||
|  | ||||
|   if (klass->switch_workspace) | ||||
|   while (l) | ||||
|     { | ||||
|       retval = TRUE; | ||||
|       meta_plugin_manager_kill_switch_workspace (plugin_mgr); | ||||
|       MetaPlugin        *plugin = l->data; | ||||
|       MetaPluginClass   *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       _meta_plugin_effect_started (plugin); | ||||
|       klass->switch_workspace (plugin, from, to, direction); | ||||
|       if (!meta_plugin_disabled (plugin) && | ||||
|           (meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE)) | ||||
|         { | ||||
|           if (klass->switch_workspace) | ||||
|             { | ||||
|               retval = TRUE; | ||||
|               meta_plugin_manager_kill_switch_workspace (plugin_mgr); | ||||
|  | ||||
|               _meta_plugin_effect_started (plugin); | ||||
|               klass->switch_workspace (plugin, from, to, direction); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
|  | ||||
|   return retval; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_plugin_manager_filter_keybinding (MetaPluginManager *plugin_mgr, | ||||
|                                        MetaKeyBinding    *binding) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|   if (klass->keybinding_filter) | ||||
|     return klass->keybinding_filter (plugin, binding); | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * The public method that the compositor hooks into for desktop switching. | ||||
|  * | ||||
|  * Returns TRUE if the plugin handled the event type (i.e., | ||||
|  * Returns TRUE if at least one of the plugins handled the event type (i.e., | ||||
|  * if the return value is FALSE, there will be no subsequent call to the | ||||
|  * manager completed() callback, and the compositor must ensure that any | ||||
|  * appropriate post-effect cleanup is carried out. | ||||
| @@ -306,17 +436,49 @@ gboolean | ||||
| meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr, | ||||
|                                    XEvent            *xev) | ||||
| { | ||||
|   MetaPlugin *plugin = plugin_mgr->plugin; | ||||
|   MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|   GList *l; | ||||
|   gboolean have_plugin_xevent_func; | ||||
|  | ||||
|   if (!plugin_mgr) | ||||
|     return FALSE; | ||||
|  | ||||
|   l = plugin_mgr->plugins; | ||||
|  | ||||
|   /* 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. | ||||
|    * | ||||
|    * What happens if there are two plugins with xevent_filter functions | ||||
|    * is undefined; in general, multiple competing plugins are something | ||||
|    * we don't support well or care much about. | ||||
|    * | ||||
|    * FIXME: Really, we should just always handle sending the event to | ||||
|    *  clutter if a plugin doesn't report the event as handled by | ||||
|    *  returning TRUE, but it doesn't seem worth breaking compatibility | ||||
|    *  of the plugin interface right now to achieve this; the way it is | ||||
|    *  now works fine in practice. | ||||
|    */ | ||||
|   if (klass->xevent_filter) | ||||
|     return klass->xevent_filter (plugin, xev); | ||||
|   else | ||||
|   have_plugin_xevent_func = FALSE; | ||||
|  | ||||
|   while (l) | ||||
|     { | ||||
|       MetaPlugin      *plugin = l->data; | ||||
|       MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|       if (klass->xevent_filter) | ||||
|         { | ||||
|           have_plugin_xevent_func = TRUE; | ||||
|           if (klass->xevent_filter (plugin, xev) == TRUE) | ||||
|             return TRUE; | ||||
|         } | ||||
|  | ||||
|       l = l->next; | ||||
|     } | ||||
|  | ||||
|   if (!have_plugin_xevent_func) | ||||
|     return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE; | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|   | ||||
| @@ -46,9 +46,14 @@ | ||||
|  */ | ||||
| typedef struct MetaPluginManager MetaPluginManager; | ||||
|  | ||||
| MetaPluginManager * meta_plugin_manager_new (MetaScreen *screen); | ||||
| MetaPluginManager * meta_plugin_manager_get         (MetaScreen *screen); | ||||
| MetaPluginManager * meta_plugin_manager_get_default (void); | ||||
|  | ||||
| void     meta_plugin_manager_load         (const gchar       *plugin_name); | ||||
| void     meta_plugin_manager_load         (MetaPluginManager *mgr, | ||||
|                                            const gchar       *plugin_name); | ||||
| void     meta_plugin_manager_register     (MetaPluginManager *mgr, | ||||
|                                            GType              plugin_type); | ||||
| void     meta_plugin_manager_initialize   (MetaPluginManager *mgr); | ||||
|  | ||||
| gboolean meta_plugin_manager_event_simple (MetaPluginManager *mgr, | ||||
|                                            MetaWindowActor   *actor, | ||||
| @@ -67,9 +72,6 @@ gboolean meta_plugin_manager_switch_workspace (MetaPluginManager   *mgr, | ||||
|                                                gint                 to, | ||||
|                                                MetaMotionDirection  direction); | ||||
|  | ||||
| gboolean meta_plugin_manager_filter_keybinding (MetaPluginManager  *mgr, | ||||
|                                                 MetaKeyBinding     *binding); | ||||
|  | ||||
| gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr, | ||||
|                                             XEvent            *xev); | ||||
|  | ||||
|   | ||||
| @@ -21,13 +21,6 @@ | ||||
|  * 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> | ||||
| @@ -51,17 +44,74 @@ enum | ||||
| { | ||||
|   PROP_0, | ||||
|   PROP_SCREEN, | ||||
|   PROP_FEATURES, | ||||
|   PROP_DISABLED, | ||||
|   PROP_DEBUG_MODE, | ||||
| }; | ||||
|  | ||||
| struct _MetaPluginPrivate | ||||
| { | ||||
|   MetaScreen   *screen; | ||||
|   gulong        features; | ||||
|  | ||||
|   gint          running; | ||||
|  | ||||
|   gboolean      disabled : 1; | ||||
|   gboolean      debug    : 1; | ||||
| }; | ||||
|  | ||||
| static void | ||||
| meta_plugin_set_features (MetaPlugin *plugin) | ||||
| { | ||||
|   MetaPluginPrivate  *priv     = plugin->priv; | ||||
|   MetaPluginClass    *klass    = META_PLUGIN_GET_CLASS (plugin); | ||||
|  | ||||
|   priv->features = 0; | ||||
|  | ||||
|   /* | ||||
|    * Feature flags: identify events that the plugin can handle; a plugin can | ||||
|    * handle one or more events. | ||||
|    */ | ||||
|   if (klass->minimize) | ||||
|     priv->features |= META_PLUGIN_MINIMIZE; | ||||
|  | ||||
|   if (klass->maximize) | ||||
|     priv->features |= META_PLUGIN_MAXIMIZE; | ||||
|  | ||||
|   if (klass->unmaximize) | ||||
|     priv->features |= META_PLUGIN_UNMAXIMIZE; | ||||
|  | ||||
|   if (klass->map) | ||||
|     priv->features |= META_PLUGIN_MAP; | ||||
|  | ||||
|   if (klass->destroy) | ||||
|     priv->features |= META_PLUGIN_DESTROY; | ||||
|  | ||||
|   if (klass->switch_workspace) | ||||
|     priv->features |= META_PLUGIN_SWITCH_WORKSPACE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_constructed (GObject *object) | ||||
| { | ||||
|   meta_plugin_set_features (META_PLUGIN (object)); | ||||
|  | ||||
|   if (G_OBJECT_CLASS (meta_plugin_parent_class)->constructed) | ||||
|       G_OBJECT_CLASS (meta_plugin_parent_class)->constructed (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_dispose (GObject *object) | ||||
| { | ||||
|   G_OBJECT_CLASS (meta_plugin_parent_class)->dispose (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_finalize (GObject *object) | ||||
| { | ||||
|   G_OBJECT_CLASS (meta_plugin_parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_plugin_set_property (GObject      *object, | ||||
|                           guint         prop_id, | ||||
| @@ -75,6 +125,9 @@ meta_plugin_set_property (GObject      *object, | ||||
|     case PROP_SCREEN: | ||||
|       priv->screen = g_value_get_object (value); | ||||
|       break; | ||||
|     case PROP_DISABLED: | ||||
|       priv->disabled = g_value_get_boolean (value); | ||||
|       break; | ||||
|     case PROP_DEBUG_MODE: | ||||
|       priv->debug = g_value_get_boolean (value); | ||||
|       break; | ||||
| @@ -97,9 +150,15 @@ meta_plugin_get_property (GObject    *object, | ||||
|     case PROP_SCREEN: | ||||
|       g_value_set_object (value, priv->screen); | ||||
|       break; | ||||
|     case PROP_DISABLED: | ||||
|       g_value_set_boolean (value, priv->disabled); | ||||
|       break; | ||||
|     case PROP_DEBUG_MODE: | ||||
|       g_value_set_boolean (value, priv->debug); | ||||
|       break; | ||||
|     case PROP_FEATURES: | ||||
|       g_value_set_ulong (value, priv->features); | ||||
|       break; | ||||
|     default: | ||||
|       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||||
|       break; | ||||
| @@ -112,6 +171,9 @@ meta_plugin_class_init (MetaPluginClass *klass) | ||||
| { | ||||
|   GObjectClass      *gobject_class = G_OBJECT_CLASS (klass); | ||||
|  | ||||
|   gobject_class->constructed     = meta_plugin_constructed; | ||||
|   gobject_class->finalize        = meta_plugin_finalize; | ||||
|   gobject_class->dispose         = meta_plugin_dispose; | ||||
|   gobject_class->set_property    = meta_plugin_set_property; | ||||
|   gobject_class->get_property    = meta_plugin_get_property; | ||||
|  | ||||
| @@ -123,6 +185,22 @@ meta_plugin_class_init (MetaPluginClass *klass) | ||||
|                                                         META_TYPE_SCREEN, | ||||
|                                                         G_PARAM_READWRITE)); | ||||
|  | ||||
|   g_object_class_install_property (gobject_class, | ||||
| 				   PROP_FEATURES, | ||||
| 				   g_param_spec_ulong ("features", | ||||
|                                                        "Features", | ||||
|                                                        "Plugin Features", | ||||
|                                                        0 , G_MAXULONG, 0, | ||||
|                                                        G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (gobject_class, | ||||
| 				   PROP_DISABLED, | ||||
| 				   g_param_spec_boolean ("disabled", | ||||
|                                                       "Plugin disabled", | ||||
|                                                       "Plugin disabled", | ||||
|                                                       FALSE, | ||||
|                                                       G_PARAM_READWRITE)); | ||||
|  | ||||
|   g_object_class_install_property (gobject_class, | ||||
| 				   PROP_DEBUG_MODE, | ||||
| 				   g_param_spec_boolean ("debug-mode", | ||||
| @@ -142,6 +220,22 @@ meta_plugin_init (MetaPlugin *self) | ||||
|   self->priv = priv = META_PLUGIN_GET_PRIVATE (self); | ||||
| } | ||||
|  | ||||
| gulong | ||||
| meta_plugin_features (MetaPlugin *plugin) | ||||
| { | ||||
|   MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv; | ||||
|  | ||||
|   return priv->features; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_plugin_disabled (MetaPlugin *plugin) | ||||
| { | ||||
|   MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv; | ||||
|  | ||||
|   return priv->disabled; | ||||
| } | ||||
|  | ||||
| gboolean | ||||
| meta_plugin_running  (MetaPlugin *plugin) | ||||
| { | ||||
| @@ -338,3 +432,19 @@ meta_plugin_get_screen (MetaPlugin *plugin) | ||||
|  | ||||
|   return priv->screen; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_plugin_type_register: | ||||
|  * @plugin_type: a #MetaPlugin type | ||||
|  * | ||||
|  * Register @plugin_type as a compositor plugin type to be used. | ||||
|  * You must call this before calling meta_init(). | ||||
|  */ | ||||
| void | ||||
| meta_plugin_type_register (GType plugin_type) | ||||
| { | ||||
|   MetaPluginManager *plugin_manager; | ||||
|  | ||||
|   plugin_manager = meta_plugin_manager_get_default (); | ||||
|   meta_plugin_manager_register (plugin_manager, plugin_type); | ||||
| } | ||||
|   | ||||
| @@ -40,7 +40,7 @@ typedef struct _MetaShadow MetaShadow; | ||||
|  | ||||
| MetaShadow *meta_shadow_ref         (MetaShadow            *shadow); | ||||
| void        meta_shadow_unref       (MetaShadow            *shadow); | ||||
| CoglTexture*meta_shadow_get_texture (MetaShadow            *shadow); | ||||
| CoglHandle  meta_shadow_get_texture (MetaShadow            *shadow); | ||||
| void        meta_shadow_paint       (MetaShadow            *shadow, | ||||
|                                      int                    window_x, | ||||
|                                      int                    window_y, | ||||
|   | ||||
| @@ -1,5 +1,9 @@ | ||||
| /* -*- 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 | ||||
| @@ -17,13 +21,6 @@ | ||||
|  * 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> | ||||
| @@ -68,8 +65,8 @@ struct _MetaShadow | ||||
|  | ||||
|   MetaShadowFactory *factory; | ||||
|   MetaShadowCacheKey key; | ||||
|   CoglTexture *texture; | ||||
|   CoglPipeline *pipeline; | ||||
|   CoglHandle texture; | ||||
|   CoglHandle material; | ||||
|  | ||||
|   /* The outer order is the distance the shadow extends outside the window | ||||
|    * shape; the inner border is the unscaled portion inside the window | ||||
| @@ -133,7 +130,7 @@ MetaShadowClassInfo default_shadow_classes[] = { | ||||
|   { "popup-menu",    { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } }, | ||||
|  | ||||
|   { "dropdown-menu", { 1, 10, 0, 1, 128 }, { 1, 10, 0, 1, 128 } }, | ||||
|   { "attached",      { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } } | ||||
|   { "attached",      { 2, 50, 0, 1, 255 }, { 1, 50, 0, 1, 128 } } | ||||
| }; | ||||
|  | ||||
| G_DEFINE_TYPE (MetaShadowFactory, meta_shadow_factory, G_TYPE_OBJECT); | ||||
| @@ -178,8 +175,8 @@ meta_shadow_unref (MetaShadow *shadow) | ||||
|         } | ||||
|  | ||||
|       meta_window_shape_unref (shadow->key.shape); | ||||
|       cogl_object_unref (shadow->texture); | ||||
|       cogl_object_unref (shadow->pipeline); | ||||
|       cogl_handle_unref (shadow->texture); | ||||
|       cogl_handle_unref (shadow->material); | ||||
|  | ||||
|       g_slice_free (MetaShadow, shadow); | ||||
|     } | ||||
| @@ -221,10 +218,10 @@ meta_shadow_paint (MetaShadow     *shadow, | ||||
|   int dest_y[4]; | ||||
|   int n_x, n_y; | ||||
|  | ||||
|   cogl_pipeline_set_color4ub (shadow->pipeline, | ||||
|   cogl_material_set_color4ub (shadow->material, | ||||
|                               opacity, opacity, opacity, opacity); | ||||
|  | ||||
|   cogl_set_source (shadow->pipeline); | ||||
|   cogl_set_source (shadow->material); | ||||
|  | ||||
|   if (shadow->scale_width) | ||||
|     { | ||||
| @@ -804,7 +801,7 @@ make_shadow (MetaShadow     *shadow, | ||||
|   cairo_region_destroy (column_convolve_region); | ||||
|   g_free (buffer); | ||||
|  | ||||
|   shadow->pipeline = meta_create_texture_pipeline (shadow->texture); | ||||
|   shadow->material = meta_create_texture_material (shadow->texture); | ||||
| } | ||||
|  | ||||
| static MetaShadowParams * | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| /* | ||||
|  * shaped texture | ||||
|  * | ||||
|  * An actor to draw a texture clipped to a list of rectangles | ||||
|  * | ||||
|  * Authored By Neil Roberts  <neil@linux.intel.com> | ||||
|  * and Jasper St. Pierre <jstpierre@mecheye.net> | ||||
|  * | ||||
|  * Copyright (C) 2008 Intel Corporation | ||||
|  * Copyright (C) 2012 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 | ||||
| @@ -21,14 +23,11 @@ | ||||
|  * 02111-1307, USA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * SECTION:meta-shaped-texture | ||||
|  * @title: MetaShapedTexture | ||||
|  * @short_description: An actor to draw a masked texture. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
| #define COGL_ENABLE_EXPERIMENTAL_API | ||||
|  | ||||
| #include <meta/meta-shaped-texture.h> | ||||
| #include "meta-texture-tower.h" | ||||
|  | ||||
| @@ -66,10 +65,10 @@ struct _MetaShapedTexturePrivate | ||||
| { | ||||
|   MetaTextureTower *paint_tower; | ||||
|   Pixmap pixmap; | ||||
|   CoglTexturePixmapX11 *texture; | ||||
|   CoglTexture *mask_texture; | ||||
|   CoglPipeline *pipeline; | ||||
|   CoglPipeline *pipeline_unshaped; | ||||
|   CoglHandle texture; | ||||
|   CoglHandle mask_texture; | ||||
|   CoglHandle material; | ||||
|   CoglHandle material_unshaped; | ||||
|  | ||||
|   cairo_region_t *clip_region; | ||||
|  | ||||
| @@ -103,8 +102,8 @@ meta_shaped_texture_init (MetaShapedTexture *self) | ||||
|   priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self); | ||||
|  | ||||
|   priv->paint_tower = meta_texture_tower_new (); | ||||
|   priv->texture = NULL; | ||||
|   priv->mask_texture = NULL; | ||||
|   priv->texture = COGL_INVALID_HANDLE; | ||||
|   priv->mask_texture = COGL_INVALID_HANDLE; | ||||
|   priv->create_mipmaps = TRUE; | ||||
| } | ||||
|  | ||||
| @@ -118,11 +117,22 @@ 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); | ||||
|   if (priv->material != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (priv->material); | ||||
|       priv->material = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|   if (priv->material_unshaped != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (priv->material_unshaped); | ||||
|       priv->material_unshaped = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|   if (priv->texture != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (priv->texture); | ||||
|       priv->texture = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|  | ||||
|   meta_shaped_texture_set_mask_texture (self, NULL); | ||||
|   meta_shaped_texture_set_clip_region (self, NULL); | ||||
|  | ||||
|   G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object); | ||||
| @@ -133,14 +143,14 @@ meta_shaped_texture_paint (ClutterActor *actor) | ||||
| { | ||||
|   MetaShapedTexture *stex = (MetaShapedTexture *) actor; | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|   CoglTexture *paint_tex; | ||||
|   CoglHandle paint_tex; | ||||
|   guint tex_width, tex_height; | ||||
|   ClutterActorBox alloc; | ||||
|  | ||||
|   static CoglPipeline *pipeline_template = NULL; | ||||
|   static CoglPipeline *pipeline_unshaped_template = NULL; | ||||
|   static CoglHandle material_template = COGL_INVALID_HANDLE; | ||||
|   static CoglHandle material_unshaped_template = COGL_INVALID_HANDLE; | ||||
|  | ||||
|   CoglPipeline *pipeline; | ||||
|   CoglHandle material; | ||||
|  | ||||
|   if (priv->clip_region && cairo_region_is_empty (priv->clip_region)) | ||||
|     return; | ||||
| @@ -166,9 +176,9 @@ meta_shaped_texture_paint (ClutterActor *actor) | ||||
|   if (priv->create_mipmaps) | ||||
|     paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower); | ||||
|   else | ||||
|     paint_tex = COGL_TEXTURE (priv->texture); | ||||
|     paint_tex = priv->texture; | ||||
|  | ||||
|   if (paint_tex == NULL) | ||||
|   if (paint_tex == COGL_INVALID_HANDLE) | ||||
|     return; | ||||
|  | ||||
|   tex_width = priv->tex_width; | ||||
| @@ -177,51 +187,47 @@ meta_shaped_texture_paint (ClutterActor *actor) | ||||
|   if (tex_width == 0 || tex_height == 0) /* no contents yet */ | ||||
|     return; | ||||
|  | ||||
|   if (priv->mask_texture == NULL) | ||||
|   if (priv->mask_texture == COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       /* Use a single-layer texture if we don't have a mask. */ | ||||
|  | ||||
|       if (priv->pipeline_unshaped == NULL) | ||||
|       if (priv->material_unshaped == COGL_INVALID_HANDLE)  | ||||
|         { | ||||
|           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); | ||||
|             } | ||||
|           if (G_UNLIKELY (material_unshaped_template == COGL_INVALID_HANDLE)) | ||||
|             material_unshaped_template = cogl_material_new (); | ||||
|  | ||||
|           priv->pipeline_unshaped = cogl_pipeline_copy (pipeline_unshaped_template); | ||||
|           priv->material_unshaped = cogl_material_copy (material_unshaped_template); | ||||
|         } | ||||
|         pipeline = priv->pipeline_unshaped; | ||||
|         material = priv->material_unshaped; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if (priv->pipeline == NULL) | ||||
|       if (priv->material == COGL_INVALID_HANDLE) | ||||
| 	{ | ||||
| 	   if (G_UNLIKELY (pipeline_template == NULL)) | ||||
| 	   if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE)) | ||||
| 	    { | ||||
|               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, | ||||
| 	      material_template =  cogl_material_new (); | ||||
| 	      cogl_material_set_layer_combine (material_template, 1, | ||||
| 					   "RGBA = MODULATE (PREVIOUS, TEXTURE[A])", | ||||
| 					   NULL); | ||||
| 	    } | ||||
| 	  priv->pipeline = cogl_pipeline_copy (pipeline_template); | ||||
| 	  priv->material = cogl_material_copy (material_template); | ||||
| 	} | ||||
|       pipeline = priv->pipeline; | ||||
|       material = priv->material; | ||||
|  | ||||
|       cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture); | ||||
|       cogl_material_set_layer (material, 1, priv->mask_texture); | ||||
|     } | ||||
|  | ||||
|   cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex); | ||||
|   cogl_material_set_layer (material, 0, paint_tex); | ||||
|  | ||||
|   { | ||||
|     CoglColor color; | ||||
|     guchar opacity = clutter_actor_get_paint_opacity (actor); | ||||
|     cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity); | ||||
|     cogl_pipeline_set_color (pipeline, &color); | ||||
|     cogl_material_set_color (material, &color); | ||||
|   } | ||||
|  | ||||
|   cogl_set_source (pipeline); | ||||
|   cogl_set_source (material); | ||||
|  | ||||
|   clutter_actor_get_allocation_box (actor, &alloc); | ||||
|  | ||||
| @@ -286,18 +292,18 @@ meta_shaped_texture_pick (ClutterActor       *actor, | ||||
|   MetaShapedTexturePrivate *priv = stex->priv; | ||||
|  | ||||
|   /* If there is no region then use the regular pick */ | ||||
|   if (priv->mask_texture == NULL) | ||||
|   if (priv->mask_texture == COGL_INVALID_HANDLE) | ||||
|     CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class) | ||||
|       ->pick (actor, color); | ||||
|   else if (clutter_actor_should_pick_paint (actor)) | ||||
|     { | ||||
|       CoglTexture *paint_tex; | ||||
|       CoglHandle paint_tex; | ||||
|       ClutterActorBox alloc; | ||||
|       guint tex_width, tex_height; | ||||
|  | ||||
|       paint_tex = COGL_TEXTURE (priv->texture); | ||||
|       paint_tex = priv->texture; | ||||
|  | ||||
|       if (paint_tex == NULL) | ||||
|       if (paint_tex == COGL_INVALID_HANDLE) | ||||
|         return; | ||||
|  | ||||
|       tex_width = cogl_texture_get_width (paint_tex); | ||||
| @@ -387,17 +393,17 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex, | ||||
|  | ||||
|   if (create_mipmaps != priv->create_mipmaps) | ||||
|     { | ||||
|       CoglTexture *base_texture; | ||||
|       CoglHandle base_texture; | ||||
|       priv->create_mipmaps = create_mipmaps; | ||||
|       base_texture = create_mipmaps ? | ||||
|         COGL_TEXTURE (priv->texture) : NULL; | ||||
|         priv->texture : COGL_INVALID_HANDLE; | ||||
|       meta_texture_tower_set_base_texture (priv->paint_tower, base_texture); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex, | ||||
|                                       CoglTexture       *mask_texture) | ||||
|                                       CoglHandle         mask_texture) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|  | ||||
| @@ -405,12 +411,16 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex, | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   g_clear_pointer (&priv->mask_texture, cogl_object_unref); | ||||
|   if (priv->mask_texture != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cogl_handle_unref (priv->mask_texture); | ||||
|       priv->mask_texture = COGL_INVALID_HANDLE; | ||||
|     } | ||||
|  | ||||
|   if (mask_texture != NULL) | ||||
|   if (mask_texture != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       priv->mask_texture = mask_texture; | ||||
|       cogl_object_ref (priv->mask_texture); | ||||
|       cogl_handle_ref (priv->mask_texture); | ||||
|     } | ||||
|  | ||||
|   clutter_actor_queue_redraw (CLUTTER_ACTOR (stex)); | ||||
| @@ -428,11 +438,10 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex, | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->texture == NULL) | ||||
|   if (priv->texture == COGL_INVALID_HANDLE) | ||||
|     return; | ||||
|  | ||||
|   cogl_texture_pixmap_x11_update_area (priv->texture, | ||||
|                                        x, y, width, height); | ||||
|   cogl_texture_pixmap_x11_update_area (priv->texture, x, y, width, height); | ||||
|  | ||||
|   meta_texture_tower_update_area (priv->paint_tower, x, y, width, height); | ||||
|  | ||||
| @@ -440,8 +449,8 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex, | ||||
| } | ||||
|  | ||||
| static void | ||||
| set_cogl_texture (MetaShapedTexture    *stex, | ||||
|                   CoglTexturePixmapX11 *cogl_tex) | ||||
| set_cogl_texture (MetaShapedTexture *stex, | ||||
|                   CoglHandle         cogl_tex) | ||||
| { | ||||
|   MetaShapedTexturePrivate *priv; | ||||
|   guint width, height; | ||||
| @@ -450,21 +459,21 @@ set_cogl_texture (MetaShapedTexture    *stex, | ||||
|  | ||||
|   priv = stex->priv; | ||||
|  | ||||
|   if (priv->texture != NULL) | ||||
|     cogl_object_unref (priv->texture); | ||||
|   if (priv->texture != COGL_INVALID_HANDLE) | ||||
|     cogl_handle_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->material != COGL_INVALID_HANDLE) | ||||
|     cogl_material_set_layer (priv->material, 0, cogl_tex); | ||||
|  | ||||
|   if (priv->pipeline_unshaped != NULL) | ||||
|     cogl_pipeline_set_layer_texture (priv->pipeline_unshaped, 0, COGL_TEXTURE (cogl_tex)); | ||||
|   if (priv->material_unshaped != COGL_INVALID_HANDLE) | ||||
|     cogl_material_set_layer (priv->material_unshaped, 0, cogl_tex); | ||||
|  | ||||
|   if (cogl_tex != NULL) | ||||
|   if (cogl_tex != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex)); | ||||
|       height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex)); | ||||
|       width = cogl_texture_get_width (cogl_tex); | ||||
|       height = cogl_texture_get_height (cogl_tex); | ||||
|  | ||||
|       if (width != priv->tex_width || | ||||
|           height != priv->tex_height) | ||||
| @@ -477,7 +486,7 @@ set_cogl_texture (MetaShapedTexture    *stex, | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       /* size changed to 0 going to an inavlid texture */ | ||||
|       /* size changed to 0 going to an invalid handle */ | ||||
|       priv->tex_width = 0; | ||||
|       priv->tex_height = 0; | ||||
|       clutter_actor_queue_relayout (CLUTTER_ACTOR (stex)); | ||||
| @@ -513,11 +522,10 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex, | ||||
|       set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL)); | ||||
|     } | ||||
|   else | ||||
|     set_cogl_texture (stex, NULL); | ||||
|     set_cogl_texture (stex, COGL_INVALID_HANDLE); | ||||
|  | ||||
|   if (priv->create_mipmaps) | ||||
|     meta_texture_tower_set_base_texture (priv->paint_tower, | ||||
|                                          COGL_TEXTURE (priv->texture)); | ||||
|     meta_texture_tower_set_base_texture (priv->paint_tower, priv->texture); | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -526,11 +534,11 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex, | ||||
|  * | ||||
|  * Returns: (transfer none): the unshaped texture | ||||
|  */ | ||||
| CoglTexture * | ||||
| CoglHandle | ||||
| meta_shaped_texture_get_texture (MetaShapedTexture *stex) | ||||
| { | ||||
|   g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL); | ||||
|   return COGL_TEXTURE (stex->priv->texture); | ||||
|   g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), COGL_INVALID_HANDLE); | ||||
|   return stex->priv->texture; | ||||
| } | ||||
|  | ||||
| /** | ||||
| @@ -587,13 +595,13 @@ cairo_surface_t * | ||||
| meta_shaped_texture_get_image (MetaShapedTexture     *stex, | ||||
|                                cairo_rectangle_int_t *clip) | ||||
| { | ||||
|   CoglTexture *texture, *mask_texture; | ||||
|   CoglHandle texture, mask_texture; | ||||
|   cairo_rectangle_int_t texture_rect = { 0, 0, 0, 0 }; | ||||
|   cairo_surface_t *surface; | ||||
|  | ||||
|   g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL); | ||||
|  | ||||
|   texture = COGL_TEXTURE (stex->priv->texture); | ||||
|   texture = stex->priv->texture; | ||||
|  | ||||
|   if (texture == NULL) | ||||
|     return NULL; | ||||
| @@ -630,7 +638,7 @@ meta_shaped_texture_get_image (MetaShapedTexture     *stex, | ||||
|     cogl_object_unref (texture); | ||||
|  | ||||
|   mask_texture = stex->priv->mask_texture; | ||||
|   if (mask_texture != NULL) | ||||
|   if (mask_texture != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       cairo_t *cr; | ||||
|       cairo_surface_t *mask_surface; | ||||
|   | ||||
| @@ -25,6 +25,9 @@ | ||||
|  | ||||
| #include <config.h> | ||||
|  | ||||
| #define CLUTTER_ENABLE_EXPERIMENTAL_API | ||||
| #define COGL_ENABLE_EXPERIMENTAL_API | ||||
|  | ||||
| #include <clutter/clutter.h> | ||||
| #include "meta-texture-rectangle.h" | ||||
|  | ||||
|   | ||||
| @@ -59,8 +59,8 @@ typedef struct | ||||
| struct _MetaTextureTower | ||||
| { | ||||
|   int n_levels; | ||||
|   CoglTexture *textures[MAX_TEXTURE_LEVELS]; | ||||
|   CoglOffscreen *fbos[MAX_TEXTURE_LEVELS]; | ||||
|   CoglHandle textures[MAX_TEXTURE_LEVELS]; | ||||
|   CoglHandle fbos[MAX_TEXTURE_LEVELS]; | ||||
|   Box invalid[MAX_TEXTURE_LEVELS]; | ||||
| }; | ||||
|  | ||||
| @@ -93,7 +93,7 @@ meta_texture_tower_free (MetaTextureTower *tower) | ||||
| { | ||||
|   g_return_if_fail (tower != NULL); | ||||
|  | ||||
|   meta_texture_tower_set_base_texture (tower, NULL); | ||||
|   meta_texture_tower_set_base_texture (tower, COGL_INVALID_HANDLE); | ||||
|  | ||||
|   g_slice_free (MetaTextureTower, tower); | ||||
| } | ||||
| @@ -110,7 +110,7 @@ meta_texture_tower_free (MetaTextureTower *tower) | ||||
|  */ | ||||
| void | ||||
| meta_texture_tower_set_base_texture (MetaTextureTower *tower, | ||||
|                                      CoglTexture      *texture) | ||||
|                                      CoglHandle        texture) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
| @@ -119,33 +119,33 @@ meta_texture_tower_set_base_texture (MetaTextureTower *tower, | ||||
|   if (texture == tower->textures[0]) | ||||
|     return; | ||||
|  | ||||
|   if (tower->textures[0] != NULL) | ||||
|   if (tower->textures[0] != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       for (i = 1; i < tower->n_levels; i++) | ||||
|         { | ||||
|           if (tower->textures[i] != NULL) | ||||
|           if (tower->textures[i] != COGL_INVALID_HANDLE) | ||||
|             { | ||||
|               cogl_object_unref (tower->textures[i]); | ||||
|               tower->textures[i] = NULL; | ||||
|               cogl_handle_unref (tower->textures[i]); | ||||
|               tower->textures[i] = COGL_INVALID_HANDLE; | ||||
|             } | ||||
|  | ||||
|           if (tower->fbos[i] != NULL) | ||||
|           if (tower->fbos[i] != COGL_INVALID_HANDLE) | ||||
|             { | ||||
|               cogl_object_unref (tower->fbos[i]); | ||||
|               tower->fbos[i] = NULL; | ||||
|               cogl_handle_unref (tower->fbos[i]); | ||||
|               tower->fbos[i] = COGL_INVALID_HANDLE; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|       cogl_object_unref (tower->textures[0]); | ||||
|       cogl_handle_unref (tower->textures[0]); | ||||
|     } | ||||
|  | ||||
|   tower->textures[0] = texture; | ||||
|  | ||||
|   if (tower->textures[0] != NULL) | ||||
|   if (tower->textures[0] != COGL_INVALID_HANDLE) | ||||
|     { | ||||
|       int width, height; | ||||
|  | ||||
|       cogl_object_ref (tower->textures[0]); | ||||
|       cogl_handle_ref (tower->textures[0]); | ||||
|  | ||||
|       width = cogl_texture_get_width (tower->textures[0]); | ||||
|       height = cogl_texture_get_height (tower->textures[0]); | ||||
| @@ -186,7 +186,7 @@ meta_texture_tower_update_area (MetaTextureTower *tower, | ||||
|  | ||||
|   g_return_if_fail (tower != NULL); | ||||
|  | ||||
|   if (tower->textures[0] == NULL) | ||||
|   if (tower->textures[0] == COGL_INVALID_HANDLE) | ||||
|     return; | ||||
|  | ||||
|   texture_width = cogl_texture_get_width (tower->textures[0]); | ||||
| @@ -387,22 +387,22 @@ static gboolean | ||||
| texture_tower_revalidate_fbo (MetaTextureTower *tower, | ||||
|                               int               level) | ||||
| { | ||||
|   CoglTexture *source_texture = tower->textures[level - 1]; | ||||
|   CoglHandle source_texture = tower->textures[level - 1]; | ||||
|   int source_texture_width = cogl_texture_get_width (source_texture); | ||||
|   int source_texture_height = cogl_texture_get_height (source_texture); | ||||
|   CoglTexture *dest_texture = tower->textures[level]; | ||||
|   CoglHandle dest_texture = tower->textures[level]; | ||||
|   int dest_texture_width = cogl_texture_get_width (dest_texture); | ||||
|   int dest_texture_height = cogl_texture_get_height (dest_texture); | ||||
|   Box *invalid = &tower->invalid[level]; | ||||
|   CoglMatrix modelview; | ||||
|  | ||||
|   if (tower->fbos[level] == NULL) | ||||
|   if (tower->fbos[level] == COGL_INVALID_HANDLE) | ||||
|     tower->fbos[level] = cogl_offscreen_new_to_texture (dest_texture); | ||||
|  | ||||
|   if (tower->fbos[level] == NULL) | ||||
|   if (tower->fbos[level] == COGL_INVALID_HANDLE) | ||||
|     return FALSE; | ||||
|  | ||||
|   cogl_push_framebuffer (COGL_FRAMEBUFFER (tower->fbos[level])); | ||||
|   cogl_push_framebuffer (tower->fbos[level]); | ||||
|  | ||||
|   cogl_ortho (0, dest_texture_width, dest_texture_height, 0, -1., 1.); | ||||
|  | ||||
| @@ -460,12 +460,12 @@ static void | ||||
| texture_tower_revalidate_client (MetaTextureTower *tower, | ||||
|                                  int               level) | ||||
| { | ||||
|   CoglTexture *source_texture = tower->textures[level - 1]; | ||||
|   CoglHandle source_texture = tower->textures[level - 1]; | ||||
|   int source_texture_width = cogl_texture_get_width (source_texture); | ||||
|   int source_texture_height = cogl_texture_get_height (source_texture); | ||||
|   guint source_rowstride; | ||||
|   guchar *source_data; | ||||
|   CoglTexture *dest_texture = tower->textures[level]; | ||||
|   CoglHandle dest_texture = tower->textures[level]; | ||||
|   int dest_texture_width = cogl_texture_get_width (dest_texture); | ||||
|   int dest_texture_height = cogl_texture_get_height (dest_texture); | ||||
|   int dest_x = tower->invalid[level].x1; | ||||
| @@ -575,28 +575,28 @@ texture_tower_revalidate (MetaTextureTower *tower, | ||||
|  * rectangle (0, 0, 200, 200). | ||||
|  * | ||||
|  * Return value: the COGL texture handle to use for painting, or | ||||
|  *  %NULL if no base texture has yet been set. | ||||
|  *  %COGL_INVALID_HANDLE if no base texture has yet been set. | ||||
|  */ | ||||
| CoglTexture * | ||||
| CoglHandle | ||||
| meta_texture_tower_get_paint_texture (MetaTextureTower *tower) | ||||
| { | ||||
|   int texture_width, texture_height; | ||||
|   int level; | ||||
|  | ||||
|   g_return_val_if_fail (tower != NULL, NULL); | ||||
|   g_return_val_if_fail (tower != NULL, COGL_INVALID_HANDLE); | ||||
|  | ||||
|   if (tower->textures[0] == NULL) | ||||
|     return NULL; | ||||
|   if (tower->textures[0] == COGL_INVALID_HANDLE) | ||||
|     return COGL_INVALID_HANDLE; | ||||
|  | ||||
|   texture_width = cogl_texture_get_width (tower->textures[0]); | ||||
|   texture_height = cogl_texture_get_height (tower->textures[0]); | ||||
|  | ||||
|   level = get_paint_level(texture_width, texture_height); | ||||
|   if (level < 0) /* singular paint matrix, scaled to nothing */ | ||||
|     return NULL; | ||||
|     return COGL_INVALID_HANDLE; | ||||
|   level = MIN (level, tower->n_levels - 1); | ||||
|  | ||||
|   if (tower->textures[level] == NULL || | ||||
|   if (tower->textures[level] == COGL_INVALID_HANDLE || | ||||
|       (tower->invalid[level].x2 != tower->invalid[level].x1 && | ||||
|        tower->invalid[level].y2 != tower->invalid[level].y1)) | ||||
|     { | ||||
| @@ -608,7 +608,7 @@ meta_texture_tower_get_paint_texture (MetaTextureTower *tower) | ||||
|          texture_width = MAX (1, texture_width / 2); | ||||
|          texture_height = MAX (1, texture_height / 2); | ||||
|  | ||||
|          if (tower->textures[i] == NULL) | ||||
|          if (tower->textures[i] == COGL_INVALID_HANDLE) | ||||
|            texture_tower_create_texture (tower, i, texture_width, texture_height); | ||||
|        } | ||||
|  | ||||
|   | ||||
| @@ -56,13 +56,13 @@ typedef struct _MetaTextureTower MetaTextureTower; | ||||
| MetaTextureTower *meta_texture_tower_new               (void); | ||||
| void              meta_texture_tower_free              (MetaTextureTower *tower); | ||||
| void              meta_texture_tower_set_base_texture  (MetaTextureTower *tower, | ||||
|                                                         CoglTexture      *texture); | ||||
|                                                         CoglHandle        texture); | ||||
| void              meta_texture_tower_update_area       (MetaTextureTower *tower, | ||||
|                                                         int               x, | ||||
|                                                         int               y, | ||||
|                                                         int               width, | ||||
|                                                         int               height); | ||||
| CoglTexture      *meta_texture_tower_get_paint_texture (MetaTextureTower *tower); | ||||
| CoglHandle        meta_texture_tower_get_paint_texture (MetaTextureTower *tower); | ||||
|  | ||||
| G_BEGIN_DECLS | ||||
|  | ||||
|   | ||||
| @@ -28,10 +28,6 @@ void meta_window_actor_process_damage (MetaWindowActor    *self, | ||||
|                                        XDamageNotifyEvent *event); | ||||
|  | ||||
| void meta_window_actor_pre_paint      (MetaWindowActor    *self); | ||||
| void meta_window_actor_post_paint     (MetaWindowActor    *self); | ||||
| void meta_window_actor_frame_complete (MetaWindowActor    *self, | ||||
|                                        CoglFrameInfo      *frame_info, | ||||
|                                        gint64              presentation_time); | ||||
|  | ||||
| void meta_window_actor_invalidate_shadow (MetaWindowActor *self); | ||||
|  | ||||
| @@ -43,17 +39,12 @@ void meta_window_actor_get_shape_bounds (MetaWindowActor       *self, | ||||
|                                           cairo_rectangle_int_t *bounds); | ||||
|  | ||||
| gboolean meta_window_actor_effect_in_progress  (MetaWindowActor *self); | ||||
| void     meta_window_actor_sync_actor_geometry (MetaWindowActor *self, | ||||
|                                                 gboolean         did_placement); | ||||
| void     meta_window_actor_sync_actor_position (MetaWindowActor *self); | ||||
| void     meta_window_actor_sync_visibility     (MetaWindowActor *self); | ||||
| void     meta_window_actor_update_shape        (MetaWindowActor *self); | ||||
| void     meta_window_actor_update_opacity      (MetaWindowActor *self); | ||||
| void     meta_window_actor_mapped              (MetaWindowActor *self); | ||||
| void     meta_window_actor_unmapped            (MetaWindowActor *self); | ||||
| void     meta_window_actor_set_updates_frozen  (MetaWindowActor *self, | ||||
|                                                 gboolean         updates_frozen); | ||||
| void     meta_window_actor_queue_frame_drawn   (MetaWindowActor *self, | ||||
|                                                 gboolean         no_delay_frame); | ||||
|  | ||||
| cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self); | ||||
|  | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user