Compare commits
320 Commits
3.26.0
...
3.27.91-re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de29627855 | ||
|
|
54dcff3aa2 | ||
|
|
bcd5882081 | ||
|
|
69f56578a3 | ||
|
|
c00e092456 | ||
|
|
a8cee14417 | ||
|
|
8a89b0007c | ||
|
|
6934b83f44 | ||
|
|
37aab9280a | ||
|
|
49e8bc8a52 | ||
|
|
abd6b7affd | ||
|
|
748223b896 | ||
|
|
c75eac27a8 | ||
|
|
ac502c921d | ||
|
|
134765c634 | ||
|
|
5149d6eb40 | ||
|
|
006cdac531 | ||
|
|
61bc1a7d6f | ||
|
|
86ab3878e7 | ||
|
|
f2d0e5021a | ||
|
|
6d8286614f | ||
|
|
70fcf745b8 | ||
|
|
589e999049 | ||
|
|
d8f2f583e6 | ||
|
|
db866eb052 | ||
|
|
d092e913d6 | ||
|
|
6147be3dff | ||
|
|
57f55d486d | ||
|
|
6be56de140 | ||
|
|
206ca43c91 | ||
|
|
f8f1bcfa9e | ||
|
|
91df801ffb | ||
|
|
97f142d1cc | ||
|
|
5ea3a4ecbb | ||
|
|
fbd5a74a0b | ||
|
|
58bb61e161 | ||
|
|
dbd053020a | ||
|
|
c063d43be8 | ||
|
|
35b77a61c8 | ||
|
|
32547d2eff | ||
|
|
dc37ee2782 | ||
|
|
371e5df568 | ||
|
|
cc4e007148 | ||
|
|
c0d9b08ef9 | ||
|
|
d99cd279d2 | ||
|
|
d670a1aa78 | ||
|
|
76b396846d | ||
|
|
bd0105ba8d | ||
|
|
6dcce19932 | ||
|
|
cc40a885ef | ||
|
|
513c278077 | ||
|
|
ac8ee9a08c | ||
|
|
952c1fefa2 | ||
|
|
18b8f9bfed | ||
|
|
f08417b618 | ||
|
|
62c9713361 | ||
|
|
efd7a4af5e | ||
|
|
3a914a915e | ||
|
|
aa6561a3b1 | ||
|
|
9eb9623288 | ||
|
|
8c988aa632 | ||
|
|
13cf19e0b6 | ||
|
|
eac0e253e1 | ||
|
|
7346419295 | ||
|
|
3e77f6704b | ||
|
|
01e27a4366 | ||
|
|
4e3b26d2ed | ||
|
|
5f05112b9a | ||
|
|
6cf7d2d47f | ||
|
|
1139ace244 | ||
|
|
bd9a300801 | ||
|
|
2d090f9232 | ||
|
|
1c8aebd811 | ||
|
|
31eafba93a | ||
|
|
5eacdf7af7 | ||
|
|
ca638d1354 | ||
|
|
f12e6ad4f1 | ||
|
|
0bbda3ad87 | ||
|
|
dd43d04d42 | ||
|
|
383ac76d00 | ||
|
|
e59ca14f6c | ||
|
|
7917b083cb | ||
|
|
2b3040d04f | ||
|
|
6cc48d8cbb | ||
|
|
798026498d | ||
|
|
49f029571c | ||
|
|
290b257288 | ||
|
|
2b60fb0144 | ||
|
|
7f5f5eb847 | ||
|
|
44269e6a1d | ||
|
|
70dfe8c97d | ||
|
|
072afa5fa3 | ||
|
|
519a0fd93d | ||
|
|
5f132f3975 | ||
|
|
1546989845 | ||
|
|
1923db97c1 | ||
|
|
db32047a5d | ||
|
|
b505eb261e | ||
|
|
1a1db9ef8d | ||
|
|
b1587f0716 | ||
|
|
93e450f37c | ||
|
|
fc713ecb70 | ||
|
|
500c13ab6f | ||
|
|
050267fe74 | ||
|
|
ce25a0171c | ||
|
|
b7518c8651 | ||
|
|
62dedfbef3 | ||
|
|
4508978ea5 | ||
|
|
c533a06e93 | ||
|
|
5d3b4f0134 | ||
|
|
4cf340ae9b | ||
|
|
053ac03f01 | ||
|
|
28a9439209 | ||
|
|
cf4b5efdd1 | ||
|
|
3067dab84c | ||
|
|
1790320ba3 | ||
|
|
f45df4265d | ||
|
|
bcbcd6a68c | ||
|
|
b1a0bf8916 | ||
|
|
6c18bae83c | ||
|
|
d0531966eb | ||
|
|
989a47ee8c | ||
|
|
03be6b687b | ||
|
|
32c22d375a | ||
|
|
bdf3f49a82 | ||
|
|
356b4b0dc5 | ||
|
|
3fc2ea8297 | ||
|
|
06d976e853 | ||
|
|
96ebd1c214 | ||
|
|
fa28481736 | ||
|
|
76b064cffc | ||
|
|
333b5d12a0 | ||
|
|
aa73504d95 | ||
|
|
32305b453d | ||
|
|
7d5e08c843 | ||
|
|
dc0fc65229 | ||
|
|
428af6d213 | ||
|
|
2ffe597617 | ||
|
|
0461eed0cb | ||
|
|
ca1bacc212 | ||
|
|
2229365ca8 | ||
|
|
8c367364b6 | ||
|
|
58909da425 | ||
|
|
ff32bf467c | ||
|
|
c5572d3095 | ||
|
|
e706bcdf73 | ||
|
|
d9ebcbd55c | ||
|
|
240b13aa74 | ||
|
|
97635d6f84 | ||
|
|
6c21a22e4d | ||
|
|
0add6f62b6 | ||
|
|
049418cd03 | ||
|
|
3ee1999c70 | ||
|
|
e4b8920688 | ||
|
|
eb236649fc | ||
|
|
0a36a4545f | ||
|
|
180985018b | ||
|
|
c86c5d6905 | ||
|
|
c2fad2dc7c | ||
|
|
1196b7bde4 | ||
|
|
19eddfd756 | ||
|
|
ed280ef4ac | ||
|
|
b6200ac3ff | ||
|
|
626621a53a | ||
|
|
fb3a64491e | ||
|
|
294f9419f7 | ||
|
|
a37956c95f | ||
|
|
89f5ca3301 | ||
|
|
07745b3082 | ||
|
|
054c25f693 | ||
|
|
01de04d8c9 | ||
|
|
08e4cb54a8 | ||
|
|
c71faffb71 | ||
|
|
91e3a0b3a9 | ||
|
|
5fa8f78434 | ||
|
|
ab5ac21104 | ||
|
|
0ebea2be9c | ||
|
|
6f54bab0a8 | ||
|
|
5d7deab6da | ||
|
|
35fcf4a4ae | ||
|
|
74565380aa | ||
|
|
fa37496ffb | ||
|
|
cc772ddd61 | ||
|
|
4d2647cdbc | ||
|
|
3caefd8fda | ||
|
|
12381d57d1 | ||
|
|
4ad8c4b86b | ||
|
|
dbd2827ca1 | ||
|
|
1a78557e0b | ||
|
|
2e99963087 | ||
|
|
4d763e1828 | ||
|
|
a17b343c21 | ||
|
|
556136dacc | ||
|
|
a8c80ccece | ||
|
|
f044511037 | ||
|
|
b31e545c9d | ||
|
|
fad5657eda | ||
|
|
eaf9ccde39 | ||
|
|
f9c625924e | ||
|
|
64cb735abf | ||
|
|
c85f322b20 | ||
|
|
76096a725b | ||
|
|
6eb7d13894 | ||
|
|
7928b25ebf | ||
|
|
78e6258b44 | ||
|
|
c9259c2b15 | ||
|
|
492d2eb573 | ||
|
|
376dcd3b92 | ||
|
|
60781bc6c2 | ||
|
|
2d8827cb0c | ||
|
|
802f7dcd30 | ||
|
|
e62cfd9043 | ||
|
|
cbcf6a4f23 | ||
|
|
b0e42d3f6e | ||
|
|
18eb66de06 | ||
|
|
b32cccddf9 | ||
|
|
362e26b3e2 | ||
|
|
5c53284bde | ||
|
|
e45d7f70e8 | ||
|
|
70edc7dda4 | ||
|
|
3244ed37a9 | ||
|
|
406359bba1 | ||
|
|
8b23dd915f | ||
|
|
7e1f65405f | ||
|
|
c1683073f1 | ||
|
|
18ec86bd90 | ||
|
|
315a6f43d7 | ||
|
|
7603bb5fd5 | ||
|
|
d53b79f8c3 | ||
|
|
f534452c6a | ||
|
|
0f6b83e7df | ||
|
|
16a6aef5a7 | ||
|
|
518fb9fb5e | ||
|
|
547ace3cf8 | ||
|
|
a4ba38ee78 | ||
|
|
e32d52b9b8 | ||
|
|
de40ced8b4 | ||
|
|
cfee58798e | ||
|
|
7ea01693a7 | ||
|
|
e0d839aea2 | ||
|
|
d3efd73429 | ||
|
|
2db5505216 | ||
|
|
f44b6c772a | ||
|
|
f64fab1d2d | ||
|
|
39bc2e0333 | ||
|
|
5bb6f0ad8b | ||
|
|
903537a2a0 | ||
|
|
1db937826c | ||
|
|
c1fe1c5d6b | ||
|
|
a62e9f99a2 | ||
|
|
9817a6aa47 | ||
|
|
8185373bd4 | ||
|
|
18c41aefc9 | ||
|
|
32917f1922 | ||
|
|
7a843e1fd1 | ||
|
|
0e154ccf76 | ||
|
|
120db06c60 | ||
|
|
e76ab05d45 | ||
|
|
43eeb009ce | ||
|
|
9000eef49d | ||
|
|
e198c8452b | ||
|
|
aea66ddff6 | ||
|
|
a5f4ffa58c | ||
|
|
a1c39e142d | ||
|
|
e76a0f564c | ||
|
|
8307d9c4de | ||
|
|
1dbf6b096b | ||
|
|
6fe71ecc01 | ||
|
|
57e58eaf2a | ||
|
|
00a5db71cf | ||
|
|
c7fa57cd28 | ||
|
|
8f2c86d79e | ||
|
|
56f1da5c66 | ||
|
|
30a205c0e3 | ||
|
|
98d77d37d0 | ||
|
|
0853fb940a | ||
|
|
6dd819a61e | ||
|
|
39aae19ed7 | ||
|
|
20749e5dbd | ||
|
|
99e1cd549d | ||
|
|
efdbeb7c1b | ||
|
|
ea4dbd14bc | ||
|
|
838df4b00b | ||
|
|
b6110ba8dc | ||
|
|
fd763ad857 | ||
|
|
e3d59832c5 | ||
|
|
2c85bb4178 | ||
|
|
8493777961 | ||
|
|
4e7405aca9 | ||
|
|
34207ba509 | ||
|
|
6dc499f305 | ||
|
|
92e2242cf0 | ||
|
|
ea214fbe0f | ||
|
|
487b8a0430 | ||
|
|
8b060342bd | ||
|
|
27d6c063ad | ||
|
|
0e62b71959 | ||
|
|
2c3f79829e | ||
|
|
5d2b0bc0cc | ||
|
|
7e3a780dcd | ||
|
|
1035200f26 | ||
|
|
8532b10290 | ||
|
|
f0c6c4eb1f | ||
|
|
ba194bd19e | ||
|
|
a35274ddb7 | ||
|
|
ab541e3e0f | ||
|
|
67ce04993e | ||
|
|
22cdc8f414 | ||
|
|
8b022a5595 | ||
|
|
7a1393ba26 | ||
|
|
5ed954e6de | ||
|
|
96572fbe6a | ||
|
|
4ab47e72e5 | ||
|
|
70e0fd0b45 | ||
|
|
26cd031be8 | ||
|
|
743e8cc249 | ||
|
|
2bf7974076 | ||
|
|
9c16e4e2f3 | ||
|
|
07f6c85cc7 | ||
|
|
d4968e10e5 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -88,6 +88,10 @@ src/pointer-constraints-unstable-v*-protocol.c
|
||||
src/pointer-constraints-unstable-v*-server-protocol.h
|
||||
src/xdg-foreign-unstable-v*-protocol.c
|
||||
src/xdg-foreign-unstable-v*-server-protocol.h
|
||||
src/xdg-output-unstable-v1-protocol.c
|
||||
src/xdg-output-unstable-v1-server-protocol.h
|
||||
src/xwayland-keyboard-grab-unstable-v1-protocol.c
|
||||
src/xwayland-keyboard-grab-unstable-v1-server-protocol.h
|
||||
src/meta/meta-version.h
|
||||
src/libmutter-*.pc
|
||||
doc/reference/*.args
|
||||
@@ -115,3 +119,4 @@ ltsugar.m4
|
||||
ltversion.m4
|
||||
lt~obsolete.m4
|
||||
.dirstamp
|
||||
**/tags.*
|
||||
|
||||
92
NEWS
92
NEWS
@@ -1,3 +1,95 @@
|
||||
3.27.91
|
||||
=======
|
||||
* Fix handling of trackball settings on wayland [Carlos; #787804]
|
||||
* Apply font settings on wayland [Daniel; #645433]
|
||||
* Fix keybindings getting mixed up with some layouts [Jonas; #789300]
|
||||
* Fix bluetooth mouse cursor disappearing after idle [Benoit; #761067]
|
||||
* Support platforms that export EGL_KHR_platform_gbm [memeka; #780668]
|
||||
* Add keyboard accessibility support on wayland [Olivier; #788564]
|
||||
* Fix missing cursor when using screen magnifier [Carlos; #754806]
|
||||
* Fix external monitor shutting off on wayland when lid closes [Jonas; #788915]
|
||||
* Add xdg-output support [Olivier; #787363]
|
||||
* Add Xwayland grab keyboard support [Olivier; #783342]
|
||||
* Allow shortcut inhibition of the super key [Olivier; #790627]
|
||||
* Take "panel orientation" drm_connector property into account [Hans; #782294]
|
||||
* Fix focus window ending up below other windows on wayland [Olivier; #780820]
|
||||
* Fix maximized windows restoring to a tiny size on wayland [Olivier; #783901]
|
||||
* Fix tap-and-drag setting on X11 [Jonas; #775755]
|
||||
* Fix handling of single-touch devices on wayland [Carlos; #792005]
|
||||
* Support tiled/compressed buffers [Daniel; #785779]
|
||||
* Port screencast support to pipewire 0.1.8 [Jonas; #792854]
|
||||
* Add support for third stylus button on newer tablets [Jason; #790033]
|
||||
* Fix background corruption regression on nvidia [Jonas; #739178]
|
||||
* Misc. bug fixes [Jonas, Rui, Michael, Marco, Carlos, Olivier, Philip, Piotr,
|
||||
Ting-Wei, Daniel, Jeremy, Hans, Florian, Ray, Jeff, George, Gwan-gyeong;
|
||||
#789153, #788493, #784314, #789227, #789223, #789277, #782344, #789552,
|
||||
#789553, #788695, #789984, #788764, #789386, #784545, #790336, #790358,
|
||||
#791022, #791006, #789070, #772218, #791383, #791809, #776220, #791916,
|
||||
#792281, #790309, #791371, #792527, #792599, #788834, #792765, #792062,
|
||||
#645460, #792853, !2, #792818, #8, #12, #789501, #10, #789961, #13, !15, #1,
|
||||
#26, #28, #35, #36, #38]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Jeremy Bicha, Michael Catanzaro, Piotr Drąg, Olivier Fourdan,
|
||||
Carlos Garnacho, Jason Gerecke, Hans de Goede, Benoit Gschwind,
|
||||
Peter Hutterer, George Kiagiadakis, Ting-Wei Lan, Rui Matos, memeka,
|
||||
Florian Müllner, Gwan-gyeong Mun, Jeremy Nickurak, Marc-Antoine Perennou,
|
||||
Jeff Smith, Daniel Stone, Ray Strode, Marco Trevisan (Treviño),
|
||||
Daniel van Vugt, Philip Withnall
|
||||
|
||||
Translators:
|
||||
Khaled Hosny [ar], Kjartan Maraas [nb], Piotr Drąg [pl],
|
||||
Rafael Fontenelle [pt_BR], Christian Kirbach [de], Anders Jonsson [sv],
|
||||
Charles Monzat [fr], Marek Cernocky [cs], Muhammet Kara [tr],
|
||||
Milo Casagrande [it], Pawan Chitrakar [ne], Yosef Or Boczko [he],
|
||||
Kukuh Syafaat [id], Daniel Mustieles [es], Fabio Tomat [fur],
|
||||
Kristjan SCHMIDT [eo], Balázs Úr [hu], Andika Triwidada [id],
|
||||
Fran Dieguez [gl], gogo [hr]
|
||||
|
||||
3.27.1
|
||||
======
|
||||
* Work with clients that require older linux_dmabuf protocol [Daniel; #788558]
|
||||
* Support hybrid GPU systems [Jonas; #785381]
|
||||
* Prevent crash when closing maximized windows [Jonni; #788666]
|
||||
* Use the correct monitor for HiDPI scaling of shell chrome [Jonas; #788820]
|
||||
* Fix unredirection of fullscreen windows [Rui, Jonas; #788493]
|
||||
* Fix list of supported monitor scales on X11 [Jonas; #788901]
|
||||
* Misc. bug fixes [Florian, Jonas, Marco; #788572, #788569, #788607, #788860,
|
||||
#788921]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner, Daniel Stone,
|
||||
Marco Trevisan, Jonni Westphalen
|
||||
|
||||
Translations:
|
||||
Xavi Ivars [ca@valencia]
|
||||
|
||||
3.26.1
|
||||
======
|
||||
* Fix crash when respawning shortcut inhibitor dialog [Olivier; #787568]
|
||||
* Fix crash during monitor configuration migration [Carlos, Jonas; #787668]
|
||||
* Fix multihead regressions in X11 session [Jonas; #787477]
|
||||
* Fix screen rotation regressions [Hans; #787836]
|
||||
* Fix keybindings not being resolved with non-latin layouts [Jonas; #787016]
|
||||
* Support snap packages for sandboxed app IDs [Marco; #788217]
|
||||
* Fix crash when reconnecting tablet device [Jason; #787649]
|
||||
* Support running headless [Jonas; #730551, #787637]
|
||||
* Support _NET_RESTACK_WINDOW and ConfigureRequest siblings [Vasilis; #786365]
|
||||
* Fix monitor layout not being remembered across sessions [Jonas; #787629]
|
||||
* Make sure to export _NET_NUMBER_OF_DESKTOPS [Florian; #760651]
|
||||
* Allow resizing of tiled windows [Georges, Florian; #645153]
|
||||
* Export tiling information to clients [Georges; #751857]
|
||||
* Misc. bug fixes [Jonas, Florian, Jeremy, Rico; #787570, #787715, #787953,
|
||||
#788049, #788199, #788292, #788197]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Andrea Azzarone, Georges Basile Stavracas Neto, Hans de Goede,
|
||||
Olivier Fourdan, Carlos Garnacho, Jason Gerecke, Vasilis Liaskovitis,
|
||||
Rui Matos, Florian Müllner, Jeremy Soller, Marco Trevisan, Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
Matej Urbančič [sl], gogo [hr], Cheng-Chia Tseng [zh_TW]
|
||||
|
||||
3.26.0
|
||||
======
|
||||
Contributors:
|
||||
|
||||
@@ -87,6 +87,8 @@ source_h = \
|
||||
clutter-image.h \
|
||||
clutter-input-device.h \
|
||||
clutter-input-device-tool.h \
|
||||
clutter-input-focus.h \
|
||||
clutter-input-method.h \
|
||||
clutter-interval.h \
|
||||
clutter-keyframe-transition.h \
|
||||
clutter-keysyms.h \
|
||||
@@ -169,6 +171,8 @@ source_c = \
|
||||
clutter-image.c \
|
||||
clutter-input-device.c \
|
||||
clutter-input-device-tool.c \
|
||||
clutter-input-focus.c \
|
||||
clutter-input-method.c \
|
||||
clutter-virtual-input-device.c \
|
||||
clutter-interval.c \
|
||||
clutter-keyframe-transition.c \
|
||||
@@ -229,6 +233,8 @@ source_h_priv = \
|
||||
clutter-flatten-effect.h \
|
||||
clutter-gesture-action-private.h \
|
||||
clutter-id-pool.h \
|
||||
clutter-input-focus-private.h \
|
||||
clutter-input-method-private.h \
|
||||
clutter-master-clock.h \
|
||||
clutter-master-clock-default.h \
|
||||
clutter-offscreen-effect-private.h \
|
||||
@@ -388,6 +394,7 @@ x11_source_c = \
|
||||
x11/clutter-keymap-x11.c \
|
||||
x11/clutter-stage-x11.c \
|
||||
x11/clutter-x11-texture-pixmap.c \
|
||||
x11/clutter-xkb-a11y-x11.c \
|
||||
$(NULL)
|
||||
|
||||
x11_source_h = \
|
||||
@@ -402,6 +409,7 @@ x11_source_h_priv = \
|
||||
x11/clutter-keymap-x11.h \
|
||||
x11/clutter-settings-x11.h \
|
||||
x11/clutter-stage-x11.h \
|
||||
x11/clutter-xkb-a11y-x11.h \
|
||||
$(NULL)
|
||||
|
||||
x11_source_c_priv = \
|
||||
|
||||
@@ -4828,8 +4828,7 @@ clutter_actor_set_scale_factor (ClutterActor *self,
|
||||
g_assert (pspec != NULL);
|
||||
g_assert (scale_p != NULL);
|
||||
|
||||
if (*scale_p != factor)
|
||||
_clutter_actor_create_transition (self, pspec, *scale_p, factor);
|
||||
_clutter_actor_create_transition (self, pspec, *scale_p, factor);
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -10264,10 +10263,9 @@ clutter_actor_set_position (ClutterActor *self,
|
||||
cur_position.x = clutter_actor_get_x (self);
|
||||
cur_position.y = clutter_actor_get_y (self);
|
||||
|
||||
if (!clutter_point_equals (&cur_position, &new_position))
|
||||
_clutter_actor_create_transition (self, obj_props[PROP_POSITION],
|
||||
&cur_position,
|
||||
&new_position);
|
||||
_clutter_actor_create_transition (self, obj_props[PROP_POSITION],
|
||||
&cur_position,
|
||||
&new_position);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,6 +58,8 @@ struct _ClutterBackend
|
||||
gint32 units_serial;
|
||||
|
||||
GList *event_translators;
|
||||
|
||||
ClutterInputMethod *input_method;
|
||||
};
|
||||
|
||||
struct _ClutterBackendClass
|
||||
@@ -100,6 +102,8 @@ struct _ClutterBackendClass
|
||||
|
||||
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
||||
|
||||
void (* bell_notify) (ClutterBackend *backend);
|
||||
|
||||
/* signals */
|
||||
void (* resolution_changed) (ClutterBackend *backend);
|
||||
void (* font_changed) (ClutterBackend *backend);
|
||||
|
||||
@@ -127,6 +127,7 @@ clutter_backend_finalize (GObject *gobject)
|
||||
|
||||
g_free (backend->font_name);
|
||||
clutter_backend_set_font_options (backend, NULL);
|
||||
g_clear_object (&backend->input_method);
|
||||
|
||||
G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
|
||||
}
|
||||
@@ -1363,3 +1364,41 @@ clutter_set_allowed_drivers (const char *drivers)
|
||||
|
||||
allowed_drivers = g_strdup (drivers);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_backend_bell_notify (ClutterBackend *backend)
|
||||
{
|
||||
ClutterBackendClass *klass;
|
||||
|
||||
klass = CLUTTER_BACKEND_GET_CLASS (backend);
|
||||
if (klass->bell_notify)
|
||||
klass->bell_notify (backend);
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_backend_get_input_method:
|
||||
* @backend: the #CLutterBackend
|
||||
*
|
||||
* Returns the input method used by Clutter
|
||||
*
|
||||
* Returns: (transfer none): the input method
|
||||
**/
|
||||
ClutterInputMethod *
|
||||
clutter_backend_get_input_method (ClutterBackend *backend)
|
||||
{
|
||||
return backend->input_method;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_backend_set_input_method:
|
||||
* @backend: the #ClutterBackend
|
||||
* @method: the input method
|
||||
*
|
||||
* Sets the input method to be used by Clutter
|
||||
**/
|
||||
void
|
||||
clutter_backend_set_input_method (ClutterBackend *backend,
|
||||
ClutterInputMethod *method)
|
||||
{
|
||||
g_set_object (&backend->input_method, method);
|
||||
}
|
||||
|
||||
@@ -74,6 +74,15 @@ const cairo_font_options_t * clutter_backend_get_font_options (Clutter
|
||||
CLUTTER_AVAILABLE_IN_1_8
|
||||
CoglContext * clutter_backend_get_cogl_context (ClutterBackend *backend);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
void clutter_backend_bell_notify (ClutterBackend *backend);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
ClutterInputMethod * clutter_backend_get_input_method (ClutterBackend *backend);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_backend_set_input_method (ClutterBackend *backend,
|
||||
ClutterInputMethod *method);
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_BACKEND_H__ */
|
||||
|
||||
@@ -145,6 +145,9 @@ struct _ClutterInputDevice
|
||||
guint is_enabled : 1;
|
||||
};
|
||||
|
||||
typedef void (*ClutterEmitInputDeviceEvent) (ClutterEvent *event,
|
||||
ClutterInputDevice *device);
|
||||
|
||||
struct _ClutterInputDeviceClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
@@ -163,6 +166,11 @@ struct _ClutterInputDeviceClass
|
||||
|
||||
gboolean (* is_grouped) (ClutterInputDevice *device,
|
||||
ClutterInputDevice *other_device);
|
||||
|
||||
/* Keyboard accessbility */
|
||||
void (* process_kbd_a11y_event) (ClutterEvent *event,
|
||||
ClutterInputDevice *device,
|
||||
ClutterEmitInputDeviceEvent emit_event_func);
|
||||
};
|
||||
|
||||
/* Platform-dependent interface */
|
||||
|
||||
@@ -54,6 +54,9 @@ struct _ClutterDeviceManagerPrivate
|
||||
{
|
||||
/* back-pointer to the backend */
|
||||
ClutterBackend *backend;
|
||||
|
||||
/* Keyboard a11y */
|
||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -72,6 +75,8 @@ enum
|
||||
DEVICE_ADDED,
|
||||
DEVICE_REMOVED,
|
||||
TOOL_CHANGED,
|
||||
KBD_A11Y_MASK_CHANGED,
|
||||
KBD_A11Y_FLAGS_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
@@ -196,6 +201,46 @@ clutter_device_manager_class_init (ClutterDeviceManagerClass *klass)
|
||||
G_TYPE_NONE, 2,
|
||||
CLUTTER_TYPE_INPUT_DEVICE,
|
||||
CLUTTER_TYPE_INPUT_DEVICE_TOOL);
|
||||
|
||||
/**
|
||||
* ClutterDeviceManager::kbd-a11y-mods-state-changed:
|
||||
* @manager: the #ClutterDeviceManager that emitted the signal
|
||||
* @latched_mask: the latched modifier mask from stickykeys
|
||||
* @locked_mask: the locked modifier mask from stickykeys
|
||||
*
|
||||
* The ::kbd-a11y-mods-state-changed signal is emitted each time either the
|
||||
* latched modifiers mask or locked modifiers mask are changed as the
|
||||
* result of keyboard accessibilty's sticky keys operations.
|
||||
*/
|
||||
manager_signals[KBD_A11Y_MASK_CHANGED] =
|
||||
g_signal_new (I_("kbd-a11y-mods-state-changed"),
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL,
|
||||
_clutter_marshal_VOID__UINT_UINT,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_UINT,
|
||||
G_TYPE_UINT);
|
||||
|
||||
/**
|
||||
* ClutterDeviceManager::kbd-a11y-flags-changed:
|
||||
* @manager: the #ClutterDeviceManager that emitted the signal
|
||||
* @settings_flags: the new ClutterKeyboardA11yFlags configuration
|
||||
* @changed_mask: the ClutterKeyboardA11yFlags changed
|
||||
*
|
||||
* The ::kbd-a11y-flags-changed signal is emitted each time the
|
||||
* ClutterKeyboardA11yFlags configuration is changed as the result of
|
||||
* keyboard accessibilty operations.
|
||||
*/
|
||||
manager_signals[KBD_A11Y_FLAGS_CHANGED] =
|
||||
g_signal_new (I_("kbd-a11y-flags-changed"),
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL,
|
||||
_clutter_marshal_VOID__UINT_UINT,
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_UINT,
|
||||
G_TYPE_UINT);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -487,3 +532,43 @@ _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
|
||||
|
||||
manager_class->compress_motion (device_manager, event, to_discard);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
are_kbd_a11y_settings_equal (ClutterKbdA11ySettings *a,
|
||||
ClutterKbdA11ySettings *b)
|
||||
{
|
||||
return (a->controls == b->controls &&
|
||||
a->slowkeys_delay == b->slowkeys_delay &&
|
||||
a->debounce_delay == b->debounce_delay &&
|
||||
a->timeout_delay == b->timeout_delay &&
|
||||
a->mousekeys_init_delay == b->mousekeys_init_delay &&
|
||||
a->mousekeys_max_speed == b->mousekeys_max_speed &&
|
||||
a->mousekeys_accel_time == b->mousekeys_accel_time);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *settings)
|
||||
{
|
||||
ClutterDeviceManagerClass *manager_class;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
|
||||
|
||||
if (are_kbd_a11y_settings_equal (&device_manager->priv->kbd_a11y_settings, settings))
|
||||
return;
|
||||
|
||||
device_manager->priv->kbd_a11y_settings = *settings;
|
||||
|
||||
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
|
||||
if (manager_class->apply_kbd_a11y_settings)
|
||||
manager_class->apply_kbd_a11y_settings (device_manager, settings);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_device_manager_get_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *settings)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
|
||||
|
||||
*settings = device_manager->priv->kbd_a11y_settings;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,25 @@ typedef struct _ClutterDeviceManager ClutterDeviceManager;
|
||||
typedef struct _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate;
|
||||
typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass;
|
||||
|
||||
|
||||
/**
|
||||
* ClutterKbdA11ySettings:
|
||||
*
|
||||
* The #ClutterKbdA11ySettings structure contains keyboard accessibility
|
||||
* settings
|
||||
*
|
||||
*/
|
||||
typedef struct _ClutterKbdA11ySettings
|
||||
{
|
||||
ClutterKeyboardA11yFlags controls;
|
||||
gint slowkeys_delay;
|
||||
gint debounce_delay;
|
||||
gint timeout_delay;
|
||||
gint mousekeys_init_delay;
|
||||
gint mousekeys_max_speed;
|
||||
gint mousekeys_accel_time;
|
||||
} ClutterKbdA11ySettings;
|
||||
|
||||
/**
|
||||
* ClutterDeviceManager:
|
||||
*
|
||||
@@ -88,7 +107,9 @@ struct _ClutterDeviceManagerClass
|
||||
void (* compress_motion) (ClutterDeviceManager *device_manger,
|
||||
ClutterEvent *event,
|
||||
const ClutterEvent *to_discard);
|
||||
|
||||
/* Keyboard accessbility */
|
||||
void (* apply_kbd_a11y_settings) (ClutterDeviceManager *device_manger,
|
||||
ClutterKbdA11ySettings *settings);
|
||||
/* padding */
|
||||
gpointer _padding[6];
|
||||
};
|
||||
@@ -114,6 +135,13 @@ CLUTTER_AVAILABLE_IN_ALL
|
||||
ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
|
||||
ClutterInputDeviceType device_type);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
void clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *settings);
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
void clutter_device_manager_get_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *settings);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
||||
|
||||
@@ -396,6 +396,43 @@ typedef enum {
|
||||
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
||||
} ClutterModifierType;
|
||||
|
||||
/**
|
||||
* ClutterKeyboardA11yFlags:
|
||||
* @CLUTTER_A11Y_KEYBOARD_ENABLED:
|
||||
* @CLUTTER_A11Y_TIMEOUT_ENABLED:
|
||||
* @CLUTTER_A11Y_MOUSE_KEYS_ENABLED:
|
||||
* @CLUTTER_A11Y_SLOW_KEYS_ENABLED:
|
||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS:
|
||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT:
|
||||
* @CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT:
|
||||
* @CLUTTER_A11Y_BOUNCE_KEYS_ENABLED:
|
||||
* @CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT:
|
||||
* @CLUTTER_A11Y_TOGGLE_KEYS_ENABLED:
|
||||
* @CLUTTER_A11Y_STICKY_KEYS_ENABLED:
|
||||
* @CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF:
|
||||
* @CLUTTER_A11Y_STICKY_KEYS_BEEP:
|
||||
* @CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP:
|
||||
*
|
||||
* Keyboard accessibility features applied to a ClutterInputDevice keyboard.
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
CLUTTER_A11Y_KEYBOARD_ENABLED = 1 << 0,
|
||||
CLUTTER_A11Y_TIMEOUT_ENABLED = 1 << 1,
|
||||
CLUTTER_A11Y_MOUSE_KEYS_ENABLED = 1 << 2,
|
||||
CLUTTER_A11Y_SLOW_KEYS_ENABLED = 1 << 3,
|
||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS = 1 << 4,
|
||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT = 1 << 5,
|
||||
CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT = 1 << 6,
|
||||
CLUTTER_A11Y_BOUNCE_KEYS_ENABLED = 1 << 7,
|
||||
CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT = 1 << 8,
|
||||
CLUTTER_A11Y_TOGGLE_KEYS_ENABLED = 1 << 9,
|
||||
CLUTTER_A11Y_STICKY_KEYS_ENABLED = 1 << 10,
|
||||
CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF = 1 << 11,
|
||||
CLUTTER_A11Y_STICKY_KEYS_BEEP = 1 << 12,
|
||||
CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP = 1 << 13,
|
||||
} ClutterKeyboardA11yFlags;
|
||||
|
||||
/**
|
||||
* ClutterActorFlags:
|
||||
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
||||
@@ -730,8 +767,9 @@ typedef enum { /*< prefix=CLUTTER_DRAG >*/
|
||||
* Since: 0.6
|
||||
*/
|
||||
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
||||
CLUTTER_EVENT_NONE = 0,
|
||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0
|
||||
CLUTTER_EVENT_NONE = 0,
|
||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0,
|
||||
CLUTTER_EVENT_FLAG_INPUT_METHOD = 1 << 1
|
||||
} ClutterEventFlags;
|
||||
|
||||
/**
|
||||
@@ -1536,6 +1574,41 @@ typedef enum {
|
||||
CLUTTER_INPUT_DEVICE_MAPPING_RELATIVE,
|
||||
} ClutterInputDeviceMapping;
|
||||
|
||||
typedef enum {
|
||||
CLUTTER_INPUT_CONTENT_HINT_COMPLETION = 1 << 0,
|
||||
CLUTTER_INPUT_CONTENT_HINT_SPELLCHECK = 1 << 1,
|
||||
CLUTTER_INPUT_CONTENT_HINT_AUTO_CAPITALIZATION = 1 << 2,
|
||||
CLUTTER_INPUT_CONTENT_HINT_LOWERCASE = 1 << 3,
|
||||
CLUTTER_INPUT_CONTENT_HINT_UPPERCASE = 1 << 4,
|
||||
CLUTTER_INPUT_CONTENT_HINT_TITLECASE = 1 << 5,
|
||||
CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT = 1 << 6,
|
||||
CLUTTER_INPUT_CONTENT_HINT_SENSITIVE_DATA = 1 << 7,
|
||||
CLUTTER_INPUT_CONTENT_HINT_LATIN = 1 << 8,
|
||||
CLUTTER_INPUT_CONTENT_HINT_MULTILINE = 1 << 9,
|
||||
} ClutterInputContentHintFlags;
|
||||
|
||||
typedef enum {
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_NORMAL,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_ALPHA,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_DIGITS,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_NUMBER,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_PHONE,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_URL,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_EMAIL,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_NAME,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_DATE,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_TIME,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_DATETIME,
|
||||
CLUTTER_INPUT_CONTENT_PURPOSE_TERMINAL,
|
||||
} ClutterInputContentPurpose;
|
||||
|
||||
typedef enum {
|
||||
CLUTTER_INPUT_PANEL_STATE_OFF,
|
||||
CLUTTER_INPUT_PANEL_STATE_ON,
|
||||
CLUTTER_INPUT_PANEL_STATE_TOGGLE,
|
||||
} ClutterInputPanelState;
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_ENUMS_H__ */
|
||||
|
||||
40
clutter/clutter/clutter-input-focus-private.h
Normal file
40
clutter/clutter/clutter-input-focus-private.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __CLUTTER_INPUT_FOCUS_PRIVATE_H__
|
||||
#define __CLUTTER_INPUT_FOCUS_PRIVATE_H__
|
||||
|
||||
void clutter_input_focus_focus_in (ClutterInputFocus *focus,
|
||||
ClutterInputMethod *method);
|
||||
void clutter_input_focus_focus_out (ClutterInputFocus *focus);
|
||||
|
||||
void clutter_input_focus_commit (ClutterInputFocus *focus,
|
||||
const gchar *text);
|
||||
void clutter_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||
guint offset,
|
||||
guint len);
|
||||
void clutter_input_focus_request_surrounding (ClutterInputFocus *focus);
|
||||
|
||||
void clutter_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
||||
const gchar *preedit,
|
||||
guint cursor);
|
||||
|
||||
#endif /* __CLUTTER_INPUT_FOCUS_PRIVATE_H__ */
|
||||
243
clutter/clutter/clutter-input-focus.c
Normal file
243
clutter/clutter/clutter-input-focus.c
Normal file
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
|
||||
#include "clutter/clutter-input-focus.h"
|
||||
#include "clutter/clutter-input-focus-private.h"
|
||||
#include "clutter/clutter-input-method-private.h"
|
||||
|
||||
typedef struct _ClutterInputFocusPrivate ClutterInputFocusPrivate;
|
||||
|
||||
struct _ClutterInputFocusPrivate
|
||||
{
|
||||
ClutterInputMethod *im;
|
||||
};
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ClutterInputFocus, clutter_input_focus, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
clutter_input_focus_real_focus_in (ClutterInputFocus *focus,
|
||||
ClutterInputMethod *im)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
priv->im = im;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_focus_real_focus_out (ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
priv->im = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_focus_class_init (ClutterInputFocusClass *klass)
|
||||
{
|
||||
klass->focus_in = clutter_input_focus_real_focus_in;
|
||||
klass->focus_out = clutter_input_focus_real_focus_out;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_focus_init (ClutterInputFocus *focus)
|
||||
{
|
||||
}
|
||||
|
||||
gboolean
|
||||
clutter_input_focus_is_focused (ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
return !!priv->im;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_reset (ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_reset (priv->im);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_cursor_location (ClutterInputFocus *focus,
|
||||
const ClutterRect *rect)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_set_cursor_location (priv->im, rect);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_surrounding (ClutterInputFocus *focus,
|
||||
const gchar *text,
|
||||
guint cursor,
|
||||
guint anchor)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_set_surrounding (priv->im, text, cursor, anchor);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_content_hints (ClutterInputFocus *focus,
|
||||
ClutterInputContentHintFlags hints)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_set_content_hints (priv->im, hints);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_content_purpose (ClutterInputFocus *focus,
|
||||
ClutterInputContentPurpose purpose)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_set_content_purpose (priv->im, purpose);
|
||||
}
|
||||
|
||||
gboolean
|
||||
clutter_input_focus_filter_key_event (ClutterInputFocus *focus,
|
||||
const ClutterKeyEvent *key)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (CLUTTER_IS_INPUT_FOCUS (focus), FALSE);
|
||||
g_return_val_if_fail (clutter_input_focus_is_focused (focus), FALSE);
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
return clutter_input_method_filter_key_event (priv->im, key);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_can_show_preedit (ClutterInputFocus *focus,
|
||||
gboolean can_show_preedit)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_set_can_show_preedit (priv->im, can_show_preedit);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_request_toggle_input_panel (ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterInputFocusPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (clutter_input_focus_is_focused (focus));
|
||||
|
||||
priv = clutter_input_focus_get_instance_private (focus);
|
||||
|
||||
clutter_input_method_toggle_input_panel (priv->im);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_focus_in (ClutterInputFocus *focus,
|
||||
ClutterInputMethod *im)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->focus_in (focus, im);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_focus_out (ClutterInputFocus *focus)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->focus_out (focus);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_commit (ClutterInputFocus *focus,
|
||||
const gchar *text)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->commit_text (focus, text);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||
guint offset,
|
||||
guint len)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->delete_surrounding (focus, offset, len);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_request_surrounding (ClutterInputFocus *focus)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->request_surrounding (focus);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
||||
const gchar *preedit,
|
||||
guint cursor)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
CLUTTER_INPUT_FOCUS_GET_CLASS (focus)->set_preedit_text (focus, preedit, cursor);
|
||||
}
|
||||
83
clutter/clutter/clutter-input-focus.h
Normal file
83
clutter/clutter/clutter-input-focus.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __CLUTTER_INPUT_FOCUS_H__
|
||||
#define __CLUTTER_INPUT_FOCUS_H__
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
#define CLUTTER_TYPE_INPUT_FOCUS (clutter_input_focus_get_type ())
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
G_DECLARE_DERIVABLE_TYPE (ClutterInputFocus, clutter_input_focus,
|
||||
CLUTTER, INPUT_FOCUS, GObject)
|
||||
|
||||
struct _ClutterInputFocusClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
GTypeInterface iface;
|
||||
|
||||
void (* focus_in) (ClutterInputFocus *focus,
|
||||
ClutterInputMethod *input_method);
|
||||
void (* focus_out) (ClutterInputFocus *focus);
|
||||
|
||||
void (* request_surrounding) (ClutterInputFocus *focus);
|
||||
void (* delete_surrounding) (ClutterInputFocus *focus,
|
||||
guint offset,
|
||||
guint len);
|
||||
void (* commit_text) (ClutterInputFocus *focus,
|
||||
const gchar *text);
|
||||
|
||||
void (* set_preedit_text) (ClutterInputFocus *focus,
|
||||
const gchar *preedit,
|
||||
guint cursor);
|
||||
};
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
gboolean clutter_input_focus_is_focused (ClutterInputFocus *focus);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_reset (ClutterInputFocus *focus);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_set_cursor_location (ClutterInputFocus *focus,
|
||||
const ClutterRect *rect);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_set_surrounding (ClutterInputFocus *focus,
|
||||
const gchar *text,
|
||||
guint cursor,
|
||||
guint anchor);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_set_content_hints (ClutterInputFocus *focus,
|
||||
ClutterInputContentHintFlags hint);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_set_content_purpose (ClutterInputFocus *focus,
|
||||
ClutterInputContentPurpose purpose);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
gboolean clutter_input_focus_filter_key_event (ClutterInputFocus *focus,
|
||||
const ClutterKeyEvent *key);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_set_can_show_preedit (ClutterInputFocus *focus,
|
||||
gboolean can_show_preedit);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_focus_request_toggle_input_panel (ClutterInputFocus *focus);
|
||||
|
||||
#endif /* __CLUTTER_INPUT_FOCUS_H__ */
|
||||
46
clutter/clutter/clutter-input-method-private.h
Normal file
46
clutter/clutter/clutter-input-method-private.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __CLUTTER_INPUT_METHOD_PRIVATE_H__
|
||||
#define __CLUTTER_INPUT_METHOD_PRIVATE_H__
|
||||
|
||||
ClutterInputFocus * clutter_input_method_get_focus (ClutterInputMethod *method);
|
||||
|
||||
void clutter_input_method_reset (ClutterInputMethod *method);
|
||||
|
||||
void clutter_input_method_set_cursor_location (ClutterInputMethod *method,
|
||||
const ClutterRect *rect);
|
||||
void clutter_input_method_set_surrounding (ClutterInputMethod *method,
|
||||
const gchar *text,
|
||||
guint cursor,
|
||||
guint anchor);
|
||||
void clutter_input_method_set_content_hints (ClutterInputMethod *method,
|
||||
ClutterInputContentHintFlags hints);
|
||||
void clutter_input_method_set_content_purpose (ClutterInputMethod *method,
|
||||
ClutterInputContentPurpose purpose);
|
||||
void clutter_input_method_set_can_show_preedit (ClutterInputMethod *method,
|
||||
gboolean can_show_preedit);
|
||||
gboolean clutter_input_method_filter_key_event (ClutterInputMethod *method,
|
||||
const ClutterKeyEvent *key);
|
||||
|
||||
void clutter_input_method_toggle_input_panel (ClutterInputMethod *method);
|
||||
|
||||
#endif /* __CLUTTER_INPUT_METHOD_PRIVATE_H__ */
|
||||
442
clutter/clutter/clutter-input-method.c
Normal file
442
clutter/clutter/clutter-input-method.c
Normal file
@@ -0,0 +1,442 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#include "clutter-build-config.h"
|
||||
|
||||
#include "clutter-private.h"
|
||||
#include "clutter/clutter-input-method.h"
|
||||
#include "clutter/clutter-input-method-private.h"
|
||||
#include "clutter/clutter-input-focus-private.h"
|
||||
|
||||
typedef struct _ClutterInputMethodPrivate ClutterInputMethodPrivate;
|
||||
|
||||
struct _ClutterInputMethodPrivate
|
||||
{
|
||||
ClutterInputFocus *focus;
|
||||
ClutterInputContentHintFlags content_hints;
|
||||
ClutterInputContentPurpose content_purpose;
|
||||
gboolean can_show_preedit;
|
||||
};
|
||||
|
||||
enum {
|
||||
COMMIT,
|
||||
DELETE_SURROUNDING,
|
||||
REQUEST_SURROUNDING,
|
||||
INPUT_PANEL_STATE,
|
||||
CURSOR_LOCATION_CHANGED,
|
||||
N_SIGNALS,
|
||||
};
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_CONTENT_HINTS,
|
||||
PROP_CONTENT_PURPOSE,
|
||||
PROP_CAN_SHOW_PREEDIT,
|
||||
N_PROPS
|
||||
};
|
||||
|
||||
static guint signals[N_SIGNALS] = { 0 };
|
||||
static GParamSpec *pspecs[N_PROPS] = { 0 };
|
||||
|
||||
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ClutterInputMethod, clutter_input_method, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
set_content_hints (ClutterInputMethod *im,
|
||||
ClutterInputContentHintFlags content_hints)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
priv->content_hints = content_hints;
|
||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->update_content_hints (im, content_hints);
|
||||
}
|
||||
|
||||
static void
|
||||
set_content_purpose (ClutterInputMethod *im,
|
||||
ClutterInputContentPurpose content_purpose)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
priv->content_purpose = content_purpose;
|
||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->update_content_purpose (im,
|
||||
content_purpose);
|
||||
}
|
||||
|
||||
static void
|
||||
set_can_show_preedit (ClutterInputMethod *im,
|
||||
gboolean can_show_preedit)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
priv->can_show_preedit = can_show_preedit;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_method_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_CONTENT_HINTS:
|
||||
set_content_hints (CLUTTER_INPUT_METHOD (object),
|
||||
g_value_get_flags (value));
|
||||
break;
|
||||
case PROP_CONTENT_PURPOSE:
|
||||
set_content_purpose (CLUTTER_INPUT_METHOD (object),
|
||||
g_value_get_enum (value));
|
||||
break;
|
||||
case PROP_CAN_SHOW_PREEDIT:
|
||||
set_can_show_preedit (CLUTTER_INPUT_METHOD (object),
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_method_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
ClutterInputMethod *im;
|
||||
|
||||
im = CLUTTER_INPUT_METHOD (object);
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_CONTENT_HINTS:
|
||||
g_value_set_flags (value, priv->content_hints);
|
||||
break;
|
||||
case PROP_CONTENT_PURPOSE:
|
||||
g_value_set_enum (value, priv->content_purpose);
|
||||
break;
|
||||
case PROP_CAN_SHOW_PREEDIT:
|
||||
g_value_set_boolean (value, priv->can_show_preedit);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_method_class_init (ClutterInputMethodClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->set_property = clutter_input_method_set_property;
|
||||
object_class->get_property = clutter_input_method_get_property;
|
||||
|
||||
signals[COMMIT] =
|
||||
g_signal_new ("commit",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1, G_TYPE_STRING);
|
||||
signals[DELETE_SURROUNDING] =
|
||||
g_signal_new ("delete-surrounding",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
|
||||
signals[REQUEST_SURROUNDING] =
|
||||
g_signal_new ("request-surrounding",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
signals[INPUT_PANEL_STATE] =
|
||||
g_signal_new ("input-panel-state",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1,
|
||||
CLUTTER_TYPE_INPUT_PANEL_STATE);
|
||||
signals[CURSOR_LOCATION_CHANGED] =
|
||||
g_signal_new ("cursor-location-changed",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 1, CLUTTER_TYPE_RECT);
|
||||
|
||||
pspecs[PROP_CONTENT_HINTS] =
|
||||
g_param_spec_flags ("content-hints",
|
||||
P_("Content hints"),
|
||||
P_("Content hints"),
|
||||
CLUTTER_TYPE_INPUT_CONTENT_HINT_FLAGS, 0,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
pspecs[PROP_CONTENT_PURPOSE] =
|
||||
g_param_spec_enum ("content-purpose",
|
||||
P_("Content purpose"),
|
||||
P_("Content purpose"),
|
||||
CLUTTER_TYPE_INPUT_CONTENT_PURPOSE, 0,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
pspecs[PROP_CAN_SHOW_PREEDIT] =
|
||||
g_param_spec_boolean ("can-show-preedit",
|
||||
P_("Can show preedit"),
|
||||
P_("Can show preedit"),
|
||||
FALSE,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, N_PROPS, pspecs);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_input_method_init (ClutterInputMethod *im)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_focus_in (ClutterInputMethod *im,
|
||||
ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
ClutterInputMethodClass *klass;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_FOCUS (focus));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
|
||||
if (priv->focus == focus)
|
||||
return;
|
||||
|
||||
if (priv->focus)
|
||||
clutter_input_method_focus_out (im);
|
||||
|
||||
g_set_object (&priv->focus, focus);
|
||||
|
||||
if (focus)
|
||||
{
|
||||
klass = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
||||
klass->focus_in (im, focus);
|
||||
|
||||
clutter_input_focus_focus_in (priv->focus, im);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_focus_out (ClutterInputMethod *im)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
ClutterInputMethodClass *klass;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
|
||||
if (!priv->focus)
|
||||
return;
|
||||
|
||||
clutter_input_focus_focus_out (priv->focus);
|
||||
g_clear_object (&priv->focus);
|
||||
|
||||
klass = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
||||
klass->focus_out (im);
|
||||
|
||||
g_signal_emit (im, signals[INPUT_PANEL_STATE],
|
||||
0, CLUTTER_INPUT_PANEL_STATE_OFF);
|
||||
}
|
||||
|
||||
ClutterInputFocus *
|
||||
clutter_input_method_get_focus (ClutterInputMethod *im)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
return priv->focus;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_commit (ClutterInputMethod *im,
|
||||
const gchar *text)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
if (priv->focus)
|
||||
clutter_input_focus_commit (priv->focus, text);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_delete_surrounding (ClutterInputMethod *im,
|
||||
guint offset,
|
||||
guint len)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
if (priv->focus)
|
||||
clutter_input_focus_delete_surrounding (priv->focus, offset, len);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_request_surrounding (ClutterInputMethod *im)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
if (priv->focus)
|
||||
clutter_input_focus_request_surrounding (priv->focus);
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_input_method_set_preedit_text:
|
||||
* @method: a #ClutterInputMethod
|
||||
* @preedit: (nullable): the preedit text, or %NULL
|
||||
*
|
||||
* Sets the preedit text on the current input focus.
|
||||
**/
|
||||
void
|
||||
clutter_input_method_set_preedit_text (ClutterInputMethod *im,
|
||||
const gchar *preedit,
|
||||
guint cursor)
|
||||
{
|
||||
ClutterInputMethodPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
priv = clutter_input_method_get_instance_private (im);
|
||||
if (priv->focus)
|
||||
clutter_input_focus_set_preedit_text (priv->focus, preedit, cursor);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_notify_key_event (ClutterInputMethod *im,
|
||||
const ClutterEvent *event,
|
||||
gboolean filtered)
|
||||
{
|
||||
if (!filtered)
|
||||
{
|
||||
ClutterEvent *copy;
|
||||
|
||||
/* XXX: we rely on the IM implementation to notify back of
|
||||
* key events in the exact same order they were given.
|
||||
*/
|
||||
copy = clutter_event_copy (event);
|
||||
clutter_event_set_flags (copy, clutter_event_get_flags (event) |
|
||||
CLUTTER_EVENT_FLAG_INPUT_METHOD);
|
||||
clutter_event_put (copy);
|
||||
clutter_event_free (copy);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_toggle_input_panel (ClutterInputMethod *im)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
g_signal_emit (im, signals[INPUT_PANEL_STATE], 0,
|
||||
CLUTTER_INPUT_PANEL_STATE_TOGGLE);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_reset (ClutterInputMethod *im)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->reset (im);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_set_cursor_location (ClutterInputMethod *im,
|
||||
const ClutterRect *rect)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->set_cursor_location (im, rect);
|
||||
|
||||
g_signal_emit (im, signals[CURSOR_LOCATION_CHANGED], 0, rect);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_set_surrounding (ClutterInputMethod *im,
|
||||
const gchar *text,
|
||||
guint cursor,
|
||||
guint anchor)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
CLUTTER_INPUT_METHOD_GET_CLASS (im)->set_surrounding (im, text,
|
||||
cursor, anchor);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_set_content_hints (ClutterInputMethod *im,
|
||||
ClutterInputContentHintFlags hints)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
g_object_set (G_OBJECT (im), "content-hints", hints, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_set_content_purpose (ClutterInputMethod *im,
|
||||
ClutterInputContentPurpose purpose)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
g_object_set (G_OBJECT (im), "content-purpose", purpose, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_input_method_set_can_show_preedit (ClutterInputMethod *im,
|
||||
gboolean can_show_preedit)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_INPUT_METHOD (im));
|
||||
|
||||
g_object_set (G_OBJECT (im), "can-show-preedit", can_show_preedit, NULL);
|
||||
}
|
||||
|
||||
gboolean
|
||||
clutter_input_method_filter_key_event (ClutterInputMethod *im,
|
||||
const ClutterKeyEvent *key)
|
||||
{
|
||||
ClutterInputMethodClass *im_class = CLUTTER_INPUT_METHOD_GET_CLASS (im);
|
||||
|
||||
g_return_val_if_fail (CLUTTER_IS_INPUT_METHOD (im), FALSE);
|
||||
g_return_val_if_fail (key != NULL, FALSE);
|
||||
|
||||
if (clutter_event_get_flags ((ClutterEvent *) key) & CLUTTER_EVENT_FLAG_INPUT_METHOD)
|
||||
return FALSE;
|
||||
if (!im_class->filter_key_event)
|
||||
return FALSE;
|
||||
|
||||
return im_class->filter_key_event (im, (const ClutterEvent *) key);
|
||||
}
|
||||
88
clutter/clutter/clutter-input-method.h
Normal file
88
clutter/clutter/clutter-input-method.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright (C) 2017,2018 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* Author: Carlos Garnacho <carlosg@gnome.org>
|
||||
*/
|
||||
|
||||
#ifndef __CLUTTER_INPUT_METHOD_H__
|
||||
#define __CLUTTER_INPUT_METHOD_H__
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
#define CLUTTER_TYPE_INPUT_METHOD (clutter_input_method_get_type ())
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
G_DECLARE_DERIVABLE_TYPE (ClutterInputMethod, clutter_input_method,
|
||||
CLUTTER, INPUT_METHOD, GObject)
|
||||
|
||||
typedef struct _ClutterInputMethodClass ClutterInputMethodClass;
|
||||
|
||||
struct _ClutterInputMethodClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (* focus_in) (ClutterInputMethod *im,
|
||||
ClutterInputFocus *actor);
|
||||
void (* focus_out) (ClutterInputMethod *im);
|
||||
|
||||
void (* reset) (ClutterInputMethod *im);
|
||||
|
||||
void (* set_cursor_location) (ClutterInputMethod *im,
|
||||
const ClutterRect *rect);
|
||||
void (* set_surrounding) (ClutterInputMethod *im,
|
||||
const gchar *text,
|
||||
guint cursor,
|
||||
guint anchor);
|
||||
void (* update_content_hints) (ClutterInputMethod *im,
|
||||
ClutterInputContentHintFlags hint);
|
||||
void (* update_content_purpose) (ClutterInputMethod *im,
|
||||
ClutterInputContentPurpose purpose);
|
||||
|
||||
gboolean (* filter_key_event) (ClutterInputMethod *im,
|
||||
const ClutterEvent *key);
|
||||
};
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_focus_in (ClutterInputMethod *im,
|
||||
ClutterInputFocus *focus);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_focus_out (ClutterInputMethod *im);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_commit (ClutterInputMethod *im,
|
||||
const gchar *text);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_delete_surrounding (ClutterInputMethod *im,
|
||||
guint offset,
|
||||
guint len);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_request_surrounding (ClutterInputMethod *im);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_set_preedit_text (ClutterInputMethod *im,
|
||||
const gchar *preedit,
|
||||
guint cursor);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_notify_key_event (ClutterInputMethod *im,
|
||||
const ClutterEvent *event,
|
||||
gboolean filtered);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_input_method_request_toggle_input_panel (ClutterInputMethod *im);
|
||||
|
||||
#endif /* __CLUTTER_INPUT_METHOD_H__ */
|
||||
@@ -2089,6 +2089,21 @@ emit_keyboard_event (ClutterEvent *event,
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
process_key_event (ClutterEvent *event,
|
||||
ClutterInputDevice *device)
|
||||
{
|
||||
ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
|
||||
|
||||
if (device_class->process_kbd_a11y_event)
|
||||
{
|
||||
device_class->process_kbd_a11y_event (event, device, emit_keyboard_event);
|
||||
return;
|
||||
}
|
||||
|
||||
emit_keyboard_event (event, device);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_off_stage (ClutterActor *stage,
|
||||
gfloat x,
|
||||
@@ -2176,7 +2191,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
||||
}
|
||||
}
|
||||
|
||||
emit_keyboard_event (event, device);
|
||||
process_key_event (event, device);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -1486,10 +1486,11 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
|
||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||
priv->viewport[2] * fb_scale,
|
||||
priv->viewport[3] * fb_scale);
|
||||
cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||
priv->viewport[2] * fb_scale,
|
||||
priv->viewport[3] * fb_scale);
|
||||
cogl_framebuffer_set_viewport (fb,
|
||||
priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||
priv->viewport[2] * fb_scale,
|
||||
priv->viewport[3] * fb_scale);
|
||||
|
||||
read_x = dirty_x * fb_scale;
|
||||
read_y = dirty_y * fb_scale;
|
||||
@@ -3617,6 +3618,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage,
|
||||
ClutterStageView *view)
|
||||
{
|
||||
ClutterStagePrivate *priv = stage->priv;
|
||||
CoglFramebuffer *fb = clutter_stage_view_get_framebuffer (view);
|
||||
|
||||
if (clutter_stage_view_is_dirty_viewport (view))
|
||||
{
|
||||
@@ -3637,10 +3639,11 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage,
|
||||
|
||||
viewport_offset_x = view_layout.x * fb_scale;
|
||||
viewport_offset_y = view_layout.y * fb_scale;
|
||||
cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||
priv->viewport[2] * fb_scale,
|
||||
priv->viewport[3] * fb_scale);
|
||||
cogl_framebuffer_set_viewport (fb,
|
||||
priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||
priv->viewport[2] * fb_scale,
|
||||
priv->viewport[3] * fb_scale);
|
||||
|
||||
perspective = priv->perspective;
|
||||
|
||||
@@ -3679,7 +3682,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage,
|
||||
|
||||
if (clutter_stage_view_is_dirty_projection (view))
|
||||
{
|
||||
cogl_set_projection_matrix (&priv->projection);
|
||||
cogl_framebuffer_set_projection_matrix (fb, &priv->projection);
|
||||
|
||||
clutter_stage_view_set_dirty_projection (view, FALSE);
|
||||
}
|
||||
@@ -4726,8 +4729,8 @@ capture_view (ClutterStage *stage,
|
||||
|
||||
if (paint)
|
||||
{
|
||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||
cogl_push_framebuffer (framebuffer);
|
||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||
clutter_stage_do_paint_view (stage, view, rect);
|
||||
}
|
||||
|
||||
@@ -4829,8 +4832,8 @@ capture_view_into (ClutterStage *stage,
|
||||
|
||||
if (paint)
|
||||
{
|
||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||
cogl_push_framebuffer (framebuffer);
|
||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||
clutter_stage_do_paint_view (stage, view, rect);
|
||||
}
|
||||
|
||||
@@ -4856,11 +4859,9 @@ capture_view_into (ClutterStage *stage,
|
||||
cogl_object_unref (bitmap);
|
||||
}
|
||||
|
||||
void
|
||||
clutter_stage_capture_into (ClutterStage *stage,
|
||||
gboolean paint,
|
||||
cairo_rectangle_int_t *rect,
|
||||
uint8_t *data)
|
||||
static ClutterStageView *
|
||||
get_view_at_rect (ClutterStage *stage,
|
||||
cairo_rectangle_int_t *rect)
|
||||
{
|
||||
ClutterStagePrivate *priv = stage->priv;
|
||||
GList *views = _clutter_stage_window_get_views (priv->impl);
|
||||
@@ -4872,8 +4873,6 @@ clutter_stage_capture_into (ClutterStage *stage,
|
||||
cairo_rectangle_int_t view_layout;
|
||||
cairo_region_t *region;
|
||||
cairo_rectangle_int_t view_capture_rect;
|
||||
int offset;
|
||||
const int bpp = 4;
|
||||
|
||||
clutter_stage_view_get_layout (view, &view_layout);
|
||||
region = cairo_region_create_rectangle (&view_layout);
|
||||
@@ -4884,8 +4883,23 @@ clutter_stage_capture_into (ClutterStage *stage,
|
||||
if (view_capture_rect.width == 0 || view_capture_rect.height == 0)
|
||||
continue;
|
||||
|
||||
offset = bpp * (view_capture_rect.y * rect->width + view_capture_rect.x);
|
||||
capture_view_into (stage, paint, view, &view_capture_rect,
|
||||
data + offset, rect->width * bpp);
|
||||
g_assert (view_capture_rect.width == rect->width &&
|
||||
view_capture_rect.height == rect->height);
|
||||
return view;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_stage_capture_into (ClutterStage *stage,
|
||||
gboolean paint,
|
||||
cairo_rectangle_int_t *rect,
|
||||
uint8_t *data)
|
||||
{
|
||||
ClutterStageView *view;
|
||||
int bpp = 4;
|
||||
|
||||
view = get_view_at_rect (stage, rect);
|
||||
capture_view_into (stage, paint, view, rect, data, rect->width * bpp);
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
#include "clutter-units.h"
|
||||
#include "clutter-paint-volume-private.h"
|
||||
#include "clutter-scriptable.h"
|
||||
#include "clutter-input-focus.h"
|
||||
|
||||
/* cursor width in pixels */
|
||||
#define DEFAULT_CURSOR_SIZE 2
|
||||
@@ -98,6 +99,12 @@ struct _LayoutCache
|
||||
guint age;
|
||||
};
|
||||
|
||||
struct _ClutterTextInputFocus
|
||||
{
|
||||
ClutterInputFocus parent_instance;
|
||||
ClutterText *text;
|
||||
};
|
||||
|
||||
struct _ClutterTextPrivate
|
||||
{
|
||||
PangoFontDescription *font_desc;
|
||||
@@ -176,6 +183,10 @@ struct _ClutterTextPrivate
|
||||
/* Signal handler for when the :text-direction changes */
|
||||
guint direction_changed_id;
|
||||
|
||||
ClutterInputFocus *input_focus;
|
||||
ClutterInputContentHintFlags input_hints;
|
||||
ClutterInputContentPurpose input_purpose;
|
||||
|
||||
/* bitfields */
|
||||
guint alignment : 2;
|
||||
guint wrap : 1;
|
||||
@@ -236,6 +247,8 @@ enum
|
||||
PROP_SINGLE_LINE_MODE,
|
||||
PROP_SELECTED_TEXT_COLOR,
|
||||
PROP_SELECTED_TEXT_COLOR_SET,
|
||||
PROP_INPUT_HINTS,
|
||||
PROP_INPUT_PURPOSE,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
@@ -269,6 +282,112 @@ static const ClutterColor default_selected_text_color = { 0, 0, 0, 255 };
|
||||
static ClutterAnimatableIface *parent_animatable_iface = NULL;
|
||||
static ClutterScriptableIface *parent_scriptable_iface = NULL;
|
||||
|
||||
/* ClutterTextInputFocus */
|
||||
#define CLUTTER_TYPE_TEXT_INPUT_FOCUS (clutter_text_input_focus_get_type ())
|
||||
|
||||
G_DECLARE_FINAL_TYPE (ClutterTextInputFocus, clutter_text_input_focus,
|
||||
CLUTTER, TEXT_INPUT_FOCUS, ClutterInputFocus)
|
||||
G_DEFINE_TYPE (ClutterTextInputFocus, clutter_text_input_focus,
|
||||
CLUTTER_TYPE_INPUT_FOCUS)
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_request_surrounding (ClutterInputFocus *focus)
|
||||
{
|
||||
ClutterText *clutter_text = CLUTTER_TEXT_INPUT_FOCUS (focus)->text;
|
||||
ClutterTextBuffer *buffer;
|
||||
const gchar *text;
|
||||
gint anchor_pos, cursor_pos;
|
||||
|
||||
buffer = clutter_text_get_buffer (clutter_text);
|
||||
text = clutter_text_buffer_get_text (buffer);
|
||||
|
||||
cursor_pos = clutter_text_get_cursor_position (clutter_text);
|
||||
if (cursor_pos < 0)
|
||||
cursor_pos = clutter_text_buffer_get_length (buffer);
|
||||
|
||||
anchor_pos = clutter_text_get_selection_bound (clutter_text);
|
||||
if (anchor_pos < 0)
|
||||
anchor_pos = cursor_pos;
|
||||
|
||||
clutter_input_focus_set_surrounding (focus, text,
|
||||
g_utf8_offset_to_pointer (text, cursor_pos) - text,
|
||||
g_utf8_offset_to_pointer (text, anchor_pos) - text);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||
guint offset,
|
||||
guint len)
|
||||
{
|
||||
ClutterText *clutter_text = CLUTTER_TEXT_INPUT_FOCUS (focus)->text;
|
||||
|
||||
if (clutter_text_get_editable (clutter_text))
|
||||
clutter_text_delete_text (clutter_text, offset, len);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_commit_text (ClutterInputFocus *focus,
|
||||
const gchar *text)
|
||||
{
|
||||
ClutterText *clutter_text = CLUTTER_TEXT_INPUT_FOCUS (focus)->text;
|
||||
|
||||
if (clutter_text_get_editable (clutter_text))
|
||||
{
|
||||
clutter_text_delete_selection (clutter_text);
|
||||
clutter_text_insert_text (clutter_text, text,
|
||||
clutter_text_get_cursor_position (clutter_text));
|
||||
clutter_text_set_preedit_string (clutter_text, NULL, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_set_preedit_text (ClutterInputFocus *focus,
|
||||
const gchar *preedit_text,
|
||||
guint cursor_pos)
|
||||
{
|
||||
ClutterText *clutter_text = CLUTTER_TEXT_INPUT_FOCUS (focus)->text;
|
||||
|
||||
if (clutter_text_get_editable (clutter_text))
|
||||
{
|
||||
PangoAttrList *list;
|
||||
|
||||
list = pango_attr_list_new ();
|
||||
pango_attr_list_insert (list, pango_attr_underline_new (PANGO_UNDERLINE_SINGLE));
|
||||
clutter_text_set_preedit_string (clutter_text,
|
||||
preedit_text, list,
|
||||
cursor_pos);
|
||||
pango_attr_list_unref (list);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_class_init (ClutterTextInputFocusClass *klass)
|
||||
{
|
||||
ClutterInputFocusClass *focus_class = CLUTTER_INPUT_FOCUS_CLASS (klass);
|
||||
|
||||
focus_class->request_surrounding = clutter_text_input_focus_request_surrounding;
|
||||
focus_class->delete_surrounding = clutter_text_input_focus_delete_surrounding;
|
||||
focus_class->commit_text = clutter_text_input_focus_commit_text;
|
||||
focus_class->set_preedit_text = clutter_text_input_focus_set_preedit_text;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_input_focus_init (ClutterTextInputFocus *focus)
|
||||
{
|
||||
}
|
||||
|
||||
static ClutterInputFocus *
|
||||
clutter_text_input_focus_new (ClutterText *text)
|
||||
{
|
||||
ClutterTextInputFocus *focus;
|
||||
|
||||
focus = g_object_new (CLUTTER_TYPE_TEXT_INPUT_FOCUS, NULL);
|
||||
focus->text = text;
|
||||
|
||||
return CLUTTER_INPUT_FOCUS (focus);
|
||||
}
|
||||
|
||||
/* ClutterText */
|
||||
static void clutter_scriptable_iface_init (ClutterScriptableIface *iface);
|
||||
static void clutter_animatable_iface_init (ClutterAnimatableIface *iface);
|
||||
|
||||
@@ -1009,6 +1128,22 @@ clutter_text_position_to_coords (ClutterText *self,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static inline void
|
||||
update_cursor_location (ClutterText *self)
|
||||
{
|
||||
ClutterTextPrivate *priv = self->priv;
|
||||
ClutterRect rect;
|
||||
float x, y;
|
||||
|
||||
if (!priv->editable)
|
||||
return;
|
||||
|
||||
rect = priv->cursor_rect;
|
||||
clutter_actor_get_transformed_position (CLUTTER_ACTOR (self), &x, &y);
|
||||
clutter_rect_offset (&rect, x, y);
|
||||
clutter_input_focus_set_cursor_location (priv->input_focus, &rect);
|
||||
}
|
||||
|
||||
static inline void
|
||||
clutter_text_ensure_cursor_position (ClutterText *self)
|
||||
{
|
||||
@@ -1057,6 +1192,8 @@ clutter_text_ensure_cursor_position (ClutterText *self)
|
||||
g_signal_emit (self, text_signals[CURSOR_EVENT], 0, &cursor_pos);
|
||||
|
||||
g_signal_emit (self, text_signals[CURSOR_CHANGED], 0);
|
||||
|
||||
update_cursor_location (self);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1503,6 +1640,8 @@ clutter_text_finalize (GObject *gobject)
|
||||
clutter_text_set_buffer (self, NULL);
|
||||
g_free (priv->font_name);
|
||||
|
||||
g_clear_object (&priv->input_focus);
|
||||
|
||||
G_OBJECT_CLASS (clutter_text_parent_class)->finalize (gobject);
|
||||
}
|
||||
|
||||
@@ -1859,6 +1998,7 @@ clutter_text_press (ClutterActor *actor,
|
||||
return CLUTTER_EVENT_PROPAGATE;
|
||||
|
||||
clutter_actor_grab_key_focus (actor);
|
||||
clutter_input_focus_request_toggle_input_panel (priv->input_focus);
|
||||
|
||||
/* if the actor is empty we just reset everything and not
|
||||
* set up the dragging of the selection since there's nothing
|
||||
@@ -2085,9 +2225,11 @@ clutter_text_key_press (ClutterActor *actor,
|
||||
g_assert (pool != NULL);
|
||||
|
||||
/* we allow passing synthetic events that only contain
|
||||
* the Unicode value and not the key symbol
|
||||
* the Unicode value and not the key symbol, unless they
|
||||
* contain the input method flag.
|
||||
*/
|
||||
if (event->keyval == 0 && (event->flags & CLUTTER_EVENT_FLAG_SYNTHETIC))
|
||||
if (event->keyval == 0 && (event->flags & CLUTTER_EVENT_FLAG_SYNTHETIC) &&
|
||||
!(event->flags & CLUTTER_EVENT_FLAG_INPUT_METHOD))
|
||||
res = FALSE;
|
||||
else
|
||||
res = clutter_binding_pool_activate (pool, event->keyval,
|
||||
@@ -2105,6 +2247,10 @@ clutter_text_key_press (ClutterActor *actor,
|
||||
{
|
||||
gunichar key_unichar;
|
||||
|
||||
if (clutter_input_focus_is_focused (priv->input_focus) &&
|
||||
clutter_input_focus_filter_key_event (priv->input_focus, event))
|
||||
return CLUTTER_EVENT_STOP;
|
||||
|
||||
/* Skip keys when control is pressed */
|
||||
key_unichar = clutter_event_get_key_unicode ((ClutterEvent *) event);
|
||||
|
||||
@@ -2141,6 +2287,20 @@ clutter_text_key_press (ClutterActor *actor,
|
||||
return CLUTTER_EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
clutter_text_key_release (ClutterActor *actor,
|
||||
ClutterKeyEvent *event)
|
||||
{
|
||||
ClutterText *self = CLUTTER_TEXT (actor);
|
||||
ClutterTextPrivate *priv = self->priv;
|
||||
|
||||
if (clutter_input_focus_is_focused (priv->input_focus) &&
|
||||
clutter_input_focus_filter_key_event (priv->input_focus, event))
|
||||
return CLUTTER_EVENT_STOP;
|
||||
|
||||
return CLUTTER_EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_text_compute_layout_offsets (ClutterText *self,
|
||||
PangoLayout *layout,
|
||||
@@ -2663,6 +2823,14 @@ static void
|
||||
clutter_text_key_focus_in (ClutterActor *actor)
|
||||
{
|
||||
ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
|
||||
|
||||
if (method && priv->editable)
|
||||
{
|
||||
clutter_input_method_focus_in (method, priv->input_focus);
|
||||
update_cursor_location (CLUTTER_TEXT (actor));
|
||||
}
|
||||
|
||||
priv->has_focus = TRUE;
|
||||
|
||||
@@ -2673,9 +2841,17 @@ static void
|
||||
clutter_text_key_focus_out (ClutterActor *actor)
|
||||
{
|
||||
ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
|
||||
|
||||
priv->has_focus = FALSE;
|
||||
|
||||
if (priv->editable && clutter_input_focus_is_focused (priv->input_focus))
|
||||
{
|
||||
clutter_text_set_preedit_string (CLUTTER_TEXT (actor), NULL, NULL, 0);
|
||||
clutter_input_method_focus_out (method);
|
||||
}
|
||||
|
||||
clutter_text_queue_redraw (actor);
|
||||
}
|
||||
|
||||
@@ -3369,6 +3545,7 @@ clutter_text_class_init (ClutterTextClass *klass)
|
||||
actor_class->get_preferred_height = clutter_text_get_preferred_height;
|
||||
actor_class->allocate = clutter_text_allocate;
|
||||
actor_class->key_press_event = clutter_text_key_press;
|
||||
actor_class->key_release_event = clutter_text_key_release;
|
||||
actor_class->button_press_event = clutter_text_button_press;
|
||||
actor_class->button_release_event = clutter_text_button_release;
|
||||
actor_class->motion_event = clutter_text_motion;
|
||||
@@ -3869,6 +4046,22 @@ clutter_text_class_init (ClutterTextClass *klass)
|
||||
obj_props[PROP_SELECTED_TEXT_COLOR_SET] = pspec;
|
||||
g_object_class_install_property (gobject_class, PROP_SELECTED_TEXT_COLOR_SET, pspec);
|
||||
|
||||
pspec = g_param_spec_flags ("input-hints",
|
||||
P_("Input hints"),
|
||||
P_("Input hints"),
|
||||
CLUTTER_TYPE_INPUT_CONTENT_HINT_FLAGS,
|
||||
0, CLUTTER_PARAM_READWRITE);
|
||||
obj_props[PROP_INPUT_HINTS] = pspec;
|
||||
g_object_class_install_property (gobject_class, PROP_INPUT_HINTS, pspec);
|
||||
|
||||
pspec = g_param_spec_enum ("input-purpose",
|
||||
P_("Input purpose"),
|
||||
P_("Input purpose"),
|
||||
CLUTTER_TYPE_INPUT_CONTENT_PURPOSE,
|
||||
0, CLUTTER_PARAM_READWRITE);
|
||||
obj_props[PROP_INPUT_PURPOSE] = pspec;
|
||||
g_object_class_install_property (gobject_class, PROP_INPUT_PURPOSE, pspec);
|
||||
|
||||
/**
|
||||
* ClutterText::text-changed:
|
||||
* @self: the #ClutterText that emitted the signal
|
||||
@@ -4169,6 +4362,8 @@ clutter_text_init (ClutterText *self)
|
||||
g_signal_connect (self, "notify::text-direction",
|
||||
G_CALLBACK (clutter_text_direction_changed_cb),
|
||||
NULL);
|
||||
|
||||
priv->input_focus = clutter_text_input_focus_new (self);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4459,6 +4654,8 @@ void
|
||||
clutter_text_set_editable (ClutterText *self,
|
||||
gboolean editable)
|
||||
{
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
|
||||
ClutterTextPrivate *priv;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_TEXT (self));
|
||||
@@ -4469,6 +4666,14 @@ clutter_text_set_editable (ClutterText *self,
|
||||
{
|
||||
priv->editable = editable;
|
||||
|
||||
if (method)
|
||||
{
|
||||
if (!priv->editable && clutter_input_focus_is_focused (priv->input_focus))
|
||||
clutter_input_method_focus_out (method);
|
||||
else if (priv->has_focus)
|
||||
clutter_input_method_focus_in (method, priv->input_focus);
|
||||
}
|
||||
|
||||
clutter_text_queue_redraw (CLUTTER_ACTOR (self));
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_EDITABLE]);
|
||||
@@ -6298,3 +6503,49 @@ clutter_text_get_cursor_rect (ClutterText *self,
|
||||
|
||||
*rect = self->priv->cursor_rect;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_text_set_input_hints (ClutterText *self,
|
||||
ClutterInputContentHintFlags hints)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_TEXT (self));
|
||||
|
||||
self->priv->input_hints = hints;
|
||||
clutter_input_focus_set_content_hints (self->priv->input_focus, hints);
|
||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_HINTS]);
|
||||
}
|
||||
|
||||
ClutterInputContentHintFlags
|
||||
clutter_text_get_input_hints (ClutterText *self)
|
||||
{
|
||||
g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0);
|
||||
|
||||
return self->priv->input_hints;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_text_set_input_purpose (ClutterText *self,
|
||||
ClutterInputContentPurpose purpose)
|
||||
{
|
||||
g_return_if_fail (CLUTTER_IS_TEXT (self));
|
||||
|
||||
self->priv->input_purpose = purpose;
|
||||
clutter_input_focus_set_content_purpose (self->priv->input_focus, purpose);
|
||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_PURPOSE]);
|
||||
}
|
||||
|
||||
ClutterInputContentPurpose
|
||||
clutter_text_get_input_purpose (ClutterText *self)
|
||||
{
|
||||
g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0);
|
||||
|
||||
return self->priv->input_purpose;
|
||||
}
|
||||
|
||||
gboolean
|
||||
clutter_text_has_preedit (ClutterText *self)
|
||||
{
|
||||
g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE);
|
||||
|
||||
return self->priv->preedit_set;
|
||||
}
|
||||
|
||||
@@ -302,6 +302,20 @@ void clutter_text_get_layout_offsets (ClutterText *
|
||||
gint *x,
|
||||
gint *y);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_text_set_input_hints (ClutterText *self,
|
||||
ClutterInputContentHintFlags hints);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
void clutter_text_set_input_purpose (ClutterText *self,
|
||||
ClutterInputContentPurpose purpose);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
ClutterInputContentHintFlags clutter_text_get_input_hints (ClutterText *self);
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
ClutterInputContentPurpose clutter_text_get_input_purpose (ClutterText *self);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_MUTTER
|
||||
gboolean clutter_text_has_preedit (ClutterText *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_TEXT_H__ */
|
||||
|
||||
@@ -97,6 +97,9 @@ typedef struct _ClutterInputDeviceTool ClutterInputDeviceTool;
|
||||
typedef struct _ClutterInputDevice ClutterInputDevice;
|
||||
typedef struct _ClutterVirtualInputDevice ClutterVirtualInputDevice;
|
||||
|
||||
typedef struct _ClutterInputMethod ClutterInputMethod;
|
||||
typedef struct _ClutterInputFocus ClutterInputFocus;
|
||||
|
||||
typedef CoglMatrix ClutterMatrix;
|
||||
|
||||
typedef union _ClutterEvent ClutterEvent;
|
||||
|
||||
@@ -72,6 +72,8 @@
|
||||
#include "clutter-image.h"
|
||||
#include "clutter-input-device.h"
|
||||
#include "clutter-input-device-tool.h"
|
||||
#include "clutter-input-method.h"
|
||||
#include "clutter-input-focus.h"
|
||||
#include "clutter-interval.h"
|
||||
#include "clutter-keyframe-transition.h"
|
||||
#include "clutter-keysyms.h"
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-main.h"
|
||||
#include "clutter-stage-private.h"
|
||||
#include "clutter-settings-private.h"
|
||||
|
||||
#ifdef COGL_HAS_EGL_SUPPORT
|
||||
#include "clutter-egl.h"
|
||||
@@ -60,6 +61,8 @@ clutter_backend_egl_native_dispose (GObject *gobject)
|
||||
{
|
||||
ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (gobject);
|
||||
|
||||
g_clear_object (&backend_egl_native->xsettings);
|
||||
|
||||
if (backend_egl_native->event_timer != NULL)
|
||||
{
|
||||
g_timer_destroy (backend_egl_native->event_timer);
|
||||
@@ -77,9 +80,181 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass)
|
||||
gobject_class->dispose = clutter_backend_egl_native_dispose;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
cairo_antialias_t cairo_antialias;
|
||||
gint clutter_font_antialias;
|
||||
|
||||
cairo_hint_style_t cairo_hint_style;
|
||||
const char *clutter_font_hint_style;
|
||||
|
||||
cairo_subpixel_order_t cairo_subpixel_order;
|
||||
const char *clutter_font_subpixel_order;
|
||||
} FontSettings;
|
||||
|
||||
static void
|
||||
get_font_gsettings (GSettings *xsettings,
|
||||
FontSettings *output)
|
||||
{
|
||||
/* org.gnome.settings-daemon.GsdFontAntialiasingMode */
|
||||
static const struct
|
||||
{
|
||||
cairo_antialias_t cairo_antialias;
|
||||
gint clutter_font_antialias;
|
||||
}
|
||||
antialiasings[] =
|
||||
{
|
||||
/* none=0 */ {CAIRO_ANTIALIAS_NONE, 0},
|
||||
/* grayscale=1 */ {CAIRO_ANTIALIAS_GRAY, 1},
|
||||
/* rgba=2 */ {CAIRO_ANTIALIAS_SUBPIXEL, 1},
|
||||
};
|
||||
|
||||
/* org.gnome.settings-daemon.GsdFontHinting */
|
||||
static const struct
|
||||
{
|
||||
cairo_hint_style_t cairo_hint_style;
|
||||
const char *clutter_font_hint_style;
|
||||
}
|
||||
hintings[] =
|
||||
{
|
||||
/* none=0 */ {CAIRO_HINT_STYLE_NONE, "hintnone"},
|
||||
/* slight=1 */ {CAIRO_HINT_STYLE_SLIGHT, "hintslight"},
|
||||
/* medium=2 */ {CAIRO_HINT_STYLE_MEDIUM, "hintmedium"},
|
||||
/* full=3 */ {CAIRO_HINT_STYLE_FULL, "hintfull"},
|
||||
};
|
||||
|
||||
/* org.gnome.settings-daemon.GsdFontRgbaOrder */
|
||||
static const struct
|
||||
{
|
||||
cairo_subpixel_order_t cairo_subpixel_order;
|
||||
const char *clutter_font_subpixel_order;
|
||||
}
|
||||
rgba_orders[] =
|
||||
{
|
||||
/* rgba=0 */ {CAIRO_SUBPIXEL_ORDER_RGB, "rgb"}, /* XXX what is 'rgba'? */
|
||||
/* rgb=1 */ {CAIRO_SUBPIXEL_ORDER_RGB, "rgb"},
|
||||
/* bgr=2 */ {CAIRO_SUBPIXEL_ORDER_BGR, "bgr"},
|
||||
/* vrgb=3 */ {CAIRO_SUBPIXEL_ORDER_VRGB, "vrgb"},
|
||||
/* vbgr=4 */ {CAIRO_SUBPIXEL_ORDER_VBGR, "vbgr"},
|
||||
};
|
||||
guint i;
|
||||
|
||||
i = g_settings_get_enum (xsettings, "hinting");
|
||||
if (i < G_N_ELEMENTS (hintings))
|
||||
{
|
||||
output->cairo_hint_style = hintings[i].cairo_hint_style;
|
||||
output->clutter_font_hint_style = hintings[i].clutter_font_hint_style;
|
||||
}
|
||||
else
|
||||
{
|
||||
output->cairo_hint_style = CAIRO_HINT_STYLE_DEFAULT;
|
||||
output->clutter_font_hint_style = NULL;
|
||||
}
|
||||
|
||||
i = g_settings_get_enum (xsettings, "antialiasing");
|
||||
if (i < G_N_ELEMENTS (antialiasings))
|
||||
{
|
||||
output->cairo_antialias = antialiasings[i].cairo_antialias;
|
||||
output->clutter_font_antialias = antialiasings[i].clutter_font_antialias;
|
||||
}
|
||||
else
|
||||
{
|
||||
output->cairo_antialias = CAIRO_ANTIALIAS_DEFAULT;
|
||||
output->clutter_font_antialias = -1;
|
||||
}
|
||||
|
||||
i = g_settings_get_enum (xsettings, "rgba-order");
|
||||
if (i < G_N_ELEMENTS (rgba_orders))
|
||||
{
|
||||
output->cairo_subpixel_order = rgba_orders[i].cairo_subpixel_order;
|
||||
output->clutter_font_subpixel_order = rgba_orders[i].clutter_font_subpixel_order;
|
||||
}
|
||||
else
|
||||
{
|
||||
output->cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT;
|
||||
output->clutter_font_subpixel_order = NULL;
|
||||
}
|
||||
|
||||
if (output->cairo_antialias == CAIRO_ANTIALIAS_GRAY)
|
||||
output->clutter_font_subpixel_order = "none";
|
||||
}
|
||||
|
||||
static void
|
||||
init_font_options (ClutterBackendEglNative *backend_egl_native)
|
||||
{
|
||||
GSettings *xsettings = backend_egl_native->xsettings;
|
||||
cairo_font_options_t *options = cairo_font_options_create ();
|
||||
FontSettings fs;
|
||||
|
||||
get_font_gsettings (xsettings, &fs);
|
||||
|
||||
cairo_font_options_set_hint_style (options, fs.cairo_hint_style);
|
||||
cairo_font_options_set_antialias (options, fs.cairo_antialias);
|
||||
cairo_font_options_set_subpixel_order (options, fs.cairo_subpixel_order);
|
||||
|
||||
clutter_backend_set_font_options (CLUTTER_BACKEND (backend_egl_native),
|
||||
options);
|
||||
|
||||
cairo_font_options_destroy (options);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_xsettings_change_event (GSettings *xsettings,
|
||||
gpointer keys,
|
||||
gint n_keys,
|
||||
gpointer user_data)
|
||||
{
|
||||
/*
|
||||
* A simpler alternative to this function that does not update the screen
|
||||
* immediately (like macOS :P):
|
||||
*
|
||||
* init_font_options (CLUTTER_BACKEND_EGL_NATIVE (user_data));
|
||||
*
|
||||
* which has the added benefit of eliminating the need for all the
|
||||
* FontSettings.clutter_ fields. However the below approach is better for
|
||||
* testing settings and more consistent with the existing x11 backend...
|
||||
*/
|
||||
ClutterSettings *csettings = clutter_settings_get_default ();
|
||||
FontSettings fs;
|
||||
gint hinting;
|
||||
|
||||
get_font_gsettings (xsettings, &fs);
|
||||
hinting = fs.cairo_hint_style == CAIRO_HINT_STYLE_NONE ? 0 : 1;
|
||||
g_object_set (csettings,
|
||||
"font-hinting", hinting,
|
||||
"font-hint-style", fs.clutter_font_hint_style,
|
||||
"font-antialias", fs.clutter_font_antialias,
|
||||
"font-subpixel-order", fs.clutter_font_subpixel_order,
|
||||
NULL);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_backend_egl_native_init (ClutterBackendEglNative *backend_egl_native)
|
||||
{
|
||||
static const gchar xsettings_path[] = "org.gnome.settings-daemon.plugins.xsettings";
|
||||
GSettingsSchemaSource *source = g_settings_schema_source_get_default ();
|
||||
GSettingsSchema *schema = g_settings_schema_source_lookup (source,
|
||||
xsettings_path,
|
||||
FALSE);
|
||||
|
||||
if (!schema)
|
||||
{
|
||||
g_warning ("Failed to find schema: %s", xsettings_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
backend_egl_native->xsettings = g_settings_new_full (schema, NULL, NULL);
|
||||
if (backend_egl_native->xsettings)
|
||||
{
|
||||
init_font_options (backend_egl_native);
|
||||
g_signal_connect (backend_egl_native->xsettings, "change-event",
|
||||
G_CALLBACK (on_xsettings_change_event),
|
||||
backend_egl_native);
|
||||
}
|
||||
}
|
||||
|
||||
backend_egl_native->event_timer = g_timer_new ();
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,9 @@ struct _ClutterBackendEglNative
|
||||
|
||||
/* event timer */
|
||||
GTimer *event_timer;
|
||||
|
||||
/* "xsettings" is still the defacto place for Xft settings, even in Wayland */
|
||||
GSettings *xsettings;
|
||||
};
|
||||
|
||||
struct _ClutterBackendEglNativeClass
|
||||
|
||||
@@ -432,7 +432,7 @@ notify_touch_event (ClutterInputDevice *input_device,
|
||||
&event->touch.y);
|
||||
|
||||
/* "NULL" sequences are special cased in clutter */
|
||||
event->touch.sequence = GINT_TO_POINTER (slot + 1);
|
||||
event->touch.sequence = GINT_TO_POINTER (MAX (1, slot + 1));
|
||||
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
|
||||
|
||||
if (evtype == CLUTTER_TOUCH_BEGIN ||
|
||||
@@ -1214,8 +1214,7 @@ notify_continuous_axis (ClutterSeatEvdev *seat,
|
||||
|
||||
clutter_seat_evdev_notify_scroll_continuous (seat, device, time_us,
|
||||
dx, dy,
|
||||
scroll_source,
|
||||
CLUTTER_SCROLL_FINISHED_NONE);
|
||||
scroll_source, finish_flags);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1460,6 +1459,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
|
||||
slot = libinput_event_touch_get_slot (touch_event);
|
||||
time_us = libinput_event_touch_get_time_usec (touch_event);
|
||||
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
||||
if (!touch_state)
|
||||
break;
|
||||
|
||||
notify_touch_event (device, CLUTTER_TOUCH_END, time_us, slot,
|
||||
touch_state->coords.x, touch_state->coords.y);
|
||||
@@ -1498,6 +1499,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
|
||||
stage_height);
|
||||
|
||||
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
||||
if (!touch_state)
|
||||
break;
|
||||
|
||||
touch_state->coords.x = x;
|
||||
touch_state->coords.y = y;
|
||||
|
||||
@@ -1924,6 +1928,18 @@ clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_mange
|
||||
dy_unaccel + dst_dy_unaccel);
|
||||
}
|
||||
|
||||
static void
|
||||
clutter_device_manager_evdev_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *settings)
|
||||
{
|
||||
ClutterInputDevice *device;
|
||||
|
||||
device = clutter_device_manager_evdev_get_core_device (device_manager, CLUTTER_KEYBOARD_DEVICE);
|
||||
if (device)
|
||||
clutter_input_device_evdev_apply_kbd_a11y_settings (CLUTTER_INPUT_DEVICE_EVDEV (device),
|
||||
settings);
|
||||
}
|
||||
|
||||
/*
|
||||
* GObject implementation
|
||||
*/
|
||||
@@ -2066,6 +2082,7 @@ clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass)
|
||||
manager_class->get_device = clutter_device_manager_evdev_get_device;
|
||||
manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_device;
|
||||
manager_class->compress_motion = clutter_device_manager_evdev_compress_motion;
|
||||
manager_class->apply_kbd_a11y_settings = clutter_device_manager_evdev_apply_kbd_a11y_settings;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2186,7 +2203,7 @@ _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *mana
|
||||
|
||||
first = g_list_first (priv->free_device_ids);
|
||||
next_id = GPOINTER_TO_INT (first->data);
|
||||
priv->free_device_ids = g_list_remove_link (priv->free_device_ids, first);
|
||||
priv->free_device_ids = g_list_delete_link (priv->free_device_ids, first);
|
||||
|
||||
return next_id;
|
||||
}
|
||||
@@ -2305,7 +2322,7 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev)
|
||||
0, /* depressed */
|
||||
latched_mods,
|
||||
locked_mods,
|
||||
0, 0, 0);
|
||||
0, 0, seat->layout_idx);
|
||||
|
||||
seat->caps_lock_led = xkb_keymap_led_get_index (priv->keymap, XKB_LED_NAME_CAPS);
|
||||
seat->num_lock_led = xkb_keymap_led_get_index (priv->keymap, XKB_LED_NAME_NUM);
|
||||
@@ -2453,6 +2470,7 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
|
||||
xkb_mod_mask_t latched_mods;
|
||||
xkb_mod_mask_t locked_mods;
|
||||
struct xkb_state *state;
|
||||
GSList *l;
|
||||
|
||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev));
|
||||
|
||||
@@ -2464,6 +2482,12 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
|
||||
locked_mods = xkb_state_serialize_mods (state, XKB_STATE_MODS_LOCKED);
|
||||
|
||||
xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx);
|
||||
for (l = manager_evdev->priv->seats; l; l = l->next)
|
||||
{
|
||||
ClutterSeatEvdev *seat = l->data;
|
||||
|
||||
seat->layout_idx = idx;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2473,12 +2497,9 @@ xkb_layout_index_t
|
||||
clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev)
|
||||
{
|
||||
ClutterDeviceManagerEvdev *manager_evdev;
|
||||
struct xkb_state *state;
|
||||
|
||||
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
|
||||
state = manager_evdev->priv->main_seat->xkb;
|
||||
|
||||
return xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_LOCKED);
|
||||
return manager_evdev->priv->main_seat->layout_idx;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -70,6 +70,29 @@ struct _ClutterInputDeviceEvdev
|
||||
cairo_matrix_t device_matrix;
|
||||
gdouble device_aspect_ratio; /* w:h */
|
||||
gdouble output_ratio; /* w:h */
|
||||
|
||||
/* Keyboard a11y */
|
||||
ClutterKeyboardA11yFlags a11y_flags;
|
||||
GList *slow_keys_list;
|
||||
guint debounce_timer;
|
||||
guint16 debounce_key;
|
||||
xkb_mod_mask_t stickykeys_depressed_mask;
|
||||
xkb_mod_mask_t stickykeys_latched_mask;
|
||||
xkb_mod_mask_t stickykeys_locked_mask;
|
||||
guint toggle_slowkeys_timer;
|
||||
guint16 shift_count;
|
||||
guint32 last_shift_time;
|
||||
gint mousekeys_btn;
|
||||
gboolean mousekeys_btn_states[3];
|
||||
guint32 mousekeys_first_motion_time; /* ms */
|
||||
guint32 mousekeys_last_motion_time; /* ms */
|
||||
guint mousekeys_init_delay;
|
||||
guint mousekeys_accel_time;
|
||||
guint mousekeys_max_speed;
|
||||
gdouble mousekeys_curve_factor;
|
||||
guint move_mousekeys_timer;
|
||||
guint16 last_mousekeys_key;
|
||||
ClutterVirtualInputDevice *mousekeys_virtual_device;
|
||||
};
|
||||
|
||||
GType _clutter_input_device_evdev_get_type (void) G_GNUC_CONST;
|
||||
@@ -111,6 +134,9 @@ void clutter_input_device_evdev_translate_coordinates (Clut
|
||||
gfloat *x,
|
||||
gfloat *y);
|
||||
|
||||
void clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device,
|
||||
ClutterKbdA11ySettings *settings);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */
|
||||
|
||||
@@ -45,6 +45,10 @@
|
||||
|
||||
#define DISCRETE_SCROLL_STEP 10.0
|
||||
|
||||
#ifndef BTN_STYLUS3
|
||||
#define BTN_STYLUS3 0x149 /* Linux 4.15 */
|
||||
#endif
|
||||
|
||||
void
|
||||
clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat,
|
||||
struct libinput_seat *libinput_seat)
|
||||
@@ -492,6 +496,10 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat,
|
||||
button_nr = CLUTTER_BUTTON_MIDDLE;
|
||||
break;
|
||||
|
||||
case 0x149: /* BTN_STYLUS3 */
|
||||
button_nr = 8;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* For compatibility reasons, all additional buttons go after the old 4-7 scroll ones */
|
||||
if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE)
|
||||
|
||||
@@ -58,6 +58,7 @@ struct _ClutterSeatEvdev
|
||||
xkb_led_index_t caps_lock_led;
|
||||
xkb_led_index_t num_lock_led;
|
||||
xkb_led_index_t scroll_lock_led;
|
||||
xkb_layout_index_t layout_idx;
|
||||
uint32_t button_state;
|
||||
int button_count[KEY_CNT];
|
||||
|
||||
|
||||
@@ -109,7 +109,6 @@ static const gchar *atom_names[] = {
|
||||
#define N_ATOM_NAMES G_N_ELEMENTS (atom_names)
|
||||
|
||||
/* various flags corresponding to pre init setup calls */
|
||||
static gboolean _want_reset_on_video_memory_purge = FALSE;
|
||||
static gboolean _no_xevent_retrieval = FALSE;
|
||||
static gboolean clutter_enable_xinput = TRUE;
|
||||
static gboolean clutter_enable_argb = FALSE;
|
||||
@@ -682,8 +681,7 @@ clutter_backend_x11_get_renderer (ClutterBackend *backend,
|
||||
|
||||
/* set the display object we're using */
|
||||
cogl_xlib_renderer_set_foreign_display (renderer, xdisplay);
|
||||
cogl_xlib_renderer_request_reset_on_video_memory_purge (renderer,
|
||||
_want_reset_on_video_memory_purge);
|
||||
|
||||
return renderer;
|
||||
}
|
||||
|
||||
@@ -1028,30 +1026,6 @@ clutter_x11_has_event_retrieval (void)
|
||||
return !_no_xevent_retrieval;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_x11_request_reset_on_video_memory_purge:
|
||||
*
|
||||
* If the GL driver supports the NV_robustness_video_memory_purge
|
||||
* extension, this call lets applications request that it gets
|
||||
* initialized, thus allowing cogl_get_graphics_reset_status() to
|
||||
* report memory purged errors if they happen. Checking for the
|
||||
* graphics reset status is the application's responsibility.
|
||||
*
|
||||
* This function can only be called before calling clutter_init().
|
||||
*/
|
||||
void
|
||||
clutter_x11_request_reset_on_video_memory_purge (void)
|
||||
{
|
||||
if (_clutter_context_is_initialized ())
|
||||
{
|
||||
g_warning ("%s() can only be used before calling clutter_init()",
|
||||
G_STRFUNC);
|
||||
return;
|
||||
}
|
||||
|
||||
_want_reset_on_video_memory_purge = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* clutter_x11_get_default_screen:
|
||||
*
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "clutter-event-translator.h"
|
||||
#include "clutter-stage-private.h"
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-xkb-a11y-x11.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -352,9 +353,11 @@ static void
|
||||
clutter_device_manager_x11_constructed (GObject *gobject)
|
||||
{
|
||||
ClutterDeviceManagerX11 *manager_x11;
|
||||
ClutterDeviceManager *manager;
|
||||
ClutterBackendX11 *backend_x11;
|
||||
|
||||
manager_x11 = CLUTTER_DEVICE_MANAGER_X11 (gobject);
|
||||
manager = CLUTTER_DEVICE_MANAGER (gobject);
|
||||
|
||||
g_object_get (gobject, "backend", &backend_x11, NULL);
|
||||
g_assert (backend_x11 != NULL);
|
||||
@@ -389,6 +392,8 @@ clutter_device_manager_x11_constructed (GObject *gobject)
|
||||
_clutter_input_device_set_associated_device (manager_x11->core_keyboard,
|
||||
manager_x11->core_pointer);
|
||||
|
||||
clutter_device_manager_x11_a11y_init (manager);
|
||||
|
||||
if (G_OBJECT_CLASS (clutter_device_manager_x11_parent_class)->constructed)
|
||||
G_OBJECT_CLASS (clutter_device_manager_x11_parent_class)->constructed (gobject);
|
||||
}
|
||||
@@ -532,6 +537,7 @@ clutter_device_manager_x11_class_init (ClutterDeviceManagerX11Class *klass)
|
||||
manager_class->get_core_device = clutter_device_manager_x11_get_core_device;
|
||||
manager_class->get_device = clutter_device_manager_x11_get_device;
|
||||
manager_class->create_virtual_device = clutter_device_manager_x11_create_virtual_device;
|
||||
manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "clutter-event-translator.h"
|
||||
#include "clutter-stage-private.h"
|
||||
#include "clutter-private.h"
|
||||
#include "clutter-xkb-a11y-x11.h"
|
||||
|
||||
#include <X11/extensions/XInput2.h>
|
||||
|
||||
@@ -1987,6 +1988,8 @@ clutter_device_manager_xi2_constructed (GObject *gobject)
|
||||
|
||||
XSync (backend_x11->xdpy, False);
|
||||
|
||||
clutter_device_manager_x11_a11y_init (manager);
|
||||
|
||||
if (G_OBJECT_CLASS (clutter_device_manager_xi2_parent_class)->constructed)
|
||||
G_OBJECT_CLASS (clutter_device_manager_xi2_parent_class)->constructed (gobject);
|
||||
}
|
||||
@@ -2049,6 +2052,7 @@ clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass)
|
||||
manager_class->get_device = clutter_device_manager_xi2_get_device;
|
||||
manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events;
|
||||
manager_class->create_virtual_device = clutter_device_manager_xi2_create_virtual_device;
|
||||
manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -14,7 +14,6 @@ static const struct {
|
||||
{ "Xft/HintStyle", "font-hint-style" },
|
||||
{ "Xft/RGBA", "font-subpixel-order" },
|
||||
{ "Fontconfig/Timestamp", "fontconfig-timestamp" },
|
||||
{ "Gdk/UnscaledDPI", "unscaled-font-dpi" },
|
||||
};
|
||||
|
||||
static const gint _n_clutter_settings_map = G_N_ELEMENTS (_clutter_settings_map);
|
||||
|
||||
@@ -161,9 +161,6 @@ gint clutter_x11_event_get_key_group (const ClutterEvent *event);
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
guint clutter_x11_event_sequence_get_touch_detail (const ClutterEventSequence *sequence);
|
||||
|
||||
CLUTTER_AVAILABLE_IN_ALL
|
||||
void clutter_x11_request_reset_on_video_memory_purge (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __CLUTTER_X11_H__ */
|
||||
|
||||
328
clutter/clutter/x11/clutter-xkb-a11y-x11.c
Normal file
328
clutter/clutter/x11/clutter-xkb-a11y-x11.c
Normal file
@@ -0,0 +1,328 @@
|
||||
/*
|
||||
*
|
||||
* Copyright © 2001 Ximian, Inc.
|
||||
* Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "clutter-device-manager-private.h"
|
||||
#include "clutter-xkb-a11y-x11.h"
|
||||
|
||||
#include <X11/XKBlib.h>
|
||||
#include <X11/extensions/XKBstr.h>
|
||||
|
||||
#define DEFAULT_XKB_SET_CONTROLS_MASK XkbSlowKeysMask | \
|
||||
XkbBounceKeysMask | \
|
||||
XkbStickyKeysMask | \
|
||||
XkbMouseKeysMask | \
|
||||
XkbMouseKeysAccelMask | \
|
||||
XkbAccessXKeysMask | \
|
||||
XkbAccessXTimeoutMask | \
|
||||
XkbAccessXFeedbackMask | \
|
||||
XkbControlsEnabledMask
|
||||
|
||||
static int _xkb_event_base;
|
||||
|
||||
static XkbDescRec *
|
||||
get_xkb_desc_rec (ClutterBackendX11 *backend_x11)
|
||||
{
|
||||
XkbDescRec *desc;
|
||||
Status status = Success;
|
||||
|
||||
clutter_x11_trap_x_errors ();
|
||||
desc = XkbGetMap (backend_x11->xdpy, XkbAllMapComponentsMask, XkbUseCoreKbd);
|
||||
if (desc != NULL)
|
||||
{
|
||||
desc->ctrls = NULL;
|
||||
status = XkbGetControls (backend_x11->xdpy, XkbAllControlsMask, desc);
|
||||
}
|
||||
clutter_x11_untrap_x_errors ();
|
||||
|
||||
g_return_val_if_fail (desc != NULL, NULL);
|
||||
g_return_val_if_fail (desc->ctrls != NULL, NULL);
|
||||
g_return_val_if_fail (status == Success, NULL);
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
||||
static void
|
||||
set_xkb_desc_rec (ClutterBackendX11 *backend_x11,
|
||||
XkbDescRec *desc)
|
||||
{
|
||||
clutter_x11_trap_x_errors ();
|
||||
XkbSetControls (backend_x11->xdpy, DEFAULT_XKB_SET_CONTROLS_MASK, desc);
|
||||
XSync (backend_x11->xdpy, FALSE);
|
||||
clutter_x11_untrap_x_errors ();
|
||||
}
|
||||
|
||||
static void
|
||||
check_settings_changed (ClutterDeviceManager *device_manager)
|
||||
{
|
||||
ClutterBackendX11 *backend_x11;
|
||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||
ClutterKeyboardA11yFlags what_changed = 0;
|
||||
XkbDescRec *desc;
|
||||
|
||||
backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ());
|
||||
desc = get_xkb_desc_rec (backend_x11);
|
||||
if (!desc)
|
||||
return;
|
||||
|
||||
clutter_device_manager_get_kbd_a11y_settings (device_manager, &kbd_a11y_settings);
|
||||
|
||||
if (desc->ctrls->enabled_ctrls & XkbSlowKeysMask &&
|
||||
!(kbd_a11y_settings.controls & CLUTTER_A11Y_SLOW_KEYS_ENABLED))
|
||||
{
|
||||
what_changed |= CLUTTER_A11Y_SLOW_KEYS_ENABLED;
|
||||
kbd_a11y_settings.controls |= CLUTTER_A11Y_SLOW_KEYS_ENABLED;
|
||||
}
|
||||
else if (!(desc->ctrls->enabled_ctrls & XkbSlowKeysMask) &&
|
||||
kbd_a11y_settings.controls & CLUTTER_A11Y_SLOW_KEYS_ENABLED)
|
||||
{
|
||||
what_changed |= CLUTTER_A11Y_SLOW_KEYS_ENABLED;
|
||||
kbd_a11y_settings.controls &= ~CLUTTER_A11Y_SLOW_KEYS_ENABLED;
|
||||
}
|
||||
|
||||
if (desc->ctrls->enabled_ctrls & XkbStickyKeysMask &&
|
||||
!(kbd_a11y_settings.controls & CLUTTER_A11Y_STICKY_KEYS_ENABLED))
|
||||
{
|
||||
what_changed |= CLUTTER_A11Y_STICKY_KEYS_ENABLED;
|
||||
kbd_a11y_settings.controls |= CLUTTER_A11Y_STICKY_KEYS_ENABLED;
|
||||
}
|
||||
else if (!(desc->ctrls->enabled_ctrls & XkbStickyKeysMask) &&
|
||||
kbd_a11y_settings.controls & CLUTTER_A11Y_STICKY_KEYS_ENABLED)
|
||||
{
|
||||
what_changed |= CLUTTER_A11Y_STICKY_KEYS_ENABLED;
|
||||
kbd_a11y_settings.controls &= ~CLUTTER_A11Y_STICKY_KEYS_ENABLED;
|
||||
}
|
||||
|
||||
if (what_changed)
|
||||
g_signal_emit_by_name (device_manager,
|
||||
"kbd-a11y-flags-changed",
|
||||
kbd_a11y_settings.controls,
|
||||
what_changed);
|
||||
|
||||
XkbFreeKeyboard (desc, XkbAllComponentsMask, TRUE);
|
||||
}
|
||||
|
||||
static ClutterX11FilterReturn
|
||||
xkb_a11y_event_filter (XEvent *xevent,
|
||||
ClutterEvent *clutter_event,
|
||||
gpointer data)
|
||||
{
|
||||
ClutterDeviceManager *device_manager = CLUTTER_DEVICE_MANAGER (data);
|
||||
XkbEvent *xkbev = (XkbEvent *) xevent;
|
||||
|
||||
/* 'event_type' is set to zero on notifying us of updates in
|
||||
* response to client requests (including our own) and non-zero
|
||||
* to notify us of key/mouse events causing changes (like
|
||||
* pressing shift 5 times to enable sticky keys).
|
||||
*
|
||||
* We only want to update out settings when it's in response to an
|
||||
* explicit user input event, so require a non-zero event_type.
|
||||
*/
|
||||
if (xevent->xany.type == (_xkb_event_base + XkbEventCode) &&
|
||||
xkbev->any.xkb_type == XkbControlsNotify && xkbev->ctrls.event_type != 0)
|
||||
check_settings_changed (device_manager);
|
||||
|
||||
return CLUTTER_X11_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_xkb_available (ClutterBackendX11 *backend_x11)
|
||||
{
|
||||
gint opcode, error_base, event_base, major, minor;
|
||||
|
||||
if (_xkb_event_base)
|
||||
return TRUE;
|
||||
|
||||
if (!XkbQueryExtension (backend_x11->xdpy,
|
||||
&opcode,
|
||||
&event_base,
|
||||
&error_base,
|
||||
&major,
|
||||
&minor))
|
||||
return FALSE;
|
||||
|
||||
if (!XkbUseExtension (backend_x11->xdpy, &major, &minor))
|
||||
return FALSE;
|
||||
|
||||
_xkb_event_base = event_base;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static unsigned long
|
||||
set_value_mask (gboolean flag,
|
||||
unsigned long value,
|
||||
unsigned long mask)
|
||||
{
|
||||
if (flag)
|
||||
return value | mask;
|
||||
|
||||
return value & ~mask;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
set_xkb_ctrl (XkbDescRec *desc,
|
||||
ClutterKeyboardA11yFlags settings,
|
||||
ClutterKeyboardA11yFlags flag,
|
||||
unsigned long mask)
|
||||
{
|
||||
gboolean result = (settings & flag) == flag;
|
||||
desc->ctrls->enabled_ctrls = set_value_mask (result, desc->ctrls->enabled_ctrls, mask);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
clutter_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings)
|
||||
{
|
||||
ClutterBackendX11 *backend_x11;
|
||||
XkbDescRec *desc;
|
||||
gboolean enable_accessX;
|
||||
|
||||
backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ());
|
||||
desc = get_xkb_desc_rec (backend_x11);
|
||||
if (!desc)
|
||||
return;
|
||||
|
||||
/* general */
|
||||
enable_accessX = kbd_a11y_settings->controls & CLUTTER_A11Y_KEYBOARD_ENABLED;
|
||||
|
||||
desc->ctrls->enabled_ctrls = set_value_mask (enable_accessX,
|
||||
desc->ctrls->enabled_ctrls,
|
||||
XkbAccessXKeysMask);
|
||||
|
||||
if (set_xkb_ctrl (desc, kbd_a11y_settings->controls, CLUTTER_A11Y_TIMEOUT_ENABLED,
|
||||
XkbAccessXTimeoutMask))
|
||||
{
|
||||
desc->ctrls->ax_timeout = kbd_a11y_settings->timeout_delay;
|
||||
/* disable only the master flag via the server we will disable
|
||||
* the rest on the rebound without affecting settings state
|
||||
* don't change the option flags at all.
|
||||
*/
|
||||
desc->ctrls->axt_ctrls_mask = XkbAccessXKeysMask | XkbAccessXFeedbackMask;
|
||||
desc->ctrls->axt_ctrls_values = 0;
|
||||
desc->ctrls->axt_opts_mask = 0;
|
||||
}
|
||||
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP,
|
||||
desc->ctrls->ax_options,
|
||||
XkbAccessXFeedbackMask | XkbAX_FeatureFBMask | XkbAX_SlowWarnFBMask);
|
||||
|
||||
/* bounce keys */
|
||||
if (set_xkb_ctrl (desc, kbd_a11y_settings->controls,
|
||||
CLUTTER_A11Y_BOUNCE_KEYS_ENABLED, XkbBounceKeysMask))
|
||||
{
|
||||
desc->ctrls->debounce_delay = kbd_a11y_settings->debounce_delay;
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT,
|
||||
desc->ctrls->ax_options,
|
||||
XkbAccessXFeedbackMask | XkbAX_BKRejectFBMask);
|
||||
}
|
||||
|
||||
/* mouse keys */
|
||||
if (set_xkb_ctrl (desc, kbd_a11y_settings->controls,
|
||||
CLUTTER_A11Y_MOUSE_KEYS_ENABLED, XkbMouseKeysMask | XkbMouseKeysAccelMask))
|
||||
{
|
||||
gint mk_max_speed;
|
||||
gint mk_accel_time;
|
||||
|
||||
desc->ctrls->mk_interval = 100; /* msec between mousekey events */
|
||||
desc->ctrls->mk_curve = 50;
|
||||
|
||||
/* We store pixels / sec, XKB wants pixels / event */
|
||||
mk_max_speed = kbd_a11y_settings->mousekeys_max_speed;
|
||||
desc->ctrls->mk_max_speed = mk_max_speed / (1000 / desc->ctrls->mk_interval);
|
||||
if (desc->ctrls->mk_max_speed <= 0)
|
||||
desc->ctrls->mk_max_speed = 1;
|
||||
|
||||
mk_accel_time = kbd_a11y_settings->mousekeys_accel_time;
|
||||
desc->ctrls->mk_time_to_max = mk_accel_time / desc->ctrls->mk_interval;
|
||||
|
||||
if (desc->ctrls->mk_time_to_max <= 0)
|
||||
desc->ctrls->mk_time_to_max = 1;
|
||||
|
||||
desc->ctrls->mk_delay = kbd_a11y_settings->mousekeys_init_delay;
|
||||
}
|
||||
|
||||
/* slow keys */
|
||||
if (set_xkb_ctrl (desc, kbd_a11y_settings->controls,
|
||||
CLUTTER_A11Y_SLOW_KEYS_ENABLED, XkbSlowKeysMask))
|
||||
{
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_SKPressFBMask);
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_SKAcceptFBMask);
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_SKRejectFBMask);
|
||||
desc->ctrls->slow_keys_delay = kbd_a11y_settings->slowkeys_delay;
|
||||
/* anything larger than 500 seems to loose all keyboard input */
|
||||
if (desc->ctrls->slow_keys_delay > 500)
|
||||
desc->ctrls->slow_keys_delay = 500;
|
||||
}
|
||||
|
||||
/* sticky keys */
|
||||
if (set_xkb_ctrl (desc, kbd_a11y_settings->controls,
|
||||
CLUTTER_A11Y_STICKY_KEYS_ENABLED, XkbStickyKeysMask))
|
||||
{
|
||||
desc->ctrls->ax_options |= XkbAX_LatchToLockMask;
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_TwoKeysMask);
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_STICKY_KEYS_BEEP,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_StickyKeysFBMask);
|
||||
}
|
||||
|
||||
/* toggle keys */
|
||||
desc->ctrls->ax_options =
|
||||
set_value_mask (kbd_a11y_settings->controls & CLUTTER_A11Y_TOGGLE_KEYS_ENABLED,
|
||||
desc->ctrls->ax_options, XkbAccessXFeedbackMask | XkbAX_IndicatorFBMask);
|
||||
|
||||
set_xkb_desc_rec (backend_x11, desc);
|
||||
XkbFreeKeyboard (desc, XkbAllComponentsMask, TRUE);
|
||||
}
|
||||
|
||||
gboolean
|
||||
clutter_device_manager_x11_a11y_init (ClutterDeviceManager *device_manager)
|
||||
{
|
||||
ClutterBackendX11 *backend_x11;
|
||||
guint event_mask;
|
||||
|
||||
backend_x11 =
|
||||
CLUTTER_BACKEND_X11 (_clutter_device_manager_get_backend (device_manager));
|
||||
|
||||
if (!is_xkb_available (backend_x11))
|
||||
return FALSE;
|
||||
|
||||
event_mask = XkbControlsNotifyMask | XkbAccessXNotifyMask;
|
||||
|
||||
XkbSelectEvents (backend_x11->xdpy, XkbUseCoreKbd, event_mask, event_mask);
|
||||
|
||||
clutter_x11_add_filter (xkb_a11y_event_filter, device_manager);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
39
clutter/clutter/x11/clutter-xkb-a11y-x11.h
Normal file
39
clutter/clutter/x11/clutter-xkb-a11y-x11.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
*
|
||||
* Copyright © 2001 Ximian, Inc.
|
||||
* Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CLUTTER_XKB_A11Y_X11_H
|
||||
#define CLUTTER_XKB_A11Y_X11_H
|
||||
|
||||
#include "clutter-device-manager-private.h"
|
||||
#include "clutter-backend-x11.h"
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
void
|
||||
clutter_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings);
|
||||
|
||||
gboolean
|
||||
clutter_device_manager_x11_a11y_init (ClutterDeviceManager *device_manager);
|
||||
|
||||
#endif /* CLUTTER_XKB_A11Y_X11_H */
|
||||
@@ -407,7 +407,8 @@ test_scale_center (TestState *state)
|
||||
g_assert (scale_x == 4.0);
|
||||
g_assert (scale_y == 2.0);
|
||||
g_assert (gravity == CLUTTER_GRAVITY_NONE);
|
||||
assert_notifications (NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y
|
||||
assert_notifications (NOTIFY_SCALE_X | NOTIFY_SCALE_Y
|
||||
| NOTIFY_SCALE_CENTER_X | NOTIFY_SCALE_CENTER_Y
|
||||
| NOTIFY_SCALE_GRAVITY);
|
||||
assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2,
|
||||
100 + 10 + (RECT_WIDTH - 10) * 4,
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <cogl/winsys/cogl-winsys-private.h>
|
||||
|
||||
void cogl_renderer_set_custom_winsys (CoglRenderer *renderer,
|
||||
CoglCustomWinsysVtableGetter winsys_vtable_getter);
|
||||
CoglCustomWinsysVtableGetter winsys_vtable_getter,
|
||||
void *user_data);
|
||||
|
||||
#endif /* __COGL_MUTTER_H___ */
|
||||
|
||||
@@ -54,6 +54,7 @@ struct _CoglRenderer
|
||||
const CoglDriverVtable *driver_vtable;
|
||||
const CoglTextureDriver *texture_driver;
|
||||
const CoglWinsysVtable *winsys_vtable;
|
||||
void *custom_winsys_user_data;
|
||||
CoglCustomWinsysVtableGetter custom_winsys_vtable_getter;
|
||||
CoglWinsysID winsys_id_override;
|
||||
GList *constraints;
|
||||
|
||||
@@ -566,8 +566,10 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer,
|
||||
|
||||
void
|
||||
cogl_renderer_set_custom_winsys (CoglRenderer *renderer,
|
||||
CoglCustomWinsysVtableGetter winsys_vtable_getter)
|
||||
CoglCustomWinsysVtableGetter winsys_vtable_getter,
|
||||
void *user_data)
|
||||
{
|
||||
renderer->custom_winsys_user_data = user_data;
|
||||
renderer->custom_winsys_vtable_getter = winsys_vtable_getter;
|
||||
}
|
||||
|
||||
|
||||
@@ -542,285 +542,6 @@ cogl_texture_set_data (CoglTexture *texture,
|
||||
error);
|
||||
}
|
||||
|
||||
/* Reads back the contents of a texture by rendering it to the framebuffer
|
||||
* and reading back the resulting pixels.
|
||||
*
|
||||
* It will perform multiple renders if the texture is larger than the
|
||||
* current glViewport.
|
||||
*
|
||||
* It assumes the projection and modelview have already been setup so
|
||||
* that rendering to 0,0 with the same width and height of the viewport
|
||||
* will exactly cover the viewport.
|
||||
*
|
||||
* NB: Normally this approach isn't normally used since we can just use
|
||||
* glGetTexImage, but may be used as a fallback in some circumstances.
|
||||
*/
|
||||
static CoglBool
|
||||
do_texture_draw_and_read (CoglFramebuffer *fb,
|
||||
CoglPipeline *pipeline,
|
||||
CoglTexture *texture,
|
||||
CoglBitmap *target_bmp,
|
||||
float *viewport,
|
||||
CoglError **error)
|
||||
{
|
||||
float rx1, ry1;
|
||||
float rx2, ry2;
|
||||
float tx1, ty1;
|
||||
float tx2, ty2;
|
||||
int bw, bh;
|
||||
CoglBitmap *rect_bmp;
|
||||
unsigned int tex_width, tex_height;
|
||||
CoglContext *ctx = fb->context;
|
||||
|
||||
tex_width = cogl_texture_get_width (texture);
|
||||
tex_height = cogl_texture_get_height (texture);
|
||||
|
||||
ry2 = 0;
|
||||
ty2 = 0;
|
||||
|
||||
/* Walk Y axis until whole bitmap height consumed */
|
||||
for (bh = tex_height; bh > 0; bh -= viewport[3])
|
||||
{
|
||||
/* Rectangle Y coords */
|
||||
ry1 = ry2;
|
||||
ry2 += (bh < viewport[3]) ? bh : viewport[3];
|
||||
|
||||
/* Normalized texture Y coords */
|
||||
ty1 = ty2;
|
||||
ty2 = (ry2 / (float) tex_height);
|
||||
|
||||
rx2 = 0;
|
||||
tx2 = 0;
|
||||
|
||||
/* Walk X axis until whole bitmap width consumed */
|
||||
for (bw = tex_width; bw > 0; bw-=viewport[2])
|
||||
{
|
||||
int width;
|
||||
int height;
|
||||
|
||||
/* Rectangle X coords */
|
||||
rx1 = rx2;
|
||||
rx2 += (bw < viewport[2]) ? bw : viewport[2];
|
||||
|
||||
width = rx2 - rx1;
|
||||
height = ry2 - ry1;
|
||||
|
||||
/* Normalized texture X coords */
|
||||
tx1 = tx2;
|
||||
tx2 = (rx2 / (float) tex_width);
|
||||
|
||||
/* Draw a portion of texture */
|
||||
cogl_framebuffer_draw_textured_rectangle (fb,
|
||||
pipeline,
|
||||
0, 0,
|
||||
rx2 - rx1,
|
||||
ry2 - ry1,
|
||||
tx1, ty1,
|
||||
tx2, ty2);
|
||||
|
||||
/* Read into a temporary bitmap */
|
||||
rect_bmp = _cogl_bitmap_new_with_malloc_buffer
|
||||
(ctx,
|
||||
width, height,
|
||||
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
||||
error);
|
||||
if (!rect_bmp)
|
||||
return FALSE;
|
||||
|
||||
if (!_cogl_framebuffer_read_pixels_into_bitmap
|
||||
(fb,
|
||||
viewport[0], viewport[1],
|
||||
COGL_READ_PIXELS_COLOR_BUFFER,
|
||||
rect_bmp,
|
||||
error))
|
||||
{
|
||||
cogl_object_unref (rect_bmp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Copy to target bitmap */
|
||||
if (!_cogl_bitmap_copy_subregion (rect_bmp,
|
||||
target_bmp,
|
||||
0, 0,
|
||||
rx1, ry1,
|
||||
width,
|
||||
height,
|
||||
error))
|
||||
{
|
||||
cogl_object_unref (rect_bmp);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Free temp bitmap */
|
||||
cogl_object_unref (rect_bmp);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Reads back the contents of a texture by rendering it to the framebuffer
|
||||
* and reading back the resulting pixels.
|
||||
*
|
||||
* NB: Normally this approach isn't normally used since we can just use
|
||||
* glGetTexImage, but may be used as a fallback in some circumstances.
|
||||
*/
|
||||
static CoglBool
|
||||
_cogl_texture_draw_and_read (CoglTexture *texture,
|
||||
CoglBitmap *target_bmp,
|
||||
GLuint target_gl_format,
|
||||
GLuint target_gl_type,
|
||||
CoglError **error)
|
||||
{
|
||||
CoglFramebuffer *framebuffer = cogl_get_draw_framebuffer ();
|
||||
CoglContext *ctx = framebuffer->context;
|
||||
float save_viewport[4];
|
||||
float viewport[4];
|
||||
CoglBool status = FALSE;
|
||||
|
||||
viewport[0] = 0;
|
||||
viewport[1] = 0;
|
||||
viewport[2] = cogl_framebuffer_get_width (framebuffer);
|
||||
viewport[3] = cogl_framebuffer_get_height (framebuffer);
|
||||
|
||||
cogl_framebuffer_get_viewport4fv (framebuffer, save_viewport);
|
||||
_cogl_framebuffer_push_projection (framebuffer);
|
||||
cogl_framebuffer_orthographic (framebuffer,
|
||||
0, 0,
|
||||
viewport[2],
|
||||
viewport[3],
|
||||
0, 100);
|
||||
|
||||
cogl_framebuffer_push_matrix (framebuffer);
|
||||
cogl_framebuffer_identity_matrix (framebuffer);
|
||||
|
||||
/* Direct copy operation */
|
||||
|
||||
if (ctx->texture_download_pipeline == NULL)
|
||||
{
|
||||
ctx->texture_download_pipeline = cogl_pipeline_new (ctx);
|
||||
cogl_pipeline_set_blend (ctx->texture_download_pipeline,
|
||||
"RGBA = ADD (SRC_COLOR, 0)",
|
||||
NULL);
|
||||
}
|
||||
|
||||
cogl_pipeline_set_layer_texture (ctx->texture_download_pipeline, 0, texture);
|
||||
|
||||
cogl_pipeline_set_layer_combine (ctx->texture_download_pipeline,
|
||||
0, /* layer */
|
||||
"RGBA = REPLACE (TEXTURE)",
|
||||
NULL);
|
||||
|
||||
cogl_pipeline_set_layer_filters (ctx->texture_download_pipeline, 0,
|
||||
COGL_PIPELINE_FILTER_NEAREST,
|
||||
COGL_PIPELINE_FILTER_NEAREST);
|
||||
|
||||
if (!do_texture_draw_and_read (framebuffer,
|
||||
ctx->texture_download_pipeline,
|
||||
texture, target_bmp, viewport,
|
||||
error))
|
||||
return FALSE;
|
||||
|
||||
/* XXX: As an alleged PowerVR driver bug workaround where the driver
|
||||
* is apparently not maintaining the alpha component of some
|
||||
* framebuffers we render the alpha component of the texture
|
||||
* separately to be sure we retrieve all components of the texture.
|
||||
*
|
||||
* TODO: verify if this is still an issue
|
||||
*/
|
||||
if ((_cogl_texture_get_format (texture) & COGL_A_BIT)/* && a_bits == 0*/)
|
||||
{
|
||||
uint8_t *srcdata;
|
||||
uint8_t *dstdata;
|
||||
uint8_t *srcpixel;
|
||||
uint8_t *dstpixel;
|
||||
int target_width = cogl_bitmap_get_width (target_bmp);
|
||||
int target_height = cogl_bitmap_get_height (target_bmp);
|
||||
int target_rowstride = cogl_bitmap_get_rowstride (target_bmp);
|
||||
int bpp = _cogl_pixel_format_get_bytes_per_pixel (COGL_PIXEL_FORMAT_RGBA_8888);
|
||||
int alpha_rowstride = bpp * target_width;
|
||||
CoglBitmap *alpha_bmp;
|
||||
int x,y;
|
||||
|
||||
if ((dstdata = _cogl_bitmap_map (target_bmp,
|
||||
COGL_BUFFER_ACCESS_WRITE,
|
||||
COGL_BUFFER_MAP_HINT_DISCARD,
|
||||
error)) == NULL)
|
||||
goto EXIT;
|
||||
|
||||
/* Create temp bitmap for alpha values */
|
||||
alpha_bmp =
|
||||
_cogl_bitmap_new_with_malloc_buffer (ctx,
|
||||
target_width,
|
||||
target_height,
|
||||
COGL_PIXEL_FORMAT_RGBA_8888,
|
||||
error);
|
||||
if (!alpha_bmp)
|
||||
{
|
||||
_cogl_bitmap_unmap (target_bmp);
|
||||
goto EXIT;
|
||||
}
|
||||
|
||||
|
||||
/* Draw alpha values into RGB channels */
|
||||
cogl_pipeline_set_layer_combine (ctx->texture_download_pipeline,
|
||||
0, /* layer */
|
||||
"RGBA = REPLACE (TEXTURE[A])",
|
||||
NULL);
|
||||
|
||||
if (!do_texture_draw_and_read (framebuffer,
|
||||
ctx->texture_download_pipeline,
|
||||
texture, alpha_bmp, viewport,
|
||||
error))
|
||||
{
|
||||
cogl_object_unref (alpha_bmp);
|
||||
_cogl_bitmap_unmap (target_bmp);
|
||||
goto EXIT;
|
||||
}
|
||||
|
||||
/* Copy temp R to target A */
|
||||
|
||||
/* Note: we don't try to catch errors since "mapping" an
|
||||
* malloc buffer should never fail */
|
||||
srcdata = _cogl_bitmap_map (alpha_bmp,
|
||||
COGL_BUFFER_ACCESS_READ,
|
||||
0 /* hints */,
|
||||
NULL);
|
||||
|
||||
for (y=0; y<target_height; ++y)
|
||||
{
|
||||
for (x=0; x<target_width; ++x)
|
||||
{
|
||||
srcpixel = srcdata + x*bpp;
|
||||
dstpixel = dstdata + x*bpp;
|
||||
dstpixel[3] = srcpixel[0];
|
||||
}
|
||||
srcdata += alpha_rowstride;
|
||||
dstdata += target_rowstride;
|
||||
}
|
||||
|
||||
_cogl_bitmap_unmap (alpha_bmp);
|
||||
|
||||
_cogl_bitmap_unmap (target_bmp);
|
||||
|
||||
cogl_object_unref (alpha_bmp);
|
||||
}
|
||||
|
||||
status = TRUE;
|
||||
|
||||
EXIT:
|
||||
/* Restore old state */
|
||||
cogl_framebuffer_pop_matrix (framebuffer);
|
||||
_cogl_framebuffer_pop_projection (framebuffer);
|
||||
cogl_framebuffer_set_viewport (framebuffer,
|
||||
save_viewport[0],
|
||||
save_viewport[1],
|
||||
save_viewport[2],
|
||||
save_viewport[3]);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static CoglBool
|
||||
get_texture_bits_via_offscreen (CoglTexture *meta_texture,
|
||||
CoglTexture *sub_texture,
|
||||
@@ -1156,25 +877,13 @@ cogl_texture_get_data (CoglTexture *texture,
|
||||
tg_data.success = FALSE;
|
||||
}
|
||||
|
||||
/* XXX: In some cases _cogl_texture_2d_download_from_gl may fail
|
||||
* to read back the texture data; such as for GLES which doesn't
|
||||
* support glGetTexImage, so here we fallback to drawing the
|
||||
* texture and reading the pixels from the framebuffer. */
|
||||
/* XXX: In some cases this api may fail to read back the texture
|
||||
* data; such as for GLES which doesn't support glGetTexImage
|
||||
*/
|
||||
if (!tg_data.success)
|
||||
{
|
||||
if (!_cogl_texture_draw_and_read (texture, target_bmp,
|
||||
closest_gl_format,
|
||||
closest_gl_type,
|
||||
&ignore_error))
|
||||
{
|
||||
/* We have no more fallbacks so we just give up and
|
||||
* hope for the best */
|
||||
g_warning ("Failed to read texture since draw-and-read "
|
||||
"fallback failed: %s", ignore_error->message);
|
||||
cogl_error_free (ignore_error);
|
||||
cogl_object_unref (target_bmp);
|
||||
return 0;
|
||||
}
|
||||
cogl_object_unref (target_bmp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Was intermediate used? */
|
||||
|
||||
@@ -168,7 +168,7 @@ cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer,
|
||||
CoglBool enable);
|
||||
|
||||
/**
|
||||
* cogl_xlib_renderer_set_threaded_swap_wait_enabled:
|
||||
* cogl_xlib_renderer_set_threaded_swap_wait_enabled: (skip)
|
||||
* @renderer: a #CoglRenderer
|
||||
* @enable: The new value
|
||||
*
|
||||
|
||||
33
configure.ac
33
configure.ac
@@ -1,8 +1,8 @@
|
||||
AC_PREREQ(2.62)
|
||||
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [26])
|
||||
m4_define([mutter_micro_version], [0])
|
||||
m4_define([mutter_minor_version], [27])
|
||||
m4_define([mutter_micro_version], [91])
|
||||
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
@@ -80,6 +80,7 @@ CANBERRA_GTK_VERSION=0.26
|
||||
LIBWACOM_VERSION=0.13
|
||||
|
||||
MUTTER_PC_MODULES="
|
||||
gl
|
||||
egl
|
||||
gtk+-3.0 >= 3.19.8
|
||||
gio-unix-2.0 >= 2.35.1
|
||||
@@ -104,6 +105,7 @@ MUTTER_PC_MODULES="
|
||||
xcb-randr
|
||||
xcb-res
|
||||
"
|
||||
XWAYLAND_GRAB_DEFAULT_ACCESS_RULES="gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr"
|
||||
|
||||
GLIB_GSETTINGS
|
||||
|
||||
@@ -239,12 +241,11 @@ else
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(remote-desktop,
|
||||
AS_HELP_STRING([--enable-remote-desktop], [enable support for remote desktop and screen cast]),
|
||||
enable_remote_desktop=yes,
|
||||
AS_HELP_STRING([--enable-remote-desktop], [enable support for remote desktop and screen cast]),,
|
||||
enable_remote_desktop=no
|
||||
)
|
||||
AS_IF([test "$enable_remote_desktop" = "yes"], [
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES libpipewire-0.1 >= 0.1.4"
|
||||
MUTTER_PC_MODULES="$MUTTER_PC_MODULES libpipewire-0.1 >= 0.1.8"
|
||||
AC_DEFINE([HAVE_REMOTE_DESKTOP],[1], [Defined if screen cast and remote desktop support is enabled])
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_REMOTE_DESKTOP],[test "$enable_remote_desktop" = "yes"])
|
||||
@@ -261,7 +262,7 @@ AC_SUBST(XWAYLAND_PATH)
|
||||
|
||||
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
|
||||
|
||||
MUTTER_NATIVE_BACKEND_MODULES="libdrm libsystemd libinput >= 1.4 gudev-1.0 gbm >= 10.3"
|
||||
MUTTER_NATIVE_BACKEND_MODULES="libdrm >= 2.4.83 libsystemd libinput >= 1.4 gudev-1.0 gbm >= 17.1"
|
||||
|
||||
AC_ARG_ENABLE(native-backend,
|
||||
AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),,
|
||||
@@ -278,8 +279,7 @@ AS_IF([test "$have_native_backend" = "yes"], [
|
||||
AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test "$have_native_backend" = "yes"])
|
||||
|
||||
AC_ARG_ENABLE(egl-device,
|
||||
AS_HELP_STRING([--enable-egl-device], [enable support for EGLDevice on top of KMS]),
|
||||
enable_egl_device=yes,
|
||||
AS_HELP_STRING([--enable-egl-device], [enable support for EGLDevice on top of KMS]),,
|
||||
enable_egl_device=no
|
||||
)
|
||||
AS_IF([test "$enable_egl_device" = "yes"], [
|
||||
@@ -303,12 +303,27 @@ AS_IF([test "$have_wayland" = "yes"], [
|
||||
AC_SUBST([WAYLAND_SCANNER])
|
||||
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
|
||||
|
||||
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.9],
|
||||
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.10],
|
||||
[ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
|
||||
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_WAYLAND],[test "$have_wayland" = "yes"])
|
||||
|
||||
AC_ARG_WITH([xwayland-grab-default-access-rules],
|
||||
[AS_HELP_STRING([--with-xwayland-grab-default-access-rules="app-res1,app-res2,..."],
|
||||
[comma delimited list of applications ressources or class allowed to issue X11 grabs in Xwayland"])],
|
||||
[with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES="$withval"],
|
||||
[with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES="$XWAYLAND_GRAB_DEFAULT_ACCESS_RULES"])
|
||||
|
||||
case "$with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES" in
|
||||
yes) with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES="$XWAYLAND_GRAB_DEFAULT_ACCESS_RULES" ;;
|
||||
no) with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES='' ;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([XWAYLAND_GRAB_DEFAULT_ACCESS_RULES],
|
||||
"$with_XWAYLAND_GRAB_DEFAULT_ACCESS_RULES",
|
||||
[Xwayland applications allowed to issue keyboard grabs])
|
||||
AC_SUBST(XWAYLAND_GRAB_DEFAULT_ACCESS_RULES)
|
||||
|
||||
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
||||
AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
|
||||
|
||||
|
||||
@@ -20,12 +20,6 @@
|
||||
<KeyListEntry name="move-to-workspace-last"
|
||||
description="Move window to last workspace" />
|
||||
|
||||
<KeyListEntry name="move-to-workspace-left"
|
||||
description="Move window one workspace to the left" />
|
||||
|
||||
<KeyListEntry name="move-to-workspace-right"
|
||||
description="Move window one workspace to the right" />
|
||||
|
||||
<KeyListEntry name="move-to-workspace-up"
|
||||
description="Move window one workspace up" />
|
||||
|
||||
@@ -125,12 +119,6 @@
|
||||
<KeyListEntry name="switch-to-workspace-last"
|
||||
description="Switch to last workspace" />
|
||||
|
||||
<KeyListEntry name="switch-to-workspace-left"
|
||||
description="Move to workspace left" />
|
||||
|
||||
<KeyListEntry name="switch-to-workspace-right"
|
||||
description="Move to workspace right" />
|
||||
|
||||
<KeyListEntry name="switch-to-workspace-up"
|
||||
description="Move to workspace above" />
|
||||
|
||||
|
||||
10
data/50-mutter-wayland.xml
Normal file
10
data/50-mutter-wayland.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<KeyListEntries schema="org.gnome.mutter.wayland.keybindings"
|
||||
group="system"
|
||||
name="System"
|
||||
wm_name="Mutter"
|
||||
package="mutter">
|
||||
|
||||
<KeyListEntry name="restore-shortcuts" description="Restore the keyboard shortcuts"/>
|
||||
|
||||
</KeyListEntries>
|
||||
@@ -15,8 +15,6 @@
|
||||
|
||||
<KeyListEntry name="unmaximize" description="Restore window"/>
|
||||
|
||||
<KeyListEntry name="toggle-shaded" description="Toggle shaded state"/>
|
||||
|
||||
<KeyListEntry name="close" description="Close window"/>
|
||||
|
||||
<KeyListEntry name="minimize" description="Hide window"/>
|
||||
|
||||
@@ -12,6 +12,11 @@ xml_DATA = \
|
||||
50-mutter-system.xml \
|
||||
50-mutter-windows.xml
|
||||
|
||||
if HAVE_WAYLAND
|
||||
xml_DATA += \
|
||||
50-mutter-wayland.xml
|
||||
endif
|
||||
|
||||
gschema_in_files = \
|
||||
org.gnome.mutter.gschema.xml.in \
|
||||
org.gnome.mutter.wayland.gschema.xml.in
|
||||
@@ -19,6 +24,7 @@ gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml)
|
||||
|
||||
%.gschema.xml: %.gschema.xml.in Makefile
|
||||
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_PACKAGE)|g' \
|
||||
-e 's|@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES[@]|$(XWAYLAND_GRAB_DEFAULT_ACCESS_RULES)|g' \
|
||||
$< > $@ || rm $@
|
||||
|
||||
@GSETTINGS_RULES@
|
||||
|
||||
@@ -50,8 +50,52 @@
|
||||
<summary>Switch to VT 12</summary>
|
||||
</key>
|
||||
<key name="restore-shortcuts" type="as">
|
||||
<default><![CDATA[['<Shift><Control>Escape']]]></default>
|
||||
<default><![CDATA[['<Super>Escape']]]></default>
|
||||
<summary>Re-enable shortcuts</summary>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
|
||||
<schema id="org.gnome.mutter.wayland" path="/org/gnome/mutter/wayland/"
|
||||
gettext-domain="@GETTEXT_DOMAIN@">
|
||||
|
||||
<key name="xwayland-allow-grabs" type="b">
|
||||
<default>false</default>
|
||||
<summary>Allow grabs with Xwayland</summary>
|
||||
<description>
|
||||
Allow keyboard grabs issued by X11 applications running in Xwayland
|
||||
to be taken into account.
|
||||
|
||||
For a X11 grab to be taken into account under Wayland, the client must
|
||||
also either send a specific X11 ClientMessage to the root window or be
|
||||
among the applications white-listed in key “xwayland-grab-access-rules”.
|
||||
</description>
|
||||
</key>
|
||||
|
||||
<key name="xwayland-grab-access-rules" type="as">
|
||||
<default>[]</default>
|
||||
<summary>Xwayland applications allowed to issue keyboard grabs</summary>
|
||||
<description>
|
||||
List the resource names or resource class of X11 windows either
|
||||
allowed or not allowed to issue X11 keyboard grabs under Xwayland.
|
||||
|
||||
The resource name or resource class of a given X11 window can be
|
||||
obtained using the command “xprop WM_CLASS”.
|
||||
|
||||
Wildcards “*” and jokers “?” in the values are supported.
|
||||
|
||||
Values starting with “!” are blacklisted, which has precedence over
|
||||
the whitelist, to revoke applications from the default system list.
|
||||
|
||||
The default system list includes the following applications:
|
||||
|
||||
“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”
|
||||
|
||||
Users can break an existing grab by using the specific keyboard
|
||||
shortcut defined by the keybinding key “restore-shortcuts”.
|
||||
</description>
|
||||
</key>
|
||||
|
||||
</schema>
|
||||
|
||||
</schemalist>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# Please keep this file sorted alphabetically.
|
||||
data/50-mutter-navigation.xml
|
||||
data/50-mutter-system.xml
|
||||
data/50-mutter-wayland.xml
|
||||
data/50-mutter-windows.xml
|
||||
data/mutter.desktop.in
|
||||
data/org.gnome.mutter.gschema.xml.in
|
||||
|
||||
@@ -28,6 +28,7 @@ clutter/clutter/clutter-grid-layout.c
|
||||
clutter/clutter/clutter-image.c
|
||||
clutter/clutter/clutter-input-device.c
|
||||
clutter/clutter/clutter-input-device-tool.c
|
||||
clutter/clutter/clutter-input-method.c
|
||||
clutter/clutter/clutter-interval.c
|
||||
clutter/clutter/clutter-layout-manager.c
|
||||
clutter/clutter/clutter-layout-meta.c
|
||||
|
||||
771
po/ar.po
771
po/ar.po
@@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
||||
"keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-06-18 21:26+0200\n"
|
||||
"PO-Revision-Date: 2017-06-18 21:27+0200\n"
|
||||
"POT-Creation-Date: 2017-11-03 10:20+0200\n"
|
||||
"PO-Revision-Date: 2017-11-03 10:22+0200\n"
|
||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||
"Language: ar\n"
|
||||
@@ -24,448 +24,10 @@ msgstr ""
|
||||
"X-Generator: Virtaal 1.0.0-beta1\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
msgstr "الإبحار"
|
||||
|
||||
#: data/50-mutter-navigation.xml:9
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:12
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:15
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:18
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "انقل النافذة إلى مساحة العمل 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:21
|
||||
msgid "Move window to last workspace"
|
||||
msgstr "انقل النافذة إلى مساحة العمل الأخيرة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "انقل النافذة شاشة واحدة إلى اليسار"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "انقل النافذة شاشة واحدة إلى اليمين"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "انقل النافذة شاشة واحدة إلى الأعلى"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "انقل النافذة شاشة واحدة إلى الأسفل"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
msgid "Switch applications"
|
||||
msgstr "تنقل بين التطبيقات"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
msgid "Switch to previous application"
|
||||
msgstr "انتقل إلى التطبيق السابق"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
msgid "Switch windows"
|
||||
msgstr "تنقل بين النوافذ"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
msgid "Switch to previous window"
|
||||
msgstr "انتقل إلى النافذة السابقة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "تنقل بين نوافذ التطبيق"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "انتقل إلى نافذة التطبيق السابقة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
msgid "Switch system controls"
|
||||
msgstr "تنقل بين تحكمات النظام"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "انتقل إلى تحكم النظام السابق"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
msgid "Switch windows directly"
|
||||
msgstr "تنقل مباشرة بين النوافذ"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "انتقل مباشرة إلى النافذة السابقة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "تنقل مباشرة بين نوافذ التطبيق"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "انتقل مباشرة إلى نافذة التطبيق السابقة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "تنقل مباشرة بين تحكمات النظام"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "انتقل مباشرة إلى تحكم النظام السابق"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "أخفِ كل النوافذ العادية"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "انتقل إلى مساحة العمل الأخيرة"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "انقل لمساحة العمل على اليسار"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "انقل لمساحة العمل على اليمين"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
msgid "Move to workspace above"
|
||||
msgstr "انقل لمساحة العمل أعلى"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
msgid "Move to workspace below"
|
||||
msgstr "انقل لمساحة العمل أسفل"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
msgid "System"
|
||||
msgstr "النظام"
|
||||
|
||||
#: data/50-mutter-system.xml:8
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "أظهر محث تشغيل أمر"
|
||||
|
||||
#: data/50-mutter-system.xml:10
|
||||
msgid "Show the activities overview"
|
||||
msgstr "أظهر نظرة عامة على الأنشطة"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "النوافذ"
|
||||
|
||||
#: data/50-mutter-windows.xml:8
|
||||
msgid "Activate the window menu"
|
||||
msgstr "فعّل قائمة النافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:10
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "بدّل نمط ملء الشاشة"
|
||||
|
||||
#: data/50-mutter-windows.xml:12
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "بدّل حالة التكبير"
|
||||
|
||||
#: data/50-mutter-windows.xml:14
|
||||
msgid "Maximize window"
|
||||
msgstr "كبّر النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:16
|
||||
msgid "Restore window"
|
||||
msgstr "استعد النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "بدّل حالة الإخفاء"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "أغلق النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Hide window"
|
||||
msgstr "أخفِ النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Move window"
|
||||
msgstr "انقل النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
msgid "Resize window"
|
||||
msgstr "حجّم النّافذة"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "ارفع النافذة فوق النوافذ الأخرى"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "اخفض النافذة تحت النوافذ الأخرى"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "كبّر النافذة رأسيا"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "كبّر النافذة أفقيا"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
msgid "View split on left"
|
||||
msgstr "المنظور مقسوم على اليمين"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
msgid "View split on right"
|
||||
msgstr "المنظور مقسوم على اليسار"
|
||||
|
||||
#: data/mutter.desktop.in:4
|
||||
msgid "Mutter"
|
||||
msgstr "مَتَر"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:7
|
||||
msgid "Modifier to use for extended window management operations"
|
||||
msgstr "المغير الذي سيُستعمل لتمديد عمليات إدارة النوافذ "
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:8
|
||||
msgid ""
|
||||
"This key will initiate the “overlay”, which is a combination window overview "
|
||||
"and application launching system. The default is intended to be the “Windows "
|
||||
"key” on PC hardware. It’s expected that this binding either the default or "
|
||||
"set to the empty string."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:20
|
||||
msgid "Attach modal dialogs"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:21
|
||||
msgid ""
|
||||
"When true, instead of having independent titlebars, modal dialogs appear "
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:30
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:31
|
||||
msgid ""
|
||||
"If enabled, dropping windows on vertical screen edges maximizes them "
|
||||
"vertically and resizes them horizontally to cover half of the available "
|
||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:40
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:41
|
||||
msgid ""
|
||||
"Determines whether workspaces are managed dynamically or whether there’s a "
|
||||
"static number of workspaces (determined by the num-workspaces key in org."
|
||||
"gnome.desktop.wm.preferences)."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:50
|
||||
msgid "Workspaces only on primary"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:51
|
||||
msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:59
|
||||
msgid "No tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:60
|
||||
msgid ""
|
||||
"Determines whether the use of popup and highlight frame should be disabled "
|
||||
"for window cycling."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:68
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:69
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
|
||||
"focus will not be changed immediately when entering a window, but only after "
|
||||
"the pointer stops moving."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:79
|
||||
msgid "Draggable border width"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:80
|
||||
msgid ""
|
||||
"The amount of total draggable borders. If the theme’s visible borders are "
|
||||
"not enough, invisible borders will be added to meet this value."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:89
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:90
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:98
|
||||
msgid "Place new windows in the center"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:99
|
||||
msgid ""
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:107
|
||||
msgid "Enable experimental features"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
|
||||
"monitor configuration system, aimed to replace the old one. This enables a "
|
||||
"higher level configuration API to be used by configuration applications, as "
|
||||
"well as the ability to configure per logical monitor scale. • “scale-monitor-"
|
||||
"framebuffer” — makes mutter default to layout logical monitors in a logical "
|
||||
"pixel coordinate space, while scaling monitor framebuffers instead of window "
|
||||
"content, to manage HiDPI monitors. Does not require a restart. Also enabling "
|
||||
"“monitor-config-manager” is required for this feature to be enabled."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
msgid "Select window from tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
msgid "Cancel tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 2"
|
||||
msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 3"
|
||||
msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 4"
|
||||
msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 5"
|
||||
msgstr "انتقل إلى مساحة العمل 5"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 6"
|
||||
msgstr "انتقل إلى مساحة العمل 6"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "انتقل إلى مساحة العمل 7"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "انتقل إلى مساحة العمل 8"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "انتقل إلى مساحة العمل 9"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "انتقل إلى مساحة العمل 10"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "انتقل إلى مساحة العمل 11"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
|
||||
#, fuzzy
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "انتقل إلى مساحة العمل 12"
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1866
|
||||
#: ../src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr ""
|
||||
@@ -473,113 +35,113 @@ msgstr ""
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1888
|
||||
#: ../src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "غيّر الشاشة"
|
||||
|
||||
#: src/backends/meta-input-settings.c:1890
|
||||
#: ../src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr ""
|
||||
msgstr "اعرض المساعدة على الشاشة"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:879
|
||||
#: ../src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "شاشة مدمجة"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:902
|
||||
#: ../src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "غير معروفة"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:904
|
||||
#: ../src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "شاشة غير معروفة"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:912
|
||||
#: ../src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#, fuzzy, c-format
|
||||
#: ../src/compositor/compositor.c:476
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
msgstr "يعمل مدير مزج آخر على الشاشة %i والعرض \"%s\"."
|
||||
msgstr "يعمل مدير مزج آخر على الشاشة %i و العرض ”%s“."
|
||||
|
||||
#: src/core/bell.c:194
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "حدث جرس"
|
||||
|
||||
#: src/core/display.c:608
|
||||
#, fuzzy, c-format
|
||||
#: ../src/core/display.c:608
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n"
|
||||
msgstr "فشل فتح عرض نظام نوافذ إكس ”%s“\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: ../src/core/main.c:189
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "عطّل الاتصال بمدير الجلسة"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: ../src/core/main.c:195
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "استبدل بمدير النوافذ الذي يعمل"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: ../src/core/main.c:201
|
||||
msgid "Specify session management ID"
|
||||
msgstr "حدّد رقم هويّة إدارة الجلسة"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: ../src/core/main.c:206
|
||||
msgid "X Display to use"
|
||||
msgstr "معراض س الذي سيستعمل"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: ../src/core/main.c:212
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "ابدأ الجلسة من ملف محفوظ"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: ../src/core/main.c:218
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "اجعل نداءات س متزامنة"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: ../src/core/main.c:225
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: ../src/core/main.c:239
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#: ../src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "”%s“ لا يستجيب."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:149
|
||||
#: ../src/core/meta-close-dialog-default.c:149
|
||||
msgid "Application is not responding."
|
||||
msgstr "لا يستجيب التطبيق"
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:154
|
||||
#: ../src/core/meta-close-dialog-default.c:154
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
#: ../src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Force Quit"
|
||||
msgstr "أ_جبر الإنهاء"
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
#: ../src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Wait"
|
||||
msgstr "ا_نتظر"
|
||||
|
||||
#: src/core/mutter.c:39
|
||||
#, fuzzy, c-format
|
||||
#: ../src/core/mutter.c:39
|
||||
#, c-format
|
||||
msgid ""
|
||||
"mutter %s\n"
|
||||
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
@@ -592,56 +154,289 @@ msgstr ""
|
||||
"هذا برنامج حر، راجع المصدر لشروط النسخ.\n"
|
||||
"لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n"
|
||||
|
||||
#: src/core/mutter.c:53
|
||||
#: ../src/core/mutter.c:53
|
||||
msgid "Print version"
|
||||
msgstr "اطبع الإصدارة"
|
||||
|
||||
#: src/core/mutter.c:59
|
||||
#: ../src/core/mutter.c:59
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "ملحق مَتَر الذي سيُستخدم"
|
||||
|
||||
#: src/core/prefs.c:1997
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "مساحة العمل %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#, fuzzy, c-format
|
||||
#: ../src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
"replace the current window manager."
|
||||
msgstr ""
|
||||
"الشاشة \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace "
|
||||
"لتحُلّ محلّ مدير النوافذ الحالي."
|
||||
"الشاشة ”%s“ لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace لتحُلّ"
|
||||
" محلّ مدير النوافذ الحالي."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#, fuzzy, c-format
|
||||
#: ../src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "الشاشة %d على العرض '%s' غير صحيحة\n"
|
||||
msgstr "الشاشة %d على العرض ”%s“ غير صحيحة\n"
|
||||
|
||||
#: src/core/util.c:120
|
||||
#: ../src/core/util.c:120
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"
|
||||
|
||||
#: src/wayland/meta-wayland-tablet-pad.c:563
|
||||
#: ../src/wayland/meta-wayland-tablet-pad.c:563
|
||||
#, c-format
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#, fuzzy
|
||||
#: ../src/x11/session.c:1815
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"هذه النوافذ لا تدعم "احفظ الضبط الحالي" يجب إعادة تشغيلها يدويا "
|
||||
"عند الولوج المرة القادمة."
|
||||
"هذه النوافذ لا تدعم ” الضبط الحالي" إعادة تشغيلها يدويا عند الولوج "
|
||||
"المرة القادمة."
|
||||
|
||||
#: src/x11/window-props.c:559
|
||||
#: ../src/x11/window-props.c:559
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (على %s)"
|
||||
|
||||
#~ msgid "Navigation"
|
||||
#~ msgstr "الإبحار"
|
||||
|
||||
#~ msgid "Move window to workspace 1"
|
||||
#~ msgstr "انقل النافذة إلى مساحة العمل 1"
|
||||
|
||||
#~ msgid "Move window to workspace 2"
|
||||
#~ msgstr "انقل النافذة إلى مساحة العمل 2"
|
||||
|
||||
#~ msgid "Move window to workspace 3"
|
||||
#~ msgstr "انقل النافذة إلى مساحة العمل 3"
|
||||
|
||||
#~ msgid "Move window to workspace 4"
|
||||
#~ msgstr "انقل النافذة إلى مساحة العمل 4"
|
||||
|
||||
#~ msgid "Move window to last workspace"
|
||||
#~ msgstr "انقل النافذة إلى مساحة العمل الأخيرة"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليسار"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "انقل النافذة مساحة عمل واحدة إلى اليمين"
|
||||
|
||||
#~ msgid "Move window one workspace up"
|
||||
#~ msgstr "انقل النافذة مساحة عمل واحدة إلى الأعلى"
|
||||
|
||||
#~ msgid "Move window one workspace down"
|
||||
#~ msgstr "انقل النافذة مساحة عمل واحدة إلى الأسفل"
|
||||
|
||||
#~ msgid "Move window one monitor to the left"
|
||||
#~ msgstr "انقل النافذة شاشة واحدة إلى اليسار"
|
||||
|
||||
#~ msgid "Move window one monitor to the right"
|
||||
#~ msgstr "انقل النافذة شاشة واحدة إلى اليمين"
|
||||
|
||||
#~ msgid "Move window one monitor up"
|
||||
#~ msgstr "انقل النافذة شاشة واحدة إلى الأعلى"
|
||||
|
||||
#~ msgid "Move window one monitor down"
|
||||
#~ msgstr "انقل النافذة شاشة واحدة إلى الأسفل"
|
||||
|
||||
#~ msgid "Switch applications"
|
||||
#~ msgstr "تنقل بين التطبيقات"
|
||||
|
||||
#~ msgid "Switch to previous application"
|
||||
#~ msgstr "انتقل إلى التطبيق السابق"
|
||||
|
||||
#~ msgid "Switch windows"
|
||||
#~ msgstr "تنقل بين النوافذ"
|
||||
|
||||
#~ msgid "Switch to previous window"
|
||||
#~ msgstr "انتقل إلى النافذة السابقة"
|
||||
|
||||
#~ msgid "Switch windows of an application"
|
||||
#~ msgstr "تنقل بين نوافذ التطبيق"
|
||||
|
||||
#~ msgid "Switch to previous window of an application"
|
||||
#~ msgstr "انتقل إلى نافذة التطبيق السابقة"
|
||||
|
||||
#~ msgid "Switch system controls"
|
||||
#~ msgstr "تنقل بين تحكمات النظام"
|
||||
|
||||
#~ msgid "Switch to previous system control"
|
||||
#~ msgstr "انتقل إلى تحكم النظام السابق"
|
||||
|
||||
#~ msgid "Switch windows directly"
|
||||
#~ msgstr "تنقل مباشرة بين النوافذ"
|
||||
|
||||
#~ msgid "Switch directly to previous window"
|
||||
#~ msgstr "انتقل مباشرة إلى النافذة السابقة"
|
||||
|
||||
#~ msgid "Switch windows of an app directly"
|
||||
#~ msgstr "تنقل مباشرة بين نوافذ التطبيق"
|
||||
|
||||
#~ msgid "Switch directly to previous window of an app"
|
||||
#~ msgstr "انتقل مباشرة إلى نافذة التطبيق السابقة"
|
||||
|
||||
#~ msgid "Switch system controls directly"
|
||||
#~ msgstr "تنقل مباشرة بين تحكمات النظام"
|
||||
|
||||
#~ msgid "Switch directly to previous system control"
|
||||
#~ msgstr "انتقل مباشرة إلى تحكم النظام السابق"
|
||||
|
||||
#~ msgid "Hide all normal windows"
|
||||
#~ msgstr "أخفِ كل النوافذ العادية"
|
||||
|
||||
#~ msgid "Switch to workspace 1"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#~ msgid "Switch to workspace 2"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#~ msgid "Switch to workspace 3"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#~ msgid "Switch to workspace 4"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#~ msgid "Switch to last workspace"
|
||||
#~ msgstr "انتقل إلى مساحة العمل الأخيرة"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "انقل لمساحة العمل على اليسار"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "انقل لمساحة العمل على اليمين"
|
||||
|
||||
#~ msgid "Move to workspace above"
|
||||
#~ msgstr "انقل لمساحة العمل أعلى"
|
||||
|
||||
#~ msgid "Move to workspace below"
|
||||
#~ msgstr "انقل لمساحة العمل أسفل"
|
||||
|
||||
#~ msgid "System"
|
||||
#~ msgstr "النظام"
|
||||
|
||||
#~ msgid "Show the run command prompt"
|
||||
#~ msgstr "أظهر محث تشغيل أمر"
|
||||
|
||||
#~ msgid "Show the activities overview"
|
||||
#~ msgstr "أظهر نظرة عامة على الأنشطة"
|
||||
|
||||
#~ msgid "Windows"
|
||||
#~ msgstr "النوافذ"
|
||||
|
||||
#~ msgid "Activate the window menu"
|
||||
#~ msgstr "فعّل قائمة النافذة"
|
||||
|
||||
#~ msgid "Toggle fullscreen mode"
|
||||
#~ msgstr "بدّل نمط ملء الشاشة"
|
||||
|
||||
#~ msgid "Toggle maximization state"
|
||||
#~ msgstr "بدّل حالة التكبير"
|
||||
|
||||
#~ msgid "Maximize window"
|
||||
#~ msgstr "كبّر النّافذة"
|
||||
|
||||
#~ msgid "Restore window"
|
||||
#~ msgstr "استعد النّافذة"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "بدّل حالة الإخفاء"
|
||||
|
||||
#~ msgid "Close window"
|
||||
#~ msgstr "أغلق النّافذة"
|
||||
|
||||
#~ msgid "Hide window"
|
||||
#~ msgstr "أخفِ النّافذة"
|
||||
|
||||
#~ msgid "Move window"
|
||||
#~ msgstr "انقل النّافذة"
|
||||
|
||||
#~ msgid "Resize window"
|
||||
#~ msgstr "حجّم النّافذة"
|
||||
|
||||
#~ msgid "Toggle window on all workspaces or one"
|
||||
#~ msgstr "بدّل حالة ظهور النافذة على جميع مساحات العمل أو واحدة منها"
|
||||
|
||||
#~ msgid "Raise window if covered, otherwise lower it"
|
||||
#~ msgstr "ارفع النافذة إذا كانت أخرى تغطيها، أو أخفضها في ما عدا ذلك"
|
||||
|
||||
#~ msgid "Raise window above other windows"
|
||||
#~ msgstr "ارفع النافذة فوق النوافذ الأخرى"
|
||||
|
||||
#~ msgid "Lower window below other windows"
|
||||
#~ msgstr "اخفض النافذة تحت النوافذ الأخرى"
|
||||
|
||||
#~ msgid "Maximize window vertically"
|
||||
#~ msgstr "كبّر النافذة رأسيا"
|
||||
|
||||
#~ msgid "Maximize window horizontally"
|
||||
#~ msgstr "كبّر النافذة أفقيا"
|
||||
|
||||
#~ msgid "View split on left"
|
||||
#~ msgstr "المنظور مقسوم على اليمين"
|
||||
|
||||
#~ msgid "View split on right"
|
||||
#~ msgstr "المنظور مقسوم على اليسار"
|
||||
|
||||
#~ msgid "Mutter"
|
||||
#~ msgstr "مَتَر"
|
||||
|
||||
#~ msgid "Modifier to use for extended window management operations"
|
||||
#~ msgstr "المغير الذي سيُستعمل لتمديد عمليات إدارة النوافذ "
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 1"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 1"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 2"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 2"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 3"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 3"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 4"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 4"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 5"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 5"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 6"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 6"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 7"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 7"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 8"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 8"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 9"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 9"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 10"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 10"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 11"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 11"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Switch to VT 12"
|
||||
#~ msgstr "انتقل إلى مساحة العمل 12"
|
||||
|
||||
#~ msgid "Unknown window information request: %d"
|
||||
#~ msgstr "طلب معلومات نافذة مجهول: %d"
|
||||
|
||||
|
||||
1663
po/ca@valencia.po
1663
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
30
po/cs.po
30
po/cs.po
@@ -13,10 +13,10 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-31 00:11+0200\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:16+0000\n"
|
||||
"PO-Revision-Date: 2017-11-15 13:31+0100\n"
|
||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||
"Language-Team: čeština <gnome-cs-list@gnome.org>>\n"
|
||||
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -177,7 +177,7 @@ msgstr "Přesunout na plochu nad"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Přesunout na plochu pod"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Systém"
|
||||
|
||||
@@ -189,6 +189,10 @@ msgstr "Zobrazit řádek ke spuštění příkazu"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Zobrazit přehled činností"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Obnovit klávesové zkratky"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
@@ -502,7 +506,7 @@ msgstr "Znovu povolit klávesové zkratky"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Přepínač režimu (skupina %d)"
|
||||
@@ -510,30 +514,30 @@ msgstr "Přepínač režimu (skupina %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Přepnout monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Zobrazit nápovědu na obrazovce"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Vestavěný displej"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámý"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Neznámý displej"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -646,7 +650,7 @@ msgstr "Zásuvný modul Mutter, který se má použít"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Plocha %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -655,7 +659,7 @@ msgstr ""
|
||||
"Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
|
||||
"oken pomocí přepínače --replace."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
||||
|
||||
32
po/de.po
32
po/de.po
@@ -13,16 +13,16 @@ msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-30 17:07+0200\n"
|
||||
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||
"PO-Revision-Date: 2017-11-11 17:57+0100\n"
|
||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"X-Generator: Poedit 2.0.4\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -176,7 +176,7 @@ msgstr "Auf Arbeitsfläche darüber verschieben"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Auf Arbeitsfläche darunter verschieben"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
@@ -188,6 +188,10 @@ msgstr "Den »Befehl ausführen«-Dialog anzeigen"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Aktivitäten-Übersicht anzeigen"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Die Tastenkombinationen wiederherstellen"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Fenster"
|
||||
@@ -512,7 +516,7 @@ msgstr "Tastenkombinationen erneut aktivieren"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Moduswechsel (Gruppe %d)"
|
||||
@@ -520,30 +524,30 @@ msgstr "Moduswechsel (Gruppe %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Bildschirm wechseln"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Bildschirmhilfe anzeigen"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:908
|
||||
msgid "Built-in display"
|
||||
msgstr "Eingebaute Anzeige"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:931
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
msgid "Unknown Display"
|
||||
msgstr "Unbekannte Anzeige"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:941
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -660,7 +664,7 @@ msgstr "Zu benutzendes Mutter-Plugin"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeitsfläche %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -669,7 +673,7 @@ msgstr ""
|
||||
"Bildschirm »%s« hat bereits einen Fensterverwalter. Versuchen Sie die Option "
|
||||
"»--replace«, um den aktuellen Fensterverwalter zu ersetzen."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\n"
|
||||
|
||||
518
po/eo.po
518
po/eo.po
@@ -2,16 +2,16 @@
|
||||
# Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
# Michael MORONI < >, 2011.
|
||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015.
|
||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015, 2018.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-14 11:06+0000\n"
|
||||
"PO-Revision-Date: 2015-02-14 22:34+0200\n"
|
||||
"POT-Creation-Date: 2017-12-18 16:24+0000\n"
|
||||
"PO-Revision-Date: 2018-01-22 20:12+0200\n"
|
||||
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
|
||||
"Language-Team: Esperanto <gnome-l10n-eo@lists.launchpad.net>\n"
|
||||
"Language-Team: Esperanto <gnome-eo-list@gnome.org>\n"
|
||||
"Language: eo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,553 +20,675 @@ msgstr ""
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
msgstr "Navigado"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:2
|
||||
#: data/50-mutter-navigation.xml:9
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Movi la fenestron al laborspaco 1"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:3
|
||||
#: data/50-mutter-navigation.xml:12
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Movi la fenestron al laborspaco 2"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:4
|
||||
#: data/50-mutter-navigation.xml:15
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Movi la fenestron al laborspaco 3"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:5
|
||||
#: data/50-mutter-navigation.xml:18
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Movi la fenestron al laborspaco 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:6
|
||||
#: data/50-mutter-navigation.xml:21
|
||||
msgid "Move window to last workspace"
|
||||
msgstr "Movi la fenestron al lasta laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:7
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Movi la fenestron al la maldekstra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:8
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Movi la fenestron al la dekstra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:9
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Movi la fenestron al la supra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:10
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Movi la fenestron al la suba laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:11
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Movi la fenestron al la maldekstra ekrano"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:12
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Movi la fenestron al la dekstra ekrano"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:13
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Movi la fenestron al la supra ekrano"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:14
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Movi la fenestron al la suba ekrano"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:15
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
msgid "Switch applications"
|
||||
msgstr "Ŝanĝi aplikaĵojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:16
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Ŝalti al antaŭa aplikaĵo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:17
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
msgid "Switch windows"
|
||||
msgstr "Ŝanĝi fenestrojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:18
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Ŝalti al antaŭa fenestro"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:19
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Ŝanĝi fenestrojn de aplikaĵo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:20
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Ŝalti al antaŭa fenestro de aplikaĵo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:21
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
msgid "Switch system controls"
|
||||
msgstr "Ŝanĝi sistem-kontrolojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:22
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Ŝalti al antaŭa sistem-kontrolo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:23
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Ŝanĝi rekte fenestrojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:24
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Ŝalti rekte al antaŭa fenestro"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:25
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Ŝanĝi rekte fenestrojn de aplikaĵo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:26
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Ŝalti rekte al antaŭa fenestro de aplikaĵo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:27
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Ŝalti rekte sistem-kontrolojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:28
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Ŝalti rekte al antaŭa sistem-kontrolo"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:29
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Kaŝi ĉiujn normalajn fenestrojn"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:30
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Ŝalti al laborspaco 1"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:31
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Ŝalti al laborspaco 2"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:32
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Ŝalti al laborspaco 3"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:33
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Ŝalti al laborspaco 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:34
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Ŝalti al lasta laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:35
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Movi al la maldekstra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:36
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Movi al la dekstra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:37
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Movi al la supra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:38
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Movi al la malsupra laborspaco"
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:1
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistemo"
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:2
|
||||
#: data/50-mutter-system.xml:8
|
||||
msgid "Show the run command prompt"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:3
|
||||
#: data/50-mutter-system.xml:10
|
||||
msgid "Show the activities overview"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:1
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr ""
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Fenestroj"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:2
|
||||
#: data/50-mutter-windows.xml:8
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Aktivigi la fenestromenuon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:3
|
||||
#: data/50-mutter-windows.xml:10
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Baskuligi tutekranan reĝimon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:4
|
||||
#: data/50-mutter-windows.xml:12
|
||||
msgid "Toggle maximization state"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:5
|
||||
#: data/50-mutter-windows.xml:14
|
||||
msgid "Maximize window"
|
||||
msgstr "Maksimumigi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:6
|
||||
#: data/50-mutter-windows.xml:16
|
||||
msgid "Restore window"
|
||||
msgstr "Restaŭri la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:7
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:8
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Fermi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:9
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Hide window"
|
||||
msgstr "Kaŝi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:10
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Move window"
|
||||
msgstr "Movi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:11
|
||||
#: data/50-mutter-windows.xml:26
|
||||
msgid "Resize window"
|
||||
msgstr "Ŝanĝi la fenestrograndon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:12
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:13
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:14
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Raise window above other windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:15
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Lower window below other windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:16
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Vertikale maksimumigi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:17
|
||||
#: data/50-mutter-windows.xml:39
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Horizontale maksimumigi la fenestron"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:18
|
||||
#: data/50-mutter-windows.xml:43
|
||||
msgid "View split on left"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:19
|
||||
#: data/50-mutter-windows.xml:47
|
||||
msgid "View split on right"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/mutter.desktop.in.h:1
|
||||
#: data/mutter.desktop.in:4
|
||||
msgid "Mutter"
|
||||
msgstr "Mutero"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
|
||||
#: data/org.gnome.mutter.gschema.xml.in:7
|
||||
msgid "Modifier to use for extended window management operations"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
|
||||
#: data/org.gnome.mutter.gschema.xml.in:8
|
||||
msgid ""
|
||||
"This key will initiate the \"overlay\", which is a combination window "
|
||||
"overview and application launching system. The default is intended to be the "
|
||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
||||
"default or set to the empty string."
|
||||
"This key will initiate the “overlay”, which is a combination window overview "
|
||||
"and application launching system. The default is intended to be the “Windows "
|
||||
"key” on PC hardware. It’s expected that this binding either the default or "
|
||||
"set to the empty string."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
|
||||
#: data/org.gnome.mutter.gschema.xml.in:20
|
||||
msgid "Attach modal dialogs"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
|
||||
#: data/org.gnome.mutter.gschema.xml.in:21
|
||||
msgid ""
|
||||
"When true, instead of having independent titlebars, modal dialogs appear "
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
|
||||
#: data/org.gnome.mutter.gschema.xml.in:30
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
|
||||
#: data/org.gnome.mutter.gschema.xml.in:31
|
||||
msgid ""
|
||||
"If enabled, dropping windows on vertical screen edges maximizes them "
|
||||
"vertically and resizes them horizontally to cover half of the available "
|
||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
|
||||
#: data/org.gnome.mutter.gschema.xml.in:40
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
|
||||
#: data/org.gnome.mutter.gschema.xml.in:41
|
||||
msgid ""
|
||||
"Determines whether workspaces are managed dynamically or whether there's a "
|
||||
"Determines whether workspaces are managed dynamically or whether there’s a "
|
||||
"static number of workspaces (determined by the num-workspaces key in org."
|
||||
"gnome.desktop.wm.preferences)."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
|
||||
#: data/org.gnome.mutter.gschema.xml.in:50
|
||||
msgid "Workspaces only on primary"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
|
||||
#: data/org.gnome.mutter.gschema.xml.in:51
|
||||
msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
|
||||
#: data/org.gnome.mutter.gschema.xml.in:59
|
||||
msgid "No tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
|
||||
#: data/org.gnome.mutter.gschema.xml.in:60
|
||||
msgid ""
|
||||
"Determines whether the use of popup and highlight frame should be disabled "
|
||||
"for window cycling."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
|
||||
#: data/org.gnome.mutter.gschema.xml.in:68
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
|
||||
#: data/org.gnome.mutter.gschema.xml.in:69
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
"the focus will not be changed immediately when entering a window, but only "
|
||||
"after the pointer stops moving."
|
||||
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
|
||||
"focus will not be changed immediately when entering a window, but only after "
|
||||
"the pointer stops moving."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
|
||||
#: data/org.gnome.mutter.gschema.xml.in:79
|
||||
msgid "Draggable border width"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
|
||||
#: data/org.gnome.mutter.gschema.xml.in:80
|
||||
msgid ""
|
||||
"The amount of total draggable borders. If the theme's visible borders are "
|
||||
"The amount of total draggable borders. If the theme’s visible borders are "
|
||||
"not enough, invisible borders will be added to meet this value."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
|
||||
#: data/org.gnome.mutter.gschema.xml.in:89
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
|
||||
#: data/org.gnome.mutter.gschema.xml.in:90
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
|
||||
#: data/org.gnome.mutter.gschema.xml.in:98
|
||||
msgid "Place new windows in the center"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
|
||||
#: data/org.gnome.mutter.gschema.xml.in:99
|
||||
msgid ""
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
|
||||
#: data/org.gnome.mutter.gschema.xml.in:107
|
||||
msgid "Enable experimental features"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
#, fuzzy
|
||||
#| msgid "Switch applications"
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Ŝanĝi aplikaĵojn"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "Ŝalti al VT 1"
|
||||
msgstr "Ŝalti al virtuala terminalo 1"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
|
||||
msgid "Switch to VT 2"
|
||||
msgstr "Ŝalti al VT 2"
|
||||
msgstr "Ŝalti al virtuala terminalo 2"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
|
||||
msgid "Switch to VT 3"
|
||||
msgstr "Ŝalti al VT 3"
|
||||
msgstr "Ŝalti al virtuala terminalo 3"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
|
||||
msgid "Switch to VT 4"
|
||||
msgstr "Ŝalti al VT 4"
|
||||
msgstr "Ŝalti al virtuala terminalo 4"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
|
||||
#| msgid "Switch to workspace 5"
|
||||
msgid "Switch to VT 5"
|
||||
msgstr "Ŝalti al VT 5"
|
||||
msgstr "Ŝalti al virtuala terminalo 5"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
|
||||
#| msgid "Switch to workspace 6"
|
||||
msgid "Switch to VT 6"
|
||||
msgstr "Ŝalti al VT 6"
|
||||
msgstr "Ŝalti al virtuala terminalo 6"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
|
||||
#, fuzzy
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
|
||||
#| msgid "Switch to workspace 7"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Ŝalti al VT 7"
|
||||
msgstr "Ŝalti al virtuala terminalo 7"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Ŝalti al virtuala terminalo 8"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Ŝalti al virtuala terminalo 9"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Ŝalti al virtuala terminalo 10"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Ŝalti al virtuala terminalo 11"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Ŝalti al virtuala terminalo 12"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Re-ŝalti klavkombinojn"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
#, fuzzy
|
||||
#| msgid "Switch system controls"
|
||||
msgid "Switch monitor"
|
||||
msgstr "Ŝanĝi sistem-kontrolojn"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Montri ekranhelpon"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Nekonate"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nekonata ekrano"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:456
|
||||
#, c-format
|
||||
#: src/compositor/compositor.c:479
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "Another compositing manager is already running on screen %i on display "
|
||||
#| "\"%s\"."
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr "Alia kunmetanta administrilo jam rulas sur ekrano %i de montrilo \"%s\"."
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
msgstr "Alia kunmetanta administrilo jam rulas sur ekrano %i de montrilo “%s”."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Sonoril-evento"
|
||||
|
||||
#: ../src/core/delete.c:127
|
||||
#: src/core/display.c:608
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Failed to open X Window System display '%s'\n"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Malsukcesis malfermi jenan vidigon de fenestra sistemo X “%s”\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Elŝalti konekton al la seancoadministrilo"
|
||||
|
||||
#: src/core/main.c:195
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Anstataŭigi la nun ruliĝantan fenestromastrumilon"
|
||||
|
||||
#: src/core/main.c:201
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Specifi identigilon de la seancoadministrilo"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#, fuzzy
|
||||
msgid "X Display to use"
|
||||
msgstr "X-Vidigo uzenda"
|
||||
|
||||
#: src/core/main.c:212
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Pravalorizi la seancon el konservita dosiero"
|
||||
|
||||
#: src/core/main.c:218
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fari X-vokojn sinkrone"
|
||||
|
||||
#: src/core/main.c:225
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/main.c:231
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr ""
|
||||
|
||||
#: src/core/main.c:239
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
#| msgid "<tt>%s</tt> is not responding."
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "“%s” ne respondas."
|
||||
|
||||
#: ../src/core/delete.c:129
|
||||
#: src/core/meta-close-dialog-default.c:149
|
||||
msgid "Application is not responding."
|
||||
msgstr "Aplikaĵo ne respondas."
|
||||
|
||||
#: ../src/core/delete.c:134
|
||||
#: src/core/meta-close-dialog-default.c:154
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr "Vi povas elekti ĉu atendi iomete por la aplikaĵo aŭ perforte ĉesi ĝin."
|
||||
|
||||
#: ../src/core/delete.c:141
|
||||
msgid "_Wait"
|
||||
msgstr "_Atendi"
|
||||
|
||||
#: ../src/core/delete.c:141
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Force Quit"
|
||||
msgstr "Per_forta eliro"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Malsukcesis malfermi jenan vidigon de fenestra sistemo X: '%s'\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Elŝalti konekton al la seancoadministrilo"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Anstataŭigi la nun ruliĝantan fenestromastrumilon"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Specifi identigilon de la seancoadministrilo"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#, fuzzy
|
||||
msgid "X Display to use"
|
||||
msgstr "X-Vidigo uzenda"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Pravalorizi la seancon el konservita dosiero"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fari X-vokojn sinkrone"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/core/mutter.c:39
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Wait"
|
||||
msgstr "_Atendi"
|
||||
|
||||
#: src/core/mutter.c:39
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "mutter %s\n"
|
||||
#| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
#| "This is free software; see the source for copying conditions.\n"
|
||||
#| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||
#| "PARTICULAR PURPOSE.\n"
|
||||
msgid ""
|
||||
"mutter %s\n"
|
||||
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"This is free software; see the source for copying conditions.\n"
|
||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"Mutero %s\n"
|
||||
"Kopirajto (C) 2001-%d Havoc PENNIGTON, Red Hat, Inc., kaj aliaj\n"
|
||||
"Ĉi tio estas libera programaro; rigardu la fontkodon por pli da informoj.\n"
|
||||
"Ekzistas neniu GARANTIO; nek por NEGOCEBLO nek por ADAPTADO AL IU APARTA "
|
||||
"Kopirajto © 2001-%d Havoc PENNIGTON, Red Hat, Inc., kaj aliaj\n"
|
||||
"Ĉi tio estas libera programaro; rigardu la fontkodon por kondiĉoj pri "
|
||||
"kopiado.\n"
|
||||
"Ekzistas NENIU garantio; nek por NEGOCEBLO nek por ADAPTADO AL IU APARTA "
|
||||
"CELO.\n"
|
||||
|
||||
#: ../src/core/mutter.c:53
|
||||
#: src/core/mutter.c:53
|
||||
msgid "Print version"
|
||||
msgstr "Motri version"
|
||||
|
||||
#: ../src/core/mutter.c:59
|
||||
#: src/core/mutter.c:59
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Laborspaco %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
#| "Display \"%s\" already has a window manager; try using the --replace "
|
||||
#| "option to replace the current window manager."
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
"replace the current window manager."
|
||||
msgstr ""
|
||||
"Ekrano \"%s\" jam havas fenestroadministrilon; provu uzi opcion --replace por "
|
||||
"anstataŭigi la nunan fenestroadministrilon."
|
||||
"Ekrano “%s” jam havas fenestroadministrilon; provu uzi la opcion --replace "
|
||||
"por anstataŭigi la nunan fenestroadministrilon."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Ekrano %d en vidigilo '%s' estas nevalida\n"
|
||||
#: src/core/screen.c:668
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Ekrano %d en vidigilo “%s” estas nevalida\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: src/core/util.c:120
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutero estis kompilita sen subteno por eksplicita reĝimo\n"
|
||||
|
||||
#: ../src/x11/session.c:1815
|
||||
#: src/wayland/meta-wayland-tablet-pad.c:563
|
||||
#, c-format
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Reĝim-ŝaltilo: Reĝimo %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/x11/window-props.c:549
|
||||
#: src/x11/window-props.c:559
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (ĉe %s)"
|
||||
|
||||
80
po/es.po
80
po/es.po
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter.master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-02 10:05+0000\n"
|
||||
"PO-Revision-Date: 2017-08-03 09:59+0200\n"
|
||||
"POT-Creation-Date: 2017-11-17 16:03+0000\n"
|
||||
"PO-Revision-Date: 2017-12-14 13:02+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||
"Language: es\n"
|
||||
@@ -177,7 +177,7 @@ msgstr "Mover al área de trabajo de la arriba"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Mover al área de trabajo de abajo"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
@@ -189,6 +189,10 @@ msgstr "Mostrar el elemento «ejecutar comando»"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostrar la vista de actividades"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Restaurar los atajos de teclado"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
@@ -414,49 +418,59 @@ msgid "Enable experimental features"
|
||||
msgstr "Activar las características experimentales"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#| msgid ""
|
||||
#| "To enable experimental features, add the feature keyword to the list. "
|
||||
#| "Whether the feature requires restarting the compositor depends on the "
|
||||
#| "given feature. Any experimental feature is not required to still be "
|
||||
#| "available, or configurable. Don’t expect adding anything in this setting "
|
||||
#| "to be future proof. Currently possible keywords: • “monitor-config-"
|
||||
#| "manager” — use the new monitor configuration system, aimed to replace the "
|
||||
#| "old one. This enables a higher level configuration API to be used by "
|
||||
#| "configuration applications, as well as the ability to configure per "
|
||||
#| "logical monitor scale. • “scale-monitor-framebuffer” — makes mutter "
|
||||
#| "default to layout logical monitors in a logical pixel coordinate space, "
|
||||
#| "while scaling monitor framebuffers instead of window content, to manage "
|
||||
#| "HiDPI monitors. Does not require a restart. Also enabling “monitor-config-"
|
||||
#| "manager” is required for this feature to be enabled."
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
|
||||
"monitor configuration system, aimed to replace the old one. This enables a "
|
||||
"higher level configuration API to be used by configuration applications, as "
|
||||
"well as the ability to configure per logical monitor scale. • “scale-monitor-"
|
||||
"framebuffer” — makes mutter default to layout logical monitors in a logical "
|
||||
"pixel coordinate space, while scaling monitor framebuffers instead of window "
|
||||
"content, to manage HiDPI monitors. Does not require a restart. Also enabling "
|
||||
"“monitor-config-manager” is required for this feature to be enabled."
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"Para activar las características experimentales, añada la palabra clave de "
|
||||
"la característica a la lista. Depende de la característica que se deba "
|
||||
"reiniciar o no el compositor. Cualquier característica experimental puede no "
|
||||
"estar disponible o ser configurable. No espere que lo que se añada en este "
|
||||
"escenario sirva como prueba futura. Las palabras clave actualmente "
|
||||
"disponibles son: • \"monitor-config-manager\" - utiliza el nuevo sistema de "
|
||||
"configuración del monitor, destinado a sustituir el antiguo. Esto permite "
|
||||
"que las aplicaciones de configuración usen una API de configuración de nivel "
|
||||
"superior, así como la capacidad de configurar el escalado de monitores "
|
||||
"lógicos. • \"scale-monitor-framebuffer\" - convierte a mutter en ña manera "
|
||||
"predeterminada de disponer monitores lógicos en un espacio lógico de "
|
||||
"disponibles son: • \"scale-monitor-framebuffer\" - convierte a mutter en la "
|
||||
"manera predeterminada de disponer monitores lógicos en un espacio lógico de "
|
||||
"coordenadas de píxeles, al escalar framebuffers de monitores framebuffers en "
|
||||
"lugar del contenido de ventana, para administrar monitores HiDPI. No "
|
||||
"requiere un reinicio. También es necesario activar \"monitor-config-manager"
|
||||
"\" para activar esta función."
|
||||
"requiere un reinicio. • \"remote-desktop\" — activa el escritorio remoto. "
|
||||
"Para soportarlo con compartición de pantalla es necesario activar \"screen-"
|
||||
"cast\" • \"screen-cast\" — activa el soporte de compartición de pantalla."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Seleccionar ventana de la pestaña emergente"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Cancelar pestaña emergente"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:161
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Cambiar la configuración del monitor"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:166
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Rota la configuración del monitor empotrado"
|
||||
|
||||
@@ -515,7 +529,7 @@ msgstr "Volver a activar los atajos"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2118
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Cambiar modo (grupo %d)"
|
||||
@@ -523,37 +537,37 @@ msgstr "Cambiar modo (grupo %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2141
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Cambiar monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2143
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostrar la ayuda en pantalla"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:927
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla integrada"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:950
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocida"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:952
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantalla desconocida"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:960
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:479
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -661,7 +675,7 @@ msgstr "Complemento de mutter que usar"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Área de trabajo %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -670,7 +684,7 @@ msgstr ""
|
||||
"La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--"
|
||||
"replace» para reemplazar el gestor de ventanas activo."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "La ventana %d en la pantalla «%s» no es válida\n"
|
||||
|
||||
75
po/fr.po
75
po/fr.po
@@ -13,23 +13,24 @@
|
||||
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
|
||||
# Claude Paroz <claude@2xlibre.net>, 2008-2017.
|
||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
||||
# Charles Monzat <superboa@hotmail.fr>, 2016.
|
||||
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017.
|
||||
# Charles Monzat <superboa@hotmail.fr>, 2016, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-09-05 10:52+0100\n"
|
||||
"Last-Translator: Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>\n"
|
||||
"Language-Team: French <traduc@traduc.org>\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||
"PO-Revision-Date: 2017-11-10 23:07+0100\n"
|
||||
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
|
||||
"Language-Team: français <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Lokalize 2.0\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -183,7 +184,7 @@ msgstr "Déplacer vers l’espace de travail du dessus"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Déplacer vers l’espace de travail du dessous"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Système"
|
||||
|
||||
@@ -195,6 +196,10 @@ msgstr "Afficher la fenêtre pour lancer une commande"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Afficher l’aperçu des activités"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Restaurer les raccourcis clavier"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Fenêtres"
|
||||
@@ -418,20 +423,6 @@ msgid "Enable experimental features"
|
||||
msgstr "Activer les fonctionnalités expérimentales"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#| msgid ""
|
||||
#| "To enable experimental features, add the feature keyword to the list. "
|
||||
#| "Whether the feature requires restarting the compositor depends on the "
|
||||
#| "given feature. Any experimental feature is not required to still be "
|
||||
#| "available, or configurable. Don’t expect adding anything in this setting "
|
||||
#| "to be future proof. Currently possible keywords: • “monitor-config-"
|
||||
#| "manager” — use the new monitor configuration system, aimed to replace the "
|
||||
#| "old one. This enables a higher level configuration API to be used by "
|
||||
#| "configuration applications, as well as the ability to configure per "
|
||||
#| "logical monitor scale. • “scale-monitor-framebuffer” — makes mutter "
|
||||
#| "default to layout logical monitors in a logical pixel coordinate space, "
|
||||
#| "while scaling monitor framebuffers instead of window content, to manage "
|
||||
#| "HiDPI monitors. Does not require a restart. Also enabling “monitor-config-"
|
||||
#| "manager” is required for this feature to be enabled."
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
@@ -448,16 +439,15 @@ msgstr ""
|
||||
"Pour activer les fonctionnalités expérimentales, ajoutez le mot-clé de la "
|
||||
"fonctionnalité dans la liste. Selon la fonctionnalité, il peut être "
|
||||
"nécessaire de redémarrer le compositeur. Chaque fonctionnalité expérimentale "
|
||||
"peut disparaître ou ne plus être configurable. Ne vous attendez pas à ce que"
|
||||
" le "
|
||||
"contenu de ce réglage soit stable dans le temps. Les mots-clés actuellement "
|
||||
"possibles sont : • « scale-monitor-framebuffer » — demande à mutter "
|
||||
"d’utiliser par défaut une disposition par moniteur logique dans un espace de "
|
||||
"coordonnées de pixels logique, tout en mettant à l’échelle les "
|
||||
"peut disparaître ou ne plus être configurable. Ne vous attendez pas à ce que "
|
||||
"le contenu de ce réglage soit stable dans le temps. Les mots-clés "
|
||||
"actuellement possibles sont : • « scale-monitor-framebuffer » — demande à "
|
||||
"mutter d’utiliser par défaut une disposition par moniteur logique dans un "
|
||||
"espace de coordonnées de pixels logique, tout en mettant à l’échelle les "
|
||||
"« framebuffers » de moniteur au lieu des contenus de fenêtre pour pouvoir "
|
||||
"gérer les moniteurs à haute densité. Cela ne nécessite pas de redémarrage. "
|
||||
"• « remote-desktop » — active la prise en charge du bureau à distance. Pour "
|
||||
"la prise en charge du bureau distant avec partage de l’écran, « screen-cast » "
|
||||
"gérer les moniteurs à haute densité. Cela ne nécessite pas de redémarrage. • "
|
||||
"« remote-desktop » — active la prise en charge du bureau à distance. Pour la "
|
||||
"prise en charge du bureau distant avec partage de l’écran, « screen-cast » "
|
||||
"doit aussi être activé. • « screen-cast » — active la diffusion de l’écran. "
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
@@ -533,38 +523,38 @@ msgstr "Réactiver les raccourcis"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Changement de mode (groupe %d)"
|
||||
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets’
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Changer de moniteur"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Afficher l’aide à l’écran"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:908
|
||||
msgid "Built-in display"
|
||||
msgstr "Affichage intégré"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:931
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
msgid "Unknown Display"
|
||||
msgstr "Affichage inconnu"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:941
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -679,7 +669,7 @@ msgstr "Greffon de Mutter à utiliser"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espace de travail %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -688,7 +678,7 @@ msgstr ""
|
||||
"L’affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d’utiliser "
|
||||
"l’option --replace pour remplacer le gestionnaire de fenêtres actuel."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "L’écran %d sur l’affichage « %s » n’est pas valide\n"
|
||||
@@ -715,4 +705,3 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (sur %s)"
|
||||
|
||||
|
||||
264
po/fur.po
264
po/fur.po
@@ -6,17 +6,16 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-07-22 09:45+0000\n"
|
||||
"PO-Revision-Date: 2017-07-22 22:53+0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||
"PO-Revision-Date: 2018-02-06 22:43+0100\n"
|
||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||
"Language-Team: Friulian <fur@li.org>\n"
|
||||
"Language: fur\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.2\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -43,145 +42,133 @@ msgid "Move window to last workspace"
|
||||
msgstr "Sposte barcon tal ultin spazi di lavôr"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Sposte barcon tal spazi di lavôr a çampe"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Sposte barcon tal spazi di lavôr a drete"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Sposte barcon tal spazi di lavôr parsore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Sposte barcon tal spazi di lavôr sot"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Sposte barcon tal visôr a çampe"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Sposte barcon tal visôr a drete"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Sposte barcon tal visôr parsore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Sposte barcon tal visôr sot"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Passâ di une aplicazion in chê altre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Passe ae aplicazion prime"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Passâ di un barcon in chel altri"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Passe al barcon prime"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Passâ di un barcon in chel altri di une aplicazion"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Passe al barcon prime di une aplicazion"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Passâ di un control di sisteme in chel altri"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Passe al control di sisteme precedent"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Passe dret ai barcons"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Passe dret al barcon precedent"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Passe dret a un barcon di une aplicazion"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Passe dret al barcon precedent di une aplicazion"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Passe dret ai controi dal sisteme"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Passe dret al control precedent dal sisteme"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Plate ducj i barcons normâi"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Passe al spazi di lavôr 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Passe al spazi di lavôr 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Passe al spazi di lavôr 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Passe al spazi di lavôr 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Passe al ultin spazi di lavôr"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Sposte il spazi di lavôr a çampe"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Sposte il spazi di lavôr a drete"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Sposte il spazi di lavôr parsore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Sposte il spazi di lavôr sot"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sisteme"
|
||||
|
||||
#: data/50-mutter-system.xml:8
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Mostre la richieste \"eseguìs comant\""
|
||||
msgstr "Mostre la richieste “eseguìs comant”"
|
||||
|
||||
#: data/50-mutter-system.xml:10
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostre la panoramiche ativitâts"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Ripristine lis scurtis di tastiere"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Barcons"
|
||||
@@ -207,54 +194,50 @@ msgid "Restore window"
|
||||
msgstr "Ripristine barcon"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Ative/Disative stât inrodolât"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Siere il barcon"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Plate il barcon"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Sposte il barcon"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Ridimensione barcon"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Ative/Disative barcon su ducj i spazis di lavôr o nome un"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Tire sù il barcon se al è cuviert, se no sbassilu"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Met il barcon parsore di chei altris"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Bute il barcon sot di chei altris"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Slargje il barcon par verticâl"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Slargje il barcon par orizontâl"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Slargje dividint ae çampe"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Slargje dividint ae drete"
|
||||
|
||||
@@ -405,14 +388,13 @@ msgid ""
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
|
||||
"monitor configuration system, aimed to replace the old one. This enables a "
|
||||
"higher level configuration API to be used by configuration applications, as "
|
||||
"well as the ability to configure per logical monitor scale. • “scale-monitor-"
|
||||
"framebuffer” — makes mutter default to layout logical monitors in a logical "
|
||||
"pixel coordinate space, while scaling monitor framebuffers instead of window "
|
||||
"content, to manage HiDPI monitors. Does not require a restart. Also enabling "
|
||||
"“monitor-config-manager” is required for this feature to be enabled."
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"Par abilitâ lis funzionalitâts sperimentâls, zonte la peraule clâf de "
|
||||
"funzionalitât ae liste. Il fat che la funzionalitât e vedi bisugne di tornâ "
|
||||
@@ -420,30 +402,28 @@ msgstr ""
|
||||
"funzionalitât sperimentâl no je necessarie che e sedi disponibile o "
|
||||
"configurabile. No sta spietâti di zontâ alc in cheste impostazion e pensâ "
|
||||
"che e duredi tal timp. Atualmentri lis peraulis clâf pussibilis a son: • "
|
||||
"“monitor-config-manager” — al dopre il gnûf sisteme di configurazion dal "
|
||||
"visôr, fat par sostituî chel vecjo. Chest al abilite une API di nivel "
|
||||
"superiôr che e pues jessi doprade di aplicazions di configurazion, cussì "
|
||||
"come la capacitât di configurâ par scjale di monitor logjic. • “scale-"
|
||||
"monitor-framebuffer” — al rint come predefinît par mutter la disposizion dai "
|
||||
"visôrs logjics intun spazi logjic di coordenadis dai pixel, intant i "
|
||||
"framebuffer dai visôrs par scjalâ, invezit dal contignût dal barcon, a "
|
||||
"gjestissin i visôrs HiDPI. Nol covente tornâ a inviâ. In plui al è necessari "
|
||||
"abilitâ “monitor-config-manager” par fâ in mût che cheste funzionalitât e "
|
||||
"sedi abilitade."
|
||||
"“scale-monitor-framebuffer” — al rint come predefinît par mutter, la "
|
||||
"disposizion logjiche dai visôrs intun spazi logjic di coordenadis di pixel, "
|
||||
"in plui si fâs il scjalâ dai framebuffer dai visôrs invezit che il contignût "
|
||||
"dal barcon; dut chest par gjestî i visôrs HiDPI. Nol covente tornâ a inviâ. "
|
||||
"• “remote-desktop” — al abilite il supuart pal scritori rimot. Par podê "
|
||||
"supuartâ il scritori rimot cun la condivision dal schermi si scugne abilitâ "
|
||||
"ancje “screen-cast”. • “screen-cast” — al abilite il supuart pe trasmission "
|
||||
"dal schermi."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Selezione barcon dal tab popup"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Anule tab popup"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:161
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Cambie configurazions visôr"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:166
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Al volte la configurazion dal visôr integrât"
|
||||
|
||||
@@ -495,10 +475,61 @@ msgstr "Passe al VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Passe al VT 12"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Torne abilite lis scurtis"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Permet cjapadis di control cun Xwayland"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Permet che il cjapâ il control de tastiere emetût di aplicazions X11 che a "
|
||||
"zirin in Xwayland, di jessi tignûts in considerazion. Par une cjapade di "
|
||||
"control di X11, par che e sedi tignude in considerazion sot Wayland, il "
|
||||
"client al scugne ancje inviâ un specific messaç (X11 ClientMessage) al "
|
||||
"barcon lidrîs o jessi tra lis aplicazions metudis te liste blancje inte clâf "
|
||||
"“xwayland-grab-access-rules”."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr "Aplicazions Xwayland che a puedin cjapâ la tastiere"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Liste di nons di risorsis o classis di risorsis di barcons X11 che a puedin "
|
||||
"o no puedin cjapâ i segnâi di tastiere X11 sot di Xwayland. Il non de "
|
||||
"risorse o la classe de risorse di un dât barcon X11 al pues jessi otignût "
|
||||
"doprant il comant “xprop WM_CLASS”. I caratars “*” e “?” tai valôrs a son "
|
||||
"supuartâts. I valôrs che a tachin cun “!” a son metûts te liste nere, che e "
|
||||
"à precedence su la liste blancje, par revocâ lis aplicazions de liste di "
|
||||
"sisteme predefinide. La liste di sisteme predefinide e inclût lis "
|
||||
"aplicazions chi daurman: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” I utents a "
|
||||
"puedin interompi il control cjapât doprant la specifiche scurte di tastiere "
|
||||
"definide de clâf di associazion tast “restore-shortcuts”."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2118
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Cambie mût (Grup %d)"
|
||||
@@ -506,37 +537,37 @@ msgstr "Cambie mût (Grup %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2141
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Cambie visôr"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2143
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostre jutori a schermi"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Display integrât"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:948
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "No cognossût"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:950
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Display no cognossût"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:958
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -553,42 +584,46 @@ msgstr "Event cjampane"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Impussibil vierzi il display “%s” di X Window System\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Disabilite la conession al gjestôr de session"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Rimplace il window manager in vore"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Specifiche il ID di gjestion session"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "Display X di doprâ"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inizialize session da file salvât"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fâs lis clamadis X sincronis"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Eseguìs come compositor wayland"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Eseguìs come compositor nidiât"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Eseguìs come servidôr display complet, invezit che nidiât"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Eseguìs cul backend X11"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -643,7 +678,7 @@ msgstr "Plugin Mutter di doprâ"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Spazi di lavôr %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -652,7 +687,7 @@ msgstr ""
|
||||
"Il display “%s” al à za un window manager; prove dopre la opzion --replace "
|
||||
"par rimplaçâ chel atuâl."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Schermi %d su display “%s” no valit\n"
|
||||
@@ -666,7 +701,7 @@ msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n"
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Cambie mût: mût %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -678,3 +713,18 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (su %s)"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Sposte barcon tal spazi di lavôr a çampe"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Sposte barcon tal spazi di lavôr a drete"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "Sposte il spazi di lavôr a çampe"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "Sposte il spazi di lavôr a drete"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Ative/Disative stât inrodolât"
|
||||
|
||||
211
po/gl.po
211
po/gl.po
@@ -9,14 +9,13 @@
|
||||
# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
|
||||
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
||||
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
|
||||
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 2017.
|
||||
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gl\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-30 22:29+0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 23:45+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician\n"
|
||||
"Language: gl\n"
|
||||
@@ -52,134 +51,118 @@ msgid "Move window to last workspace"
|
||||
msgstr "Mover xanela ao último espazo de traballo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Mover xanela un espazo de traballo cara á esquerda"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Mover xanela un espazo de traballo cara á dereita"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Mover xanela un espazo de traballo cara a arriba"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Mover xanela un espazo de traballo cara a abaixo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Mover xanela un monitor á esquerda"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Mover xanela un monitor á dereita"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Mover xanela un monitor arriba"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Mover xanela un espazo de traballo abaixo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Cambiar entre aplicativos"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Cambiar ao aplicativo aplicativos"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Cambiar xanelas"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Cambiar á xanela anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Cambiar entre as xanelas dun aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Cambia á xanela anterior dun aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Cambiar entre os controles do sistema"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Cambia ao control do sistema anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Cambiar xanelas directamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Cambia directamente á xanela anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Cambiar entre as xanelas dun aplicativo directamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Cambia directamente á xanela anterior do aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Cambiar entre os controles do sistema directamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Cambiar directamente ao control do sistema anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Ocultar todas as xanelas normais"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Cambiar ao espazo de traballo 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Cambiar ao espazo de traballo 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Cambiar ao espazo de traballo 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Cambiar ao espazo de traballo 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Cambiar ao último espazo de traballo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Mover ao espazo da esquerda"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Mover ao espazo da dereita"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Mover ao espazo de arriba"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Mover ao espazo de traballo de abaixo"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
@@ -191,6 +174,10 @@ msgstr "Mostrar o diálogo de executar orde"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostrar a vista xeral de actividades"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Restaurar os atallos de teclado"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Xanelas"
|
||||
@@ -216,54 +203,50 @@ msgid "Restore window"
|
||||
msgstr "Restaurar xanela"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Trocar o estado ensombrecido"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Pechar xanela"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Ocultar xanela"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Mover xanela"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Redimensionar xanela"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Trocar que a xanela apareza en tódolos espazos de traballo ou nun"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Elevar a xanela se está cuberta por outra, en caso contrario baixala"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Subir a xanela por enriba doutras xanelas"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Baixar xanela debaixo doutras xanelas"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maximizar xanela verticalmente"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maximizar xanela horizontalmente"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Dividir vista á esquerda"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Dividir vista á dereita"
|
||||
|
||||
@@ -411,16 +394,6 @@ msgid "Enable experimental features"
|
||||
msgstr "Activar as características experimentais"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#| msgid ""
|
||||
#| "To enable experimental features, add the feature keyword to the list. "
|
||||
#| "Whether the feature requires restarting the compositor depends on the "
|
||||
#| "given feature. Any experimental feature is not required to still be "
|
||||
#| "available, or configurable. Don’t expect adding anything in this setting "
|
||||
#| "to be future proof. Currently possible keywords: • “scale-monitor-"
|
||||
#| "framebuffer” — makes mutter default to layout logical monitors in a "
|
||||
#| "logical pixel coordinate space, while scaling monitor framebuffers "
|
||||
#| "instead of window content, to manage HiDPI monitors. Does not require a "
|
||||
#| "restart."
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
@@ -516,10 +489,41 @@ msgstr "Cambiar á VT 12"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Reactivar os atallos"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Modo conmutador (Grupo %d)"
|
||||
@@ -527,37 +531,37 @@ msgstr "Modo conmutador (Grupo %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Cambiar monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostrar axuda en pantalla"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla embebida"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantalla descoñecida"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -574,42 +578,46 @@ msgstr "Evento de campá"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desactivar a conexión ao xestor de sesión"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Substituír o xestor de xanelas en execución"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar o ID de xestión de sesión"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "Pantalla X que se vai usar"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar sesión desde o ficheiro de salvagarda"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Executar como compositor de wayland"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Executar como compositor anidado"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Executar como un servidor de pantalla completo, fronte a un aniñado"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Executar coa infraestructura de X11"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -664,7 +672,7 @@ msgstr "Engadido de mutter que usar"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espazo de traballo %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -673,7 +681,7 @@ msgstr ""
|
||||
"A pantalla «%s» ten xa un xestor de xanelas, tente usar a opción --replace "
|
||||
"para substituír o xestor de xanelas."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "A pantalla %d na visualización «%s» non é válida\n"
|
||||
@@ -687,7 +695,7 @@ msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n"
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Modo conmutador: Modo %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -700,6 +708,21 @@ msgstr ""
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (en %s)"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Mover xanela un espazo de traballo cara á esquerda"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Mover xanela un espazo de traballo cara á dereita"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "Mover ao espazo da esquerda"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "Mover ao espazo da dereita"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Trocar o estado ensombrecido"
|
||||
|
||||
#~ msgid "background texture could not be created from file"
|
||||
#~ msgstr "a textura do fondo non puido crearse desde o ficheiro"
|
||||
|
||||
|
||||
133
po/he.po
133
po/he.po
@@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD.he\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-03-30 18:41+0300\n"
|
||||
"PO-Revision-Date: 2017-03-30 18:46+0300\n"
|
||||
"POT-Creation-Date: 2017-11-26 17:12+0200\n"
|
||||
"PO-Revision-Date: 2017-11-26 17:14+0200\n"
|
||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
||||
"Language-Team: עברית <>\n"
|
||||
"Language: he\n"
|
||||
@@ -174,7 +174,7 @@ msgstr "העברה למרחב העבודה שמלמעלה"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "העברה למרחב העבודה שמלמטה"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "מערכת"
|
||||
|
||||
@@ -186,6 +186,10 @@ msgstr "הצגת החלונית להרצת פקודה"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "הצגת סקירת הפעילויות"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "שחזור צירופי מקשים"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "חלונות"
|
||||
@@ -271,7 +275,6 @@ msgid "Modifier to use for extended window management operations"
|
||||
msgstr "Modifier to use for extended window management operations"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:8
|
||||
#,
|
||||
msgid ""
|
||||
"This key will initiate the “overlay”, which is a combination window overview "
|
||||
"and application launching system. The default is intended to be the “Windows "
|
||||
@@ -316,7 +319,6 @@ msgid "Workspaces are managed dynamically"
|
||||
msgstr "Workspaces are managed dynamically"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:41
|
||||
#,
|
||||
msgid ""
|
||||
"Determines whether workspaces are managed dynamically or whether there’s a "
|
||||
"static number of workspaces (determined by the num-workspaces key in org."
|
||||
@@ -355,7 +357,6 @@ msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr "Delay focus changes until the pointer stops moving"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:69
|
||||
#,
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
|
||||
"focus will not be changed immediately when entering a window, but only after "
|
||||
@@ -401,14 +402,52 @@ msgstr ""
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:120
|
||||
#: data/org.gnome.mutter.gschema.xml.in:107
|
||||
msgid "Enable experimental features"
|
||||
msgstr "Enable experimental features"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Select window from tab popup"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:125
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Cancel tab popup"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "החלפה בין תצורות צגים"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Rotates the built-in monitor configuration"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "מעבר ל־VT 1"
|
||||
@@ -457,10 +496,14 @@ msgstr "מעבר ל־VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "מעבר ל־VT 12"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "לאפשר מחדש צירופי מקשים"
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1848
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "מצב העברה (קבוצה %d)"
|
||||
@@ -468,37 +511,37 @@ msgstr "מצב העברה (קבוצה %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1870
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "החלפה בין צגים"
|
||||
|
||||
#: src/backends/meta-input-settings.c:1872
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "הצגת עזרה על המסך"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:630
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "תצוגה מובנית"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:653
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "לא ידוע"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:655
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "תצוגה לא ידועה"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:663
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:474
|
||||
#: src/compositor/compositor.c:479
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -508,31 +551,6 @@ msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בת
|
||||
msgid "Bell event"
|
||||
msgstr "אירוע פעמון"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/delete.c:127
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "„%s“ אינו מגיב."
|
||||
|
||||
#: src/core/delete.c:129
|
||||
msgid "Application is not responding."
|
||||
msgstr "היישום אינו מגיב."
|
||||
|
||||
#: src/core/delete.c:134
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"באפשרותך להמתין זמן קצר ולתת ליישום להמשיך או להכריח את היישום להסתיים."
|
||||
|
||||
#: src/core/delete.c:141
|
||||
msgid "_Force Quit"
|
||||
msgstr "_אילוץ סגירה"
|
||||
|
||||
#: src/core/delete.c:141
|
||||
msgid "_Wait"
|
||||
msgstr "ה_מתנה"
|
||||
|
||||
#: src/core/display.c:608
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
@@ -574,6 +592,31 @@ msgstr "Run as a nested compositor"
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Run as a full display server, rather than nested"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "„%s“ אינו מגיב."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:149
|
||||
msgid "Application is not responding."
|
||||
msgstr "היישום אינו מגיב."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:154
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"באפשרותך להמתין זמן קצר ולתת ליישום להמשיך או להכריח את היישום להסתיים."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Force Quit"
|
||||
msgstr "_אילוץ סגירה"
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Wait"
|
||||
msgstr "ה_מתנה"
|
||||
|
||||
#: src/core/mutter.c:39
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -601,7 +644,7 @@ msgstr "תוסף ה־mutter לשימוש"
|
||||
msgid "Workspace %d"
|
||||
msgstr "מרחב עבודה %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -610,7 +653,7 @@ msgstr ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
"replace the current window manager."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Screen %d on display “%s” is invalid\n"
|
||||
@@ -629,8 +672,8 @@ msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"חלונות אלו אינם תומכים ב„שמירת ההגדרות הנוכחיות”, ויהיה צורך "
|
||||
"באתחול ידני בכניסה הבאה שלך."
|
||||
"חלונות אלו אינם תומכים ב„שמירת ההגדרות הנוכחיות”, ויהיה צורך באתחול ידני "
|
||||
"בכניסה הבאה שלך."
|
||||
|
||||
#: src/x11/window-props.c:559
|
||||
#, c-format
|
||||
|
||||
243
po/hr.po
243
po/hr.po
@@ -4,10 +4,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity 0\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
|
||||
"PO-Revision-Date: 2017-08-23 17:40+0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||
"PO-Revision-Date: 2018-02-17 16:00+0100\n"
|
||||
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
|
||||
"Language: hr\n"
|
||||
@@ -17,7 +16,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Launchpad-Export-Date: 2008-05-28 13:28+0000\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -44,134 +43,118 @@ msgid "Move window to last workspace"
|
||||
msgstr "Premjesti prozor posljednji radni prostor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Premjesti prozor jedan radni prostor nalijevo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Premjesti prozor jedan radni prostor udesno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Premjesti prozor jedan radni prostor gore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Premjesti prozor jedan radni prostor dolje"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Premjesti prozor jedan zaslon nalijevo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Premjesti prozor jedan zaslon udesno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Premjesti prozor jedan zaslon gore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Premjesti prozor jedan zaslon dolje"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Prebacivanje aplikacija"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Prebaci na prijašnju aplikaciju"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Prebacivanje prozora"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Prebaci na prijašnji prozor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Prebacivanje prozora aplikacija"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Prebaci na prijašnji prozor aplikacije"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Prebacivanje upravljanja sustavom"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Prebaci na prijašnje upravljanje sustavom"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Prebacivanje izravno na prozor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Prebaci izravno na prijašnji prozor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Prebacivanje prozora aplikacije izravno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Prebaci izravno na prijašnji prozor aplikacije"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Prebacivanje upravljanja sustavom izravno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Prebaci izravno na prijašnje upravljanje sustavom"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Sakrij sve normalne prozore"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Prebaci se na radni prostor 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Prebaci se na radni prostor 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Prebaci se na radni prostor 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Prebaci se na radni prostor 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Prebaci na prijašnji radni prostor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Premjesti na lijevi radni prostor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Premjesti na desni radni prostor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Premjesti na gornji radni prostor"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Premjesti na donji radni prostor"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sustav"
|
||||
|
||||
@@ -183,6 +166,10 @@ msgstr "Prikaži dijalog pokretanja naredbe"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Prikaži pregled aktivnosti"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Vrati izvorne prečace tipkovnice"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Prozori"
|
||||
@@ -193,69 +180,65 @@ msgstr "Aktiviraj izbornik prozora"
|
||||
|
||||
#: data/50-mutter-windows.xml:10
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Postavi preko cijelog zaslona"
|
||||
msgstr "Uklj/Isklj cjelozaslonski prikaz"
|
||||
|
||||
#: data/50-mutter-windows.xml:12
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Promijeni stanje maksimizacije"
|
||||
msgstr "Uklj/Isklj uvećanje prozora"
|
||||
|
||||
#: data/50-mutter-windows.xml:14
|
||||
msgid "Maximize window"
|
||||
msgstr "Maksimiziraj prozor"
|
||||
msgstr "Uvećaj prozor"
|
||||
|
||||
#: data/50-mutter-windows.xml:16
|
||||
msgid "Restore window"
|
||||
msgstr "Vrati prozor"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Promijeni stanje zasjenjenosti"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Zatvori prozor"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Sakrij prozor"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Premjesti prozor"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Promijeni veličinu prozora"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Uklj/Isklj prozor na svim radnim prostorima"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Podigni prekriven prozor, inače smanji"
|
||||
msgstr "Podigni prekriven prozor, u suprotnome smanji"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Podigni prozor iznad ostalih prozora"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Spustiti prozor ispod ostalih prozora"
|
||||
msgstr "Spusti prozor ispod ostalih prozora"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Uvećaj prozor okomito"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Uvećaj prozor vodoravno"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Podijeli pogled ulijevo"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Podijeli pogled udesno"
|
||||
|
||||
@@ -407,7 +390,10 @@ msgid ""
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart."
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"Za omogućavanje eksperimentalnih značajki, dodajte ključnu riječ značajke na "
|
||||
"popis. Zahtijeva li značajka ponovno pokretanje kompozitora ovisi o zadanoj "
|
||||
@@ -417,21 +403,24 @@ msgstr ""
|
||||
"monitor-framebuffer” — čini mutter zadanim izlazu logičkih zaslona u "
|
||||
"logičnom koordinatnom prostoru piksela, dok međuspremnik okvira mijenja "
|
||||
"veličinu zaslona umjesto sadržaja prozora, upravlja kako bi upravljao "
|
||||
"(HiDPI) zaslonima visoke razlučivosti. Ne zahtijeva ponovno pokretanje."
|
||||
"(HiDPI) zaslonima visoke razlučivosti. Ne zahtijeva ponovno pokretanje. • "
|
||||
"“remote-desktop” — omogućava podršku za udaljene radne površine. Za podršku "
|
||||
"udaljene radne površine s dijeljenjem zaslona, “screen-cast” mora isto biti "
|
||||
"omogućen. • “screen-cast” — omogućuje podršku emitiranja zaslona."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:141
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Odaberi prozor iz skočnog prozora"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:146
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Prekini skočni prozor"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Prebacivanje podešavanja zaslona"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Rotiraj ugrađeno podešavanje zaslona"
|
||||
|
||||
@@ -487,10 +476,55 @@ msgstr "Prebaci na VT 12"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Ponovno omogući prečace"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Dopusti hvatanje sa Xwaylandom"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Dopusti hvatanje tipkovnicom aplikacije izdane za X11 pokrenute u Xwaylandu "
|
||||
"kako bi se obuhvatile u računu. Kako bi X11 hvatanje bilo obuhvaćeno računom "
|
||||
"u Waylandu, klijent mora poslati ili određenu X11 poruku klijenta u "
|
||||
"korijenski prozor ili mora biti naveden među aplikacijama dopuštenim u "
|
||||
"ključu “xwayland-grab-access-rules”."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr "Xwayland aplikacije dopuštene za izdavanje hvatanja tipkovnice"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Popis naziva ili razreda resursa X11 prozora koji dopuštaju ili nedopuštaju "
|
||||
"izdavanje X11 hvatanja tipkovnice u Xwaylandu. Popis naziva ili razreda "
|
||||
"resursa danog X11 prozora može se omogućiti naredbom “xprop WM_CLASS”. "
|
||||
"Zvjezdice “*” i upitnici “?” u vrijednostima su podržani. Vrijednosti koje "
|
||||
"počinju sa “!” nisu dopuštene, a imaju prednost nad dopuštenim, kako bi "
|
||||
"opozvali aplikaciju iz zadanog popisa sustavom. Zadani popis sustava "
|
||||
"uključuje sljedeće aplikacije: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” "
|
||||
"Korisnici mogu prekinuti postojeće hvatanje koristeći određeni prečac "
|
||||
"tipkovnice određen ključem prečaca tipkovnice “restore-shortcuts”."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Način prebacivanja (Grupa %d)"
|
||||
@@ -498,37 +532,37 @@ msgstr "Način prebacivanja (Grupa %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Prebaci zaslon"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Prikaži zaslonsku pomoć"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Ugrađeni zaslon"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Nepoznat"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nepoznat zaslon"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -544,42 +578,46 @@ msgstr "Događaj zvona"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%s\"\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Onemogući povezivanje sa upraviteljem sesija"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Zamijeni pokrenutoga upravitelja porozora"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Odredite ID upravljanja sesijama"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "X Prikaz za korištenje"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Pokreni sesiju iz spremljene datoteke"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Napravi X pozive usklađenim"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Pokreni wayland kompozitor"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Pokreni kao ugrađeni kompozitor"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Pokreni kao potpuni poslužitelj zaslona, radije nego ugrađeni"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Pokreni s X11 pozadinskim programom"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -634,7 +672,7 @@ msgstr "Mutter priključak koji se koristi"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Radni prostor %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -643,7 +681,7 @@ msgstr ""
|
||||
"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
|
||||
"mogućnost za zamjenu trenutnog upravitelja prozora."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Zaslon %d na prikazu '%s' je neispravan\n"
|
||||
@@ -657,7 +695,7 @@ msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Način prebacivanja: Način %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -670,6 +708,21 @@ msgstr ""
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (na %s)"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Premjesti prozor jedan radni prostor nalijevo"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Premjesti prozor jedan radni prostor udesno"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "Premjesti na lijevi radni prostor"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "Premjesti na desni radni prostor"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Uklj/Isklj stanje zasjenjenosti"
|
||||
|
||||
#~ msgid "Desktop"
|
||||
#~ msgstr "Radna površina"
|
||||
|
||||
|
||||
207
po/hu.po
207
po/hu.po
@@ -1,19 +1,18 @@
|
||||
# Hungarian translation of mutter.
|
||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
|
||||
# Hungarian translation for mutter.
|
||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
#
|
||||
# Andras Timar <timar at gnome dot hu>, 2002, 2003.
|
||||
# Gabor Sari <saga at externet dot hu>, 2003.
|
||||
# Laszlo Dvornik <dvornik at gnome dot hu>, 2004.
|
||||
# Gabor Kelemen <kelemeng at gnome dot hu>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
||||
# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015, 2016, 2017.
|
||||
# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015, 2016, 2017, 2018.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-09-05 17:35+0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-01-24 21:11+0000\n"
|
||||
"PO-Revision-Date: 2018-01-26 21:46+0100\n"
|
||||
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||
"Language: hu\n"
|
||||
@@ -48,134 +47,118 @@ msgid "Move window to last workspace"
|
||||
msgstr "Ablak áthelyezése az utolsó munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Ablak áthelyezése a balra lévő munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Ablak áthelyezése a jobbra lévő munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Ablak áthelyezése egy munkaterülettel feljebb"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Ablak áthelyezése egy munkaterülettel lejjebb"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Ablak áthelyezése a balra lévő monitorra"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Ablak áthelyezése a jobbra lévő monitorra"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Ablak áthelyezése egy monitorral feljebb"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Ablak áthelyezése egy monitorral lejjebb"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Alkalmazásváltás"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Váltás az előző alkalmazásra"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Ablakváltás"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Váltás az előző ablakra"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Váltás egy alkalmazás ablakai között"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Váltás egy alkalmazás előző ablakára"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Váltás a rendszer vezérlői közt"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Váltás az előző rendszervezérlőre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Váltás az ablakok közt közvetlenül"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Váltás közvetlenül az előző ablakra"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Váltás egy alkalmazás ablakai között közvetlenül"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Váltás közvetlenül egy alkalmazás előző ablakára"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Váltás a rendszer vezérlői közt közvetlenül"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Váltás közvetlenül az előző rendszervezérlőre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Minden normál ablak elrejtése"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Váltás az 1. munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Váltás a 2. munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Váltás a 3. munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Váltás a 4. munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Váltás az utolsó munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Áthelyezés a bal oldali munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Áthelyezés a jobb oldali munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Áthelyezés a felső munkaterületre"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Áthelyezés az alsó munkaterületre"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Rendszer"
|
||||
|
||||
@@ -187,6 +170,10 @@ msgstr "A parancs futtatása ablak megjelenítése"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "A tevékenységek áttekintés megjelenítése"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Gyorsbillentyűk helyreállítása"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Ablakok"
|
||||
@@ -212,54 +199,50 @@ msgid "Restore window"
|
||||
msgstr "Ablak visszaállítása"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Felgördített állapot átváltása"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Ablak bezárása"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Ablak elrejtése"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Ablak áthelyezése"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Ablak átméretezése"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Ablak megjelenítése minden munkaterületen vagy csak az egyiken"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Fedett ablak előtérbe hozása, egyébként háttérbe küldése"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Ablak más ablakok elé hozása"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Ablak más ablakok mögé küldése"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Ablak függőleges maximalizálása"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Ablak vízszintes maximalizálása"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Bal oldali felosztás megjelenítése"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Jobb oldali felosztás megjelenítése"
|
||||
|
||||
@@ -404,20 +387,6 @@ msgid "Enable experimental features"
|
||||
msgstr "Kísérleti funkciók engedélyezése"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#| msgid ""
|
||||
#| "To enable experimental features, add the feature keyword to the list. "
|
||||
#| "Whether the feature requires restarting the compositor depends on the "
|
||||
#| "given feature. Any experimental feature is not required to still be "
|
||||
#| "available, or configurable. Don’t expect adding anything in this setting "
|
||||
#| "to be future proof. Currently possible keywords: • “monitor-config-"
|
||||
#| "manager” — use the new monitor configuration system, aimed to replace the "
|
||||
#| "old one. This enables a higher level configuration API to be used by "
|
||||
#| "configuration applications, as well as the ability to configure per "
|
||||
#| "logical monitor scale. • “scale-monitor-framebuffer” — makes mutter "
|
||||
#| "default to layout logical monitors in a logical pixel coordinate space, "
|
||||
#| "while scaling monitor framebuffers instead of window content, to manage "
|
||||
#| "HiDPI monitors. Does not require a restart. Also enabling “monitor-config-"
|
||||
#| "manager” is required for this feature to be enabled."
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
@@ -432,12 +401,12 @@ msgid ""
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"A kísérleti funkciók engedélyezéséhez adja hozzá a funkció kulcsszavát a "
|
||||
"listához. A funkció a betűszedő újraindítását igényelheti az adott funkciótól "
|
||||
"függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra is elérhető "
|
||||
"vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad ehhez a "
|
||||
"beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg lehetséges "
|
||||
"kulcsszavak: • „scale-monitor-framebuffer” — alapértelmezetté teszi a mutter "
|
||||
"programot a logikai monitorok elrendezéséhez egy logikai "
|
||||
"listához. A funkció a betűszedő újraindítását igényelheti az adott "
|
||||
"funkciótól függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra "
|
||||
"is elérhető vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad "
|
||||
"ehhez a beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg "
|
||||
"lehetséges kulcsszavak: • „scale-monitor-framebuffer” — alapértelmezetté "
|
||||
"teszi a mutter programot a logikai monitorok elrendezéséhez egy logikai "
|
||||
"képpontkoordináta-térben, miközben átméretezi a monitor keretpufferét az "
|
||||
"ablaktartalom helyett azért, hogy kezelje a HiDPI monitorokat. Nem igényel "
|
||||
"újraindítást. • „remote-desktop” — engedélyezi a távoli asztal támogatást. A "
|
||||
@@ -513,10 +482,56 @@ msgstr "Váltás a 12. VT-re"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Gyorsbillentyűk újraengedélyezése"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Xwayland megragadások engedélyezése"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Engedélyezi az Xwayland alatti X11 alkalmazások által kért billentyűzet "
|
||||
"megragadások figyelembe vételét. Ahhoz, hogy Wayland alatt figyelembe "
|
||||
"legyenek véve az X11 megragadások, a kliensnek vagy küldenie kell egy "
|
||||
"meghatározott X11 ClientMessage üzenetet a gyökérablaknak, vagy az „xwayland-"
|
||||
"grab-access-rules” kulcsban megadott fehérlistában kell szerepelnie."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr "Xwayland alkalmazások, amelyek kérhetnek billentyűzet megragadást"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Felsorolja azokat az X11 ablak erőforrásneveket vagy erőforrásosztályokat, "
|
||||
"amelyek Xwayland alatt vagy kiadhatnak X11 billentyűzet megragadásokat, vagy "
|
||||
"sem. A megadott X11 ablak erőforrásneve vagy erőforrásosztálya az „xprop "
|
||||
"WM_CLASS” paranccsal kérhető le. Az értékekben a „*” vagy „?” helyettesítő "
|
||||
"karakterek támogatottak. A „!” karakterrel kezdődő értékek feketelistára "
|
||||
"kerülnek, és a fehérlista előtt lesznek figyelembe véve, így felülbírálva az "
|
||||
"alapértelmezett rendszerlistát. Az alapértelmezett rendszerlistán a következő "
|
||||
"alkalmazások szerepelnek: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. A "
|
||||
"felhasználók megszakíthatják a létező megragadásokat a „restore-shortcuts” "
|
||||
"kulcsban megadott gyorsbillentyűvel."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2259
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Módkapcsoló (%d. csoport)"
|
||||
@@ -524,37 +539,37 @@ msgstr "Módkapcsoló (%d. csoport)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2282
|
||||
msgid "Switch monitor"
|
||||
msgstr "Monitorváltás"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2284
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Képernyősúgó megjelenítése"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Beépített kijelző"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ismeretlen kijelző"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -662,7 +677,7 @@ msgstr "Használandó Mutter bővítmény"
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. munkaterület"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -671,7 +686,7 @@ msgstr ""
|
||||
"A(z) „%s” kijelző már rendelkezik ablakkezelővel; próbálja a --replace "
|
||||
"kapcsolóval helyettesíteni a jelenlegi ablakkezelőt."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "A(z) %d. képernyő a(z) „%s” megjelenítőn érvénytelen\n"
|
||||
|
||||
219
po/id.po
219
po/id.po
@@ -9,17 +9,16 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-30 10:46+0700\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-07 18:39+0000\n"
|
||||
"PO-Revision-Date: 2018-02-09 17:00+0700\n"
|
||||
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
|
||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||
"Language: id\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
@@ -47,134 +46,118 @@ msgid "Move window to last workspace"
|
||||
msgstr "Pindahkan jendela ke ruang kerja terakhir"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Pindahkan jendela satu ruang kerja ke kiri"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Pindahkan jendela satu ruang kerja ke kanan"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Pindahkan jendela satu ruang kerja ke atas"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Pindahkan jendela satu ruang kerja ke bawah"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Pindahkan jendela satu monitor ke kiri"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Pindahkan jendela satu monitor ke kanan"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Pindahkan jendela satu monitor ke atas"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Pindahkan jendela satu monitor ke bawah"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Bertukar aplikasi"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Bertukar ke aplikasi sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Bertukar jendela"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Bertukar ke jendela sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Bertukar jendela dari suatu aplikasi"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Bertukar ke jendela aplikasi sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Bertukar kendali sistem"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Bertukar ke kendali sistem sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Bertukar jendela secara langsung"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Bertukar secara langsung ke jendela sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Bertukar jendela dari suatu app secara langsung"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Bertukar secara langsung ke jendela sebelumnya dari suatu app"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Bertukar kendali sistem secara langsung"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Bertukar secara langsung ke kendali sistem sebelumnya"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Sembunyikan semua jendela normal"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Bertukar ke ruang kerja 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Bertukar ke ruang kerja 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Bertukar ke ruang kerja 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Bertukar ke ruang kerja 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Bertukar ke ruang kerja terakhir"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Pindahkan ke ruang kerja kiri"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Pindahkan ke ruang kerja kanan"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Pindahkan ke ruang kerja di atas"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Pindahkan ke ruang kerja di bawah"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
@@ -186,6 +169,10 @@ msgstr "Tampilkan sapaan jalankan perintah"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Tampilkan ringkasan aktivitas"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Pulihkan pintasan papan tik"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Jendela"
|
||||
@@ -211,54 +198,50 @@ msgid "Restore window"
|
||||
msgstr "Pulihkan jendela"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Jungkitkan keadaan berbayang"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Tutup jendela"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Sembunyikan jendela"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Pindahkan jendela"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Ubah ukuran jendela"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Jungkitkan jendela pada semua atau satu area kerja"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Naikkan jendela bila tertutup jendela lain, sebaliknya turunkan"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Naikkan jendela di atas jendela-jendela lain"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Turunkan jendela di bawah jendela-jendela lain"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maksimalkan ukuran jendela secara vertikal"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maksimalkan ukuran jendela secara horisontal"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Tilik belah di kiri"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Tilik belah di kanan"
|
||||
|
||||
@@ -497,10 +480,59 @@ msgstr "Bertukar ke VT 12"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Aktifkan kembali pintasan"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Izinkan menggenggam dengan Xwayland"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Mengizinkan pengambilalihan papan ketik yang dikeluarkan oleh aplikasi X11 "
|
||||
"yang berjalan di Xwayland untuk diperhitungkan. Agar pengambilalihan X11 "
|
||||
"diperhitungkan di bawah Wayland, klien juga harus mengirimkan ClientMessage "
|
||||
"X11 tertentu ke jendela root atau berada di antara aplikasi yang tercantum "
|
||||
"dalam daftar putih \"xwayland-grab-access-rules\"."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr ""
|
||||
"Aplikasi Xwayland yang diizinkan untuk mengeluarkan pengambilalihan papan "
|
||||
"ketik"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Buat daftar nama sumber daya atau kelas sumber daya dari jendela X11 yang "
|
||||
"diizinkan atau tidak diizinkan untuk melakukan pengambilalihan papan ketik "
|
||||
"X11 di bawah Xwayland. Nama sumber daya atau kelas sumber daya dari jendela "
|
||||
"X11 yang diberikan dapat diperoleh memakai perintah \"xprop WM_CLASS\". "
|
||||
"Wildcard \"*\" dan joker \"?\" dalam nilai didukung. Nilai yang dimulai "
|
||||
"dengan \"!\" masuk daftar hitam, yang punya preseden atas daftar putih, "
|
||||
"untuk mencabut aplikasi dari daftar sistem bawaan. Daftar sistem bawaan "
|
||||
"termasuk aplikasi-aplikasi berikut: \"@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@"
|
||||
"\". Pengguna dapat memutus pengambilalihan yang ada dengan memakai pintasan "
|
||||
"papan ketik spesifik yang didefinisikan oleh tombol pengikatan \"restore-"
|
||||
"shortcuts\"."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Tukar Mode: (Grup %d)"
|
||||
@@ -508,37 +540,37 @@ msgstr "Tukar Mode: (Grup %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Berpindah monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Tampilkan bantuan pada layar"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Tampilan bawaan"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Tak Dikenal"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Tampilan Tak Dikenal"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -554,42 +586,46 @@ msgstr "Bel peristiwa"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Gagal membuka tampilan X Window System \"%s\"\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Menonaktifkan koneksi ke manajer sesi"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Mengganti manajer jendela yang tengah berjalan"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Tentukan kode pengaturan sesi"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "Tampilan X yang digunakna"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Aktifkan sesi dari berkas simpanan"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Buat panggilan X selaras"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Jalankan sebagai kompositor wayland"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Jalankan sebagai kompositor bersarang"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Jalankan sebagai server tampilan penuh, ketimbang tampilan bersarang"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Jalankan dengan backend X11"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -644,7 +680,7 @@ msgstr "Pengaya Mutter yang dipakai"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Area kerja %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -653,7 +689,7 @@ msgstr ""
|
||||
"Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --"
|
||||
"replace untuk mengganti manajer jendela saat ini."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Layar %d pada tampilan \"%s\" tidak valid\n"
|
||||
@@ -667,7 +703,7 @@ msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Tukar Mode: Mode %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -679,3 +715,18 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (pada %s)"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Pindahkan jendela satu ruang kerja ke kiri"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Pindahkan jendela satu ruang kerja ke kanan"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "Pindahkan ke ruang kerja kiri"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "Pindahkan ke ruang kerja kanan"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Jungkitkan keadaan berbayang"
|
||||
|
||||
30
po/it.po
30
po/it.po
@@ -12,8 +12,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 06:41+0000\n"
|
||||
"PO-Revision-Date: 2017-08-29 10:21+0200\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||
"PO-Revision-Date: 2017-11-17 14:30+0100\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
"X-Generator: Poedit 1.8.12\n"
|
||||
"X-Generator: Poedit 2.0.4\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -175,7 +175,7 @@ msgstr "Sposta su spazio di lavoro in alto"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Sposta su spazio di lavoro in basso"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
@@ -187,6 +187,10 @@ msgstr "Mostra il prompt esegui comando"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostra la panoramica delle attività"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Ripristina le scorciatoie da tastiera"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Finestre"
|
||||
@@ -513,7 +517,7 @@ msgstr "Riabilita scorciatoie"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Cambio modalità (gruppo %d)"
|
||||
@@ -521,30 +525,30 @@ msgstr "Cambio modalità (gruppo %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Cambia monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostra aiuto sullo schermo"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:908
|
||||
msgid "Built-in display"
|
||||
msgstr "Display integrato"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:931
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
msgid "Unknown Display"
|
||||
msgstr "Display sconosciuto"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:941
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -658,7 +662,7 @@ msgstr "Plugin Mutter da usare"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Spazio di lavoro %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -667,7 +671,7 @@ msgstr ""
|
||||
"Il display «%s» ha già un window manager; provare a utilizzare l'opzione --"
|
||||
"replace per sostituirlo."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Lo schermo %d sul display «%s» non è valido\n"
|
||||
|
||||
129
po/nb.po
129
po/nb.po
@@ -4,11 +4,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter 3.23.x\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-02-16 21:09+0000\n"
|
||||
"PO-Revision-Date: 2017-02-19 17:44+0100\n"
|
||||
"Project-Id-Version: mutter 3.27.x\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:31+0000\n"
|
||||
"PO-Revision-Date: 2017-11-11 18:19+0100\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||
"Language: nb\n"
|
||||
@@ -168,7 +167,7 @@ msgstr "Flytt til arbeidsområdet over"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Flytt til arbeidsområdet under"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
@@ -180,6 +179,10 @@ msgstr "Vis kommandolinje"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Vis oversikt over aktiviteter"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Gjenopprett tastatursnarveier"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Vinduer"
|
||||
@@ -393,14 +396,41 @@ msgstr ""
|
||||
"Når denne er «true» vil mye vinduer alltid plasseres midt på aktivt område "
|
||||
"på skjermen."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:120
|
||||
#: data/org.gnome.mutter.gschema.xml.in:107
|
||||
msgid "Enable experimental features"
|
||||
msgstr "Slå på eksperimentelle funksjoner"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
"feature. Any experimental feature is not required to still be available, or "
|
||||
"configurable. Don’t expect adding anything in this setting to be future "
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Fjern vindu fra tabulatordialog"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:125
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Avbryt tabulatordialog"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Bytt skjermkonfigurasjon"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Roterer mellom innebyggede skjermkonfigurasjoner"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "Bytt til VT 1"
|
||||
@@ -449,10 +479,14 @@ msgstr "Bytt til VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Bytt til VT 12"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Slå på snarveier igjen"
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1800
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Modusbytte: (Gruppe %d)"
|
||||
@@ -460,37 +494,37 @@ msgstr "Modusbytte: (Gruppe %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:1822
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Bytt skjerm"
|
||||
|
||||
#: src/backends/meta-input-settings.c:1824
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Vis hjelp på skjermen"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:675
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Innebygget skjerm"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:698
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Ukjent"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:700
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ukjent skjerm"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:708
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:471
|
||||
#: src/compositor/compositor.c:476
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -500,32 +534,6 @@ msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
|
||||
msgid "Bell event"
|
||||
msgstr "Klokkehendelse"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/delete.c:127
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "«%s» svarer ikke."
|
||||
|
||||
#: src/core/delete.c:129
|
||||
msgid "Application is not responding."
|
||||
msgstr "Programmet svarer ikke."
|
||||
|
||||
#: src/core/delete.c:134
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"Du kan velge å vente en kort stund for å se om det fortsetter eller tvinge "
|
||||
"programmet til å avslutte helt."
|
||||
|
||||
#: src/core/delete.c:141
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvungen nedstenging"
|
||||
|
||||
#: src/core/delete.c:141
|
||||
msgid "_Wait"
|
||||
msgstr "_Vent"
|
||||
|
||||
#: src/core/display.c:608
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
@@ -567,6 +575,32 @@ msgstr "Kjør som en nøstet kompositør"
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Kjør som en full skjermtjener, heller enn nøstet"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "«%s» svarer ikke."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:149
|
||||
msgid "Application is not responding."
|
||||
msgstr "Programmet svarer ikke."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:154
|
||||
msgid ""
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"Du kan velge å vente en kort stund for å se om det fortsetter eller tvinge "
|
||||
"programmet til å avslutte helt."
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvungen nedstenging"
|
||||
|
||||
#: src/core/meta-close-dialog-default.c:161
|
||||
msgid "_Wait"
|
||||
msgstr "_Vent"
|
||||
|
||||
#: src/core/mutter.c:39
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -579,7 +613,8 @@ msgstr ""
|
||||
"mutter %s\n"
|
||||
"Opphavsrett © 2001-%d Havoc Pennington, Red Hat, Inc, og andre\n"
|
||||
"Dette er fri programvare; se i kildekoden for kopibetingelser.\n"
|
||||
"Det gis INGEN garanti; ikke en gang for SALGBARHET eller PASSENDE FOR ET BESTEMT FORMÅL.\n"
|
||||
"Det gis INGEN garanti; ikke en gang for SALGBARHET eller PASSENDE FOR ET "
|
||||
"BESTEMT FORMÅL.\n"
|
||||
|
||||
#: src/core/mutter.c:53
|
||||
msgid "Print version"
|
||||
@@ -594,7 +629,7 @@ msgstr "Mutter-tillegg som skal brukes"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeidsområde %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -603,7 +638,7 @@ msgstr ""
|
||||
"Skjerm «%s» har allerede en vindushåndterer; prøv å bruke flagget --replace "
|
||||
"for å erstatte aktiv vindushåndterer."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||
@@ -621,7 +656,9 @@ msgstr "Modusbytte: Modus %d"
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
msgstr "Disse vinduene støtter ikke «lagre aktiv konfigurasjon», og vil måtte startes på nytt manuelt neste gang du logger inn."
|
||||
msgstr ""
|
||||
"Disse vinduene støtter ikke «lagre aktiv konfigurasjon», og vil måtte "
|
||||
"startes på nytt manuelt neste gang du logger inn."
|
||||
|
||||
#: src/x11/window-props.c:559
|
||||
#, c-format
|
||||
|
||||
208
po/pl.po
208
po/pl.po
@@ -1,21 +1,20 @@
|
||||
# Polish translation for mutter.
|
||||
# Copyright © 2002-2017 the mutter authors.
|
||||
# Copyright © 2002-2018 the mutter authors.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
# Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 2002-2003.
|
||||
# Artur Flinta <aflinta@at.kernel.pl>, 2003-2005.
|
||||
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
||||
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
||||
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2017.
|
||||
# Aviary.pl <community-poland@mozilla.org>, 2007-2017.
|
||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2018.
|
||||
# Aviary.pl <community-poland@mozilla.org>, 2007-2018.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-29 18:14+0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||
"PO-Revision-Date: 2018-02-08 02:05+0100\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
||||
"Language: pl\n"
|
||||
@@ -50,134 +49,118 @@ msgid "Move window to last workspace"
|
||||
msgstr "Przeniesienie okna na ostatni obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Przeniesienie okna o obszar roboczy w lewo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Przeniesienie okna o obszar roboczy w prawo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Przeniesienie okna o obszar roboczy w górę"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Przeniesienie okna o obszar roboczy w dół"
|
||||
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Przeniesienie okna na monitor po lewej"
|
||||
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Przeniesienie okna na monitor po prawej"
|
||||
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Przeniesienie okna na monitor na górze"
|
||||
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Przeniesienie okna na monitor na dole"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Przełączenie programów"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Przełączenie na poprzedni program"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Przełączenie okien"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Przełączenie na poprzednie okno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Przełączenie między oknami programu"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Przełączenie na poprzednie okno programu"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Przełączenie kontroli systemowej"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Przełączenie na poprzednią kontrolę systemową"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Bezpośrednie przełączenie między oknami"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Bezpośrednie przełączenie na poprzednie okno"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Bezpośrednie przełączenie między oknami programu"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Bezpośrednie przełączenie na poprzednie okno programu"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Bezpośrednie przełączenie kontroli systemowej"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Bezpośrednie przełączenie na poprzednią kontrolę systemową"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Ukrycie wszystkich zwykłych okien"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Przełączenie na 1. obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Przełączenie na 2. obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Przełączenie na 3. obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Przełączenie na 4. obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Przełączenie na ostatni obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Przeniesienie na lewy obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Przeniesienie na prawy obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Przeniesienie na górny obszar roboczy"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Przeniesienie na dolny obszar roboczy"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
@@ -189,6 +172,10 @@ msgstr "Wyświetlenie okna wykonania polecenia"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Wyświetlenie podglądu aktywności"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Przywrócenie skrótów klawiszowych"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
@@ -214,56 +201,52 @@ msgid "Restore window"
|
||||
msgstr "Przywrócenie okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Przełączenie trybu zwinięcia"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Zamknięcie okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Ukrycie okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Przeniesienie okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Zmiana rozmiaru okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr ""
|
||||
"Przełączenie obecności okna na wszystkich obszarach roboczych lub jednym"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr ""
|
||||
"Wysunięcie okna, jeśli jest zasłonięte, odsunięcie w przeciwnym wypadku"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Wysunięcie okna przed pozostałe"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Odsunięcie okna pod pozostałe"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Pionowa maksymalizacja okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Pozioma maksymalizacja okna"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Podział widoku po lewej"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Podział widoku po prawej"
|
||||
|
||||
@@ -436,8 +419,8 @@ msgstr ""
|
||||
"w przestrzeni współrzędnych logicznych pikseli, jednocześnie skalując bufory "
|
||||
"ramki monitorów zamiast zawartości okien. Nie wymaga ponownego uruchomienia. "
|
||||
"• „remote-desktop” — włącza obsługę zdalnego pulpitu. Aby dodać "
|
||||
"udostępnianie ekranu, należy włączyć także opcję „screen-cast”. • "
|
||||
"„screen-cast” — włącza obsługę nagrywania ekranu."
|
||||
"udostępnianie ekranu, należy włączyć także opcję „screen-cast”. • „screen-"
|
||||
"cast” — włącza obsługę nagrywania ekranu."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
@@ -507,10 +490,55 @@ msgstr "Przełączenie na 12. konsolę wirtualną"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Ponowne włączenie skrótów"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Zezwolenie na przechwycenia za pomocą Xwayland"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Zezwolenie na uwzględnianie przechwyceń klawiatury wywoływanych przez "
|
||||
"programy X11 działające w systemie Xwayland. Aby przechwycenie X11 zostało "
|
||||
"uwzględnione w systemie Wayland, klient musi także wysłać konkretny "
|
||||
"komunikat ClientMessage systemu X11 do głównego okna lub być na liście "
|
||||
"programów w kluczu „xwayland-grab-access-rules”."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr "Programy Xwayland, które mogą wywoływać przechwycenia klawiatury"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Lista nazw zasobów lub klas zasobów okien X11, które mogą lub nie mogą "
|
||||
"wywoływać przechwyceń klawiatury X11 w systemie Xwayland. Można uzyskać "
|
||||
"nazwę zasobu lub klasę zasobów danego okna X11 za pomocą polecenia „xprop "
|
||||
"WM_CLASS”. W wartościach obsługiwane są wieloznaczniki „*” i „?”. Wartości "
|
||||
"zaczynające się od znaku „!” nie mają zezwolenia, co ma pierwszeństwo przed "
|
||||
"zezwoleniami, aby usunąć je z domyślnej listy systemu. Domyślna lista "
|
||||
"systemu zawiera te programy: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. "
|
||||
"Użytkownicy mogą przerwać istniejące przechwycenie za pomocą skrótu "
|
||||
"klawiszowego określonego w kluczu „restore-shortcuts”."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Przełącznik trybu (%d. grupa)"
|
||||
@@ -518,37 +546,37 @@ msgstr "Przełącznik trybu (%d. grupa)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Przełączenie monitora"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Ekran pomocy"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Wbudowany ekran"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nieznany ekran"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -564,42 +592,46 @@ msgstr "Zdarzenie sygnału dźwiękowego"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Otwarcie połączenia z ekranem „%s” systemu X Window się nie powiodło\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Rozłącza połączenie z menedżerem sesji"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Zastępuje uruchomionego menedżera okien"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Podaje identyfikator zarządzania sesją"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "Używany ekran X"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicjuje sesję z zapisanego pliku"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Synchroniczne wywołania X"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Uruchamia jako menedżer składania Wayland"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Uruchamia jako osadzony menedżer składania"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Uruchamia jako pełny serwer wyświetlania zamiast osadzonego"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Uruchamia za pomocą mechanizmu X11"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -653,7 +685,7 @@ msgstr "Używana wtyczka menedżera Mutter"
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. obszar roboczy"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -662,7 +694,7 @@ msgstr ""
|
||||
"Na ekranie „%s” działa już menedżer okien. Aby zastąpić działającego "
|
||||
"menedżera okien, należy użyć opcji „--replace”."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Podekran %d ekranu „%s” jest nieprawidłowy\n"
|
||||
@@ -677,7 +709,7 @@ msgstr ""
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Przełącznik trybu: %d. tryb"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
|
||||
221
po/pt_BR.po
221
po/pt_BR.po
@@ -1,5 +1,5 @@
|
||||
# Brazilian Portuguese translation of mutter.
|
||||
# Copyright (C) 2002-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
# Sun G11n <gnome_int_l10n@ireland.sun.com>, 2002.
|
||||
# Evandro Fernandes Giovanini <evandrofg@ig.com.br>, 2002, 2003, 2006.
|
||||
@@ -14,15 +14,14 @@
|
||||
# Antonio Fernandes C. Neto <fernandes@pelivre.org>, 2010.
|
||||
# Rodrigo Padula de Oliveira <contato@rodrigopadula.com>, 2011.
|
||||
# Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2012, 2014, 2016.
|
||||
# Rafael Fontenelle <rafaelff@gnome.org>, 2013, 2014, 2016, 2017.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2012-2016.
|
||||
# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2018.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
||||
"&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-09-03 11:06-0200\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||
"PO-Revision-Date: 2018-02-16 15:02-0200\n"
|
||||
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -58,138 +57,122 @@ msgid "Move window to last workspace"
|
||||
msgstr "Mover a janela para o último espaço de trabalho"
|
||||
|
||||
#: data/50-mutter-navigation.xml:24
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Mover a janela um espaço de trabalho à esquerda"
|
||||
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Mover a janela um espaço de trabalho à direita"
|
||||
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Mover a janela um espaço de trabalho acima"
|
||||
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
#: data/50-mutter-navigation.xml:27
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Mover a janela um espaço de trabalho abaixo"
|
||||
|
||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
#: data/50-mutter-navigation.xml:30
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Mover janela para o monitor da esquerda"
|
||||
|
||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
#: data/50-mutter-navigation.xml:33
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Mover janela para o monitor da direita"
|
||||
|
||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||
#: data/50-mutter-navigation.xml:42
|
||||
#: data/50-mutter-navigation.xml:36
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Mover janela para o monitor acima"
|
||||
|
||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
||||
#: data/50-mutter-navigation.xml:45
|
||||
#: data/50-mutter-navigation.xml:39
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Mover janela para o monitor abaixo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:49
|
||||
#: data/50-mutter-navigation.xml:43
|
||||
msgid "Switch applications"
|
||||
msgstr "Alternar aplicativos"
|
||||
|
||||
#: data/50-mutter-navigation.xml:54
|
||||
#: data/50-mutter-navigation.xml:48
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Alternar para o aplicativo anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:58
|
||||
#: data/50-mutter-navigation.xml:52
|
||||
msgid "Switch windows"
|
||||
msgstr "Alternar janelas"
|
||||
|
||||
#: data/50-mutter-navigation.xml:63
|
||||
#: data/50-mutter-navigation.xml:57
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Alternar para a janela anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:67
|
||||
#: data/50-mutter-navigation.xml:61
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Alternar as janelas de um aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:72
|
||||
#: data/50-mutter-navigation.xml:66
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Alternar para a janela anterior de um aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:76
|
||||
#: data/50-mutter-navigation.xml:70
|
||||
msgid "Switch system controls"
|
||||
msgstr "Alternar controles do sistema"
|
||||
|
||||
#: data/50-mutter-navigation.xml:81
|
||||
#: data/50-mutter-navigation.xml:75
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Alternar para o controle de sistema anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:85
|
||||
#: data/50-mutter-navigation.xml:79
|
||||
msgid "Switch windows directly"
|
||||
msgstr "Alternar as janelas diretamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:90
|
||||
#: data/50-mutter-navigation.xml:84
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr "Alternar diretamente para a janela anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:94
|
||||
#: data/50-mutter-navigation.xml:88
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Alternar as janelas de um aplicativo diretamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:99
|
||||
#: data/50-mutter-navigation.xml:93
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Alternar diretamente para a janela anterior de um aplicativo"
|
||||
|
||||
#: data/50-mutter-navigation.xml:103
|
||||
#: data/50-mutter-navigation.xml:97
|
||||
msgid "Switch system controls directly"
|
||||
msgstr "Alternar os controles de sistema diretamente"
|
||||
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
#: data/50-mutter-navigation.xml:102
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Alternar diretamente para o controle de sistema anterior"
|
||||
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
#: data/50-mutter-navigation.xml:105
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Ocultar todas as janelas normais"
|
||||
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
#: data/50-mutter-navigation.xml:108
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Trocar para o espaço de trabalho 1"
|
||||
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
#: data/50-mutter-navigation.xml:111
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Trocar para o espaço de trabalho 2"
|
||||
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
#: data/50-mutter-navigation.xml:114
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Trocar para o espaço de trabalho 3"
|
||||
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
#: data/50-mutter-navigation.xml:117
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Trocar para o espaço de trabalho 4"
|
||||
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
#: data/50-mutter-navigation.xml:120
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Trocar para o último espaço de trabalho"
|
||||
|
||||
#: data/50-mutter-navigation.xml:129
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Move para o espaço de trabalho à esquerda"
|
||||
|
||||
#: data/50-mutter-navigation.xml:132
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Move para o espaço de trabalho à direita"
|
||||
|
||||
#: data/50-mutter-navigation.xml:135
|
||||
#: data/50-mutter-navigation.xml:123
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Mover para o espaço de trabalho acima"
|
||||
|
||||
#: data/50-mutter-navigation.xml:138
|
||||
#: data/50-mutter-navigation.xml:126
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Mover para o espaço de trabalho abaixo"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
@@ -201,6 +184,10 @@ msgstr "Mostrar o prompt de comando de execução"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostrar o panorama de atividades"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Restaurar os atalhos de teclado"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Janelas"
|
||||
@@ -226,54 +213,50 @@ msgid "Restore window"
|
||||
msgstr "Restaurar janela"
|
||||
|
||||
#: data/50-mutter-windows.xml:18
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Alternar estado sombreado"
|
||||
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Close window"
|
||||
msgstr "Fechar janela"
|
||||
|
||||
#: data/50-mutter-windows.xml:22
|
||||
#: data/50-mutter-windows.xml:20
|
||||
msgid "Hide window"
|
||||
msgstr "Ocultar janela"
|
||||
|
||||
#: data/50-mutter-windows.xml:24
|
||||
#: data/50-mutter-windows.xml:22
|
||||
msgid "Move window"
|
||||
msgstr "Mover janela"
|
||||
|
||||
#: data/50-mutter-windows.xml:26
|
||||
#: data/50-mutter-windows.xml:24
|
||||
msgid "Resize window"
|
||||
msgstr "Redimensionar janela"
|
||||
|
||||
#: data/50-mutter-windows.xml:29
|
||||
#: data/50-mutter-windows.xml:27
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Alternar a janela em todos os espaços de trabalho ou em apenas um"
|
||||
|
||||
#: data/50-mutter-windows.xml:31
|
||||
#: data/50-mutter-windows.xml:29
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Elevar a janela se estiver coberta; caso contrário, a abaixa"
|
||||
|
||||
#: data/50-mutter-windows.xml:33
|
||||
#: data/50-mutter-windows.xml:31
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Elevar a janela para frente das outras"
|
||||
|
||||
#: data/50-mutter-windows.xml:35
|
||||
#: data/50-mutter-windows.xml:33
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Colocar a janela atrás das outras"
|
||||
|
||||
#: data/50-mutter-windows.xml:37
|
||||
#: data/50-mutter-windows.xml:35
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Maximizar a janela verticalmente"
|
||||
|
||||
#: data/50-mutter-windows.xml:39
|
||||
#: data/50-mutter-windows.xml:37
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Maximizar a janela horizontalmente"
|
||||
|
||||
#: data/50-mutter-windows.xml:43
|
||||
#: data/50-mutter-windows.xml:41
|
||||
msgid "View split on left"
|
||||
msgstr "Visualizar divisão à esquerda"
|
||||
|
||||
#: data/50-mutter-windows.xml:47
|
||||
#: data/50-mutter-windows.xml:45
|
||||
msgid "View split on right"
|
||||
msgstr "Visualizar divisão à direita"
|
||||
|
||||
@@ -457,7 +440,6 @@ msgid "Cancel tab popup"
|
||||
msgstr "Cancelar aba instantânea"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
#| msgid "Switch monitor"
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Trocar configurações de monitor"
|
||||
|
||||
@@ -517,10 +499,56 @@ msgstr "Trocar para o VT 12"
|
||||
msgid "Re-enable shortcuts"
|
||||
msgstr "Reabilita atalhos"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
|
||||
msgid "Allow grabs with Xwayland"
|
||||
msgstr "Permitir capturas com Xwayland"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
|
||||
msgid ""
|
||||
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
|
||||
"taken into account. For a X11 grab to be taken into account under Wayland, "
|
||||
"the client must also either send a specific X11 ClientMessage to the root "
|
||||
"window or be among the applications white-listed in key “xwayland-grab-"
|
||||
"access-rules”."
|
||||
msgstr ""
|
||||
"Permite capturas de teclado emitidas por aplicativos X11 em execução no "
|
||||
"Xwayland para serem levadas em consideração. Para que uma captura de X11 "
|
||||
"seja levada em consideração no Wayland, o cliente também deve enviar um X11 "
|
||||
"ClientMessage específica para a janela raiz ou estar entre os aplicativos "
|
||||
"listados em branco na chave “xwayland-grab-access-rules”."
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
|
||||
msgid "Xwayland applications allowed to issue keyboard grabs"
|
||||
msgstr "Aplicativos Xwayland com permissão para emitir capturas de teclado"
|
||||
|
||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
|
||||
msgid ""
|
||||
"List the resource names or resource class of X11 windows either allowed or "
|
||||
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
|
||||
"resource class of a given X11 window can be obtained using the command "
|
||||
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
|
||||
"Values starting with “!” are blacklisted, which has precedence over the "
|
||||
"whitelist, to revoke applications from the default system list. The default "
|
||||
"system list includes the following applications: "
|
||||
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
|
||||
"using the specific keyboard shortcut defined by the keybinding key “restore-"
|
||||
"shortcuts”."
|
||||
msgstr ""
|
||||
"Lista os nomes dos recursos ou classe de recursos do janelas X11 com ou sem "
|
||||
"permissão para emitir capturas de teclado X11 no Xwayland. O nome do recurso "
|
||||
"ou a classe de recurso de uma determinada janela X11 podem ser obtidos "
|
||||
"usando o comando “xprop WM_CLASS”. Há suporte a curingas “*” e “?” nos "
|
||||
"valores. Os valores que começam com “!” são colocados em uma lista negra, "
|
||||
"que tem precedência sobre a lista branca, para revogar aplicativos da lista "
|
||||
"padrão do sistema. A lista de sistema padrão inclui os seguintes "
|
||||
"aplicativos: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. Os usuários podem "
|
||||
"quebrar uma captura existente usando o atalho de teclado específico definido "
|
||||
"pela chave de associação de tecla “restore-shortcuts”."
|
||||
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2260
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Alternador de modo (Grupo %d)"
|
||||
@@ -528,37 +556,37 @@ msgstr "Alternador de modo (Grupo %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2283
|
||||
msgid "Switch monitor"
|
||||
msgstr "Trocar monitor"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2285
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Mostrar ajuda na tela"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:900
|
||||
msgid "Built-in display"
|
||||
msgstr "Tela embutida"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:923
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:925
|
||||
msgid "Unknown Display"
|
||||
msgstr "Monitor desconhecido"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s de %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: src/compositor/compositor.c:476
|
||||
#: src/compositor/compositor.c:481
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display “%s”."
|
||||
@@ -573,42 +601,46 @@ msgstr "Evento de som"
|
||||
msgid "Failed to open X Window System display “%s”\n"
|
||||
msgstr "Falha ao abrir a exibição “%s” do sistema de janelas X\n"
|
||||
|
||||
#: src/core/main.c:189
|
||||
#: src/core/main.c:190
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desabilitar a conexão com o gerenciador de sessões"
|
||||
|
||||
#: src/core/main.c:195
|
||||
#: src/core/main.c:196
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Substituir o gerenciador de janelas em execução"
|
||||
|
||||
#: src/core/main.c:201
|
||||
#: src/core/main.c:202
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar o ID do gerenciador de sessões"
|
||||
|
||||
#: src/core/main.c:206
|
||||
#: src/core/main.c:207
|
||||
msgid "X Display to use"
|
||||
msgstr "Exibição do X a ser utilizada"
|
||||
|
||||
#: src/core/main.c:212
|
||||
#: src/core/main.c:213
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar a sessão a partir do arquivo salvo"
|
||||
|
||||
#: src/core/main.c:218
|
||||
#: src/core/main.c:219
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fazer X chamadas síncronas"
|
||||
|
||||
#: src/core/main.c:225
|
||||
#: src/core/main.c:226
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Executar como um compositor wayland"
|
||||
|
||||
#: src/core/main.c:231
|
||||
#: src/core/main.c:232
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Executar como um compositor aninhado"
|
||||
|
||||
#: src/core/main.c:239
|
||||
#: src/core/main.c:240
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Executar como um servidor de tela cheia, ao invés de aninhado"
|
||||
|
||||
#: src/core/main.c:246
|
||||
msgid "Run with X11 backend"
|
||||
msgstr "Executar com backend X11"
|
||||
|
||||
#. Translators: %s is a window title
|
||||
#: src/core/meta-close-dialog-default.c:147
|
||||
#, c-format
|
||||
@@ -664,7 +696,7 @@ msgstr "Plug-in do Mutter para usar"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espaço de trabalho %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -673,7 +705,7 @@ msgstr ""
|
||||
"A exibição “%s” já possui um gerenciador de janelas; tente usar a opção --"
|
||||
"replace para substituir o gerenciador de janelas atual."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "A tela %d na exibição “%s” é inválida\n"
|
||||
@@ -687,7 +719,7 @@ msgstr "O Mutter foi compilado sem suporte para modo detalhado\n"
|
||||
msgid "Mode Switch: Mode %d"
|
||||
msgstr "Alternador de modo: Modo %d"
|
||||
|
||||
#: src/x11/session.c:1815
|
||||
#: src/x11/session.c:1818
|
||||
msgid ""
|
||||
"These windows do not support “save current setup” and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
@@ -700,6 +732,21 @@ msgstr ""
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (em %s)"
|
||||
|
||||
#~ msgid "Move window one workspace to the left"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho à esquerda"
|
||||
|
||||
#~ msgid "Move window one workspace to the right"
|
||||
#~ msgstr "Mover a janela um espaço de trabalho à direita"
|
||||
|
||||
#~ msgid "Move to workspace left"
|
||||
#~ msgstr "Move para o espaço de trabalho à esquerda"
|
||||
|
||||
#~ msgid "Move to workspace right"
|
||||
#~ msgstr "Move para o espaço de trabalho à direita"
|
||||
|
||||
#~ msgid "Toggle shaded state"
|
||||
#~ msgstr "Alternar estado sombreado"
|
||||
|
||||
#~ msgid "background texture could not be created from file"
|
||||
#~ msgstr "textura de plano de fundo não pôde ser criado de arquivo"
|
||||
|
||||
|
||||
37
po/sl.po
37
po/sl.po
@@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-27 22:38+0200\n"
|
||||
"PO-Revision-Date: 2017-08-27 22:38+0200\n"
|
||||
"POT-Creation-Date: 2017-09-08 11:30+0200\n"
|
||||
"PO-Revision-Date: 2017-09-08 11:36+0200\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: sl_SI\n"
|
||||
@@ -412,32 +412,35 @@ msgid ""
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart."
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"Za omogočanje preizkusnih možnosti, dodajte ključno besedo možnosti na "
|
||||
"seznam. Ali zahteva možnost ponovni zagon sestavljalnika, je odvisno od "
|
||||
"posamezne možnosti. Te možnosti niso zahtevane niti nastavljive. Trenutno so "
|
||||
"na voljo ključne besede: • »monitor-config-manager« – uporablja nov sistem "
|
||||
"nastavitev, ki naj bi zamenjal obstoječega. Omogoča večjo nastavljivost API, "
|
||||
"za uporabo pri prigramih za nastavitve lastnosti zaslona. • »scale-monitor-"
|
||||
"framebuffer« – določi privzeto rabo sistema mutter za logične zaslone v "
|
||||
"logičnem točkovnem koordinatnem prostoru, pri čemer prilagaja predpomnilnik "
|
||||
"in ne vsebine za upravljanje z zasloni HiDPI. Možnost ne zahteva ponovnega "
|
||||
"zagona."
|
||||
"Za omogočanje preizkusnih možnosti, dodajte na seznam ključne besedo "
|
||||
"možnosti. Ali vpisana možnost zahteva ponovni zagon sestavljalnika, je "
|
||||
"odvisno od posamezne možnosti. Te možnosti niso zahtevane niti nastavljive. "
|
||||
"Trenutno so na voljo ključne besede: • »scale-monitor-framebuffer« – določi "
|
||||
"privzeto rabo sistema mutter za logične zaslone v logičnem točkovnem "
|
||||
"koordinatnem prostoru, pri čemer prilagaja predpomnilnik in ne vsebine za "
|
||||
"upravljanje z zasloni HiDPI. Možnost ne zahteva ponovnega zagona. • »remote-"
|
||||
"desktop« – omogoči podporo oddaljenim namizjem. Za souporabo zaslona mora "
|
||||
"biti omogočena tudi možnost »screen-cast«. • »screen-cast« – omogoči podporo "
|
||||
"objavljanja na zaslon."
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:141
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "Izbor okna iz pojavnega zavihka"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:146
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "Prekliči pojavni zavihek"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "Nastavitve nadzornika preklopa"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "Zavrti vgrajene nastavitve zaslona"
|
||||
|
||||
|
||||
30
po/sv.po
30
po/sv.po
@@ -11,15 +11,15 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-09-04 14:39+0000\n"
|
||||
"PO-Revision-Date: 2017-09-05 00:14+0200\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||
"PO-Revision-Date: 2017-11-14 00:43+0100\n"
|
||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.3\n"
|
||||
"X-Generator: Poedit 2.0.4\n"
|
||||
|
||||
#: data/50-mutter-navigation.xml:6
|
||||
msgid "Navigation"
|
||||
@@ -173,7 +173,7 @@ msgstr "Flytta till arbetsyta ovanför"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Flytta till arbetsyta nedanför"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
@@ -185,6 +185,10 @@ msgstr "Visa Kör kommando-dialogen"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Visa aktivitetsöversikt"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Återställ tangentbordsgenvägarna"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Fönster"
|
||||
@@ -500,7 +504,7 @@ msgstr "Återaktivera genvägar"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Lägesväxel (grupp %d)"
|
||||
@@ -508,30 +512,30 @@ msgstr "Lägesväxel (grupp %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Växla skärm"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Visa hjälp på skärmen"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:908
|
||||
msgid "Built-in display"
|
||||
msgstr "Inbyggd display"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:931
|
||||
msgid "Unknown"
|
||||
msgstr "Okänd"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
msgid "Unknown Display"
|
||||
msgstr "Okänd display"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:941
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -643,7 +647,7 @@ msgstr "Mutter-insticksmodul att använda"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbetsyta %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -652,7 +656,7 @@ msgstr ""
|
||||
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för "
|
||||
"att ersätta den aktuella fönsterhanteraren."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "Skärm %d på display ”%s” är ogiltig\n"
|
||||
|
||||
46
po/tr.po
46
po/tr.po
@@ -7,17 +7,17 @@
|
||||
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
|
||||
# Muhammed EKEN <gnome@m-eken.com>, 2011.
|
||||
# Furkan Ahmet Kara <furkanahmetkara.fk@gmail.com>, 2017.
|
||||
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017.
|
||||
# Emin Tufan Çetin <etcetin@gmail.com>, 2017.
|
||||
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
||||
"PO-Revision-Date: 2017-08-29 23:17+0300\n"
|
||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||
"PO-Revision-Date: 2017-11-15 23:49+0300\n"
|
||||
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -179,7 +179,7 @@ msgstr "Üstteki çalışma alanına taşı"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Alttaki çalışma alanına taşı"
|
||||
|
||||
#: data/50-mutter-system.xml:6
|
||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
@@ -191,6 +191,10 @@ msgstr "Komut çalıştırma istemini göster"
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Etkinlik genel görünümünü göster"
|
||||
|
||||
#: data/50-mutter-wayland.xml:8
|
||||
msgid "Restore the keyboard shortcuts"
|
||||
msgstr "Klavye kısayollarını geri yükle"
|
||||
|
||||
#: data/50-mutter-windows.xml:6
|
||||
msgid "Windows"
|
||||
msgstr "Pencereler"
|
||||
@@ -413,20 +417,6 @@ msgid "Enable experimental features"
|
||||
msgstr "Deneysel özellikleri etkinleştir"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#| msgid ""
|
||||
#| "To enable experimental features, add the feature keyword to the list. "
|
||||
#| "Whether the feature requires restarting the compositor depends on the "
|
||||
#| "given feature. Any experimental feature is not required to still be "
|
||||
#| "available, or configurable. Don’t expect adding anything in this setting "
|
||||
#| "to be future proof. Currently possible keywords: • “monitor-config-"
|
||||
#| "manager” — use the new monitor configuration system, aimed to replace the "
|
||||
#| "old one. This enables a higher level configuration API to be used by "
|
||||
#| "configuration applications, as well as the ability to configure per "
|
||||
#| "logical monitor scale. • “scale-monitor-framebuffer” — makes mutter "
|
||||
#| "default to layout logical monitors in a logical pixel coordinate space, "
|
||||
#| "while scaling monitor framebuffers instead of window content, to manage "
|
||||
#| "HiDPI monitors. Does not require a restart. Also enabling “monitor-config-"
|
||||
#| "manager” is required for this feature to be enabled."
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
@@ -529,7 +519,7 @@ msgstr "Kısayolları yeniden etkinleştir"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2167
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "Kip anahtarı (Group %d)"
|
||||
@@ -537,30 +527,30 @@ msgstr "Kip anahtarı (Group %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2190
|
||||
msgid "Switch monitor"
|
||||
msgstr "Monitör değiştir"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2192
|
||||
msgid "Show on-screen help"
|
||||
msgstr "Ekranda yardımı göster"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:908
|
||||
msgid "Built-in display"
|
||||
msgstr "Yerleşik ekran"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:931
|
||||
msgid "Unknown"
|
||||
msgstr "Bilinmiyor"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:933
|
||||
msgid "Unknown Display"
|
||||
msgstr "Bilinmeyen Ekran"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:941
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -674,7 +664,7 @@ msgstr "Kullanılacak Mutter eklentisi"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Çalışma Alanı %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:583
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -684,7 +674,7 @@ msgstr ""
|
||||
"yöneticisinin yerine bir başkasını koymak için --replace seçeneğini "
|
||||
"kullanmayı deneyin."
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:668
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"
|
||||
|
||||
40
po/zh_TW.po
40
po/zh_TW.po
@@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: metacity 3.3.4\n"
|
||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2017-08-21 04:46+0000\n"
|
||||
"PO-Revision-Date: 2017-08-27 12:05+0800\n"
|
||||
"POT-Creation-Date: 2017-09-29 14:36+0000\n"
|
||||
"PO-Revision-Date: 2017-10-01 22:57+0800\n"
|
||||
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
|
||||
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
|
||||
"Language: zh_TW\n"
|
||||
@@ -388,7 +388,6 @@ msgid "Enable experimental features"
|
||||
msgstr "啟用試驗性功能"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"To enable experimental features, add the feature keyword to the list. "
|
||||
"Whether the feature requires restarting the compositor depends on the given "
|
||||
@@ -397,27 +396,32 @@ msgid ""
|
||||
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||
"space, while scaling monitor framebuffers instead of window content, to "
|
||||
"manage HiDPI monitors. Does not require a restart."
|
||||
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||
"enables remote desktop support. To support remote desktop with screen "
|
||||
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||
"screen cast support."
|
||||
msgstr ""
|
||||
"若要啟用實驗性功能,請將功能關鍵字加入列表中。置於該功能是否須要重新啟動混成"
|
||||
"器則視給予的功能而定。任何實驗性功能不一定能用、或是可以調整設定。請不要預期"
|
||||
"在此設定中加入的任何東西未來都能存在。目前可用的關鍵字有: • “scale-monitor-"
|
||||
"framebuffer” — 讓 mutter 預設採用邏輯像素座標空間的配置邏輯螢幕,而縮放螢幕 "
|
||||
"framebuffer 則取代視窗內容以管理 HiDPI 螢幕。不須要重新啟動。"
|
||||
"framebuffer 則取代視窗內容以管理 HiDPI 螢幕。不須要重新啟動。 • “remote-"
|
||||
"desktop” — 啟用遠端桌面支援。若要支援遠端桌面的螢幕分享,則必須也啟用“screen-"
|
||||
"cast”。• “screen-cast” — 啟用螢幕投放支援。"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:141
|
||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||
msgid "Select window from tab popup"
|
||||
msgstr "從分頁彈出項選擇視窗"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:146
|
||||
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||
msgid "Cancel tab popup"
|
||||
msgstr "取消分頁彈出項"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||
msgid "Switch monitor configurations"
|
||||
msgstr "切換螢幕組態"
|
||||
|
||||
#: data/org.gnome.mutter.gschema.xml.in:156
|
||||
#: data/org.gnome.mutter.gschema.xml.in:160
|
||||
msgid "Rotates the built-in monitor configuration"
|
||||
msgstr "旋轉切換內建螢幕組態"
|
||||
|
||||
@@ -476,7 +480,7 @@ msgstr "重新啟用快捷鍵"
|
||||
#. TRANSLATORS: This string refers to a button that switches between
|
||||
#. * different modes.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2151
|
||||
#: src/backends/meta-input-settings.c:2157
|
||||
#, c-format
|
||||
msgid "Mode Switch (Group %d)"
|
||||
msgstr "模式切換( 群組 %d)"
|
||||
@@ -484,30 +488,30 @@ msgstr "模式切換( 群組 %d)"
|
||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||
#. * mapping through the available outputs.
|
||||
#.
|
||||
#: src/backends/meta-input-settings.c:2174
|
||||
#: src/backends/meta-input-settings.c:2180
|
||||
msgid "Switch monitor"
|
||||
msgstr "切換螢幕"
|
||||
|
||||
#: src/backends/meta-input-settings.c:2176
|
||||
#: src/backends/meta-input-settings.c:2182
|
||||
msgid "Show on-screen help"
|
||||
msgstr "顯示螢幕求助"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:903
|
||||
#: src/backends/meta-monitor-manager.c:894
|
||||
msgid "Built-in display"
|
||||
msgstr "內建顯示"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:926
|
||||
#: src/backends/meta-monitor-manager.c:917
|
||||
msgid "Unknown"
|
||||
msgstr "不明"
|
||||
|
||||
#: src/backends/meta-monitor-manager.c:928
|
||||
#: src/backends/meta-monitor-manager.c:919
|
||||
msgid "Unknown Display"
|
||||
msgstr "不明的顯示器"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: src/backends/meta-monitor-manager.c:936
|
||||
#: src/backends/meta-monitor-manager.c:927
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -618,7 +622,7 @@ msgstr "要使用的 Mutter 外掛程式"
|
||||
msgid "Workspace %d"
|
||||
msgstr "工作區 %d"
|
||||
|
||||
#: src/core/screen.c:580
|
||||
#: src/core/screen.c:582
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display “%s” already has a window manager; try using the --replace option to "
|
||||
@@ -627,7 +631,7 @@ msgstr ""
|
||||
"畫面「%s」已經有了視窗管理員;請嘗試使用 --replace 選項來替換目前的視窗管理"
|
||||
"員。"
|
||||
|
||||
#: src/core/screen.c:665
|
||||
#: src/core/screen.c:667
|
||||
#, c-format
|
||||
msgid "Screen %d on display “%s” is invalid\n"
|
||||
msgstr "畫面「%2$s」中的第 %1$d 個螢幕無效\n"
|
||||
|
||||
@@ -82,12 +82,19 @@ mutter_built_sources += \
|
||||
linux-dmabuf-unstable-v1-server-protocol.h \
|
||||
keyboard-shortcuts-inhibit-unstable-v1-protocol.c \
|
||||
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h \
|
||||
xdg-output-unstable-v1-protocol.c \
|
||||
xdg-output-unstable-v1-server-protocol.h \
|
||||
xwayland-keyboard-grab-unstable-v1-protocol.c \
|
||||
xwayland-keyboard-grab-unstable-v1-server-protocol.h \
|
||||
gtk-text-input-protocol.c \
|
||||
gtk-text-input-server-protocol.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
wayland_protocols = \
|
||||
wayland/protocol/gtk-shell.xml \
|
||||
wayland/protocol/gtk-primary-selection.xml \
|
||||
wayland/protocol/gtk-text-input.xml \
|
||||
$(NULL)
|
||||
|
||||
libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
@@ -97,6 +104,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
backends/meta-backend-private.h \
|
||||
backends/meta-barrier.c \
|
||||
backends/meta-barrier-private.h \
|
||||
backends/meta-crtc.c \
|
||||
backends/meta-crtc.h \
|
||||
backends/meta-cursor.c \
|
||||
backends/meta-cursor.h \
|
||||
backends/meta-cursor-tracker.c \
|
||||
@@ -107,6 +116,11 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
backends/meta-egl.c \
|
||||
backends/meta-egl.h \
|
||||
backends/meta-egl-ext.h \
|
||||
backends/meta-gles3.c \
|
||||
backends/meta-gles3.h \
|
||||
backends/meta-gles3-table.h \
|
||||
backends/meta-gpu.c \
|
||||
backends/meta-gpu.h \
|
||||
backends/meta-display-config-shared.h \
|
||||
backends/meta-idle-monitor.c \
|
||||
backends/meta-idle-monitor-private.h \
|
||||
@@ -131,6 +145,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
backends/meta-monitor-manager-dummy.h \
|
||||
backends/meta-orientation-manager.c \
|
||||
backends/meta-orientation-manager.h \
|
||||
backends/meta-output.c \
|
||||
backends/meta-output.h \
|
||||
backends/meta-pointer-constraint.c \
|
||||
backends/meta-pointer-constraint.h \
|
||||
backends/meta-settings.c \
|
||||
@@ -149,8 +165,12 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
backends/x11/meta-barrier-x11.h \
|
||||
backends/x11/meta-clutter-backend-x11.c \
|
||||
backends/x11/meta-clutter-backend-x11.h \
|
||||
backends/x11/meta-crtc-xrandr.c \
|
||||
backends/x11/meta-crtc-xrandr.h \
|
||||
backends/x11/meta-cursor-renderer-x11.c \
|
||||
backends/x11/meta-cursor-renderer-x11.h \
|
||||
backends/x11/meta-gpu-xrandr.c \
|
||||
backends/x11/meta-gpu-xrandr.h \
|
||||
backends/x11/cm/meta-backend-x11-cm.c \
|
||||
backends/x11/cm/meta-backend-x11-cm.h \
|
||||
backends/x11/cm/meta-renderer-x11-cm.c \
|
||||
@@ -167,6 +187,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||
backends/x11/meta-input-settings-x11.h \
|
||||
backends/x11/meta-monitor-manager-xrandr.c \
|
||||
backends/x11/meta-monitor-manager-xrandr.h \
|
||||
backends/x11/meta-output-xrandr.c \
|
||||
backends/x11/meta-output-xrandr.h \
|
||||
backends/x11/meta-renderer-x11.c \
|
||||
backends/x11/meta-renderer-x11.h \
|
||||
backends/x11/meta-stage-x11-nested.c \
|
||||
@@ -412,6 +434,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
||||
wayland/meta-wayland-surface-role-cursor.h \
|
||||
wayland/meta-wayland-surface-role-tablet-cursor.c \
|
||||
wayland/meta-wayland-surface-role-tablet-cursor.h \
|
||||
wayland/meta-wayland-text-input.c \
|
||||
wayland/meta-wayland-text-input.h \
|
||||
wayland/meta-wayland-types.h \
|
||||
wayland/meta-wayland-versions.h \
|
||||
wayland/meta-wayland-outputs.c \
|
||||
@@ -420,6 +444,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
||||
wayland/meta-wayland-xdg-foreign.h \
|
||||
wayland/meta-window-wayland.c \
|
||||
wayland/meta-window-wayland.h \
|
||||
wayland/meta-window-xwayland.c \
|
||||
wayland/meta-window-xwayland.h \
|
||||
wayland/meta-wayland-xdg-shell.c \
|
||||
wayland/meta-wayland-xdg-shell.h \
|
||||
wayland/meta-wayland-wl-shell.c \
|
||||
@@ -430,6 +456,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
||||
wayland/meta-wayland-inhibit-shortcuts.h \
|
||||
wayland/meta-wayland-inhibit-shortcuts-dialog.c \
|
||||
wayland/meta-wayland-inhibit-shortcuts-dialog.h \
|
||||
wayland/meta-xwayland-grab-keyboard.c \
|
||||
wayland/meta-xwayland-grab-keyboard.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
@@ -440,11 +468,15 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
||||
backends/native/meta-backend-native-private.h \
|
||||
backends/native/meta-barrier-native.c \
|
||||
backends/native/meta-barrier-native.h \
|
||||
backends/native/meta-crtc-kms.c \
|
||||
backends/native/meta-crtc-kms.h \
|
||||
backends/native/meta-clutter-backend-native.c \
|
||||
backends/native/meta-clutter-backend-native.h \
|
||||
backends/native/meta-cursor-renderer-native.c \
|
||||
backends/native/meta-cursor-renderer-native.h \
|
||||
backends/native/meta-default-modes.h \
|
||||
backends/native/meta-gpu-kms.c \
|
||||
backends/native/meta-gpu-kms.h \
|
||||
backends/native/meta-idle-monitor-native.c \
|
||||
backends/native/meta-idle-monitor-native.h \
|
||||
backends/native/meta-input-settings-native.c \
|
||||
@@ -453,8 +485,12 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
||||
backends/native/meta-monitor-manager-kms.h \
|
||||
backends/native/meta-launcher.c \
|
||||
backends/native/meta-launcher.h \
|
||||
backends/native/meta-output-kms.c \
|
||||
backends/native/meta-output-kms.h \
|
||||
backends/native/meta-renderer-native.c \
|
||||
backends/native/meta-renderer-native.h \
|
||||
backends/native/meta-renderer-native-gles3.c \
|
||||
backends/native/meta-renderer-native-gles3.h \
|
||||
backends/native/meta-stage-native.c \
|
||||
backends/native/meta-stage-native.h \
|
||||
backends/native/dbus-utils.c \
|
||||
@@ -719,3 +755,10 @@ keyboard-shortcuts-inhibit-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
|
||||
xdg-output-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xdg-output/xdg-output-unstable-v1.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||
xdg-output-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xdg-output/xdg-output-unstable-v1.xml
|
||||
xwayland-keyboard-grab-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
|
||||
xwayland-keyboard-grab-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml
|
||||
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
|
||||
|
||||
@@ -61,9 +61,11 @@ struct _MetaBackendClass
|
||||
|
||||
MetaIdleMonitor * (* create_idle_monitor) (MetaBackend *backend,
|
||||
int device_id);
|
||||
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend);
|
||||
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend,
|
||||
GError **error);
|
||||
MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend);
|
||||
MetaRenderer * (* create_renderer) (MetaBackend *backend);
|
||||
MetaRenderer * (* create_renderer) (MetaBackend *backend,
|
||||
GError **error);
|
||||
MetaInputSettings * (* create_input_settings) (MetaBackend *backend);
|
||||
|
||||
gboolean (* grab_device) (MetaBackend *backend,
|
||||
|
||||
@@ -197,7 +197,7 @@ meta_backend_monitors_changed (MetaBackend *backend)
|
||||
}
|
||||
}
|
||||
|
||||
meta_settings_update_ui_scaling_factor (priv->settings);
|
||||
meta_cursor_renderer_force_update (priv->cursor_renderer);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -337,6 +337,8 @@ on_device_removed (ClutterDeviceManager *device_manager,
|
||||
gboolean has_touchscreen, has_pointing_device;
|
||||
ClutterInputDeviceType device_type;
|
||||
|
||||
priv->current_device_id = 0;
|
||||
|
||||
device_type = clutter_input_device_get_device_type (device);
|
||||
has_touchscreen = check_has_slave_touchscreen (device_manager);
|
||||
|
||||
@@ -355,15 +357,6 @@ on_device_removed (ClutterDeviceManager *device_manager,
|
||||
}
|
||||
}
|
||||
|
||||
static MetaMonitorManager *
|
||||
create_monitor_manager (MetaBackend *backend)
|
||||
{
|
||||
if (g_getenv ("META_DUMMY_MONITORS"))
|
||||
return g_object_new (META_TYPE_MONITOR_MANAGER_DUMMY, NULL);
|
||||
|
||||
return META_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend);
|
||||
}
|
||||
|
||||
static void
|
||||
create_device_monitors (MetaBackend *backend,
|
||||
ClutterDeviceManager *device_manager)
|
||||
@@ -441,7 +434,7 @@ meta_backend_real_post_init (MetaBackend *backend)
|
||||
clutter_actor_realize (priv->stage);
|
||||
META_BACKEND_GET_CLASS (backend)->select_stage_events (backend);
|
||||
|
||||
priv->monitor_manager = create_monitor_manager (backend);
|
||||
meta_monitor_manager_setup (priv->monitor_manager);
|
||||
|
||||
meta_backend_sync_screen_size (backend);
|
||||
|
||||
@@ -579,6 +572,24 @@ experimental_features_changed (MetaSettings *settings,
|
||||
#endif /* HAVE_REMOTE_DESKTOP */
|
||||
}
|
||||
|
||||
static MetaMonitorManager *
|
||||
meta_backend_create_monitor_manager (MetaBackend *backend,
|
||||
GError **error)
|
||||
{
|
||||
if (g_getenv ("META_DUMMY_MONITORS"))
|
||||
return g_object_new (META_TYPE_MONITOR_MANAGER_DUMMY, NULL);
|
||||
|
||||
return META_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend,
|
||||
error);
|
||||
}
|
||||
|
||||
static MetaRenderer *
|
||||
meta_backend_create_renderer (MetaBackend *backend,
|
||||
GError **error)
|
||||
{
|
||||
return META_BACKEND_GET_CLASS (backend)->create_renderer (backend, error);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_backend_initable_init (GInitable *initable,
|
||||
GCancellable *cancellable,
|
||||
@@ -594,21 +605,20 @@ meta_backend_initable_init (GInitable *initable,
|
||||
|
||||
priv->egl = g_object_new (META_TYPE_EGL, NULL);
|
||||
|
||||
priv->renderer = META_BACKEND_GET_CLASS (backend)->create_renderer (backend);
|
||||
priv->orientation_manager = g_object_new (META_TYPE_ORIENTATION_MANAGER, NULL);
|
||||
|
||||
priv->monitor_manager = meta_backend_create_monitor_manager (backend, error);
|
||||
if (!priv->monitor_manager)
|
||||
return FALSE;
|
||||
|
||||
priv->renderer = meta_backend_create_renderer (backend, error);
|
||||
if (!priv->renderer)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
G_IO_ERROR_FAILED,
|
||||
"Failed to create MetaRenderer");
|
||||
return FALSE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
priv->cursor_tracker = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
|
||||
|
||||
priv->dnd = g_object_new (META_TYPE_DND, NULL);
|
||||
|
||||
priv->orientation_manager = g_object_new (META_TYPE_ORIENTATION_MANAGER, NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
80
src/backends/meta-crtc.c
Normal file
80
src/backends/meta-crtc.c
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "backends/meta-crtc.h"
|
||||
|
||||
G_DEFINE_TYPE (MetaCrtc, meta_crtc, G_TYPE_OBJECT)
|
||||
|
||||
G_DEFINE_TYPE (MetaCrtcMode, meta_crtc_mode, G_TYPE_OBJECT)
|
||||
|
||||
MetaGpu *
|
||||
meta_crtc_get_gpu (MetaCrtc *crtc)
|
||||
{
|
||||
return crtc->gpu;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_finalize (GObject *object)
|
||||
{
|
||||
MetaCrtc *crtc = META_CRTC (object);
|
||||
|
||||
if (crtc->driver_notify)
|
||||
crtc->driver_notify (crtc);
|
||||
|
||||
G_OBJECT_CLASS (meta_crtc_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_init (MetaCrtc *crtc)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_class_init (MetaCrtcClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = meta_crtc_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_mode_finalize (GObject *object)
|
||||
{
|
||||
MetaCrtcMode *crtc_mode = META_CRTC_MODE (object);
|
||||
|
||||
if (crtc_mode->driver_notify)
|
||||
crtc_mode->driver_notify (crtc_mode);
|
||||
|
||||
G_OBJECT_CLASS (meta_crtc_mode_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_mode_init (MetaCrtcMode *crtc_mode)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_crtc_mode_class_init (MetaCrtcModeClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = meta_crtc_mode_finalize;
|
||||
}
|
||||
98
src/backends/meta-crtc.h
Normal file
98
src/backends/meta-crtc.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_CRTC_H
|
||||
#define META_CRTC_H
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "backends/meta-gpu.h"
|
||||
|
||||
/* Same as KMS mode flags and X11 randr flags */
|
||||
typedef enum _MetaCrtcModeFlag
|
||||
{
|
||||
META_CRTC_MODE_FLAG_NONE = 0,
|
||||
META_CRTC_MODE_FLAG_PHSYNC = (1 << 0),
|
||||
META_CRTC_MODE_FLAG_NHSYNC = (1 << 1),
|
||||
META_CRTC_MODE_FLAG_PVSYNC = (1 << 2),
|
||||
META_CRTC_MODE_FLAG_NVSYNC = (1 << 3),
|
||||
META_CRTC_MODE_FLAG_INTERLACE = (1 << 4),
|
||||
META_CRTC_MODE_FLAG_DBLSCAN = (1 << 5),
|
||||
META_CRTC_MODE_FLAG_CSYNC = (1 << 6),
|
||||
META_CRTC_MODE_FLAG_PCSYNC = (1 << 7),
|
||||
META_CRTC_MODE_FLAG_NCSYNC = (1 << 8),
|
||||
META_CRTC_MODE_FLAG_HSKEW = (1 << 9),
|
||||
META_CRTC_MODE_FLAG_BCAST = (1 << 10),
|
||||
META_CRTC_MODE_FLAG_PIXMUX = (1 << 11),
|
||||
META_CRTC_MODE_FLAG_DBLCLK = (1 << 12),
|
||||
META_CRTC_MODE_FLAG_CLKDIV2 = (1 << 13),
|
||||
|
||||
META_CRTC_MODE_FLAG_MASK = 0x3fff
|
||||
} MetaCrtcModeFlag;
|
||||
|
||||
struct _MetaCrtc
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
MetaGpu *gpu;
|
||||
|
||||
glong crtc_id;
|
||||
MetaRectangle rect;
|
||||
MetaCrtcMode *current_mode;
|
||||
MetaMonitorTransform transform;
|
||||
unsigned int all_transforms;
|
||||
|
||||
MetaLogicalMonitor *logical_monitor;
|
||||
|
||||
/* Used when changing configuration */
|
||||
gboolean is_dirty;
|
||||
|
||||
/* Used by cursor renderer backend */
|
||||
void *cursor_renderer_private;
|
||||
|
||||
gpointer driver_private;
|
||||
GDestroyNotify driver_notify;
|
||||
};
|
||||
|
||||
struct _MetaCrtcMode
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
/* The low-level ID of this mode, used to apply back configuration */
|
||||
glong mode_id;
|
||||
char *name;
|
||||
|
||||
int width;
|
||||
int height;
|
||||
float refresh_rate;
|
||||
MetaCrtcModeFlag flags;
|
||||
|
||||
gpointer driver_private;
|
||||
GDestroyNotify driver_notify;
|
||||
};
|
||||
|
||||
#define META_TYPE_CRTC (meta_crtc_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaCrtc, meta_crtc, META, CRTC, GObject)
|
||||
|
||||
#define META_TYPE_CRTC_MODE (meta_crtc_mode_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaCrtcMode, meta_crtc_mode, META, CRTC_MODE, GObject)
|
||||
|
||||
MetaGpu * meta_crtc_get_gpu (MetaCrtc *crtc);
|
||||
|
||||
#endif /* META_CRTC_H */
|
||||
@@ -70,7 +70,7 @@ queue_redraw (MetaCursorRenderer *renderer,
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
ClutterActor *stage = meta_backend_get_stage (backend);
|
||||
CoglTexture *texture;
|
||||
ClutterRect rect = { 0 };
|
||||
ClutterRect rect = CLUTTER_RECT_INIT_ZERO;
|
||||
|
||||
if (cursor_sprite)
|
||||
rect = meta_cursor_renderer_calculate_rect (renderer, cursor_sprite);
|
||||
@@ -173,7 +173,7 @@ meta_cursor_renderer_calculate_rect (MetaCursorRenderer *renderer,
|
||||
|
||||
texture = meta_cursor_sprite_get_cogl_texture (cursor_sprite);
|
||||
if (!texture)
|
||||
return (ClutterRect) { 0 };
|
||||
return (ClutterRect) CLUTTER_RECT_INIT_ZERO;
|
||||
|
||||
meta_cursor_sprite_get_hotspot (cursor_sprite, &hot_x, &hot_y);
|
||||
texture_scale = meta_cursor_sprite_get_texture_scale (cursor_sprite);
|
||||
|
||||
@@ -32,6 +32,7 @@ struct _MetaCursorTracker {
|
||||
|
||||
gboolean is_showing;
|
||||
|
||||
MetaCursorSprite *effective_cursor; /* May be NULL when hidden */
|
||||
MetaCursorSprite *displayed_cursor;
|
||||
|
||||
/* Wayland clients can set a NULL buffer as their cursor
|
||||
|
||||
@@ -53,47 +53,75 @@ enum {
|
||||
|
||||
static guint signals[LAST_SIGNAL];
|
||||
|
||||
static MetaCursorSprite *
|
||||
get_displayed_cursor (MetaCursorTracker *tracker)
|
||||
static void
|
||||
cursor_texture_updated (MetaCursorSprite *cursor,
|
||||
MetaCursorTracker *tracker)
|
||||
{
|
||||
g_signal_emit (tracker, signals[CURSOR_CHANGED], 0);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
update_displayed_cursor (MetaCursorTracker *tracker)
|
||||
{
|
||||
MetaDisplay *display = meta_get_display ();
|
||||
MetaCursorSprite *cursor = NULL;
|
||||
|
||||
if (!tracker->is_showing)
|
||||
return NULL;
|
||||
if (display && meta_display_windows_are_interactable (display) &&
|
||||
tracker->has_window_cursor)
|
||||
cursor = tracker->window_cursor;
|
||||
else
|
||||
cursor = tracker->root_cursor;
|
||||
|
||||
if (meta_display_windows_are_interactable (display))
|
||||
if (tracker->displayed_cursor == cursor)
|
||||
return FALSE;
|
||||
|
||||
if (tracker->displayed_cursor)
|
||||
{
|
||||
if (tracker->has_window_cursor)
|
||||
return tracker->window_cursor;
|
||||
g_signal_handlers_disconnect_by_func (tracker->displayed_cursor,
|
||||
cursor_texture_updated,
|
||||
tracker);
|
||||
}
|
||||
|
||||
return tracker->root_cursor;
|
||||
g_set_object (&tracker->displayed_cursor, cursor);
|
||||
|
||||
if (cursor)
|
||||
{
|
||||
g_signal_connect (cursor, "texture-changed",
|
||||
G_CALLBACK (cursor_texture_updated), tracker);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
update_effective_cursor (MetaCursorTracker *tracker)
|
||||
{
|
||||
MetaCursorSprite *cursor = NULL;
|
||||
|
||||
if (tracker->is_showing)
|
||||
cursor = tracker->displayed_cursor;
|
||||
|
||||
return g_set_object (&tracker->effective_cursor, cursor);
|
||||
}
|
||||
|
||||
static void
|
||||
update_displayed_cursor (MetaCursorTracker *tracker)
|
||||
change_cursor_renderer (MetaCursorTracker *tracker)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
MetaCursorRenderer *cursor_renderer =
|
||||
meta_backend_get_cursor_renderer (backend);
|
||||
|
||||
meta_cursor_renderer_set_cursor (cursor_renderer, tracker->displayed_cursor);
|
||||
meta_cursor_renderer_set_cursor (cursor_renderer, tracker->effective_cursor);
|
||||
}
|
||||
|
||||
static void
|
||||
sync_cursor (MetaCursorTracker *tracker)
|
||||
{
|
||||
MetaCursorSprite *displayed_cursor = get_displayed_cursor (tracker);
|
||||
if (update_displayed_cursor (tracker))
|
||||
g_signal_emit (tracker, signals[CURSOR_CHANGED], 0);
|
||||
|
||||
if (tracker->displayed_cursor == displayed_cursor)
|
||||
return;
|
||||
|
||||
g_clear_object (&tracker->displayed_cursor);
|
||||
if (displayed_cursor)
|
||||
tracker->displayed_cursor = g_object_ref (displayed_cursor);
|
||||
|
||||
update_displayed_cursor (tracker);
|
||||
g_signal_emit (tracker, signals[CURSOR_CHANGED], 0);
|
||||
if (update_effective_cursor (tracker))
|
||||
change_cursor_renderer (tracker);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -107,6 +135,8 @@ meta_cursor_tracker_finalize (GObject *object)
|
||||
{
|
||||
MetaCursorTracker *self = META_CURSOR_TRACKER (object);
|
||||
|
||||
if (self->effective_cursor)
|
||||
g_object_unref (self->effective_cursor);
|
||||
if (self->displayed_cursor)
|
||||
g_object_unref (self->displayed_cursor);
|
||||
if (self->root_cursor)
|
||||
@@ -282,9 +312,14 @@ meta_cursor_tracker_get_sprite (MetaCursorTracker *tracker)
|
||||
}
|
||||
|
||||
if (cursor_sprite)
|
||||
return meta_cursor_sprite_get_cogl_texture (cursor_sprite);
|
||||
{
|
||||
meta_cursor_sprite_realize_texture (cursor_sprite);
|
||||
return meta_cursor_sprite_get_cogl_texture (cursor_sprite);
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
enum {
|
||||
PREPARE_AT,
|
||||
TEXTURE_CHANGED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
@@ -228,6 +229,8 @@ meta_cursor_sprite_load_from_theme (MetaCursorSprite *self)
|
||||
|
||||
g_assert (self->cursor != META_CURSOR_NONE);
|
||||
|
||||
self->theme_dirty = FALSE;
|
||||
|
||||
/* We might be reloading with a different scale. If so clear the old data. */
|
||||
if (self->xcursor_images)
|
||||
{
|
||||
@@ -243,8 +246,6 @@ meta_cursor_sprite_load_from_theme (MetaCursorSprite *self)
|
||||
|
||||
image = meta_cursor_sprite_get_current_frame_image (self);
|
||||
meta_cursor_sprite_load_from_xcursor_image (self, image);
|
||||
|
||||
self->theme_dirty = FALSE;
|
||||
}
|
||||
|
||||
MetaCursorSprite *
|
||||
@@ -266,11 +267,18 @@ meta_cursor_sprite_set_texture (MetaCursorSprite *self,
|
||||
int hot_x,
|
||||
int hot_y)
|
||||
{
|
||||
if (self->texture == COGL_TEXTURE_2D (texture) &&
|
||||
self->hot_x == hot_x &&
|
||||
self->hot_y == hot_y)
|
||||
return;
|
||||
|
||||
g_clear_pointer (&self->texture, cogl_object_unref);
|
||||
if (texture)
|
||||
self->texture = cogl_object_ref (texture);
|
||||
self->hot_x = hot_x;
|
||||
self->hot_y = hot_y;
|
||||
|
||||
g_signal_emit (self, signals[TEXTURE_CHANGED], 0);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -365,4 +373,10 @@ meta_cursor_sprite_class_init (MetaCursorSpriteClass *klass)
|
||||
G_TYPE_NONE, 2,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_INT);
|
||||
signals[TEXTURE_CHANGED] = g_signal_new ("texture-changed",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ gboolean meta_dnd_handle_xdnd_event (MetaBackend *backend,
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
void meta_dnd_wayland_handle_begin_modal (MetaCompositor *compositor);
|
||||
void meta_dnd_wayland_handle_end_modal (MetaCompositor *compositor);
|
||||
#endif
|
||||
|
||||
#endif /* META_DND_PRIVATE_H */
|
||||
|
||||
@@ -160,11 +160,11 @@ set_egl_error (GError **error)
|
||||
error_str);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
extensions_string_has_extensions_valist (const char *extensions_str,
|
||||
char ***missing_extensions,
|
||||
char *first_extension,
|
||||
va_list var_args)
|
||||
gboolean
|
||||
meta_extensions_string_has_extensions_valist (const char *extensions_str,
|
||||
char ***missing_extensions,
|
||||
char *first_extension,
|
||||
va_list var_args)
|
||||
{
|
||||
char **extensions;
|
||||
char *extension;
|
||||
@@ -222,10 +222,11 @@ meta_egl_has_extensions (MetaEgl *egl,
|
||||
}
|
||||
|
||||
va_start (var_args, first_extension);
|
||||
has_extensions = extensions_string_has_extensions_valist (extensions_str,
|
||||
missing_extensions,
|
||||
first_extension,
|
||||
var_args);
|
||||
has_extensions =
|
||||
meta_extensions_string_has_extensions_valist (extensions_str,
|
||||
missing_extensions,
|
||||
first_extension,
|
||||
var_args);
|
||||
va_end (var_args);
|
||||
|
||||
return has_extensions;
|
||||
@@ -245,6 +246,25 @@ meta_egl_initialize (MetaEgl *egl,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gpointer
|
||||
meta_egl_get_proc_address (MetaEgl *egl,
|
||||
const char *procname,
|
||||
GError **error)
|
||||
{
|
||||
gpointer func;
|
||||
|
||||
func = (gpointer) eglGetProcAddress (procname);
|
||||
if (!func)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"Could not load symbol '%s': Not found",
|
||||
procname);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return func;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_choose_config (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
@@ -289,6 +309,27 @@ meta_egl_choose_config (MetaEgl *egl,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
EGLSurface
|
||||
meta_egl_create_window_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLConfig config,
|
||||
EGLNativeWindowType native_window_type,
|
||||
const EGLint *attrib_list,
|
||||
GError **error)
|
||||
{
|
||||
EGLSurface surface;
|
||||
|
||||
surface = eglCreateWindowSurface (display, config,
|
||||
native_window_type, attrib_list);
|
||||
if (surface == EGL_NO_SURFACE)
|
||||
{
|
||||
set_egl_error (error);
|
||||
return EGL_NO_SURFACE;
|
||||
}
|
||||
|
||||
return surface;
|
||||
}
|
||||
|
||||
EGLSurface
|
||||
meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
@@ -308,6 +349,21 @@ meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
||||
return surface;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_destroy_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface surface,
|
||||
GError **error)
|
||||
{
|
||||
if (!eglDestroySurface (display, surface))
|
||||
{
|
||||
set_egl_error (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_egl_proc_valid_real (void *proc,
|
||||
const char *proc_name,
|
||||
@@ -352,6 +408,55 @@ meta_egl_get_platform_display (MetaEgl *egl,
|
||||
return display;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_terminate (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
GError **error)
|
||||
{
|
||||
if (!eglTerminate (display))
|
||||
{
|
||||
set_egl_error (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
EGLContext
|
||||
meta_egl_create_context (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLConfig config,
|
||||
EGLContext share_context,
|
||||
const EGLint *attrib_list,
|
||||
GError **error)
|
||||
{
|
||||
EGLContext context;
|
||||
|
||||
context = eglCreateContext (display, config, share_context, attrib_list);
|
||||
if (context == EGL_NO_CONTEXT)
|
||||
{
|
||||
set_egl_error (error);
|
||||
return EGL_NO_CONTEXT;
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_destroy_context (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLContext context,
|
||||
GError **error)
|
||||
{
|
||||
if (!eglDestroyContext (display, context))
|
||||
{
|
||||
set_egl_error (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
EGLImageKHR
|
||||
meta_egl_create_image (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
@@ -395,6 +500,38 @@ meta_egl_destroy_image (MetaEgl *egl,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_make_current (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface draw,
|
||||
EGLSurface read,
|
||||
EGLContext context,
|
||||
GError **error)
|
||||
{
|
||||
if (!eglMakeCurrent (display, draw, read, context))
|
||||
{
|
||||
set_egl_error (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_swap_buffers (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface surface,
|
||||
GError **error)
|
||||
{
|
||||
if (!eglSwapBuffers (display, surface))
|
||||
{
|
||||
set_egl_error (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_egl_query_wayland_buffer (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
@@ -479,10 +616,11 @@ meta_egl_egl_device_has_extensions (MetaEgl *egl,
|
||||
}
|
||||
|
||||
va_start (var_args, first_extension);
|
||||
has_extensions = extensions_string_has_extensions_valist (extensions_str,
|
||||
missing_extensions,
|
||||
first_extension,
|
||||
var_args);
|
||||
has_extensions =
|
||||
meta_extensions_string_has_extensions_valist (extensions_str,
|
||||
missing_extensions,
|
||||
first_extension,
|
||||
var_args);
|
||||
va_end (var_args);
|
||||
|
||||
return has_extensions;
|
||||
|
||||
@@ -36,6 +36,12 @@ G_DECLARE_FINAL_TYPE (MetaEgl, meta_egl, META, EGL, GObject)
|
||||
|
||||
GQuark meta_egl_error_quark (void);
|
||||
|
||||
gboolean
|
||||
meta_extensions_string_has_extensions_valist (const char *extensions_str,
|
||||
char ***missing_extensions,
|
||||
char *first_extension,
|
||||
va_list var_args);
|
||||
|
||||
gboolean meta_egl_has_extensions (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
char ***missing_extensions,
|
||||
@@ -46,12 +52,28 @@ gboolean meta_egl_initialize (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
GError **error);
|
||||
|
||||
gpointer meta_egl_get_proc_address (MetaEgl *egl,
|
||||
const char *procname,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_choose_config (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
const EGLint *attrib_list,
|
||||
EGLConfig *chosen_config,
|
||||
GError **error);
|
||||
|
||||
EGLContext meta_egl_create_context (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLConfig config,
|
||||
EGLContext share_context,
|
||||
const EGLint *attrib_list,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_destroy_context (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLContext context,
|
||||
GError **error);
|
||||
|
||||
EGLImageKHR meta_egl_create_image (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLContext context,
|
||||
@@ -65,18 +87,46 @@ gboolean meta_egl_destroy_image (MetaEgl *egl,
|
||||
EGLImageKHR image,
|
||||
GError **error);
|
||||
|
||||
EGLSurface meta_egl_create_window_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLConfig config,
|
||||
EGLNativeWindowType native_window_type,
|
||||
const EGLint *attrib_list,
|
||||
GError **error);
|
||||
|
||||
EGLSurface meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLConfig config,
|
||||
const EGLint *attrib_list,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_destroy_surface (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface surface,
|
||||
GError **error);
|
||||
|
||||
EGLDisplay meta_egl_get_platform_display (MetaEgl *egl,
|
||||
EGLenum platform,
|
||||
void *native_display,
|
||||
const EGLint *attrib_list,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_terminate (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_make_current (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface draw,
|
||||
EGLSurface read,
|
||||
EGLContext context,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_swap_buffers (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
EGLSurface surface,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_egl_query_wayland_buffer (MetaEgl *egl,
|
||||
EGLDisplay display,
|
||||
struct wl_resource *buffer,
|
||||
|
||||
36
src/backends/meta-gles3-table.h
Normal file
36
src/backends/meta-gles3-table.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef META_GLES3_TABLE_H
|
||||
#define META_GLES3_TABLE_H
|
||||
|
||||
#include <GLES2/gl2.h>
|
||||
#include <GLES2/gl2ext.h>
|
||||
#include <GLES3/gl3.h>
|
||||
|
||||
typedef struct _MetaGles3Table
|
||||
{
|
||||
void (* glEGLImageTargetTexture2DOES) (GLenum target,
|
||||
GLeglImageOES image);
|
||||
} MetaGles3Table;
|
||||
|
||||
#endif /* META_GLES3_TABLE */
|
||||
163
src/backends/meta-gles3.c
Normal file
163
src/backends/meta-gles3.c
Normal file
@@ -0,0 +1,163 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "backends/meta-gles3.h"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
#include "backends/meta-gles3-table.h"
|
||||
|
||||
struct _MetaGles3
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
MetaEgl *egl;
|
||||
|
||||
MetaGles3Table table;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaGles3, meta_gles3, G_TYPE_OBJECT)
|
||||
|
||||
MetaGles3Table *
|
||||
meta_gles3_get_table (MetaGles3 *gles3)
|
||||
{
|
||||
return &gles3->table;
|
||||
}
|
||||
|
||||
void
|
||||
meta_gles3_ensure_loaded (MetaGles3 *gles3,
|
||||
gpointer *func,
|
||||
const char *name)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (*func)
|
||||
return;
|
||||
|
||||
*func = meta_egl_get_proc_address (gles3->egl, name, &error);
|
||||
if (!*func)
|
||||
g_error ("Failed to load GLES3 symbol: %s", error->message);
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_gl_error_str (GLenum gl_error)
|
||||
{
|
||||
switch (gl_error)
|
||||
{
|
||||
case GL_NO_ERROR:
|
||||
return "No error has been recorded.";
|
||||
case GL_INVALID_ENUM:
|
||||
return "An unacceptable value is specified for an enumerated argument.";
|
||||
case GL_INVALID_VALUE:
|
||||
return "A numeric argument is out of range.";
|
||||
case GL_INVALID_OPERATION:
|
||||
return "The specified operation is not allowed in the current state.";
|
||||
case GL_INVALID_FRAMEBUFFER_OPERATION:
|
||||
return "The framebuffer object is not complete.";
|
||||
case GL_OUT_OF_MEMORY:
|
||||
return "There is not enough memory left to execute the command.";
|
||||
default:
|
||||
return "Unknown error";
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_gles3_clear_error (MetaGles3 *gles3)
|
||||
{
|
||||
while (TRUE)
|
||||
{
|
||||
GLenum gl_error = glGetError ();
|
||||
|
||||
if (gl_error == GL_NO_ERROR)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_gles3_validate (MetaGles3 *gles3,
|
||||
GError **error)
|
||||
{
|
||||
GLenum gl_error;
|
||||
|
||||
gl_error = glGetError ();
|
||||
if (gl_error != GL_NO_ERROR)
|
||||
{
|
||||
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
get_gl_error_str (gl_error));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_gles3_has_extensions (MetaGles3 *gles3,
|
||||
char ***missing_extensions,
|
||||
char *first_extension,
|
||||
...)
|
||||
{
|
||||
va_list var_args;
|
||||
const char *extensions_str;
|
||||
gboolean has_extensions;
|
||||
|
||||
extensions_str = (const char *) glGetString (GL_EXTENSIONS);
|
||||
if (!extensions_str)
|
||||
{
|
||||
g_warning ("Failed to get string: %s", get_gl_error_str (glGetError ()));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
va_start (var_args, first_extension);
|
||||
has_extensions =
|
||||
meta_extensions_string_has_extensions_valist (extensions_str,
|
||||
missing_extensions,
|
||||
first_extension,
|
||||
var_args);
|
||||
va_end (var_args);
|
||||
|
||||
return has_extensions;
|
||||
}
|
||||
|
||||
MetaGles3 *
|
||||
meta_gles3_new (MetaEgl *egl)
|
||||
{
|
||||
MetaGles3 *gles3;
|
||||
|
||||
gles3 = g_object_new (META_TYPE_GLES3, NULL);
|
||||
gles3->egl = egl;
|
||||
|
||||
return gles3;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gles3_init (MetaGles3 *gles3)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gles3_class_init (MetaGles3Class *klass)
|
||||
{
|
||||
}
|
||||
83
src/backends/meta-gles3.h
Normal file
83
src/backends/meta-gles3.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef META_GLES3_H
|
||||
#define META_GLES3_H
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "backends/meta-egl.h"
|
||||
|
||||
typedef struct _MetaGles3Table MetaGles3Table;
|
||||
|
||||
#define META_TYPE_GLES3 (meta_gles3_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaGles3, meta_gles3, META, GLES3, GObject)
|
||||
|
||||
MetaGles3Table * meta_gles3_get_table (MetaGles3 *gles3);
|
||||
|
||||
void meta_gles3_clear_error (MetaGles3 *gles3);
|
||||
|
||||
gboolean meta_gles3_validate (MetaGles3 *gles3,
|
||||
GError **error);
|
||||
|
||||
void meta_gles3_ensure_loaded (MetaGles3 *gles,
|
||||
gpointer *func,
|
||||
const char *name);
|
||||
|
||||
gboolean meta_gles3_has_extensions (MetaGles3 *gles3,
|
||||
char ***missing_extensions,
|
||||
char *first_extension,
|
||||
...);
|
||||
|
||||
MetaGles3 * meta_gles3_new (MetaEgl *egl);
|
||||
|
||||
#define GLBAS(gles3, func, args) \
|
||||
{ \
|
||||
GError *_error = NULL; \
|
||||
\
|
||||
func args; \
|
||||
\
|
||||
if (!meta_gles3_validate (gles3, &_error)) \
|
||||
{ \
|
||||
g_warning ("%s %s failed: %s", #func, #args, _error->message); \
|
||||
g_error_free (_error); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define GLEXT(gles3, func, args) \
|
||||
{ \
|
||||
GError *_error = NULL; \
|
||||
MetaGles3Table *table; \
|
||||
\
|
||||
table = meta_gles3_get_table (gles3); \
|
||||
meta_gles3_ensure_loaded (gles3, (gpointer *) &table->func, #func); \
|
||||
\
|
||||
table->func args; \
|
||||
\
|
||||
if (!meta_gles3_validate (gles3, &_error)) \
|
||||
{ \
|
||||
g_warning ("%s %s failed: %s", #func, #args, _error->message); \
|
||||
g_error_free (_error); \
|
||||
} \
|
||||
}
|
||||
|
||||
#endif /* META_GLES3_H */
|
||||
224
src/backends/meta-gpu.c
Normal file
224
src/backends/meta-gpu.c
Normal file
@@ -0,0 +1,224 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "backends/meta-gpu.h"
|
||||
|
||||
#include "backends/meta-output.h"
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
|
||||
PROP_MONITOR_MANAGER,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
static GParamSpec *obj_props[PROP_LAST];
|
||||
|
||||
typedef struct _MetaGpuPrivate
|
||||
{
|
||||
MetaMonitorManager *monitor_manager;
|
||||
|
||||
GList *outputs;
|
||||
GList *crtcs;
|
||||
GList *modes;
|
||||
} MetaGpuPrivate;
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (MetaGpu, meta_gpu, G_TYPE_OBJECT)
|
||||
|
||||
gboolean
|
||||
meta_gpu_has_hotplug_mode_update (MetaGpu *gpu)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
GList *l;
|
||||
|
||||
for (l = priv->outputs; l; l = l->next)
|
||||
{
|
||||
MetaOutput *output = l->data;
|
||||
|
||||
if (output->hotplug_mode_update)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_gpu_read_current (MetaGpu *gpu,
|
||||
GError **error)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
gboolean ret;
|
||||
GList *old_outputs;
|
||||
GList *old_crtcs;
|
||||
GList *old_modes;
|
||||
|
||||
/* TODO: Get rid of this when objects incref:s what they need instead */
|
||||
old_outputs = priv->outputs;
|
||||
old_crtcs = priv->crtcs;
|
||||
old_modes = priv->modes;
|
||||
|
||||
ret = META_GPU_GET_CLASS (gpu)->read_current (gpu, error);
|
||||
|
||||
g_list_free_full (old_outputs, g_object_unref);
|
||||
g_list_free_full (old_modes, g_object_unref);
|
||||
g_list_free_full (old_crtcs, g_object_unref);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
MetaMonitorManager *
|
||||
meta_gpu_get_monitor_manager (MetaGpu *gpu)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
return priv->monitor_manager;
|
||||
}
|
||||
|
||||
GList *
|
||||
meta_gpu_get_outputs (MetaGpu *gpu)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
return priv->outputs;
|
||||
}
|
||||
|
||||
GList *
|
||||
meta_gpu_get_crtcs (MetaGpu *gpu)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
return priv->crtcs;
|
||||
}
|
||||
|
||||
GList *
|
||||
meta_gpu_get_modes (MetaGpu *gpu)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
return priv->modes;
|
||||
}
|
||||
|
||||
void
|
||||
meta_gpu_take_outputs (MetaGpu *gpu,
|
||||
GList *outputs)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
priv->outputs = outputs;
|
||||
}
|
||||
|
||||
void
|
||||
meta_gpu_take_crtcs (MetaGpu *gpu,
|
||||
GList *crtcs)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
priv->crtcs = crtcs;
|
||||
}
|
||||
|
||||
void
|
||||
meta_gpu_take_modes (MetaGpu *gpu,
|
||||
GList *modes)
|
||||
{
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
priv->modes = modes;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaGpu *gpu = META_GPU (object);
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MONITOR_MANAGER:
|
||||
priv->monitor_manager = g_value_get_object (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
MetaGpu *gpu = META_GPU (object);
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MONITOR_MANAGER:
|
||||
g_value_set_object (value, priv->monitor_manager);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_finalize (GObject *object)
|
||||
{
|
||||
MetaGpu *gpu = META_GPU (object);
|
||||
MetaGpuPrivate *priv = meta_gpu_get_instance_private (gpu);
|
||||
|
||||
g_list_free_full (priv->outputs, g_object_unref);
|
||||
g_list_free_full (priv->modes, g_object_unref);
|
||||
g_list_free_full (priv->crtcs, g_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (meta_gpu_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_init (MetaGpu *gpu)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_class_init (MetaGpuClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->set_property = meta_gpu_set_property;
|
||||
object_class->get_property = meta_gpu_get_property;
|
||||
object_class->finalize = meta_gpu_finalize;
|
||||
|
||||
obj_props[PROP_MONITOR_MANAGER] =
|
||||
g_param_spec_object ("monitor-manager",
|
||||
"monitor-manager",
|
||||
"MetaMonitorManager",
|
||||
META_TYPE_MONITOR_MANAGER,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
||||
}
|
||||
66
src/backends/meta-gpu.h
Normal file
66
src/backends/meta-gpu.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2017 Red Hat
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef META_GPU_H
|
||||
#define META_GPU_H
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "backends/meta-monitor-manager-private.h"
|
||||
|
||||
#define META_TYPE_GPU (meta_gpu_get_type ())
|
||||
G_DECLARE_DERIVABLE_TYPE (MetaGpu, meta_gpu, META, GPU, GObject)
|
||||
|
||||
struct _MetaGpuClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
gboolean (* read_current) (MetaGpu *gpu,
|
||||
GError **error);
|
||||
};
|
||||
|
||||
int meta_gpu_get_kms_fd (MetaGpu *gpu);
|
||||
|
||||
const char * meta_gpu_get_kms_file_path (MetaGpu *gpu);
|
||||
|
||||
gboolean meta_gpu_read_current (MetaGpu *gpu,
|
||||
GError **error);
|
||||
|
||||
gboolean meta_gpu_has_hotplug_mode_update (MetaGpu *gpu);
|
||||
|
||||
MetaMonitorManager * meta_gpu_get_monitor_manager (MetaGpu *gpu);
|
||||
|
||||
GList * meta_gpu_get_outputs (MetaGpu *gpu);
|
||||
|
||||
GList * meta_gpu_get_crtcs (MetaGpu *gpu);
|
||||
|
||||
GList * meta_gpu_get_modes (MetaGpu *gpu);
|
||||
|
||||
void meta_gpu_take_outputs (MetaGpu *gpu,
|
||||
GList *outputs);
|
||||
|
||||
void meta_gpu_take_crtcs (MetaGpu *gpu,
|
||||
GList *crtcs);
|
||||
|
||||
void meta_gpu_take_modes (MetaGpu *gpu,
|
||||
GList *modes);
|
||||
|
||||
#endif /* META_GPU_H */
|
||||
@@ -111,7 +111,8 @@ struct _MetaInputSettingsClass
|
||||
ClutterInputDevice *device,
|
||||
ClutterInputDeviceTool *tool,
|
||||
GDesktopStylusButtonAction primary,
|
||||
GDesktopStylusButtonAction secondary);
|
||||
GDesktopStylusButtonAction secondary,
|
||||
GDesktopStylusButtonAction tertiary);
|
||||
gboolean (* has_two_finger_scroll) (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device);
|
||||
};
|
||||
|
||||
@@ -41,6 +41,16 @@ static GQuark quark_tool_settings = 0;
|
||||
|
||||
typedef struct _MetaInputSettingsPrivate MetaInputSettingsPrivate;
|
||||
typedef struct _DeviceMappingInfo DeviceMappingInfo;
|
||||
typedef struct _CurrentToolInfo CurrentToolInfo;
|
||||
|
||||
struct _CurrentToolInfo
|
||||
{
|
||||
MetaInputSettings *input_settings;
|
||||
ClutterInputDevice *device;
|
||||
ClutterInputDeviceTool *tool;
|
||||
GSettings *settings;
|
||||
guint changed_id;
|
||||
};
|
||||
|
||||
struct _DeviceMappingInfo
|
||||
{
|
||||
@@ -65,9 +75,12 @@ struct _MetaInputSettingsPrivate
|
||||
GSettings *trackball_settings;
|
||||
GSettings *keyboard_settings;
|
||||
GSettings *gsd_settings;
|
||||
GSettings *a11y_settings;
|
||||
|
||||
GHashTable *mappable_devices;
|
||||
|
||||
GHashTable *current_tools;
|
||||
|
||||
ClutterVirtualInputDevice *virtual_pad_keyboard;
|
||||
|
||||
#ifdef HAVE_LIBWACOM
|
||||
@@ -143,7 +156,9 @@ meta_input_settings_dispose (GObject *object)
|
||||
g_clear_object (&priv->trackball_settings);
|
||||
g_clear_object (&priv->keyboard_settings);
|
||||
g_clear_object (&priv->gsd_settings);
|
||||
g_clear_object (&priv->a11y_settings);
|
||||
g_clear_pointer (&priv->mappable_devices, g_hash_table_unref);
|
||||
g_clear_pointer (&priv->current_tools, g_hash_table_unref);
|
||||
|
||||
if (priv->monitors_changed_id && priv->monitor_manager)
|
||||
{
|
||||
@@ -770,12 +785,11 @@ update_keyboard_repeat (MetaInputSettings *input_settings)
|
||||
repeat, delay, interval);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
logical_monitor_has_monitor (MetaMonitorManager *monitor_manager,
|
||||
MetaLogicalMonitor *logical_monitor,
|
||||
const char *vendor,
|
||||
const char *product,
|
||||
const char *serial)
|
||||
static MetaMonitor *
|
||||
logical_monitor_find_monitor (MetaLogicalMonitor *logical_monitor,
|
||||
const char *vendor,
|
||||
const char *product,
|
||||
const char *serial)
|
||||
{
|
||||
GList *monitors;
|
||||
GList *l;
|
||||
@@ -788,19 +802,22 @@ logical_monitor_has_monitor (MetaMonitorManager *monitor_manager,
|
||||
if (g_strcmp0 (meta_monitor_get_vendor (monitor), vendor) == 0 &&
|
||||
g_strcmp0 (meta_monitor_get_product (monitor), product) == 0 &&
|
||||
g_strcmp0 (meta_monitor_get_serial (monitor), serial) == 0)
|
||||
return TRUE;
|
||||
return monitor;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static MetaLogicalMonitor *
|
||||
meta_input_settings_find_logical_monitor (MetaInputSettings *input_settings,
|
||||
GSettings *settings,
|
||||
ClutterInputDevice *device)
|
||||
static void
|
||||
meta_input_settings_find_monitor (MetaInputSettings *input_settings,
|
||||
GSettings *settings,
|
||||
ClutterInputDevice *device,
|
||||
MetaMonitor **out_monitor,
|
||||
MetaLogicalMonitor **out_logical_monitor)
|
||||
{
|
||||
MetaInputSettingsPrivate *priv;
|
||||
MetaMonitorManager *monitor_manager;
|
||||
MetaMonitor *monitor;
|
||||
guint n_values;
|
||||
GList *logical_monitors;
|
||||
GList *l;
|
||||
@@ -815,11 +832,11 @@ meta_input_settings_find_logical_monitor (MetaInputSettings *input_settings,
|
||||
g_warning ("EDID configuration for device '%s' "
|
||||
"is incorrect, must have 3 values",
|
||||
clutter_input_device_get_device_name (device));
|
||||
return NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!*edid[0] && !*edid[1] && !*edid[2])
|
||||
return NULL;
|
||||
goto out;
|
||||
|
||||
monitor_manager = priv->monitor_manager;
|
||||
logical_monitors =
|
||||
@@ -828,15 +845,20 @@ meta_input_settings_find_logical_monitor (MetaInputSettings *input_settings,
|
||||
{
|
||||
MetaLogicalMonitor *logical_monitor = l->data;
|
||||
|
||||
if (logical_monitor_has_monitor (monitor_manager,
|
||||
logical_monitor,
|
||||
edid[0],
|
||||
edid[1],
|
||||
edid[2]))
|
||||
return logical_monitor;
|
||||
monitor = logical_monitor_find_monitor (logical_monitor,
|
||||
edid[0], edid[1], edid[2]);
|
||||
if (monitor)
|
||||
{
|
||||
if (out_monitor)
|
||||
*out_monitor = monitor;
|
||||
if (out_logical_monitor)
|
||||
*out_logical_monitor = logical_monitor;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
out:
|
||||
g_strfreev (edid);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -872,9 +894,8 @@ update_tablet_keep_aspect (MetaInputSettings *input_settings,
|
||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
||||
{
|
||||
keep_aspect = g_settings_get_boolean (settings, "keep-aspect");
|
||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
||||
settings,
|
||||
device);
|
||||
meta_input_settings_find_monitor (input_settings, settings, device,
|
||||
NULL, &logical_monitor);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -893,7 +914,8 @@ update_device_display (MetaInputSettings *input_settings,
|
||||
MetaInputSettingsClass *input_settings_class;
|
||||
MetaInputSettingsPrivate *priv;
|
||||
gfloat matrix[6] = { 1, 0, 0, 0, 1, 0 };
|
||||
MetaLogicalMonitor *logical_monitor;
|
||||
MetaMonitor *monitor = NULL;
|
||||
MetaLogicalMonitor *logical_monitor = NULL;
|
||||
|
||||
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
|
||||
clutter_input_device_get_device_type (device) != CLUTTER_PEN_DEVICE &&
|
||||
@@ -908,15 +930,12 @@ update_device_display (MetaInputSettings *input_settings,
|
||||
if (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE ||
|
||||
clutter_input_device_get_mapping_mode (device) ==
|
||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
||||
settings,
|
||||
device);
|
||||
else
|
||||
logical_monitor = NULL;
|
||||
meta_input_settings_find_monitor (input_settings, settings, device,
|
||||
&monitor, &logical_monitor);
|
||||
|
||||
if (logical_monitor)
|
||||
if (monitor)
|
||||
meta_monitor_manager_get_monitor_matrix (priv->monitor_manager,
|
||||
logical_monitor, matrix);
|
||||
monitor, logical_monitor, matrix);
|
||||
|
||||
input_settings_class->set_matrix (input_settings, device, matrix);
|
||||
|
||||
@@ -1136,6 +1155,90 @@ apply_mappable_device_settings (MetaInputSettings *input_settings,
|
||||
}
|
||||
}
|
||||
|
||||
struct _a11y_settings_flags_pair {
|
||||
const char *name;
|
||||
ClutterKeyboardA11yFlags flag;
|
||||
} settings_flags_pair[] = {
|
||||
{ "enable", CLUTTER_A11Y_KEYBOARD_ENABLED },
|
||||
{ "timeout-enable", CLUTTER_A11Y_TIMEOUT_ENABLED },
|
||||
{ "mousekeys-enable", CLUTTER_A11Y_MOUSE_KEYS_ENABLED },
|
||||
{ "slowkeys-enable", CLUTTER_A11Y_SLOW_KEYS_ENABLED },
|
||||
{ "slowkeys-beep-press", CLUTTER_A11Y_SLOW_KEYS_BEEP_PRESS },
|
||||
{ "slowkeys-beep-accept", CLUTTER_A11Y_SLOW_KEYS_BEEP_ACCEPT },
|
||||
{ "slowkeys-beep-reject", CLUTTER_A11Y_SLOW_KEYS_BEEP_REJECT },
|
||||
{ "bouncekeys-enable", CLUTTER_A11Y_BOUNCE_KEYS_ENABLED },
|
||||
{ "bouncekeys-beep-reject", CLUTTER_A11Y_BOUNCE_KEYS_BEEP_REJECT },
|
||||
{ "togglekeys-enable", CLUTTER_A11Y_TOGGLE_KEYS_ENABLED },
|
||||
{ "stickykeys-enable", CLUTTER_A11Y_STICKY_KEYS_ENABLED },
|
||||
{ "stickykeys-modifier-beep", CLUTTER_A11Y_STICKY_KEYS_BEEP },
|
||||
{ "stickykeys-two-key-off", CLUTTER_A11Y_STICKY_KEYS_TWO_KEY_OFF },
|
||||
{ "feature-state-change-beep", CLUTTER_A11Y_FEATURE_STATE_CHANGE_BEEP },
|
||||
};
|
||||
|
||||
static void
|
||||
load_keyboard_a11y_settings (MetaInputSettings *input_settings,
|
||||
ClutterInputDevice *device)
|
||||
{
|
||||
MetaInputSettingsPrivate *priv = meta_input_settings_get_instance_private (input_settings);
|
||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||
ClutterInputDevice *core_keyboard;
|
||||
guint i;
|
||||
|
||||
core_keyboard = clutter_device_manager_get_core_device (priv->device_manager, CLUTTER_KEYBOARD_DEVICE);
|
||||
if (device && device != core_keyboard)
|
||||
return;
|
||||
|
||||
kbd_a11y_settings.controls = 0;
|
||||
for (i = 0; i < G_N_ELEMENTS (settings_flags_pair); i++)
|
||||
{
|
||||
if (g_settings_get_boolean (priv->a11y_settings, settings_flags_pair[i].name))
|
||||
kbd_a11y_settings.controls |= settings_flags_pair[i].flag;
|
||||
}
|
||||
|
||||
kbd_a11y_settings.timeout_delay = g_settings_get_int (priv->a11y_settings,
|
||||
"disable-timeout");
|
||||
kbd_a11y_settings.slowkeys_delay = g_settings_get_int (priv->a11y_settings,
|
||||
"slowkeys-delay");
|
||||
kbd_a11y_settings.debounce_delay = g_settings_get_int (priv->a11y_settings,
|
||||
"bouncekeys-delay");
|
||||
kbd_a11y_settings.mousekeys_init_delay = g_settings_get_int (priv->a11y_settings,
|
||||
"mousekeys-init-delay");
|
||||
kbd_a11y_settings.mousekeys_max_speed = g_settings_get_int (priv->a11y_settings,
|
||||
"mousekeys-max-speed");
|
||||
kbd_a11y_settings.mousekeys_accel_time = g_settings_get_int (priv->a11y_settings,
|
||||
"mousekeys-accel-time");
|
||||
|
||||
clutter_device_manager_set_kbd_a11y_settings (priv->device_manager, &kbd_a11y_settings);
|
||||
}
|
||||
|
||||
static void
|
||||
on_keyboard_a11y_settings_changed (ClutterDeviceManager *device_manager,
|
||||
ClutterKeyboardA11yFlags new_flags,
|
||||
ClutterKeyboardA11yFlags what_changed,
|
||||
MetaInputSettings *input_settings)
|
||||
{
|
||||
MetaInputSettingsPrivate *priv = meta_input_settings_get_instance_private (input_settings);
|
||||
guint i;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (settings_flags_pair); i++)
|
||||
{
|
||||
if (settings_flags_pair[i].flag & what_changed)
|
||||
g_settings_set_boolean (priv->a11y_settings,
|
||||
settings_flags_pair[i].name,
|
||||
(new_flags & settings_flags_pair[i].flag) ? TRUE : FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_a11y_settings_changed (GSettings *settings,
|
||||
const char *key,
|
||||
gpointer user_data)
|
||||
{
|
||||
MetaInputSettings *input_settings = META_INPUT_SETTINGS (user_data);
|
||||
|
||||
load_keyboard_a11y_settings (input_settings, NULL);
|
||||
}
|
||||
|
||||
static GSettings *
|
||||
lookup_device_settings (ClutterInputDevice *device)
|
||||
{
|
||||
@@ -1302,8 +1405,18 @@ check_add_mappable_device (MetaInputSettings *input_settings,
|
||||
{
|
||||
MetaInputSettingsPrivate *priv;
|
||||
DeviceMappingInfo *info;
|
||||
ClutterInputDeviceType device_type;
|
||||
GSettings *settings;
|
||||
|
||||
device_type = clutter_input_device_get_device_type (device);
|
||||
|
||||
if ((device_type == CLUTTER_TABLET_DEVICE ||
|
||||
device_type == CLUTTER_PEN_DEVICE ||
|
||||
device_type == CLUTTER_ERASER_DEVICE ||
|
||||
device_type == CLUTTER_PAD_DEVICE) &&
|
||||
g_getenv ("MUTTER_DISABLE_WACOM_CONFIGURATION") != NULL)
|
||||
return FALSE;
|
||||
|
||||
settings = lookup_device_settings (device);
|
||||
|
||||
if (!settings)
|
||||
@@ -1317,8 +1430,8 @@ check_add_mappable_device (MetaInputSettings *input_settings,
|
||||
info->settings = settings;
|
||||
|
||||
#ifdef HAVE_LIBWACOM
|
||||
if (clutter_input_device_get_device_type (device) == CLUTTER_TABLET_DEVICE ||
|
||||
clutter_input_device_get_device_type (device) == CLUTTER_PAD_DEVICE)
|
||||
if (device_type == CLUTTER_TABLET_DEVICE ||
|
||||
device_type == CLUTTER_PAD_DEVICE)
|
||||
{
|
||||
WacomError *error = libwacom_error_new ();
|
||||
|
||||
@@ -1336,7 +1449,7 @@ check_add_mappable_device (MetaInputSettings *input_settings,
|
||||
}
|
||||
#endif
|
||||
|
||||
if (clutter_input_device_get_device_type (device) == CLUTTER_PAD_DEVICE)
|
||||
if (device_type == CLUTTER_PAD_DEVICE)
|
||||
{
|
||||
info->group_modes =
|
||||
g_new0 (guint, clutter_input_device_get_n_mode_groups (device));
|
||||
@@ -1381,6 +1494,7 @@ apply_device_settings (MetaInputSettings *input_settings,
|
||||
update_pointer_accel_profile (input_settings,
|
||||
priv->trackball_settings,
|
||||
device);
|
||||
load_keyboard_a11y_settings (input_settings, device);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1424,7 +1538,7 @@ update_stylus_buttonmap (MetaInputSettings *input_settings,
|
||||
ClutterInputDeviceTool *tool)
|
||||
{
|
||||
MetaInputSettingsClass *input_settings_class;
|
||||
GDesktopStylusButtonAction primary, secondary;
|
||||
GDesktopStylusButtonAction primary, secondary, tertiary;
|
||||
GSettings *tool_settings;
|
||||
|
||||
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
|
||||
@@ -1439,10 +1553,11 @@ update_stylus_buttonmap (MetaInputSettings *input_settings,
|
||||
|
||||
primary = g_settings_get_enum (tool_settings, "button-action");
|
||||
secondary = g_settings_get_enum (tool_settings, "secondary-button-action");
|
||||
tertiary = g_settings_get_enum (tool_settings, "tertiary-button-action");
|
||||
|
||||
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
|
||||
input_settings_class->set_stylus_button_map (input_settings, device, tool,
|
||||
primary, secondary);
|
||||
primary, secondary, tertiary);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1494,22 +1609,71 @@ meta_input_settings_device_removed (ClutterDeviceManager *device_manager,
|
||||
|
||||
priv = meta_input_settings_get_instance_private (input_settings);
|
||||
g_hash_table_remove (priv->mappable_devices, device);
|
||||
g_hash_table_remove (priv->current_tools, device);
|
||||
|
||||
if (g_hash_table_remove (priv->two_finger_devices, device) &&
|
||||
g_hash_table_size (priv->two_finger_devices) == 0)
|
||||
apply_device_settings (input_settings, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
current_tool_changed_cb (GSettings *settings,
|
||||
const char *key,
|
||||
gpointer user_data)
|
||||
{
|
||||
CurrentToolInfo *info = user_data;
|
||||
|
||||
apply_stylus_settings (info->input_settings, info->device, info->tool);
|
||||
}
|
||||
|
||||
static CurrentToolInfo *
|
||||
current_tool_info_new (MetaInputSettings *input_settings,
|
||||
ClutterInputDevice *device,
|
||||
ClutterInputDeviceTool *tool)
|
||||
{
|
||||
CurrentToolInfo *info;
|
||||
|
||||
info = g_new0 (CurrentToolInfo, 1);
|
||||
info->input_settings = input_settings;
|
||||
info->device = device;
|
||||
info->tool = tool;
|
||||
info->settings = lookup_tool_settings (tool, device);
|
||||
info->changed_id =
|
||||
g_signal_connect (info->settings, "changed",
|
||||
G_CALLBACK (current_tool_changed_cb),
|
||||
info);
|
||||
return info;
|
||||
}
|
||||
|
||||
static void
|
||||
current_tool_info_free (CurrentToolInfo *info)
|
||||
{
|
||||
g_signal_handler_disconnect (info->settings, info->changed_id);
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_settings_tool_changed (ClutterDeviceManager *device_manager,
|
||||
ClutterInputDevice *device,
|
||||
ClutterInputDeviceTool *tool,
|
||||
MetaInputSettings *input_settings)
|
||||
{
|
||||
if (!tool)
|
||||
return;
|
||||
MetaInputSettingsPrivate *priv;
|
||||
|
||||
apply_stylus_settings (input_settings, device, tool);
|
||||
priv = meta_input_settings_get_instance_private (input_settings);
|
||||
|
||||
if (tool)
|
||||
{
|
||||
CurrentToolInfo *current_tool;
|
||||
|
||||
current_tool = current_tool_info_new (input_settings, device, tool);
|
||||
g_hash_table_insert (priv->current_tools, device, current_tool);
|
||||
apply_stylus_settings (input_settings, device, tool);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_hash_table_remove (priv->current_tools, device);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1597,11 +1761,20 @@ meta_input_settings_init (MetaInputSettings *settings)
|
||||
clutter_settings_get_default(), "double-click-time",
|
||||
G_SETTINGS_BIND_GET);
|
||||
|
||||
priv->a11y_settings = g_settings_new ("org.gnome.desktop.a11y.keyboard");
|
||||
g_signal_connect (priv->a11y_settings, "changed",
|
||||
G_CALLBACK (meta_input_a11y_settings_changed), settings);
|
||||
g_signal_connect (priv->device_manager, "kbd-a11y-flags-changed",
|
||||
G_CALLBACK (on_keyboard_a11y_settings_changed), settings);
|
||||
|
||||
priv->mappable_devices =
|
||||
g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) device_mapping_info_free);
|
||||
|
||||
priv->current_tools =
|
||||
g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) current_tool_info_free);
|
||||
|
||||
priv->monitor_manager = g_object_ref (meta_monitor_manager_get ());
|
||||
g_signal_connect (priv->monitor_manager, "monitors-changed",
|
||||
g_signal_connect (priv->monitor_manager, "monitors-changed-internal",
|
||||
G_CALLBACK (monitors_changed_cb), settings);
|
||||
|
||||
#ifdef HAVE_LIBWACOM
|
||||
@@ -1636,6 +1809,7 @@ MetaLogicalMonitor *
|
||||
meta_input_settings_get_tablet_logical_monitor (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device)
|
||||
{
|
||||
MetaLogicalMonitor *logical_monitor = NULL;
|
||||
MetaInputSettingsPrivate *priv;
|
||||
DeviceMappingInfo *info;
|
||||
|
||||
@@ -1647,9 +1821,9 @@ meta_input_settings_get_tablet_logical_monitor (MetaInputSettings *settings,
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
||||
return meta_input_settings_find_logical_monitor (settings,
|
||||
info->settings,
|
||||
device);
|
||||
meta_input_settings_find_monitor (settings, info->settings, device,
|
||||
NULL, &logical_monitor);
|
||||
return logical_monitor;
|
||||
}
|
||||
|
||||
GDesktopTabletMapping
|
||||
@@ -1753,7 +1927,7 @@ meta_input_settings_cycle_tablet_output (MetaInputSettings *input_settings,
|
||||
{
|
||||
MetaInputSettingsPrivate *priv;
|
||||
DeviceMappingInfo *info;
|
||||
MetaLogicalMonitor *logical_monitor;
|
||||
MetaLogicalMonitor *logical_monitor = NULL;
|
||||
const gchar *edid[4] = { 0 }, *pretty_name = NULL;
|
||||
|
||||
g_return_if_fail (META_IS_INPUT_SETTINGS (input_settings));
|
||||
@@ -1776,9 +1950,9 @@ meta_input_settings_cycle_tablet_output (MetaInputSettings *input_settings,
|
||||
}
|
||||
#endif
|
||||
|
||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
||||
info->settings,
|
||||
device);
|
||||
meta_input_settings_find_monitor (input_settings, info->settings, device,
|
||||
NULL, &logical_monitor);
|
||||
|
||||
if (!cycle_logical_monitors (input_settings,
|
||||
logical_monitor,
|
||||
&logical_monitor))
|
||||
|
||||
@@ -21,9 +21,12 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "backends/meta-backend-private.h"
|
||||
#include "backends/meta-logical-monitor.h"
|
||||
|
||||
#include "backends/meta-backend-private.h"
|
||||
#include "backends/meta-crtc.h"
|
||||
#include "backends/meta-output.h"
|
||||
|
||||
G_DEFINE_TYPE (MetaLogicalMonitor, meta_logical_monitor, G_TYPE_OBJECT)
|
||||
|
||||
static MetaMonitor *
|
||||
@@ -100,7 +103,8 @@ derive_monitor_transform (MetaMonitor *monitor)
|
||||
|
||||
main_output = meta_monitor_get_main_output (monitor);
|
||||
|
||||
return main_output->crtc->transform;
|
||||
return meta_monitor_crtc_to_logical_transform (monitor,
|
||||
main_output->crtc->transform);
|
||||
}
|
||||
|
||||
MetaLogicalMonitor *
|
||||
@@ -199,14 +203,72 @@ meta_logical_monitor_get_monitors (MetaLogicalMonitor *logical_monitor)
|
||||
return logical_monitor->monitors;
|
||||
}
|
||||
|
||||
typedef struct _ForeachCrtcData
|
||||
{
|
||||
MetaLogicalMonitor *logical_monitor;
|
||||
MetaLogicalMonitorCrtcFunc func;
|
||||
gpointer user_data;
|
||||
} ForeachCrtcData;
|
||||
|
||||
static gboolean
|
||||
foreach_crtc (MetaMonitor *monitor,
|
||||
MetaMonitorMode *mode,
|
||||
MetaMonitorCrtcMode *monitor_crtc_mode,
|
||||
gpointer user_data,
|
||||
GError **error)
|
||||
{
|
||||
ForeachCrtcData *data = user_data;
|
||||
|
||||
data->func (data->logical_monitor,
|
||||
monitor_crtc_mode->output->crtc,
|
||||
data->user_data);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_logical_monitor_foreach_crtc (MetaLogicalMonitor *logical_monitor,
|
||||
MetaLogicalMonitorCrtcFunc func,
|
||||
gpointer user_data)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = logical_monitor->monitors; l; l = l->next)
|
||||
{
|
||||
MetaMonitor *monitor = l->data;
|
||||
MetaMonitorMode *mode;
|
||||
ForeachCrtcData data = {
|
||||
.logical_monitor = logical_monitor,
|
||||
.func = func,
|
||||
.user_data = user_data
|
||||
};
|
||||
|
||||
mode = meta_monitor_get_current_mode (monitor);
|
||||
meta_monitor_mode_foreach_crtc (monitor, mode, foreach_crtc, &data, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_logical_monitor_init (MetaLogicalMonitor *logical_monitor)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_logical_monitor_finalize (GObject *object)
|
||||
{
|
||||
MetaLogicalMonitor *logical_monitor = META_LOGICAL_MONITOR (object);
|
||||
|
||||
g_list_free (logical_monitor->monitors);
|
||||
|
||||
G_OBJECT_CLASS (meta_logical_monitor_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = meta_logical_monitor_finalize;
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
||||
@@ -61,6 +61,10 @@ G_DECLARE_FINAL_TYPE (MetaLogicalMonitor, meta_logical_monitor,
|
||||
META, LOGICAL_MONITOR,
|
||||
GObject)
|
||||
|
||||
typedef void (* MetaLogicalMonitorCrtcFunc) (MetaLogicalMonitor *logical_monitor,
|
||||
MetaCrtc *crtc,
|
||||
gpointer user_data);
|
||||
|
||||
MetaLogicalMonitor * meta_logical_monitor_new (MetaMonitorManager *monitor_manager,
|
||||
MetaLogicalMonitorConfig *logical_monitor_config,
|
||||
int monitor_number);
|
||||
@@ -90,4 +94,8 @@ gboolean meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor
|
||||
MetaLogicalMonitor *neighbor,
|
||||
MetaScreenDirection neighbor_dir);
|
||||
|
||||
void meta_logical_monitor_foreach_crtc (MetaLogicalMonitor *logical_monitor,
|
||||
MetaLogicalMonitorCrtcFunc func,
|
||||
gpointer user_data);
|
||||
|
||||
#endif /* META_LOGICAL_MONITOR_H */
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "backends/meta-monitor-config-migration.h"
|
||||
#include "backends/meta-monitor-config-store.h"
|
||||
#include "backends/meta-monitor-manager-private.h"
|
||||
#include "backends/meta-output.h"
|
||||
#include "core/boxes-private.h"
|
||||
|
||||
#define CONFIG_HISTORY_MAX_SIZE 3
|
||||
@@ -151,11 +152,10 @@ assign_monitor_crtc (MetaMonitor *monitor,
|
||||
}
|
||||
|
||||
transform = data->logical_monitor_config->transform;
|
||||
if (meta_monitor_manager_is_transform_handled (data->monitor_manager,
|
||||
crtc,
|
||||
transform))
|
||||
crtc_transform = transform;
|
||||
else
|
||||
crtc_transform = meta_monitor_logical_to_crtc_transform (monitor, transform);
|
||||
if (!meta_monitor_manager_is_transform_handled (data->monitor_manager,
|
||||
crtc,
|
||||
crtc_transform))
|
||||
crtc_transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||
|
||||
meta_monitor_calculate_crtc_pos (monitor, mode, output, crtc_transform,
|
||||
@@ -326,8 +326,8 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static MetaMonitorsConfigKey *
|
||||
create_key_for_current_state (MetaMonitorManager *monitor_manager)
|
||||
MetaMonitorsConfigKey *
|
||||
meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager)
|
||||
{
|
||||
MetaMonitorsConfigKey *config_key;
|
||||
GList *l;
|
||||
@@ -369,7 +369,8 @@ meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager
|
||||
MetaMonitorsConfig *config;
|
||||
GError *error = NULL;
|
||||
|
||||
config_key = create_key_for_current_state (monitor_manager);
|
||||
config_key =
|
||||
meta_create_monitors_config_key_for_current_state (monitor_manager);
|
||||
if (!config_key)
|
||||
return NULL;
|
||||
|
||||
@@ -612,7 +613,9 @@ meta_monitor_config_manager_create_linear (MetaMonitorConfigManager *config_mana
|
||||
x += logical_monitor_config->layout.width;
|
||||
}
|
||||
|
||||
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -641,7 +644,9 @@ meta_monitor_config_manager_create_fallback (MetaMonitorConfigManager *config_ma
|
||||
logical_monitor_configs = g_list_append (NULL,
|
||||
primary_logical_monitor_config);
|
||||
|
||||
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -717,7 +722,9 @@ meta_monitor_config_manager_create_suggested (MetaMonitorConfigManager *config_m
|
||||
if (!logical_monitor_configs)
|
||||
return NULL;
|
||||
|
||||
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -726,8 +733,11 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
|
||||
gboolean rotate,
|
||||
MetaMonitorTransform transform)
|
||||
{
|
||||
MetaMonitorManager *monitor_manager = config_manager->monitor_manager;
|
||||
MetaLogicalMonitorConfig *logical_monitor_config;
|
||||
MetaLogicalMonitorConfig *current_logical_monitor_config;
|
||||
GList *logical_monitor_configs;
|
||||
MetaLogicalMonitorLayoutMode layout_mode;
|
||||
MetaMonitorConfig *monitor_config;
|
||||
MetaMonitorConfig *current_monitor_config;
|
||||
|
||||
@@ -744,6 +754,20 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
|
||||
|
||||
if (rotate)
|
||||
transform = (current_logical_monitor_config->transform + 1) % META_MONITOR_TRANSFORM_FLIPPED;
|
||||
else
|
||||
{
|
||||
/*
|
||||
* The transform coming from the accelerometer should be applied to
|
||||
* the crtc as is, without taking panel-orientation into account, this
|
||||
* is done so that non panel-orientation aware desktop environments do the
|
||||
* right thing. Mutter corrects for panel-orientation when applying the
|
||||
* transform from a logical-monitor-config, so we must convert here.
|
||||
*/
|
||||
MetaMonitor *panel =
|
||||
meta_monitor_manager_get_laptop_panel (config_manager->monitor_manager);
|
||||
|
||||
transform = meta_monitor_crtc_to_logical_transform (panel, transform);
|
||||
}
|
||||
|
||||
if (current_logical_monitor_config->transform == transform)
|
||||
return NULL;
|
||||
@@ -764,8 +788,19 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
|
||||
logical_monitor_config->monitor_configs = g_list_append (NULL, monitor_config);
|
||||
logical_monitor_config->transform = transform;
|
||||
|
||||
return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config),
|
||||
config_manager->current_config->layout_mode,
|
||||
if (meta_monitor_transform_is_rotated (current_logical_monitor_config->transform) !=
|
||||
meta_monitor_transform_is_rotated (logical_monitor_config->transform))
|
||||
{
|
||||
int temp = logical_monitor_config->layout.width;
|
||||
logical_monitor_config->layout.width = logical_monitor_config->layout.height;
|
||||
logical_monitor_config->layout.height = temp;
|
||||
}
|
||||
|
||||
logical_monitor_configs = g_list_append (NULL, logical_monitor_config);
|
||||
layout_mode = config_manager->current_config->layout_mode;
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -788,6 +823,7 @@ create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
|
||||
MetaMonitorManager *monitor_manager = config_manager->monitor_manager;
|
||||
MetaLogicalMonitorLayoutMode layout_mode;
|
||||
MetaLogicalMonitorConfig *logical_monitor_config = NULL;
|
||||
GList *logical_monitor_configs;
|
||||
GList *monitor_configs = NULL;
|
||||
gint common_mode_w = 0, common_mode_h = 0;
|
||||
float best_scale = 1.0;
|
||||
@@ -885,8 +921,10 @@ create_for_switch_config_all_mirror (MetaMonitorConfigManager *config_manager)
|
||||
.monitor_configs = monitor_configs
|
||||
};
|
||||
|
||||
logical_monitor_configs = g_list_append (NULL, logical_monitor_config);
|
||||
layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager);
|
||||
return meta_monitors_config_new (g_list_append (NULL, logical_monitor_config),
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
@@ -927,7 +965,9 @@ create_for_switch_config_external (MetaMonitorConfigManager *config_manager)
|
||||
x += logical_monitor_config->layout.width;
|
||||
}
|
||||
|
||||
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -956,7 +996,9 @@ create_for_switch_config_builtin (MetaMonitorConfigManager *config_manager)
|
||||
logical_monitor_configs = g_list_append (NULL,
|
||||
primary_logical_monitor_config);
|
||||
|
||||
return meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
return meta_monitors_config_new (monitor_manager,
|
||||
logical_monitor_configs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_NONE);
|
||||
}
|
||||
|
||||
@@ -1079,7 +1121,8 @@ meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor_conf
|
||||
}
|
||||
|
||||
static MetaMonitorsConfigKey *
|
||||
meta_monitors_config_key_new (GList *logical_monitor_configs)
|
||||
meta_monitors_config_key_new (GList *logical_monitor_configs,
|
||||
GList *disabled_monitor_specs)
|
||||
{
|
||||
MetaMonitorsConfigKey *config_key;
|
||||
GList *monitor_specs;
|
||||
@@ -1101,6 +1144,14 @@ meta_monitors_config_key_new (GList *logical_monitor_configs)
|
||||
}
|
||||
}
|
||||
|
||||
for (l = disabled_monitor_specs; l; l = l->next)
|
||||
{
|
||||
MetaMonitorSpec *monitor_spec = l->data;
|
||||
|
||||
monitor_spec = meta_monitor_spec_clone (monitor_spec);
|
||||
monitor_specs = g_list_prepend (monitor_specs, monitor_spec);
|
||||
}
|
||||
|
||||
monitor_specs = g_list_sort (monitor_specs,
|
||||
(GCompareFunc) meta_monitor_spec_compare);
|
||||
|
||||
@@ -1167,21 +1218,60 @@ meta_monitors_config_key_equal (gconstpointer data_a,
|
||||
}
|
||||
|
||||
MetaMonitorsConfig *
|
||||
meta_monitors_config_new (GList *logical_monitor_configs,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags)
|
||||
meta_monitors_config_new_full (GList *logical_monitor_configs,
|
||||
GList *disabled_monitor_specs,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags)
|
||||
{
|
||||
MetaMonitorsConfig *config;
|
||||
|
||||
config = g_object_new (META_TYPE_MONITORS_CONFIG, NULL);
|
||||
config->logical_monitor_configs = logical_monitor_configs;
|
||||
config->key = meta_monitors_config_key_new (logical_monitor_configs);
|
||||
config->disabled_monitor_specs = disabled_monitor_specs;
|
||||
config->key = meta_monitors_config_key_new (logical_monitor_configs,
|
||||
disabled_monitor_specs);
|
||||
config->layout_mode = layout_mode;
|
||||
config->flags = flags;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
MetaMonitorsConfig *
|
||||
meta_monitors_config_new (MetaMonitorManager *monitor_manager,
|
||||
GList *logical_monitor_configs,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags)
|
||||
{
|
||||
GList *disabled_monitor_specs = NULL;
|
||||
GList *monitors;
|
||||
GList *l;
|
||||
|
||||
monitors = meta_monitor_manager_get_monitors (monitor_manager);
|
||||
for (l = monitors; l; l = l->next)
|
||||
{
|
||||
MetaMonitor *monitor = l->data;
|
||||
MetaMonitorSpec *monitor_spec;
|
||||
|
||||
if (meta_monitor_manager_is_lid_closed (monitor_manager) &&
|
||||
meta_monitor_is_laptop_panel (monitor))
|
||||
continue;
|
||||
|
||||
monitor_spec = meta_monitor_get_spec (monitor);
|
||||
if (meta_logical_monitor_configs_have_monitor (logical_monitor_configs,
|
||||
monitor_spec))
|
||||
continue;
|
||||
|
||||
disabled_monitor_specs =
|
||||
g_list_prepend (disabled_monitor_specs,
|
||||
meta_monitor_spec_clone (monitor_spec));
|
||||
}
|
||||
|
||||
return meta_monitors_config_new_full (logical_monitor_configs,
|
||||
disabled_monitor_specs,
|
||||
layout_mode,
|
||||
flags);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_monitors_config_finalize (GObject *object)
|
||||
{
|
||||
@@ -1190,6 +1280,10 @@ meta_monitors_config_finalize (GObject *object)
|
||||
meta_monitors_config_key_free (config->key);
|
||||
g_list_free_full (config->logical_monitor_configs,
|
||||
(GDestroyNotify) meta_logical_monitor_config_free);
|
||||
g_list_free_full (config->disabled_monitor_specs,
|
||||
(GDestroyNotify) meta_monitor_spec_free);
|
||||
|
||||
G_OBJECT_CLASS (meta_monitors_config_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1365,6 +1459,38 @@ has_adjecent_neighbour (MetaMonitorsConfig *config,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs,
|
||||
MetaMonitorSpec *monitor_spec)
|
||||
{
|
||||
GList *l;
|
||||
|
||||
for (l = logical_monitor_configs; l; l = l->next)
|
||||
{
|
||||
MetaLogicalMonitorConfig *logical_monitor_config = l->data;
|
||||
GList *k;
|
||||
|
||||
for (k = logical_monitor_config->monitor_configs; k; k = k->next)
|
||||
{
|
||||
MetaMonitorConfig *monitor_config = k->data;
|
||||
|
||||
if (meta_monitor_spec_equals (monitor_spec,
|
||||
monitor_config->monitor_spec))
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_monitors_config_is_monitor_enabled (MetaMonitorsConfig *config,
|
||||
MetaMonitorSpec *monitor_spec)
|
||||
{
|
||||
return meta_logical_monitor_configs_have_monitor (config->logical_monitor_configs,
|
||||
monitor_spec);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_verify_monitors_config (MetaMonitorsConfig *config,
|
||||
MetaMonitorManager *monitor_manager,
|
||||
@@ -1446,6 +1572,18 @@ meta_verify_monitors_config (MetaMonitorsConfig *config,
|
||||
|
||||
g_list_free (region);
|
||||
|
||||
for (l = config->disabled_monitor_specs; l; l = l->next)
|
||||
{
|
||||
MetaMonitorSpec *monitor_spec = l->data;
|
||||
|
||||
if (meta_monitors_config_is_monitor_enabled (config, monitor_spec))
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"Assigned monitor explicitly disabled");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (min_x != 0 || min_y != 0)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
|
||||
@@ -64,6 +64,8 @@ struct _MetaMonitorsConfig
|
||||
MetaMonitorsConfigKey *key;
|
||||
GList *logical_monitor_configs;
|
||||
|
||||
GList *disabled_monitor_specs;
|
||||
|
||||
MetaMonitorsConfigFlag flags;
|
||||
|
||||
MetaLogicalMonitorLayoutMode layout_mode;
|
||||
@@ -112,9 +114,15 @@ void meta_monitor_config_manager_clear_history (MetaMonitorConfigManager *config
|
||||
|
||||
void meta_monitor_config_manager_save_current (MetaMonitorConfigManager *config_manager);
|
||||
|
||||
MetaMonitorsConfig * meta_monitors_config_new (GList *logical_monitor_configs,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags);
|
||||
MetaMonitorsConfig * meta_monitors_config_new_full (GList *logical_monitor_configs,
|
||||
GList *disabled_monitors,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags);
|
||||
|
||||
MetaMonitorsConfig * meta_monitors_config_new (MetaMonitorManager *monitor_manager,
|
||||
GList *logical_monitor_configs,
|
||||
MetaLogicalMonitorLayoutMode layout_mode,
|
||||
MetaMonitorsConfigFlag flags);
|
||||
|
||||
unsigned int meta_monitors_config_key_hash (gconstpointer config_key);
|
||||
|
||||
@@ -127,6 +135,11 @@ void meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor
|
||||
|
||||
void meta_monitor_config_free (MetaMonitorConfig *monitor_config);
|
||||
|
||||
MetaMonitorsConfigKey * meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager);
|
||||
|
||||
gboolean meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs,
|
||||
MetaMonitorSpec *monitor_spec);
|
||||
|
||||
gboolean meta_verify_monitor_mode_spec (MetaMonitorModeSpec *monitor_mode_spec,
|
||||
GError **error);
|
||||
|
||||
|
||||
@@ -652,6 +652,7 @@ load_config_file (GFile *file,
|
||||
g_array_free (parser.output_array, TRUE);
|
||||
|
||||
free_output_key (&parser.key);
|
||||
g_free (parser.output_field);
|
||||
g_hash_table_destroy (parser.configs);
|
||||
|
||||
return NULL;
|
||||
@@ -949,7 +950,6 @@ derive_logical_monitor_configs (MetaLegacyMonitorsConfig *config,
|
||||
GError **error)
|
||||
{
|
||||
GList *logical_monitor_configs = NULL;
|
||||
GList *monitor_configs = NULL;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < config->n_outputs; i++)
|
||||
@@ -994,8 +994,8 @@ derive_logical_monitor_configs (MetaLegacyMonitorsConfig *config,
|
||||
}
|
||||
else
|
||||
{
|
||||
g_list_free_full (monitor_configs,
|
||||
(GDestroyNotify) meta_monitor_config_free);
|
||||
g_list_free_full (logical_monitor_configs,
|
||||
(GDestroyNotify) meta_logical_monitor_config_free);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -1008,8 +1008,8 @@ derive_logical_monitor_configs (MetaLegacyMonitorsConfig *config,
|
||||
|
||||
if (!monitor_config)
|
||||
{
|
||||
g_list_free_full (monitor_configs,
|
||||
(GDestroyNotify) meta_monitor_config_free);
|
||||
g_list_free_full (logical_monitor_configs,
|
||||
(GDestroyNotify) meta_logical_monitor_config_free);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1056,6 +1056,35 @@ generate_config_name (MetaLegacyMonitorsConfig *config)
|
||||
return key_name;
|
||||
}
|
||||
|
||||
static GList *
|
||||
find_disabled_monitor_specs (MetaLegacyMonitorsConfig *legacy_config)
|
||||
{
|
||||
GList *disabled_monitors = NULL;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < legacy_config->n_outputs; i++)
|
||||
{
|
||||
MetaOutputKey *output_key = &legacy_config->keys[i];
|
||||
MetaOutputConfig *output_config = &legacy_config->outputs[i];
|
||||
MetaMonitorSpec *monitor_spec;
|
||||
|
||||
if (output_config->enabled)
|
||||
continue;
|
||||
|
||||
monitor_spec = g_new0 (MetaMonitorSpec, 1);
|
||||
*monitor_spec = (MetaMonitorSpec) {
|
||||
.connector = output_key->connector,
|
||||
.vendor = output_key->vendor,
|
||||
.product = output_key->product,
|
||||
.serial = output_key->serial
|
||||
};
|
||||
|
||||
disabled_monitors = g_list_prepend (disabled_monitors, monitor_spec);
|
||||
}
|
||||
|
||||
return disabled_monitors;
|
||||
}
|
||||
|
||||
static void
|
||||
migrate_config (gpointer key,
|
||||
gpointer value,
|
||||
@@ -1068,6 +1097,7 @@ migrate_config (gpointer key,
|
||||
GList *logical_monitor_configs;
|
||||
MetaLogicalMonitorLayoutMode layout_mode;
|
||||
GError *error = NULL;
|
||||
GList *disabled_monitor_specs;
|
||||
MetaMonitorsConfig *config;
|
||||
|
||||
logical_monitor_configs = derive_logical_monitor_configs (legacy_config,
|
||||
@@ -1083,9 +1113,13 @@ migrate_config (gpointer key,
|
||||
return;
|
||||
}
|
||||
|
||||
disabled_monitor_specs = find_disabled_monitor_specs (legacy_config);
|
||||
|
||||
layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL;
|
||||
config = meta_monitors_config_new (logical_monitor_configs, layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_MIGRATED);
|
||||
config = meta_monitors_config_new_full (logical_monitor_configs,
|
||||
disabled_monitor_specs,
|
||||
layout_mode,
|
||||
META_MONITORS_CONFIG_FLAG_MIGRATED);
|
||||
if (!meta_verify_monitors_config (config, monitor_manager, &error))
|
||||
{
|
||||
g_autofree char *config_name = NULL;
|
||||
@@ -1112,7 +1146,6 @@ meta_migrate_old_monitors_config (MetaMonitorConfigStore *config_store,
|
||||
return FALSE;
|
||||
|
||||
g_hash_table_foreach (configs, migrate_config, config_store);
|
||||
g_hash_table_destroy (configs);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1175,6 +1208,13 @@ meta_finish_monitors_config_migration (MetaMonitorManager *monitor_manager,
|
||||
monitor_mode_spec = monitor_config->mode_spec;
|
||||
monitor_mode = meta_monitor_get_mode_from_spec (monitor,
|
||||
monitor_mode_spec);
|
||||
if (!monitor_mode)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"Mode not available on monitor");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
scale = meta_monitor_calculate_mode_scale (monitor, monitor_mode);
|
||||
|
||||
logical_monitor_config->scale = scale;
|
||||
|
||||
@@ -83,6 +83,14 @@
|
||||
* </monitor>
|
||||
* <presentation>yes</presentation>
|
||||
* </logicalmonitor>
|
||||
* <disabled>
|
||||
* <monitorspec>
|
||||
* <connector>LVDS3</connector>
|
||||
* <vendor>Vendor C</vendor>
|
||||
* <product>Product C</product>
|
||||
* <serial>Serial C</serial>
|
||||
* </monitorspec>
|
||||
* </disabled>
|
||||
* </configuration>
|
||||
* </monitors>
|
||||
*
|
||||
@@ -151,7 +159,8 @@ typedef enum
|
||||
STATE_MONITOR_MODE_HEIGHT,
|
||||
STATE_MONITOR_MODE_RATE,
|
||||
STATE_MONITOR_MODE_FLAG,
|
||||
STATE_MONITOR_UNDERSCANNING
|
||||
STATE_MONITOR_UNDERSCANNING,
|
||||
STATE_DISABLED,
|
||||
} ParserState;
|
||||
|
||||
typedef struct
|
||||
@@ -159,6 +168,8 @@ typedef struct
|
||||
ParserState state;
|
||||
MetaMonitorConfigStore *config_store;
|
||||
|
||||
ParserState monitor_spec_parent_state;
|
||||
|
||||
gboolean current_was_migrated;
|
||||
GList *current_logical_monitor_configs;
|
||||
MetaMonitorSpec *current_monitor_spec;
|
||||
@@ -167,6 +178,7 @@ typedef struct
|
||||
MetaMonitorModeSpec *current_monitor_mode_spec;
|
||||
MetaMonitorConfig *current_monitor_config;
|
||||
MetaLogicalMonitorConfig *current_logical_monitor_config;
|
||||
GList *current_disabled_monitor_specs;
|
||||
} ConfigParser;
|
||||
|
||||
G_DEFINE_TYPE (MetaMonitorConfigStore, meta_monitor_config_store,
|
||||
@@ -254,6 +266,10 @@ handle_start_element (GMarkupParseContext *context,
|
||||
|
||||
parser->state = STATE_MIGRATED;
|
||||
}
|
||||
else if (g_str_equal (element_name, "disabled"))
|
||||
{
|
||||
parser->state = STATE_DISABLED;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
|
||||
@@ -351,7 +367,7 @@ handle_start_element (GMarkupParseContext *context,
|
||||
if (g_str_equal (element_name, "monitorspec"))
|
||||
{
|
||||
parser->current_monitor_spec = g_new0 (MetaMonitorSpec, 1);
|
||||
|
||||
parser->monitor_spec_parent_state = STATE_MONITOR;
|
||||
parser->state = STATE_MONITOR_SPEC;
|
||||
}
|
||||
else if (g_str_equal (element_name, "mode"))
|
||||
@@ -456,6 +472,22 @@ handle_start_element (GMarkupParseContext *context,
|
||||
"Invalid element '%s' under underscanning", element_name);
|
||||
return;
|
||||
}
|
||||
|
||||
case STATE_DISABLED:
|
||||
{
|
||||
if (!g_str_equal (element_name, "monitorspec"))
|
||||
{
|
||||
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
|
||||
"Invalid element '%s' under disabled", element_name);
|
||||
return;
|
||||
}
|
||||
|
||||
parser->current_monitor_spec = g_new0 (MetaMonitorSpec, 1);
|
||||
parser->monitor_spec_parent_state = STATE_DISABLED;
|
||||
parser->state = STATE_MONITOR_SPEC;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -513,6 +545,34 @@ derive_logical_monitor_layout (MetaLogicalMonitorConfig *logical_monitor_conf
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
finish_monitor_spec (ConfigParser *parser)
|
||||
{
|
||||
switch (parser->monitor_spec_parent_state)
|
||||
{
|
||||
case STATE_MONITOR:
|
||||
{
|
||||
parser->current_monitor_config->monitor_spec =
|
||||
parser->current_monitor_spec;
|
||||
parser->current_monitor_spec = NULL;
|
||||
|
||||
return;
|
||||
}
|
||||
case STATE_DISABLED:
|
||||
{
|
||||
parser->current_disabled_monitor_specs =
|
||||
g_list_prepend (parser->current_disabled_monitor_specs,
|
||||
parser->current_monitor_spec);
|
||||
parser->current_monitor_spec = NULL;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
handle_end_element (GMarkupParseContext *context,
|
||||
const char *element_name,
|
||||
@@ -575,11 +635,9 @@ handle_end_element (GMarkupParseContext *context,
|
||||
if (!meta_verify_monitor_spec (parser->current_monitor_spec, error))
|
||||
return;
|
||||
|
||||
parser->current_monitor_config->monitor_spec =
|
||||
parser->current_monitor_spec;
|
||||
parser->current_monitor_spec = NULL;
|
||||
finish_monitor_spec (parser);
|
||||
|
||||
parser->state = STATE_MONITOR;
|
||||
parser->state = parser->monitor_spec_parent_state;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -665,6 +723,14 @@ handle_end_element (GMarkupParseContext *context,
|
||||
return;
|
||||
}
|
||||
|
||||
case STATE_DISABLED:
|
||||
{
|
||||
g_assert (g_str_equal (element_name, "disabled"));
|
||||
|
||||
parser->state = STATE_CONFIGURATION;
|
||||
return;
|
||||
}
|
||||
|
||||
case STATE_CONFIGURATION:
|
||||
{
|
||||
MetaMonitorConfigStore *store = parser->config_store;
|
||||
@@ -701,11 +767,13 @@ handle_end_element (GMarkupParseContext *context,
|
||||
config_flags |= META_MONITORS_CONFIG_FLAG_MIGRATED;
|
||||
|
||||
config =
|
||||
meta_monitors_config_new (parser->current_logical_monitor_configs,
|
||||
layout_mode,
|
||||
config_flags);
|
||||
meta_monitors_config_new_full (parser->current_logical_monitor_configs,
|
||||
parser->current_disabled_monitor_specs,
|
||||
layout_mode,
|
||||
config_flags);
|
||||
|
||||
parser->current_logical_monitor_configs = NULL;
|
||||
parser->current_disabled_monitor_specs = NULL;
|
||||
|
||||
if (!meta_verify_monitors_config (config, store->monitor_manager,
|
||||
error))
|
||||
@@ -849,6 +917,7 @@ handle_text (GMarkupParseContext *context,
|
||||
case STATE_MONITOR_SPEC:
|
||||
case STATE_MONITOR_MODE:
|
||||
case STATE_TRANSFORM:
|
||||
case STATE_DISABLED:
|
||||
{
|
||||
if (!is_all_whitespace (text, text_len))
|
||||
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
|
||||
@@ -1058,6 +1127,27 @@ meta_monitor_config_store_lookup (MetaMonitorConfigStore *config_store,
|
||||
key));
|
||||
}
|
||||
|
||||
static void
|
||||
append_monitor_spec (GString *buffer,
|
||||
MetaMonitorSpec *monitor_spec,
|
||||
const char *indentation)
|
||||
{
|
||||
g_string_append_printf (buffer, "%s<monitorspec>\n", indentation);
|
||||
g_string_append_printf (buffer, "%s <connector>%s</connector>\n",
|
||||
indentation,
|
||||
monitor_spec->connector);
|
||||
g_string_append_printf (buffer, "%s <vendor>%s</vendor>\n",
|
||||
indentation,
|
||||
monitor_spec->vendor);
|
||||
g_string_append_printf (buffer, "%s <product>%s</product>\n",
|
||||
indentation,
|
||||
monitor_spec->product);
|
||||
g_string_append_printf (buffer, "%s <serial>%s</serial>\n",
|
||||
indentation,
|
||||
monitor_spec->serial);
|
||||
g_string_append_printf (buffer, "%s</monitorspec>\n", indentation);
|
||||
}
|
||||
|
||||
static void
|
||||
append_monitors (GString *buffer,
|
||||
GList *monitor_configs)
|
||||
@@ -1073,16 +1163,7 @@ append_monitors (GString *buffer,
|
||||
monitor_config->mode_spec->refresh_rate);
|
||||
|
||||
g_string_append (buffer, " <monitor>\n");
|
||||
g_string_append (buffer, " <monitorspec>\n");
|
||||
g_string_append_printf (buffer, " <connector>%s</connector>\n",
|
||||
monitor_config->monitor_spec->connector);
|
||||
g_string_append_printf (buffer, " <vendor>%s</vendor>\n",
|
||||
monitor_config->monitor_spec->vendor);
|
||||
g_string_append_printf (buffer, " <product>%s</product>\n",
|
||||
monitor_config->monitor_spec->product);
|
||||
g_string_append_printf (buffer, " <serial>%s</serial>\n",
|
||||
monitor_config->monitor_spec->serial);
|
||||
g_string_append (buffer, " </monitorspec>\n");
|
||||
append_monitor_spec (buffer, monitor_config->monitor_spec, " ");
|
||||
g_string_append (buffer, " <mode>\n");
|
||||
g_string_append_printf (buffer, " <width>%d</width>\n",
|
||||
monitor_config->mode_spec->width);
|
||||
@@ -1205,6 +1286,18 @@ generate_config_xml (MetaMonitorConfigStore *config_store)
|
||||
append_logical_monitor_xml (buffer, config, logical_monitor_config);
|
||||
}
|
||||
|
||||
if (config->disabled_monitor_specs)
|
||||
{
|
||||
g_string_append (buffer, " <disabled>\n");
|
||||
for (l = config->disabled_monitor_specs; l; l = l->next)
|
||||
{
|
||||
MetaMonitorSpec *monitor_spec = l->data;
|
||||
|
||||
append_monitor_spec (buffer, monitor_spec, " ");
|
||||
}
|
||||
g_string_append (buffer, " </disabled>\n");
|
||||
}
|
||||
|
||||
g_string_append (buffer, " </configuration>\n");
|
||||
}
|
||||
|
||||
@@ -1230,9 +1323,10 @@ saved_cb (GObject *object,
|
||||
if (!g_file_replace_contents_finish (G_FILE (object), result, NULL, &error))
|
||||
{
|
||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
g_warning ("Saving monitor configuration failed: %s\n", error->message);
|
||||
else
|
||||
g_clear_object (&data->config_store->save_cancellable);
|
||||
{
|
||||
g_warning ("Saving monitor configuration failed: %s\n", error->message);
|
||||
g_clear_object (&data->config_store->save_cancellable);
|
||||
}
|
||||
|
||||
g_error_free (error);
|
||||
}
|
||||
@@ -1246,6 +1340,37 @@ saved_cb (GObject *object,
|
||||
g_free (data);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_monitor_config_store_save_sync (MetaMonitorConfigStore *config_store)
|
||||
{
|
||||
GError *error = NULL;
|
||||
GFile *file;
|
||||
GString *buffer;
|
||||
|
||||
if (config_store->custom_write_file)
|
||||
file = config_store->custom_write_file;
|
||||
else
|
||||
file = config_store->user_file;
|
||||
|
||||
buffer = generate_config_xml (config_store);
|
||||
|
||||
if (!g_file_replace_contents (file,
|
||||
buffer->str, buffer->len,
|
||||
NULL,
|
||||
FALSE,
|
||||
G_FILE_CREATE_REPLACE_DESTINATION,
|
||||
NULL,
|
||||
NULL,
|
||||
&error))
|
||||
{
|
||||
g_warning ("Saving monitor configuration failed: %s\n",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_monitor_config_store_save (MetaMonitorConfigStore *config_store)
|
||||
{
|
||||
@@ -1258,6 +1383,17 @@ meta_monitor_config_store_save (MetaMonitorConfigStore *config_store)
|
||||
g_clear_object (&config_store->save_cancellable);
|
||||
}
|
||||
|
||||
/*
|
||||
* Custom write file is only ever used by the test suite, and the test suite
|
||||
* will want to have be able to read back the content immediately, so for
|
||||
* custom write files, do the content replacement synchronously.
|
||||
*/
|
||||
if (config_store->custom_write_file)
|
||||
{
|
||||
meta_monitor_config_store_save_sync (config_store);
|
||||
return;
|
||||
}
|
||||
|
||||
config_store->save_cancellable = g_cancellable_new ();
|
||||
|
||||
buffer = generate_config_xml (config_store);
|
||||
@@ -1268,31 +1404,6 @@ meta_monitor_config_store_save (MetaMonitorConfigStore *config_store)
|
||||
.buffer = buffer
|
||||
};
|
||||
|
||||
/*
|
||||
* Custom write file is only ever used by the test suite, and the test suite
|
||||
* will want to have be able to read back the content immediately, so for
|
||||
* custom write files, do the content replacement synchronously.
|
||||
*/
|
||||
if (config_store->custom_write_file)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (!g_file_replace_contents (config_store->custom_write_file,
|
||||
buffer->str, buffer->len,
|
||||
NULL,
|
||||
FALSE,
|
||||
G_FILE_CREATE_REPLACE_DESTINATION,
|
||||
NULL,
|
||||
NULL,
|
||||
&error))
|
||||
{
|
||||
g_warning ("Saving monitor configuration failed: %s\n",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
g_file_replace_contents_async (config_store->user_file,
|
||||
buffer->str, buffer->len,
|
||||
NULL,
|
||||
@@ -1407,6 +1518,8 @@ meta_monitor_config_store_constructed (GObject *object)
|
||||
}
|
||||
|
||||
g_free (user_file_path);
|
||||
|
||||
G_OBJECT_CLASS (meta_monitor_config_store_parent_class)->constructed (object);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1414,6 +1527,14 @@ meta_monitor_config_store_dispose (GObject *object)
|
||||
{
|
||||
MetaMonitorConfigStore *config_store = META_MONITOR_CONFIG_STORE (object);
|
||||
|
||||
if (config_store->save_cancellable)
|
||||
{
|
||||
g_cancellable_cancel (config_store->save_cancellable);
|
||||
g_clear_object (&config_store->save_cancellable);
|
||||
|
||||
meta_monitor_config_store_save_sync (config_store);
|
||||
}
|
||||
|
||||
g_clear_pointer (&config_store->configs, g_hash_table_destroy);
|
||||
|
||||
g_clear_object (&config_store->user_file);
|
||||
|
||||
@@ -31,8 +31,10 @@
|
||||
|
||||
#include <meta/util.h>
|
||||
#include "backends/meta-backend-private.h"
|
||||
#include "backends/meta-crtc.h"
|
||||
#include "backends/meta-monitor.h"
|
||||
#include "backends/meta-monitor-config-manager.h"
|
||||
#include "backends/meta-output.h"
|
||||
|
||||
#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||
|
||||
@@ -45,6 +47,8 @@ struct _MetaMonitorManagerDummy
|
||||
{
|
||||
MetaMonitorManager parent_instance;
|
||||
|
||||
MetaGpu *gpu;
|
||||
|
||||
gboolean is_transform_handled;
|
||||
};
|
||||
|
||||
@@ -60,19 +64,49 @@ typedef struct _MetaOutputDummy
|
||||
|
||||
G_DEFINE_TYPE (MetaMonitorManagerDummy, meta_monitor_manager_dummy, META_TYPE_MONITOR_MANAGER);
|
||||
|
||||
struct _MetaGpuDummy
|
||||
{
|
||||
MetaGpu parent;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaGpuDummy, meta_gpu_dummy, META_TYPE_GPU)
|
||||
|
||||
static void
|
||||
meta_output_dummy_notify_destroy (MetaOutput *output);
|
||||
|
||||
#define array_last(a, t) \
|
||||
g_array_index (a, t, a->len - 1)
|
||||
typedef struct _CrtcModeSpec
|
||||
{
|
||||
int width;
|
||||
int height;
|
||||
float refresh_rate;
|
||||
} CrtcModeSpec;
|
||||
|
||||
static MetaCrtcMode *
|
||||
create_mode (CrtcModeSpec *spec,
|
||||
long mode_id)
|
||||
{
|
||||
MetaCrtcMode *mode;
|
||||
|
||||
mode = g_object_new (META_TYPE_CRTC_MODE, NULL);
|
||||
|
||||
mode->mode_id = mode_id;
|
||||
mode->width = spec->width;
|
||||
mode->height = spec->height;
|
||||
mode->refresh_rate = spec->refresh_rate;
|
||||
|
||||
return mode;
|
||||
}
|
||||
|
||||
static void
|
||||
append_monitor (GArray *modes,
|
||||
GArray *crtcs,
|
||||
GArray *outputs,
|
||||
float scale)
|
||||
append_monitor (MetaMonitorManager *manager,
|
||||
GList **modes,
|
||||
GList **crtcs,
|
||||
GList **outputs,
|
||||
float scale)
|
||||
{
|
||||
MetaCrtcMode modes_decl[] = {
|
||||
MetaMonitorManagerDummy *manager_dummy = META_MONITOR_MANAGER_DUMMY (manager);
|
||||
MetaGpu *gpu = manager_dummy->gpu;
|
||||
CrtcModeSpec mode_specs[] = {
|
||||
{
|
||||
.width = 800,
|
||||
.height = 600,
|
||||
@@ -84,65 +118,84 @@ append_monitor (GArray *modes,
|
||||
.refresh_rate = 60.0
|
||||
}
|
||||
};
|
||||
MetaCrtc crtc;
|
||||
GList *new_modes = NULL;
|
||||
MetaCrtc *crtc;
|
||||
MetaOutputDummy *output_dummy;
|
||||
MetaOutput output;
|
||||
MetaOutput *output;
|
||||
unsigned int i;
|
||||
unsigned int number;
|
||||
GList *l;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
||||
modes_decl[i].mode_id = modes->len + i;
|
||||
g_array_append_vals (modes, modes_decl, G_N_ELEMENTS (modes_decl));
|
||||
for (i = 0; i < G_N_ELEMENTS (mode_specs); i++)
|
||||
{
|
||||
long mode_id;
|
||||
MetaCrtcMode *mode;
|
||||
|
||||
crtc = (MetaCrtc) {
|
||||
.crtc_id = crtcs->len + 1,
|
||||
.all_transforms = ALL_TRANSFORMS,
|
||||
};
|
||||
g_array_append_val (crtcs, crtc);
|
||||
mode_id = g_list_length (*modes) + i + 1;
|
||||
mode = create_mode (&mode_specs[i], mode_id);
|
||||
|
||||
new_modes = g_list_append (new_modes, mode);
|
||||
}
|
||||
*modes = g_list_concat (*modes, new_modes);
|
||||
|
||||
crtc = g_object_new (META_TYPE_CRTC, NULL);
|
||||
crtc->crtc_id = g_list_length (*crtcs) + 1;
|
||||
crtc->all_transforms = ALL_TRANSFORMS;
|
||||
*crtcs = g_list_append (*crtcs, crtc);
|
||||
|
||||
output = g_object_new (META_TYPE_OUTPUT, NULL);
|
||||
|
||||
output_dummy = g_new0 (MetaOutputDummy, 1);
|
||||
*output_dummy = (MetaOutputDummy) {
|
||||
.scale = scale
|
||||
};
|
||||
|
||||
output = (MetaOutput) {
|
||||
.winsys_id = outputs->len + 1,
|
||||
.name = g_strdup_printf ("LVDS%d", outputs->len + 1),
|
||||
.vendor = g_strdup ("MetaProducts Inc."),
|
||||
.product = g_strdup ("MetaMonitor"),
|
||||
.serial = g_strdup_printf ("0xC0FFEE-%d", outputs->len + 1),
|
||||
.suggested_x = -1,
|
||||
.suggested_y = -1,
|
||||
.width_mm = 222,
|
||||
.height_mm = 125,
|
||||
.subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN,
|
||||
.preferred_mode = &array_last (modes, MetaCrtcMode),
|
||||
.n_possible_clones = 0,
|
||||
.backlight = -1,
|
||||
.connector_type = META_CONNECTOR_TYPE_LVDS,
|
||||
.driver_private = output_dummy,
|
||||
.driver_notify =
|
||||
(GDestroyNotify) meta_output_dummy_notify_destroy
|
||||
};
|
||||
number = g_list_length (*outputs) + 1;
|
||||
|
||||
output.modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (modes_decl));
|
||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
||||
output.modes[i] = &g_array_index (modes, MetaCrtcMode,
|
||||
modes->len - (i + 1));
|
||||
output.n_modes = G_N_ELEMENTS (modes_decl);
|
||||
output.possible_crtcs = g_new0 (MetaCrtc *, 1);
|
||||
output.possible_crtcs[0] = &array_last (crtcs, MetaCrtc);
|
||||
output.n_possible_crtcs = 1;
|
||||
output->gpu = gpu;
|
||||
output->winsys_id = number;
|
||||
output->name = g_strdup_printf ("LVDS%d", number);
|
||||
output->vendor = g_strdup ("MetaProducts Inc.");
|
||||
output->product = g_strdup ("MetaMonitor");
|
||||
output->serial = g_strdup_printf ("0xC0FFEE-%d", number);
|
||||
output->suggested_x = -1;
|
||||
output->suggested_y = -1;
|
||||
output->width_mm = 222;
|
||||
output->height_mm = 125;
|
||||
output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
|
||||
output->preferred_mode = g_list_last (*modes)->data;
|
||||
output->n_possible_clones = 0;
|
||||
output->backlight = -1;
|
||||
output->connector_type = META_CONNECTOR_TYPE_LVDS;
|
||||
output->driver_private = output_dummy;
|
||||
output->driver_notify =
|
||||
(GDestroyNotify) meta_output_dummy_notify_destroy;
|
||||
|
||||
g_array_append_val (outputs, output);
|
||||
output->modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (mode_specs));
|
||||
for (l = new_modes, i = 0; l; l = l->next, i++)
|
||||
{
|
||||
MetaCrtcMode *mode = l->data;
|
||||
|
||||
output->modes[i] = mode;
|
||||
}
|
||||
output->n_modes = G_N_ELEMENTS (mode_specs);
|
||||
output->possible_crtcs = g_new0 (MetaCrtc *, 1);
|
||||
output->possible_crtcs[0] = g_list_last (*crtcs)->data;
|
||||
output->n_possible_crtcs = 1;
|
||||
|
||||
*outputs = g_list_append (*outputs, output);
|
||||
}
|
||||
|
||||
static void
|
||||
append_tiled_monitor (GArray *modes,
|
||||
GArray *crtcs,
|
||||
GArray *outputs,
|
||||
int scale)
|
||||
append_tiled_monitor (MetaMonitorManager *manager,
|
||||
GList **modes,
|
||||
GList **crtcs,
|
||||
GList **outputs,
|
||||
int scale)
|
||||
{
|
||||
MetaCrtcMode modes_decl[] = {
|
||||
MetaMonitorManagerDummy *manager_dummy = META_MONITOR_MANAGER_DUMMY (manager);
|
||||
MetaGpu *gpu = manager_dummy->gpu;
|
||||
CrtcModeSpec mode_specs[] = {
|
||||
{
|
||||
.width = 800,
|
||||
.height = 600,
|
||||
@@ -154,81 +207,105 @@ append_tiled_monitor (GArray *modes,
|
||||
.refresh_rate = 60.0
|
||||
}
|
||||
};
|
||||
MetaCrtc crtcs_decl[] = {
|
||||
{
|
||||
.all_transforms = ALL_TRANSFORMS,
|
||||
},
|
||||
{
|
||||
.all_transforms = ALL_TRANSFORMS,
|
||||
},
|
||||
};
|
||||
MetaOutput output;
|
||||
unsigned int n_tiles = 2;
|
||||
GList *new_modes = NULL;
|
||||
GList *new_crtcs = NULL;
|
||||
MetaOutput *output;
|
||||
unsigned int i;
|
||||
uint32_t tile_group_id;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
||||
modes_decl[i].mode_id = modes->len + i;
|
||||
g_array_append_vals (modes, modes_decl, G_N_ELEMENTS (modes_decl));
|
||||
for (i = 0; i < G_N_ELEMENTS (mode_specs); i++)
|
||||
{
|
||||
long mode_id;
|
||||
MetaCrtcMode *mode;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (crtcs_decl); i++)
|
||||
crtcs_decl[i].crtc_id = crtcs->len + i + 1;
|
||||
g_array_append_vals (crtcs, crtcs_decl, G_N_ELEMENTS (crtcs_decl));
|
||||
mode_id = g_list_length (*modes) + i + 1;
|
||||
mode = create_mode (&mode_specs[i], mode_id);
|
||||
|
||||
tile_group_id = outputs->len + 1;
|
||||
for (i = 0; i < G_N_ELEMENTS (crtcs_decl); i++)
|
||||
new_modes = g_list_append (new_modes, mode);
|
||||
}
|
||||
*modes = g_list_concat (*modes, new_modes);
|
||||
|
||||
for (i = 0; i < n_tiles; i++)
|
||||
{
|
||||
MetaCrtc *crtc;
|
||||
|
||||
crtc = g_object_new (META_TYPE_CRTC, NULL);
|
||||
crtc->gpu = gpu;
|
||||
crtc->crtc_id = g_list_length (*crtcs) + i + 1;
|
||||
crtc->all_transforms = ALL_TRANSFORMS;
|
||||
new_crtcs = g_list_append (new_crtcs, crtc);
|
||||
}
|
||||
*crtcs = g_list_concat (*crtcs, new_crtcs);
|
||||
|
||||
tile_group_id = g_list_length (*outputs) + 1;
|
||||
for (i = 0; i < n_tiles; i++)
|
||||
{
|
||||
MetaOutputDummy *output_dummy;
|
||||
MetaCrtcMode *preferred_mode;
|
||||
unsigned int j;
|
||||
unsigned int number;
|
||||
GList *l;
|
||||
|
||||
output_dummy = g_new0 (MetaOutputDummy, 1);
|
||||
*output_dummy = (MetaOutputDummy) {
|
||||
.scale = scale
|
||||
};
|
||||
|
||||
preferred_mode = &array_last (modes, MetaCrtcMode),
|
||||
output = (MetaOutput) {
|
||||
.winsys_id = outputs->len + 1,
|
||||
.name = g_strdup_printf ("LVDS%d", outputs->len + 1),
|
||||
.vendor = g_strdup ("MetaProducts Inc."),
|
||||
.product = g_strdup ("MetaMonitor"),
|
||||
.serial = g_strdup_printf ("0xC0FFEE-%d", outputs->len + 1),
|
||||
.suggested_x = -1,
|
||||
.suggested_y = -1,
|
||||
.width_mm = 222,
|
||||
.height_mm = 125,
|
||||
.subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN,
|
||||
.preferred_mode = preferred_mode,
|
||||
.n_possible_clones = 0,
|
||||
.backlight = -1,
|
||||
.connector_type = META_CONNECTOR_TYPE_LVDS,
|
||||
.tile_info = (MetaTileInfo) {
|
||||
.group_id = tile_group_id,
|
||||
.max_h_tiles = G_N_ELEMENTS (crtcs_decl),
|
||||
.max_v_tiles = 1,
|
||||
.loc_h_tile = i,
|
||||
.loc_v_tile = 0,
|
||||
.tile_w = preferred_mode->width,
|
||||
.tile_h = preferred_mode->height
|
||||
},
|
||||
.driver_private = output_dummy,
|
||||
.driver_notify =
|
||||
(GDestroyNotify) meta_output_dummy_notify_destroy
|
||||
};
|
||||
/* Arbitrary ID unique for this output */
|
||||
number = g_list_length (*outputs) + 1;
|
||||
|
||||
output.modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (modes_decl));
|
||||
for (j = 0; j < G_N_ELEMENTS (modes_decl); j++)
|
||||
output.modes[j] = &g_array_index (modes, MetaCrtcMode,
|
||||
modes->len - (j + 1));
|
||||
output.n_modes = G_N_ELEMENTS (modes_decl);
|
||||
preferred_mode = g_list_last (*modes)->data;
|
||||
|
||||
output.possible_crtcs = g_new0 (MetaCrtc *, G_N_ELEMENTS (crtcs_decl));
|
||||
for (j = 0; j < G_N_ELEMENTS (crtcs_decl); j++)
|
||||
output.possible_crtcs[j] = &g_array_index (crtcs, MetaCrtc,
|
||||
crtcs->len - (j + 1));
|
||||
output.n_possible_crtcs = G_N_ELEMENTS (crtcs_decl);
|
||||
output = g_object_new (META_TYPE_OUTPUT, NULL);
|
||||
|
||||
g_array_append_val (outputs, output);
|
||||
output->gpu = gpu;
|
||||
output->winsys_id = number;
|
||||
output->name = g_strdup_printf ("LVDS%d", number);
|
||||
output->vendor = g_strdup ("MetaProducts Inc.");
|
||||
output->product = g_strdup ("MetaMonitor");
|
||||
output->serial = g_strdup_printf ("0xC0FFEE-%d", number);
|
||||
output->suggested_x = -1;
|
||||
output->suggested_y = -1;
|
||||
output->width_mm = 222;
|
||||
output->height_mm = 125;
|
||||
output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
|
||||
output->preferred_mode = preferred_mode;
|
||||
output->n_possible_clones = 0;
|
||||
output->backlight = -1;
|
||||
output->connector_type = META_CONNECTOR_TYPE_LVDS;
|
||||
output->tile_info = (MetaTileInfo) {
|
||||
.group_id = tile_group_id,
|
||||
.max_h_tiles = n_tiles,
|
||||
.max_v_tiles = 1,
|
||||
.loc_h_tile = i,
|
||||
.loc_v_tile = 0,
|
||||
.tile_w = preferred_mode->width,
|
||||
.tile_h = preferred_mode->height
|
||||
},
|
||||
output->driver_private = output_dummy;
|
||||
output->driver_notify =
|
||||
(GDestroyNotify) meta_output_dummy_notify_destroy;
|
||||
|
||||
output->modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (mode_specs));
|
||||
for (l = new_modes, j = 0; l; l = l->next, j++)
|
||||
{
|
||||
MetaCrtcMode *mode = l->data;
|
||||
|
||||
output->modes[j] = mode;
|
||||
}
|
||||
output->n_modes = G_N_ELEMENTS (mode_specs);
|
||||
|
||||
output->possible_crtcs = g_new0 (MetaCrtc *, n_tiles);
|
||||
for (l = new_crtcs, j = 0; l; l = l->next, j++)
|
||||
{
|
||||
MetaCrtc *crtc = l->data;
|
||||
|
||||
output->possible_crtcs[j] = crtc;
|
||||
}
|
||||
output->n_possible_crtcs = n_tiles;
|
||||
|
||||
*outputs = g_list_append (*outputs, output);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,6 +318,8 @@ meta_output_dummy_notify_destroy (MetaOutput *output)
|
||||
static void
|
||||
meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
||||
{
|
||||
MetaMonitorManagerDummy *manager_dummy = META_MONITOR_MANAGER_DUMMY (manager);
|
||||
MetaGpu *gpu = manager_dummy->gpu;
|
||||
unsigned int num_monitors = 1;
|
||||
float *monitor_scales = NULL;
|
||||
const char *num_monitors_str;
|
||||
@@ -248,9 +327,9 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
||||
const char *tiled_monitors_str;
|
||||
gboolean tiled_monitors;
|
||||
unsigned int i;
|
||||
GArray *outputs;
|
||||
GArray *crtcs;
|
||||
GArray *modes;
|
||||
GList *outputs;
|
||||
GList *crtcs;
|
||||
GList *modes;
|
||||
|
||||
/* To control what monitor configuration is generated, there are two available
|
||||
* environmental variables that can be used:
|
||||
@@ -319,28 +398,22 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
||||
tiled_monitors_str = g_getenv ("MUTTER_DEBUG_TILED_DUMMY_MONITORS");
|
||||
tiled_monitors = g_strcmp0 (tiled_monitors_str, "1") == 0;
|
||||
|
||||
modes = g_array_sized_new (FALSE, TRUE, sizeof (MetaCrtcMode), MAX_MODES);
|
||||
crtcs = g_array_sized_new (FALSE, TRUE, sizeof (MetaCrtc), MAX_CRTCS);
|
||||
outputs = g_array_sized_new (FALSE, TRUE, sizeof (MetaOutput), MAX_OUTPUTS);
|
||||
modes = NULL;
|
||||
crtcs = NULL;
|
||||
outputs = NULL;
|
||||
|
||||
for (i = 0; i < num_monitors; i++)
|
||||
{
|
||||
if (tiled_monitors)
|
||||
append_tiled_monitor (modes, crtcs, outputs, monitor_scales[i]);
|
||||
append_tiled_monitor (manager,
|
||||
&modes, &crtcs, &outputs, monitor_scales[i]);
|
||||
else
|
||||
append_monitor (modes, crtcs, outputs, monitor_scales[i]);
|
||||
append_monitor (manager, &modes, &crtcs, &outputs, monitor_scales[i]);
|
||||
}
|
||||
|
||||
manager->modes = (MetaCrtcMode *) modes->data;
|
||||
manager->n_modes = modes->len;
|
||||
manager->crtcs = (MetaCrtc *) crtcs->data;
|
||||
manager->n_crtcs = crtcs->len;
|
||||
manager->outputs = (MetaOutput *) outputs->data;
|
||||
manager->n_outputs = outputs->len;
|
||||
|
||||
g_array_free (modes, FALSE);
|
||||
g_array_free (crtcs, FALSE);
|
||||
g_array_free (outputs, FALSE);
|
||||
meta_gpu_take_modes (gpu, modes);
|
||||
meta_gpu_take_crtcs (gpu, crtcs);
|
||||
meta_gpu_take_outputs (gpu, outputs);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -353,12 +426,7 @@ meta_monitor_manager_dummy_ensure_initial_config (MetaMonitorManager *manager)
|
||||
if (meta_is_stage_views_enabled ())
|
||||
meta_monitor_manager_update_logical_state (manager, config);
|
||||
else
|
||||
{
|
||||
MetaMonitorManagerDeriveFlag flags =
|
||||
META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
|
||||
|
||||
meta_monitor_manager_update_logical_state_derived (manager, flags);
|
||||
}
|
||||
meta_monitor_manager_update_logical_state_derived (manager, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -368,6 +436,8 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
||||
MetaOutputInfo **outputs,
|
||||
unsigned int n_outputs)
|
||||
{
|
||||
MetaMonitorManagerDummy *manager_dummy = META_MONITOR_MANAGER_DUMMY (manager);
|
||||
GList *l;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < n_crtcs; i++)
|
||||
@@ -431,9 +501,9 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
||||
}
|
||||
|
||||
/* Disable CRTCs not mentioned in the list */
|
||||
for (i = 0; i < manager->n_crtcs; i++)
|
||||
for (l = meta_gpu_get_crtcs (manager_dummy->gpu); l; l = l->next)
|
||||
{
|
||||
MetaCrtc *crtc = &manager->crtcs[i];
|
||||
MetaCrtc *crtc = l->data;
|
||||
|
||||
crtc->logical_monitor = NULL;
|
||||
|
||||
@@ -451,9 +521,9 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
||||
}
|
||||
|
||||
/* Disable outputs not mentioned in the list */
|
||||
for (i = 0; i < manager->n_outputs; i++)
|
||||
for (l = meta_gpu_get_outputs (manager_dummy->gpu); l; l = l->next)
|
||||
{
|
||||
MetaOutput *output = &manager->outputs[i];
|
||||
MetaOutput *output = l->data;
|
||||
|
||||
if (output->is_dirty)
|
||||
{
|
||||
@@ -648,7 +718,6 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
|
||||
{
|
||||
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (klass);
|
||||
|
||||
manager_class->read_current = meta_monitor_manager_dummy_read_current;
|
||||
manager_class->ensure_initial_config = meta_monitor_manager_dummy_ensure_initial_config;
|
||||
manager_class->apply_monitors_config = meta_monitor_manager_dummy_apply_monitors_config;
|
||||
manager_class->is_transform_handled = meta_monitor_manager_dummy_is_transform_handled;
|
||||
@@ -660,14 +729,44 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
|
||||
}
|
||||
|
||||
static void
|
||||
meta_monitor_manager_dummy_init (MetaMonitorManagerDummy *manager)
|
||||
meta_monitor_manager_dummy_init (MetaMonitorManagerDummy *manager_dummy)
|
||||
{
|
||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_dummy);
|
||||
const char *nested_offscreen_transform;
|
||||
|
||||
nested_offscreen_transform =
|
||||
g_getenv ("MUTTER_DEBUG_NESTED_OFFSCREEN_TRANSFORM");
|
||||
if (g_strcmp0 (nested_offscreen_transform, "1") == 0)
|
||||
manager->is_transform_handled = FALSE;
|
||||
manager_dummy->is_transform_handled = FALSE;
|
||||
else
|
||||
manager->is_transform_handled = TRUE;
|
||||
manager_dummy->is_transform_handled = TRUE;
|
||||
|
||||
manager_dummy->gpu = g_object_new (META_TYPE_GPU_DUMMY,
|
||||
"monitor-manager", manager,
|
||||
NULL);
|
||||
meta_monitor_manager_add_gpu (manager, manager_dummy->gpu);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_gpu_dummy_read_current (MetaGpu *gpu,
|
||||
GError **error)
|
||||
{
|
||||
MetaMonitorManager *manager = meta_gpu_get_monitor_manager (gpu);
|
||||
|
||||
meta_monitor_manager_dummy_read_current (manager);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_dummy_init (MetaGpuDummy *gpu_dummy)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_gpu_dummy_class_init (MetaGpuDummyClass *klass)
|
||||
{
|
||||
MetaGpuClass *gpu_class = META_GPU_CLASS (klass);
|
||||
|
||||
gpu_class->read_current = meta_gpu_dummy_read_current;
|
||||
}
|
||||
|
||||
@@ -24,17 +24,13 @@
|
||||
#define META_MONITOR_MANAGER_DUMMY_H
|
||||
|
||||
#include "meta-monitor-manager-private.h"
|
||||
#include "backends/meta-gpu.h"
|
||||
|
||||
#define META_TYPE_MONITOR_MANAGER_DUMMY (meta_monitor_manager_dummy_get_type ())
|
||||
#define META_MONITOR_MANAGER_DUMMY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_MONITOR_MANAGER_DUMMY, MetaMonitorManagerDummy))
|
||||
#define META_MONITOR_MANAGER_DUMMY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_MANAGER_DUMMY, MetaMonitorManagerDummyClass))
|
||||
#define META_IS_MONITOR_MANAGER_DUMMY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_MONITOR_MANAGER_DUMMY))
|
||||
#define META_IS_MONITOR_MANAGER_DUMMY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_MONITOR_MANAGER_DUMMY))
|
||||
#define META_MONITOR_MANAGER_DUMMY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_MONITOR_MANAGER_DUMMY, MetaMonitorManagerDummyClass))
|
||||
#define META_TYPE_MONITOR_MANAGER_DUMMY (meta_monitor_manager_dummy_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaMonitorManagerDummy, meta_monitor_manager_dummy,
|
||||
META, MONITOR_MANAGER_DUMMY, MetaMonitorManager)
|
||||
|
||||
typedef struct _MetaMonitorManagerDummyClass MetaMonitorManagerDummyClass;
|
||||
typedef struct _MetaMonitorManagerDummy MetaMonitorManagerDummy;
|
||||
|
||||
GType meta_monitor_manager_dummy_get_type (void);
|
||||
#define META_TYPE_GPU_DUMMY (meta_gpu_dummy_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaGpuDummy, meta_gpu_dummy, META, GPU_DUMMY, MetaGpu)
|
||||
|
||||
#endif /* META_MONITOR_MANAGER_DUMMY_H */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user