Compare commits
273 Commits
Author | SHA1 | Date | |
---|---|---|---|
4e4414a84d | |||
934a08f28f | |||
732ea2a91e | |||
aae6a3cbbd | |||
f67a6589bd | |||
88c1fa8a3e | |||
012443bffa | |||
61b14c7f04 | |||
13dff7d5eb | |||
55087d03e4 | |||
e7528bf2fa | |||
9e64a1e3d6 | |||
007ac93cd6 | |||
d8336efddc | |||
a83f822512 | |||
f64d64035a | |||
5583f881df | |||
10e4382a7d | |||
9f0ee0dc9f | |||
2f82f783f2 | |||
4d066e3916 | |||
342fbd16d3 | |||
8ae0c69ccf | |||
bed660bdf4 | |||
ab2ca17b76 | |||
90b7710834 | |||
f8cc8f1dc1 | |||
f8e5e3e435 | |||
508e751ffd | |||
207c847762 | |||
3c980566d3 | |||
50b59e0ca6 | |||
14c52bb00a | |||
9720b32987 | |||
674ae262c8 | |||
db297e7fdb | |||
d57c146514 | |||
ec5a4328e3 | |||
e4ee72c481 | |||
31f1e9ff0a | |||
d6c049a8c9 | |||
44047ac881 | |||
464d5d8a13 | |||
29811a85dc | |||
36ee4e6c3b | |||
2036e4c85c | |||
f24034de84 | |||
522ff86081 | |||
669e3c8ed9 | |||
ce850f464c | |||
03eaa61cef | |||
e10e953d24 | |||
2b47bb3d82 | |||
73d819116c | |||
c8dd984663 | |||
6087eb6d0e | |||
97b43d1d36 | |||
57ebadbaf8 | |||
cad7bb1151 | |||
9a376d47c5 | |||
b79adc05f4 | |||
f765c5e319 | |||
edc445c0c9 | |||
ab6b0f3f7f | |||
5e7902e733 | |||
f9f821aa55 | |||
9ed4b2a5ae | |||
0130ced790 | |||
8dab07af82 | |||
f6cd3fa5ed | |||
faae1a028e | |||
f5e32184fe | |||
18c7138237 | |||
3f0fbae7e2 | |||
7f1a258ff9 | |||
35b38d5cb2 | |||
09e8a437d4 | |||
d2bedcc182 | |||
84eda6e459 | |||
f5e7530fc7 | |||
f983b34784 | |||
36bbe64898 | |||
627a393ed6 | |||
a025b151ef | |||
18b6f13395 | |||
051413550f | |||
3e10574736 | |||
9a3041004b | |||
87f71b8ce1 | |||
825146f1e3 | |||
52995416fd | |||
6c43d0247a | |||
9aa98d9f0c | |||
c3a29d6df1 | |||
82f84416a9 | |||
9dd3162dbe | |||
7ef519756a | |||
3bbe74d1c1 | |||
409f6718b8 | |||
9c0e179080 | |||
b3b278d41f | |||
0f466dbafb | |||
fbb4a9a3a6 | |||
8ddae5cd71 | |||
b0915c7b60 | |||
831bb4e334 | |||
4e025506fa | |||
abccf451bf | |||
14954117c0 | |||
629f408fe5 | |||
86c6ab3c01 | |||
4a6ff94701 | |||
e480b08d58 | |||
caf53861d1 | |||
d0480648ba | |||
eb8cfe799f | |||
b9f2541880 | |||
bde9b08bfe | |||
8a4c862633 | |||
785c90f4b8 | |||
dd6a11e4c7 | |||
64e9503adb | |||
36c885bf34 | |||
ad7cde805d | |||
2c2c67f4dc | |||
cc4f8dfab0 | |||
0fb13608c5 | |||
09dbe17da0 | |||
fdd347c9aa | |||
572095515b | |||
f2d4aa0822 | |||
030a22d795 | |||
c70afcdb44 | |||
526d6c03b8 | |||
261b55300d | |||
e13bfd9a17 | |||
e096d18bac | |||
9460f0e4f3 | |||
e6591f52ac | |||
07e3d1fd5c | |||
1fbc6b24c8 | |||
982777be94 | |||
6610a34ad0 | |||
bfa8a0441a | |||
7723622ec7 | |||
6bcc8c70ef | |||
d114d5f95a | |||
b5c734da42 | |||
2077bb94c1 | |||
65a4ee7fb4 | |||
debf293298 | |||
a0df3e7d1e | |||
0d67c2d164 | |||
682bd7b622 | |||
fa0e54edbb | |||
5a0b209663 | |||
7e8859fd0e | |||
444fa2e0ab | |||
a31455b921 | |||
ac0213a516 | |||
45a6e2c305 | |||
11cbd396c0 | |||
a343445cd2 | |||
be3d62487c | |||
58905bd01a | |||
08506eac2d | |||
02c6b0374d | |||
0722c06275 | |||
17a4044d97 | |||
27a7194634 | |||
d73f560bcc | |||
e92f43b83e | |||
fed79ce4e6 | |||
fc45cf03bf | |||
efde11a0f3 | |||
fb951ff9b5 | |||
f5865e895e | |||
b8c2d4c6c7 | |||
778ad49ab4 | |||
fe7dd1305f | |||
378a3df5ea | |||
e63b81d69c | |||
c2fa2cdd8a | |||
6f215427f8 | |||
67ed4e0570 | |||
8a15178557 | |||
f3ecfab378 | |||
804563d5b2 | |||
c3e5d983b9 | |||
d21edcfed5 | |||
9b69a45eee | |||
7424ee755a | |||
ff664fd1d8 | |||
fd3f03580d | |||
a09150846a | |||
f2a9c55637 | |||
eaa3f83e46 | |||
e786cc1454 | |||
cd0c632fcb | |||
d5f248cb82 | |||
6a800abe06 | |||
fe265554a7 | |||
7305466765 | |||
9ac55a98f1 | |||
a1149fb6ad | |||
dfc4cc4aaf | |||
ef7541291b | |||
248a3e6b7e | |||
6b1e381750 | |||
feaf6108f9 | |||
9ad104585d | |||
7c44af3616 | |||
0599bf41b0 | |||
eac303f84c | |||
7bdd1c625c | |||
0003760fd9 | |||
eafb8c8e38 | |||
60c8105559 | |||
54626c6f7e | |||
cca528a630 | |||
530193a3a2 | |||
52e3149040 | |||
ad297ea9dc | |||
2015fc97dc | |||
35889a0f7d | |||
dcd84a4b53 | |||
01374989b1 | |||
f300462003 | |||
1e4da1b99c | |||
e1de6cb98d | |||
59a18c4ead | |||
b881e4b62a | |||
7060ae077b | |||
a7b0910566 | |||
60706f72d4 | |||
2e77f6b34b | |||
50d5030949 | |||
03dbb0f931 | |||
249619fabd | |||
60d1f7797c | |||
dc4b8c876e | |||
1724723e63 | |||
02455b1e28 | |||
47a9b97f8b | |||
0aa29daa72 | |||
182b1c1941 | |||
bbc8010de3 | |||
15baa56584 | |||
a72683707f | |||
f4baa4ddf8 | |||
f9eb36434f | |||
bc5e16bcea | |||
86e04048ff | |||
d7c0ff5e89 | |||
51e1efa277 | |||
67f636cc68 | |||
fcdfebd0e7 | |||
069ec3b910 | |||
1092f55b54 | |||
8a8abf12f9 | |||
f044e29526 | |||
4f703019ca | |||
0e6baec350 | |||
08690d658f | |||
674325e96c | |||
f8aa486ad1 | |||
be78f0f36a | |||
9917f05be8 | |||
d23228522c | |||
8c9896561e | |||
23cdb2125e | |||
43fc598bd5 | |||
2105d2f952 |
NEWS
browser-plugin
configure.acdata
docs/reference/st
js
gdm
misc
ui
altTab.jsanimation.jsappDisplay.jsbackground.jsbackgroundMenu.jscalendar.js
components
dash.jsdateMenu.jsenvironment.jskeyboard.jslayout.jsmagnifier.jsmessageTray.jsmodalDialog.jsosdMonitorLabeler.jsoverview.jspanel.jspanelMenu.jspopupMenu.jsscreenShield.jsstatus
viewSelector.jswindowAttentionHandler.jswindowManager.jswindowMenu.jspo
LINGUASan.poar.poca.pocs.poda.pode.poel.poes.poeu.pofa.pofi.pofr.pofur.poga.pogl.pohe.pohu.poid.pois.poit.poja.pokk.poko.polt.polv.ponb.ponl.pooc.popa.popl.popt.popt_BR.poro.poru.posk.posl.posr.posr@latin.posv.potg.potr.povi.pozh_CN.pozh_TW.po
src
Makefile-st.am
calendar-server
data-to-c.plgnome-shell-plugin.cgtkmenutracker.cgvcmain.cshell-app-system.cshell-app-system.hshell-app-usage.cshell-app.cshell-embedded-window.cshell-generic-container.cshell-global.cshell-glsl-quad.cshell-gtk-embed.cshell-keyring-prompt.cshell-perf-helper.cshell-perf-log.cshell-recorder-src.cshell-recorder.cshell-stack.cshell-util.cshell-util.hshell-window-tracker.cshell-wm-private.hshell-wm.cshell-wm.hst
tests
175
NEWS
175
NEWS
@ -1,3 +1,178 @@
|
|||||||
|
3.18.3
|
||||||
|
======
|
||||||
|
* Fix browser plugin crash in Firefox [Carlos; #737932, #757940]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Carlos Garcia Campos
|
||||||
|
|
||||||
|
3.18.2
|
||||||
|
======
|
||||||
|
* Fix fullscreen animation glitches [Florian, Cosimo; #756697, #756714]
|
||||||
|
* Fix window menu being closed immediately in top orientation [Rui; #756605]
|
||||||
|
* Respect text-scaling factor under wayland [Owen; #756447]
|
||||||
|
* Fix login screen getting stuck after authentification [Ray; #754814]
|
||||||
|
* Fix overview being toggled while still animating [Rui; #756925]
|
||||||
|
* Improve robustness of browser plugin [Carlos; #737932, #757940]
|
||||||
|
* Misc. bug fixes [Owen, Florian; #756983, #757150, #757779]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Cosimo Cecchi, Carlos Garcia Campos, Rui Matos, Florian Müllner, Ray Strode,
|
||||||
|
Owen W. Taylor
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Kjartan Maraas [nb], Khaled Hosny [ar], Sveinn í Felli [is],
|
||||||
|
Balázs Meskó [hu], Daniel Șerbănescu [ro], Aron Xu [zh_CN],
|
||||||
|
Anthony Fok [zh_TW]
|
||||||
|
|
||||||
|
3.18.1
|
||||||
|
======
|
||||||
|
* Fix screen freezes when a notification is pushed [Carlos; #755425]
|
||||||
|
* Fix overzealous ellipsization in system status menu [Adel, Florian; #708472]
|
||||||
|
* Hide app menu when disabled by setting [Florian; #745919]
|
||||||
|
* Fix lightbox effect when animations are disabled [Rui; #755827]
|
||||||
|
* Do not mark hotplug notifications as critical [Florian; #657923]
|
||||||
|
* Fix icons getting cut off in dash [Florian; #745649]
|
||||||
|
* Animate fullscreen/unfullscreen operations [Cosimo; #707248]
|
||||||
|
* Misc. bug fixes [Florian, Owen; #748919, #674799, #754581]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Emmanuele Bassi, Michael Catanzaro, Cosimo Cecchi, Matthias Clasen,
|
||||||
|
Adel Gadllah, Carlos Garnacho, Ekaterina Gerasimova, Rui Matos,
|
||||||
|
Florian Müllner, Owen W. Taylor
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Марко Костић [sr], Милош Поповић [sr@latin], Khaled Hosny [ar],
|
||||||
|
Trần Ngọc Quân [vi], Petr Kovar [cs], Alexandre Franke [fr],
|
||||||
|
Fran Dieguez [gl], Anders Jonsson [sv], Piotr Drąg [pl], Dušan Kazik [sk],
|
||||||
|
Milo Casagrande [it], Changwoo Ryu [ko], Stas Solovey [ru],
|
||||||
|
Rafael Fontenelle [pt_BR], Tom Tryfonidis [el], Aurimas Černius [lt],
|
||||||
|
Seán de Búrca [ga], Christian Kirbach [de], Jiri Grönroos [fi],
|
||||||
|
Pedro Albuquerque [pt], Baurzhan Muftakhidinov [kk], Daniel Mustieles [es],
|
||||||
|
Marek Černocký [cs], Ask Hjorth Larsen [da], Inaki Larranaga Murgoitio [eu]
|
||||||
|
|
||||||
|
3.18.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Sendy Aditya Suryana [id], Kris Thomsen [da], Seán de Búrca [ga],
|
||||||
|
Andika Triwidada [id], Enrico Nicoletto [pt_BR], Anders Jonsson [sv],
|
||||||
|
Rūdolfs Mazurs [lv]
|
||||||
|
|
||||||
|
3.17.92
|
||||||
|
=======
|
||||||
|
* Fix race when loading multiple background animations [Josselin; #741453]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Michael Biebl, Josselin Mouette, Florian Müllner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Baurzhan Muftakhidinov [kk], Changwoo Ryu [ko], Christian Kirbach [de],
|
||||||
|
Kjartan Maraas [nb], Jiri Grönroos [fi], Arash Mousavi [fa],
|
||||||
|
Jiro Matsuzawa [ja], Marek Černocký [cs], Milo Casagrande [it]
|
||||||
|
|
||||||
|
3.17.91
|
||||||
|
=======
|
||||||
|
* Fix login screen spinner causing wakeups while VT-switched away
|
||||||
|
[Ray, Rui; #753891]
|
||||||
|
* Fix scrolling of user list on login screen [Florian; #754525]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Piotr Drąg, Rui Matos, Florian Müllner, Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Dušan Kazik [sk], Jordi Mas [ca], Aurimas Černius [lt], Stas Solovey [ru],
|
||||||
|
Piotr Drąg [pl], Pedro Albuquerque [pt], Daniel Mustieles [es],
|
||||||
|
Chao-Hsiung Liao [zh_TW], Muhammet Kara [tr], Fran Dieguez [gl],
|
||||||
|
Hannie Dumoleyn [nl], Yosef Or Boczko [he], Tom Tryfonidis [el],
|
||||||
|
A S Alam [pa], Balázs Úr [hu], Alexandre Franke [fr], Frédéric Péters [fr]
|
||||||
|
|
||||||
|
3.17.90
|
||||||
|
=======
|
||||||
|
* Avoid caret/focus viewport changes during pointer movement [Rui; #752138]
|
||||||
|
* Match GTK+'s modal dialogs for system modal dialogs [Carlos; #746108]
|
||||||
|
* Refine message list style [Florian; #749958]
|
||||||
|
* Fix type-ahead behavior for backspace and compose key [Rui; #753319, #753320]
|
||||||
|
* Refine the system status menu [Florian; #751377]
|
||||||
|
* Misc. bug fixes and cleanups [Bastien, Ray, Florian, Jakub; #752779, #752739,
|
||||||
|
#741366, #651503, #753064, #753181, #752881]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Rui Matos, Florian Müllner, Bastien Nocera, Carlos Soriano, Jakub Steiner,
|
||||||
|
Ray Strode, Rico Tzschichholz
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Marek Černocký [cs], Kjartan Maraas [nb], Jordi Mas [ca], Muhammet Kara [tr],
|
||||||
|
Enrico Nicoletto [pt_BR]
|
||||||
|
|
||||||
|
3.17.4
|
||||||
|
======
|
||||||
|
* Fix fuzziness of app menu icon [Jakub; #747932]
|
||||||
|
* Implement 4 finger swipe gesture for touchpads [Carlos; #752250]
|
||||||
|
* Misc. bug fixes [Florian, Alexandre, Piotr, Ray, Mario; #751921, #659969,
|
||||||
|
#752438, #752675]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Piotr Drąg, Alexandre Franke, Carlos Garnacho, Florian Müllner,
|
||||||
|
Mario Sanchez Prada, Jakub Steiner, Jasper St. Pierre, Ray Strode
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Benjamin Steinwender [de], Pedro Albuquerque [pt], Fabio Tomat [fur],
|
||||||
|
Matej Urbančič [sl], Daniel Mustieles [es], Yosef Or Boczko [he],
|
||||||
|
Daniel Martinez [an]
|
||||||
|
|
||||||
|
3.17.3
|
||||||
|
======
|
||||||
|
* Handle touch events in OSK on wayland [Rui; #750287]
|
||||||
|
* Reinstate left/right movement to window menu [Ron; #751344]
|
||||||
|
* Allow extensions to disable "Window is ready" notification [Adel; #748846]
|
||||||
|
* Misc. bug fixes [Watson, Michael, Ray, Rui, Florian, Cosimo; #750465,
|
||||||
|
#751016, #751517, #750714, #751541, #751599]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Michael Biebl, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
|
||||||
|
Ray Strode, Wim Taymans, Ron Yorston, Watson Yuuma Sato
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Sebastian Rasmussen [sv], Dimitris Spingos [el], Muhammet Kara [tr],
|
||||||
|
Stas Solovey [ru], Benjamin Steinwender [de], Balázs Úr [hu],
|
||||||
|
Victor Ibragimov [tg], Dušan Kazik [sk], Pedro Albuquerque [pt]
|
||||||
|
|
||||||
|
3.17.2
|
||||||
|
======
|
||||||
|
* Remove StTable widget [Florian; #703833]
|
||||||
|
* Increase visibility of expanders in alt-tab popup [Jakub; #745058]
|
||||||
|
* Ensure suspend inhibitors are released when VT switched away [Rui; #749228]
|
||||||
|
* Use iio-sensor-proxy directly for orientation lock [Bastien; #749671]
|
||||||
|
* Misc. bug fixes [Florian, Lan, Carlos; #749279, #749383, #749529, #749490,
|
||||||
|
#749742]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Carlos Garnacho, Ting-Wei Lan, Rui Matos, Florian Müllner, Bastien Nocera,
|
||||||
|
Jakub Steiner
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Yosef Or Boczko [he], sun [zh_CN], Felipe Braga [pt_BR],
|
||||||
|
Victor Ibragimov [tg], Gábor Kelemen [hu], Cédric Valmary [oc],
|
||||||
|
Dušan Kazik [sk], Kjartan Maraas [nb], Bruno Ramalhete [pt],
|
||||||
|
Matej Urbančič [sl], Daniel Mustieles [es]
|
||||||
|
|
||||||
|
3.17.1
|
||||||
|
======
|
||||||
|
* Add Display Settings entry to background menu [Meet; #697346]
|
||||||
|
* Add window menu option to move to different monitor [Isaac; #633994]
|
||||||
|
* Improve switch style in default/highContrast themes [Jakub; #746294, #747912]
|
||||||
|
* Make event highlight in calendar more prominent [Jakub; #747715]
|
||||||
|
* Fix keyboard focus when focusing a notification banner [Florian; #747205]
|
||||||
|
* Move notification banners below the dateMenu [Meet, Florian; #745910]
|
||||||
|
* Misc. bug fixes [Mario, Rui; #748338, #748541]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Isaac Ge, Rui Matos, Florian Müllner, Meet Parikh, Mario Sanchez Prada,
|
||||||
|
Jakub Steiner, Jasper St. Pierre
|
||||||
|
|
||||||
|
Translations:
|
||||||
|
Sveinn í Felli [is], Marek Černocký [cs], laurent Soleil [oc]
|
||||||
|
|
||||||
3.16.1
|
3.16.1
|
||||||
======
|
======
|
||||||
* gdm: Move long session chooser menus to the side [Florian; #734352]
|
* gdm: Move long session chooser menus to the side [Florian; #734352]
|
||||||
|
@ -3,7 +3,10 @@ mozillalibdir = $(BROWSER_PLUGIN_DIR)
|
|||||||
|
|
||||||
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
|
mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la
|
||||||
|
|
||||||
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined
|
# Browsers can unload and reload the module while browsing, which is not supported by GObject.
|
||||||
|
# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded.
|
||||||
|
# https://bugzilla.gnome.org/show_bug.cgi?id=737932
|
||||||
|
libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete
|
||||||
|
|
||||||
libgnome_shell_browser_plugin_la_LIBADD = \
|
libgnome_shell_browser_plugin_la_LIBADD = \
|
||||||
$(BROWSER_PLUGIN_LIBS)
|
$(BROWSER_PLUGIN_LIBS)
|
||||||
|
@ -43,10 +43,6 @@
|
|||||||
|
|
||||||
#define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation"
|
#define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation"
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
GDBusProxy *proxy;
|
|
||||||
} PluginData;
|
|
||||||
|
|
||||||
static NPNetscapeFuncs funcs;
|
static NPNetscapeFuncs funcs;
|
||||||
|
|
||||||
static inline gchar *
|
static inline gchar *
|
||||||
@ -145,121 +141,6 @@ check_origin_and_protocol (NPP instance)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =============== public entry points =================== */
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
|
||||||
{
|
|
||||||
/* global initialization routine, called once when plugin
|
|
||||||
is loaded */
|
|
||||||
|
|
||||||
g_debug ("plugin loaded");
|
|
||||||
|
|
||||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
|
||||||
|
|
||||||
plugin->size = sizeof(NPPluginFuncs);
|
|
||||||
plugin->newp = NPP_New;
|
|
||||||
plugin->destroy = NPP_Destroy;
|
|
||||||
plugin->getvalue = NPP_GetValue;
|
|
||||||
plugin->setwindow = NPP_SetWindow;
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_Shutdown(void)
|
|
||||||
{
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*
|
|
||||||
NP_GetMIMEDescription(void)
|
|
||||||
{
|
|
||||||
return PLUGIN_MIME_STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NP_GetValue(void *instance,
|
|
||||||
NPPVariable variable,
|
|
||||||
void *value)
|
|
||||||
{
|
|
||||||
switch (variable) {
|
|
||||||
case NPPVpluginNameString:
|
|
||||||
*(char**)value = PLUGIN_NAME;
|
|
||||||
break;
|
|
||||||
case NPPVpluginDescriptionString:
|
|
||||||
*(char**)value = PLUGIN_DESCRIPTION;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NPP_New(NPMIMEType mimetype,
|
|
||||||
NPP instance,
|
|
||||||
uint16_t mode,
|
|
||||||
int16_t argc,
|
|
||||||
char **argn,
|
|
||||||
char **argv,
|
|
||||||
NPSavedData *saved)
|
|
||||||
{
|
|
||||||
/* instance initialization function */
|
|
||||||
PluginData *data;
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
g_debug ("plugin created");
|
|
||||||
|
|
||||||
if (!check_origin_and_protocol (instance))
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
|
|
||||||
data = g_slice_new (PluginData);
|
|
||||||
instance->pdata = data;
|
|
||||||
|
|
||||||
data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
|
||||||
G_DBUS_PROXY_FLAGS_NONE,
|
|
||||||
NULL, /* interface info */
|
|
||||||
"org.gnome.Shell",
|
|
||||||
"/org/gnome/Shell",
|
|
||||||
"org.gnome.Shell.Extensions",
|
|
||||||
NULL, /* GCancellable */
|
|
||||||
&error);
|
|
||||||
if (!data->proxy)
|
|
||||||
{
|
|
||||||
/* ignore error if the shell is not running, otherwise warn */
|
|
||||||
if (error->domain != G_DBUS_ERROR ||
|
|
||||||
error->code != G_DBUS_ERROR_NAME_HAS_NO_OWNER)
|
|
||||||
{
|
|
||||||
g_warning ("Failed to set up Shell proxy: %s", error->message);
|
|
||||||
}
|
|
||||||
g_clear_error (&error);
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_debug ("plugin created successfully");
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
NPError
|
|
||||||
NPP_Destroy(NPP instance,
|
|
||||||
NPSavedData **saved)
|
|
||||||
{
|
|
||||||
/* instance finalization function */
|
|
||||||
|
|
||||||
PluginData *data = instance->pdata;
|
|
||||||
|
|
||||||
g_debug ("plugin destroyed");
|
|
||||||
|
|
||||||
g_object_unref (data->proxy);
|
|
||||||
|
|
||||||
g_slice_free (PluginData, data);
|
|
||||||
|
|
||||||
return NPERR_NO_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =================== scripting interface =================== */
|
/* =================== scripting interface =================== */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -282,6 +163,14 @@ on_shell_signal (GDBusProxy *proxy,
|
|||||||
{
|
{
|
||||||
PluginObject *obj = user_data;
|
PluginObject *obj = user_data;
|
||||||
|
|
||||||
|
/* FIXME: We have half a dozen bug reports in which this function crashes in
|
||||||
|
* WebKit due to a null NPObject. This should never happen, but since it is
|
||||||
|
* happening, let's turn the crash into a critical.
|
||||||
|
*
|
||||||
|
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
|
||||||
|
*/
|
||||||
|
g_return_if_fail (obj->instance);
|
||||||
|
|
||||||
if (strcmp (signal_name, "ExtensionStatusChanged") == 0)
|
if (strcmp (signal_name, "ExtensionStatusChanged") == 0)
|
||||||
{
|
{
|
||||||
gchar *uuid;
|
gchar *uuid;
|
||||||
@ -312,6 +201,12 @@ on_shell_appeared (GDBusConnection *connection,
|
|||||||
{
|
{
|
||||||
PluginObject *obj = (PluginObject*) user_data;
|
PluginObject *obj = (PluginObject*) user_data;
|
||||||
|
|
||||||
|
/* FIXME: Not sure if this is ever hit or not, but let's play it safe.
|
||||||
|
*
|
||||||
|
* https://bugzilla.gnome.org/show_bug.cgi?id=737932
|
||||||
|
*/
|
||||||
|
g_return_if_fail (obj->instance);
|
||||||
|
|
||||||
if (obj->restart_listener)
|
if (obj->restart_listener)
|
||||||
{
|
{
|
||||||
NPVariant result = { NPVariantType_Void };
|
NPVariant result = { NPVariantType_Void };
|
||||||
@ -330,45 +225,18 @@ static NPObject *
|
|||||||
plugin_object_allocate (NPP instance,
|
plugin_object_allocate (NPP instance,
|
||||||
NPClass *klass)
|
NPClass *klass)
|
||||||
{
|
{
|
||||||
PluginData *data = instance->pdata;
|
PluginObject *obj = (PluginObject *) funcs.memalloc (sizeof (PluginObject));
|
||||||
PluginObject *obj = g_slice_new0 (PluginObject);
|
|
||||||
|
|
||||||
|
memset (obj, 0, sizeof (PluginObject));
|
||||||
obj->instance = instance;
|
obj->instance = instance;
|
||||||
obj->proxy = g_object_ref (data->proxy);
|
|
||||||
obj->settings = g_settings_new (SHELL_SCHEMA);
|
|
||||||
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
|
||||||
G_CALLBACK (on_shell_signal), obj);
|
|
||||||
|
|
||||||
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
|
return (NPObject*) obj;
|
||||||
"org.gnome.Shell",
|
|
||||||
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
|
||||||
on_shell_appeared,
|
|
||||||
NULL,
|
|
||||||
obj,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
g_debug ("plugin object created");
|
|
||||||
|
|
||||||
return (NPObject*)obj;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
plugin_object_deallocate (NPObject *npobj)
|
plugin_object_deallocate (NPObject *npobj)
|
||||||
{
|
{
|
||||||
PluginObject *obj = (PluginObject*)npobj;
|
funcs.memfree (npobj);
|
||||||
|
|
||||||
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
|
|
||||||
g_object_unref (obj->proxy);
|
|
||||||
|
|
||||||
if (obj->listener)
|
|
||||||
funcs.releaseobject (obj->listener);
|
|
||||||
|
|
||||||
if (obj->watch_name_id)
|
|
||||||
g_bus_unwatch_name (obj->watch_name_id);
|
|
||||||
|
|
||||||
g_debug ("plugin object destroyed");
|
|
||||||
|
|
||||||
g_slice_free (PluginObject, obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
@ -1019,6 +887,149 @@ init_methods_and_properties (void)
|
|||||||
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
onextension_changed_id = funcs.getstringidentifier ("onchange");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* =============== public entry points =================== */
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
||||||
|
{
|
||||||
|
/* global initialization routine, called once when plugin
|
||||||
|
is loaded */
|
||||||
|
|
||||||
|
g_debug ("plugin loaded");
|
||||||
|
|
||||||
|
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||||
|
|
||||||
|
plugin->size = sizeof(NPPluginFuncs);
|
||||||
|
plugin->newp = NPP_New;
|
||||||
|
plugin->destroy = NPP_Destroy;
|
||||||
|
plugin->getvalue = NPP_GetValue;
|
||||||
|
plugin->setwindow = NPP_SetWindow;
|
||||||
|
plugin->event = NPP_HandleEvent;
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_Shutdown(void)
|
||||||
|
{
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
NP_GetMIMEDescription(void)
|
||||||
|
{
|
||||||
|
return PLUGIN_MIME_STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NP_GetValue(void *instance,
|
||||||
|
NPPVariable variable,
|
||||||
|
void *value)
|
||||||
|
{
|
||||||
|
switch (variable) {
|
||||||
|
case NPPVpluginNameString:
|
||||||
|
*(char**)value = PLUGIN_NAME;
|
||||||
|
break;
|
||||||
|
case NPPVpluginDescriptionString:
|
||||||
|
*(char**)value = PLUGIN_DESCRIPTION;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NPP_New(NPMIMEType mimetype,
|
||||||
|
NPP instance,
|
||||||
|
uint16_t mode,
|
||||||
|
int16_t argc,
|
||||||
|
char **argn,
|
||||||
|
char **argv,
|
||||||
|
NPSavedData *saved)
|
||||||
|
{
|
||||||
|
/* instance initialization function */
|
||||||
|
PluginObject *obj;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
|
g_debug ("plugin created");
|
||||||
|
|
||||||
|
if (!check_origin_and_protocol (instance))
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
|
||||||
|
/* set windowless mode */
|
||||||
|
funcs.setvalue(instance, NPPVpluginWindowBool, NULL);
|
||||||
|
|
||||||
|
g_debug ("creating scriptable object");
|
||||||
|
init_methods_and_properties ();
|
||||||
|
obj = (PluginObject *) funcs.createobject (instance, &plugin_class);
|
||||||
|
instance->pdata = obj;
|
||||||
|
|
||||||
|
obj->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||||
|
G_DBUS_PROXY_FLAGS_NONE,
|
||||||
|
NULL, /* interface info */
|
||||||
|
"org.gnome.Shell",
|
||||||
|
"/org/gnome/Shell",
|
||||||
|
"org.gnome.Shell.Extensions",
|
||||||
|
NULL, /* GCancellable */
|
||||||
|
&error);
|
||||||
|
if (!obj->proxy)
|
||||||
|
{
|
||||||
|
/* ignore error if the shell is not running, otherwise warn */
|
||||||
|
if (!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER))
|
||||||
|
{
|
||||||
|
g_warning ("Failed to set up Shell proxy: %s", error->message);
|
||||||
|
}
|
||||||
|
g_clear_error (&error);
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
obj->settings = g_settings_new (SHELL_SCHEMA);
|
||||||
|
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
|
||||||
|
G_CALLBACK (on_shell_signal), obj);
|
||||||
|
obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
|
||||||
|
"org.gnome.Shell",
|
||||||
|
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
||||||
|
on_shell_appeared,
|
||||||
|
NULL,
|
||||||
|
obj,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
g_debug ("plugin created successfully");
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
NPError
|
||||||
|
NPP_Destroy(NPP instance,
|
||||||
|
NPSavedData **saved)
|
||||||
|
{
|
||||||
|
/* instance finalization function */
|
||||||
|
PluginObject *obj = (PluginObject *) instance->pdata;
|
||||||
|
|
||||||
|
if (!obj)
|
||||||
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
|
g_debug ("plugin destroyed");
|
||||||
|
|
||||||
|
g_signal_handler_disconnect (obj->proxy, obj->signal_id);
|
||||||
|
g_object_unref (obj->proxy);
|
||||||
|
|
||||||
|
if (obj->listener)
|
||||||
|
funcs.releaseobject (obj->listener);
|
||||||
|
|
||||||
|
if (obj->restart_listener)
|
||||||
|
funcs.releaseobject (obj->restart_listener);
|
||||||
|
|
||||||
|
if (obj->watch_name_id)
|
||||||
|
g_bus_unwatch_name (obj->watch_name_id);
|
||||||
|
|
||||||
|
funcs.releaseobject((NPObject *)obj);
|
||||||
|
|
||||||
|
return NPERR_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
NPError
|
NPError
|
||||||
NPP_GetValue(NPP instance,
|
NPP_GetValue(NPP instance,
|
||||||
NPPVariable variable,
|
NPPVariable variable,
|
||||||
@ -1029,13 +1040,10 @@ NPP_GetValue(NPP instance,
|
|||||||
switch (variable) {
|
switch (variable) {
|
||||||
case NPPVpluginScriptableNPObject:
|
case NPPVpluginScriptableNPObject:
|
||||||
g_debug ("creating scriptable object");
|
g_debug ("creating scriptable object");
|
||||||
init_methods_and_properties ();
|
if (!instance->pdata)
|
||||||
|
return NPERR_INVALID_INSTANCE_ERROR;
|
||||||
|
|
||||||
*(NPObject**)value = funcs.createobject (instance, &plugin_class);
|
*(NPObject**)value = instance->pdata;
|
||||||
break;
|
|
||||||
|
|
||||||
case NPPVpluginNeedsXEmbed:
|
|
||||||
*(bool *)value = TRUE;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1053,3 +1061,11 @@ NPP_SetWindow(NPP instance,
|
|||||||
{
|
{
|
||||||
return NPERR_NO_ERROR;
|
return NPERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t
|
||||||
|
NPP_HandleEvent(NPP instance,
|
||||||
|
void *event)
|
||||||
|
{
|
||||||
|
/* Ignore the event */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
21
configure.ac
21
configure.ac
@ -1,5 +1,6 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.16.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.18.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
AX_IS_RELEASE([git-directory])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@ -63,8 +64,8 @@ AC_ARG_ENABLE([systemd],
|
|||||||
[enable_systemd=$enableval],
|
[enable_systemd=$enableval],
|
||||||
[enable_systemd=auto])
|
[enable_systemd=auto])
|
||||||
AS_IF([test x$enable_systemd != xno], [
|
AS_IF([test x$enable_systemd != xno], [
|
||||||
AC_MSG_CHECKING([for libsystemd-journal])
|
AC_MSG_CHECKING([for libsystemd])
|
||||||
PKG_CHECK_EXISTS([libsystemd-journal],
|
PKG_CHECK_EXISTS([libsystemd],
|
||||||
[have_systemd=yes
|
[have_systemd=yes
|
||||||
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
|
AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])],
|
||||||
[have_systemd=no])
|
[have_systemd=no])
|
||||||
@ -74,13 +75,13 @@ AS_IF([test x$enable_systemd != xno], [
|
|||||||
AC_MSG_RESULT($enable_systemd)
|
AC_MSG_RESULT($enable_systemd)
|
||||||
|
|
||||||
CLUTTER_MIN_VERSION=1.21.5
|
CLUTTER_MIN_VERSION=1.21.5
|
||||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
GOBJECT_INTROSPECTION_MIN_VERSION=1.45.4
|
||||||
GJS_MIN_VERSION=1.39.0
|
GJS_MIN_VERSION=1.39.0
|
||||||
MUTTER_MIN_VERSION=3.16.1
|
MUTTER_MIN_VERSION=3.18.1
|
||||||
GTK_MIN_VERSION=3.15.0
|
GTK_MIN_VERSION=3.15.0
|
||||||
GIO_MIN_VERSION=2.37.0
|
GIO_MIN_VERSION=2.45.3
|
||||||
LIBECAL_MIN_VERSION=3.5.3
|
LIBECAL_MIN_VERSION=3.5.3
|
||||||
LIBEDATASERVER_MIN_VERSION=3.13.90
|
LIBEDATASERVER_MIN_VERSION=3.17.2
|
||||||
TELEPATHY_GLIB_MIN_VERSION=0.17.5
|
TELEPATHY_GLIB_MIN_VERSION=0.17.5
|
||||||
POLKIT_MIN_VERSION=0.100
|
POLKIT_MIN_VERSION=0.100
|
||||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||||
@ -106,7 +107,7 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
|
|||||||
polkit-agent-1 >= $POLKIT_MIN_VERSION
|
polkit-agent-1 >= $POLKIT_MIN_VERSION
|
||||||
gcr-base-3 >= $GCR_MIN_VERSION"
|
gcr-base-3 >= $GCR_MIN_VERSION"
|
||||||
if test x$have_systemd = xyes; then
|
if test x$have_systemd = xyes; then
|
||||||
SHARED_PCS="${SHARED_PCS} libsystemd-journal"
|
SHARED_PCS="${SHARED_PCS} libsystemd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
|
PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
|
||||||
@ -220,7 +221,7 @@ if test "$enable_man" != no; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
||||||
|
|
||||||
GNOME_COMPILE_WARNINGS([error])
|
AX_COMPILER_FLAGS()
|
||||||
case "$WARN_CFLAGS" in
|
case "$WARN_CFLAGS" in
|
||||||
*-Werror*)
|
*-Werror*)
|
||||||
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations"
|
||||||
@ -269,7 +270,7 @@ Build configuration:
|
|||||||
Prefix: ${prefix}
|
Prefix: ${prefix}
|
||||||
Source code location: ${srcdir}
|
Source code location: ${srcdir}
|
||||||
Compiler: ${CC}
|
Compiler: ${CC}
|
||||||
Compiler Warnings: $enable_compile_warnings
|
Compiler Warnings: $ax_enable_compile_warnings
|
||||||
|
|
||||||
Support for NetworkManager: $have_networkmanager
|
Support for NetworkManager: $have_networkmanager
|
||||||
Support for GStreamer recording: $build_recorder
|
Support for GStreamer recording: $build_recorder
|
||||||
|
@ -32,8 +32,10 @@
|
|||||||
<file>summary-counter.svg</file>
|
<file>summary-counter.svg</file>
|
||||||
<file>toggle-off-us.svg</file>
|
<file>toggle-off-us.svg</file>
|
||||||
<file>toggle-off-intl.svg</file>
|
<file>toggle-off-intl.svg</file>
|
||||||
|
<file>toggle-off-hc.svg</file>
|
||||||
<file>toggle-on-us.svg</file>
|
<file>toggle-on-us.svg</file>
|
||||||
<file>toggle-on-intl.svg</file>
|
<file>toggle-on-intl.svg</file>
|
||||||
|
<file>toggle-on-hc.svg</file>
|
||||||
<file>ws-switch-arrow-up.png</file>
|
<file>ws-switch-arrow-up.png</file>
|
||||||
<file>ws-switch-arrow-down.png</file>
|
<file>ws-switch-arrow-down.png</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
</key>
|
</key>
|
||||||
<key name="looking-glass-history" type="as">
|
<key name="looking-glass-history" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
|
<!-- Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass -->
|
||||||
<_summary>History for the looking glass dialog</_summary>
|
<_summary>History for the looking glass dialog</_summary>
|
||||||
</key>
|
</key>
|
||||||
<key name="always-show-log-out" type="b">
|
<key name="always-show-log-out" type="b">
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="29"
|
width="24"
|
||||||
height="29"
|
height="24"
|
||||||
id="svg10621"
|
id="svg10621"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.48.2 r9819"
|
inkscape:version="0.91 r13725"
|
||||||
sodipodi:docname="calendar-today.svg">
|
sodipodi:docname="calendar-today.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs10623">
|
id="defs10623">
|
||||||
@ -118,17 +118,6 @@
|
|||||||
fx="51"
|
fx="51"
|
||||||
fy="30"
|
fy="30"
|
||||||
r="42" />
|
r="42" />
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient34508-1-3"
|
|
||||||
id="radialGradient3113"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.72146227,0,0,0.27484277,14.205424,21.754717)"
|
|
||||||
cx="51"
|
|
||||||
cy="30"
|
|
||||||
fx="51"
|
|
||||||
fy="30"
|
|
||||||
r="42" />
|
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
@ -137,22 +126,23 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0"
|
inkscape:pageopacity="0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="15.839192"
|
inkscape:zoom="8"
|
||||||
inkscape:cx="20.652108"
|
inkscape:cx="-23.537329"
|
||||||
inkscape:cy="11.839084"
|
inkscape:cy="-31.442864"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="true"
|
showgrid="false"
|
||||||
fit-margin-top="0"
|
fit-margin-top="0"
|
||||||
fit-margin-left="0"
|
fit-margin-left="0"
|
||||||
fit-margin-right="0"
|
fit-margin-right="0"
|
||||||
fit-margin-bottom="0"
|
fit-margin-bottom="0"
|
||||||
inkscape:window-width="1280"
|
inkscape:window-width="2133"
|
||||||
inkscape:window-height="741"
|
inkscape:window-height="1241"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="238"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="88"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="0"
|
||||||
borderlayer="true">
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid3109"
|
id="grid3109"
|
||||||
@ -169,7 +159,7 @@
|
|||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title />
|
<dc:title></dc:title>
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
@ -177,28 +167,12 @@
|
|||||||
inkscape:label="Layer 1"
|
inkscape:label="Layer 1"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(-469.08263,-532.99307)">
|
transform="translate(-469.08263,-537.99307)">
|
||||||
<path
|
<circle
|
||||||
sodipodi:type="arc"
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.23756906;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
style="opacity:0.4625;color:#000000;fill:url(#radialGradient3113);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
id="path7305"
|
||||||
id="path34506-3"
|
cx="481.57138"
|
||||||
sodipodi:cx="51"
|
cy="559.4649"
|
||||||
sodipodi:cy="30"
|
r="1.5" />
|
||||||
sodipodi:rx="42"
|
|
||||||
sodipodi:ry="16"
|
|
||||||
d="M 9,29.999999 A 42,16 0 0 1 93,30 l -42,0 z"
|
|
||||||
sodipodi:start="3.1415927"
|
|
||||||
sodipodi:end="6.2831853"
|
|
||||||
transform="matrix(0.43692393,0,0,1.3783114,461.29951,517.6437)"
|
|
||||||
inkscape:export-filename="/home/jimmac/src/cvs/gnome/gnome-shell-design/mockups/motion/textures/panel.png"
|
|
||||||
inkscape:export-xdpi="90"
|
|
||||||
inkscape:export-ydpi="90" />
|
|
||||||
<rect
|
|
||||||
style="fill:#ffffff;fill-opacity:0.50196078;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
|
|
||||||
id="rect2996"
|
|
||||||
width="31"
|
|
||||||
height="3"
|
|
||||||
x="468.08264"
|
|
||||||
y="558.99304" />
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before (image error) Size: 6.1 KiB After (image error) Size: 5.6 KiB |
@ -37,10 +37,9 @@ stage {
|
|||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black; }
|
||||||
.button:focus {
|
.button:focus {
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
border-color: #215d9c;
|
|
||||||
box-shadow: inset 0 1px #454f52;
|
|
||||||
text-shadow: 0 1px black;
|
text-shadow: 0 1px black;
|
||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
.button:insensitive {
|
.button:insensitive {
|
||||||
color: #7f7f7f;
|
color: #7f7f7f;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
@ -52,9 +51,46 @@ stage {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
|
box-shadow: inset 0 0 black;
|
||||||
|
text-shadow: none;
|
||||||
|
icon-shadow: none; }
|
||||||
|
|
||||||
|
.modal-dialog-linked-button {
|
||||||
|
border-right-width: 1px;
|
||||||
|
color: #eeeeec;
|
||||||
|
background-color: #2e3436;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
box-shadow: inset 0 1px #454f52;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
padding: 12px; }
|
||||||
|
.modal-dialog-linked-button:insensitive {
|
||||||
|
color: #7f7f7f;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
background-color: rgba(62, 67, 68, 0.7);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
|
.modal-dialog-linked-button:active {
|
||||||
|
color: white;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
background-color: #222728;
|
||||||
|
box-shadow: inset 0 0 black;
|
||||||
|
text-shadow: none;
|
||||||
|
icon-shadow: none; }
|
||||||
|
.modal-dialog-linked-button:focus {
|
||||||
|
color: #eeeeec;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
|
.modal-dialog-linked-button:first-child {
|
||||||
|
border-radius: 0px 0px 0px 6px; }
|
||||||
|
.modal-dialog-linked-button:last-child {
|
||||||
|
border-right-width: 0px;
|
||||||
|
border-radius: 0px 0px 6px 0px; }
|
||||||
|
.modal-dialog-linked-button:first-child:last-child {
|
||||||
|
border-right-width: 0px;
|
||||||
|
border-radius: 0px 0px 6px 6px; }
|
||||||
|
|
||||||
/* Entries */
|
/* Entries */
|
||||||
StEntry {
|
StEntry {
|
||||||
@ -95,10 +131,10 @@ StScrollBar {
|
|||||||
background-color: transparent; }
|
background-color: transparent; }
|
||||||
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background-color: #000;
|
background-color: #999999;
|
||||||
margin: 3px; }
|
margin: 3px; }
|
||||||
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
||||||
background-color: #1a1a1a; }
|
background-color: #cccccc; }
|
||||||
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
||||||
background-color: #215d9c; }
|
background-color: #215d9c; }
|
||||||
|
|
||||||
@ -160,11 +196,12 @@ StScrollBar {
|
|||||||
background-color: white; }
|
background-color: white; }
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
border-radius: 5px;
|
border-radius: 9px;
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
background-color: rgba(23, 25, 26, 0.95);
|
background-color: rgba(23, 25, 26, 0.95);
|
||||||
border: 3px solid rgba(238, 238, 236, 0.5);
|
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||||
padding: 24px; }
|
.modal-dialog .modal-dialog-content-box {
|
||||||
|
padding: 24px; }
|
||||||
.modal-dialog .run-dialog-entry {
|
.modal-dialog .run-dialog-entry {
|
||||||
width: 20em;
|
width: 20em;
|
||||||
margin-bottom: 6px; }
|
margin-bottom: 6px; }
|
||||||
@ -179,10 +216,6 @@ StScrollBar {
|
|||||||
color: #d6d6d1;
|
color: #d6d6d1;
|
||||||
padding-bottom: .4em; }
|
padding-bottom: .4em; }
|
||||||
|
|
||||||
.button-dialog-button-box {
|
|
||||||
spacing: 18px;
|
|
||||||
padding-top: 48px; }
|
|
||||||
|
|
||||||
.show-processes-dialog-subject,
|
.show-processes-dialog-subject,
|
||||||
.mount-question-dialog-subject,
|
.mount-question-dialog-subject,
|
||||||
.end-session-dialog-subject {
|
.end-session-dialog-subject {
|
||||||
@ -375,9 +408,9 @@ StScrollBar {
|
|||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
spacing-columns: 1em; }
|
spacing-columns: 1em; }
|
||||||
|
|
||||||
/* Popvers/Menus */
|
/* Popovers/Menus */
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
min-width: 200px; }
|
min-width: 15em; }
|
||||||
.popup-menu .popup-sub-menu {
|
.popup-menu .popup-sub-menu {
|
||||||
background-color: black;
|
background-color: black;
|
||||||
box-shadow: inset 0 -1px 0px #0d0d0d; }
|
box-shadow: inset 0 -1px 0px #0d0d0d; }
|
||||||
@ -411,7 +444,7 @@ StScrollBar {
|
|||||||
|
|
||||||
.popup-menu-ornament {
|
.popup-menu-ornament {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
width: 1em; }
|
width: 1.2em; }
|
||||||
|
|
||||||
.popup-menu-boxpointer,
|
.popup-menu-boxpointer,
|
||||||
.candidate-popup-boxpointer {
|
.candidate-popup-boxpointer {
|
||||||
@ -488,10 +521,9 @@ StScrollBar {
|
|||||||
|
|
||||||
.switcher-arrow {
|
.switcher-arrow {
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
color: black; }
|
color: rgba(255, 255, 255, 0.8); }
|
||||||
|
.switcher-arrow:highlighted {
|
||||||
.switcher-arrow:highlighted {
|
color: #fff; }
|
||||||
color: #fff; }
|
|
||||||
|
|
||||||
.input-source-switcher-symbol {
|
.input-source-switcher-symbol {
|
||||||
font-size: 34pt;
|
font-size: 34pt;
|
||||||
@ -710,8 +742,9 @@ StScrollBar {
|
|||||||
border: 1px solid rgba(0, 0, 0, 0.5); }
|
border: 1px solid rgba(0, 0, 0, 0.5); }
|
||||||
|
|
||||||
.calendar-day-with-events {
|
.calendar-day-with-events {
|
||||||
color: #f2f2f2;
|
color: white;
|
||||||
font-weight: bold; }
|
font-weight: bold;
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
|
||||||
|
|
||||||
.calendar-other-month-day {
|
.calendar-other-month-day {
|
||||||
color: rgba(255, 255, 255, 0.15);
|
color: rgba(255, 255, 255, 0.15);
|
||||||
@ -719,7 +752,7 @@ StScrollBar {
|
|||||||
|
|
||||||
/* Message list */
|
/* Message list */
|
||||||
.message-list {
|
.message-list {
|
||||||
width: 420px; }
|
width: 31.5em; }
|
||||||
|
|
||||||
.message-list-sections {
|
.message-list-sections {
|
||||||
spacing: 1.5em; }
|
spacing: 1.5em; }
|
||||||
@ -754,7 +787,12 @@ StScrollBar {
|
|||||||
padding: 8px 8px 8px 0px; }
|
padding: 8px 8px 8px 0px; }
|
||||||
|
|
||||||
.message-icon-bin > StIcon {
|
.message-icon-bin > StIcon {
|
||||||
icon-size: 48px; }
|
icon-size: 32px; }
|
||||||
|
|
||||||
|
.message-secondary-bin:ltr {
|
||||||
|
padding-left: 8px; }
|
||||||
|
.message-secondary-bin:rtl {
|
||||||
|
padding-right: 8px; }
|
||||||
|
|
||||||
.message-secondary-bin {
|
.message-secondary-bin {
|
||||||
color: #999999; }
|
color: #999999; }
|
||||||
@ -763,14 +801,20 @@ StScrollBar {
|
|||||||
icon-size: 16px; }
|
icon-size: 16px; }
|
||||||
|
|
||||||
.message-title {
|
.message-title {
|
||||||
font-weight: bold; }
|
font-weight: bold;
|
||||||
|
font-size: 1.1em; }
|
||||||
|
|
||||||
.message-content {
|
.message-content {
|
||||||
padding: 8px; }
|
padding: 8px;
|
||||||
|
font-size: .9em; }
|
||||||
|
|
||||||
.system-switch-user-submenu-icon {
|
.system-switch-user-submenu-icon.user-icon {
|
||||||
icon-size: 24px;
|
icon-size: 20px;
|
||||||
border: 1px solid rgba(255, 255, 255, 0.4); }
|
padding: 0 2px; }
|
||||||
|
|
||||||
|
.system-switch-user-submenu-icon.default-icon {
|
||||||
|
icon-size: 16px;
|
||||||
|
padding: 0 4px; }
|
||||||
|
|
||||||
#appMenu {
|
#appMenu {
|
||||||
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
||||||
@ -779,7 +823,7 @@ StScrollBar {
|
|||||||
color: transparent; }
|
color: transparent; }
|
||||||
|
|
||||||
.aggregate-menu {
|
.aggregate-menu {
|
||||||
width: 360px; }
|
min-width: 21em; }
|
||||||
.aggregate-menu .popup-menu-icon {
|
.aggregate-menu .popup-menu-icon {
|
||||||
padding: 0 4px; }
|
padding: 0 4px; }
|
||||||
|
|
||||||
@ -834,7 +878,8 @@ StScrollBar {
|
|||||||
min-width: 470px; }
|
min-width: 470px; }
|
||||||
|
|
||||||
.nm-dialog-content {
|
.nm-dialog-content {
|
||||||
spacing: 20px; }
|
spacing: 20px;
|
||||||
|
padding: 24px; }
|
||||||
|
|
||||||
.nm-dialog-header-hbox {
|
.nm-dialog-header-hbox {
|
||||||
spacing: 10px; }
|
spacing: 10px; }
|
||||||
@ -1016,7 +1061,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.app-view-control:first-child {
|
.app-view-control:first-child {
|
||||||
@ -1335,10 +1380,9 @@ StScrollBar {
|
|||||||
color: white; }
|
color: white; }
|
||||||
.keyboard-key:focus {
|
.keyboard-key:focus {
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
border-color: #215d9c;
|
|
||||||
box-shadow: inset 0 1px #454f52;
|
|
||||||
text-shadow: 0 1px black;
|
text-shadow: 0 1px black;
|
||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
.keyboard-key:hover, .keyboard-key:checked {
|
.keyboard-key:hover, .keyboard-key:checked {
|
||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
@ -1350,7 +1394,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.keyboard-key:grayed {
|
.keyboard-key:grayed {
|
||||||
@ -1443,7 +1487,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #1c5187;
|
background-color: #1c5187;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.login-dialog .modal-dialog-button:default:insensitive {
|
.login-dialog .modal-dialog-button:default:insensitive {
|
||||||
@ -1696,3 +1740,11 @@ StScrollBar {
|
|||||||
|
|
||||||
stage {
|
stage {
|
||||||
-st-icon-style: symbolic; }
|
-st-icon-style: symbolic; }
|
||||||
|
|
||||||
|
.toggle-switch {
|
||||||
|
width: 48px; }
|
||||||
|
|
||||||
|
.toggle-switch-us, .toggle-switch-intl {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg"); }
|
||||||
|
.toggle-switch-us:checked, .toggle-switch-intl:checked {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
||||||
|
@ -6,3 +6,9 @@
|
|||||||
stage {
|
stage {
|
||||||
-st-icon-style: symbolic;
|
-st-icon-style: symbolic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.toggle-switch { width: 48px; }
|
||||||
|
.toggle-switch-us, .toggle-switch-intl {
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
|
||||||
|
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
||||||
|
}
|
||||||
|
Submodule data/theme/gnome-shell-sass updated: b890a4003e...d85e53fbd9
@ -37,10 +37,9 @@ stage {
|
|||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black; }
|
||||||
.button:focus {
|
.button:focus {
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
border-color: #215d9c;
|
|
||||||
box-shadow: inset 0 1px #454f52;
|
|
||||||
text-shadow: 0 1px black;
|
text-shadow: 0 1px black;
|
||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
.button:insensitive {
|
.button:insensitive {
|
||||||
color: #939695;
|
color: #939695;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
@ -52,9 +51,46 @@ stage {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
|
box-shadow: inset 0 0 black;
|
||||||
|
text-shadow: none;
|
||||||
|
icon-shadow: none; }
|
||||||
|
|
||||||
|
.modal-dialog-linked-button {
|
||||||
|
border-right-width: 1px;
|
||||||
|
color: #eeeeec;
|
||||||
|
background-color: #2e3436;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
box-shadow: inset 0 1px #454f52;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
padding: 12px; }
|
||||||
|
.modal-dialog-linked-button:insensitive {
|
||||||
|
color: #939695;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
background-color: rgba(66, 71, 73, 0.7);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
|
.modal-dialog-linked-button:active {
|
||||||
|
color: white;
|
||||||
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
|
background-color: #222728;
|
||||||
|
box-shadow: inset 0 0 black;
|
||||||
|
text-shadow: none;
|
||||||
|
icon-shadow: none; }
|
||||||
|
.modal-dialog-linked-button:focus {
|
||||||
|
color: #eeeeec;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
|
.modal-dialog-linked-button:first-child {
|
||||||
|
border-radius: 0px 0px 0px 6px; }
|
||||||
|
.modal-dialog-linked-button:last-child {
|
||||||
|
border-right-width: 0px;
|
||||||
|
border-radius: 0px 0px 6px 0px; }
|
||||||
|
.modal-dialog-linked-button:first-child:last-child {
|
||||||
|
border-right-width: 0px;
|
||||||
|
border-radius: 0px 0px 6px 6px; }
|
||||||
|
|
||||||
/* Entries */
|
/* Entries */
|
||||||
StEntry {
|
StEntry {
|
||||||
@ -95,10 +131,10 @@ StScrollBar {
|
|||||||
background-color: transparent; }
|
background-color: transparent; }
|
||||||
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
StScrollBar StButton#vhandle, StScrollBar StButton#hhandle {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background-color: #393f3f;
|
background-color: #a5a8a6;
|
||||||
margin: 3px; }
|
margin: 3px; }
|
||||||
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
StScrollBar StButton#vhandle:hover, StScrollBar StButton#hhandle:hover {
|
||||||
background-color: #515a5a; }
|
background-color: #c9cbc9; }
|
||||||
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
StScrollBar StButton#vhandle:active, StScrollBar StButton#hhandle:active {
|
||||||
background-color: #215d9c; }
|
background-color: #215d9c; }
|
||||||
|
|
||||||
@ -160,11 +196,12 @@ StScrollBar {
|
|||||||
background-color: white; }
|
background-color: white; }
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
border-radius: 5px;
|
border-radius: 9px;
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
background-color: rgba(23, 25, 26, 0.95);
|
background-color: rgba(23, 25, 26, 0.95);
|
||||||
border: 3px solid rgba(238, 238, 236, 0.5);
|
border: 3px solid rgba(238, 238, 236, 0.5); }
|
||||||
padding: 24px; }
|
.modal-dialog .modal-dialog-content-box {
|
||||||
|
padding: 24px; }
|
||||||
.modal-dialog .run-dialog-entry {
|
.modal-dialog .run-dialog-entry {
|
||||||
width: 20em;
|
width: 20em;
|
||||||
margin-bottom: 6px; }
|
margin-bottom: 6px; }
|
||||||
@ -179,10 +216,6 @@ StScrollBar {
|
|||||||
color: #d6d6d1;
|
color: #d6d6d1;
|
||||||
padding-bottom: .4em; }
|
padding-bottom: .4em; }
|
||||||
|
|
||||||
.button-dialog-button-box {
|
|
||||||
spacing: 18px;
|
|
||||||
padding-top: 48px; }
|
|
||||||
|
|
||||||
.show-processes-dialog-subject,
|
.show-processes-dialog-subject,
|
||||||
.mount-question-dialog-subject,
|
.mount-question-dialog-subject,
|
||||||
.end-session-dialog-subject {
|
.end-session-dialog-subject {
|
||||||
@ -375,9 +408,9 @@ StScrollBar {
|
|||||||
spacing-rows: 15px;
|
spacing-rows: 15px;
|
||||||
spacing-columns: 1em; }
|
spacing-columns: 1em; }
|
||||||
|
|
||||||
/* Popvers/Menus */
|
/* Popovers/Menus */
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
min-width: 200px; }
|
min-width: 15em; }
|
||||||
.popup-menu .popup-sub-menu {
|
.popup-menu .popup-sub-menu {
|
||||||
background-color: #343a3a;
|
background-color: #343a3a;
|
||||||
box-shadow: inset 0 -1px 0px #282c2c; }
|
box-shadow: inset 0 -1px 0px #282c2c; }
|
||||||
@ -411,7 +444,7 @@ StScrollBar {
|
|||||||
|
|
||||||
.popup-menu-ornament {
|
.popup-menu-ornament {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
width: 1em; }
|
width: 1.2em; }
|
||||||
|
|
||||||
.popup-menu-boxpointer,
|
.popup-menu-boxpointer,
|
||||||
.candidate-popup-boxpointer {
|
.candidate-popup-boxpointer {
|
||||||
@ -488,10 +521,9 @@ StScrollBar {
|
|||||||
|
|
||||||
.switcher-arrow {
|
.switcher-arrow {
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
color: #1c1f1f; }
|
color: rgba(238, 238, 236, 0.8); }
|
||||||
|
.switcher-arrow:highlighted {
|
||||||
.switcher-arrow:highlighted {
|
color: #eeeeec; }
|
||||||
color: #eeeeec; }
|
|
||||||
|
|
||||||
.input-source-switcher-symbol {
|
.input-source-switcher-symbol {
|
||||||
font-size: 34pt;
|
font-size: 34pt;
|
||||||
@ -710,8 +742,9 @@ StScrollBar {
|
|||||||
border: 1px solid rgba(28, 31, 31, 0.5); }
|
border: 1px solid rgba(28, 31, 31, 0.5); }
|
||||||
|
|
||||||
.calendar-day-with-events {
|
.calendar-day-with-events {
|
||||||
color: #e2e2df;
|
color: white;
|
||||||
font-weight: bold; }
|
font-weight: bold;
|
||||||
|
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg"); }
|
||||||
|
|
||||||
.calendar-other-month-day {
|
.calendar-other-month-day {
|
||||||
color: rgba(238, 238, 236, 0.15);
|
color: rgba(238, 238, 236, 0.15);
|
||||||
@ -719,7 +752,7 @@ StScrollBar {
|
|||||||
|
|
||||||
/* Message list */
|
/* Message list */
|
||||||
.message-list {
|
.message-list {
|
||||||
width: 420px; }
|
width: 31.5em; }
|
||||||
|
|
||||||
.message-list-sections {
|
.message-list-sections {
|
||||||
spacing: 1.5em; }
|
spacing: 1.5em; }
|
||||||
@ -754,7 +787,12 @@ StScrollBar {
|
|||||||
padding: 8px 8px 8px 0px; }
|
padding: 8px 8px 8px 0px; }
|
||||||
|
|
||||||
.message-icon-bin > StIcon {
|
.message-icon-bin > StIcon {
|
||||||
icon-size: 48px; }
|
icon-size: 32px; }
|
||||||
|
|
||||||
|
.message-secondary-bin:ltr {
|
||||||
|
padding-left: 8px; }
|
||||||
|
.message-secondary-bin:rtl {
|
||||||
|
padding-right: 8px; }
|
||||||
|
|
||||||
.message-secondary-bin {
|
.message-secondary-bin {
|
||||||
color: #8e8e80; }
|
color: #8e8e80; }
|
||||||
@ -763,14 +801,20 @@ StScrollBar {
|
|||||||
icon-size: 16px; }
|
icon-size: 16px; }
|
||||||
|
|
||||||
.message-title {
|
.message-title {
|
||||||
font-weight: bold; }
|
font-weight: bold;
|
||||||
|
font-size: 1.1em; }
|
||||||
|
|
||||||
.message-content {
|
.message-content {
|
||||||
padding: 8px; }
|
padding: 8px;
|
||||||
|
font-size: .9em; }
|
||||||
|
|
||||||
.system-switch-user-submenu-icon {
|
.system-switch-user-submenu-icon.user-icon {
|
||||||
icon-size: 24px;
|
icon-size: 20px;
|
||||||
border: 1px solid rgba(238, 238, 236, 0.4); }
|
padding: 0 2px; }
|
||||||
|
|
||||||
|
.system-switch-user-submenu-icon.default-icon {
|
||||||
|
icon-size: 16px;
|
||||||
|
padding: 0 4px; }
|
||||||
|
|
||||||
#appMenu {
|
#appMenu {
|
||||||
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
spinner-image: url("resource:///org/gnome/shell/theme/process-working.svg");
|
||||||
@ -779,7 +823,7 @@ StScrollBar {
|
|||||||
color: transparent; }
|
color: transparent; }
|
||||||
|
|
||||||
.aggregate-menu {
|
.aggregate-menu {
|
||||||
width: 360px; }
|
min-width: 21em; }
|
||||||
.aggregate-menu .popup-menu-icon {
|
.aggregate-menu .popup-menu-icon {
|
||||||
padding: 0 4px; }
|
padding: 0 4px; }
|
||||||
|
|
||||||
@ -834,7 +878,8 @@ StScrollBar {
|
|||||||
min-width: 470px; }
|
min-width: 470px; }
|
||||||
|
|
||||||
.nm-dialog-content {
|
.nm-dialog-content {
|
||||||
spacing: 20px; }
|
spacing: 20px;
|
||||||
|
padding: 24px; }
|
||||||
|
|
||||||
.nm-dialog-header-hbox {
|
.nm-dialog-header-hbox {
|
||||||
spacing: 10px; }
|
spacing: 10px; }
|
||||||
@ -1016,7 +1061,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.app-view-control:first-child {
|
.app-view-control:first-child {
|
||||||
@ -1335,10 +1380,9 @@ StScrollBar {
|
|||||||
color: white; }
|
color: white; }
|
||||||
.keyboard-key:focus {
|
.keyboard-key:focus {
|
||||||
color: #eeeeec;
|
color: #eeeeec;
|
||||||
border-color: #215d9c;
|
|
||||||
box-shadow: inset 0 1px #454f52;
|
|
||||||
text-shadow: 0 1px black;
|
text-shadow: 0 1px black;
|
||||||
icon-shadow: 0 1px black; }
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px #215d9c; }
|
||||||
.keyboard-key:hover, .keyboard-key:checked {
|
.keyboard-key:hover, .keyboard-key:checked {
|
||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
@ -1350,7 +1394,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #222728;
|
background-color: #222728;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.keyboard-key:grayed {
|
.keyboard-key:grayed {
|
||||||
@ -1443,7 +1487,7 @@ StScrollBar {
|
|||||||
color: white;
|
color: white;
|
||||||
border-color: rgba(0, 0, 0, 0.7);
|
border-color: rgba(0, 0, 0, 0.7);
|
||||||
background-color: #1c5187;
|
background-color: #1c5187;
|
||||||
box-shadow: none;
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none; }
|
icon-shadow: none; }
|
||||||
.login-dialog .modal-dialog-button:default:insensitive {
|
.login-dialog .modal-dialog-button:default:insensitive {
|
||||||
|
File diff suppressed because it is too large
Load Diff
Before (image error) Size: 26 KiB After (image error) Size: 98 KiB |
133
data/theme/toggle-off-hc.svg
Normal file
133
data/theme/toggle-off-hc.svg
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="48"
|
||||||
|
height="22"
|
||||||
|
id="svg2857"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="toggle-off-hc.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2859">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective2865" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2843"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="spiro"
|
||||||
|
id="path-effect77541-4"
|
||||||
|
is_visible="true" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#000000"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="-6.1820581"
|
||||||
|
inkscape:cy="-16.463788"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g37994"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1364"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
showborder="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid12954"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2862">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-444.64286,-781.36218)">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||||
|
id="g37994">
|
||||||
|
<g
|
||||||
|
transform="matrix(1.5323214,0,0,1.2413968,-324.76058,489.69039)"
|
||||||
|
id="toggle-off"
|
||||||
|
inkscape:label="#g8477">
|
||||||
|
<circle
|
||||||
|
cy="1033.993"
|
||||||
|
cx="571.95966"
|
||||||
|
id="path8444"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
r="7" />
|
||||||
|
<rect
|
||||||
|
ry="2.0108337"
|
||||||
|
rx="1.9562569"
|
||||||
|
y="1031.9885"
|
||||||
|
x="565.0083"
|
||||||
|
height="4.0216675"
|
||||||
|
width="34.850178"
|
||||||
|
id="rect8461"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,491.16456)"
|
||||||
|
id="toggle-on"
|
||||||
|
inkscape:label="#g8481">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="rect8475"
|
||||||
|
width="34.850178"
|
||||||
|
height="4.0216675"
|
||||||
|
x="565.0083"
|
||||||
|
y="1070.9279"
|
||||||
|
rx="1.9562569"
|
||||||
|
ry="2.0108337" />
|
||||||
|
<circle
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="circle8463"
|
||||||
|
cx="-591.0213"
|
||||||
|
cy="1072.9402"
|
||||||
|
r="9" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After (image error) Size: 6.1 KiB |
113
data/theme/toggle-on-hc.svg
Normal file
113
data/theme/toggle-on-hc.svg
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="48"
|
||||||
|
height="22"
|
||||||
|
id="svg2857"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="toggle-on-hc.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2859">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective2865" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2843"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="spiro"
|
||||||
|
id="path-effect77541-4"
|
||||||
|
is_visible="true" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#000000"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="-222.95215"
|
||||||
|
inkscape:cy="3.9378433"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="g37994"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="2560"
|
||||||
|
inkscape:window-height="1364"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
borderlayer="true"
|
||||||
|
inkscape:showpageshadow="false"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
showborder="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid12954"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2862">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-444.64286,-781.36218)">
|
||||||
|
<g
|
||||||
|
transform="matrix(0.6526046,0,0,0.80554422,99.592644,-636.32172)"
|
||||||
|
id="g37994">
|
||||||
|
<g
|
||||||
|
transform="matrix(1.5323214,0,0,1.2413968,-324.85635,441.50868)"
|
||||||
|
id="toggle-on"
|
||||||
|
inkscape:label="#g8481">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="rect8475"
|
||||||
|
width="34.850178"
|
||||||
|
height="4.0216675"
|
||||||
|
x="565.0083"
|
||||||
|
y="1070.9279"
|
||||||
|
rx="1.9562569"
|
||||||
|
ry="2.0108337" />
|
||||||
|
<circle
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||||
|
id="circle8463"
|
||||||
|
cx="-591.0213"
|
||||||
|
cy="1072.9402"
|
||||||
|
r="9" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After (image error) Size: 4.4 KiB |
@ -14,7 +14,7 @@
|
|||||||
height="22"
|
height="22"
|
||||||
id="svg2857"
|
id="svg2857"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.48.5 r10040"
|
inkscape:version="0.91 r13725"
|
||||||
sodipodi:docname="toggle-on-intl.svg">
|
sodipodi:docname="toggle-on-intl.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs2859">
|
id="defs2859">
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<stop
|
<stop
|
||||||
id="stop77465"
|
id="stop77465"
|
||||||
offset="1"
|
offset="1"
|
||||||
style="stop-color:#204a87;stop-opacity:1" />
|
style="stop-color:#205b9a;stop-opacity:1" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
@ -88,14 +88,14 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="32"
|
inkscape:zoom="1"
|
||||||
inkscape:cx="17.255148"
|
inkscape:cx="37.410841"
|
||||||
inkscape:cy="8.9252639"
|
inkscape:cy="16.009314"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="g37994"
|
inkscape:current-layer="g37994"
|
||||||
showgrid="true"
|
showgrid="false"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="2560"
|
||||||
inkscape:window-height="1375"
|
inkscape:window-height="1376"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
|
Before (image error) Size: 6.8 KiB After (image error) Size: 6.8 KiB |
@ -14,7 +14,7 @@
|
|||||||
height="22"
|
height="22"
|
||||||
id="svg2857"
|
id="svg2857"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.48.5 r10040"
|
inkscape:version="0.91 r13725"
|
||||||
sodipodi:docname="toggle-on-us.svg">
|
sodipodi:docname="toggle-on-us.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs2859">
|
id="defs2859">
|
||||||
@ -32,28 +32,6 @@
|
|||||||
inkscape:vp_y="0 : 1000 : 0"
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
inkscape:vp_x="0 : 0.5 : 1"
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
sodipodi:type="inkscape:persp3d" />
|
sodipodi:type="inkscape:persp3d" />
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient77461"
|
|
||||||
id="linearGradient77551"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(1.3066667,0,0,1,-841.64667,-483)"
|
|
||||||
x1="1164.7644"
|
|
||||||
y1="962.93695"
|
|
||||||
x2="1164.7644"
|
|
||||||
y2="970.51404" />
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient77461"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
id="stop77463"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#182f4c;stop-opacity:1" />
|
|
||||||
<stop
|
|
||||||
id="stop77465"
|
|
||||||
offset="1"
|
|
||||||
style="stop-color:#204a87;stop-opacity:1" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
<linearGradient
|
||||||
inkscape:collect="always"
|
inkscape:collect="always"
|
||||||
xlink:href="#linearGradient76469-7-7-4"
|
xlink:href="#linearGradient76469-7-7-4"
|
||||||
@ -80,6 +58,38 @@
|
|||||||
effect="spiro"
|
effect="spiro"
|
||||||
id="path-effect77541-4"
|
id="path-effect77541-4"
|
||||||
is_visible="true" />
|
is_visible="true" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient77461-1"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
id="stop77463-1"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#182f4c;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
id="stop77465-4"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#205b9a;stop-opacity:1" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient77461-1"
|
||||||
|
id="linearGradient77551-6-5"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.8527367,0,0,0.80554422,-969.41608,-778.00299)"
|
||||||
|
x1="1164.7644"
|
||||||
|
y1="962.93695"
|
||||||
|
x2="1164.7644"
|
||||||
|
y2="970.51404" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient77461-1"
|
||||||
|
id="linearGradient11198"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3066667,0,0,1,-1066.3709,794.25325)"
|
||||||
|
x1="1322.5831"
|
||||||
|
y1="-312.51855"
|
||||||
|
x2="1322.5831"
|
||||||
|
y2="-306.53461" />
|
||||||
</defs>
|
</defs>
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
id="base"
|
id="base"
|
||||||
@ -89,13 +99,13 @@
|
|||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1"
|
inkscape:zoom="1"
|
||||||
inkscape:cx="33.380898"
|
inkscape:cx="-26.798898"
|
||||||
inkscape:cy="6.9658271"
|
inkscape:cy="5.3753009"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="g37994"
|
inkscape:current-layer="g37994"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="2560"
|
inkscape:window-width="2560"
|
||||||
inkscape:window-height="1375"
|
inkscape:window-height="1376"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
@ -152,7 +162,7 @@
|
|||||||
height="25"
|
height="25"
|
||||||
width="98"
|
width="98"
|
||||||
id="rect38000"
|
id="rect38000"
|
||||||
style="color:#000000;fill:url(#linearGradient77551);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
style="color:#000000;fill:url(#linearGradient11198);fill-opacity:1;fill-rule:nonzero;stroke:#182f4c;stroke-width:1.37920964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="translate(2.0625,-2)"
|
transform="translate(2.0625,-2)"
|
||||||
|
Before (image error) Size: 7.0 KiB After (image error) Size: 7.7 KiB |
@ -35,7 +35,6 @@
|
|||||||
<xi:include href="xml/st-bin.xml"/>
|
<xi:include href="xml/st-bin.xml"/>
|
||||||
<xi:include href="xml/st-box-layout.xml"/>
|
<xi:include href="xml/st-box-layout.xml"/>
|
||||||
<xi:include href="xml/st-scroll-view.xml"/>
|
<xi:include href="xml/st-scroll-view.xml"/>
|
||||||
<xi:include href="xml/st-table.xml"/>
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="styling">
|
<chapter id="styling">
|
||||||
|
@ -14,7 +14,7 @@ const ShellEntry = imports.ui.shellEntry;
|
|||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const UserWidget = imports.ui.userWidget;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
const DEFAULT_BUTTON_WELL_ICON_SIZE = 24;
|
const DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
|
||||||
const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0;
|
const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0;
|
||||||
const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3;
|
const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3;
|
||||||
|
|
||||||
@ -258,6 +258,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onVerificationComplete: function() {
|
_onVerificationComplete: function() {
|
||||||
|
this.setActorInDefaultButtonWell(null);
|
||||||
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
|
||||||
this.cancelButton.reactive = false;
|
this.cancelButton.reactive = false;
|
||||||
},
|
},
|
||||||
@ -281,6 +282,12 @@ const AuthPrompt = new Lang.Class({
|
|||||||
if (oldActor)
|
if (oldActor)
|
||||||
Tweener.removeTweens(oldActor);
|
Tweener.removeTweens(oldActor);
|
||||||
|
|
||||||
|
let wasSpinner;
|
||||||
|
if (oldActor == this._spinner.actor)
|
||||||
|
wasSpinner = true;
|
||||||
|
else
|
||||||
|
wasSpinner = false;
|
||||||
|
|
||||||
let isSpinner;
|
let isSpinner;
|
||||||
if (actor == this._spinner.actor)
|
if (actor == this._spinner.actor)
|
||||||
isSpinner = true;
|
isSpinner = true;
|
||||||
@ -290,6 +297,11 @@ const AuthPrompt = new Lang.Class({
|
|||||||
if (this._defaultButtonWellActor != actor && oldActor) {
|
if (this._defaultButtonWellActor != actor && oldActor) {
|
||||||
if (!animate) {
|
if (!animate) {
|
||||||
oldActor.opacity = 0;
|
oldActor.opacity = 0;
|
||||||
|
|
||||||
|
if (wasSpinner) {
|
||||||
|
if (this._spinner)
|
||||||
|
this._spinner.stop();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Tweener.addTween(oldActor,
|
Tweener.addTween(oldActor,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
@ -298,7 +310,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
transition: 'linear',
|
transition: 'linear',
|
||||||
onCompleteScope: this,
|
onCompleteScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
if (isSpinner) {
|
if (wasSpinner) {
|
||||||
if (this._spinner)
|
if (this._spinner)
|
||||||
this._spinner.stop();
|
this._spinner.stop();
|
||||||
}
|
}
|
||||||
@ -401,7 +413,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
updateSensitivity: function(sensitive) {
|
updateSensitivity: function(sensitive) {
|
||||||
this._updateNextButtonSensitivity(sensitive);
|
this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0);
|
||||||
this._entry.reactive = sensitive;
|
this._entry.reactive = sensitive;
|
||||||
this._entry.clutter_text.editable = sensitive;
|
this._entry.clutter_text.editable = sensitive;
|
||||||
},
|
},
|
||||||
@ -432,8 +444,9 @@ const AuthPrompt = new Lang.Class({
|
|||||||
let oldStatus = this.verificationStatus;
|
let oldStatus = this.verificationStatus;
|
||||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||||
this.cancelButton.reactive = true;
|
this.cancelButton.reactive = true;
|
||||||
|
this.nextButton.label = _("Next");
|
||||||
|
|
||||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
if (this._userVerifier)
|
||||||
this._userVerifier.cancel();
|
this._userVerifier.cancel();
|
||||||
|
|
||||||
this._queryingService = null;
|
this._queryingService = null;
|
||||||
@ -488,6 +501,7 @@ const AuthPrompt = new Lang.Class({
|
|||||||
|
|
||||||
finish: function(onComplete) {
|
finish: function(onComplete) {
|
||||||
if (!this._userVerifier.hasPendingMessages) {
|
if (!this._userVerifier.hasPendingMessages) {
|
||||||
|
this._userVerifier.clear();
|
||||||
onComplete();
|
onComplete();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -495,12 +509,13 @@ const AuthPrompt = new Lang.Class({
|
|||||||
let signalId = this._userVerifier.connect('no-more-messages',
|
let signalId = this._userVerifier.connect('no-more-messages',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._userVerifier.disconnect(signalId);
|
this._userVerifier.disconnect(signalId);
|
||||||
|
this._userVerifier.clear();
|
||||||
onComplete();
|
onComplete();
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.reset();
|
this.reset();
|
||||||
|
@ -16,6 +16,34 @@
|
|||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In order for transformation animations to look good, they need to be
|
||||||
|
* incremental and have some order to them (e.g., fade out hidden items,
|
||||||
|
* then shrink to close the void left over). Chaining animations in this way can
|
||||||
|
* be error-prone and wordy using just Tweener callbacks.
|
||||||
|
*
|
||||||
|
* The classes in this file help with this:
|
||||||
|
*
|
||||||
|
* - Task. encapsulates schedulable work to be run in a specific scope.
|
||||||
|
*
|
||||||
|
* - ConsecutiveBatch. runs a series of tasks in order and completes
|
||||||
|
* when the last in the series finishes.
|
||||||
|
*
|
||||||
|
* - ConcurrentBatch. runs a set of tasks at the same time and completes
|
||||||
|
* when the last to finish completes.
|
||||||
|
*
|
||||||
|
* - Hold. prevents a batch from completing the pending task until
|
||||||
|
* the hold is released.
|
||||||
|
*
|
||||||
|
* The tasks associated with a batch are specified in a list at batch
|
||||||
|
* construction time as either task objects or plain functions.
|
||||||
|
* Batches are task objects, themselves, so they can be nested.
|
||||||
|
*
|
||||||
|
* These classes aren't specific to GDM, but were found to be unintuitive and so
|
||||||
|
* are not used elsewhere. These APIs may ultimately get dropped entirely and
|
||||||
|
* replaced by something else.
|
||||||
|
*/
|
||||||
|
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
@ -535,6 +535,9 @@ const LoginDialog = new Lang.Class({
|
|||||||
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
|
||||||
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
|
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
|
||||||
|
|
||||||
|
natWidth = Math.min(natWidth, dialogBox.x2 - dialogBox.x1);
|
||||||
|
natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1);
|
||||||
|
|
||||||
actorBox.x1 = Math.floor(centerX - natWidth / 2);
|
actorBox.x1 = Math.floor(centerX - natWidth / 2);
|
||||||
actorBox.y1 = Math.floor(centerY - natHeight / 2);
|
actorBox.y1 = Math.floor(centerY - natHeight / 2);
|
||||||
actorBox.x2 = actorBox.x1 + natWidth;
|
actorBox.x2 = actorBox.x1 + natWidth;
|
||||||
@ -584,7 +587,14 @@ const LoginDialog = new Lang.Class({
|
|||||||
// try a different layout, or if we have what extra space we
|
// try a different layout, or if we have what extra space we
|
||||||
// can hand out
|
// can hand out
|
||||||
if (bannerAllocation) {
|
if (bannerAllocation) {
|
||||||
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
|
let bannerSpace;
|
||||||
|
|
||||||
|
if (authPromptAllocation)
|
||||||
|
bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1;
|
||||||
|
else
|
||||||
|
bannerSpace = 0;
|
||||||
|
|
||||||
|
let leftOverYSpace = bannerSpace - bannerHeight;
|
||||||
|
|
||||||
if (leftOverYSpace > 0) {
|
if (leftOverYSpace > 0) {
|
||||||
// First figure out how much left over space is up top
|
// First figure out how much left over space is up top
|
||||||
@ -867,7 +877,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_loginScreenSessionActivated: function() {
|
_loginScreenSessionActivated: function() {
|
||||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
@ -884,7 +894,8 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
onUpdateScope: this,
|
onUpdateScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
this._authPrompt.reset();
|
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||||
|
this._authPrompt.reset();
|
||||||
},
|
},
|
||||||
onCompleteScope: this });
|
onCompleteScope: this });
|
||||||
},
|
},
|
||||||
@ -913,11 +924,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
onUpdateScope: this,
|
onUpdateScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
let id = Mainloop.idle_add(Lang.bind(this, function() {
|
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
|
||||||
return GLib.SOURCE_REMOVE;
|
|
||||||
}));
|
|
||||||
GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync');
|
|
||||||
},
|
},
|
||||||
onCompleteScope: this });
|
onCompleteScope: this });
|
||||||
},
|
},
|
||||||
|
@ -134,7 +134,7 @@ const LoginManagerSystemd = new Lang.Class({
|
|||||||
if (error)
|
if (error)
|
||||||
asyncCallback(false);
|
asyncCallback(false);
|
||||||
else
|
else
|
||||||
asyncCallback(result[0] != 'no');
|
asyncCallback(result[0] != 'no' && result[0] != 'na');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -448,8 +448,6 @@ const AppSwitcher = new Lang.Class({
|
|||||||
});
|
});
|
||||||
if (appIcon.cachedWindows.length > 0)
|
if (appIcon.cachedWindows.length > 0)
|
||||||
this._addIcon(appIcon);
|
this._addIcon(appIcon);
|
||||||
else if (workspace == null)
|
|
||||||
throw new Error('%s appears to be running, but doesn\'t have any windows'.format(appIcon.app.get_name()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._curApp = -1;
|
this._curApp = -1;
|
||||||
|
@ -7,7 +7,7 @@ const St = imports.gi.St;
|
|||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const Atk = imports.gi.Atk;
|
const Atk = imports.gi.Atk;
|
||||||
|
|
||||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
|
const ANIMATED_ICON_UPDATE_TIMEOUT = 16;
|
||||||
|
|
||||||
const Animation = new Lang.Class({
|
const Animation = new Lang.Class({
|
||||||
Name: 'Animation',
|
Name: 'Animation',
|
||||||
@ -33,7 +33,7 @@ const Animation = new Lang.Class({
|
|||||||
if (this._frame == 0)
|
if (this._frame == 0)
|
||||||
this._showFrame(0);
|
this._showFrame(0);
|
||||||
|
|
||||||
this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update));
|
this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, Lang.bind(this, this._update));
|
||||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
|
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,6 +500,11 @@ const AllView = new Lang.Class({
|
|||||||
|
|
||||||
_loadApps: function() {
|
_loadApps: function() {
|
||||||
let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
|
let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
|
||||||
|
try {
|
||||||
|
let id = appInfo.get_id(); // catch invalid file encodings
|
||||||
|
} catch(e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return appInfo.should_show();
|
return appInfo.should_show();
|
||||||
}).map(function(app) {
|
}).map(function(app) {
|
||||||
return app.get_id();
|
return app.get_id();
|
||||||
@ -753,7 +758,8 @@ const AllView = new Lang.Class({
|
|||||||
let fadeOffset = Math.min(this._grid.topPadding,
|
let fadeOffset = Math.min(this._grid.topPadding,
|
||||||
this._grid.bottomPadding);
|
this._grid.bottomPadding);
|
||||||
this._scrollView.update_fade_effect(fadeOffset, 0);
|
this._scrollView.update_fade_effect(fadeOffset, 0);
|
||||||
this._scrollView.get_effect('fade').fade_edges = true;
|
if (fadeOffset > 0)
|
||||||
|
this._scrollView.get_effect('fade').fade_edges = true;
|
||||||
|
|
||||||
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
||||||
this._adjustment.value = 0;
|
this._adjustment.value = 0;
|
||||||
@ -1060,7 +1066,7 @@ const AppSearchProvider = new Lang.Class({
|
|||||||
|
|
||||||
getInitialResultSet: function(terms, callback, cancellable) {
|
getInitialResultSet: function(terms, callback, cancellable) {
|
||||||
let query = terms.join(' ');
|
let query = terms.join(' ');
|
||||||
let groups = Gio.DesktopAppInfo.search(query);
|
let groups = Shell.AppSystem.search(query);
|
||||||
let usage = Shell.AppUsage.get_default();
|
let usage = Shell.AppUsage.get_default();
|
||||||
let results = [];
|
let results = [];
|
||||||
groups.forEach(function(group) {
|
groups.forEach(function(group) {
|
||||||
@ -1289,7 +1295,10 @@ const FolderIcon = new Lang.Class({
|
|||||||
if (!_listsIntersect(folderCategories, appCategories))
|
if (!_listsIntersect(folderCategories, appCategories))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
addAppId(appInfo.get_id());
|
try {
|
||||||
|
addAppId(appInfo.get_id()); // catch invalid file encodings
|
||||||
|
} catch(e) {
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.actor.visible = this.view.getAllItems().length > 0;
|
this.actor.visible = this.view.getAllItems().length > 0;
|
||||||
|
@ -144,6 +144,7 @@ const BackgroundCache = new Lang.Class({
|
|||||||
this._pendingFileLoads = [];
|
this._pendingFileLoads = [];
|
||||||
this._fileMonitors = {};
|
this._fileMonitors = {};
|
||||||
this._backgroundSources = {};
|
this._backgroundSources = {};
|
||||||
|
this._animations = {};
|
||||||
},
|
},
|
||||||
|
|
||||||
monitorFile: function(file) {
|
monitorFile: function(file) {
|
||||||
@ -162,12 +163,13 @@ const BackgroundCache = new Lang.Class({
|
|||||||
|
|
||||||
getAnimation: function(params) {
|
getAnimation: function(params) {
|
||||||
params = Params.parse(params, { file: null,
|
params = Params.parse(params, { file: null,
|
||||||
|
settingsSchema: null,
|
||||||
onLoaded: null });
|
onLoaded: null });
|
||||||
|
|
||||||
if (_fileEqual0(this._animationFile, params.file)) {
|
if (this._animations[params.settingsSchema] && _fileEqual0(this._animationFile, params.file)) {
|
||||||
if (params.onLoaded) {
|
if (params.onLoaded) {
|
||||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||||
params.onLoaded(this._animation);
|
params.onLoaded(this._animations[params.settingsSchema]);
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
}));
|
}));
|
||||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||||
@ -178,12 +180,11 @@ const BackgroundCache = new Lang.Class({
|
|||||||
let animation = new Animation({ file: params.file });
|
let animation = new Animation({ file: params.file });
|
||||||
|
|
||||||
animation.load(Lang.bind(this, function() {
|
animation.load(Lang.bind(this, function() {
|
||||||
this._animationFile = params.file;
|
this._animations[params.settingsSchema] = animation;
|
||||||
this._animation = animation;
|
|
||||||
|
|
||||||
if (params.onLoaded) {
|
if (params.onLoaded) {
|
||||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
|
||||||
params.onLoaded(this._animation);
|
params.onLoaded(this._animations[params.settingsSchema]);
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
}));
|
}));
|
||||||
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
|
||||||
@ -403,17 +404,18 @@ const Background = new Lang.Class({
|
|||||||
|
|
||||||
_loadAnimation: function(file) {
|
_loadAnimation: function(file) {
|
||||||
this._cache.getAnimation({ file: file,
|
this._cache.getAnimation({ file: file,
|
||||||
onLoaded: Lang.bind(this, function(animation) {
|
settingsSchema: this._settings.schema_id,
|
||||||
this._animation = animation;
|
onLoaded: Lang.bind(this, function(animation) {
|
||||||
|
this._animation = animation;
|
||||||
|
|
||||||
if (!this._animation || this._cancellable.is_cancelled()) {
|
if (!this._animation || this._cancellable.is_cancelled()) {
|
||||||
this._setLoaded();
|
this._setLoaded();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._updateAnimation();
|
this._updateAnimation();
|
||||||
this._watchFile(file);
|
this._watchFile(file);
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -16,9 +16,10 @@ const BackgroundMenu = new Lang.Class({
|
|||||||
_init: function(layoutManager) {
|
_init: function(layoutManager) {
|
||||||
this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
|
this.parent(layoutManager.dummyCursor, 0, St.Side.TOP);
|
||||||
|
|
||||||
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
|
|
||||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
||||||
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
|
this.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
|
||||||
|
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
this.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
|
||||||
|
this.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
|
||||||
|
|
||||||
this.actor.add_style_class_name('background-menu');
|
this.actor.add_style_class_name('background-menu');
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
|||||||
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
const SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||||
const ELLIPSIS_CHAR = '\u2026';
|
const ELLIPSIS_CHAR = '\u2026';
|
||||||
|
|
||||||
|
const MESSAGE_ICON_SIZE = 32;
|
||||||
|
|
||||||
const MESSAGE_ANIMATION_TIME = 0.1;
|
const MESSAGE_ANIMATION_TIME = 0.1;
|
||||||
|
|
||||||
const DEFAULT_EXPAND_LINES = 6;
|
const DEFAULT_EXPAND_LINES = 6;
|
||||||
@ -976,7 +978,6 @@ const Message = new Lang.Class({
|
|||||||
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
|
this._iconBin = new St.Bin({ style_class: 'message-icon-bin',
|
||||||
y_expand: true,
|
y_expand: true,
|
||||||
visible: false });
|
visible: false });
|
||||||
this._iconBin.set_y_align(Clutter.ActorAlign.START);
|
|
||||||
hbox.add_actor(this._iconBin);
|
hbox.add_actor(this._iconBin);
|
||||||
|
|
||||||
let contentBox = new St.BoxLayout({ style_class: 'message-content',
|
let contentBox = new St.BoxLayout({ style_class: 'message-content',
|
||||||
@ -1229,7 +1230,7 @@ const NotificationMessage = new Lang.Class({
|
|||||||
this._closed = true;
|
this._closed = true;
|
||||||
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
||||||
}));
|
}));
|
||||||
notification.connect('destroy', Lang.bind(this,
|
this._destroyId = notification.connect('destroy', Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
if (!this._closed)
|
if (!this._closed)
|
||||||
this.close();
|
this.close();
|
||||||
@ -1240,9 +1241,10 @@ const NotificationMessage = new Lang.Class({
|
|||||||
|
|
||||||
_getIcon: function() {
|
_getIcon: function() {
|
||||||
if (this.notification.gicon)
|
if (this.notification.gicon)
|
||||||
return new St.Icon({ gicon: this.notification.gicon, icon_size: 48 });
|
return new St.Icon({ gicon: this.notification.gicon,
|
||||||
|
icon_size: MESSAGE_ICON_SIZE });
|
||||||
else
|
else
|
||||||
return this.notification.source.createIcon(48);
|
return this.notification.source.createIcon(MESSAGE_ICON_SIZE);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onUpdated: function(n, clear) {
|
_onUpdated: function(n, clear) {
|
||||||
@ -1260,6 +1262,10 @@ const NotificationMessage = new Lang.Class({
|
|||||||
if (this._updatedId)
|
if (this._updatedId)
|
||||||
this.notification.disconnect(this._updatedId);
|
this.notification.disconnect(this._updatedId);
|
||||||
this._updatedId = 0;
|
this._updatedId = 0;
|
||||||
|
|
||||||
|
if (this._destroyId)
|
||||||
|
this.notification.disconnect(this._destroyId);
|
||||||
|
this._destroyId = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -325,9 +325,6 @@ const AutorunNotification = new Lang.Class({
|
|||||||
|
|
||||||
this._manager = manager;
|
this._manager = manager;
|
||||||
this._mount = source.mount;
|
this._mount = source.mount;
|
||||||
|
|
||||||
// set the notification to urgent, so that it expands out
|
|
||||||
this.setUrgency(MessageTray.Urgency.CRITICAL);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
createBanner: function() {
|
createBanner: function() {
|
||||||
|
@ -9,9 +9,15 @@ const Gio = imports.gi.Gio;
|
|||||||
const GObject = imports.gi.GObject;
|
const GObject = imports.gi.GObject;
|
||||||
const Gcr = imports.gi.Gcr;
|
const Gcr = imports.gi.Gcr;
|
||||||
|
|
||||||
|
const Animation = imports.ui.animation;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const CheckBox = imports.ui.checkBox;
|
const CheckBox = imports.ui.checkBox;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
const WORK_SPINNER_ICON_SIZE = 16;
|
||||||
|
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
||||||
|
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
||||||
|
|
||||||
const KeyringDialog = new Lang.Class({
|
const KeyringDialog = new Lang.Class({
|
||||||
Name: 'KeyringDialog',
|
Name: 'KeyringDialog',
|
||||||
@ -58,27 +64,47 @@ const KeyringDialog = new Lang.Class({
|
|||||||
{ y_fill: true,
|
{ y_fill: true,
|
||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
|
this._workSpinner = null;
|
||||||
this._controlTable = null;
|
this._controlTable = null;
|
||||||
|
|
||||||
|
|
||||||
this._cancelButton = this.addButton({ label: '',
|
this._cancelButton = this.addButton({ label: '',
|
||||||
action: Lang.bind(this, this._onCancelButton),
|
action: Lang.bind(this, this._onCancelButton),
|
||||||
key: Clutter.Escape },
|
key: Clutter.Escape });
|
||||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
|
||||||
this.placeSpinner({ expand: false,
|
|
||||||
x_fill: false,
|
|
||||||
y_fill: false,
|
|
||||||
x_align: St.Align.END,
|
|
||||||
y_align: St.Align.MIDDLE });
|
|
||||||
this._continueButton = this.addButton({ label: '',
|
this._continueButton = this.addButton({ label: '',
|
||||||
action: Lang.bind(this, this._onContinueButton),
|
action: Lang.bind(this, this._onContinueButton),
|
||||||
default: true },
|
default: true });
|
||||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
|
||||||
|
|
||||||
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||||
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_setWorking: function(working) {
|
||||||
|
if (!this._workSpinner)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Tweener.removeTweens(this._workSpinner.actor);
|
||||||
|
if (working) {
|
||||||
|
this._workSpinner.play();
|
||||||
|
Tweener.addTween(this._workSpinner.actor,
|
||||||
|
{ opacity: 255,
|
||||||
|
delay: WORK_SPINNER_ANIMATION_DELAY,
|
||||||
|
time: WORK_SPINNER_ANIMATION_TIME,
|
||||||
|
transition: 'linear'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Tweener.addTween(this._workSpinner.actor,
|
||||||
|
{ opacity: 0,
|
||||||
|
time: WORK_SPINNER_ANIMATION_TIME,
|
||||||
|
transition: 'linear',
|
||||||
|
onCompleteScope: this,
|
||||||
|
onComplete: function() {
|
||||||
|
if (this._workSpinner)
|
||||||
|
this._workSpinner.stop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_buildControlTable: function() {
|
_buildControlTable: function() {
|
||||||
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
|
let layout = new Clutter.GridLayout({ orientation: Clutter.Orientation.VERTICAL });
|
||||||
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
let table = new St.Widget({ style_class: 'keyring-dialog-control-table',
|
||||||
@ -101,15 +127,22 @@ const KeyringDialog = new Lang.Class({
|
|||||||
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
||||||
|
|
||||||
|
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||||
|
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||||
|
this._workSpinner.actor.opacity = 0;
|
||||||
|
|
||||||
if (rtl) {
|
if (rtl) {
|
||||||
layout.attach(this._passwordEntry, 0, row, 1, 1);
|
layout.attach(this._workSpinner.actor, 0, row, 1, 1);
|
||||||
layout.attach(label, 1, row, 1, 1);
|
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
||||||
|
layout.attach(label, 2, row, 1, 1);
|
||||||
} else {
|
} else {
|
||||||
layout.attach(label, 0, row, 1, 1);
|
layout.attach(label, 0, row, 1, 1);
|
||||||
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
layout.attach(this._passwordEntry, 1, row, 1, 1);
|
||||||
|
layout.attach(this._workSpinner.actor, 2, row, 1, 1);
|
||||||
}
|
}
|
||||||
row++;
|
row++;
|
||||||
} else {
|
} else {
|
||||||
|
this._workSpinner = null;
|
||||||
this._passwordEntry = null;
|
this._passwordEntry = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,7 +211,7 @@ const KeyringDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._continueButton.can_focus = sensitive;
|
this._continueButton.can_focus = sensitive;
|
||||||
this._continueButton.reactive = sensitive;
|
this._continueButton.reactive = sensitive;
|
||||||
this.setWorking(!sensitive);
|
this._setWorking(!sensitive);
|
||||||
},
|
},
|
||||||
|
|
||||||
_ensureOpen: function() {
|
_ensureOpen: function() {
|
||||||
|
@ -13,13 +13,19 @@ const Mainloop = imports.mainloop;
|
|||||||
const Polkit = imports.gi.Polkit;
|
const Polkit = imports.gi.Polkit;
|
||||||
const PolkitAgent = imports.gi.PolkitAgent;
|
const PolkitAgent = imports.gi.PolkitAgent;
|
||||||
|
|
||||||
|
const Animation = imports.ui.animation;
|
||||||
const Components = imports.ui.components;
|
const Components = imports.ui.components;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const UserWidget = imports.ui.userWidget;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const DIALOG_ICON_SIZE = 48;
|
const DIALOG_ICON_SIZE = 48;
|
||||||
|
|
||||||
|
const WORK_SPINNER_ICON_SIZE = 16;
|
||||||
|
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
||||||
|
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
||||||
|
|
||||||
const AuthenticationDialog = new Lang.Class({
|
const AuthenticationDialog = new Lang.Class({
|
||||||
Name: 'AuthenticationDialog',
|
Name: 'AuthenticationDialog',
|
||||||
Extends: ModalDialog.ModalDialog,
|
Extends: ModalDialog.ModalDialog,
|
||||||
@ -136,6 +142,13 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
|
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
|
||||||
this._passwordBox.add(this._passwordEntry,
|
this._passwordBox.add(this._passwordEntry,
|
||||||
{ expand: true });
|
{ expand: true });
|
||||||
|
|
||||||
|
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||||
|
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
||||||
|
this._workSpinner.actor.opacity = 0;
|
||||||
|
|
||||||
|
this._passwordBox.add(this._workSpinner.actor);
|
||||||
|
|
||||||
this.setInitialKeyFocus(this._passwordEntry);
|
this.setInitialKeyFocus(this._passwordEntry);
|
||||||
this._passwordBox.hide();
|
this._passwordBox.hide();
|
||||||
|
|
||||||
@ -165,17 +178,10 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._cancelButton = this.addButton({ label: _("Cancel"),
|
this._cancelButton = this.addButton({ label: _("Cancel"),
|
||||||
action: Lang.bind(this, this.cancel),
|
action: Lang.bind(this, this.cancel),
|
||||||
key: Clutter.Escape },
|
key: Clutter.Escape });
|
||||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
|
||||||
this.placeSpinner({ expand: false,
|
|
||||||
x_fill: false,
|
|
||||||
y_fill: false,
|
|
||||||
x_align: St.Align.END,
|
|
||||||
y_align: St.Align.MIDDLE });
|
|
||||||
this._okButton = this.addButton({ label: _("Authenticate"),
|
this._okButton = this.addButton({ label: _("Authenticate"),
|
||||||
action: Lang.bind(this, this._onAuthenticateButtonPressed),
|
action: Lang.bind(this, this._onAuthenticateButtonPressed),
|
||||||
default: true },
|
default: true });
|
||||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
|
||||||
|
|
||||||
this._doneEmitted = false;
|
this._doneEmitted = false;
|
||||||
|
|
||||||
@ -183,6 +189,30 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
this._cookie = cookie;
|
this._cookie = cookie;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_setWorking: function(working) {
|
||||||
|
Tweener.removeTweens(this._workSpinner.actor);
|
||||||
|
if (working) {
|
||||||
|
this._workSpinner.play();
|
||||||
|
Tweener.addTween(this._workSpinner.actor,
|
||||||
|
{ opacity: 255,
|
||||||
|
delay: WORK_SPINNER_ANIMATION_DELAY,
|
||||||
|
time: WORK_SPINNER_ANIMATION_TIME,
|
||||||
|
transition: 'linear'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Tweener.addTween(this._workSpinner.actor,
|
||||||
|
{ opacity: 0,
|
||||||
|
time: WORK_SPINNER_ANIMATION_TIME,
|
||||||
|
transition: 'linear',
|
||||||
|
onCompleteScope: this,
|
||||||
|
onComplete: function() {
|
||||||
|
if (this._workSpinner)
|
||||||
|
this._workSpinner.stop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
performAuthentication: function() {
|
performAuthentication: function() {
|
||||||
this.destroySession();
|
this.destroySession();
|
||||||
this._session = new PolkitAgent.Session({ identity: this._identityToAuth,
|
this._session = new PolkitAgent.Session({ identity: this._identityToAuth,
|
||||||
@ -229,7 +259,7 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._okButton.can_focus = sensitive;
|
this._okButton.can_focus = sensitive;
|
||||||
this._okButton.reactive = sensitive;
|
this._okButton.reactive = sensitive;
|
||||||
this.setWorking(!sensitive);
|
this._setWorking(!sensitive);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onEntryActivate: function() {
|
_onEntryActivate: function() {
|
||||||
|
@ -303,6 +303,8 @@ const ChatSource = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_createPolicy: function() {
|
_createPolicy: function() {
|
||||||
|
if (this._account.protocol_name == 'irc')
|
||||||
|
return new MessageTray.NotificationApplicationPolicy('org.gnome.Polari');
|
||||||
return new MessageTray.NotificationApplicationPolicy('empathy');
|
return new MessageTray.NotificationApplicationPolicy('empathy');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -644,15 +644,14 @@ const Dash = new Lang.Class({
|
|||||||
let firstIcon = firstButton._delegate.icon;
|
let firstIcon = firstButton._delegate.icon;
|
||||||
|
|
||||||
let minHeight, natHeight;
|
let minHeight, natHeight;
|
||||||
|
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||||
|
|
||||||
// Enforce the current icon size during the size request
|
// Enforce the current icon size during the size request
|
||||||
firstIcon.setIconSize(this.iconSize);
|
firstIcon.icon.ensure_style();
|
||||||
|
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
|
||||||
|
firstIcon.icon.set_size(this.iconSize * scaleFactor, this.iconSize * scaleFactor);
|
||||||
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
||||||
|
firstIcon.icon.set_size(currentWidth, currentHeight);
|
||||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
|
||||||
let iconSizes = baseIconSizes.map(function(s) {
|
|
||||||
return s * scaleFactor;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Subtract icon padding and box spacing from the available height
|
// Subtract icon padding and box spacing from the available height
|
||||||
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
||||||
@ -660,6 +659,10 @@ const Dash = new Lang.Class({
|
|||||||
|
|
||||||
let availSize = availHeight / iconChildren.length;
|
let availSize = availHeight / iconChildren.length;
|
||||||
|
|
||||||
|
let iconSizes = baseIconSizes.map(function(s) {
|
||||||
|
return s * scaleFactor;
|
||||||
|
});
|
||||||
|
|
||||||
let newIconSize = baseIconSizes[0];
|
let newIconSize = baseIconSizes[0];
|
||||||
for (let i = 0; i < iconSizes.length; i++) {
|
for (let i = 0; i < iconSizes.length; i++) {
|
||||||
if (iconSizes[i] < availSize)
|
if (iconSizes[i] < availSize)
|
||||||
|
@ -357,8 +357,6 @@ const DateMenuButton = new Lang.Class({
|
|||||||
this._date.setDate(now);
|
this._date.setDate(now);
|
||||||
this._messageList.setDate(now);
|
this._messageList.setDate(now);
|
||||||
}
|
}
|
||||||
// Block notification banners while the menu is open
|
|
||||||
Main.messageTray.bannerBlocked = isOpen;
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Fill up the first column
|
// Fill up the first column
|
||||||
|
@ -81,7 +81,6 @@ function init() {
|
|||||||
|
|
||||||
// Miscellaneous monkeypatching
|
// Miscellaneous monkeypatching
|
||||||
_patchContainerClass(St.BoxLayout);
|
_patchContainerClass(St.BoxLayout);
|
||||||
_patchContainerClass(St.Table);
|
|
||||||
|
|
||||||
_patchLayoutClass(Clutter.TableLayout, { row_spacing: 'spacing-rows',
|
_patchLayoutClass(Clutter.TableLayout, { row_spacing: 'spacing-rows',
|
||||||
column_spacing: 'spacing-columns' });
|
column_spacing: 'spacing-columns' });
|
||||||
|
@ -24,9 +24,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
|
|||||||
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||||
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
||||||
|
|
||||||
const CURSOR_BUS_NAME = 'org.gnome.SettingsDaemon.Cursor';
|
|
||||||
const CURSOR_OBJECT_PATH = '/org/gnome/SettingsDaemon/Cursor';
|
|
||||||
|
|
||||||
const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon';
|
const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon';
|
||||||
const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon';
|
const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon';
|
||||||
|
|
||||||
@ -114,6 +111,35 @@ const Key = new Lang.Class({
|
|||||||
key.release();
|
key.release();
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}));
|
}));
|
||||||
|
button.connect('touch-event', Lang.bind(this,
|
||||||
|
function (actor, event) {
|
||||||
|
let device = event.get_device();
|
||||||
|
let sequence = event.get_event_sequence();
|
||||||
|
|
||||||
|
// 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 (!this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||||
|
device.sequence_grab(sequence, actor);
|
||||||
|
this._touchPressed = true;
|
||||||
|
key.press();
|
||||||
|
} else if (this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_END &&
|
||||||
|
device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||||
|
device.sequence_ungrab(sequence);
|
||||||
|
this._touchPressed = false;
|
||||||
|
key.release();
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
|
||||||
return button;
|
return button;
|
||||||
},
|
},
|
||||||
@ -178,9 +204,6 @@ const Keyboard = new Lang.Class({
|
|||||||
this._keyboardSettings.connect('changed', Lang.bind(this, this._sync));
|
this._keyboardSettings.connect('changed', Lang.bind(this, this._sync));
|
||||||
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA });
|
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA });
|
||||||
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync));
|
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync));
|
||||||
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
|
|
||||||
Lang.bind(this, this._sync),
|
|
||||||
Lang.bind(this, this._sync));
|
|
||||||
this._daemonProxy = null;
|
this._daemonProxy = null;
|
||||||
this._lastDeviceId = null;
|
this._lastDeviceId = null;
|
||||||
|
|
||||||
|
@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
// need to connect to 'destroy' too.
|
// need to connect to 'destroy' too.
|
||||||
|
|
||||||
this._trackedActors.push(actorData);
|
this._trackedActors.push(actorData);
|
||||||
|
this._updateActorVisibility(actorData);
|
||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
|
|||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateActorVisibility: function(actorData) {
|
||||||
|
if (!actorData.trackFullscreen)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let monitor = this.findMonitorForActor(actorData.actor);
|
||||||
|
actorData.actor.visible = !(global.window_group.visible &&
|
||||||
|
monitor &&
|
||||||
|
monitor.inFullscreen);
|
||||||
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||||
|
|
||||||
global.window_group.visible = windowsVisible;
|
global.window_group.visible = windowsVisible;
|
||||||
global.top_window_group.visible = windowsVisible;
|
global.top_window_group.visible = windowsVisible;
|
||||||
|
|
||||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||||
let actorData = this._trackedActors[i], visible;
|
|
||||||
if (!actorData.trackFullscreen)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!windowsVisible)
|
|
||||||
visible = true;
|
|
||||||
else if (this.findMonitorForActor(actorData.actor).inFullscreen)
|
|
||||||
visible = false;
|
|
||||||
else
|
|
||||||
visible = true;
|
|
||||||
actorData.actor.visible = visible;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getWorkAreaForMonitor: function(monitorIndex) {
|
getWorkAreaForMonitor: function(monitorIndex) {
|
||||||
@ -1316,8 +1315,11 @@ const PressureBarrier = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onBarrierLeft: function(barrier, event) {
|
_onBarrierLeft: function(barrier, event) {
|
||||||
this._reset();
|
barrier._isHit = false;
|
||||||
this._isTriggered = false;
|
if (this._barriers.every(function(b) { return !b._isHit; })) {
|
||||||
|
this._reset();
|
||||||
|
this._isTriggered = false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_trigger: function() {
|
_trigger: function() {
|
||||||
@ -1327,6 +1329,8 @@ const PressureBarrier = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onBarrierHit: function(barrier, event) {
|
_onBarrierHit: function(barrier, event) {
|
||||||
|
barrier._isHit = true;
|
||||||
|
|
||||||
// If we've triggered the barrier, wait until the pointer has the
|
// If we've triggered the barrier, wait until the pointer has the
|
||||||
// left the barrier hitbox until we trigger it again.
|
// left the barrier hitbox until we trigger it again.
|
||||||
if (this._isTriggered)
|
if (this._isTriggered)
|
||||||
|
@ -4,6 +4,7 @@ const Atspi = imports.gi.Atspi;
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const GDesktopEnums = imports.gi.GDesktopEnums;
|
const GDesktopEnums = imports.gi.GDesktopEnums;
|
||||||
const Gio = imports.gi.Gio;
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -22,6 +23,8 @@ const MOUSE_POLL_FREQUENCY = 50;
|
|||||||
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
||||||
const NO_CHANGE = 0.0;
|
const NO_CHANGE = 0.0;
|
||||||
|
|
||||||
|
const POINTER_REST_TIME = 1000; // milliseconds
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||||
const SHOW_KEY = 'screen-magnifier-enabled';
|
const SHOW_KEY = 'screen-magnifier-enabled';
|
||||||
@ -709,6 +712,9 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._xCaret = 0;
|
this._xCaret = 0;
|
||||||
this._yCaret = 0;
|
this._yCaret = 0;
|
||||||
|
|
||||||
|
this._pointerIdleMonitor = Meta.IdleMonitor.get_for_device(Meta.VIRTUAL_CORE_POINTER_ID);
|
||||||
|
this._scrollContentsTimerId = 0;
|
||||||
|
|
||||||
Main.layoutManager.connect('monitors-changed',
|
Main.layoutManager.connect('monitors-changed',
|
||||||
Lang.bind(this, this._monitorsChanged));
|
Lang.bind(this, this._monitorsChanged));
|
||||||
this._focusCaretTracker.connect('caret-moved',
|
this._focusCaretTracker.connect('caret-moved',
|
||||||
@ -1068,6 +1074,26 @@ const ZoomRegion = new Lang.Class({
|
|||||||
return this._isMouseOverRegion();
|
return this._isMouseOverRegion();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_clearScrollContentsTimer: function() {
|
||||||
|
if (this._scrollContentsTimerId != 0) {
|
||||||
|
Mainloop.source_remove(this._scrollContentsTimerId);
|
||||||
|
this._scrollContentsTimerId = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_scrollContentsToDelayed: function(x, y) {
|
||||||
|
if (this._pointerIdleMonitor.get_idletime() >= POINTER_REST_TIME) {
|
||||||
|
this.scrollContentsTo(x, y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._clearScrollContentsTimer();
|
||||||
|
this._scrollContentsTimerId = Mainloop.timeout_add(POINTER_REST_TIME, Lang.bind(this, function() {
|
||||||
|
this._scrollContentsToDelayed(x, y);
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scrollContentsTo:
|
* scrollContentsTo:
|
||||||
* Shift the contents of the magnified view such it is centered on the given
|
* Shift the contents of the magnified view such it is centered on the given
|
||||||
@ -1076,6 +1102,8 @@ const ZoomRegion = new Lang.Class({
|
|||||||
* @y: The y-coord of the point to center on.
|
* @y: The y-coord of the point to center on.
|
||||||
*/
|
*/
|
||||||
scrollContentsTo: function(x, y) {
|
scrollContentsTo: function(x, y) {
|
||||||
|
this._clearScrollContentsTimer();
|
||||||
|
|
||||||
this._followingCursor = false;
|
this._followingCursor = false;
|
||||||
this._changeROI({ xCenter: x,
|
this._changeROI({ xCenter: x,
|
||||||
yCenter: y });
|
yCenter: y });
|
||||||
@ -1381,7 +1409,7 @@ const ZoomRegion = new Lang.Class({
|
|||||||
else if (this._caretTrackingMode == GDesktopEnums.MagnifierCaretTrackingMode.CENTERED)
|
else if (this._caretTrackingMode == GDesktopEnums.MagnifierCaretTrackingMode.CENTERED)
|
||||||
[xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret);
|
[xCaret, yCaret] = this._centerFromPointCentered(xCaret, yCaret);
|
||||||
|
|
||||||
this.scrollContentsTo(xCaret, yCaret);
|
this._scrollContentsToDelayed(xCaret, yCaret);
|
||||||
},
|
},
|
||||||
|
|
||||||
_centerFromFocusPosition: function() {
|
_centerFromFocusPosition: function() {
|
||||||
@ -1395,7 +1423,7 @@ const ZoomRegion = new Lang.Class({
|
|||||||
else if (this._focusTrackingMode == GDesktopEnums.MagnifierFocusTrackingMode.CENTERED)
|
else if (this._focusTrackingMode == GDesktopEnums.MagnifierFocusTrackingMode.CENTERED)
|
||||||
[xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus);
|
[xFocus, yFocus] = this._centerFromPointCentered(xFocus, yFocus);
|
||||||
|
|
||||||
this.scrollContentsTo(xFocus, yFocus);
|
this._scrollContentsToDelayed(xFocus, yFocus);
|
||||||
},
|
},
|
||||||
|
|
||||||
_centerFromPointPush: function(xPoint, yPoint) {
|
_centerFromPointPush: function(xPoint, yPoint) {
|
||||||
|
@ -69,26 +69,6 @@ const Urgency = {
|
|||||||
CRITICAL: 3
|
CRITICAL: 3
|
||||||
};
|
};
|
||||||
|
|
||||||
function _fixMarkup(text, allowMarkup) {
|
|
||||||
if (allowMarkup) {
|
|
||||||
// Support &, ", ', < and >, escape all other
|
|
||||||
// occurrences of '&'.
|
|
||||||
let _text = text.replace(/&(?!amp;|quot;|apos;|lt;|gt;)/g, '&');
|
|
||||||
|
|
||||||
// Support <b>, <i>, and <u>, escape anything else
|
|
||||||
// so it displays as raw markup.
|
|
||||||
_text = _text.replace(/<(?!\/?[biu]>)/g, '<');
|
|
||||||
|
|
||||||
try {
|
|
||||||
Pango.parse_markup(_text, -1, '');
|
|
||||||
return _text;
|
|
||||||
} catch (e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// !allowMarkup, or invalid markup
|
|
||||||
return GLib.markup_escape_text(text, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
const FocusGrabber = new Lang.Class({
|
const FocusGrabber = new Lang.Class({
|
||||||
Name: 'FocusGrabber',
|
Name: 'FocusGrabber',
|
||||||
|
|
||||||
@ -258,6 +238,8 @@ const NotificationApplicationPolicy = new Lang.Class({
|
|||||||
|
|
||||||
_changed: function(settings, key) {
|
_changed: function(settings, key) {
|
||||||
this.emit('policy-changed', key);
|
this.emit('policy-changed', key);
|
||||||
|
if (key == 'enable')
|
||||||
|
this.emit('enable-changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
_canonicalizeId: function(id) {
|
_canonicalizeId: function(id) {
|
||||||
@ -508,6 +490,7 @@ const NotificationBanner = new Lang.Class({
|
|||||||
_init: function(notification) {
|
_init: function(notification) {
|
||||||
this.parent(notification);
|
this.parent(notification);
|
||||||
|
|
||||||
|
this.actor.can_focus = false;
|
||||||
this.actor.add_style_class_name('notification-banner');
|
this.actor.add_style_class_name('notification-banner');
|
||||||
|
|
||||||
this._buttonBox = null;
|
this._buttonBox = null;
|
||||||
@ -975,6 +958,14 @@ const MessageTray = new Lang.Class({
|
|||||||
Shell.util_set_hidden_from_pick(this.actor, false);
|
Shell.util_set_hidden_from_pick(this.actor, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get bannerAlignment() {
|
||||||
|
return this._bannerBin.get_x_align();
|
||||||
|
},
|
||||||
|
|
||||||
|
set bannerAlignment(align) {
|
||||||
|
this._bannerBin.set_x_align(align);
|
||||||
|
},
|
||||||
|
|
||||||
_onNotificationKeyRelease: function(actor, event) {
|
_onNotificationKeyRelease: function(actor, event) {
|
||||||
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
|
||||||
this._expireNotification();
|
this._expireNotification();
|
||||||
|
@ -14,7 +14,6 @@ const Atk = imports.gi.Atk;
|
|||||||
|
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
const Animation = imports.ui.animation;
|
|
||||||
const Layout = imports.ui.layout;
|
const Layout = imports.ui.layout;
|
||||||
const Lightbox = imports.ui.lightbox;
|
const Lightbox = imports.ui.lightbox;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@ -23,10 +22,6 @@ const Tweener = imports.ui.tweener;
|
|||||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||||
|
|
||||||
const WORK_SPINNER_ICON_SIZE = 24;
|
|
||||||
const WORK_SPINNER_ANIMATION_DELAY = 1.0;
|
|
||||||
const WORK_SPINNER_ANIMATION_TIME = 0.3;
|
|
||||||
|
|
||||||
const State = {
|
const State = {
|
||||||
OPENED: 0,
|
OPENED: 0,
|
||||||
CLOSED: 1,
|
CLOSED: 1,
|
||||||
@ -79,7 +74,9 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._group.add_actor(this._backgroundBin);
|
this._group.add_actor(this._backgroundBin);
|
||||||
|
|
||||||
this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
|
this.dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
|
||||||
vertical: true });
|
x_align: Clutter.ActorAlign.CENTER,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
vertical: true });
|
||||||
// modal dialogs are fixed width and grow vertically; set the request
|
// modal dialogs are fixed width and grow vertically; set the request
|
||||||
// mode accordingly so wrapped labels are handled correctly during
|
// mode accordingly so wrapped labels are handled correctly during
|
||||||
// size requests.
|
// size requests.
|
||||||
@ -100,7 +97,8 @@ const ModalDialog = new Lang.Class({
|
|||||||
this.backgroundStack.add_actor(this.dialogLayout);
|
this.backgroundStack.add_actor(this.dialogLayout);
|
||||||
|
|
||||||
|
|
||||||
this.contentLayout = new St.BoxLayout({ vertical: true });
|
this.contentLayout = new St.BoxLayout({ vertical: true,
|
||||||
|
style_class: "modal-dialog-content-box" });
|
||||||
this.dialogLayout.add(this.contentLayout,
|
this.dialogLayout.add(this.contentLayout,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
x_fill: true,
|
x_fill: true,
|
||||||
@ -108,8 +106,7 @@ const ModalDialog = new Lang.Class({
|
|||||||
x_align: St.Align.MIDDLE,
|
x_align: St.Align.MIDDLE,
|
||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
this.buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
this.buttonLayout = new St.Widget ({ layout_manager: new Clutter.BoxLayout ({ homogeneous:true }) });
|
||||||
vertical: false });
|
|
||||||
this.dialogLayout.add(this.buttonLayout,
|
this.dialogLayout.add(this.buttonLayout,
|
||||||
{ x_align: St.Align.MIDDLE,
|
{ x_align: St.Align.MIDDLE,
|
||||||
y_align: St.Align.END });
|
y_align: St.Align.END });
|
||||||
@ -118,8 +115,6 @@ const ModalDialog = new Lang.Class({
|
|||||||
this._initialKeyFocus = this.dialogLayout;
|
this._initialKeyFocus = this.dialogLayout;
|
||||||
this._initialKeyFocusDestroyId = 0;
|
this._initialKeyFocusDestroyId = 0;
|
||||||
this._savedKeyFocus = null;
|
this._savedKeyFocus = null;
|
||||||
|
|
||||||
this._workSpinner = null;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
@ -147,16 +142,12 @@ const ModalDialog = new Lang.Class({
|
|||||||
else
|
else
|
||||||
x_alignment = St.Align.MIDDLE;
|
x_alignment = St.Align.MIDDLE;
|
||||||
|
|
||||||
this.addButton(buttonInfo, { expand: true,
|
this.addButton(buttonInfo);
|
||||||
x_fill: false,
|
|
||||||
y_fill: false,
|
|
||||||
x_align: x_alignment,
|
|
||||||
y_align: St.Align.MIDDLE });
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
addButton: function(buttonInfo, layoutInfo) {
|
addButton: function(buttonInfo) {
|
||||||
let label = buttonInfo['label'];
|
let label = buttonInfo['label']
|
||||||
let action = buttonInfo['action'];
|
let action = buttonInfo['action'];
|
||||||
let key = buttonInfo['key'];
|
let key = buttonInfo['key'];
|
||||||
let isDefault = buttonInfo['default'];
|
let isDefault = buttonInfo['default'];
|
||||||
@ -170,10 +161,12 @@ const ModalDialog = new Lang.Class({
|
|||||||
else
|
else
|
||||||
keys = [];
|
keys = [];
|
||||||
|
|
||||||
let button = new St.Button({ style_class: 'modal-dialog-button button',
|
let button = new St.Button({ style_class: 'modal-dialog-linked-button',
|
||||||
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
|
||||||
reactive: true,
|
reactive: true,
|
||||||
can_focus: true,
|
can_focus: true,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
label: label });
|
label: label });
|
||||||
button.connect('clicked', action);
|
button.connect('clicked', action);
|
||||||
|
|
||||||
@ -188,47 +181,11 @@ const ModalDialog = new Lang.Class({
|
|||||||
for (let i in keys)
|
for (let i in keys)
|
||||||
this._buttonKeys[keys[i]] = buttonInfo;
|
this._buttonKeys[keys[i]] = buttonInfo;
|
||||||
|
|
||||||
this.buttonLayout.add(button, layoutInfo);
|
this.buttonLayout.add_actor(button);
|
||||||
|
|
||||||
return button;
|
return button;
|
||||||
},
|
},
|
||||||
|
|
||||||
placeSpinner: function(layoutInfo) {
|
|
||||||
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
|
||||||
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
|
|
||||||
this._workSpinner.actor.opacity = 0;
|
|
||||||
this._workSpinner.actor.show();
|
|
||||||
|
|
||||||
this.buttonLayout.add(this._workSpinner.actor, layoutInfo);
|
|
||||||
},
|
|
||||||
|
|
||||||
setWorking: function(working) {
|
|
||||||
if (!this._workSpinner)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Tweener.removeTweens(this._workSpinner.actor);
|
|
||||||
if (working) {
|
|
||||||
this._workSpinner.play();
|
|
||||||
Tweener.addTween(this._workSpinner.actor,
|
|
||||||
{ opacity: 255,
|
|
||||||
delay: WORK_SPINNER_ANIMATION_DELAY,
|
|
||||||
time: WORK_SPINNER_ANIMATION_TIME,
|
|
||||||
transition: 'linear'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Tweener.addTween(this._workSpinner.actor,
|
|
||||||
{ opacity: 0,
|
|
||||||
time: WORK_SPINNER_ANIMATION_TIME,
|
|
||||||
transition: 'linear',
|
|
||||||
onCompleteScope: this,
|
|
||||||
onComplete: function() {
|
|
||||||
if (this._workSpinner)
|
|
||||||
this._workSpinner.stop();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_onKeyPressEvent: function(object, event) {
|
_onKeyPressEvent: function(object, event) {
|
||||||
this._pressedKey = event.get_key_symbol();
|
this._pressedKey = event.get_key_symbol();
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
@ -15,8 +15,7 @@ const OsdMonitorLabel = new Lang.Class({
|
|||||||
Name: 'OsdMonitorLabel',
|
Name: 'OsdMonitorLabel',
|
||||||
|
|
||||||
_init: function(monitor, label) {
|
_init: function(monitor, label) {
|
||||||
this._actor = new St.Widget({ opacity: 0,
|
this._actor = new St.Widget({ x_expand: true,
|
||||||
x_expand: true,
|
|
||||||
y_expand: true });
|
y_expand: true });
|
||||||
|
|
||||||
this._monitor = monitor;
|
this._monitor = monitor;
|
||||||
@ -34,10 +33,6 @@ const OsdMonitorLabel = new Lang.Class({
|
|||||||
this._position();
|
this._position();
|
||||||
|
|
||||||
Meta.disable_unredirect_for_screen(global.screen);
|
Meta.disable_unredirect_for_screen(global.screen);
|
||||||
Tweener.addTween(this._actor,
|
|
||||||
{ opacity: 255,
|
|
||||||
time: FADE_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_position: function() {
|
_position: function() {
|
||||||
@ -52,15 +47,8 @@ const OsdMonitorLabel = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
Tweener.addTween(this._actor,
|
this._actor.destroy();
|
||||||
{ opacity: 0,
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
time: FADE_TIME,
|
|
||||||
transition: 'easeOutQuad',
|
|
||||||
onComplete: Lang.bind(this, function() {
|
|
||||||
this._actor.destroy();
|
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -107,13 +107,6 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
this._overviewCreated = true;
|
this._overviewCreated = true;
|
||||||
|
|
||||||
// The main Background actors are inside global.window_group which are
|
|
||||||
// hidden when displaying the overview, so we create a new
|
|
||||||
// one. Instances of this class share a single CoglTexture behind the
|
|
||||||
// scenes which allows us to show the background with different
|
|
||||||
// rendering options without duplicating the texture data.
|
|
||||||
let monitor = Main.layoutManager.primaryMonitor;
|
|
||||||
|
|
||||||
let layout = new Clutter.BinLayout();
|
let layout = new Clutter.BinLayout();
|
||||||
this._stack = new Clutter.Actor({ layout_manager: layout });
|
this._stack = new Clutter.Actor({ layout_manager: layout });
|
||||||
this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
|
this._stack.add_constraint(new LayoutManager.MonitorConstraint({ primary: true }));
|
||||||
@ -128,6 +121,11 @@ const Overview = new Lang.Class({
|
|||||||
y_expand: true });
|
y_expand: true });
|
||||||
this._overview._delegate = this;
|
this._overview._delegate = this;
|
||||||
|
|
||||||
|
// The main Background actors are inside global.window_group which are
|
||||||
|
// hidden when displaying the overview, so we create a new
|
||||||
|
// one. Instances of this class share a single CoglTexture behind the
|
||||||
|
// scenes which allows us to show the background with different
|
||||||
|
// rendering options without duplicating the texture data.
|
||||||
this._backgroundGroup = new Meta.BackgroundGroup();
|
this._backgroundGroup = new Meta.BackgroundGroup();
|
||||||
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
|
Main.layoutManager.overviewGroup.add_child(this._backgroundGroup);
|
||||||
this._bgManagers = [];
|
this._bgManagers = [];
|
||||||
|
100
js/ui/panel.js
100
js/ui/panel.js
@ -25,12 +25,12 @@ const RemoteMenu = imports.ui.remoteMenu;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const PANEL_ICON_SIZE = 24;
|
const PANEL_ICON_SIZE = 16;
|
||||||
const APP_MENU_ICON_MARGIN = 2;
|
const APP_MENU_ICON_MARGIN = 0;
|
||||||
|
|
||||||
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
|
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
|
||||||
|
|
||||||
const SPINNER_ANIMATION_TIME = 0.2;
|
const SPINNER_ANIMATION_TIME = 1.0;
|
||||||
|
|
||||||
// To make sure the panel corners blend nicely with the panel,
|
// To make sure the panel corners blend nicely with the panel,
|
||||||
// we draw background and borders the same way, e.g. drawing
|
// we draw background and borders the same way, e.g. drawing
|
||||||
@ -95,6 +95,7 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._startingApps = [];
|
this._startingApps = [];
|
||||||
|
|
||||||
this._menuManager = panel.menuManager;
|
this._menuManager = panel.menuManager;
|
||||||
|
this._gtkSettings = Gtk.Settings.get_default();
|
||||||
this._targetApp = null;
|
this._targetApp = null;
|
||||||
this._appMenuNotifyId = 0;
|
this._appMenuNotifyId = 0;
|
||||||
this._actionGroupNotifyId = 0;
|
this._actionGroupNotifyId = 0;
|
||||||
@ -123,11 +124,14 @@ const AppMenuButton = new Lang.Class({
|
|||||||
this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM);
|
this._arrow = PopupMenu.arrowIcon(St.Side.BOTTOM);
|
||||||
this._container.add_actor(this._arrow);
|
this._container.add_actor(this._arrow);
|
||||||
|
|
||||||
this._visible = !Main.overview.visible;
|
this._visible = this._gtkSettings.gtk_shell_shows_app_menu &&
|
||||||
|
!Main.overview.visible;
|
||||||
if (!this._visible)
|
if (!this._visible)
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync));
|
this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._sync));
|
||||||
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync));
|
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, this._sync));
|
||||||
|
this._showsAppMenuId = this._gtkSettings.connect('notify::gtk-shell-shows-app-menu',
|
||||||
|
Lang.bind(this, this._sync));
|
||||||
|
|
||||||
this._stop = true;
|
this._stop = true;
|
||||||
|
|
||||||
@ -305,7 +309,9 @@ const AppMenuButton = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let visible = (this._targetApp != null && !Main.overview.visibleTarget);
|
let visible = (this._targetApp != null &&
|
||||||
|
this._gtkSettings.gtk_shell_shows_app_menu &&
|
||||||
|
!Main.overview.visibleTarget);
|
||||||
if (visible)
|
if (visible)
|
||||||
this.show();
|
this.show();
|
||||||
else
|
else
|
||||||
@ -378,6 +384,10 @@ const AppMenuButton = new Lang.Class({
|
|||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
this._overviewShowingId = 0;
|
this._overviewShowingId = 0;
|
||||||
}
|
}
|
||||||
|
if (this._showsAppMenuId > 0) {
|
||||||
|
this._gtkSettings.disconnect(this._showsAppMenuId);
|
||||||
|
this._showsAppMenuId = 0;
|
||||||
|
}
|
||||||
if (this._switchWorkspaceNotifyId > 0) {
|
if (this._switchWorkspaceNotifyId > 0) {
|
||||||
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
global.window_manager.disconnect(this._switchWorkspaceNotifyId);
|
||||||
this._switchWorkspaceNotifyId = 0;
|
this._switchWorkspaceNotifyId = 0;
|
||||||
@ -449,7 +459,8 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
|
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END ||
|
if (event.type() == Clutter.EventType.TOUCH_END ||
|
||||||
event.type() == Clutter.EventType.BUTTON_RELEASE)
|
event.type() == Clutter.EventType.BUTTON_RELEASE)
|
||||||
Main.overview.toggle();
|
if (Main.overview.shouldToggleByCornerOrButton())
|
||||||
|
Main.overview.toggle();
|
||||||
|
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
@ -457,7 +468,8 @@ const ActivitiesButton = new Lang.Class({
|
|||||||
_onKeyRelease: function(actor, event) {
|
_onKeyRelease: function(actor, event) {
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
|
||||||
Main.overview.toggle();
|
if (Main.overview.shouldToggleByCornerOrButton())
|
||||||
|
Main.overview.toggle();
|
||||||
}
|
}
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
},
|
},
|
||||||
@ -642,14 +654,50 @@ const PanelCorner = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const AggregateLayout = new Lang.Class({
|
||||||
|
Name: 'AggregateLayout',
|
||||||
|
Extends: Clutter.BoxLayout,
|
||||||
|
|
||||||
|
_init: function(params) {
|
||||||
|
if (!params)
|
||||||
|
params = {};
|
||||||
|
params['orientation'] = Clutter.Orientation.VERTICAL;
|
||||||
|
this.parent(params);
|
||||||
|
|
||||||
|
this._sizeChildren = [];
|
||||||
|
},
|
||||||
|
|
||||||
|
addSizeChild: function(actor) {
|
||||||
|
this._sizeChildren.push(actor);
|
||||||
|
this.layout_changed();
|
||||||
|
},
|
||||||
|
|
||||||
|
vfunc_get_preferred_width: function(container, forHeight) {
|
||||||
|
let themeNode = container.get_theme_node();
|
||||||
|
let minWidth = themeNode.get_min_width();
|
||||||
|
let natWidth = minWidth;
|
||||||
|
|
||||||
|
for (let i = 0; i < this._sizeChildren.length; i++) {
|
||||||
|
let child = this._sizeChildren[i];
|
||||||
|
let [childMin, childNat] = child.get_preferred_width(forHeight);
|
||||||
|
minWidth = Math.max(minWidth, childMin);
|
||||||
|
natWidth = Math.max(minWidth, childNat);
|
||||||
|
}
|
||||||
|
return [minWidth, natWidth];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const AggregateMenu = new Lang.Class({
|
const AggregateMenu = new Lang.Class({
|
||||||
Name: 'AggregateMenu',
|
Name: 'AggregateMenu',
|
||||||
Extends: PanelMenu.Button,
|
Extends: PanelMenu.Button,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(0.0, _("Settings"), false);
|
this.parent(0.0, C_("System menu in the top bar", "System"), false);
|
||||||
this.menu.actor.add_style_class_name('aggregate-menu');
|
this.menu.actor.add_style_class_name('aggregate-menu');
|
||||||
|
|
||||||
|
let menuLayout = new AggregateLayout();
|
||||||
|
this.menu.box.set_layout_manager(menuLayout);
|
||||||
|
|
||||||
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
|
||||||
this.actor.add_child(this._indicators);
|
this.actor.add_child(this._indicators);
|
||||||
|
|
||||||
@ -697,8 +745,12 @@ const AggregateMenu = new Lang.Class({
|
|||||||
this.menu.addMenuItem(this._location.menu);
|
this.menu.addMenuItem(this._location.menu);
|
||||||
this.menu.addMenuItem(this._rfkill.menu);
|
this.menu.addMenuItem(this._rfkill.menu);
|
||||||
this.menu.addMenuItem(this._power.menu);
|
this.menu.addMenuItem(this._power.menu);
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
||||||
this.menu.addMenuItem(this._system.menu);
|
this.menu.addMenuItem(this._system.menu);
|
||||||
|
|
||||||
|
menuLayout.addSizeChild(this._location.menu.actor);
|
||||||
|
menuLayout.addSizeChild(this._rfkill.menu.actor);
|
||||||
|
menuLayout.addSizeChild(this._power.menu.actor);
|
||||||
|
menuLayout.addSizeChild(this._system.menu.actor);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -933,6 +985,14 @@ const Panel = new Lang.Class({
|
|||||||
this._updateBox(panel.center, this._centerBox);
|
this._updateBox(panel.center, this._centerBox);
|
||||||
this._updateBox(panel.right, this._rightBox);
|
this._updateBox(panel.right, this._rightBox);
|
||||||
|
|
||||||
|
if (panel.left.indexOf('dateMenu') != -1)
|
||||||
|
Main.messageTray.bannerAlignment = Clutter.ActorAlign.START;
|
||||||
|
else if (panel.right.indexOf('dateMenu') != -1)
|
||||||
|
Main.messageTray.bannerAlignment = Clutter.ActorAlign.END;
|
||||||
|
// Default to center if there is no dateMenu
|
||||||
|
else
|
||||||
|
Main.messageTray.bannerAlignment = Clutter.ActorAlign.CENTER;
|
||||||
|
|
||||||
if (this._sessionStyle)
|
if (this._sessionStyle)
|
||||||
this._removeStyleClassName(this._sessionStyle);
|
this._removeStyleClassName(this._sessionStyle);
|
||||||
|
|
||||||
@ -995,6 +1055,7 @@ const Panel = new Lang.Class({
|
|||||||
if (parent)
|
if (parent)
|
||||||
parent.remove_actor(container);
|
parent.remove_actor(container);
|
||||||
|
|
||||||
|
|
||||||
box.insert_child_at_index(container, position);
|
box.insert_child_at_index(container, position);
|
||||||
if (indicator.menu)
|
if (indicator.menu)
|
||||||
this.menuManager.addMenu(indicator.menu);
|
this.menuManager.addMenu(indicator.menu);
|
||||||
@ -1004,6 +1065,8 @@ const Panel = new Lang.Class({
|
|||||||
emitter.disconnect(destroyId);
|
emitter.disconnect(destroyId);
|
||||||
container.destroy();
|
container.destroy();
|
||||||
}));
|
}));
|
||||||
|
indicator.connect('menu-set', Lang.bind(this, this._onMenuSet));
|
||||||
|
this._onMenuSet(indicator);
|
||||||
},
|
},
|
||||||
|
|
||||||
addToStatusArea: function(role, indicator, position, box) {
|
addToStatusArea: function(role, indicator, position, box) {
|
||||||
@ -1035,5 +1098,24 @@ const Panel = new Lang.Class({
|
|||||||
this.actor.remove_style_class_name(className);
|
this.actor.remove_style_class_name(className);
|
||||||
this._rightCorner.actor.remove_style_class_name(className);
|
this._rightCorner.actor.remove_style_class_name(className);
|
||||||
this._leftCorner.actor.remove_style_class_name(className);
|
this._leftCorner.actor.remove_style_class_name(className);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMenuSet: function(indicator) {
|
||||||
|
if (!indicator.menu || indicator.menu._openChangedId > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
indicator.menu._openChangedId = indicator.menu.connect('open-state-changed',
|
||||||
|
Lang.bind(this, function(menu, isOpen) {
|
||||||
|
let boxAlignment;
|
||||||
|
if (this._leftBox.contains(indicator.container))
|
||||||
|
boxAlignment = Clutter.ActorAlign.START;
|
||||||
|
else if (this._centerBox.contains(indicator.container))
|
||||||
|
boxAlignment = Clutter.ActorAlign.CENTER;
|
||||||
|
else if (this._rightBox.contains(indicator.container))
|
||||||
|
boxAlignment = Clutter.ActorAlign.END;
|
||||||
|
|
||||||
|
if (boxAlignment == Main.messageTray.bannerAlignment)
|
||||||
|
Main.messageTray.bannerBlocked = isOpen;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -128,6 +128,7 @@ const Button = new Lang.Class({
|
|||||||
Main.uiGroup.add_actor(this.menu.actor);
|
Main.uiGroup.add_actor(this.menu.actor);
|
||||||
this.menu.actor.hide();
|
this.menu.actor.hide();
|
||||||
}
|
}
|
||||||
|
this.emit('menu-set');
|
||||||
},
|
},
|
||||||
|
|
||||||
_onEvent: function(actor, event) {
|
_onEvent: function(actor, event) {
|
||||||
|
@ -396,6 +396,7 @@ const PopupImageMenuItem = new Lang.Class({
|
|||||||
this.actor.add_child(this.label);
|
this.actor.add_child(this.label);
|
||||||
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
|
||||||
this.actor.add_child(this._icon, { align: St.Align.END });
|
this.actor.add_child(this._icon, { align: St.Align.END });
|
||||||
|
this.actor.label_actor = this.label;
|
||||||
|
|
||||||
this.setIcon(iconName);
|
this.setIcon(iconName);
|
||||||
},
|
},
|
||||||
@ -1059,11 +1060,6 @@ const PopupSubMenuMenuItem = new Lang.Class({
|
|||||||
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
let expander = new St.Bin({ style_class: 'popup-menu-item-expander' });
|
||||||
this.actor.add(expander, { expand: true });
|
this.actor.add(expander, { expand: true });
|
||||||
|
|
||||||
this.status = new St.Label({ style_class: 'popup-status-menu-item',
|
|
||||||
y_expand: true,
|
|
||||||
y_align: Clutter.ActorAlign.CENTER });
|
|
||||||
this.actor.add_child(this.status);
|
|
||||||
|
|
||||||
this._triangle = arrowIcon(St.Side.RIGHT);
|
this._triangle = arrowIcon(St.Side.RIGHT);
|
||||||
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
|
this._triangle.pivot_point = new Clutter.Point({ x: 0.5, y: 0.6 });
|
||||||
|
|
||||||
|
@ -507,21 +507,22 @@ const ScreenShield = new Lang.Class({
|
|||||||
this._liftShield(true, 0);
|
this._liftShield(true, 0);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._inhibitor = null;
|
|
||||||
this._aboutToSuspend = false;
|
|
||||||
this._loginManager = LoginManager.getLoginManager();
|
this._loginManager = LoginManager.getLoginManager();
|
||||||
this._loginManager.connect('prepare-for-sleep',
|
this._loginManager.connect('prepare-for-sleep',
|
||||||
Lang.bind(this, this._prepareForSleep));
|
Lang.bind(this, this._prepareForSleep));
|
||||||
this._inhibitSuspend();
|
|
||||||
|
|
||||||
|
this._loginSession = null;
|
||||||
this._loginManager.getCurrentSessionProxy(Lang.bind(this,
|
this._loginManager.getCurrentSessionProxy(Lang.bind(this,
|
||||||
function(sessionProxy) {
|
function(sessionProxy) {
|
||||||
this._loginSession = sessionProxy;
|
this._loginSession = sessionProxy;
|
||||||
this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
|
this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); }));
|
||||||
this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); }));
|
this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); }));
|
||||||
|
this._loginSession.connect('g-properties-changed', Lang.bind(this, this._syncInhibitor));
|
||||||
|
this._syncInhibitor();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
||||||
|
this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor));
|
||||||
|
|
||||||
this._isModal = false;
|
this._isModal = false;
|
||||||
this._hasLockScreen = false;
|
this._hasLockScreen = false;
|
||||||
@ -547,6 +548,18 @@ const ScreenShield = new Lang.Class({
|
|||||||
|
|
||||||
this.idleMonitor = Meta.IdleMonitor.get_core();
|
this.idleMonitor = Meta.IdleMonitor.get_core();
|
||||||
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
this._cursorTracker = Meta.CursorTracker.get_for_screen(global.screen);
|
||||||
|
|
||||||
|
this._syncInhibitor();
|
||||||
|
},
|
||||||
|
|
||||||
|
_setActive: function(active) {
|
||||||
|
let prevIsActive = this._isActive;
|
||||||
|
this._isActive = active;
|
||||||
|
|
||||||
|
if (prevIsActive != this._isActive)
|
||||||
|
this.emit('active-changed');
|
||||||
|
|
||||||
|
this._syncInhibitor();
|
||||||
},
|
},
|
||||||
|
|
||||||
_createBackground: function(monitorIndex) {
|
_createBackground: function(monitorIndex) {
|
||||||
@ -664,31 +677,28 @@ const ScreenShield = new Lang.Class({
|
|||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
},
|
},
|
||||||
|
|
||||||
_inhibitSuspend: function() {
|
_syncInhibitor: function() {
|
||||||
this._loginManager.inhibit(_("GNOME needs to lock the screen"),
|
let inhibit = (this._loginSession && this._loginSession.Active &&
|
||||||
Lang.bind(this, function(inhibitor) {
|
!this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY));
|
||||||
this._inhibitor = inhibitor;
|
if (inhibit) {
|
||||||
}));
|
this._loginManager.inhibit(_("GNOME needs to lock the screen"),
|
||||||
},
|
Lang.bind(this, function(inhibitor) {
|
||||||
|
if (this._inhibitor)
|
||||||
_uninhibitSuspend: function() {
|
this._inhibitor.close(null);
|
||||||
if (this._inhibitor)
|
this._inhibitor = inhibitor;
|
||||||
this._inhibitor.close(null);
|
}));
|
||||||
this._inhibitor = null;
|
} else {
|
||||||
|
if (this._inhibitor)
|
||||||
|
this._inhibitor.close(null);
|
||||||
|
this._inhibitor = null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_prepareForSleep: function(loginManager, aboutToSuspend) {
|
_prepareForSleep: function(loginManager, aboutToSuspend) {
|
||||||
this._aboutToSuspend = aboutToSuspend;
|
|
||||||
|
|
||||||
if (aboutToSuspend) {
|
if (aboutToSuspend) {
|
||||||
if (!this._settings.get_boolean(LOCK_ENABLED_KEY)) {
|
if (this._settings.get_boolean(LOCK_ENABLED_KEY))
|
||||||
this._uninhibitSuspend();
|
this.lock(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.lock(true);
|
|
||||||
} else {
|
} else {
|
||||||
this._inhibitSuspend();
|
|
||||||
|
|
||||||
this._wakeUpScreen();
|
this._wakeUpScreen();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1083,15 +1093,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_completeLockScreenShown: function() {
|
_completeLockScreenShown: function() {
|
||||||
let prevIsActive = this._isActive;
|
this._setActive(true);
|
||||||
this._isActive = true;
|
|
||||||
|
|
||||||
if (prevIsActive != this._isActive)
|
|
||||||
this.emit('active-changed');
|
|
||||||
|
|
||||||
if (this._aboutToSuspend)
|
|
||||||
this._uninhibitSuspend();
|
|
||||||
|
|
||||||
this.emit('lock-screen-shown');
|
this.emit('lock-screen-shown');
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1185,8 +1187,7 @@ const ScreenShield = new Lang.Class({
|
|||||||
// gnome-settings-daemon will stop blanking the screen
|
// gnome-settings-daemon will stop blanking the screen
|
||||||
|
|
||||||
this._activationTime = 0;
|
this._activationTime = 0;
|
||||||
this._isActive = false;
|
this._setActive(false);
|
||||||
this.emit('active-changed');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1229,9 +1230,8 @@ const ScreenShield = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._activationTime = 0;
|
this._activationTime = 0;
|
||||||
this._isActive = false;
|
this._setActive(false);
|
||||||
this._isLocked = false;
|
this._isLocked = false;
|
||||||
this.emit('active-changed');
|
|
||||||
this.emit('locked-changed');
|
this.emit('locked-changed');
|
||||||
global.set_runtime_state(LOCKED_STATE_STR, null);
|
global.set_runtime_state(LOCKED_STATE_STR, null);
|
||||||
},
|
},
|
||||||
|
@ -46,7 +46,7 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
// The Bluetooth menu only appears when Bluetooth is in use,
|
// The Bluetooth menu only appears when Bluetooth is in use,
|
||||||
// so just statically build it with a "Turn Off" menu item.
|
// so just statically build it with a "Turn Off" menu item.
|
||||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true);
|
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||||
this._item.icon.icon_name = 'bluetooth-active-symbolic';
|
this._item.icon.icon_name = 'bluetooth-active-symbolic';
|
||||||
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
||||||
this._proxy.BluetoothAirplaneMode = true;
|
this._proxy.BluetoothAirplaneMode = true;
|
||||||
@ -101,8 +101,9 @@ const Indicator = new Lang.Class({
|
|||||||
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
this._item.actor.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
|
||||||
|
|
||||||
if (nDevices > 0)
|
if (nDevices > 0)
|
||||||
this._item.status.text = ngettext("%d Connected Device", "%d Connected Devices", nDevices).format(nDevices);
|
/* Translators: this is the number of connected bluetooth devices */
|
||||||
|
this._item.label.text = ngettext("%d Connected", "%d Connected", nDevices).format(nDevices);
|
||||||
else
|
else
|
||||||
this._item.status.text = _("Not Connected");
|
this._item.label.text = _("Not In Use");
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -62,13 +62,13 @@ const Indicator = new Lang.Class({
|
|||||||
this._indicator = this._addIndicator();
|
this._indicator = this._addIndicator();
|
||||||
this._indicator.icon_name = 'find-location-symbolic';
|
this._indicator.icon_name = 'find-location-symbolic';
|
||||||
|
|
||||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Location"), true);
|
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
|
||||||
this._item.icon.icon_name = 'find-location-symbolic';
|
this._item.icon.icon_name = 'find-location-symbolic';
|
||||||
|
|
||||||
this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this);
|
this._agent = Gio.DBusExportedObject.wrapJSObject(AgentIface, this);
|
||||||
this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent');
|
this._agent.export(Gio.DBus.system, '/org/freedesktop/GeoClue2/Agent');
|
||||||
|
|
||||||
this._item.status.text = _("Enabled");
|
this._item.label.text = _("Location Enabled");
|
||||||
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
this._onOffAction = this._item.menu.addAction(_("Disable"), Lang.bind(this, this._onOnOffAction));
|
||||||
this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop');
|
this._item.menu.addSettingsAction(_("Privacy Settings"), 'gnome-privacy-panel.desktop');
|
||||||
|
|
||||||
@ -173,10 +173,11 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_updateMenuLabels: function() {
|
_updateMenuLabels: function() {
|
||||||
if (this._settings.get_boolean(ENABLED)) {
|
if (this._settings.get_boolean(ENABLED)) {
|
||||||
this._item.status.text = this._indicator.visible ? _("In Use") : _("Enabled");
|
this._item.label.text = this._indicator.visible ? _("Location In Use")
|
||||||
|
: _("Location Enabled");
|
||||||
this._onOffAction.label.text = _("Disable");
|
this._onOffAction.label.text = _("Disable");
|
||||||
} else {
|
} else {
|
||||||
this._item.status.text = _("Disabled");
|
this._item.label.text = _("Location Disabled");
|
||||||
this._onOffAction.label.text = _("Enable");
|
this._onOffAction.label.text = _("Enable");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -257,16 +257,8 @@ const NMConnectionSection = new Lang.Class({
|
|||||||
this._radioSection.actor.visible = (nItems > 1);
|
this._radioSection.actor.visible = (nItems > 1);
|
||||||
this._labelSection.actor.visible = (nItems == 1);
|
this._labelSection.actor.visible = (nItems == 1);
|
||||||
|
|
||||||
this.item.status.text = this._getStatus();
|
this.item.label.text = this._getStatus();
|
||||||
this.item.icon.icon_name = this._getMenuIcon();
|
this.item.icon.icon_name = this._getMenuIcon();
|
||||||
|
|
||||||
// desc can be undefined at cold-plug, before we called
|
|
||||||
// NMGtk.disambiguate_device_names() at least once
|
|
||||||
let desc = this._getDescription();
|
|
||||||
if (desc)
|
|
||||||
this.item.label.text = desc;
|
|
||||||
else
|
|
||||||
this.item.label.text = '';
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_getMenuIcon: function() {
|
_getMenuIcon: function() {
|
||||||
@ -355,6 +347,7 @@ const NMConnectionDevice = new Lang.Class({
|
|||||||
this.parent(client);
|
this.parent(client);
|
||||||
this._device = device;
|
this._device = device;
|
||||||
this._settings = settings;
|
this._settings = settings;
|
||||||
|
this._description = '';
|
||||||
|
|
||||||
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
||||||
this._deactivateItem = this._radioSection.addAction(_("Turn Off"), Lang.bind(this, this.deactivateConnection));
|
this._deactivateItem = this._radioSection.addAction(_("Turn Off"), Lang.bind(this, this.deactivateConnection));
|
||||||
@ -454,38 +447,44 @@ const NMConnectionDevice = new Lang.Class({
|
|||||||
|
|
||||||
switch(this._device.state) {
|
switch(this._device.state) {
|
||||||
case NetworkManager.DeviceState.DISCONNECTED:
|
case NetworkManager.DeviceState.DISCONNECTED:
|
||||||
return _("Off");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Off").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.ACTIVATED:
|
case NetworkManager.DeviceState.ACTIVATED:
|
||||||
return _("Connected");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Connected").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.UNMANAGED:
|
case NetworkManager.DeviceState.UNMANAGED:
|
||||||
/* Translators: this is for network devices that are physically present but are not
|
/* Translators: this is for network devices that are physically present but are not
|
||||||
under NetworkManager's control (and thus cannot be used in the menu) */
|
under NetworkManager's control (and thus cannot be used in the menu);
|
||||||
return _("Unmanaged");
|
%s is a network identifier */
|
||||||
|
return _("%s Unmanaged").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.DEACTIVATING:
|
case NetworkManager.DeviceState.DEACTIVATING:
|
||||||
return _("Disconnecting");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Disconnecting").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.PREPARE:
|
case NetworkManager.DeviceState.PREPARE:
|
||||||
case NetworkManager.DeviceState.CONFIG:
|
case NetworkManager.DeviceState.CONFIG:
|
||||||
case NetworkManager.DeviceState.IP_CONFIG:
|
case NetworkManager.DeviceState.IP_CONFIG:
|
||||||
case NetworkManager.DeviceState.IP_CHECK:
|
case NetworkManager.DeviceState.IP_CHECK:
|
||||||
case NetworkManager.DeviceState.SECONDARIES:
|
case NetworkManager.DeviceState.SECONDARIES:
|
||||||
return _("Connecting");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Connecting").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.NEED_AUTH:
|
case NetworkManager.DeviceState.NEED_AUTH:
|
||||||
/* Translators: this is for network connections that require some kind of key or password */
|
/* Translators: this is for network connections that require some kind of key or password; %s is a network identifier */
|
||||||
return _("Authentication required");
|
return _("%s Requires Authentication").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.UNAVAILABLE:
|
case NetworkManager.DeviceState.UNAVAILABLE:
|
||||||
// This state is actually a compound of various states (generically unavailable,
|
// This state is actually a compound of various states (generically unavailable,
|
||||||
// firmware missing), that are exposed by different properties (whose state may
|
// firmware missing), that are exposed by different properties (whose state may
|
||||||
// or may not updated when we receive state-changed).
|
// or may not updated when we receive state-changed).
|
||||||
if (this._device.firmware_missing) {
|
if (this._device.firmware_missing) {
|
||||||
/* Translators: this is for devices that require some kind of firmware or kernel
|
/* Translators: this is for devices that require some kind of firmware or kernel
|
||||||
module, which is missing */
|
module, which is missing; %s is a network identifier */
|
||||||
return _("Firmware missing");
|
return _("Firmware Missing For %s").format(this._getDescription());
|
||||||
}
|
}
|
||||||
/* Translators: this is for a network device that cannot be activated (for example it
|
/* Translators: this is for a network device that cannot be activated (for example it
|
||||||
is disabled by rfkill, or it has no coverage */
|
is disabled by rfkill, or it has no coverage; %s is a network identifier */
|
||||||
return _("Unavailable");
|
return _("%s Unavailable").format(this._getDescription());
|
||||||
case NetworkManager.DeviceState.FAILED:
|
case NetworkManager.DeviceState.FAILED:
|
||||||
return _("Connection failed");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Connection Failed").format(this._getDescription());
|
||||||
default:
|
default:
|
||||||
log('Device state invalid, is %d'.format(this._device.state));
|
log('Device state invalid, is %d'.format(this._device.state));
|
||||||
return 'invalid';
|
return 'invalid';
|
||||||
@ -585,11 +584,12 @@ const NMDeviceModem = new Lang.Class({
|
|||||||
|
|
||||||
_getStatus: function() {
|
_getStatus: function() {
|
||||||
if (!this._client.wwan_hardware_enabled)
|
if (!this._client.wwan_hardware_enabled)
|
||||||
return _("Hardware Disabled");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Hardware Disabled").format(this._getDescription());
|
||||||
else if (!this._client.wwan_enabled)
|
else if (!this._client.wwan_enabled)
|
||||||
/* Translators: this is for a network device that cannot be activated
|
/* Translators: this is for a network device that cannot be activated
|
||||||
because it's disabled by rfkill (airplane mode) */
|
because it's disabled by rfkill (airplane mode); %s is a network identifier */
|
||||||
return _("Disabled");
|
return _("%s Disabled").format(this._getDescription());
|
||||||
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
|
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
|
||||||
this._mobileDevice && this._mobileDevice.operator_name)
|
this._mobileDevice && this._mobileDevice.operator_name)
|
||||||
return this._mobileDevice.operator_name;
|
return this._mobileDevice.operator_name;
|
||||||
@ -877,7 +877,7 @@ const NMWirelessDialog = new Lang.Class({
|
|||||||
y_align: Clutter.ActorAlign.CENTER });
|
y_align: Clutter.ActorAlign.CENTER });
|
||||||
|
|
||||||
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
|
||||||
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 24, 24);
|
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 16, 16);
|
||||||
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
|
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
|
||||||
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
|
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
|
||||||
text: _("No Networks") }));
|
text: _("No Networks") }));
|
||||||
@ -917,10 +917,7 @@ const NMWirelessDialog = new Lang.Class({
|
|||||||
key: Clutter.Escape });
|
key: Clutter.Escape });
|
||||||
this._connectButton = this.addButton({ action: Lang.bind(this, this._connect),
|
this._connectButton = this.addButton({ action: Lang.bind(this, this._connect),
|
||||||
label: _("Connect"),
|
label: _("Connect"),
|
||||||
key: Clutter.Return },
|
key: Clutter.Return });
|
||||||
{ expand: true,
|
|
||||||
x_fill: false,
|
|
||||||
x_align: St.Align.END });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_connect: function() {
|
_connect: function() {
|
||||||
@ -1282,9 +1279,8 @@ const NMDeviceWireless = new Lang.Class({
|
|||||||
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
|
this._toggleItem.label.text = this._client.wireless_enabled ? _("Turn Off") : _("Turn On");
|
||||||
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
|
this._toggleItem.actor.visible = this._client.wireless_hardware_enabled;
|
||||||
|
|
||||||
this.item.status.text = this._getStatus();
|
|
||||||
this.item.icon.icon_name = this._getMenuIcon();
|
this.item.icon.icon_name = this._getMenuIcon();
|
||||||
this.item.label.text = this._description;
|
this.item.label.text = this._getStatus();
|
||||||
},
|
},
|
||||||
|
|
||||||
setDeviceDescription: function(desc) {
|
setDeviceDescription: function(desc) {
|
||||||
@ -1296,18 +1292,23 @@ const NMDeviceWireless = new Lang.Class({
|
|||||||
let ap = this._device.active_access_point;
|
let ap = this._device.active_access_point;
|
||||||
|
|
||||||
if (this._isHotSpotMaster())
|
if (this._isHotSpotMaster())
|
||||||
return _("Hotspot Active");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Hotspot Active").format(this._description);
|
||||||
else if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
|
else if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
|
||||||
this._device.state < NetworkManager.DeviceState.ACTIVATED)
|
this._device.state < NetworkManager.DeviceState.ACTIVATED)
|
||||||
return _("Connecting");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Connecting").format(this._description);
|
||||||
else if (ap)
|
else if (ap)
|
||||||
return ssidToLabel(ap.get_ssid());
|
return ssidToLabel(ap.get_ssid());
|
||||||
else if (!this._client.wireless_hardware_enabled)
|
else if (!this._client.wireless_hardware_enabled)
|
||||||
return _("Hardware Disabled");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Hardware Disabled").format(this._description);
|
||||||
else if (!this._client.wireless_enabled)
|
else if (!this._client.wireless_enabled)
|
||||||
return _("Off");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Off").format(this._description);
|
||||||
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
|
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
|
||||||
return _("Not Connected");
|
/* Translators: %s is a network identifier */
|
||||||
|
return _("%s Not Connected").format(this._description);
|
||||||
else
|
else
|
||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
@ -1509,7 +1510,7 @@ const NMVPNSection = new Lang.Class({
|
|||||||
return item.getName();
|
return item.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
return _("Off");
|
return _("VPN Off");
|
||||||
},
|
},
|
||||||
|
|
||||||
_getMenuIcon: function() {
|
_getMenuIcon: function() {
|
||||||
|
@ -112,12 +112,6 @@ const Indicator = new Lang.Class({
|
|||||||
this._item.icon.icon_name = icon;
|
this._item.icon.icon_name = icon;
|
||||||
|
|
||||||
// The status label
|
// The status label
|
||||||
this._item.status.text = this._getStatus();
|
this._item.label.text = this._getStatus();
|
||||||
|
|
||||||
// The sub-menu heading
|
|
||||||
if (this._proxy.Type == UPower.DeviceKind.UPS)
|
|
||||||
this._item.label.text = _("UPS");
|
|
||||||
else
|
|
||||||
this._item.label.text = _("Battery");
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -85,9 +85,8 @@ const Indicator = new Lang.Class({
|
|||||||
// The menu only appears when airplane mode is on, so just
|
// The menu only appears when airplane mode is on, so just
|
||||||
// statically build it as if it was on, rather than dynamically
|
// statically build it as if it was on, rather than dynamically
|
||||||
// changing the menu contents.
|
// changing the menu contents.
|
||||||
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode"), true);
|
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Airplane Mode On"), true);
|
||||||
this._item.icon.icon_name = 'airplane-mode-symbolic';
|
this._item.icon.icon_name = 'airplane-mode-symbolic';
|
||||||
this._item.status.text = _("On");
|
|
||||||
this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
this._offItem = this._item.menu.addAction(_("Turn Off"), Lang.bind(this, function() {
|
||||||
this._manager.airplaneMode = false;
|
this._manager.airplaneMode = false;
|
||||||
}));
|
}));
|
||||||
|
@ -24,6 +24,17 @@ const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
|||||||
const DISABLE_RESTART_KEY = 'disable-restart-buttons';
|
const DISABLE_RESTART_KEY = 'disable-restart-buttons';
|
||||||
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||||
|
|
||||||
|
const SENSOR_BUS_NAME = 'net.hadess.SensorProxy';
|
||||||
|
const SENSOR_OBJECT_PATH = '/net/hadess/SensorProxy';
|
||||||
|
|
||||||
|
const SensorProxyInterface = '<node> \
|
||||||
|
<interface name="net.hadess.SensorProxy"> \
|
||||||
|
<property name="HasAccelerometer" type="b" access="read"/> \
|
||||||
|
</interface> \
|
||||||
|
</node>';
|
||||||
|
|
||||||
|
const SensorProxy = Gio.DBusProxy.makeProxyWrapper(SensorProxyInterface);
|
||||||
|
|
||||||
const AltSwitcher = new Lang.Class({
|
const AltSwitcher = new Lang.Class({
|
||||||
Name: 'AltSwitcher',
|
Name: 'AltSwitcher',
|
||||||
|
|
||||||
@ -144,23 +155,32 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
this._orientationSettings.connect('changed::orientation-lock',
|
this._orientationSettings.connect('changed::orientation-lock',
|
||||||
Lang.bind(this, this._updateOrientationLock));
|
Lang.bind(this, this._updateOrientationLock));
|
||||||
this._orientationExists = false;
|
Gio.DBus.system.watch_name(SENSOR_BUS_NAME,
|
||||||
Gio.DBus.session.watch_name('org.gnome.SettingsDaemon.Orientation',
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
Gio.BusNameWatcherFlags.NONE,
|
Lang.bind(this, this._sensorProxyAppeared),
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._orientationExists = true;
|
this._sensorProxy = null;
|
||||||
this._updateOrientationLock();
|
this._updateOrientationLock();
|
||||||
}),
|
}));
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._orientationExists = false;
|
|
||||||
this._updateOrientationLock();
|
|
||||||
}));
|
|
||||||
this._updateOrientationLock();
|
this._updateOrientationLock();
|
||||||
|
|
||||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||||
this._sessionUpdated();
|
this._sessionUpdated();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_sensorProxyAppeared: function() {
|
||||||
|
this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
|
||||||
|
Lang.bind(this, function(proxy, error) {
|
||||||
|
if (error) {
|
||||||
|
log(error.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._sensorProxy.connect('g-properties-changed',
|
||||||
|
Lang.bind(this, this._updateOrientationLock));
|
||||||
|
this._updateOrientationLock();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
_updateActionsVisibility: function() {
|
_updateActionsVisibility: function() {
|
||||||
let visible = (this._settingsAction.visible ||
|
let visible = (this._settingsAction.visible ||
|
||||||
this._orientationLockAction.visible ||
|
this._orientationLockAction.visible ||
|
||||||
@ -231,13 +251,22 @@ const Indicator = new Lang.Class({
|
|||||||
let file = Gio.File.new_for_path(iconFile);
|
let file = Gio.File.new_for_path(iconFile);
|
||||||
let gicon = new Gio.FileIcon({ file: file });
|
let gicon = new Gio.FileIcon({ file: file });
|
||||||
this._switchUserSubMenu.icon.gicon = gicon;
|
this._switchUserSubMenu.icon.gicon = gicon;
|
||||||
|
|
||||||
|
this._switchUserSubMenu.icon.add_style_class_name('user-icon');
|
||||||
|
this._switchUserSubMenu.icon.remove_style_class_name('default-icon');
|
||||||
} else {
|
} else {
|
||||||
this._switchUserSubMenu.icon.icon_name = 'avatar-default-symbolic';
|
this._switchUserSubMenu.icon.icon_name = 'avatar-default-symbolic';
|
||||||
|
|
||||||
|
this._switchUserSubMenu.icon.add_style_class_name('default-icon');
|
||||||
|
this._switchUserSubMenu.icon.remove_style_class_name('user-icon');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateOrientationLock: function() {
|
_updateOrientationLock: function() {
|
||||||
this._orientationLockAction.visible = this._orientationExists;
|
if (this._sensorProxy)
|
||||||
|
this._orientationLockAction.visible = this._sensorProxy.HasAccelerometer;
|
||||||
|
else
|
||||||
|
this._orientationLockAction.visible = false;
|
||||||
|
|
||||||
let locked = this._orientationSettings.get_boolean('orientation-lock');
|
let locked = this._orientationSettings.get_boolean('orientation-lock');
|
||||||
let icon = this._orientationLockAction.child;
|
let icon = this._orientationLockAction.child;
|
||||||
@ -321,6 +350,9 @@ const Indicator = new Lang.Class({
|
|||||||
this._switchUserSubMenu.menu.addMenuItem(item);
|
this._switchUserSubMenu.menu.addMenuItem(item);
|
||||||
this._logoutItem = item;
|
this._logoutItem = item;
|
||||||
|
|
||||||
|
this._switchUserSubMenu.menu.addSettingsAction(_("Account Settings"),
|
||||||
|
'gnome-user-accounts-panel.desktop');
|
||||||
|
|
||||||
this._user.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUserSubMenu));
|
this._user.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUserSubMenu));
|
||||||
this._user.connect('changed', Lang.bind(this, this._updateSwitchUserSubMenu));
|
this._user.connect('changed', Lang.bind(this, this._updateSwitchUserSubMenu));
|
||||||
|
|
||||||
|
@ -465,6 +465,12 @@ const ViewSelector = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_shouldTriggerSearch: function(symbol) {
|
_shouldTriggerSearch: function(symbol) {
|
||||||
|
if (symbol == Clutter.Multi_key)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (symbol == Clutter.BackSpace && this._searchActive)
|
||||||
|
return true;
|
||||||
|
|
||||||
let unicode = Clutter.keysym_to_unicode(symbol);
|
let unicode = Clutter.keysym_to_unicode(symbol);
|
||||||
if (unicode == 0)
|
if (unicode == 0)
|
||||||
return false;
|
return false;
|
||||||
@ -472,7 +478,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0)
|
if (getTermsForSearchString(String.fromCharCode(unicode)).length > 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return symbol == Clutter.BackSpace && this._searchActive;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
startSearch: function(event) {
|
startSearch: function(event) {
|
||||||
|
@ -11,7 +11,8 @@ const WindowAttentionHandler = new Lang.Class({
|
|||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
this._tracker = Shell.WindowTracker.get_default();
|
this._tracker = Shell.WindowTracker.get_default();
|
||||||
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
|
||||||
|
Lang.bind(this, this._onWindowDemandsAttention));
|
||||||
},
|
},
|
||||||
|
|
||||||
_getTitleAndBanner: function(app, window) {
|
_getTitleAndBanner: function(app, window) {
|
||||||
|
@ -19,8 +19,6 @@ const Tweener = imports.ui.tweener;
|
|||||||
const WindowMenu = imports.ui.windowMenu;
|
const WindowMenu = imports.ui.windowMenu;
|
||||||
|
|
||||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||||
const MAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
|
||||||
const UNMAXIMIZE_WINDOW_ANIMATION_TIME = 0.15;
|
|
||||||
const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
|
const MINIMIZE_WINDOW_ANIMATION_TIME = 0.2;
|
||||||
const SHOW_WINDOW_ANIMATION_TIME = 0.15;
|
const SHOW_WINDOW_ANIMATION_TIME = 0.15;
|
||||||
const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1;
|
const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 0.1;
|
||||||
@ -83,12 +81,10 @@ const DisplayChangeDialog = new Lang.Class({
|
|||||||
*/
|
*/
|
||||||
this._cancelButton = this.addButton({ label: _("Revert Settings"),
|
this._cancelButton = this.addButton({ label: _("Revert Settings"),
|
||||||
action: Lang.bind(this, this._onFailure),
|
action: Lang.bind(this, this._onFailure),
|
||||||
key: Clutter.Escape },
|
key: Clutter.Escape });
|
||||||
{ expand: true, x_fill: false, x_align: St.Align.START });
|
|
||||||
this._okButton = this.addButton({ label: _("Keep Changes"),
|
this._okButton = this.addButton({ label: _("Keep Changes"),
|
||||||
action: Lang.bind(this, this._onSuccess),
|
action: Lang.bind(this, this._onSuccess),
|
||||||
default: true },
|
default: true });
|
||||||
{ expand: false, x_fill: false, x_align: St.Align.END });
|
|
||||||
|
|
||||||
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
|
this._timeoutId = Mainloop.timeout_add(ONE_SECOND, Lang.bind(this, this._tick));
|
||||||
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
|
GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._tick');
|
||||||
@ -217,7 +213,8 @@ const WorkspaceTracker = new Lang.Class({
|
|||||||
|
|
||||||
_getWorkspaceSettings: function() {
|
_getWorkspaceSettings: function() {
|
||||||
let settings = global.get_overrides_settings();
|
let settings = global.get_overrides_settings();
|
||||||
if (settings.list_keys().indexOf('dynamic-workspaces') > -1)
|
if (settings &&
|
||||||
|
settings.settings_schema.list_keys().indexOf('dynamic-workspaces') > -1)
|
||||||
return settings;
|
return settings;
|
||||||
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
|
||||||
},
|
},
|
||||||
@ -478,52 +475,100 @@ const TilePreview = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const TouchpadWorkspaceSwitchAction = new Lang.Class({
|
||||||
|
Name: 'TouchpadWorkspaceSwitchAction',
|
||||||
|
|
||||||
|
_init: function(actor) {
|
||||||
|
this._dx = 0;
|
||||||
|
this._dy = 0;
|
||||||
|
actor.connect('captured-event', Lang.bind(this, this._handleEvent));
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkActivated: function() {
|
||||||
|
const MOTION_THRESHOLD = 50;
|
||||||
|
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||||
|
let dir;
|
||||||
|
|
||||||
|
if ((allowedModes & Main.actionMode) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (this._dy < -MOTION_THRESHOLD)
|
||||||
|
dir = Meta.MotionDirection.DOWN;
|
||||||
|
else if (this._dy > MOTION_THRESHOLD)
|
||||||
|
dir = Meta.MotionDirection.UP;
|
||||||
|
else if (this._dx < -MOTION_THRESHOLD)
|
||||||
|
dir = Meta.MotionDirection.RIGHT;
|
||||||
|
else if (this._dx > MOTION_THRESHOLD)
|
||||||
|
dir = Meta.MotionDirection.LEFT;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.emit('activated', dir);
|
||||||
|
},
|
||||||
|
|
||||||
|
_handleEvent: function(actor, event) {
|
||||||
|
if (event.type() != Clutter.EventType.TOUCHPAD_SWIPE)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
if (event.get_gesture_swipe_finger_count() != 4)
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.UPDATE) {
|
||||||
|
let [dx, dy] = event.get_gesture_motion_delta(event);
|
||||||
|
|
||||||
|
this._dx += dx;
|
||||||
|
this._dy += dy;
|
||||||
|
} else {
|
||||||
|
if (event.get_gesture_phase() == Clutter.TouchpadGesturePhase.END)
|
||||||
|
this._checkActivated();
|
||||||
|
|
||||||
|
this._dx = 0;
|
||||||
|
this._dy = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(TouchpadWorkspaceSwitchAction.prototype);
|
||||||
|
|
||||||
const WorkspaceSwitchAction = new Lang.Class({
|
const WorkspaceSwitchAction = new Lang.Class({
|
||||||
Name: 'WorkspaceSwitchAction',
|
Name: 'WorkspaceSwitchAction',
|
||||||
Extends: Clutter.GestureAction,
|
Extends: Clutter.SwipeAction,
|
||||||
|
|
||||||
_init : function() {
|
_init : function() {
|
||||||
|
const MOTION_THRESHOLD = 50;
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
this.set_n_touch_points(4);
|
this.set_n_touch_points(4);
|
||||||
|
this.set_threshold_trigger_distance(MOTION_THRESHOLD, MOTION_THRESHOLD);
|
||||||
|
|
||||||
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
global.display.connect('grab-op-begin', Lang.bind(this, function() {
|
||||||
this.cancel();
|
this.cancel();
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_prepare : function(action, actor) {
|
vfunc_gesture_prepare : function(actor) {
|
||||||
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
|
||||||
return this.get_n_current_points() == this.get_n_touch_points() &&
|
|
||||||
(allowedModes & Main.actionMode);
|
if (!this.parent(actor))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return (allowedModes & Main.actionMode);
|
||||||
},
|
},
|
||||||
|
|
||||||
vfunc_gesture_end : function(action, actor) {
|
vfunc_swept : function(actor, direction) {
|
||||||
const MOTION_THRESHOLD = 50;
|
let dir;
|
||||||
|
|
||||||
// Just check one touchpoint here
|
if (direction & Clutter.SwipeDirection.UP)
|
||||||
let [startX, startY] = this.get_press_coords(0);
|
dir = Meta.MotionDirection.DOWN;
|
||||||
let [x, y] = this.get_motion_coords(0);
|
else if (direction & Clutter.SwipeDirection.DOWN)
|
||||||
let offsetX = x - startX;
|
dir = Meta.MotionDirection.UP;
|
||||||
let offsetY = y - startY;
|
else if (direction & Clutter.SwipeDirection.LEFT)
|
||||||
let direction;
|
dir = Meta.MotionDirection.RIGHT;
|
||||||
|
else if (direction & Clutter.SwipeDirection.RIGHT)
|
||||||
|
dir = Meta.MotionDirection.LEFT;
|
||||||
|
|
||||||
if (Math.abs(offsetX) < MOTION_THRESHOLD &&
|
this.emit('activated', dir);
|
||||||
Math.abs(offsetY) < MOTION_THRESHOLD)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (Math.abs(offsetY) > Math.abs(offsetX)) {
|
|
||||||
if (offsetY > 0)
|
|
||||||
direction = Meta.MotionDirection.UP;
|
|
||||||
else
|
|
||||||
direction = Meta.MotionDirection.DOWN;
|
|
||||||
} else {
|
|
||||||
if (offsetX > 0)
|
|
||||||
direction = Meta.MotionDirection.LEFT;
|
|
||||||
else
|
|
||||||
direction = Meta.MotionDirection.RIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.emit('activated', direction);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Signals.addSignalMethods(WorkspaceSwitchAction.prototype);
|
Signals.addSignalMethods(WorkspaceSwitchAction.prototype);
|
||||||
@ -631,9 +676,8 @@ const WindowManager = new Lang.Class({
|
|||||||
|
|
||||||
this._minimizing = [];
|
this._minimizing = [];
|
||||||
this._unminimizing = [];
|
this._unminimizing = [];
|
||||||
this._maximizing = [];
|
|
||||||
this._unmaximizing = [];
|
|
||||||
this._mapping = [];
|
this._mapping = [];
|
||||||
|
this._resizing = [];
|
||||||
this._destroying = [];
|
this._destroying = [];
|
||||||
this._movingWindow = null;
|
this._movingWindow = null;
|
||||||
|
|
||||||
@ -647,10 +691,9 @@ const WindowManager = new Lang.Class({
|
|||||||
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
|
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
|
||||||
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
|
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
|
||||||
this._minimizeWindowDone(shellwm, actor);
|
this._minimizeWindowDone(shellwm, actor);
|
||||||
this._maximizeWindowDone(shellwm, actor);
|
|
||||||
this._unmaximizeWindowDone(shellwm, actor);
|
|
||||||
this._mapWindowDone(shellwm, actor);
|
this._mapWindowDone(shellwm, actor);
|
||||||
this._destroyWindowDone(shellwm, actor);
|
this._destroyWindowDone(shellwm, actor);
|
||||||
|
this._sizeChangeWindowDone(shellwm, actor);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
|
this._shellwm.connect('switch-workspace', Lang.bind(this, this._switchWorkspace));
|
||||||
@ -659,8 +702,7 @@ const WindowManager = new Lang.Class({
|
|||||||
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
|
this._shellwm.connect('show-window-menu', Lang.bind(this, this._showWindowMenu));
|
||||||
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
|
this._shellwm.connect('minimize', Lang.bind(this, this._minimizeWindow));
|
||||||
this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow));
|
this._shellwm.connect('unminimize', Lang.bind(this, this._unminimizeWindow));
|
||||||
this._shellwm.connect('maximize', Lang.bind(this, this._maximizeWindow));
|
this._shellwm.connect('size-change', Lang.bind(this, this._sizeChangeWindow));
|
||||||
this._shellwm.connect('unmaximize', Lang.bind(this, this._unmaximizeWindow));
|
|
||||||
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
|
this._shellwm.connect('map', Lang.bind(this, this._mapWindow));
|
||||||
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
||||||
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
|
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
|
||||||
@ -880,15 +922,22 @@ const WindowManager = new Lang.Class({
|
|||||||
false, -1, 1);
|
false, -1, 1);
|
||||||
|
|
||||||
let gesture = new WorkspaceSwitchAction();
|
let gesture = new WorkspaceSwitchAction();
|
||||||
gesture.connect('activated', Lang.bind(this, function(action, direction) {
|
gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
|
||||||
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
|
|
||||||
this.actionMoveWorkspace(newWs);
|
|
||||||
}));
|
|
||||||
global.stage.add_action(gesture);
|
global.stage.add_action(gesture);
|
||||||
|
|
||||||
|
// This is not a normal Clutter.GestureAction, doesn't need add_action()
|
||||||
|
gesture = new TouchpadWorkspaceSwitchAction(global.stage);
|
||||||
|
gesture.connect('activated', Lang.bind(this, this._actionSwitchWorkspace));
|
||||||
|
|
||||||
gesture = new AppSwitchAction();
|
gesture = new AppSwitchAction();
|
||||||
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
gesture.connect('activated', Lang.bind(this, this._switchApp));
|
||||||
global.stage.add_action(gesture);
|
global.stage.add_action(gesture);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_actionSwitchWorkspace: function(action, direction) {
|
||||||
|
let newWs = global.screen.get_active_workspace().get_neighbor(direction);
|
||||||
|
this.actionMoveWorkspace(newWs);
|
||||||
},
|
},
|
||||||
|
|
||||||
_lookupIndex: function (windows, metaWindow) {
|
_lookupIndex: function (windows, metaWindow) {
|
||||||
@ -1170,22 +1219,119 @@ const WindowManager = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_sizeChangeWindow : function(shellwm, actor, whichChange, oldFrameRect, oldBufferRect) {
|
||||||
|
let types = [Meta.WindowType.NORMAL];
|
||||||
|
if (!this._shouldAnimateActor(actor, types)) {
|
||||||
|
shellwm.completed_size_change(actor);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_maximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) {
|
if (whichChange == Meta.SizeChange.FULLSCREEN)
|
||||||
shellwm.completed_maximize(actor);
|
this._fullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
|
||||||
|
else if (whichChange == Meta.SizeChange.UNFULLSCREEN)
|
||||||
|
this._unfullscreenWindow(shellwm, actor, oldFrameRect, oldBufferRect);
|
||||||
|
else
|
||||||
|
shellwm.completed_size_change(actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_maximizeWindowDone : function(shellwm, actor) {
|
_fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
||||||
|
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
||||||
|
actor.translation_x = oldFrameRect.x - monitor.x;
|
||||||
|
actor.translation_y = oldFrameRect.y - monitor.y;
|
||||||
|
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
||||||
},
|
},
|
||||||
|
|
||||||
_maximizeWindowOverwrite : function(shellwm, actor) {
|
_unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) {
|
||||||
|
let targetRect = actor.meta_window.get_frame_rect();
|
||||||
|
let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()];
|
||||||
|
actor.translation_x = -(targetRect.x - monitor.x);
|
||||||
|
actor.translation_y = -(targetRect.y - monitor.y);
|
||||||
|
this._fullscreenAnimation(shellwm, actor, oldFrameRect);
|
||||||
},
|
},
|
||||||
|
|
||||||
_unmaximizeWindow : function(shellwm, actor, targetX, targetY, targetWidth, targetHeight) {
|
_fullscreenAnimation: function(shellwm, actor, oldFrameRect) {
|
||||||
shellwm.completed_unmaximize(actor);
|
this._resizing.push(actor);
|
||||||
|
|
||||||
|
// Position a clone of the window on top of the old position,
|
||||||
|
// while actor updates are frozen.
|
||||||
|
// Note that the MetaWindow has up to date sizing information for
|
||||||
|
// the new geometry already.
|
||||||
|
let targetRect = actor.meta_window.get_frame_rect();
|
||||||
|
let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect);
|
||||||
|
let actorClone = new St.Widget({ content: actorContent });
|
||||||
|
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
|
||||||
|
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
|
||||||
|
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
|
||||||
|
Main.uiGroup.add_actor(actorClone);
|
||||||
|
|
||||||
|
actor.__fullscreenClone = actorClone;
|
||||||
|
|
||||||
|
let scaleX = targetRect.width / oldFrameRect.width;
|
||||||
|
let scaleY = targetRect.height / oldFrameRect.height;
|
||||||
|
|
||||||
|
// Now scale and fade out the clone
|
||||||
|
Tweener.addTween(actorClone,
|
||||||
|
{ x: targetRect.x,
|
||||||
|
y: targetRect.y,
|
||||||
|
scale_x: scaleX,
|
||||||
|
scale_y: scaleY,
|
||||||
|
opacity: 0,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad'
|
||||||
|
});
|
||||||
|
|
||||||
|
// Now set scale the actor to size it as the clone.
|
||||||
|
// Note that the caller of this function already set a translation
|
||||||
|
// on the actor.
|
||||||
|
actor.scale_x = 1 / scaleX;
|
||||||
|
actor.scale_y = 1 / scaleY;
|
||||||
|
|
||||||
|
// Scale it to its actual new size
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ scale_x: 1.0,
|
||||||
|
scale_y: 1.0,
|
||||||
|
translation_x: 0,
|
||||||
|
translation_y: 0,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: this._sizeChangeWindowDone,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [shellwm, actor],
|
||||||
|
onOverwrite: this._sizeChangeWindowOverwritten,
|
||||||
|
onOverwriteScope: this,
|
||||||
|
onOverwriteParams: [shellwm, actor]
|
||||||
|
});
|
||||||
|
|
||||||
|
// Now unfreeze actor updates, to get it to the new size.
|
||||||
|
// It's important that we don't wait until the animation is completed to
|
||||||
|
// do this, otherwise our scale will be applied to the old texture size.
|
||||||
|
shellwm.completed_size_change(actor);
|
||||||
},
|
},
|
||||||
|
|
||||||
_unmaximizeWindowDone : function(shellwm, actor) {
|
_sizeChangeWindowDone: function(shellwm, actor) {
|
||||||
|
if (this._removeEffect(this._resizing, actor)) {
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
actor.scale_x = 1.0;
|
||||||
|
actor.scale_y = 1.0;
|
||||||
|
actor.translation_x = 0;
|
||||||
|
actor.translation_y = 0;
|
||||||
|
|
||||||
|
let actorClone = actor.__fullscreenClone;
|
||||||
|
if (actorClone) {
|
||||||
|
actorClone.destroy();
|
||||||
|
delete actor.__fullscreenClone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_sizeChangeWindowOverwritten: function(shellwm, actor) {
|
||||||
|
if (this._removeEffect(this._resizing, actor)) {
|
||||||
|
let actorClone = actor.__fullscreenClone;
|
||||||
|
if (actorClone) {
|
||||||
|
actorClone.destroy();
|
||||||
|
delete actor.__fullscreenClone;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_hasAttachedDialogs: function(window, ignoreWindow) {
|
_hasAttachedDialogs: function(window, ignoreWindow) {
|
||||||
|
@ -74,7 +74,7 @@ const WindowMenu = new Lang.Class({
|
|||||||
window.make_above();
|
window.make_above();
|
||||||
}));
|
}));
|
||||||
if (window.is_above())
|
if (window.is_above())
|
||||||
item.setOrnament(PopupMenu.Ornament.DOT);
|
item.setOrnament(PopupMenu.Ornament.CHECK);
|
||||||
if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
|
if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
|
||||||
type == Meta.WindowType.DOCK ||
|
type == Meta.WindowType.DOCK ||
|
||||||
type == Meta.WindowType.DESKTOP ||
|
type == Meta.WindowType.DESKTOP ||
|
||||||
@ -93,7 +93,7 @@ const WindowMenu = new Lang.Class({
|
|||||||
window.stick();
|
window.stick();
|
||||||
}));
|
}));
|
||||||
if (isSticky)
|
if (isSticky)
|
||||||
item.setOrnament(PopupMenu.Ornament.DOT);
|
item.setOrnament(PopupMenu.Ornament.CHECK);
|
||||||
if (window.is_always_on_all_workspaces())
|
if (window.is_always_on_all_workspaces())
|
||||||
item.setSensitive(false);
|
item.setSensitive(false);
|
||||||
|
|
||||||
@ -101,13 +101,22 @@ const WindowMenu = new Lang.Class({
|
|||||||
|
|
||||||
if (!isSticky) {
|
if (!isSticky) {
|
||||||
let workspace = window.get_workspace();
|
let workspace = window.get_workspace();
|
||||||
let idx = workspace.index();
|
if (workspace != workspace.get_neighbor(Meta.MotionDirection.LEFT)) {
|
||||||
if (idx > 0) {
|
this.addAction(_("Move to Workspace Left"), Lang.bind(this, function(event) {
|
||||||
|
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.LEFT));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (workspace != workspace.get_neighbor(Meta.MotionDirection.RIGHT)) {
|
||||||
|
this.addAction(_("Move to Workspace Right"), Lang.bind(this, function(event) {
|
||||||
|
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.RIGHT));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (workspace != workspace.get_neighbor(Meta.MotionDirection.UP)) {
|
||||||
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
|
this.addAction(_("Move to Workspace Up"), Lang.bind(this, function(event) {
|
||||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
|
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.UP));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (idx < nWorkspaces) {
|
if (workspace != workspace.get_neighbor(Meta.MotionDirection.DOWN)) {
|
||||||
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
|
this.addAction(_("Move to Workspace Down"), Lang.bind(this, function(event) {
|
||||||
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
|
window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN));
|
||||||
}));
|
}));
|
||||||
@ -115,6 +124,39 @@ const WindowMenu = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let screen = global.screen;
|
||||||
|
let nMonitors = screen.get_n_monitors();
|
||||||
|
if (nMonitors > 1) {
|
||||||
|
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
|
||||||
|
let monitorIndex = window.get_monitor();
|
||||||
|
|
||||||
|
let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP);
|
||||||
|
if (upMonitorIndex != -1) {
|
||||||
|
this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) {
|
||||||
|
window.move_to_monitor(upMonitorIndex);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN);
|
||||||
|
if (downMonitorIndex != -1) {
|
||||||
|
this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) {
|
||||||
|
window.move_to_monitor(downMonitorIndex);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT);
|
||||||
|
if (leftMonitorIndex != -1) {
|
||||||
|
this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) {
|
||||||
|
window.move_to_monitor(leftMonitorIndex);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT);
|
||||||
|
if (rightMonitorIndex != -1) {
|
||||||
|
this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) {
|
||||||
|
window.move_to_monitor(rightMonitorIndex);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
|
||||||
item = this.addAction(_("Close"), Lang.bind(this, function(event) {
|
item = this.addAction(_("Close"), Lang.bind(this, function(event) {
|
||||||
@ -167,8 +209,12 @@ const WindowMenuManager = new Lang.Class({
|
|||||||
menu.connect('activate', function() {
|
menu.connect('activate', function() {
|
||||||
window.check_alive(global.get_current_time());
|
window.check_alive(global.get_current_time());
|
||||||
});
|
});
|
||||||
|
let destroyId = window.connect('unmanaged',
|
||||||
|
function() {
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
|
||||||
this._sourceActor.set_size(rect.width, rect.height);
|
this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height));
|
||||||
this._sourceActor.set_position(rect.x, rect.y);
|
this._sourceActor.set_position(rect.x, rect.y);
|
||||||
this._sourceActor.show();
|
this._sourceActor.show();
|
||||||
|
|
||||||
@ -180,6 +226,7 @@ const WindowMenuManager = new Lang.Class({
|
|||||||
|
|
||||||
this._sourceActor.hide();
|
this._sourceActor.hide();
|
||||||
menu.destroy();
|
menu.destroy();
|
||||||
|
window.disconnect(destroyId);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -50,6 +50,7 @@ nb
|
|||||||
ne
|
ne
|
||||||
nl
|
nl
|
||||||
nn
|
nn
|
||||||
|
oc
|
||||||
or
|
or
|
||||||
pa
|
pa
|
||||||
pl
|
pl
|
||||||
|
297
po/an.po
297
po/an.po
@ -9,24 +9,23 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2015-03-17 12:39+0000\n"
|
"POT-Creation-Date: 2015-07-23 08:08+0000\n"
|
||||||
"PO-Revision-Date: 2015-03-17 19:50+0100\n"
|
"PO-Revision-Date: 2015-04-28 08:40+0200\n"
|
||||||
"Last-Translator: Daniel Martinez <entaltoaragon@gmail.com>\n"
|
"Last-Translator: Daniel <entaltoaragon@gmail.com>\n"
|
||||||
"Language-Team: Aragonés <softaragones@googlegroups.com>\n"
|
"Language-Team: Aragonés <softaragones@googlegroups.com>\n"
|
||||||
"Language: an\n"
|
"Language: an\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 2.91.6\n"
|
"X-Generator: Pootle 2.5.1.1\n"
|
||||||
|
"X-POOTLE-MTIME: 1430206804.000000\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||||
#| msgid "%d new notification"
|
|
||||||
#| msgid_plural "%d new notifications"
|
|
||||||
msgid "Show the notification list"
|
msgid "Show the notification list"
|
||||||
msgstr "Amostrar a lista de notificacions"
|
msgstr "Amostrar a lista de notificacions"
|
||||||
|
|
||||||
@ -136,17 +135,18 @@ msgstr "Indiz de l'anvista seleccionada actual en o selector d'aplicacion."
|
|||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "Historico d'o dialogo de comandos (Alt+F2)"
|
msgstr "Historico d'o dialogo de comandos (Alt+F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
#. Translators: looking glass is a debugger and inspector tool, see https://live.gnome.org/GnomeShell/LookingGlass
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Historico d'o dialogo de \"looking glass\""
|
msgstr "Historico d'o dialogo de \"looking glass\""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||||
msgid "Always show the 'Log out' menu item in the user menu."
|
msgid "Always show the 'Log out' menu item in the user menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de "
|
"Amostrar siempre l'elemento de menú \"Trancar sesión\" en o menú de "
|
||||||
"l'usuario."
|
"l'usuario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
|
||||||
"user, single-session situations."
|
"user, single-session situations."
|
||||||
@ -154,14 +154,14 @@ msgstr ""
|
|||||||
"Ista clau sobrescribe a ocultación automatica de l'elemento de menú "
|
"Ista clau sobrescribe a ocultación automatica de l'elemento de menú "
|
||||||
"\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión."
|
"\"Trancar sesión\" en situacions d'un solo usuario u d'una sola sesión."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||||
msgid ""
|
msgid ""
|
||||||
"Whether to remember password for mounting encrypted or remote filesystems"
|
"Whether to remember password for mounting encrypted or remote filesystems"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u "
|
"Indica si se debe recordar a clau ta amontar sistemas de fichers remotos u "
|
||||||
"zifraus"
|
"zifraus"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||||
msgid ""
|
msgid ""
|
||||||
"The shell will request a password when an encrypted device or a remote "
|
"The shell will request a password when an encrypted device or a remote "
|
||||||
"filesystem is mounted. If the password can be saved for future use a "
|
"filesystem is mounted. If the password can be saved for future use a "
|
||||||
@ -173,81 +173,79 @@ msgstr ""
|
|||||||
"s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor "
|
"s'amostrará a caixeta \"Remerar clau\". Ista clau estableix a valor "
|
||||||
"predeterminada d'a caixeta."
|
"predeterminada d'a caixeta."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Amostrar a calendata d'a semana en o calendario"
|
msgstr "Amostrar a calendata d'a semana en o calendario"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||||
msgid "If true, display the ISO week date in the calendar."
|
msgid "If true, display the ISO week date in the calendar."
|
||||||
msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario."
|
msgstr "Si ye cierta, amuestra a calendata de semana ISO en o calandario."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||||
msgid "Keybinding to open the application menu"
|
msgid "Keybinding to open the application menu"
|
||||||
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación"
|
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||||
msgid "Keybinding to open the application menu."
|
msgid "Keybinding to open the application menu."
|
||||||
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación."
|
msgstr "Asociación de teclas ta ubrir o menú de l'aplicación."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||||
msgid "Keybinding to open the \"Show Applications\" view"
|
msgid "Keybinding to open the \"Show Applications\" view"
|
||||||
msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\""
|
msgstr "Asociación de teclas ta la vista \"Amostrar aplicacions\""
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista "
|
"Asociación de teclas ta ubrir la vista \"Amostrar aplicacions\" de la vista "
|
||||||
"d'actividatz."
|
"d'actividatz."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||||
msgid "Keybinding to open the overview"
|
msgid "Keybinding to open the overview"
|
||||||
msgstr "Asociación de teclas ta l'anvista cheneral"
|
msgstr "Asociación de teclas ta l'anvista cheneral"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||||
msgid "Keybinding to open the Activities Overview."
|
msgid "Keybinding to open the Activities Overview."
|
||||||
msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz"
|
msgstr "Asociación de teclas ta ubrir l'anvista d'actividatz"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||||
#| msgid "Keybinding to toggle the visibility of the message tray"
|
|
||||||
msgid "Keybinding to toggle the visibility of the notification list"
|
msgid "Keybinding to toggle the visibility of the notification list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions"
|
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||||
#| msgid "Keybinding to toggle the visibility of the message tray."
|
|
||||||
msgid "Keybinding to toggle the visibility of the notification list."
|
msgid "Keybinding to toggle the visibility of the notification list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions."
|
"Asociación de teclas ta cambiar a visibilidat d'a lista de notificacions."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||||
msgid "Keybinding to focus the active notification"
|
msgid "Keybinding to focus the active notification"
|
||||||
msgstr "Asociación de teclas ta dar o foco a la notificación activa"
|
msgstr "Asociación de teclas ta dar o foco a la notificación activa"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||||
msgid "Keybinding to focus the active notification."
|
msgid "Keybinding to focus the active notification."
|
||||||
msgstr "Asociación de teclas ta dar o foco a la notificación activa."
|
msgstr "Asociación de teclas ta dar o foco a la notificación activa."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Asociación de teclas que pausan y continan todas as execucions de «tweens», "
|
"Asociación de teclas que pausan y continan todas as execucions de «tweens», "
|
||||||
"ta propositos de depuraci'on"
|
"ta propositos de depuraci'on"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Que teclau usar"
|
msgstr "Que teclau usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "O tipo de teclau que usar."
|
msgstr "O tipo de teclau que usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
||||||
msgid "Limit switcher to current workspace."
|
msgid "Limit switcher to current workspace."
|
||||||
msgstr "Selector de limite ta l'aria de treballo actual."
|
msgstr "Selector de limite ta l'aria de treballo actual."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only applications that have windows on the current workspace are "
|
"If true, only applications that have windows on the current workspace are "
|
||||||
"shown in the switcher. Otherwise, all applications are included."
|
"shown in the switcher. Otherwise, all applications are included."
|
||||||
@ -256,21 +254,21 @@ msgstr ""
|
|||||||
"finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as "
|
"finestras en l'aria de treballo actual. D'atra man, s'incluirán todas as "
|
||||||
"aplicacions."
|
"aplicacions."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
||||||
msgid "The application icon mode."
|
msgid "The application icon mode."
|
||||||
msgstr "O modo d'icono de l'aplicación."
|
msgstr "O modo d'icono de l'aplicación."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
||||||
msgid ""
|
msgid ""
|
||||||
"Configures how the windows are shown in the switcher. Valid possibilities "
|
"Configures how the windows are shown in the switcher. Valid possibilities "
|
||||||
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
|
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' "
|
||||||
"only' (shows only the application icon) or 'both'."
|
"(shows only the application icon) or 'both'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Configura cómo s'amuestran as finestras en o selector. Os valore posibles "
|
"Configura cómo s'amuestran as finestras en o selector. Os valore posibles "
|
||||||
"son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-only"
|
"son \"thumbnail-only\" (amuestra una miniatura d'a finestra), \"app-icon-"
|
||||||
"\" (solament amuestra l'icono de l'aplicación) u \"both\"."
|
"only\" (solament amuestra l'icono de l'aplicación) u \"both\"."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, only windows from the current workspace are shown in the switcher. "
|
"If true, only windows from the current workspace are shown in the switcher. "
|
||||||
"Otherwise, all windows are included."
|
"Otherwise, all windows are included."
|
||||||
@ -278,31 +276,31 @@ msgstr ""
|
|||||||
"Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de "
|
"Si en ye verdadero, nomás s'amostrarán en o selector finestras de l'aria de "
|
||||||
"treballo actual. D'atra man, s'incluirán todas as finestras."
|
"treballo actual. D'atra man, s'incluirán todas as finestras."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
||||||
msgid "Attach modal dialog to the parent window"
|
msgid "Attach modal dialog to the parent window"
|
||||||
msgstr "Acoplar un dialogo modal a la finestra pai"
|
msgstr "Acoplar un dialogo modal a la finestra pai"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell."
|
"Ista clau sobrescribe a clau en org.gnome.mutter en executar GNOME Shell."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
||||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a "
|
"Activar o mosaico en os bordes en arrocegar finestras a os bordes d'a "
|
||||||
"finestra"
|
"finestra"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:40
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr "As arias de treballo se chestionan dinámicamente"
|
msgstr "As arias de treballo se chestionan dinámicamente"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:41
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
||||||
msgid "Workspaces only on primary monitor"
|
msgid "Workspaces only on primary monitor"
|
||||||
msgstr "Arias de treballo solament en a pantalla prencipal"
|
msgstr "Arias de treballo solament en a pantalla prencipal"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
|
#: ../data/org.gnome.shell.gschema.xml.in.in.h:43
|
||||||
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
msgid "Delay focus changes in mouse mode until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se"
|
"Retardo en cambiar o foco d'o churi dica que o puntero deixa de mover-se"
|
||||||
@ -311,12 +309,12 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Encetar sesión en o rete"
|
msgstr "Encetar sesión en o rete"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:"
|
msgstr "I habió una error en lanzar o diálogo de preferencias ta %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Extensions de GNOME Shell"
|
msgstr "Extensions de GNOME Shell"
|
||||||
|
|
||||||
@ -327,39 +325,39 @@ msgstr "Extensions de GNOME Shell"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Siguient"
|
msgstr "Siguient"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Desbloquiar"
|
msgstr "Desbloquiar"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:215
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Encetar sesión"
|
msgstr "Encetar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:280
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Esleyir a sesión"
|
msgstr "Esleyir a sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:420
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "No ye en a lista?"
|
msgstr "No ye en a lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:829
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(eix., usuario u %s)"
|
msgstr "(eix., usuario u %s)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:834 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Nombre d'usuario:"
|
msgstr "Nombre d'usuario: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1169
|
#: ../js/gdm/loginDialog.js:1180
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Finestra d'inicio de sesión"
|
msgstr "Finestra d'inicio de sesión"
|
||||||
|
|
||||||
@ -452,31 +450,31 @@ msgstr "%d de %B de %Y, %l∶%M %"
|
|||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "Rendrecera ta autentiación web"
|
msgstr "Rendrecera ta autentiación web"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:792
|
#: ../js/ui/appDisplay.js:789
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "As aplicaciones usadas freqüentment amaneixerán aquí"
|
msgstr "As aplicaciones usadas freqüentment amaneixerán aquí"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:912
|
#: ../js/ui/appDisplay.js:909
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Freqüent"
|
msgstr "Freqüent"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:919
|
#: ../js/ui/appDisplay.js:916
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todas"
|
msgstr "Todas"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1850
|
#: ../js/ui/appDisplay.js:1845
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Finestra nueva"
|
msgstr "Finestra nueva"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
#: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Sacar d'os favoritos"
|
msgstr "Sacar d'os favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1884
|
#: ../js/ui/appDisplay.js:1879
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Anyadir a os favoritos"
|
msgstr "Anyadir a os favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1894
|
#: ../js/ui/appDisplay.js:1889
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Amostrar detalles"
|
msgstr "Amostrar detalles"
|
||||||
|
|
||||||
@ -490,15 +488,19 @@ msgstr "S'ha anyadiu %s a os suyos favoritos."
|
|||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "S'ha sacau %s d'os suyos favoritos"
|
msgstr "S'ha sacau %s d'os suyos favoritos"
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
#: ../js/ui/status/system.js:337
|
|
||||||
msgid "Settings"
|
|
||||||
msgstr "Configuración"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:21
|
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Cambiar o fondo…"
|
msgstr "Cambiar o fondo…"
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:21
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Preferencias de pantalla"
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:357
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Configuración"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||||
#: ../js/ui/calendar.js:53
|
#: ../js/ui/calendar.js:53
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
@ -551,54 +553,53 @@ msgctxt "grid saturday"
|
|||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:563
|
#: ../js/ui/calendar.js:564
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Mes anterior"
|
msgstr "Mes anterior"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:573
|
#: ../js/ui/calendar.js:574
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Mes siguient"
|
msgstr "Mes siguient"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:780
|
#: ../js/ui/calendar.js:781
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Semana %V"
|
msgstr "Semana %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/calendar.js:1182
|
#: ../js/ui/calendar.js:1187
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Tot o diya"
|
msgstr "Tot o diya"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1288
|
#: ../js/ui/calendar.js:1289
|
||||||
msgid "Clear section"
|
msgid "Clear section"
|
||||||
msgstr "Limpiar a sección"
|
msgstr "Limpiar a sección"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1515
|
#: ../js/ui/calendar.js:1516
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Eventos"
|
msgstr "Eventos"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1524
|
#: ../js/ui/calendar.js:1525
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d de %B"
|
msgstr "%A, %d de %B"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1528
|
#: ../js/ui/calendar.js:1529
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %d de %B de %Y"
|
msgstr "%A, %d de %B de %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1613
|
#: ../js/ui/calendar.js:1614
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacions"
|
msgstr "Notificacions"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1764
|
#: ../js/ui/calendar.js:1765
|
||||||
#| msgid "Notifications"
|
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "No i hai notificacions"
|
msgstr "No i hai notificacions"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1767
|
#: ../js/ui/calendar.js:1768
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "No i hai eventos"
|
msgstr "No i hai eventos"
|
||||||
|
|
||||||
@ -634,23 +635,23 @@ msgstr "Connectar"
|
|||||||
#: ../js/ui/components/networkAgent.js:293
|
#: ../js/ui/components/networkAgent.js:293
|
||||||
#: ../js/ui/components/networkAgent.js:303
|
#: ../js/ui/components/networkAgent.js:303
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "Clau de paso:"
|
msgstr "Clau de paso: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:238
|
#: ../js/ui/components/networkAgent.js:238
|
||||||
msgid "Key: "
|
msgid "Key: "
|
||||||
msgstr "Clau:"
|
msgstr "Clau: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:277
|
#: ../js/ui/components/networkAgent.js:277
|
||||||
msgid "Identity: "
|
msgid "Identity: "
|
||||||
msgstr "Identidat:"
|
msgstr "Identidat: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:279
|
#: ../js/ui/components/networkAgent.js:279
|
||||||
msgid "Private key password: "
|
msgid "Private key password: "
|
||||||
msgstr "Clau d'a clau privada:"
|
msgstr "Clau d'a clau privada: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:291
|
#: ../js/ui/components/networkAgent.js:291
|
||||||
msgid "Service: "
|
msgid "Service: "
|
||||||
msgstr "Servicio:"
|
msgstr "Servicio: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:320
|
#: ../js/ui/components/networkAgent.js:320
|
||||||
#: ../js/ui/components/networkAgent.js:658
|
#: ../js/ui/components/networkAgent.js:658
|
||||||
@ -661,8 +662,8 @@ msgstr "O ret sin cordón requiere autenticación"
|
|||||||
#: ../js/ui/components/networkAgent.js:659
|
#: ../js/ui/components/networkAgent.js:659
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network “"
|
||||||
"“%s”."
|
"%s”."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"."
|
"S'amenesten claus u claus de zifrau ta accedir a o ret inalambrico\"%s\"."
|
||||||
|
|
||||||
@ -673,7 +674,7 @@ msgstr "Autenticación 802.1X cableada"
|
|||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:327
|
#: ../js/ui/components/networkAgent.js:327
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "Nombre d'o ret:"
|
msgstr "Nombre d'o ret: "
|
||||||
|
|
||||||
#: ../js/ui/components/networkAgent.js:332
|
#: ../js/ui/components/networkAgent.js:332
|
||||||
#: ../js/ui/components/networkAgent.js:666
|
#: ../js/ui/components/networkAgent.js:666
|
||||||
@ -733,7 +734,7 @@ msgstr "Prebe atra vegada."
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:768
|
#: ../js/ui/components/telepathyClient.js:757
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Agora %s se dice %s"
|
msgstr "Agora %s se dice %s"
|
||||||
@ -742,11 +743,11 @@ msgstr "Agora %s se dice %s"
|
|||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Finestras"
|
msgstr "Finestras"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Amostrar aplicacions"
|
msgstr "Amostrar aplicacions"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:453
|
#: ../js/ui/dash.js:449
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Tablero"
|
msgstr "Tablero"
|
||||||
|
|
||||||
@ -754,7 +755,6 @@ msgstr "Tablero"
|
|||||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/dateMenu.js:73
|
#: ../js/ui/dateMenu.js:73
|
||||||
#| msgid "%A %B %e, %Y"
|
|
||||||
msgid "%B %e %Y"
|
msgid "%B %e %Y"
|
||||||
msgstr "%B %e %Y"
|
msgstr "%B %e %Y"
|
||||||
|
|
||||||
@ -763,7 +763,6 @@ msgstr "%B %e %Y"
|
|||||||
#. * date, e.g. "Tuesday February 17 2015".
|
#. * date, e.g. "Tuesday February 17 2015".
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/dateMenu.js:80
|
#: ../js/ui/dateMenu.js:80
|
||||||
#| msgid "%A %B %e, %Y"
|
|
||||||
msgid "%A %B %e %Y"
|
msgid "%A %B %e %Y"
|
||||||
msgstr "%A %e de %B de %Y"
|
msgstr "%A %e de %B de %Y"
|
||||||
|
|
||||||
@ -772,7 +771,6 @@ msgid "Add world clocks…"
|
|||||||
msgstr "Adhibir reloches d'o mundo…"
|
msgstr "Adhibir reloches d'o mundo…"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:161
|
#: ../js/ui/dateMenu.js:161
|
||||||
#| msgid "Open Clocks"
|
|
||||||
msgid "World Clocks"
|
msgid "World Clocks"
|
||||||
msgstr "Reloches d'o mundo"
|
msgstr "Reloches d'o mundo"
|
||||||
|
|
||||||
@ -916,17 +914,16 @@ msgstr "Instalar"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?"
|
msgstr "Descargar y instalar \"%s\" dende extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclau"
|
msgstr "Teclau"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb */
|
#. translators: 'Hide' is a verb */
|
||||||
#: ../js/ui/legacyTray.js:64
|
#: ../js/ui/legacyTray.js:66
|
||||||
#| msgid "Hide Text"
|
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Amagar servilla"
|
msgstr "Amagar servilla"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:104
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Iconos d'estau"
|
msgstr "Iconos d'estau"
|
||||||
|
|
||||||
@ -982,7 +979,7 @@ msgstr "Veyer fuent"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Pachina web"
|
msgstr "Pachina web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2133
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informacion d'o sistema"
|
msgstr "Informacion d'o sistema"
|
||||||
|
|
||||||
@ -1024,7 +1021,7 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Introducir un comando"
|
msgstr "Introducir un comando"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Trancar"
|
msgstr "Trancar"
|
||||||
|
|
||||||
@ -1052,27 +1049,27 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d notificación nueva"
|
msgstr[0] "%d notificación nueva"
|
||||||
msgstr[1] "%d notificacions nuevas"
|
msgstr[1] "%d notificacions nuevas"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Blocar"
|
msgstr "Blocar"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:668
|
#: ../js/ui/screenShield.js:684
|
||||||
msgid "GNOME needs to lock the screen"
|
msgid "GNOME needs to lock the screen"
|
||||||
msgstr "GNOME ameneste blocar a pantalla"
|
msgstr "GNOME ameneste blocar a pantalla"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "No se podió blocar"
|
msgstr "No se podió blocar"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Una aplicación impidió o bloqueyo"
|
msgstr "Una aplicación impidió o bloqueyo"
|
||||||
|
|
||||||
#: ../js/ui/search.js:616
|
#: ../js/ui/search.js:617
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Mirando…"
|
msgstr "Mirando…"
|
||||||
|
|
||||||
#: ../js/ui/search.js:618
|
#: ../js/ui/search.js:619
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "No se troboron resultaus."
|
msgstr "No se troboron resultaus."
|
||||||
|
|
||||||
@ -1136,11 +1133,11 @@ msgstr "Refuso de teclas"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Teclas d'o ratet"
|
msgstr "Teclas d'o ratet"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:144
|
#: ../js/ui/status/accessibility.js:167
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Contraste alto"
|
msgstr "Contraste alto"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:193
|
#: ../js/ui/status/accessibility.js:202
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto gran"
|
msgstr "Texto gran"
|
||||||
|
|
||||||
@ -1174,7 +1171,7 @@ msgstr "No connectau"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Brilo"
|
msgstr "Brilo"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:603
|
#: ../js/ui/status/keyboard.js:736
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Amostrar a distribución d'o teclau"
|
msgstr "Amostrar a distribución d'o teclau"
|
||||||
|
|
||||||
@ -1268,7 +1265,7 @@ msgstr "O modo avión ye enchegau"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:814
|
#: ../js/ui/status/network.js:814
|
||||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||||
msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau."
|
msgstr "O Wi-Fi ye desactivau quan o modo avión ye enchegau."
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:815
|
#: ../js/ui/status/network.js:815
|
||||||
msgid "Turn Off Airplane Mode"
|
msgid "Turn Off Airplane Mode"
|
||||||
@ -1385,23 +1382,23 @@ msgstr "Modo avión"
|
|||||||
msgid "On"
|
msgid "On"
|
||||||
msgstr "Enchegau"
|
msgstr "Enchegau"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:317
|
#: ../js/ui/status/system.js:337
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambear d'usuario"
|
msgstr "Cambear d'usuario"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:322
|
#: ../js/ui/status/system.js:342
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Trancar sesion"
|
msgstr "Trancar sesion"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:341
|
#: ../js/ui/status/system.js:361
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Bloqueyo d'Orientación"
|
msgstr "Bloqueyo d'Orientación"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:349
|
#: ../js/ui/status/system.js:369
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:352
|
#: ../js/ui/status/system.js:372
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Amortar"
|
msgstr "Amortar"
|
||||||
|
|
||||||
@ -1433,27 +1430,27 @@ msgstr "Aplicacions"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Mirar"
|
msgstr "Mirar"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:19
|
#: ../js/ui/windowAttentionHandler.js:20
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "\"%s\" ye parau"
|
msgstr "\"%s\" ye parau"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:65
|
#: ../js/ui/windowManager.js:63
|
||||||
msgid "Do you want to keep these display settings?"
|
msgid "Do you want to keep these display settings?"
|
||||||
msgstr "Quiers mantener istas opcions de pantalla?"
|
msgstr "Quiers mantener istas opcions de pantalla?"
|
||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in lenght,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/windowManager.js:84
|
#: ../js/ui/windowManager.js:82
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "Revertir as opcions"
|
msgstr "Revertir as opcions"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:88
|
#: ../js/ui/windowManager.js:86
|
||||||
msgid "Keep Changes"
|
msgid "Keep Changes"
|
||||||
msgstr "Mantener os cambeos"
|
msgstr "Mantener os cambeos"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:107
|
#: ../js/ui/windowManager.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Settings changes will revert in %d second"
|
msgid "Settings changes will revert in %d second"
|
||||||
msgid_plural "Settings changes will revert in %d seconds"
|
msgid_plural "Settings changes will revert in %d seconds"
|
||||||
@ -1462,7 +1459,7 @@ msgstr[1] "Os cambeos d'as opcions serán revertius en %d segundos"
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height. */
|
#. * the width of the window and the second is the height. */
|
||||||
#: ../js/ui/windowManager.js:599
|
#: ../js/ui/windowManager.js:660
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
@ -1499,14 +1496,48 @@ msgstr "Siempre veyible"
|
|||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "Siempre en l'aria de treballo veyible"
|
msgstr "Siempre en l'aria de treballo veyible"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:106
|
#: ../js/ui/windowMenu.js:105
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Move to Workspace Up"
|
||||||
|
msgid "Move to Workspace Left"
|
||||||
|
msgstr "Mover a l'aria de treballo d'a cucha"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:110
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Move to Workspace Up"
|
||||||
|
msgid "Move to Workspace Right"
|
||||||
|
msgstr "Mover a l'aria de treballo d'a dreita"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:115
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Mover ta l'aria de treballo d'alto"
|
msgstr "Mover ta l'aria de treballo d'alto"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:111
|
#: ../js/ui/windowMenu.js:120
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Mover ta l'aria de treballo d'abaixo"
|
msgstr "Mover ta l'aria de treballo d'abaixo"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:136
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Move to Workspace Up"
|
||||||
|
msgid "Move to Monitor Up"
|
||||||
|
msgstr "Mover a la pantalla d'alto"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:142
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Move to Workspace Down"
|
||||||
|
msgid "Move to Monitor Down"
|
||||||
|
msgstr "Mover a la pantalla d'abaixo"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:148
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Move to Monitor Left"
|
||||||
|
msgstr "Mover a la pantalla d'a cucha"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:154
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Move to Monitor Right"
|
||||||
|
msgstr "Mover a la pantalla d'a dreita"
|
||||||
|
|
||||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Calandario d'Evolution"
|
msgstr "Calandario d'Evolution"
|
||||||
@ -1561,11 +1592,11 @@ msgstr "Desconoxiu"
|
|||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Ha fallau en aventar \"%s\""
|
msgstr "Ha fallau en aventar \"%s\""
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:714
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "As claus de paso no coinciden."
|
msgstr "As claus de paso no coinciden."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:722
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "A clau de paso no puede estar vueda"
|
msgstr "A clau de paso no puede estar vueda"
|
||||||
|
|
||||||
@ -1803,14 +1834,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgid "The maximum accuracy level of location."
|
#~ msgid "The maximum accuracy level of location."
|
||||||
#~ msgstr "O maximo libel de precisión d'ubicación."
|
#~ msgstr "O maximo libel de precisión d'ubicación."
|
||||||
|
|
||||||
#~| msgid ""
|
|
||||||
#~| "Configures the maximum level of location accuracy applications are "
|
|
||||||
#~| "allowed to see. Valid options are 'off' (disable location tracking), "
|
|
||||||
#~| "'country', 'city', 'neighborhood', 'street', and 'exact' (typically "
|
|
||||||
#~| "requires GPS receiver). Please keep in mind that this only controls what "
|
|
||||||
#~| "Geoclue will allow applications to see and they can find user's location "
|
|
||||||
#~| "on their own using network resources (albeit with street-level accuracy "
|
|
||||||
#~| "at best)."
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Configures the maximum level of location accuracy applications are "
|
#~ "Configures the maximum level of location accuracy applications are "
|
||||||
#~ "allowed to see. Valid options are 'off' (disable location tracking), "
|
#~ "allowed to see. Valid options are 'off' (disable location tracking), "
|
||||||
@ -1822,8 +1845,8 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Configura o ran maximo de precisión d'ubicación que as aplicacions "
|
#~ "Configura o ran maximo de precisión d'ubicación que as aplicacions "
|
||||||
#~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación "
|
#~ "pueden veyer. As opcions validas son 'off' (seguimiento d'ubicación "
|
||||||
#~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and "
|
#~ "desenchegau), 'country', 'city', 'neighborhood', 'street', and 'exact' "
|
||||||
#~ "'exact' (typicament requier GPS "
|
#~ "(typicament requier GPS "
|
||||||
|
|
||||||
#~ msgid "Arrangement of buttons on the titlebar"
|
#~ msgid "Arrangement of buttons on the titlebar"
|
||||||
#~ msgstr "Orden d'os botons en a barra de titol"
|
#~ msgstr "Orden d'os botons en a barra de titol"
|
||||||
@ -1968,7 +1991,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgid "Session…"
|
#~ msgid "Session…"
|
||||||
#~ msgstr "Sesión…"
|
#~ msgstr "Sesión…"
|
||||||
|
|
||||||
#~| msgid "Power Off"
|
|
||||||
#~ msgid "Power"
|
#~ msgid "Power"
|
||||||
#~ msgstr "Enerchía"
|
#~ msgstr "Enerchía"
|
||||||
|
|
||||||
@ -2132,11 +2154,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgid "%d%%"
|
#~ msgid "%d%%"
|
||||||
#~ msgstr "%d%%"
|
#~ msgstr "%d%%"
|
||||||
|
|
||||||
#~| msgid "AC adapter"
|
|
||||||
#~ msgid "AC Adapter"
|
#~ msgid "AC Adapter"
|
||||||
#~ msgstr "Adaptador de corrient"
|
#~ msgstr "Adaptador de corrient"
|
||||||
|
|
||||||
#~| msgid "Laptop battery"
|
|
||||||
#~ msgid "Laptop Battery"
|
#~ msgid "Laptop Battery"
|
||||||
#~ msgstr "Bateria d'o portatil"
|
#~ msgstr "Bateria d'o portatil"
|
||||||
|
|
||||||
@ -2149,11 +2169,9 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgid "PDA"
|
#~ msgid "PDA"
|
||||||
#~ msgstr "PDA"
|
#~ msgstr "PDA"
|
||||||
|
|
||||||
#~| msgid "Cell phone"
|
|
||||||
#~ msgid "Cell Phone"
|
#~ msgid "Cell Phone"
|
||||||
#~ msgstr "Telefono movil"
|
#~ msgstr "Telefono movil"
|
||||||
|
|
||||||
#~| msgid "Media player"
|
|
||||||
#~ msgid "Media Player"
|
#~ msgid "Media Player"
|
||||||
#~ msgstr "Reproductor multimeya"
|
#~ msgstr "Reproductor multimeya"
|
||||||
|
|
||||||
@ -2163,7 +2181,6 @@ msgstr "L'usuario refusó o dialogo d'autenticación"
|
|||||||
#~ msgid "Computer"
|
#~ msgid "Computer"
|
||||||
#~ msgstr "Equipo"
|
#~ msgstr "Equipo"
|
||||||
|
|
||||||
#~| msgid "Unknown"
|
|
||||||
#~ msgctxt "device"
|
#~ msgctxt "device"
|
||||||
#~ msgid "Unknown"
|
#~ msgid "Unknown"
|
||||||
#~ msgstr "Desconoxiu"
|
#~ msgstr "Desconoxiu"
|
||||||
|
968
po/pt_BR.po
968
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
168
po/sl.po
168
po/sl.po
@ -9,18 +9,18 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2015-03-15 08:36+0000\n"
|
"POT-Creation-Date: 2015-07-08 08:07+0000\n"
|
||||||
"PO-Revision-Date: 2015-03-15 09:41+0100\n"
|
"PO-Revision-Date: 2015-07-08 15:46+0100\n"
|
||||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||||
"Language: Slovenian\n"
|
"Language: sl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||||
"%100==4 ? 3 : 0);\n"
|
"%100==4 ? 3 : 0);\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 1.7.5\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@ -302,12 +302,12 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Omrežna prijava"
|
msgstr "Omrežna prijava"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
|
msgstr "Prišlo je do napake med nalaganjem pogovornega okna z možnosti za %s:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Razširitve lupine Gnome"
|
msgstr "Razširitve lupine Gnome"
|
||||||
|
|
||||||
@ -318,39 +318,39 @@ msgstr "Razširitve lupine Gnome"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Prekliči"
|
msgstr "Prekliči"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Naslednji"
|
msgstr "Naslednji"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Odkleni"
|
msgstr "Odkleni"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:215
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Prijava"
|
msgstr "Prijava"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:280
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Izbor seje"
|
msgstr "Izbor seje"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:421
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Ali je ni na seznamu?"
|
msgstr "Ali je ni na seznamu?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:847
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(na primer, uporabnika ali %s)"
|
msgstr "(na primer, uporabnika ali %s)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Uporabniško ime: "
|
msgstr "Uporabniško ime: "
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1170
|
#: ../js/gdm/loginDialog.js:1180
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Prijavno okno"
|
msgstr "Prijavno okno"
|
||||||
|
|
||||||
@ -443,31 +443,31 @@ msgstr "%B %d %Y, %l∶%M %p"
|
|||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "Preusmeritev spletnega overjanja"
|
msgstr "Preusmeritev spletnega overjanja"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:792
|
#: ../js/ui/appDisplay.js:789
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "Pogosto uporabljeni programi bodo prikazani tu"
|
msgstr "Pogosto uporabljeni programi bodo prikazani tu"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:912
|
#: ../js/ui/appDisplay.js:909
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Pogosto"
|
msgstr "Pogosto"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:919
|
#: ../js/ui/appDisplay.js:916
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Vse"
|
msgstr "Vse"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1850
|
#: ../js/ui/appDisplay.js:1845
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Novo okno"
|
msgstr "Novo okno"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
#: ../js/ui/appDisplay.js:1873 ../js/ui/dash.js:289
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Odstrani iz priljubljenih"
|
msgstr "Odstrani iz priljubljenih"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1884
|
#: ../js/ui/appDisplay.js:1879
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Dodaj med priljubljene"
|
msgstr "Dodaj med priljubljene"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1894
|
#: ../js/ui/appDisplay.js:1889
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Pokaži besedilo"
|
msgstr "Pokaži besedilo"
|
||||||
|
|
||||||
@ -481,15 +481,19 @@ msgstr "Program \"%s\" je dodan med priljubljeno."
|
|||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "Program \"%s\" je odstranjen iz priljubljenih."
|
msgstr "Program \"%s\" je odstranjen iz priljubljenih."
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
#: ../js/ui/status/system.js:337
|
|
||||||
msgid "Settings"
|
|
||||||
msgstr "Nastavitve"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:21
|
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Spremeni ozadje ..."
|
msgstr "Spremeni ozadje ..."
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:21
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Nastavitve zaslona"
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:357
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Nastavitve"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||||
#: ../js/ui/calendar.js:53
|
#: ../js/ui/calendar.js:53
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
@ -542,53 +546,53 @@ msgctxt "grid saturday"
|
|||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "S"
|
msgstr "S"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:563
|
#: ../js/ui/calendar.js:564
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Predhodni mesec"
|
msgstr "Predhodni mesec"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:573
|
#: ../js/ui/calendar.js:574
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Naslednji mesec"
|
msgstr "Naslednji mesec"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:780
|
#: ../js/ui/calendar.js:781
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Teden %V"
|
msgstr "Teden %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/calendar.js:1182
|
#: ../js/ui/calendar.js:1187
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Celodnevno"
|
msgstr "Celodnevno"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1288
|
#: ../js/ui/calendar.js:1289
|
||||||
msgid "Clear section"
|
msgid "Clear section"
|
||||||
msgstr "Počisti odsek"
|
msgstr "Počisti odsek"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1515
|
#: ../js/ui/calendar.js:1516
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Dogodki"
|
msgstr "Dogodki"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1524
|
#: ../js/ui/calendar.js:1525
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %d. %m."
|
msgstr "%A, %d. %m."
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1528
|
#: ../js/ui/calendar.js:1529
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %d %B %Y"
|
msgstr "%A, %d %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1613
|
#: ../js/ui/calendar.js:1614
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Obvestila"
|
msgstr "Obvestila"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1764
|
#: ../js/ui/calendar.js:1765
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Ni obvestil"
|
msgstr "Ni obvestil"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1767
|
#: ../js/ui/calendar.js:1768
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Ni dogodkov"
|
msgstr "Ni dogodkov"
|
||||||
|
|
||||||
@ -724,7 +728,7 @@ msgstr "Dejanje je spodletelo. Poskusite znova."
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:775
|
#: ../js/ui/components/telepathyClient.js:757
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s je sedaj znan kot v %s"
|
msgstr "%s je sedaj znan kot v %s"
|
||||||
@ -733,11 +737,11 @@ msgstr "%s je sedaj znan kot v %s"
|
|||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Okna"
|
msgstr "Okna"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Pokaži programe"
|
msgstr "Pokaži programe"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:453
|
#: ../js/ui/dash.js:449
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Pregledna plošča"
|
msgstr "Pregledna plošča"
|
||||||
|
|
||||||
@ -916,16 +920,16 @@ msgstr "Namesti"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
|
msgstr "Prejmi in namesti “%s” preko povezave na extensions.gnome.org?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tipkovnica"
|
msgstr "Tipkovnica"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb */
|
#. translators: 'Hide' is a verb */
|
||||||
#: ../js/ui/legacyTray.js:64
|
#: ../js/ui/legacyTray.js:66
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Skrij sistemsko vrstico"
|
msgstr "Skrij sistemsko vrstico"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:104
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Ikone stanja"
|
msgstr "Ikone stanja"
|
||||||
|
|
||||||
@ -981,7 +985,7 @@ msgstr "Poglej vir"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Spletna stran"
|
msgstr "Spletna stran"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2133
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Podrobnosti sistema"
|
msgstr "Podrobnosti sistema"
|
||||||
|
|
||||||
@ -1023,7 +1027,7 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Vnos ukaza"
|
msgstr "Vnos ukaza"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zapri"
|
msgstr "Zapri"
|
||||||
|
|
||||||
@ -1055,27 +1059,27 @@ msgstr[1] "%d novo obvestilo"
|
|||||||
msgstr[2] "%d novi obvestili"
|
msgstr[2] "%d novi obvestili"
|
||||||
msgstr[3] "%d nova obvestila"
|
msgstr[3] "%d nova obvestila"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Zakleni"
|
msgstr "Zakleni"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:668
|
#: ../js/ui/screenShield.js:684
|
||||||
msgid "GNOME needs to lock the screen"
|
msgid "GNOME needs to lock the screen"
|
||||||
msgstr "Zakleniti je treba zaslon"
|
msgstr "Zakleniti je treba zaslon"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "Zaklep ni mogoč"
|
msgstr "Zaklep ni mogoč"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Zaklep je preprečil program"
|
msgstr "Zaklep je preprečil program"
|
||||||
|
|
||||||
#: ../js/ui/search.js:616
|
#: ../js/ui/search.js:617
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Iskanje ..."
|
msgstr "Iskanje ..."
|
||||||
|
|
||||||
#: ../js/ui/search.js:618
|
#: ../js/ui/search.js:619
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Ni najdenih zadetkov."
|
msgstr "Ni najdenih zadetkov."
|
||||||
|
|
||||||
@ -1139,11 +1143,11 @@ msgstr "Odskočne tipke"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Miškine tipke"
|
msgstr "Miškine tipke"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:144
|
#: ../js/ui/status/accessibility.js:167
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Visok kontrast"
|
msgstr "Visok kontrast"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:193
|
#: ../js/ui/status/accessibility.js:202
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Veliko besedilo"
|
msgstr "Veliko besedilo"
|
||||||
|
|
||||||
@ -1179,7 +1183,7 @@ msgstr "Ni vzpostavljene povezave"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Svetlost"
|
msgstr "Svetlost"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:603
|
#: ../js/ui/status/keyboard.js:736
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Pokaži razporeditev tipkovnice"
|
msgstr "Pokaži razporeditev tipkovnice"
|
||||||
|
|
||||||
@ -1390,23 +1394,23 @@ msgstr "Način letala"
|
|||||||
msgid "On"
|
msgid "On"
|
||||||
msgstr "Povezano"
|
msgstr "Povezano"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:317
|
#: ../js/ui/status/system.js:337
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Preklopi uporabnika"
|
msgstr "Preklopi uporabnika"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:322
|
#: ../js/ui/status/system.js:342
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Odjava"
|
msgstr "Odjava"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:341
|
#: ../js/ui/status/system.js:361
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Zaklep položaja"
|
msgstr "Zaklep položaja"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:349
|
#: ../js/ui/status/system.js:369
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Zaustavi"
|
msgstr "Zaustavi"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:352
|
#: ../js/ui/status/system.js:372
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Izklop"
|
msgstr "Izklop"
|
||||||
|
|
||||||
@ -1438,27 +1442,27 @@ msgstr "Programi"
|
|||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Poišči"
|
msgstr "Poišči"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:19
|
#: ../js/ui/windowAttentionHandler.js:20
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "“%s” is ready"
|
msgid "“%s” is ready"
|
||||||
msgstr "“%s” storitev je pripravljena"
|
msgstr "“%s” storitev je pripravljena"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:65
|
#: ../js/ui/windowManager.js:63
|
||||||
msgid "Do you want to keep these display settings?"
|
msgid "Do you want to keep these display settings?"
|
||||||
msgstr "Ali želite ohraniti te nastavitve zaslona?"
|
msgstr "Ali želite ohraniti te nastavitve zaslona?"
|
||||||
|
|
||||||
#. Translators: this and the following message should be limited in lenght,
|
#. Translators: this and the following message should be limited in lenght,
|
||||||
#. to avoid ellipsizing the labels.
|
#. to avoid ellipsizing the labels.
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/windowManager.js:84
|
#: ../js/ui/windowManager.js:82
|
||||||
msgid "Revert Settings"
|
msgid "Revert Settings"
|
||||||
msgstr "Povrni nastavitve"
|
msgstr "Povrni nastavitve"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:88
|
#: ../js/ui/windowManager.js:86
|
||||||
msgid "Keep Changes"
|
msgid "Keep Changes"
|
||||||
msgstr "Sledi spremembam"
|
msgstr "Sledi spremembam"
|
||||||
|
|
||||||
#: ../js/ui/windowManager.js:107
|
#: ../js/ui/windowManager.js:105
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "Settings changes will revert in %d second"
|
msgid "Settings changes will revert in %d second"
|
||||||
msgid_plural "Settings changes will revert in %d seconds"
|
msgid_plural "Settings changes will revert in %d seconds"
|
||||||
@ -1469,7 +1473,7 @@ msgstr[3] "Spremembe nastavitev bodo povrnjene v %d sekundah."
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height. */
|
#. * the width of the window and the second is the height. */
|
||||||
#: ../js/ui/windowManager.js:599
|
#: ../js/ui/windowManager.js:604
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
@ -1506,14 +1510,38 @@ msgstr "Vedno na vrhu"
|
|||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "Vedno na dejavni delovni površini"
|
msgstr "Vedno na dejavni delovni površini"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:106
|
#: ../js/ui/windowMenu.js:105
|
||||||
|
msgid "Move to Workspace Left"
|
||||||
|
msgstr "Premakni na delovno površino na levi"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:110
|
||||||
|
msgid "Move to Workspace Right"
|
||||||
|
msgstr "Premakni na delovno površino na desni"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:115
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Premakni na zgornjo delovno površino"
|
msgstr "Premakni na zgornjo delovno površino"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:111
|
#: ../js/ui/windowMenu.js:120
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Premakni na spodnjo delovno površino"
|
msgstr "Premakni na spodnjo delovno površino"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:136
|
||||||
|
msgid "Move to Monitor Up"
|
||||||
|
msgstr "\t"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:142
|
||||||
|
msgid "Move to Monitor Down"
|
||||||
|
msgstr "Premakni na zaslon spodaj"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:148
|
||||||
|
msgid "Move to Monitor Left"
|
||||||
|
msgstr "Premakni na zaslon levo"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:154
|
||||||
|
msgid "Move to Monitor Right"
|
||||||
|
msgstr "Premakni na zaslon desno"
|
||||||
|
|
||||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Koledar Evolution "
|
msgstr "Koledar Evolution "
|
||||||
@ -1570,11 +1598,11 @@ msgstr "Neznano"
|
|||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Zaganjanje “%s” je spodletelo"
|
msgstr "Zaganjanje “%s” je spodletelo"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:714
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Gesli se ne skladata."
|
msgstr "Gesli se ne skladata."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:722
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "Geslo ne more biti prazno"
|
msgstr "Geslo ne more biti prazno"
|
||||||
|
|
||||||
|
747
po/sr@latin.po
747
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
163
po/tg.po
163
po/tg.po
@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: Tajik Gnome\n"
|
"Project-Id-Version: Tajik Gnome\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2015-03-13 20:44+0000\n"
|
"POT-Creation-Date: 2015-06-24 20:04+0000\n"
|
||||||
"PO-Revision-Date: 2015-03-14 09:50+0500\n"
|
"PO-Revision-Date: 2015-06-25 10:20+0500\n"
|
||||||
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
|
"Last-Translator: Victor Ibragimov <victor.ibragimov@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: tg\n"
|
"Language: tg\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 1.6.5\n"
|
"X-Generator: Poedit 1.7.5\n"
|
||||||
|
|
||||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||||
msgid "System"
|
msgid "System"
|
||||||
@ -305,14 +305,14 @@ msgstr ""
|
|||||||
msgid "Network Login"
|
msgid "Network Login"
|
||||||
msgstr "Воридшавии шабакавӣ"
|
msgstr "Воридшавии шабакавӣ"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:123
|
#: ../js/extensionPrefs/main.js:122
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд "
|
"Ҳангоми боркунии равзанаи гуфтугӯи хусусиятҳо барои %s хатогие ба вуҷуд "
|
||||||
"омадааст:"
|
"омадааст:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:155
|
#: ../js/extensionPrefs/main.js:154
|
||||||
msgid "GNOME Shell Extensions"
|
msgid "GNOME Shell Extensions"
|
||||||
msgstr "Пасвандҳои восити GNOME"
|
msgstr "Пасвандҳои восити GNOME"
|
||||||
|
|
||||||
@ -323,39 +323,39 @@ msgstr "Пасвандҳои восити GNOME"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Бекор кардан"
|
msgstr "Бекор кардан"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||||
msgid "Next"
|
msgid "Next"
|
||||||
msgstr "Навбатӣ"
|
msgstr "Навбатӣ"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||||
#: ../js/ui/unlockDialog.js:59
|
#: ../js/ui/unlockDialog.js:59
|
||||||
msgid "Unlock"
|
msgid "Unlock"
|
||||||
msgstr "Кушодан"
|
msgstr "Кушодан"
|
||||||
|
|
||||||
#: ../js/gdm/authPrompt.js:215
|
#: ../js/gdm/authPrompt.js:213
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Ворид шудан"
|
msgstr "Ворид шудан"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:280
|
#: ../js/gdm/loginDialog.js:281
|
||||||
msgid "Choose Session"
|
msgid "Choose Session"
|
||||||
msgstr "Интихоби ҷаласа"
|
msgstr "Интихоби ҷаласа"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:421
|
#: ../js/gdm/loginDialog.js:431
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Вуҷуд надора?"
|
msgstr "Вуҷуд надора?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:830
|
#: ../js/gdm/loginDialog.js:840
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "(e.g., user or %s)"
|
msgid "(e.g., user or %s)"
|
||||||
msgstr "(масалан, корбар ё %s)"
|
msgstr "(масалан, корбар ё %s)"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
|
#: ../js/gdm/loginDialog.js:845 ../js/ui/components/networkAgent.js:271
|
||||||
#: ../js/ui/components/networkAgent.js:289
|
#: ../js/ui/components/networkAgent.js:289
|
||||||
msgid "Username: "
|
msgid "Username: "
|
||||||
msgstr "Номи корбар:"
|
msgstr "Номи корбар:"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1170
|
#: ../js/gdm/loginDialog.js:1173
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Равзанаи воридшавӣ"
|
msgstr "Равзанаи воридшавӣ"
|
||||||
|
|
||||||
@ -448,31 +448,31 @@ msgstr "%B %d %Y, %l∶%M %p"
|
|||||||
msgid "Web Authentication Redirect"
|
msgid "Web Authentication Redirect"
|
||||||
msgstr "Бозфиристодани санҷиши ҳаққонияти веб"
|
msgstr "Бозфиристодани санҷиши ҳаққонияти веб"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:792
|
#: ../js/ui/appDisplay.js:788
|
||||||
msgid "Frequently used applications will appear here"
|
msgid "Frequently used applications will appear here"
|
||||||
msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд"
|
msgstr "Барномаҳои бештар истифодашуда ин ҷо намоиш дода мешаванд"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:912
|
#: ../js/ui/appDisplay.js:908
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Роиҷ"
|
msgstr "Роиҷ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:919
|
#: ../js/ui/appDisplay.js:915
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Ҳама"
|
msgstr "Ҳама"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1850
|
#: ../js/ui/appDisplay.js:1844
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Равзанаи нав"
|
msgstr "Равзанаи нав"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
|
#: ../js/ui/appDisplay.js:1872 ../js/ui/dash.js:289
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Тоза кардан аз Баргузидаҳо"
|
msgstr "Тоза кардан аз Баргузидаҳо"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1884
|
#: ../js/ui/appDisplay.js:1878
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Илова кардан ба Баргузидаҳо"
|
msgstr "Илова кардан ба Баргузидаҳо"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:1894
|
#: ../js/ui/appDisplay.js:1888
|
||||||
msgid "Show Details"
|
msgid "Show Details"
|
||||||
msgstr "Намоиш додани тафсилот"
|
msgstr "Намоиш додани тафсилот"
|
||||||
|
|
||||||
@ -486,15 +486,19 @@ msgstr "%s ба баргузидаҳои шумо илова шудааст."
|
|||||||
msgid "%s has been removed from your favorites."
|
msgid "%s has been removed from your favorites."
|
||||||
msgstr "%s аз баргузидаҳои шумо тоза шудааст."
|
msgstr "%s аз баргузидаҳои шумо тоза шудааст."
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
#: ../js/ui/backgroundMenu.js:19
|
||||||
#: ../js/ui/status/system.js:337
|
|
||||||
msgid "Settings"
|
|
||||||
msgstr "Танзимот"
|
|
||||||
|
|
||||||
#: ../js/ui/backgroundMenu.js:21
|
|
||||||
msgid "Change Background…"
|
msgid "Change Background…"
|
||||||
msgstr "Тағйир додани пазсамина..."
|
msgstr "Тағйир додани пазсамина..."
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:21
|
||||||
|
msgid "Display Settings"
|
||||||
|
msgstr "Танзимоти дисплей"
|
||||||
|
|
||||||
|
#: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650
|
||||||
|
#: ../js/ui/status/system.js:357
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Танзимот"
|
||||||
|
|
||||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||||
#: ../js/ui/calendar.js:53
|
#: ../js/ui/calendar.js:53
|
||||||
msgctxt "calendar-no-work"
|
msgctxt "calendar-no-work"
|
||||||
@ -547,53 +551,53 @@ msgctxt "grid saturday"
|
|||||||
msgid "S"
|
msgid "S"
|
||||||
msgstr "Ш"
|
msgstr "Ш"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:563
|
#: ../js/ui/calendar.js:564
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Моҳи қаблӣ"
|
msgstr "Моҳи қаблӣ"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:573
|
#: ../js/ui/calendar.js:574
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Моҳи навбатӣ"
|
msgstr "Моҳи навбатӣ"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:780
|
#: ../js/ui/calendar.js:781
|
||||||
msgid "Week %V"
|
msgid "Week %V"
|
||||||
msgstr "Ҳафтаи %V"
|
msgstr "Ҳафтаи %V"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list for all day events
|
#. Translators: Shown in calendar event list for all day events
|
||||||
#. * Keep it short, best if you can use less then 10 characters
|
#. * Keep it short, best if you can use less then 10 characters
|
||||||
#. */
|
#. */
|
||||||
#: ../js/ui/calendar.js:1182
|
#: ../js/ui/calendar.js:1187
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Тамоми рӯз"
|
msgstr "Тамоми рӯз"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1288
|
#: ../js/ui/calendar.js:1289
|
||||||
msgid "Clear section"
|
msgid "Clear section"
|
||||||
msgstr "Пок кардани қисмат"
|
msgstr "Пок кардани қисмат"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1515
|
#: ../js/ui/calendar.js:1516
|
||||||
msgid "Events"
|
msgid "Events"
|
||||||
msgstr "Рӯйдодҳо"
|
msgstr "Рӯйдодҳо"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1524
|
#: ../js/ui/calendar.js:1525
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d"
|
msgid "%A, %B %d"
|
||||||
msgstr "%A, %B %d"
|
msgstr "%A, %B %d"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1528
|
#: ../js/ui/calendar.js:1529
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
msgid "%A, %B %d, %Y"
|
msgid "%A, %B %d, %Y"
|
||||||
msgstr "%A, %B %d, %Y"
|
msgstr "%A, %B %d, %Y"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1613
|
#: ../js/ui/calendar.js:1614
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Огоҳиҳо"
|
msgstr "Огоҳиҳо"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1764
|
#: ../js/ui/calendar.js:1765
|
||||||
msgid "No Notifications"
|
msgid "No Notifications"
|
||||||
msgstr "Ягон огоҳӣ нест"
|
msgstr "Ягон огоҳӣ нест"
|
||||||
|
|
||||||
#: ../js/ui/calendar.js:1767
|
#: ../js/ui/calendar.js:1768
|
||||||
msgid "No Events"
|
msgid "No Events"
|
||||||
msgstr "Ягон рӯйдод нест"
|
msgstr "Ягон рӯйдод нест"
|
||||||
|
|
||||||
@ -729,7 +733,7 @@ msgstr "Мутаассифона, ин амал иҷро нашуд. Лутфа
|
|||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name. */
|
#. IM name. */
|
||||||
#: ../js/ui/components/telepathyClient.js:775
|
#: ../js/ui/components/telepathyClient.js:757
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s аллакой бо номи %s номида мешавад"
|
msgstr "%s аллакой бо номи %s номида мешавад"
|
||||||
@ -738,11 +742,11 @@ msgstr "%s аллакой бо номи %s номида мешавад"
|
|||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Равзанаҳо"
|
msgstr "Равзанаҳо"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
|
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
|
||||||
msgid "Show Applications"
|
msgid "Show Applications"
|
||||||
msgstr "Намоиш додани барномаҳо"
|
msgstr "Намоиш додани барномаҳо"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:453
|
#: ../js/ui/dash.js:449
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Рах"
|
msgstr "Рах"
|
||||||
|
|
||||||
@ -910,17 +914,16 @@ msgstr "Насб кардан"
|
|||||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||||
msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
|
msgstr "“%s”-ро аз extensions.gnome.org боргирӣ ва насб мекунед?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
|
#: ../js/ui/keyboard.js:747 ../js/ui/status/keyboard.js:713
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Клавиатура"
|
msgstr "Клавиатура"
|
||||||
|
|
||||||
#. translators: 'Hide' is a verb */
|
#. translators: 'Hide' is a verb */
|
||||||
#: ../js/ui/legacyTray.js:59
|
#: ../js/ui/legacyTray.js:66
|
||||||
#| msgid "Hide Text"
|
|
||||||
msgid "Hide tray"
|
msgid "Hide tray"
|
||||||
msgstr "Пинҳон кардани лавҳа"
|
msgstr "Пинҳон кардани лавҳа"
|
||||||
|
|
||||||
#: ../js/ui/legacyTray.js:91
|
#: ../js/ui/legacyTray.js:107
|
||||||
msgid "Status Icons"
|
msgid "Status Icons"
|
||||||
msgstr "Нишонаҳои вазъият"
|
msgstr "Нишонаҳои вазъият"
|
||||||
|
|
||||||
@ -976,7 +979,7 @@ msgstr "Намоиш додани манбаъ"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Саҳифаи веб"
|
msgstr "Саҳифаи веб"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2133
|
#: ../js/ui/messageTray.js:1486
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Маълумоти система"
|
msgstr "Маълумоти система"
|
||||||
|
|
||||||
@ -1018,7 +1021,7 @@ msgstr "toggle-switch-us"
|
|||||||
msgid "Enter a Command"
|
msgid "Enter a Command"
|
||||||
msgstr "Фармонеро ворид кунед"
|
msgstr "Фармонеро ворид кунед"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:120
|
#: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Пӯшидан"
|
msgstr "Пӯшидан"
|
||||||
|
|
||||||
@ -1046,27 +1049,27 @@ msgid_plural "%d new notifications"
|
|||||||
msgstr[0] "%d огоҳии нав"
|
msgstr[0] "%d огоҳии нав"
|
||||||
msgstr[1] "%d огоҳии нав"
|
msgstr[1] "%d огоҳии нав"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:365
|
||||||
msgid "Lock"
|
msgid "Lock"
|
||||||
msgstr "Қулф кардан"
|
msgstr "Қулф кардан"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:668
|
#: ../js/ui/screenShield.js:684
|
||||||
msgid "GNOME needs to lock the screen"
|
msgid "GNOME needs to lock the screen"
|
||||||
msgstr "GNOME бояд экранро қулф кунад"
|
msgstr "GNOME бояд экранро қулф кунад"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||||
msgid "Unable to lock"
|
msgid "Unable to lock"
|
||||||
msgstr "Қулф карда намешавад"
|
msgstr "Қулф карда намешавад"
|
||||||
|
|
||||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||||
msgid "Lock was blocked by an application"
|
msgid "Lock was blocked by an application"
|
||||||
msgstr "Қулф аз тарави барнома баста шудааст"
|
msgstr "Қулф аз тарави барнома баста шудааст"
|
||||||
|
|
||||||
#: ../js/ui/search.js:616
|
#: ../js/ui/search.js:617
|
||||||
msgid "Searching…"
|
msgid "Searching…"
|
||||||
msgstr "Ҷустуҷӯ рафта истодааст..."
|
msgstr "Ҷустуҷӯ рафта истодааст..."
|
||||||
|
|
||||||
#: ../js/ui/search.js:618
|
#: ../js/ui/search.js:619
|
||||||
msgid "No results."
|
msgid "No results."
|
||||||
msgstr "Ягон натиҷа нест."
|
msgstr "Ягон натиҷа нест."
|
||||||
|
|
||||||
@ -1130,11 +1133,11 @@ msgstr "Тугмаҳои ҷастухез"
|
|||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
msgstr "Тугмаҳои муш"
|
msgstr "Тугмаҳои муш"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:144
|
#: ../js/ui/status/accessibility.js:167
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Контрасти баланд"
|
msgstr "Контрасти баланд"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:193
|
#: ../js/ui/status/accessibility.js:202
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Матни бузург"
|
msgstr "Матни бузург"
|
||||||
|
|
||||||
@ -1168,7 +1171,7 @@ msgstr "Пайваст нашудааст"
|
|||||||
msgid "Brightness"
|
msgid "Brightness"
|
||||||
msgstr "Дурахшонӣ"
|
msgstr "Дурахшонӣ"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:603
|
#: ../js/ui/status/keyboard.js:736
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "Намоиш додани тарҳбандии клавиатура"
|
msgstr "Намоиш додани тарҳбандии клавиатура"
|
||||||
|
|
||||||
@ -1379,23 +1382,23 @@ msgstr "Ҳолати ҳавопаймо"
|
|||||||
msgid "On"
|
msgid "On"
|
||||||
msgstr "Фаъол"
|
msgstr "Фаъол"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:317
|
#: ../js/ui/status/system.js:337
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Таъвизи корбар"
|
msgstr "Таъвизи корбар"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:322
|
#: ../js/ui/status/system.js:342
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Баромад"
|
msgstr "Баромад"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:341
|
#: ../js/ui/status/system.js:361
|
||||||
msgid "Orientation Lock"
|
msgid "Orientation Lock"
|
||||||
msgstr "Қулфи самт"
|
msgstr "Қулфи самт"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:349
|
#: ../js/ui/status/system.js:369
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Таваққуф"
|
msgstr "Таваққуф"
|
||||||
|
|
||||||
#: ../js/ui/status/system.js:352
|
#: ../js/ui/status/system.js:372
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Хомӯш кардан"
|
msgstr "Хомӯш кардан"
|
||||||
|
|
||||||
@ -1456,7 +1459,7 @@ msgstr[1] "Тағйироти танзимот баъд аз %d сония ба
|
|||||||
|
|
||||||
#. Translators: This represents the size of a window. The first number is
|
#. Translators: This represents the size of a window. The first number is
|
||||||
#. * the width of the window and the second is the height. */
|
#. * the width of the window and the second is the height. */
|
||||||
#: ../js/ui/windowManager.js:599
|
#: ../js/ui/windowManager.js:605
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgid "%d x %d"
|
msgid "%d x %d"
|
||||||
msgstr "%d x %d"
|
msgstr "%d x %d"
|
||||||
@ -1493,14 +1496,38 @@ msgstr "Ҳамеша дар боло"
|
|||||||
msgid "Always on Visible Workspace"
|
msgid "Always on Visible Workspace"
|
||||||
msgstr "Ҳамеша дар фазои кории намоён"
|
msgstr "Ҳамеша дар фазои кории намоён"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:106
|
#: ../js/ui/windowMenu.js:105
|
||||||
|
msgid "Move to Workspace Left"
|
||||||
|
msgstr "Интиқол додан ба фазои кории чап"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:110
|
||||||
|
msgid "Move to Workspace Right"
|
||||||
|
msgstr "Интиқол додан ба фазои кории рост"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:115
|
||||||
msgid "Move to Workspace Up"
|
msgid "Move to Workspace Up"
|
||||||
msgstr "Интиқол додан ба фазои кории боло"
|
msgstr "Интиқол додан ба фазои кории боло"
|
||||||
|
|
||||||
#: ../js/ui/windowMenu.js:111
|
#: ../js/ui/windowMenu.js:120
|
||||||
msgid "Move to Workspace Down"
|
msgid "Move to Workspace Down"
|
||||||
msgstr "Интиқол додан ба фазои кории поён"
|
msgstr "Интиқол додан ба фазои кории поён"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:136
|
||||||
|
msgid "Move to Monitor Up"
|
||||||
|
msgstr "Интиқол ба канори болои монитор"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:142
|
||||||
|
msgid "Move to Monitor Down"
|
||||||
|
msgstr "Интиқол ба канори поёни монитор"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:148
|
||||||
|
msgid "Move to Monitor Left"
|
||||||
|
msgstr "Интиқол ба канори чапи монитор"
|
||||||
|
|
||||||
|
#: ../js/ui/windowMenu.js:154
|
||||||
|
msgid "Move to Monitor Right"
|
||||||
|
msgstr "Интиқол ба канори рости монитор"
|
||||||
|
|
||||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||||
msgid "Evolution Calendar"
|
msgid "Evolution Calendar"
|
||||||
msgstr "Ӣақвими Evolution"
|
msgstr "Ӣақвими Evolution"
|
||||||
@ -1544,21 +1571,21 @@ msgstr ""
|
|||||||
msgid "List possible modes"
|
msgid "List possible modes"
|
||||||
msgstr "Рӯйхати ҳолатҳои имконпазир"
|
msgstr "Рӯйхати ҳолатҳои имконпазир"
|
||||||
|
|
||||||
#: ../src/shell-app.c:247
|
#: ../src/shell-app.c:239
|
||||||
msgctxt "program"
|
msgctxt "program"
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Номаълум"
|
msgstr "Номаълум"
|
||||||
|
|
||||||
#: ../src/shell-app.c:488
|
#: ../src/shell-app.c:480
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to launch “%s”"
|
msgid "Failed to launch “%s”"
|
||||||
msgstr "Оғози “%s” қатъ шудааст"
|
msgstr "Оғози “%s” қатъ шудааст"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:714
|
#: ../src/shell-keyring-prompt.c:742
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "Паролҳо мувофиқат намекунанд."
|
msgstr "Паролҳо мувофиқат намекунанд."
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:722
|
#: ../src/shell-keyring-prompt.c:750
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "Парол бояд холӣ набошад"
|
msgstr "Парол бояд холӣ набошад"
|
||||||
|
|
||||||
@ -1787,7 +1814,7 @@ msgstr "Равзанаи гуфтугӯи санҷиши ҳакконият бо
|
|||||||
#~ "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад"
|
#~ "маҳдудиятҳое, ки бо китобхонаи рамзгузорӣ таъин шудаанд, дарозтар мебошад"
|
||||||
|
|
||||||
#~ msgid "Internal error"
|
#~ msgid "Internal error"
|
||||||
#~ msgstr "Хатогии дохилӣ"
|
#~ msgstr "Хатои дохилӣ"
|
||||||
|
|
||||||
#~ msgid "Unable to connect to %s"
|
#~ msgid "Unable to connect to %s"
|
||||||
#~ msgstr "Пайвастшавӣ ба %s имконнопазир аст"
|
#~ msgstr "Пайвастшавӣ ба %s имконнопазир аст"
|
||||||
|
866
po/zh_CN.po
866
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
693
po/zh_TW.po
693
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user