Compare commits
	
		
			47 Commits
		
	
	
		
			wip/fmuell
			...
			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