Compare commits
47 Commits
citadel
...
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();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
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();
|
||||
|
||||
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);
|
||||
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,6 +461,14 @@ var InputSourceManager = new Lang.Class({
|
||||
},
|
||||
|
||||
activateInputSource(is, interactive) {
|
||||
// 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);
|
||||
|
||||
@ -473,7 +484,10 @@ var InputSourceManager = new Lang.Class({
|
||||
else
|
||||
engine = 'xkb:us::eng';
|
||||
|
||||
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;
|
||||
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,6 +1092,7 @@ var WindowManager = new Lang.Class({
|
||||
if (newWs == activeWorkspace) {
|
||||
this._switchWorkspaceCancel();
|
||||
} else {
|
||||
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,6 +248,7 @@ st_button_touch_event (ClutterActor *actor,
|
||||
if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence)
|
||||
{
|
||||
clutter_input_device_sequence_grab (device, sequence, actor);
|
||||
if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
|
||||
st_button_press (button, device, 0, sequence);
|
||||
return CLUTTER_EVENT_STOP;
|
||||
}
|
||||
@ -255,7 +256,9 @@ st_button_touch_event (ClutterActor *actor,
|
||||
priv->device == device &&
|
||||
priv->press_sequence == 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);
|
||||
|
Loading…
Reference in New Issue
Block a user