Compare commits
	
		
			47 Commits
		
	
	
		
			wip/carlos
			...
			gnome-3-30
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 81309b8eb8 | ||
|   | d416691896 | ||
|   | 7a6ed76a20 | ||
|   | a8f6f01d67 | ||
|   | 1f03c94d31 | ||
|   | 843ed09b09 | ||
|   | 51b04134db | ||
|   | bfcfa64456 | ||
|   | ea3d897439 | ||
|   | 5979f87295 | ||
|   | 1cda659732 | ||
|   | 4010628001 | ||
|   | e23f4d6c7c | ||
|   | 511e8c6584 | ||
|   | ee97f73521 | ||
|   | ca54b55c01 | ||
|   | 999cc1214e | ||
|   | cf5d496e01 | ||
|   | 5246da5837 | ||
|   | f645368c66 | ||
|   | 45b4495886 | ||
|   | ae0461fd60 | ||
|   | 4e1747e6ec | ||
|   | 2a36bf52cb | ||
|   | 3dffdab1ad | ||
|   | fd75921f13 | ||
|   | 9b9599515a | ||
|   | 609c81698e | ||
|   | 62c2dbbc9d | ||
|   | a1a7ba7cc7 | ||
|   | be35dec71e | ||
|   | e55bdb0fbb | ||
|   | bacdd1c12d | ||
|   | 78f6a409aa | ||
|   | d7ee164f0f | ||
|   | 0820b9cbef | ||
|   | 89a720c050 | ||
|   | d2393395ff | ||
|   | d21b276c07 | ||
|   | ccc5967382 | ||
|   | 5ee0f743de | ||
|   | ec5db74101 | ||
|   | 24d8066197 | ||
|   | c77c47cf29 | ||
|   | 620bd037d2 | ||
|   | 54f8232a93 | ||
|   | c17ba90209 | 
							
								
								
									
										21
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,24 @@ | ||||
| 3.30.2 | ||||
| ====== | ||||
| * popupMenu: Fix keyboard activation when numlock is active [Andrea; #550] | ||||
| * Do not block all shortcuts while app folders are expanded [Florian; #648] | ||||
| * Fix regression in handling new input sources [Carlos; #691] | ||||
| * Improve performance of app icon animations [Daniel; !253, !261] | ||||
| * Respect natural-scroll setting for workspace swipe gesture [Erik; #516] | ||||
| * notifications: Support icon theme names in 'image-path' hint [Marco; !285] | ||||
| * Confine window preview titles to workspace area [Florian; !214] | ||||
| * Misc. bug fixes [Florian, Cosimo; #602, #693, #768, #430, !286] | ||||
|  | ||||
| Contributors: | ||||
|   Andrea Azzarone, Cosimo Cecchi, Erik Duxstad, Carlos Garnacho, | ||||
|   Florian Müllner, Didier Roche, Marco Trevisan (Treviño), verdre, | ||||
|   Daniel van Vugt | ||||
|  | ||||
| Translators: | ||||
|   Rūdolfs Mazurs [lv], Kristjan SCHMIDT [eo], Milo Casagrande [it], | ||||
|   Dušan Kazik [sk], gogo [hr], Anish Sheela [ml], Rafael Fontenelle [pt_BR], | ||||
|   Daniel Mustieles [es] | ||||
|  | ||||
| 3.30.1 | ||||
| ====== | ||||
| * Cancel search on overview hiding [Marco; !205] | ||||
|   | ||||
| @@ -6,6 +6,7 @@ | ||||
|     <file>be.json</file> | ||||
|     <file>bg.json</file> | ||||
|     <file>by.json</file> | ||||
|     <file>ca.json</file> | ||||
|     <file>cz.json</file> | ||||
|     <file>de.json</file> | ||||
|     <file>dk.json</file> | ||||
|   | ||||
							
								
								
									
										599
									
								
								data/osk-layouts/ca.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										599
									
								
								data/osk-layouts/ca.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,599 @@ | ||||
| { | ||||
|   "levels": [ | ||||
|     { | ||||
|       "level": "", | ||||
|       "mode": "default", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "q" | ||||
|           ], | ||||
|           [ | ||||
|             "w" | ||||
|           ], | ||||
|           [ | ||||
|             "e", | ||||
|             "é", | ||||
|             "è", | ||||
|             "ê", | ||||
|             "ë", | ||||
|             "%", | ||||
|             "ę", | ||||
|             "ė", | ||||
|             "ē" | ||||
|           ], | ||||
|           [ | ||||
|             "r" | ||||
|           ], | ||||
|           [ | ||||
|             "t" | ||||
|           ], | ||||
|           [ | ||||
|             "y", | ||||
|             "%", | ||||
|             "ÿ" | ||||
|           ], | ||||
|           [ | ||||
|             "u", | ||||
|             "ù", | ||||
|             "û", | ||||
|             "%", | ||||
|             "ü", | ||||
|             "ú", | ||||
|             "ū" | ||||
|           ], | ||||
|           [ | ||||
|             "i", | ||||
|             "î", | ||||
|             "%", | ||||
|             "ï", | ||||
|             "ì", | ||||
|             "í", | ||||
|             "į", | ||||
|             "ī" | ||||
|           ], | ||||
|           [ | ||||
|             "o", | ||||
|             "ô", | ||||
|             "œ", | ||||
|             "%", | ||||
|             "ö", | ||||
|             "ò", | ||||
|             "ó", | ||||
|             "õ", | ||||
|             "ø", | ||||
|             "ō", | ||||
|             "º" | ||||
|           ], | ||||
|           [ | ||||
|             "p" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "a", | ||||
|             "à", | ||||
|             "â", | ||||
|             "%", | ||||
|             "æ", | ||||
|             "á", | ||||
|             "ä", | ||||
|             "ã", | ||||
|             "å", | ||||
|             "ā", | ||||
|             "ª" | ||||
|           ], | ||||
|           [ | ||||
|             "s" | ||||
|           ], | ||||
|           [ | ||||
|             "d" | ||||
|           ], | ||||
|           [ | ||||
|             "f" | ||||
|           ], | ||||
|           [ | ||||
|             "g" | ||||
|           ], | ||||
|           [ | ||||
|             "h" | ||||
|           ], | ||||
|           [ | ||||
|             "j" | ||||
|           ], | ||||
|           [ | ||||
|             "k" | ||||
|           ], | ||||
|           [ | ||||
|             "l" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "z" | ||||
|           ], | ||||
|           [ | ||||
|             "x" | ||||
|           ], | ||||
|           [ | ||||
|             "c", | ||||
|             "ç", | ||||
|             "ć", | ||||
|             "č" | ||||
|           ], | ||||
|           [ | ||||
|             "v" | ||||
|           ], | ||||
|           [ | ||||
|             "b" | ||||
|           ], | ||||
|           [ | ||||
|             "n" | ||||
|           ], | ||||
|           [ | ||||
|             "m" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "#", | ||||
|             "!", | ||||
|             ",", | ||||
|             "?", | ||||
|             "-", | ||||
|             ":", | ||||
|             "'", | ||||
|             "@" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "shift", | ||||
|       "mode": "latched", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "Q" | ||||
|           ], | ||||
|           [ | ||||
|             "W" | ||||
|           ], | ||||
|           [ | ||||
|             "E", | ||||
|             "É", | ||||
|             "È", | ||||
|             "Ê", | ||||
|             "Ë", | ||||
|             "%", | ||||
|             "Ę", | ||||
|             "Ė", | ||||
|             "Ē" | ||||
|           ], | ||||
|           [ | ||||
|             "R" | ||||
|           ], | ||||
|           [ | ||||
|             "T" | ||||
|           ], | ||||
|           [ | ||||
|             "Y", | ||||
|             "%", | ||||
|             "Ÿ" | ||||
|           ], | ||||
|           [ | ||||
|             "U", | ||||
|             "Ù", | ||||
|             "Û", | ||||
|             "%", | ||||
|             "Ü", | ||||
|             "Ú", | ||||
|             "Ū" | ||||
|           ], | ||||
|           [ | ||||
|             "I", | ||||
|             "Î", | ||||
|             "%", | ||||
|             "Ï", | ||||
|             "Ì", | ||||
|             "Í", | ||||
|             "Į", | ||||
|             "Ī" | ||||
|           ], | ||||
|           [ | ||||
|             "O", | ||||
|             "Ô", | ||||
|             "Œ", | ||||
|             "%", | ||||
|             "Ö", | ||||
|             "Ò", | ||||
|             "Ó", | ||||
|             "Õ", | ||||
|             "Ø", | ||||
|             "Ō", | ||||
|             "º" | ||||
|           ], | ||||
|           [ | ||||
|             "P" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "A", | ||||
|             "À", | ||||
|             "Â", | ||||
|             "%", | ||||
|             "Æ", | ||||
|             "Á", | ||||
|             "Ä", | ||||
|             "Ã", | ||||
|             "Å", | ||||
|             "Ā", | ||||
|             "ª" | ||||
|           ], | ||||
|           [ | ||||
|             "S" | ||||
|           ], | ||||
|           [ | ||||
|             "D" | ||||
|           ], | ||||
|           [ | ||||
|             "F" | ||||
|           ], | ||||
|           [ | ||||
|             "G" | ||||
|           ], | ||||
|           [ | ||||
|             "H" | ||||
|           ], | ||||
|           [ | ||||
|             "J" | ||||
|           ], | ||||
|           [ | ||||
|             "K" | ||||
|           ], | ||||
|           [ | ||||
|             "L" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "Z" | ||||
|           ], | ||||
|           [ | ||||
|             "X" | ||||
|           ], | ||||
|           [ | ||||
|             "C", | ||||
|             "Ç", | ||||
|             "Ć", | ||||
|             "Č" | ||||
|           ], | ||||
|           [ | ||||
|             "V" | ||||
|           ], | ||||
|           [ | ||||
|             "B" | ||||
|           ], | ||||
|           [ | ||||
|             "N" | ||||
|           ], | ||||
|           [ | ||||
|             "M" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "#", | ||||
|             "!", | ||||
|             ",", | ||||
|             "?", | ||||
|             "-", | ||||
|             ":", | ||||
|             "'", | ||||
|             "@" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "opt", | ||||
|       "mode": "locked", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "1", | ||||
|             "¹", | ||||
|             "½", | ||||
|             "⅓", | ||||
|             "¼", | ||||
|             "⅛" | ||||
|           ], | ||||
|           [ | ||||
|             "2", | ||||
|             "²", | ||||
|             "⅔" | ||||
|           ], | ||||
|           [ | ||||
|             "3", | ||||
|             "³", | ||||
|             "¾", | ||||
|             "⅜" | ||||
|           ], | ||||
|           [ | ||||
|             "4", | ||||
|             "⁴" | ||||
|           ], | ||||
|           [ | ||||
|             "5", | ||||
|             "⅝" | ||||
|           ], | ||||
|           [ | ||||
|             "6" | ||||
|           ], | ||||
|           [ | ||||
|             "7", | ||||
|             "⅞" | ||||
|           ], | ||||
|           [ | ||||
|             "8" | ||||
|           ], | ||||
|           [ | ||||
|             "9" | ||||
|           ], | ||||
|           [ | ||||
|             "0", | ||||
|             "ⁿ", | ||||
|             "∅" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "@" | ||||
|           ], | ||||
|           [ | ||||
|             "#" | ||||
|           ], | ||||
|           [ | ||||
|             "$", | ||||
|             "¢", | ||||
|             "£", | ||||
|             "€", | ||||
|             "¥", | ||||
|             "₱" | ||||
|           ], | ||||
|           [ | ||||
|             "%", | ||||
|             "‰" | ||||
|           ], | ||||
|           [ | ||||
|             "&" | ||||
|           ], | ||||
|           [ | ||||
|             "-", | ||||
|             "_", | ||||
|             "–", | ||||
|             "—", | ||||
|             "·" | ||||
|           ], | ||||
|           [ | ||||
|             "+", | ||||
|             "±" | ||||
|           ], | ||||
|           [ | ||||
|             "(", | ||||
|             "<", | ||||
|             "{", | ||||
|             "[" | ||||
|           ], | ||||
|           [ | ||||
|             ")", | ||||
|             ">", | ||||
|             "}", | ||||
|             "]" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "*", | ||||
|             "†", | ||||
|             "‡", | ||||
|             "★" | ||||
|           ], | ||||
|           [ | ||||
|             "\"", | ||||
|             "“", | ||||
|             "”", | ||||
|             "«", | ||||
|             "»" | ||||
|           ], | ||||
|           [ | ||||
|             "'", | ||||
|             "‘", | ||||
|             "’", | ||||
|             "‹", | ||||
|             "›" | ||||
|           ], | ||||
|           [ | ||||
|             ":" | ||||
|           ], | ||||
|           [ | ||||
|             ";" | ||||
|           ], | ||||
|           [ | ||||
|             "!", | ||||
|             "¡" | ||||
|           ], | ||||
|           [ | ||||
|             "?", | ||||
|             "¿" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "_" | ||||
|           ], | ||||
|           [ | ||||
|             "/" | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "…" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "level": "opt+shift", | ||||
|       "mode": "locked", | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "~" | ||||
|           ], | ||||
|           [ | ||||
|             "`" | ||||
|           ], | ||||
|           [ | ||||
|             "|" | ||||
|           ], | ||||
|           [ | ||||
|             "•", | ||||
|             "♪", | ||||
|             "♥", | ||||
|             "♠", | ||||
|             "♦", | ||||
|             "♣" | ||||
|           ], | ||||
|           [ | ||||
|             "√" | ||||
|           ], | ||||
|           [ | ||||
|             "Π", | ||||
|             "π" | ||||
|           ], | ||||
|           [ | ||||
|             "÷" | ||||
|           ], | ||||
|           [ | ||||
|             "×" | ||||
|           ], | ||||
|           [ | ||||
|             "¶", | ||||
|             "§" | ||||
|           ], | ||||
|           [ | ||||
|             "∆" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "£" | ||||
|           ], | ||||
|           [ | ||||
|             "¢" | ||||
|           ], | ||||
|           [ | ||||
|             "€" | ||||
|           ], | ||||
|           [ | ||||
|             "¥" | ||||
|           ], | ||||
|           [ | ||||
|             "^", | ||||
|             "↑", | ||||
|             "↓", | ||||
|             "←", | ||||
|             "→" | ||||
|           ], | ||||
|           [ | ||||
|             "°", | ||||
|             "′", | ||||
|             "″" | ||||
|           ], | ||||
|           [ | ||||
|             "=", | ||||
|             "≠", | ||||
|             "≈", | ||||
|             "∞" | ||||
|           ], | ||||
|           [ | ||||
|             "{" | ||||
|           ], | ||||
|           [ | ||||
|             "}" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "\\" | ||||
|           ], | ||||
|           [ | ||||
|             "©" | ||||
|           ], | ||||
|           [ | ||||
|             "®" | ||||
|           ], | ||||
|           [ | ||||
|             "™" | ||||
|           ], | ||||
|           [ | ||||
|             "℅" | ||||
|           ], | ||||
|           [ | ||||
|             "[" | ||||
|           ], | ||||
|           [ | ||||
|             "]" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "<", | ||||
|             "‹", | ||||
|             "≤", | ||||
|             "«" | ||||
|           ], | ||||
|           [ | ||||
|             ">", | ||||
|             "›", | ||||
|             "≥", | ||||
|             "»" | ||||
|           ], | ||||
|           [ | ||||
|             " " | ||||
|           ], | ||||
|           [ | ||||
|             "," | ||||
|           ], | ||||
|           [ | ||||
|             ".", | ||||
|             "…" | ||||
|           ] | ||||
|         ] | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "locale": "fr-CA", | ||||
|   "name": "French Canada" | ||||
| } | ||||
| @@ -6,10 +6,20 @@ | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "q" | ||||
|             "a", | ||||
|             "à", | ||||
|             "â", | ||||
|             "%", | ||||
|             "æ", | ||||
|             "á", | ||||
|             "ä", | ||||
|             "ã", | ||||
|             "å", | ||||
|             "ā", | ||||
|             "ª" | ||||
|           ], | ||||
|           [ | ||||
|             "w" | ||||
|             "z" | ||||
|           ], | ||||
|           [ | ||||
|             "e", | ||||
| @@ -71,17 +81,7 @@ | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "a", | ||||
|             "à", | ||||
|             "â", | ||||
|             "%", | ||||
|             "æ", | ||||
|             "á", | ||||
|             "ä", | ||||
|             "ã", | ||||
|             "å", | ||||
|             "ā", | ||||
|             "ª" | ||||
|             "q" | ||||
|           ], | ||||
|           [ | ||||
|             "s" | ||||
| @@ -106,11 +106,14 @@ | ||||
|           ], | ||||
|           [ | ||||
|             "l" | ||||
|           ], | ||||
|           [ | ||||
|             "m" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "z" | ||||
|             "w" | ||||
|           ], | ||||
|           [ | ||||
|             "x" | ||||
| @@ -131,7 +134,11 @@ | ||||
|             "n" | ||||
|           ], | ||||
|           [ | ||||
|             "m" | ||||
|             "'", | ||||
|             "‘", | ||||
|             "’", | ||||
|             "‹", | ||||
|             "›" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
| @@ -161,10 +168,20 @@ | ||||
|       "rows": [ | ||||
|         [ | ||||
|           [ | ||||
|             "Q" | ||||
|             "A", | ||||
|             "À", | ||||
|             "Â", | ||||
|             "%", | ||||
|             "Æ", | ||||
|             "Á", | ||||
|             "Ä", | ||||
|             "Ã", | ||||
|             "Å", | ||||
|             "Ā", | ||||
|             "ª" | ||||
|           ], | ||||
|           [ | ||||
|             "W" | ||||
|             "Z" | ||||
|           ], | ||||
|           [ | ||||
|             "E", | ||||
| @@ -226,17 +243,7 @@ | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "A", | ||||
|             "À", | ||||
|             "Â", | ||||
|             "%", | ||||
|             "Æ", | ||||
|             "Á", | ||||
|             "Ä", | ||||
|             "Ã", | ||||
|             "Å", | ||||
|             "Ā", | ||||
|             "ª" | ||||
|             "Q" | ||||
|           ], | ||||
|           [ | ||||
|             "S" | ||||
| @@ -261,11 +268,14 @@ | ||||
|           ], | ||||
|           [ | ||||
|             "L" | ||||
|           ], | ||||
|           [ | ||||
|             "M" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
|           [ | ||||
|             "Z" | ||||
|             "W" | ||||
|           ], | ||||
|           [ | ||||
|             "X" | ||||
| @@ -286,7 +296,11 @@ | ||||
|             "N" | ||||
|           ], | ||||
|           [ | ||||
|             "M" | ||||
|             "'", | ||||
|             "‘", | ||||
|             "’", | ||||
|             "‹", | ||||
|             "›" | ||||
|           ] | ||||
|         ], | ||||
|         [ | ||||
| @@ -369,10 +383,10 @@ | ||||
|             "#" | ||||
|           ], | ||||
|           [ | ||||
|             "$", | ||||
|             "€", | ||||
|             "¢", | ||||
|             "£", | ||||
|             "€", | ||||
|             "$", | ||||
|             "¥", | ||||
|             "₱" | ||||
|           ], | ||||
| @@ -511,13 +525,14 @@ | ||||
|             "£" | ||||
|           ], | ||||
|           [ | ||||
|             "¥" | ||||
|           ], | ||||
|           [ | ||||
|             "$", | ||||
|             "¢" | ||||
|           ], | ||||
|           [ | ||||
|             "€" | ||||
|           ], | ||||
|           [ | ||||
|             "¥" | ||||
|             "¢" | ||||
|           ], | ||||
|           [ | ||||
|             "^", | ||||
| @@ -594,6 +609,6 @@ | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "locale": "fr-CA", | ||||
|   "name": "French Canada" | ||||
|   "locale": "fr", | ||||
|   "name": "French" | ||||
| } | ||||
| @@ -11,6 +11,7 @@ const Animation = imports.ui.animation; | ||||
| const Batch = imports.gdm.batch; | ||||
| const GdmUtil = imports.gdm.util; | ||||
| const Params = imports.misc.params; | ||||
| const Shell = imports.gi.Shell; | ||||
| const ShellEntry = imports.ui.shellEntry; | ||||
| const Tweener = imports.ui.tweener; | ||||
| const UserWidget = imports.ui.userWidget; | ||||
| @@ -99,7 +100,7 @@ var AuthPrompt = new Lang.Class({ | ||||
|                          x_align: St.Align.START }); | ||||
|         this._entry = new St.Entry({ style_class: 'login-dialog-prompt-entry', | ||||
|                                      can_focus: true }); | ||||
|         ShellEntry.addContextMenu(this._entry, { isPassword: true }); | ||||
|         ShellEntry.addContextMenu(this._entry, { isPassword: true, actionMode: Shell.ActionMode.NONE }); | ||||
|  | ||||
|         this.actor.add(this._entry, | ||||
|                        { expand: true, | ||||
|   | ||||
| @@ -342,7 +342,8 @@ var SessionMenuButton = new Lang.Class({ | ||||
|                  this._button.remove_style_pseudo_class('active'); | ||||
|         }); | ||||
|  | ||||
|         this._manager = new PopupMenu.PopupMenuManager({ actor: this._button }); | ||||
|         this._manager = new PopupMenu.PopupMenuManager({ actor: this._button }, | ||||
|                                                        { actionMode: Shell.ActionMode.NONE }); | ||||
|         this._manager.addMenu(this._menu); | ||||
|  | ||||
|         this._button.connect('clicked', () => { this._menu.toggle(); }); | ||||
|   | ||||
| @@ -210,7 +210,7 @@ var IBusManager = new Lang.Class({ | ||||
|         } | ||||
|  | ||||
|         this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME, | ||||
|                                            null, callback); | ||||
|                                            null, callback || null); | ||||
|     }, | ||||
|  | ||||
|     preloadEngines(ids) { | ||||
|   | ||||
| @@ -17,6 +17,7 @@ var InputMethod = new Lang.Class({ | ||||
|         this._currentFocus = null; | ||||
|         this._preeditStr = ''; | ||||
|         this._preeditPos = 0; | ||||
|         this._preeditVisible = false; | ||||
|         this._ibus = IBus.Bus.new_async(); | ||||
|         this._ibus.connect('connected', this._onConnected.bind(this)); | ||||
|         this._ibus.connect('disconnected', this._clear.bind(this)); | ||||
| @@ -80,6 +81,7 @@ var InputMethod = new Lang.Class({ | ||||
|         this._enabled = false; | ||||
|         this._preeditStr = '' | ||||
|         this._preeditPos = 0; | ||||
|         this._preeditVisible = false; | ||||
|     }, | ||||
|  | ||||
|     _emitRequestSurrounding() { | ||||
| @@ -98,20 +100,27 @@ var InputMethod = new Lang.Class({ | ||||
|     _onUpdatePreeditText(context, text, pos, visible) { | ||||
|         if (text == null) | ||||
|             return; | ||||
|         this._preeditStr = text.get_text(); | ||||
|         this._preeditPos = pos; | ||||
|  | ||||
|         let preedit = text.get_text(); | ||||
|  | ||||
|         if (visible) | ||||
|             this.set_preedit_text(this._preeditStr, pos); | ||||
|         else | ||||
|             this.set_preedit_text(preedit, pos); | ||||
|         else if (this._preeditVisible) | ||||
|             this.set_preedit_text(null, pos); | ||||
|  | ||||
|         this._preeditStr = preedit; | ||||
|         this._preeditPos = pos; | ||||
|         this._preeditVisible = visible; | ||||
|     }, | ||||
|  | ||||
|     _onShowPreeditText(context) { | ||||
|         this._preeditVisible = true; | ||||
|         this.set_preedit_text(this._preeditStr, this._preeditPos); | ||||
|     }, | ||||
|  | ||||
|     _onHidePreeditText(context) { | ||||
|         this.set_preedit_text(null, this._preeditPos); | ||||
|         this._preeditVisible = false; | ||||
|     }, | ||||
|  | ||||
|     _onForwardKeyEvent(context, keyval, keycode, state) { | ||||
| @@ -144,8 +153,11 @@ var InputMethod = new Lang.Class({ | ||||
|             this._updateCapabilities(); | ||||
|         } | ||||
|  | ||||
|         // Unset any preedit text | ||||
|         this.set_preedit_text(null, 0); | ||||
|         if (this._preeditStr) { | ||||
|             // Unset any preedit text | ||||
|             this.set_preedit_text(null, 0); | ||||
|             this._preeditStr = null; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     vfunc_reset() { | ||||
| @@ -154,8 +166,11 @@ var InputMethod = new Lang.Class({ | ||||
|             this._emitRequestSurrounding(); | ||||
|         } | ||||
|  | ||||
|         // Unset any preedit text | ||||
|         this.set_preedit_text(null, 0); | ||||
|         if (this._preeditStr) { | ||||
|             // Unset any preedit text | ||||
|             this.set_preedit_text(null, 0); | ||||
|             this._preeditStr = null; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     vfunc_set_cursor_location(rect) { | ||||
|   | ||||
| @@ -52,11 +52,20 @@ var KeyboardManager = new Lang.Class({ | ||||
|         this._current = null; | ||||
|         this._localeLayoutInfo = this._getLocaleLayout(); | ||||
|         this._layoutInfos = {}; | ||||
|         this._currentKeymap = null; | ||||
|     }, | ||||
|  | ||||
|     _applyLayoutGroup(group) { | ||||
|         let options = this._buildOptionsString(); | ||||
|         let [layouts, variants] = this._buildGroupStrings(group); | ||||
|  | ||||
|         if (this._currentKeymap && | ||||
|             this._currentKeymap.layouts == layouts && | ||||
|             this._currentKeymap.variants == variants && | ||||
|             this._currentKeymap.options == options) | ||||
|             return; | ||||
|  | ||||
|         this._currentKeymap = {layouts, variants, options}; | ||||
|         Meta.get_backend().set_keymap(layouts, variants, options); | ||||
|     }, | ||||
|  | ||||
| @@ -89,8 +98,6 @@ var KeyboardManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     setUserLayouts(ids) { | ||||
|         let currentId = this._current ? this._current.id : null; | ||||
|         let currentGroupIndex = this._current ? this._current.groupIndex : null; | ||||
|         this._current = null; | ||||
|         this._layoutInfos = {}; | ||||
|  | ||||
| @@ -117,9 +124,6 @@ var KeyboardManager = new Lang.Class({ | ||||
|             info.group = group; | ||||
|             info.groupIndex = groupIndex; | ||||
|  | ||||
|             if (currentId == id && currentGroupIndex == groupIndex) | ||||
|                 this._current = info; | ||||
|  | ||||
|             i += 1; | ||||
|         } | ||||
|     }, | ||||
|   | ||||
| @@ -1,8 +1,10 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <gresources> | ||||
|   <gresource prefix="/org/gnome/shell"> | ||||
|     <file>portalHelper/main.js</file> | ||||
|  | ||||
|     <file>misc/config.js</file> | ||||
|     <file>misc/fileUtils.js</file> | ||||
|     <file>portalHelper/main.js</file> | ||||
|     <file>misc/params.js</file> | ||||
|   </gresource> | ||||
| </gresources> | ||||
|   | ||||
| @@ -1462,7 +1462,9 @@ var AppFolderPopup = new Lang.Class({ | ||||
|         global.focus_manager.add_group(this.actor); | ||||
|  | ||||
|         source.actor.connect('destroy', () => { this.actor.destroy(); }); | ||||
|         this._grabHelper = new GrabHelper.GrabHelper(this.actor); | ||||
|         this._grabHelper = new GrabHelper.GrabHelper(this.actor, { | ||||
|             actionMode: Shell.ActionMode.POPUP | ||||
|         }); | ||||
|         this._grabHelper.addActor(Main.layoutManager.overviewGroup); | ||||
|         this.actor.connect('key-press-event', this._onKeyPress.bind(this)); | ||||
|     }, | ||||
|   | ||||
| @@ -61,6 +61,15 @@ var BoxPointer = new Lang.Class({ | ||||
|         this._sourceAlignment = 0.5; | ||||
|         this._capturedEventId = 0; | ||||
|         this._muteInput(); | ||||
|  | ||||
|         this.actor.connect('destroy', this._onDestroy.bind(this)); | ||||
|     }, | ||||
|  | ||||
|     _onDestroy() { | ||||
|         if (this._sourceActorDestroyId) { | ||||
|             this._sourceActor.disconnect(this._sourceActorDestroyId); | ||||
|             delete this._sourceActorDestroyId; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     get arrowSide() { | ||||
| @@ -424,9 +433,26 @@ var BoxPointer = new Lang.Class({ | ||||
|         // so that we can query the correct size. | ||||
|         this.actor.show(); | ||||
|  | ||||
|         this._sourceActor = sourceActor; | ||||
|         if (!this._sourceActor || sourceActor != this._sourceActor) { | ||||
|             if (this._sourceActorDestroyId) { | ||||
|                 this._sourceActor.disconnect(this._sourceActorDestroyId); | ||||
|                 delete this._sourceActorDestroyId; | ||||
|             } | ||||
|  | ||||
|             this._sourceActor = sourceActor; | ||||
|  | ||||
|             if (this._sourceActor) { | ||||
|                 this._sourceActorDestroyId = this._sourceActor.connect('destroy', () => { | ||||
|                     this._sourceActor = null; | ||||
|                     delete this._sourceActorDestroyId; | ||||
|                 }) | ||||
|             } | ||||
|         } | ||||
|         this._arrowAlignment = alignment; | ||||
|  | ||||
|         if (!this._sourceActor) | ||||
|             return; | ||||
|  | ||||
|         this._reposition(); | ||||
|         this._updateFlip(); | ||||
|     }, | ||||
|   | ||||
| @@ -52,6 +52,8 @@ var DashItemContainer = new Lang.Class({ | ||||
|         this.animatingOut = false; | ||||
|  | ||||
|         this.connect('destroy', () => { | ||||
|             if (this.child != null) | ||||
|                 this.child.destroy(); | ||||
|             this.label.destroy(); | ||||
|         }); | ||||
|     }, | ||||
|   | ||||
| @@ -184,7 +184,7 @@ var MessageDialogContent = new Lang.Class({ | ||||
|             this[`_${prop}`].add_style_class_name(`message-dialog-${prop}`); | ||||
|         }); | ||||
|  | ||||
|         let textProps = { ellipsize_mode: Pango.EllipsizeMode.NONE, | ||||
|         let textProps = { ellipsize: Pango.EllipsizeMode.NONE, | ||||
|                           line_wrap: true }; | ||||
|         Object.assign(this._subtitle.clutter_text, textProps); | ||||
|         Object.assign(this._body.clutter_text, textProps); | ||||
|   | ||||
							
								
								
									
										10
									
								
								js/ui/dnd.js
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								js/ui/dnd.js
									
									
									
									
									
								
							| @@ -132,6 +132,16 @@ var _Draggable = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onTouchEvent(actor, event) { | ||||
|         // We only handle touch events here on wayland. On X11 | ||||
|         // we do get emulated pointer events, which already works | ||||
|         // for single-touch cases. Besides, the X11 passive touch grab | ||||
|         // set up by Mutter will make us see first the touch events | ||||
|         // and later the pointer events, so it will look like two | ||||
|         // unrelated series of events, we want to avoid double handling | ||||
|         // in these cases. | ||||
|         if (!Meta.is_wayland_compositor()) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|  | ||||
|         if (event.type() != Clutter.EventType.TOUCH_BEGIN || | ||||
|             !global.display.is_pointer_emulating_sequence(event.get_event_sequence())) | ||||
|             return Clutter.EVENT_PROPAGATE; | ||||
|   | ||||
| @@ -418,6 +418,11 @@ var IconGrid = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _animationDone() { | ||||
|         this._clonesAnimating.forEach(clone => { | ||||
|             clone.source.reactive = true; | ||||
|             clone.source.opacity = 255; | ||||
|             clone.destroy(); | ||||
|         }); | ||||
|         this._clonesAnimating = []; | ||||
|         this.emit('animation-done'); | ||||
|     }, | ||||
| @@ -443,7 +448,6 @@ var IconGrid = new Lang.Class({ | ||||
|  | ||||
|         for (let index = 0; index < actors.length; index++) { | ||||
|             let actor = actors[index]; | ||||
|             actor.reactive = false; | ||||
|             actor.set_scale(0, 0); | ||||
|             actor.set_pivot_point(0.5, 0.5); | ||||
|  | ||||
| @@ -465,7 +469,6 @@ var IconGrid = new Lang.Class({ | ||||
|                                                      onComplete: () => { | ||||
|                                                         if (isLastItem) | ||||
|                                                             this._animationDone(); | ||||
|                                                         actor.reactive = true; | ||||
|                                                     } | ||||
|                                                    }); | ||||
|                               } | ||||
| @@ -538,10 +541,6 @@ var IconGrid = new Lang.Class({ | ||||
|                                    onComplete: () => { | ||||
|                                        if (isLastItem) | ||||
|                                            this._animationDone(); | ||||
|  | ||||
|                                        actor.opacity = 255; | ||||
|                                        actor.reactive = true; | ||||
|                                        actorClone.destroy(); | ||||
|                                    }}; | ||||
|                 fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM, | ||||
|                                transition: 'easeInOutQuad', | ||||
| @@ -562,12 +561,8 @@ var IconGrid = new Lang.Class({ | ||||
|                                    scale_x: scaleX, | ||||
|                                    scale_y: scaleY, | ||||
|                                    onComplete: () => { | ||||
|                                        if (isLastItem) { | ||||
|                                        if (isLastItem) | ||||
|                                            this._animationDone(); | ||||
|                                            this._restoreItemsOpacity(); | ||||
|                                        } | ||||
|                                        actor.reactive = true; | ||||
|                                        actorClone.destroy(); | ||||
|                                    }}; | ||||
|                 fadeParams = { time: ANIMATION_FADE_IN_TIME_FOR_ITEM, | ||||
|                                transition: 'easeInOutQuad', | ||||
| @@ -581,12 +576,6 @@ var IconGrid = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _restoreItemsOpacity() { | ||||
|         for (let index = 0; index < this._items.length; index++) { | ||||
|             this._items[index].actor.opacity = 255; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _getAllocatedChildSizeAndSpacing(child) { | ||||
|         let [,, natWidth, natHeight] = child.get_preferred_size(); | ||||
|         let width = Math.min(this._getHItemSize(), natWidth); | ||||
|   | ||||
| @@ -1322,6 +1322,7 @@ var MessageTray = new Lang.Class({ | ||||
|         this._bannerBin.y = -this._banner.actor.height; | ||||
|         this.actor.show(); | ||||
|  | ||||
|         Meta.disable_unredirect_for_display(global.display); | ||||
|         this._updateShowingNotification(); | ||||
|  | ||||
|         let [x, y, mods] = global.get_pointer(); | ||||
| @@ -1459,6 +1460,7 @@ var MessageTray = new Lang.Class({ | ||||
|  | ||||
|         this._pointerInNotification = false; | ||||
|         this._notificationRemoved = false; | ||||
|         Meta.enable_unredirect_for_display(global.display); | ||||
|  | ||||
|         this._banner.actor.destroy(); | ||||
|         this._banner = null; | ||||
|   | ||||
| @@ -77,10 +77,8 @@ var FdoNotificationDaemon = new Lang.Class({ | ||||
|                  bitsPerSample, nChannels, data] = hints['image-data']; | ||||
|             return Shell.util_create_pixbuf_from_data(data, GdkPixbuf.Colorspace.RGB, hasAlpha, | ||||
|                                                       bitsPerSample, width, height, rowStride); | ||||
|         } else if (hints['image-path']) { | ||||
|             return new Gio.FileIcon({ file: Gio.File.new_for_path(hints['image-path']) }); | ||||
|         } | ||||
|         return null; | ||||
|         return this._iconForNotificationData(hints['image-path']); | ||||
|     }, | ||||
|  | ||||
|     _fallbackIconForNotificationData(hints) { | ||||
|   | ||||
| @@ -118,15 +118,30 @@ var OsdWindow = new Lang.Class({ | ||||
|         this._hideTimeoutId = 0; | ||||
|         this._reset(); | ||||
|  | ||||
|         Main.layoutManager.connect('monitors-changed', | ||||
|                                    this._relayout.bind(this)); | ||||
|         this.actor.connect('destroy', this._onDestroy.bind(this)); | ||||
|  | ||||
|         this._monitorsChangedId = | ||||
|             Main.layoutManager.connect('monitors-changed', | ||||
|                                        this._relayout.bind(this)); | ||||
|         let themeContext = St.ThemeContext.get_for_stage(global.stage); | ||||
|         themeContext.connect('notify::scale-factor', | ||||
|                              this._relayout.bind(this)); | ||||
|         this._scaleChangedId = | ||||
|             themeContext.connect('notify::scale-factor', | ||||
|                                  this._relayout.bind(this)); | ||||
|         this._relayout(); | ||||
|         Main.uiGroup.add_child(this.actor); | ||||
|     }, | ||||
|  | ||||
|     _onDestroy() { | ||||
|         if (this._monitorsChangedId) | ||||
|             Main.layoutManager.disconnect(this._monitorsChangedId); | ||||
|         this._monitorsChangedId = 0; | ||||
|  | ||||
|         let themeContext = St.ThemeContext.get_for_stage(global.stage); | ||||
|         if (this._scaleChangedId) | ||||
|             themeContext.disconnect(this._scaleChangedId); | ||||
|         this._scaleChangedId = 0; | ||||
|     }, | ||||
|  | ||||
|     setIcon(icon) { | ||||
|         this._icon.gicon = icon; | ||||
|     }, | ||||
| @@ -204,8 +219,8 @@ var OsdWindow = new Lang.Class({ | ||||
|     _reset() { | ||||
|         this.actor.hide(); | ||||
|         this.setLabel(null); | ||||
|         this.setLevel(null); | ||||
|         this.setMaxLevel(null); | ||||
|         this.setLevel(null); | ||||
|     }, | ||||
|  | ||||
|     _relayout() { | ||||
| @@ -253,8 +268,8 @@ var OsdWindowManager = new Lang.Class({ | ||||
|     _showOsdWindow(monitorIndex, icon, label, level, maxLevel) { | ||||
|         this._osdWindows[monitorIndex].setIcon(icon); | ||||
|         this._osdWindows[monitorIndex].setLabel(label); | ||||
|         this._osdWindows[monitorIndex].setLevel(level); | ||||
|         this._osdWindows[monitorIndex].setMaxLevel(maxLevel); | ||||
|         this._osdWindows[monitorIndex].setLevel(level); | ||||
|         this._osdWindows[monitorIndex].show(); | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -998,8 +998,8 @@ var Panel = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _toggleMenu(indicator) { | ||||
|         if (!indicator) // menu not supported by current session mode | ||||
|             return; | ||||
|         if (!indicator || !indicator.container.visible) | ||||
|             return; // menu not supported by current session mode | ||||
|  | ||||
|         let menu = indicator.menu; | ||||
|         if (!indicator.actor.reactive) | ||||
| @@ -1093,6 +1093,7 @@ var Panel = new Lang.Class({ | ||||
|         let windows = activeWorkspace.list_windows().filter(metaWindow => { | ||||
|             return metaWindow.is_on_primary_monitor() && | ||||
|                    metaWindow.showing_on_its_workspace() && | ||||
|                    !metaWindow.is_hidden() && | ||||
|                    metaWindow.get_window_type() != Meta.WindowType.DESKTOP; | ||||
|         }); | ||||
|  | ||||
|   | ||||
| @@ -143,9 +143,10 @@ var PopupBaseMenuItem = new Lang.Class({ | ||||
|     _onKeyPressEvent(actor, event) { | ||||
|         let state = event.get_state(); | ||||
|  | ||||
|         // if user has a modifier down (except capslock) | ||||
|         // if user has a modifier down (except capslock and numlock) | ||||
|         // then don't handle the key press here | ||||
|         state &= ~Clutter.ModifierType.LOCK_MASK; | ||||
|         state &= ~Clutter.ModifierType.MOD2_MASK; | ||||
|         state &= Clutter.ModifierType.MODIFIER_MASK; | ||||
|  | ||||
|         if (state) | ||||
|   | ||||
| @@ -9,6 +9,7 @@ const BoxPointer = imports.ui.boxpointer; | ||||
| const Main = imports.ui.main; | ||||
| const Params = imports.misc.params; | ||||
| const PopupMenu = imports.ui.popupMenu; | ||||
| const Shell = imports.gi.Shell; | ||||
|  | ||||
| var EntryMenu = new Lang.Class({ | ||||
|     Name: 'ShellEntryMenu', | ||||
| @@ -150,11 +151,12 @@ function addContextMenu(entry, params) { | ||||
|     if (entry.menu) | ||||
|         return; | ||||
|  | ||||
|     params = Params.parse (params, { isPassword: false }); | ||||
|     params = Params.parse (params, { isPassword: false, actionMode: Shell.ActionMode.POPUP }); | ||||
|  | ||||
|     entry.menu = new EntryMenu(entry); | ||||
|     entry.menu.isPassword = params.isPassword; | ||||
|     entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }); | ||||
|     entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry }, | ||||
|                                                         { actionMode: params.actionMode }); | ||||
|     entry._menuManager.addMenu(entry.menu); | ||||
|  | ||||
|     // Add an event handler to both the entry and its clutter_text; the former | ||||
|   | ||||
| @@ -360,11 +360,14 @@ var InputSourceManager = new Lang.Class({ | ||||
|         this._settings.connect('per-window-changed', this._sourcesPerWindowChanged.bind(this)); | ||||
|         this._sourcesPerWindowChanged(); | ||||
|         this._disableIBus = false; | ||||
|         this._reloading = false; | ||||
|     }, | ||||
|  | ||||
|     reload() { | ||||
|         this._reloading = true; | ||||
|         this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions); | ||||
|         this._inputSourcesChanged(); | ||||
|         this._reloading = false; | ||||
|     }, | ||||
|  | ||||
|     _ibusReadyCallback(im, ready) { | ||||
| @@ -458,7 +461,15 @@ var InputSourceManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     activateInputSource(is, interactive) { | ||||
|         KeyboardManager.holdKeyboard(); | ||||
|         // The focus changes during holdKeyboard/releaseKeyboard may trick | ||||
|         // the client into hiding UI containing the currently focused entry. | ||||
|         // So holdKeyboard/releaseKeyboard are not called when | ||||
|         // 'set-content-type' signal is received. | ||||
|         // E.g. Focusing on a password entry in a popup in Xorg Firefox | ||||
|         // will emit 'set-content-type' signal. | ||||
|         // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 | ||||
|         if (!this._reloading) | ||||
|             KeyboardManager.holdKeyboard(); | ||||
|         this._keyboardManager.apply(is.xkbId); | ||||
|  | ||||
|         // All the "xkb:..." IBus engines simply "echo" back symbols, | ||||
| @@ -473,7 +484,10 @@ var InputSourceManager = new Lang.Class({ | ||||
|         else | ||||
|             engine = 'xkb:us::eng'; | ||||
|  | ||||
|         this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); | ||||
|         if (!this._reloading) | ||||
|             this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard); | ||||
|         else | ||||
|             this._ibusManager.setEngine(engine); | ||||
|         this._currentInputSourceChanged(is); | ||||
|  | ||||
|         if (interactive) | ||||
|   | ||||
| @@ -58,6 +58,9 @@ var AltSwitcher = new Lang.Class({ | ||||
|             childToShow = this._standard; | ||||
|         } else if (this._alternate.visible) { | ||||
|             childToShow = this._alternate; | ||||
|         } else { | ||||
|             this.actor.hide(); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         let childShown = this.actor.get_child(); | ||||
| @@ -79,7 +82,7 @@ var AltSwitcher = new Lang.Class({ | ||||
|             global.sync_pointer(); | ||||
|         } | ||||
|  | ||||
|         this.actor.visible = (childToShow != null); | ||||
|         this.actor.show(); | ||||
|     }, | ||||
|  | ||||
|     _onDestroy() { | ||||
|   | ||||
| @@ -478,6 +478,7 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({ | ||||
|         this._dx = 0; | ||||
|         this._dy = 0; | ||||
|         actor.connect('captured-event', this._handleEvent.bind(this)); | ||||
| 	this._touchpadSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.peripherals.touchpad'}); | ||||
|     }, | ||||
|  | ||||
|     _checkActivated() { | ||||
| @@ -515,7 +516,11 @@ var TouchpadWorkspaceSwitchAction = new Lang.Class({ | ||||
|  | ||||
|             // Scale deltas up a bit to make it feel snappier | ||||
|             this._dx += dx * 2; | ||||
|             this._dy += dy * 2; | ||||
| 	    if(!(this._touchpadSettings.get_boolean('natural-scroll')))  | ||||
| 		this._dy -= dy * 2; | ||||
| 	    else | ||||
| 		this._dy += dy * 2; | ||||
| 	     | ||||
|             this.emit('motion', this._dx, this._dy); | ||||
|         } else { | ||||
|             if ((event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END && ! this._checkActivated()) || | ||||
| @@ -1044,6 +1049,10 @@ var WindowManager = new Lang.Class({ | ||||
|         let workspaceManager = global.workspace_manager; | ||||
|         let activeWorkspace = workspaceManager.get_active_workspace(); | ||||
|  | ||||
|         // If overview is visible, we would mess up the positioning of windows. | ||||
|         if (Main.overview.visible) | ||||
|             return; | ||||
|  | ||||
|         if (!this._switchData) | ||||
|             this._prepareWorkspaceSwitch(activeWorkspace.index(), -1); | ||||
|  | ||||
| @@ -1083,7 +1092,8 @@ var WindowManager = new Lang.Class({ | ||||
|         if (newWs == activeWorkspace) { | ||||
|             this._switchWorkspaceCancel(); | ||||
|         } else { | ||||
|             this._switchData.gestureActivated = true; | ||||
|             if (this._switchData) | ||||
|                 this._switchData.gestureActivated = true; | ||||
|             this.actionMoveWorkspace(newWs); | ||||
|         } | ||||
|     }, | ||||
|   | ||||
| @@ -465,6 +465,8 @@ var WindowOverlay = new Lang.Class({ | ||||
|         title.clutter_text.ellipsize = Pango.EllipsizeMode.END; | ||||
|         windowClone.actor.label_actor = title; | ||||
|  | ||||
|         this._maxTitleWidth = -1; | ||||
|  | ||||
|         this._updateCaptionId = metaWindow.connect('notify::title', w => { | ||||
|             this.title.text = w.title; | ||||
|             this.title.text = this._getCaption(); | ||||
| @@ -528,6 +530,13 @@ var WindowOverlay = new Lang.Class({ | ||||
|                 Math.max(this.borderSize, this.closeButton.width - this.closeButton._overlap)]; | ||||
|     }, | ||||
|  | ||||
|     setMaxChromeWidth(max) { | ||||
|         if (this._maxTitleWidth == max) | ||||
|             return; | ||||
|  | ||||
|         this._maxTitleWidth = max; | ||||
|     }, | ||||
|  | ||||
|     relayout(animate) { | ||||
|         let button = this.closeButton; | ||||
|         let title = this.title; | ||||
| @@ -554,13 +563,26 @@ var WindowOverlay = new Lang.Class({ | ||||
|         else | ||||
|             button.set_position(Math.floor(buttonX), Math.floor(buttonY)); | ||||
|  | ||||
|         let titleX = cloneX + (cloneWidth - title.width) / 2; | ||||
|         // Clutter.Actor.get_preferred_width() will return the fixed width if | ||||
|         // one is set, so we need to reset the width by calling set_width(-1), | ||||
|         // to forward the call down to StLabel. | ||||
|         // We also need to save and restore the current width, otherwise the | ||||
|         // animation starts from the wrong point. | ||||
|         let prevTitleWidth = title.width; | ||||
|         title.set_width(-1); | ||||
|  | ||||
|         let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1); | ||||
|         let titleWidth = Math.max(titleMinWidth, | ||||
|                                   Math.min(titleNatWidth, this._maxTitleWidth)); | ||||
|         title.width = prevTitleWidth; | ||||
|  | ||||
|         let titleX = cloneX + (cloneWidth - titleWidth) / 2; | ||||
|         let titleY = cloneY + cloneHeight - (title.height - this.borderSize) / 2; | ||||
|  | ||||
|         if (animate) { | ||||
|             this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), title.width); | ||||
|             this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth); | ||||
|         } else { | ||||
|             title.width = title.width; | ||||
|             title.width = titleWidth; | ||||
|             title.set_position(Math.floor(titleX), Math.floor(titleY)); | ||||
|         } | ||||
|  | ||||
| @@ -1306,6 +1328,12 @@ var Workspace = new Lang.Class({ | ||||
|             let cloneHeight = clone.actor.height * scale; | ||||
|             clone.slot = [x, y, cloneWidth, cloneHeight]; | ||||
|  | ||||
|             let cloneCenter = x + cloneWidth / 2; | ||||
|             let maxChromeWidth = 2 * Math.min( | ||||
|                 cloneCenter - area.x, | ||||
|                 area.x + area.width - cloneCenter); | ||||
|             overlay.setMaxChromeWidth(Math.round(maxChromeWidth)); | ||||
|  | ||||
|             if (overlay && (initialPositioning || !clone.positioned)) | ||||
|                 overlay.hide(); | ||||
|  | ||||
|   | ||||
| @@ -31,7 +31,7 @@ var WORKSPACE_CUT_SIZE = 10; | ||||
|  | ||||
| var WORKSPACE_KEEP_ALIVE_TIME = 100; | ||||
|  | ||||
| var OVERRIDE_SCHEMA = 'org.gnome.shell.overrides'; | ||||
| var MUTTER_SCHEMA = 'org.gnome.mutter'; | ||||
|  | ||||
| /* A layout manager that requests size only for primary_actor, but then allocates | ||||
|    all using a fixed layout */ | ||||
| @@ -674,7 +674,7 @@ var ThumbnailsBox = new Lang.Class({ | ||||
|         Main.overview.connect('window-drag-cancelled', | ||||
|                               this._onDragCancelled.bind(this)); | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA }); | ||||
|         this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA }); | ||||
|         this._settings.connect('changed::dynamic-workspaces', | ||||
|             this._updateSwitcherVisibility.bind(this)); | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,7 @@ var AnimationType = { | ||||
|     FADE: 1 | ||||
| }; | ||||
|  | ||||
| const OVERRIDE_SCHEMA = 'org.gnome.shell.overrides'; | ||||
| const MUTTER_SCHEMA = 'org.gnome.mutter'; | ||||
|  | ||||
| var WorkspacesViewBase = new Lang.Class({ | ||||
|     Name: 'WorkspacesViewBase', | ||||
| @@ -473,7 +473,7 @@ var WorkspacesDisplay = new Lang.Class({ | ||||
|         this._workspacesViews = []; | ||||
|         this._primaryScrollAdjustment = null; | ||||
|  | ||||
|         this._settings = new Gio.Settings({ schema_id: OVERRIDE_SCHEMA }); | ||||
|         this._settings = new Gio.Settings({ schema_id: MUTTER_SCHEMA }); | ||||
|         this._settings.connect('changed::workspaces-only-on-primary', | ||||
|                                this._workspacesOnlyOnPrimaryChanged.bind(this)); | ||||
|         this._workspacesOnlyOnPrimaryChanged(); | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| project('gnome-shell', 'c', | ||||
|   version: '3.30.1', | ||||
|   version: '3.30.2', | ||||
|   meson_version: '>= 0.47.0', | ||||
|   license: 'GPLv2+' | ||||
| ) | ||||
|   | ||||
							
								
								
									
										2
									
								
								po/es.po
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								po/es.po
									
									
									
									
									
								
							| @@ -1635,7 +1635,7 @@ msgstr "Desconectado" | ||||
|  | ||||
| #: js/ui/status/bluetooth.js:141 | ||||
| msgid "On" | ||||
| msgstr "Encender" | ||||
| msgstr "Encendido" | ||||
|  | ||||
| #: js/ui/status/brightness.js:44 | ||||
| msgid "Brightness" | ||||
|   | ||||
							
								
								
									
										930
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										930
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -248,14 +248,17 @@ st_button_touch_event (ClutterActor      *actor, | ||||
|   if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence) | ||||
|     { | ||||
|       clutter_input_device_sequence_grab (device, sequence, actor); | ||||
|       st_button_press (button, device, 0, sequence); | ||||
|       if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event)) | ||||
|         st_button_press (button, device, 0, sequence); | ||||
|       return CLUTTER_EVENT_STOP; | ||||
|     } | ||||
|   else if (event->type == CLUTTER_TOUCH_END && | ||||
|            priv->device == device && | ||||
|            priv->press_sequence == sequence) | ||||
|     { | ||||
|       st_button_release (button, device, mask, 0, sequence); | ||||
|       if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event)) | ||||
|         st_button_release (button, device, mask, 0, sequence); | ||||
|  | ||||
|       clutter_input_device_sequence_ungrab (device, sequence); | ||||
|       return CLUTTER_EVENT_STOP; | ||||
|     } | ||||
|   | ||||
| @@ -984,7 +984,7 @@ file_changed_cb (GFileMonitor      *monitor, | ||||
|   char *key; | ||||
|   guint file_hash; | ||||
|  | ||||
|   if (event_type != G_FILE_MONITOR_EVENT_CHANGED) | ||||
|   if (event_type != G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT) | ||||
|     return; | ||||
|  | ||||
|   file_hash = g_file_hash (file); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user