Compare commits
254 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0f88e4d3f | ||
|
|
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 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -88,6 +88,10 @@ src/pointer-constraints-unstable-v*-protocol.c
|
|||||||
src/pointer-constraints-unstable-v*-server-protocol.h
|
src/pointer-constraints-unstable-v*-server-protocol.h
|
||||||
src/xdg-foreign-unstable-v*-protocol.c
|
src/xdg-foreign-unstable-v*-protocol.c
|
||||||
src/xdg-foreign-unstable-v*-server-protocol.h
|
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/meta/meta-version.h
|
||||||
src/libmutter-*.pc
|
src/libmutter-*.pc
|
||||||
doc/reference/*.args
|
doc/reference/*.args
|
||||||
|
|||||||
66
NEWS
66
NEWS
@@ -1,3 +1,69 @@
|
|||||||
|
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]
|
||||||
|
|
||||||
|
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
|
3.26.1
|
||||||
======
|
======
|
||||||
* Fix crash when respawning shortcut inhibitor dialog [Olivier; #787568]
|
* Fix crash when respawning shortcut inhibitor dialog [Olivier; #787568]
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ source_h = \
|
|||||||
clutter-image.h \
|
clutter-image.h \
|
||||||
clutter-input-device.h \
|
clutter-input-device.h \
|
||||||
clutter-input-device-tool.h \
|
clutter-input-device-tool.h \
|
||||||
|
clutter-input-focus.h \
|
||||||
|
clutter-input-method.h \
|
||||||
clutter-interval.h \
|
clutter-interval.h \
|
||||||
clutter-keyframe-transition.h \
|
clutter-keyframe-transition.h \
|
||||||
clutter-keysyms.h \
|
clutter-keysyms.h \
|
||||||
@@ -169,6 +171,8 @@ source_c = \
|
|||||||
clutter-image.c \
|
clutter-image.c \
|
||||||
clutter-input-device.c \
|
clutter-input-device.c \
|
||||||
clutter-input-device-tool.c \
|
clutter-input-device-tool.c \
|
||||||
|
clutter-input-focus.c \
|
||||||
|
clutter-input-method.c \
|
||||||
clutter-virtual-input-device.c \
|
clutter-virtual-input-device.c \
|
||||||
clutter-interval.c \
|
clutter-interval.c \
|
||||||
clutter-keyframe-transition.c \
|
clutter-keyframe-transition.c \
|
||||||
@@ -229,6 +233,8 @@ source_h_priv = \
|
|||||||
clutter-flatten-effect.h \
|
clutter-flatten-effect.h \
|
||||||
clutter-gesture-action-private.h \
|
clutter-gesture-action-private.h \
|
||||||
clutter-id-pool.h \
|
clutter-id-pool.h \
|
||||||
|
clutter-input-focus-private.h \
|
||||||
|
clutter-input-method-private.h \
|
||||||
clutter-master-clock.h \
|
clutter-master-clock.h \
|
||||||
clutter-master-clock-default.h \
|
clutter-master-clock-default.h \
|
||||||
clutter-offscreen-effect-private.h \
|
clutter-offscreen-effect-private.h \
|
||||||
@@ -388,6 +394,7 @@ x11_source_c = \
|
|||||||
x11/clutter-keymap-x11.c \
|
x11/clutter-keymap-x11.c \
|
||||||
x11/clutter-stage-x11.c \
|
x11/clutter-stage-x11.c \
|
||||||
x11/clutter-x11-texture-pixmap.c \
|
x11/clutter-x11-texture-pixmap.c \
|
||||||
|
x11/clutter-xkb-a11y-x11.c \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
x11_source_h = \
|
x11_source_h = \
|
||||||
@@ -402,6 +409,7 @@ x11_source_h_priv = \
|
|||||||
x11/clutter-keymap-x11.h \
|
x11/clutter-keymap-x11.h \
|
||||||
x11/clutter-settings-x11.h \
|
x11/clutter-settings-x11.h \
|
||||||
x11/clutter-stage-x11.h \
|
x11/clutter-stage-x11.h \
|
||||||
|
x11/clutter-xkb-a11y-x11.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
x11_source_c_priv = \
|
x11_source_c_priv = \
|
||||||
|
|||||||
@@ -4828,8 +4828,7 @@ clutter_actor_set_scale_factor (ClutterActor *self,
|
|||||||
g_assert (pspec != NULL);
|
g_assert (pspec != NULL);
|
||||||
g_assert (scale_p != 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
|
static inline void
|
||||||
@@ -10264,10 +10263,9 @@ clutter_actor_set_position (ClutterActor *self,
|
|||||||
cur_position.x = clutter_actor_get_x (self);
|
cur_position.x = clutter_actor_get_x (self);
|
||||||
cur_position.y = clutter_actor_get_y (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],
|
||||||
_clutter_actor_create_transition (self, obj_props[PROP_POSITION],
|
&cur_position,
|
||||||
&cur_position,
|
&new_position);
|
||||||
&new_position);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ struct _ClutterBackend
|
|||||||
gint32 units_serial;
|
gint32 units_serial;
|
||||||
|
|
||||||
GList *event_translators;
|
GList *event_translators;
|
||||||
|
|
||||||
|
ClutterInputMethod *input_method;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ClutterBackendClass
|
struct _ClutterBackendClass
|
||||||
@@ -100,6 +102,8 @@ struct _ClutterBackendClass
|
|||||||
|
|
||||||
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
PangoDirection (* get_keymap_direction) (ClutterBackend *backend);
|
||||||
|
|
||||||
|
void (* bell_notify) (ClutterBackend *backend);
|
||||||
|
|
||||||
/* signals */
|
/* signals */
|
||||||
void (* resolution_changed) (ClutterBackend *backend);
|
void (* resolution_changed) (ClutterBackend *backend);
|
||||||
void (* font_changed) (ClutterBackend *backend);
|
void (* font_changed) (ClutterBackend *backend);
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ clutter_backend_finalize (GObject *gobject)
|
|||||||
|
|
||||||
g_free (backend->font_name);
|
g_free (backend->font_name);
|
||||||
clutter_backend_set_font_options (backend, NULL);
|
clutter_backend_set_font_options (backend, NULL);
|
||||||
|
g_clear_object (&backend->input_method);
|
||||||
|
|
||||||
G_OBJECT_CLASS (clutter_backend_parent_class)->finalize (gobject);
|
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);
|
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
|
CLUTTER_AVAILABLE_IN_1_8
|
||||||
CoglContext * clutter_backend_get_cogl_context (ClutterBackend *backend);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_BACKEND_H__ */
|
#endif /* __CLUTTER_BACKEND_H__ */
|
||||||
|
|||||||
@@ -145,6 +145,9 @@ struct _ClutterInputDevice
|
|||||||
guint is_enabled : 1;
|
guint is_enabled : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef void (*ClutterEmitInputDeviceEvent) (ClutterEvent *event,
|
||||||
|
ClutterInputDevice *device);
|
||||||
|
|
||||||
struct _ClutterInputDeviceClass
|
struct _ClutterInputDeviceClass
|
||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
@@ -163,6 +166,11 @@ struct _ClutterInputDeviceClass
|
|||||||
|
|
||||||
gboolean (* is_grouped) (ClutterInputDevice *device,
|
gboolean (* is_grouped) (ClutterInputDevice *device,
|
||||||
ClutterInputDevice *other_device);
|
ClutterInputDevice *other_device);
|
||||||
|
|
||||||
|
/* Keyboard accessbility */
|
||||||
|
void (* process_kbd_a11y_event) (ClutterEvent *event,
|
||||||
|
ClutterInputDevice *device,
|
||||||
|
ClutterEmitInputDeviceEvent emit_event_func);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Platform-dependent interface */
|
/* Platform-dependent interface */
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ struct _ClutterDeviceManagerPrivate
|
|||||||
{
|
{
|
||||||
/* back-pointer to the backend */
|
/* back-pointer to the backend */
|
||||||
ClutterBackend *backend;
|
ClutterBackend *backend;
|
||||||
|
|
||||||
|
/* Keyboard a11y */
|
||||||
|
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -72,6 +75,8 @@ enum
|
|||||||
DEVICE_ADDED,
|
DEVICE_ADDED,
|
||||||
DEVICE_REMOVED,
|
DEVICE_REMOVED,
|
||||||
TOOL_CHANGED,
|
TOOL_CHANGED,
|
||||||
|
KBD_A11Y_MASK_CHANGED,
|
||||||
|
KBD_A11Y_FLAGS_CHANGED,
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
@@ -196,6 +201,46 @@ clutter_device_manager_class_init (ClutterDeviceManagerClass *klass)
|
|||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
CLUTTER_TYPE_INPUT_DEVICE,
|
CLUTTER_TYPE_INPUT_DEVICE,
|
||||||
CLUTTER_TYPE_INPUT_DEVICE_TOOL);
|
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
|
static void
|
||||||
@@ -487,3 +532,43 @@ _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
|
|||||||
|
|
||||||
manager_class->compress_motion (device_manager, event, to_discard);
|
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 _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate;
|
||||||
typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass;
|
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:
|
* ClutterDeviceManager:
|
||||||
*
|
*
|
||||||
@@ -88,7 +107,9 @@ struct _ClutterDeviceManagerClass
|
|||||||
void (* compress_motion) (ClutterDeviceManager *device_manger,
|
void (* compress_motion) (ClutterDeviceManager *device_manger,
|
||||||
ClutterEvent *event,
|
ClutterEvent *event,
|
||||||
const ClutterEvent *to_discard);
|
const ClutterEvent *to_discard);
|
||||||
|
/* Keyboard accessbility */
|
||||||
|
void (* apply_kbd_a11y_settings) (ClutterDeviceManager *device_manger,
|
||||||
|
ClutterKbdA11ySettings *settings);
|
||||||
/* padding */
|
/* padding */
|
||||||
gpointer _padding[6];
|
gpointer _padding[6];
|
||||||
};
|
};
|
||||||
@@ -114,6 +135,13 @@ CLUTTER_AVAILABLE_IN_ALL
|
|||||||
ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
|
ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
|
||||||
ClutterInputDeviceType device_type);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
#endif /* __CLUTTER_DEVICE_MANAGER_H__ */
|
||||||
|
|||||||
@@ -396,6 +396,43 @@ typedef enum {
|
|||||||
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
CLUTTER_MODIFIER_MASK = 0x5c001fff
|
||||||
} ClutterModifierType;
|
} 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:
|
* ClutterActorFlags:
|
||||||
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
* @CLUTTER_ACTOR_MAPPED: the actor will be painted (is visible, and inside
|
||||||
@@ -730,8 +767,9 @@ typedef enum { /*< prefix=CLUTTER_DRAG >*/
|
|||||||
* Since: 0.6
|
* Since: 0.6
|
||||||
*/
|
*/
|
||||||
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
||||||
CLUTTER_EVENT_NONE = 0,
|
CLUTTER_EVENT_NONE = 0,
|
||||||
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0
|
CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0,
|
||||||
|
CLUTTER_EVENT_FLAG_INPUT_METHOD = 1 << 1
|
||||||
} ClutterEventFlags;
|
} ClutterEventFlags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1536,6 +1574,41 @@ typedef enum {
|
|||||||
CLUTTER_INPUT_DEVICE_MAPPING_RELATIVE,
|
CLUTTER_INPUT_DEVICE_MAPPING_RELATIVE,
|
||||||
} ClutterInputDeviceMapping;
|
} 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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_ENUMS_H__ */
|
#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
|
static gboolean
|
||||||
is_off_stage (ClutterActor *stage,
|
is_off_stage (ClutterActor *stage,
|
||||||
gfloat x,
|
gfloat x,
|
||||||
@@ -2176,7 +2191,7 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit_keyboard_event (event, device);
|
process_key_event (event, device);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -1486,10 +1486,11 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
|
|||||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||||
priv->viewport[2] * fb_scale,
|
priv->viewport[2] * fb_scale,
|
||||||
priv->viewport[3] * fb_scale);
|
priv->viewport[3] * fb_scale);
|
||||||
cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x,
|
cogl_framebuffer_set_viewport (fb,
|
||||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||||
priv->viewport[2] * fb_scale,
|
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||||
priv->viewport[3] * fb_scale);
|
priv->viewport[2] * fb_scale,
|
||||||
|
priv->viewport[3] * fb_scale);
|
||||||
|
|
||||||
read_x = dirty_x * fb_scale;
|
read_x = dirty_x * fb_scale;
|
||||||
read_y = dirty_y * fb_scale;
|
read_y = dirty_y * fb_scale;
|
||||||
@@ -3617,6 +3618,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage,
|
|||||||
ClutterStageView *view)
|
ClutterStageView *view)
|
||||||
{
|
{
|
||||||
ClutterStagePrivate *priv = stage->priv;
|
ClutterStagePrivate *priv = stage->priv;
|
||||||
|
CoglFramebuffer *fb = clutter_stage_view_get_framebuffer (view);
|
||||||
|
|
||||||
if (clutter_stage_view_is_dirty_viewport (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_x = view_layout.x * fb_scale;
|
||||||
viewport_offset_y = view_layout.y * fb_scale;
|
viewport_offset_y = view_layout.y * fb_scale;
|
||||||
cogl_set_viewport (priv->viewport[0] * fb_scale - viewport_offset_x,
|
cogl_framebuffer_set_viewport (fb,
|
||||||
priv->viewport[1] * fb_scale - viewport_offset_y,
|
priv->viewport[0] * fb_scale - viewport_offset_x,
|
||||||
priv->viewport[2] * fb_scale,
|
priv->viewport[1] * fb_scale - viewport_offset_y,
|
||||||
priv->viewport[3] * fb_scale);
|
priv->viewport[2] * fb_scale,
|
||||||
|
priv->viewport[3] * fb_scale);
|
||||||
|
|
||||||
perspective = priv->perspective;
|
perspective = priv->perspective;
|
||||||
|
|
||||||
@@ -3679,7 +3682,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage,
|
|||||||
|
|
||||||
if (clutter_stage_view_is_dirty_projection (view))
|
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);
|
clutter_stage_view_set_dirty_projection (view, FALSE);
|
||||||
}
|
}
|
||||||
@@ -4726,8 +4729,8 @@ capture_view (ClutterStage *stage,
|
|||||||
|
|
||||||
if (paint)
|
if (paint)
|
||||||
{
|
{
|
||||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
|
||||||
cogl_push_framebuffer (framebuffer);
|
cogl_push_framebuffer (framebuffer);
|
||||||
|
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||||
clutter_stage_do_paint_view (stage, view, rect);
|
clutter_stage_do_paint_view (stage, view, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4829,8 +4832,8 @@ capture_view_into (ClutterStage *stage,
|
|||||||
|
|
||||||
if (paint)
|
if (paint)
|
||||||
{
|
{
|
||||||
_clutter_stage_maybe_setup_viewport (stage, view);
|
|
||||||
cogl_push_framebuffer (framebuffer);
|
cogl_push_framebuffer (framebuffer);
|
||||||
|
_clutter_stage_maybe_setup_viewport (stage, view);
|
||||||
clutter_stage_do_paint_view (stage, view, rect);
|
clutter_stage_do_paint_view (stage, view, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
#include "clutter-units.h"
|
#include "clutter-units.h"
|
||||||
#include "clutter-paint-volume-private.h"
|
#include "clutter-paint-volume-private.h"
|
||||||
#include "clutter-scriptable.h"
|
#include "clutter-scriptable.h"
|
||||||
|
#include "clutter-input-focus.h"
|
||||||
|
|
||||||
/* cursor width in pixels */
|
/* cursor width in pixels */
|
||||||
#define DEFAULT_CURSOR_SIZE 2
|
#define DEFAULT_CURSOR_SIZE 2
|
||||||
@@ -98,6 +99,12 @@ struct _LayoutCache
|
|||||||
guint age;
|
guint age;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _ClutterTextInputFocus
|
||||||
|
{
|
||||||
|
ClutterInputFocus parent_instance;
|
||||||
|
ClutterText *text;
|
||||||
|
};
|
||||||
|
|
||||||
struct _ClutterTextPrivate
|
struct _ClutterTextPrivate
|
||||||
{
|
{
|
||||||
PangoFontDescription *font_desc;
|
PangoFontDescription *font_desc;
|
||||||
@@ -176,6 +183,10 @@ struct _ClutterTextPrivate
|
|||||||
/* Signal handler for when the :text-direction changes */
|
/* Signal handler for when the :text-direction changes */
|
||||||
guint direction_changed_id;
|
guint direction_changed_id;
|
||||||
|
|
||||||
|
ClutterInputFocus *input_focus;
|
||||||
|
ClutterInputContentHintFlags input_hints;
|
||||||
|
ClutterInputContentPurpose input_purpose;
|
||||||
|
|
||||||
/* bitfields */
|
/* bitfields */
|
||||||
guint alignment : 2;
|
guint alignment : 2;
|
||||||
guint wrap : 1;
|
guint wrap : 1;
|
||||||
@@ -236,6 +247,8 @@ enum
|
|||||||
PROP_SINGLE_LINE_MODE,
|
PROP_SINGLE_LINE_MODE,
|
||||||
PROP_SELECTED_TEXT_COLOR,
|
PROP_SELECTED_TEXT_COLOR,
|
||||||
PROP_SELECTED_TEXT_COLOR_SET,
|
PROP_SELECTED_TEXT_COLOR_SET,
|
||||||
|
PROP_INPUT_HINTS,
|
||||||
|
PROP_INPUT_PURPOSE,
|
||||||
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
@@ -269,6 +282,112 @@ static const ClutterColor default_selected_text_color = { 0, 0, 0, 255 };
|
|||||||
static ClutterAnimatableIface *parent_animatable_iface = NULL;
|
static ClutterAnimatableIface *parent_animatable_iface = NULL;
|
||||||
static ClutterScriptableIface *parent_scriptable_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_scriptable_iface_init (ClutterScriptableIface *iface);
|
||||||
static void clutter_animatable_iface_init (ClutterAnimatableIface *iface);
|
static void clutter_animatable_iface_init (ClutterAnimatableIface *iface);
|
||||||
|
|
||||||
@@ -1009,6 +1128,22 @@ clutter_text_position_to_coords (ClutterText *self,
|
|||||||
return TRUE;
|
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
|
static inline void
|
||||||
clutter_text_ensure_cursor_position (ClutterText *self)
|
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_EVENT], 0, &cursor_pos);
|
||||||
|
|
||||||
g_signal_emit (self, text_signals[CURSOR_CHANGED], 0);
|
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);
|
clutter_text_set_buffer (self, NULL);
|
||||||
g_free (priv->font_name);
|
g_free (priv->font_name);
|
||||||
|
|
||||||
|
g_clear_object (&priv->input_focus);
|
||||||
|
|
||||||
G_OBJECT_CLASS (clutter_text_parent_class)->finalize (gobject);
|
G_OBJECT_CLASS (clutter_text_parent_class)->finalize (gobject);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1859,6 +1998,7 @@ clutter_text_press (ClutterActor *actor,
|
|||||||
return CLUTTER_EVENT_PROPAGATE;
|
return CLUTTER_EVENT_PROPAGATE;
|
||||||
|
|
||||||
clutter_actor_grab_key_focus (actor);
|
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
|
/* if the actor is empty we just reset everything and not
|
||||||
* set up the dragging of the selection since there's nothing
|
* 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);
|
g_assert (pool != NULL);
|
||||||
|
|
||||||
/* we allow passing synthetic events that only contain
|
/* 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;
|
res = FALSE;
|
||||||
else
|
else
|
||||||
res = clutter_binding_pool_activate (pool, event->keyval,
|
res = clutter_binding_pool_activate (pool, event->keyval,
|
||||||
@@ -2105,6 +2247,10 @@ clutter_text_key_press (ClutterActor *actor,
|
|||||||
{
|
{
|
||||||
gunichar key_unichar;
|
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 */
|
/* Skip keys when control is pressed */
|
||||||
key_unichar = clutter_event_get_key_unicode ((ClutterEvent *) event);
|
key_unichar = clutter_event_get_key_unicode ((ClutterEvent *) event);
|
||||||
|
|
||||||
@@ -2141,6 +2287,20 @@ clutter_text_key_press (ClutterActor *actor,
|
|||||||
return CLUTTER_EVENT_PROPAGATE;
|
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
|
static void
|
||||||
clutter_text_compute_layout_offsets (ClutterText *self,
|
clutter_text_compute_layout_offsets (ClutterText *self,
|
||||||
PangoLayout *layout,
|
PangoLayout *layout,
|
||||||
@@ -2663,6 +2823,14 @@ static void
|
|||||||
clutter_text_key_focus_in (ClutterActor *actor)
|
clutter_text_key_focus_in (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
|
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;
|
priv->has_focus = TRUE;
|
||||||
|
|
||||||
@@ -2673,9 +2841,17 @@ static void
|
|||||||
clutter_text_key_focus_out (ClutterActor *actor)
|
clutter_text_key_focus_out (ClutterActor *actor)
|
||||||
{
|
{
|
||||||
ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
|
ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv;
|
||||||
|
ClutterBackend *backend = clutter_get_default_backend ();
|
||||||
|
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
|
||||||
|
|
||||||
priv->has_focus = FALSE;
|
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);
|
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->get_preferred_height = clutter_text_get_preferred_height;
|
||||||
actor_class->allocate = clutter_text_allocate;
|
actor_class->allocate = clutter_text_allocate;
|
||||||
actor_class->key_press_event = clutter_text_key_press;
|
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_press_event = clutter_text_button_press;
|
||||||
actor_class->button_release_event = clutter_text_button_release;
|
actor_class->button_release_event = clutter_text_button_release;
|
||||||
actor_class->motion_event = clutter_text_motion;
|
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;
|
obj_props[PROP_SELECTED_TEXT_COLOR_SET] = pspec;
|
||||||
g_object_class_install_property (gobject_class, 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:
|
* ClutterText::text-changed:
|
||||||
* @self: the #ClutterText that emitted the signal
|
* @self: the #ClutterText that emitted the signal
|
||||||
@@ -4169,6 +4362,8 @@ clutter_text_init (ClutterText *self)
|
|||||||
g_signal_connect (self, "notify::text-direction",
|
g_signal_connect (self, "notify::text-direction",
|
||||||
G_CALLBACK (clutter_text_direction_changed_cb),
|
G_CALLBACK (clutter_text_direction_changed_cb),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
priv->input_focus = clutter_text_input_focus_new (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4459,6 +4654,8 @@ void
|
|||||||
clutter_text_set_editable (ClutterText *self,
|
clutter_text_set_editable (ClutterText *self,
|
||||||
gboolean editable)
|
gboolean editable)
|
||||||
{
|
{
|
||||||
|
ClutterBackend *backend = clutter_get_default_backend ();
|
||||||
|
ClutterInputMethod *method = clutter_backend_get_input_method (backend);
|
||||||
ClutterTextPrivate *priv;
|
ClutterTextPrivate *priv;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_TEXT (self));
|
g_return_if_fail (CLUTTER_IS_TEXT (self));
|
||||||
@@ -4469,6 +4666,14 @@ clutter_text_set_editable (ClutterText *self,
|
|||||||
{
|
{
|
||||||
priv->editable = editable;
|
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));
|
clutter_text_queue_redraw (CLUTTER_ACTOR (self));
|
||||||
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_EDITABLE]);
|
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;
|
*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 *x,
|
||||||
gint *y);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_TEXT_H__ */
|
#endif /* __CLUTTER_TEXT_H__ */
|
||||||
|
|||||||
@@ -97,6 +97,9 @@ typedef struct _ClutterInputDeviceTool ClutterInputDeviceTool;
|
|||||||
typedef struct _ClutterInputDevice ClutterInputDevice;
|
typedef struct _ClutterInputDevice ClutterInputDevice;
|
||||||
typedef struct _ClutterVirtualInputDevice ClutterVirtualInputDevice;
|
typedef struct _ClutterVirtualInputDevice ClutterVirtualInputDevice;
|
||||||
|
|
||||||
|
typedef struct _ClutterInputMethod ClutterInputMethod;
|
||||||
|
typedef struct _ClutterInputFocus ClutterInputFocus;
|
||||||
|
|
||||||
typedef CoglMatrix ClutterMatrix;
|
typedef CoglMatrix ClutterMatrix;
|
||||||
|
|
||||||
typedef union _ClutterEvent ClutterEvent;
|
typedef union _ClutterEvent ClutterEvent;
|
||||||
|
|||||||
@@ -72,6 +72,8 @@
|
|||||||
#include "clutter-image.h"
|
#include "clutter-image.h"
|
||||||
#include "clutter-input-device.h"
|
#include "clutter-input-device.h"
|
||||||
#include "clutter-input-device-tool.h"
|
#include "clutter-input-device-tool.h"
|
||||||
|
#include "clutter-input-method.h"
|
||||||
|
#include "clutter-input-focus.h"
|
||||||
#include "clutter-interval.h"
|
#include "clutter-interval.h"
|
||||||
#include "clutter-keyframe-transition.h"
|
#include "clutter-keyframe-transition.h"
|
||||||
#include "clutter-keysyms.h"
|
#include "clutter-keysyms.h"
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
#include "clutter-main.h"
|
#include "clutter-main.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
|
#include "clutter-settings-private.h"
|
||||||
|
|
||||||
#ifdef COGL_HAS_EGL_SUPPORT
|
#ifdef COGL_HAS_EGL_SUPPORT
|
||||||
#include "clutter-egl.h"
|
#include "clutter-egl.h"
|
||||||
@@ -60,6 +61,8 @@ clutter_backend_egl_native_dispose (GObject *gobject)
|
|||||||
{
|
{
|
||||||
ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (gobject);
|
ClutterBackendEglNative *backend_egl_native = CLUTTER_BACKEND_EGL_NATIVE (gobject);
|
||||||
|
|
||||||
|
g_clear_object (&backend_egl_native->xsettings);
|
||||||
|
|
||||||
if (backend_egl_native->event_timer != NULL)
|
if (backend_egl_native->event_timer != NULL)
|
||||||
{
|
{
|
||||||
g_timer_destroy (backend_egl_native->event_timer);
|
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;
|
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
|
static void
|
||||||
clutter_backend_egl_native_init (ClutterBackendEglNative *backend_egl_native)
|
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 ();
|
backend_egl_native->event_timer = g_timer_new ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ struct _ClutterBackendEglNative
|
|||||||
|
|
||||||
/* event timer */
|
/* event timer */
|
||||||
GTimer *event_timer;
|
GTimer *event_timer;
|
||||||
|
|
||||||
|
/* "xsettings" is still the defacto place for Xft settings, even in Wayland */
|
||||||
|
GSettings *xsettings;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ClutterBackendEglNativeClass
|
struct _ClutterBackendEglNativeClass
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ notify_touch_event (ClutterInputDevice *input_device,
|
|||||||
&event->touch.y);
|
&event->touch.y);
|
||||||
|
|
||||||
/* "NULL" sequences are special cased in clutter */
|
/* "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);
|
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
|
||||||
|
|
||||||
if (evtype == CLUTTER_TOUCH_BEGIN ||
|
if (evtype == CLUTTER_TOUCH_BEGIN ||
|
||||||
@@ -1459,6 +1459,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
|
|||||||
slot = libinput_event_touch_get_slot (touch_event);
|
slot = libinput_event_touch_get_slot (touch_event);
|
||||||
time_us = libinput_event_touch_get_time_usec (touch_event);
|
time_us = libinput_event_touch_get_time_usec (touch_event);
|
||||||
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
||||||
|
if (!touch_state)
|
||||||
|
break;
|
||||||
|
|
||||||
notify_touch_event (device, CLUTTER_TOUCH_END, time_us, slot,
|
notify_touch_event (device, CLUTTER_TOUCH_END, time_us, slot,
|
||||||
touch_state->coords.x, touch_state->coords.y);
|
touch_state->coords.x, touch_state->coords.y);
|
||||||
@@ -1497,6 +1499,9 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
|
|||||||
stage_height);
|
stage_height);
|
||||||
|
|
||||||
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
touch_state = clutter_seat_evdev_get_touch (seat, slot);
|
||||||
|
if (!touch_state)
|
||||||
|
break;
|
||||||
|
|
||||||
touch_state->coords.x = x;
|
touch_state->coords.x = x;
|
||||||
touch_state->coords.y = y;
|
touch_state->coords.y = y;
|
||||||
|
|
||||||
@@ -1923,6 +1928,18 @@ clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_mange
|
|||||||
dy_unaccel + dst_dy_unaccel);
|
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
|
* GObject implementation
|
||||||
*/
|
*/
|
||||||
@@ -2065,6 +2082,7 @@ clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass)
|
|||||||
manager_class->get_device = clutter_device_manager_evdev_get_device;
|
manager_class->get_device = clutter_device_manager_evdev_get_device;
|
||||||
manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_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->compress_motion = clutter_device_manager_evdev_compress_motion;
|
||||||
|
manager_class->apply_kbd_a11y_settings = clutter_device_manager_evdev_apply_kbd_a11y_settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2185,7 +2203,7 @@ _clutter_device_manager_evdev_acquire_device_id (ClutterDeviceManagerEvdev *mana
|
|||||||
|
|
||||||
first = g_list_first (priv->free_device_ids);
|
first = g_list_first (priv->free_device_ids);
|
||||||
next_id = GPOINTER_TO_INT (first->data);
|
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;
|
return next_id;
|
||||||
}
|
}
|
||||||
@@ -2304,7 +2322,7 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev)
|
|||||||
0, /* depressed */
|
0, /* depressed */
|
||||||
latched_mods,
|
latched_mods,
|
||||||
locked_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->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);
|
seat->num_lock_led = xkb_keymap_led_get_index (priv->keymap, XKB_LED_NAME_NUM);
|
||||||
@@ -2452,6 +2470,7 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
|
|||||||
xkb_mod_mask_t latched_mods;
|
xkb_mod_mask_t latched_mods;
|
||||||
xkb_mod_mask_t locked_mods;
|
xkb_mod_mask_t locked_mods;
|
||||||
struct xkb_state *state;
|
struct xkb_state *state;
|
||||||
|
GSList *l;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev));
|
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev));
|
||||||
|
|
||||||
@@ -2463,6 +2482,12 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
|
|||||||
locked_mods = xkb_state_serialize_mods (state, XKB_STATE_MODS_LOCKED);
|
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);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2472,12 +2497,9 @@ xkb_layout_index_t
|
|||||||
clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev)
|
clutter_evdev_get_keyboard_layout_index (ClutterDeviceManager *evdev)
|
||||||
{
|
{
|
||||||
ClutterDeviceManagerEvdev *manager_evdev;
|
ClutterDeviceManagerEvdev *manager_evdev;
|
||||||
struct xkb_state *state;
|
|
||||||
|
|
||||||
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
|
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
|
||||||
state = manager_evdev->priv->main_seat->xkb;
|
return manager_evdev->priv->main_seat->layout_idx;
|
||||||
|
|
||||||
return xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_LOCKED);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -70,6 +70,29 @@ struct _ClutterInputDeviceEvdev
|
|||||||
cairo_matrix_t device_matrix;
|
cairo_matrix_t device_matrix;
|
||||||
gdouble device_aspect_ratio; /* w:h */
|
gdouble device_aspect_ratio; /* w:h */
|
||||||
gdouble output_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;
|
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 *x,
|
||||||
gfloat *y);
|
gfloat *y);
|
||||||
|
|
||||||
|
void clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device,
|
||||||
|
ClutterKbdA11ySettings *settings);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */
|
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */
|
||||||
|
|||||||
@@ -45,6 +45,10 @@
|
|||||||
|
|
||||||
#define DISCRETE_SCROLL_STEP 10.0
|
#define DISCRETE_SCROLL_STEP 10.0
|
||||||
|
|
||||||
|
#ifndef BTN_STYLUS3
|
||||||
|
#define BTN_STYLUS3 0x149 /* Linux 4.15 */
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat,
|
clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat,
|
||||||
struct libinput_seat *libinput_seat)
|
struct libinput_seat *libinput_seat)
|
||||||
@@ -492,6 +496,10 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev *seat,
|
|||||||
button_nr = CLUTTER_BUTTON_MIDDLE;
|
button_nr = CLUTTER_BUTTON_MIDDLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x149: /* BTN_STYLUS3 */
|
||||||
|
button_nr = 8;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* For compatibility reasons, all additional buttons go after the old 4-7 scroll ones */
|
/* 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)
|
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 caps_lock_led;
|
||||||
xkb_led_index_t num_lock_led;
|
xkb_led_index_t num_lock_led;
|
||||||
xkb_led_index_t scroll_lock_led;
|
xkb_led_index_t scroll_lock_led;
|
||||||
|
xkb_layout_index_t layout_idx;
|
||||||
uint32_t button_state;
|
uint32_t button_state;
|
||||||
int button_count[KEY_CNT];
|
int button_count[KEY_CNT];
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,6 @@ static const gchar *atom_names[] = {
|
|||||||
#define N_ATOM_NAMES G_N_ELEMENTS (atom_names)
|
#define N_ATOM_NAMES G_N_ELEMENTS (atom_names)
|
||||||
|
|
||||||
/* various flags corresponding to pre init setup calls */
|
/* 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 _no_xevent_retrieval = FALSE;
|
||||||
static gboolean clutter_enable_xinput = TRUE;
|
static gboolean clutter_enable_xinput = TRUE;
|
||||||
static gboolean clutter_enable_argb = FALSE;
|
static gboolean clutter_enable_argb = FALSE;
|
||||||
@@ -682,8 +681,7 @@ clutter_backend_x11_get_renderer (ClutterBackend *backend,
|
|||||||
|
|
||||||
/* set the display object we're using */
|
/* set the display object we're using */
|
||||||
cogl_xlib_renderer_set_foreign_display (renderer, xdisplay);
|
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;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1028,30 +1026,6 @@ clutter_x11_has_event_retrieval (void)
|
|||||||
return !_no_xevent_retrieval;
|
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:
|
* clutter_x11_get_default_screen:
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "clutter-event-translator.h"
|
#include "clutter-event-translator.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
|
#include "clutter-xkb-a11y-x11.h"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -352,9 +353,11 @@ static void
|
|||||||
clutter_device_manager_x11_constructed (GObject *gobject)
|
clutter_device_manager_x11_constructed (GObject *gobject)
|
||||||
{
|
{
|
||||||
ClutterDeviceManagerX11 *manager_x11;
|
ClutterDeviceManagerX11 *manager_x11;
|
||||||
|
ClutterDeviceManager *manager;
|
||||||
ClutterBackendX11 *backend_x11;
|
ClutterBackendX11 *backend_x11;
|
||||||
|
|
||||||
manager_x11 = CLUTTER_DEVICE_MANAGER_X11 (gobject);
|
manager_x11 = CLUTTER_DEVICE_MANAGER_X11 (gobject);
|
||||||
|
manager = CLUTTER_DEVICE_MANAGER (gobject);
|
||||||
|
|
||||||
g_object_get (gobject, "backend", &backend_x11, NULL);
|
g_object_get (gobject, "backend", &backend_x11, NULL);
|
||||||
g_assert (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,
|
_clutter_input_device_set_associated_device (manager_x11->core_keyboard,
|
||||||
manager_x11->core_pointer);
|
manager_x11->core_pointer);
|
||||||
|
|
||||||
|
clutter_device_manager_x11_a11y_init (manager);
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (clutter_device_manager_x11_parent_class)->constructed)
|
if (G_OBJECT_CLASS (clutter_device_manager_x11_parent_class)->constructed)
|
||||||
G_OBJECT_CLASS (clutter_device_manager_x11_parent_class)->constructed (gobject);
|
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_core_device = clutter_device_manager_x11_get_core_device;
|
||||||
manager_class->get_device = clutter_device_manager_x11_get_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->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
|
static void
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
#include "clutter-event-translator.h"
|
#include "clutter-event-translator.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
|
#include "clutter-xkb-a11y-x11.h"
|
||||||
|
|
||||||
#include <X11/extensions/XInput2.h>
|
#include <X11/extensions/XInput2.h>
|
||||||
|
|
||||||
@@ -1987,6 +1988,8 @@ clutter_device_manager_xi2_constructed (GObject *gobject)
|
|||||||
|
|
||||||
XSync (backend_x11->xdpy, False);
|
XSync (backend_x11->xdpy, False);
|
||||||
|
|
||||||
|
clutter_device_manager_x11_a11y_init (manager);
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (clutter_device_manager_xi2_parent_class)->constructed)
|
if (G_OBJECT_CLASS (clutter_device_manager_xi2_parent_class)->constructed)
|
||||||
G_OBJECT_CLASS (clutter_device_manager_xi2_parent_class)->constructed (gobject);
|
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->get_device = clutter_device_manager_xi2_get_device;
|
||||||
manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events;
|
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->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
|
static void
|
||||||
|
|||||||
@@ -161,9 +161,6 @@ gint clutter_x11_event_get_key_group (const ClutterEvent *event);
|
|||||||
CLUTTER_AVAILABLE_IN_ALL
|
CLUTTER_AVAILABLE_IN_ALL
|
||||||
guint clutter_x11_event_sequence_get_touch_detail (const ClutterEventSequence *sequence);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_X11_H__ */
|
#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_x == 4.0);
|
||||||
g_assert (scale_y == 2.0);
|
g_assert (scale_y == 2.0);
|
||||||
g_assert (gravity == CLUTTER_GRAVITY_NONE);
|
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);
|
| NOTIFY_SCALE_GRAVITY);
|
||||||
assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2,
|
assert_coords (state, 100 + 10 - 10 * 4, 200 + 20 - 20 * 2,
|
||||||
100 + 10 + (RECT_WIDTH - 10) * 4,
|
100 + 10 + (RECT_WIDTH - 10) * 4,
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
#include <cogl/winsys/cogl-winsys-private.h>
|
#include <cogl/winsys/cogl-winsys-private.h>
|
||||||
|
|
||||||
void cogl_renderer_set_custom_winsys (CoglRenderer *renderer,
|
void cogl_renderer_set_custom_winsys (CoglRenderer *renderer,
|
||||||
CoglCustomWinsysVtableGetter winsys_vtable_getter);
|
CoglCustomWinsysVtableGetter winsys_vtable_getter,
|
||||||
|
void *user_data);
|
||||||
|
|
||||||
#endif /* __COGL_MUTTER_H___ */
|
#endif /* __COGL_MUTTER_H___ */
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ struct _CoglRenderer
|
|||||||
const CoglDriverVtable *driver_vtable;
|
const CoglDriverVtable *driver_vtable;
|
||||||
const CoglTextureDriver *texture_driver;
|
const CoglTextureDriver *texture_driver;
|
||||||
const CoglWinsysVtable *winsys_vtable;
|
const CoglWinsysVtable *winsys_vtable;
|
||||||
|
void *custom_winsys_user_data;
|
||||||
CoglCustomWinsysVtableGetter custom_winsys_vtable_getter;
|
CoglCustomWinsysVtableGetter custom_winsys_vtable_getter;
|
||||||
CoglWinsysID winsys_id_override;
|
CoglWinsysID winsys_id_override;
|
||||||
GList *constraints;
|
GList *constraints;
|
||||||
|
|||||||
@@ -566,8 +566,10 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer,
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_renderer_set_custom_winsys (CoglRenderer *renderer,
|
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;
|
renderer->custom_winsys_vtable_getter = winsys_vtable_getter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -542,285 +542,6 @@ cogl_texture_set_data (CoglTexture *texture,
|
|||||||
error);
|
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
|
static CoglBool
|
||||||
get_texture_bits_via_offscreen (CoglTexture *meta_texture,
|
get_texture_bits_via_offscreen (CoglTexture *meta_texture,
|
||||||
CoglTexture *sub_texture,
|
CoglTexture *sub_texture,
|
||||||
@@ -1156,25 +877,13 @@ cogl_texture_get_data (CoglTexture *texture,
|
|||||||
tg_data.success = FALSE;
|
tg_data.success = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: In some cases _cogl_texture_2d_download_from_gl may fail
|
/* XXX: In some cases this api may fail to read back the texture
|
||||||
* to read back the texture data; such as for GLES which doesn't
|
* data; such as for GLES which doesn't support glGetTexImage
|
||||||
* support glGetTexImage, so here we fallback to drawing the
|
*/
|
||||||
* texture and reading the pixels from the framebuffer. */
|
|
||||||
if (!tg_data.success)
|
if (!tg_data.success)
|
||||||
{
|
{
|
||||||
if (!_cogl_texture_draw_and_read (texture, target_bmp,
|
cogl_object_unref (target_bmp);
|
||||||
closest_gl_format,
|
return 0;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Was intermediate used? */
|
/* Was intermediate used? */
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer,
|
|||||||
CoglBool enable);
|
CoglBool enable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_xlib_renderer_set_threaded_swap_wait_enabled:
|
* cogl_xlib_renderer_set_threaded_swap_wait_enabled: (skip)
|
||||||
* @renderer: a #CoglRenderer
|
* @renderer: a #CoglRenderer
|
||||||
* @enable: The new value
|
* @enable: The new value
|
||||||
*
|
*
|
||||||
|
|||||||
33
configure.ac
33
configure.ac
@@ -1,8 +1,8 @@
|
|||||||
AC_PREREQ(2.62)
|
AC_PREREQ(2.62)
|
||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [26])
|
m4_define([mutter_minor_version], [27])
|
||||||
m4_define([mutter_micro_version], [1])
|
m4_define([mutter_micro_version], [91])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
@@ -80,6 +80,7 @@ CANBERRA_GTK_VERSION=0.26
|
|||||||
LIBWACOM_VERSION=0.13
|
LIBWACOM_VERSION=0.13
|
||||||
|
|
||||||
MUTTER_PC_MODULES="
|
MUTTER_PC_MODULES="
|
||||||
|
gl
|
||||||
egl
|
egl
|
||||||
gtk+-3.0 >= 3.19.8
|
gtk+-3.0 >= 3.19.8
|
||||||
gio-unix-2.0 >= 2.35.1
|
gio-unix-2.0 >= 2.35.1
|
||||||
@@ -104,6 +105,7 @@ MUTTER_PC_MODULES="
|
|||||||
xcb-randr
|
xcb-randr
|
||||||
xcb-res
|
xcb-res
|
||||||
"
|
"
|
||||||
|
XWAYLAND_GRAB_DEFAULT_ACCESS_RULES="gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr"
|
||||||
|
|
||||||
GLIB_GSETTINGS
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
@@ -239,12 +241,11 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(remote-desktop,
|
AC_ARG_ENABLE(remote-desktop,
|
||||||
AS_HELP_STRING([--enable-remote-desktop], [enable support for remote desktop and screen cast]),
|
AS_HELP_STRING([--enable-remote-desktop], [enable support for remote desktop and screen cast]),,
|
||||||
enable_remote_desktop=yes,
|
|
||||||
enable_remote_desktop=no
|
enable_remote_desktop=no
|
||||||
)
|
)
|
||||||
AS_IF([test "$enable_remote_desktop" = "yes"], [
|
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])
|
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"])
|
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)
|
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,
|
AC_ARG_ENABLE(native-backend,
|
||||||
AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) 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"])
|
AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test "$have_native_backend" = "yes"])
|
||||||
|
|
||||||
AC_ARG_ENABLE(egl-device,
|
AC_ARG_ENABLE(egl-device,
|
||||||
AS_HELP_STRING([--enable-egl-device], [enable support for EGLDevice on top of KMS]),
|
AS_HELP_STRING([--enable-egl-device], [enable support for EGLDevice on top of KMS]),,
|
||||||
enable_egl_device=yes,
|
|
||||||
enable_egl_device=no
|
enable_egl_device=no
|
||||||
)
|
)
|
||||||
AS_IF([test "$enable_egl_device" = "yes"], [
|
AS_IF([test "$enable_egl_device" = "yes"], [
|
||||||
@@ -303,12 +303,27 @@ AS_IF([test "$have_wayland" = "yes"], [
|
|||||||
AC_SUBST([WAYLAND_SCANNER])
|
AC_SUBST([WAYLAND_SCANNER])
|
||||||
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
|
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_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
|
||||||
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
|
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
|
||||||
])
|
])
|
||||||
AM_CONDITIONAL([HAVE_WAYLAND],[test "$have_wayland" = "yes"])
|
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],
|
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
|
||||||
AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
|
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"
|
<KeyListEntry name="move-to-workspace-last"
|
||||||
description="Move window to last workspace" />
|
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"
|
<KeyListEntry name="move-to-workspace-up"
|
||||||
description="Move window one workspace up" />
|
description="Move window one workspace up" />
|
||||||
|
|
||||||
@@ -125,12 +119,6 @@
|
|||||||
<KeyListEntry name="switch-to-workspace-last"
|
<KeyListEntry name="switch-to-workspace-last"
|
||||||
description="Switch to last workspace" />
|
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"
|
<KeyListEntry name="switch-to-workspace-up"
|
||||||
description="Move to workspace above" />
|
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="unmaximize" description="Restore window"/>
|
||||||
|
|
||||||
<KeyListEntry name="toggle-shaded" description="Toggle shaded state"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="close" description="Close window"/>
|
<KeyListEntry name="close" description="Close window"/>
|
||||||
|
|
||||||
<KeyListEntry name="minimize" description="Hide window"/>
|
<KeyListEntry name="minimize" description="Hide window"/>
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ xml_DATA = \
|
|||||||
50-mutter-system.xml \
|
50-mutter-system.xml \
|
||||||
50-mutter-windows.xml
|
50-mutter-windows.xml
|
||||||
|
|
||||||
|
if HAVE_WAYLAND
|
||||||
|
xml_DATA += \
|
||||||
|
50-mutter-wayland.xml
|
||||||
|
endif
|
||||||
|
|
||||||
gschema_in_files = \
|
gschema_in_files = \
|
||||||
org.gnome.mutter.gschema.xml.in \
|
org.gnome.mutter.gschema.xml.in \
|
||||||
org.gnome.mutter.wayland.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
|
%.gschema.xml: %.gschema.xml.in Makefile
|
||||||
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_PACKAGE)|g' \
|
$(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 $@
|
$< > $@ || rm $@
|
||||||
|
|
||||||
@GSETTINGS_RULES@
|
@GSETTINGS_RULES@
|
||||||
|
|||||||
@@ -50,8 +50,52 @@
|
|||||||
<summary>Switch to VT 12</summary>
|
<summary>Switch to VT 12</summary>
|
||||||
</key>
|
</key>
|
||||||
<key name="restore-shortcuts" type="as">
|
<key name="restore-shortcuts" type="as">
|
||||||
<default><![CDATA[['<Shift><Control>Escape']]]></default>
|
<default><![CDATA[['<Super>Escape']]]></default>
|
||||||
<summary>Re-enable shortcuts</summary>
|
<summary>Re-enable shortcuts</summary>
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</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>
|
</schemalist>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# Please keep this file sorted alphabetically.
|
# Please keep this file sorted alphabetically.
|
||||||
data/50-mutter-navigation.xml
|
data/50-mutter-navigation.xml
|
||||||
data/50-mutter-system.xml
|
data/50-mutter-system.xml
|
||||||
|
data/50-mutter-wayland.xml
|
||||||
data/50-mutter-windows.xml
|
data/50-mutter-windows.xml
|
||||||
data/mutter.desktop.in
|
data/mutter.desktop.in
|
||||||
data/org.gnome.mutter.gschema.xml.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-image.c
|
||||||
clutter/clutter/clutter-input-device.c
|
clutter/clutter/clutter-input-device.c
|
||||||
clutter/clutter/clutter-input-device-tool.c
|
clutter/clutter/clutter-input-device-tool.c
|
||||||
|
clutter/clutter/clutter-input-method.c
|
||||||
clutter/clutter/clutter-interval.c
|
clutter/clutter/clutter-interval.c
|
||||||
clutter/clutter/clutter-layout-manager.c
|
clutter/clutter/clutter-layout-manager.c
|
||||||
clutter/clutter/clutter-layout-meta.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"
|
"Project-Id-Version: metacity.HEAD\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
||||||
"keywords=I18N+L10N&component=general\n"
|
"keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-06-18 21:26+0200\n"
|
"POT-Creation-Date: 2017-11-03 10:20+0200\n"
|
||||||
"PO-Revision-Date: 2017-06-18 21:27+0200\n"
|
"PO-Revision-Date: 2017-11-03 10:22+0200\n"
|
||||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
@@ -24,448 +24,10 @@ msgstr ""
|
|||||||
"X-Generator: Virtaal 1.0.0-beta1\n"
|
"X-Generator: Virtaal 1.0.0-beta1\n"
|
||||||
"X-Project-Style: gnome\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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1866
|
#: ../src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -473,113 +35,113 @@ msgstr ""
|
|||||||
#. 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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1888
|
#: ../src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "غيّر الشاشة"
|
msgstr "غيّر الشاشة"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:1890
|
#: ../src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
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"
|
msgid "Built-in display"
|
||||||
msgstr "شاشة مدمجة"
|
msgstr "شاشة مدمجة"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:902
|
#: ../src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "غير معروفة"
|
msgstr "غير معروفة"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:904
|
#: ../src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "شاشة غير معروفة"
|
msgstr "شاشة غير معروفة"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:912
|
#: ../src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: ../src/compositor/compositor.c:476
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Bell event"
|
||||||
msgstr "حدث جرس"
|
msgstr "حدث جرس"
|
||||||
|
|
||||||
#: src/core/display.c:608
|
#: ../src/core/display.c:608
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display “%s”\n"
|
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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "عطّل الاتصال بمدير الجلسة"
|
msgstr "عطّل الاتصال بمدير الجلسة"
|
||||||
|
|
||||||
#: src/core/main.c:195
|
#: ../src/core/main.c:195
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "استبدل بمدير النوافذ الذي يعمل"
|
msgstr "استبدل بمدير النوافذ الذي يعمل"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: ../src/core/main.c:201
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "حدّد رقم هويّة إدارة الجلسة"
|
msgstr "حدّد رقم هويّة إدارة الجلسة"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: ../src/core/main.c:206
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "معراض س الذي سيستعمل"
|
msgstr "معراض س الذي سيستعمل"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: ../src/core/main.c:212
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "ابدأ الجلسة من ملف محفوظ"
|
msgstr "ابدأ الجلسة من ملف محفوظ"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: ../src/core/main.c:218
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "اجعل نداءات س متزامنة"
|
msgstr "اجعل نداءات س متزامنة"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: ../src/core/main.c:225
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: ../src/core/main.c:231
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/core/main.c:239
|
#: ../src/core/main.c:239
|
||||||
msgid "Run as a full display server, rather than nested"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Translators: %s is a window title
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: ../src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "“%s” is not responding."
|
msgid "“%s” is not responding."
|
||||||
msgstr "”%s“ لا يستجيب."
|
msgstr "”%s“ لا يستجيب."
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:149
|
#: ../src/core/meta-close-dialog-default.c:149
|
||||||
msgid "Application is not responding."
|
msgid "Application is not responding."
|
||||||
msgstr "لا يستجيب التطبيق"
|
msgstr "لا يستجيب التطبيق"
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:154
|
#: ../src/core/meta-close-dialog-default.c:154
|
||||||
msgid ""
|
msgid ""
|
||||||
"You may choose to wait a short while for it to continue or force the "
|
"You may choose to wait a short while for it to continue or force the "
|
||||||
"application to quit entirely."
|
"application to quit entirely."
|
||||||
msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."
|
msgstr "ربما ترغب في الانتظار قليلا ليُكمِل أو إجبار التطبيق على الإنهاء كُلّية."
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:161
|
#: ../src/core/meta-close-dialog-default.c:161
|
||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "أ_جبر الإنهاء"
|
msgstr "أ_جبر الإنهاء"
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:161
|
#: ../src/core/meta-close-dialog-default.c:161
|
||||||
msgid "_Wait"
|
msgid "_Wait"
|
||||||
msgstr "ا_نتظر"
|
msgstr "ا_نتظر"
|
||||||
|
|
||||||
#: src/core/mutter.c:39
|
#: ../src/core/mutter.c:39
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||||
@@ -592,56 +154,289 @@ msgstr ""
|
|||||||
"هذا برنامج حر، راجع المصدر لشروط النسخ.\n"
|
"هذا برنامج حر، راجع المصدر لشروط النسخ.\n"
|
||||||
"لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n"
|
"لا يوجد أي ضمان: و لا حتى ضمان قابلية التسويق أو المناسبة لأي هدف.\n"
|
||||||
|
|
||||||
#: src/core/mutter.c:53
|
#: ../src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "اطبع الإصدارة"
|
msgstr "اطبع الإصدارة"
|
||||||
|
|
||||||
#: src/core/mutter.c:59
|
#: ../src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "ملحق مَتَر الذي سيُستخدم"
|
msgstr "ملحق مَتَر الذي سيُستخدم"
|
||||||
|
|
||||||
#: src/core/prefs.c:1997
|
#: ../src/core/prefs.c:1997
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "مساحة العمل %d"
|
msgstr "مساحة العمل %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: ../src/core/screen.c:583
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"Display “%s” already has a window manager; try using the --replace option to "
|
||||||
"replace the current window manager."
|
"replace the current window manager."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"الشاشة \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace "
|
"الشاشة ”%s“ لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل --replace لتحُلّ"
|
||||||
"لتحُلّ محلّ مدير النوافذ الحالي."
|
" محلّ مدير النوافذ الحالي."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: ../src/core/screen.c:668
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
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"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"
|
msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"
|
||||||
|
|
||||||
#: src/wayland/meta-wayland-tablet-pad.c:563
|
#: ../src/wayland/meta-wayland-tablet-pad.c:563
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch: Mode %d"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: ../src/x11/session.c:1815
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"هذه النوافذ لا تدعم "احفظ الضبط الحالي" يجب إعادة تشغيلها يدويا "
|
"هذه النوافذ لا تدعم ” الضبط الحالي" إعادة تشغيلها يدويا عند الولوج "
|
||||||
"عند الولوج المرة القادمة."
|
"المرة القادمة."
|
||||||
|
|
||||||
#: src/x11/window-props.c:559
|
#: ../src/x11/window-props.c:559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (على %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"
|
#~ msgid "Unknown window information request: %d"
|
||||||
#~ msgstr "طلب معلومات نافذة مجهول: %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"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:16+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-31 00:11+0200\n"
|
"PO-Revision-Date: 2017-11-15 13:31+0100\n"
|
||||||
"Last-Translator: Marek Černocký <marek@manet.cz>\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"
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -177,7 +177,7 @@ msgstr "Přesunout na plochu nad"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Přesunout na plochu pod"
|
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"
|
msgid "System"
|
||||||
msgstr "Systém"
|
msgstr "Systém"
|
||||||
|
|
||||||
@@ -189,6 +189,10 @@ msgstr "Zobrazit řádek ke spuštění příkazu"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Zobrazit přehled činností"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Okna"
|
msgstr "Okna"
|
||||||
@@ -502,7 +506,7 @@ msgstr "Znovu povolit klávesové zkratky"
|
|||||||
#. TRANSLATORS: This string refers to a button that switches between
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Přepínač režimu (skupina %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Přepnout monitor"
|
msgstr "Přepnout monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Zobrazit nápovědu na obrazovce"
|
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"
|
msgid "Built-in display"
|
||||||
msgstr "Vestavěný displej"
|
msgstr "Vestavěný displej"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Neznámý"
|
msgstr "Neznámý"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Neznámý displej"
|
msgstr "Neznámý displej"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -646,7 +650,7 @@ msgstr "Zásuvný modul Mutter, který se má použít"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Plocha %d"
|
msgstr "Plocha %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
|
||||||
"oken pomocí přepínače --replace."
|
"oken pomocí přepínače --replace."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Obrazovka %d na displeji „%s“ je neplatná\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"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-30 17:07+0200\n"
|
"PO-Revision-Date: 2017-11-11 17:57+0100\n"
|
||||||
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
|
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.0.3\n"
|
"X-Generator: Poedit 2.0.4\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -176,7 +176,7 @@ msgstr "Auf Arbeitsfläche darüber verschieben"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Auf Arbeitsfläche darunter verschieben"
|
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"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
@@ -188,6 +188,10 @@ msgstr "Den »Befehl ausführen«-Dialog anzeigen"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Aktivitäten-Übersicht anzeigen"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Fenster"
|
msgstr "Fenster"
|
||||||
@@ -512,7 +516,7 @@ msgstr "Tastenkombinationen erneut aktivieren"
|
|||||||
#. TRANSLATORS: This string refers to a button that switches between
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Moduswechsel (Gruppe %d)"
|
msgstr "Moduswechsel (Gruppe %d)"
|
||||||
@@ -520,30 +524,30 @@ msgstr "Moduswechsel (Gruppe %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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Bildschirm wechseln"
|
msgstr "Bildschirm wechseln"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Bildschirmhilfe anzeigen"
|
msgstr "Bildschirmhilfe anzeigen"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:908
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Eingebaute Anzeige"
|
msgstr "Eingebaute Anzeige"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:931
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Unbekannt"
|
msgstr "Unbekannt"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Unbekannte Anzeige"
|
msgstr "Unbekannte Anzeige"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -660,7 +664,7 @@ msgstr "Zu benutzendes Mutter-Plugin"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeitsfläche %d"
|
msgstr "Arbeitsfläche %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Bildschirm »%s« hat bereits einen Fensterverwalter. Versuchen Sie die Option "
|
||||||
"»--replace«, um den aktuellen Fensterverwalter zu ersetzen."
|
"»--replace«, um den aktuellen Fensterverwalter zu ersetzen."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\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.
|
# Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the mutter package.
|
# This file is distributed under the same license as the mutter package.
|
||||||
# Michael MORONI < >, 2011.
|
# Michael MORONI < >, 2011.
|
||||||
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015.
|
# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011, 2012, 2015, 2018.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"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"
|
"&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2015-02-14 11:06+0000\n"
|
"POT-Creation-Date: 2017-12-18 16:24+0000\n"
|
||||||
"PO-Revision-Date: 2015-02-14 22:34+0200\n"
|
"PO-Revision-Date: 2018-01-22 20:12+0200\n"
|
||||||
"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\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"
|
"Language: eo\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -20,553 +20,675 @@ msgstr ""
|
|||||||
"X-Generator: Virtaal 0.7.1\n"
|
"X-Generator: Virtaal 0.7.1\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
msgstr "Navigado"
|
msgstr "Navigado"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:2
|
#: data/50-mutter-navigation.xml:9
|
||||||
msgid "Move window to workspace 1"
|
msgid "Move window to workspace 1"
|
||||||
msgstr "Movi la fenestron al laborspaco 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"
|
msgid "Move window to workspace 2"
|
||||||
msgstr "Movi la fenestron al laborspaco 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"
|
msgid "Move window to workspace 3"
|
||||||
msgstr "Movi la fenestron al laborspaco 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"
|
msgid "Move window to workspace 4"
|
||||||
msgstr "Movi la fenestron al laborspaco 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"
|
msgid "Move window to last workspace"
|
||||||
msgstr "Movi la fenestron al lasta laborspaco"
|
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"
|
msgid "Move window one workspace to the left"
|
||||||
msgstr "Movi la fenestron al la maldekstra laborspaco"
|
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"
|
msgid "Move window one workspace to the right"
|
||||||
msgstr "Movi la fenestron al la dekstra laborspaco"
|
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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Movi la fenestron al la supra laborspaco"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Movi la fenestron al la suba laborspaco"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Movi la fenestron al la maldekstra ekrano"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Movi la fenestron al la dekstra ekrano"
|
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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Movi la fenestron al la supra ekrano"
|
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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Movi la fenestron al la suba ekrano"
|
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"
|
msgid "Switch applications"
|
||||||
msgstr "Ŝanĝi aplikaĵojn"
|
msgstr "Ŝanĝi aplikaĵojn"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:16
|
#: data/50-mutter-navigation.xml:54
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Ŝalti al antaŭa aplikaĵo"
|
msgstr "Ŝalti al antaŭa aplikaĵo"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:17
|
#: data/50-mutter-navigation.xml:58
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Ŝanĝi fenestrojn"
|
msgstr "Ŝanĝi fenestrojn"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:18
|
#: data/50-mutter-navigation.xml:63
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Ŝalti al antaŭa fenestro"
|
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"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Ŝanĝi fenestrojn de aplikaĵo"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Ŝalti al antaŭa fenestro de aplikaĵo"
|
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"
|
msgid "Switch system controls"
|
||||||
msgstr "Ŝanĝi sistem-kontrolojn"
|
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"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Ŝalti al antaŭa sistem-kontrolo"
|
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"
|
msgid "Switch windows directly"
|
||||||
msgstr "Ŝanĝi rekte fenestrojn"
|
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"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Ŝalti rekte al antaŭa fenestro"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Ŝanĝi rekte fenestrojn de aplikaĵo"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Ŝalti rekte al antaŭa fenestro de aplikaĵo"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Ŝalti rekte sistem-kontrolojn"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Ŝalti rekte al antaŭa sistem-kontrolo"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Kaŝi ĉiujn normalajn fenestrojn"
|
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"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Ŝalti al laborspaco 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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Ŝalti al laborspaco 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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Ŝalti al laborspaco 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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Ŝalti al laborspaco 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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Ŝalti al lasta laborspaco"
|
msgstr "Ŝalti al lasta laborspaco"
|
||||||
|
|
||||||
#: ../data/50-mutter-navigation.xml.in.h:35
|
#: data/50-mutter-navigation.xml:129
|
||||||
msgid "Move to workspace left"
|
msgid "Move to workspace left"
|
||||||
msgstr "Movi al la maldekstra laborspaco"
|
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"
|
msgid "Move to workspace right"
|
||||||
msgstr "Movi al la dekstra laborspaco"
|
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"
|
msgid "Move to workspace above"
|
||||||
msgstr "Movi al la supra laborspaco"
|
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"
|
msgid "Move to workspace below"
|
||||||
msgstr "Movi al la malsupra laborspaco"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistemo"
|
msgstr "Sistemo"
|
||||||
|
|
||||||
#: ../data/50-mutter-system.xml.in.h:2
|
#: data/50-mutter-system.xml:8
|
||||||
msgid "Show the run command prompt"
|
msgid "Show the run command prompt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-system.xml.in.h:3
|
#: data/50-mutter-system.xml:10
|
||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr ""
|
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"
|
msgid "Windows"
|
||||||
msgstr "Fenestroj"
|
msgstr "Fenestroj"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:2
|
#: data/50-mutter-windows.xml:8
|
||||||
msgid "Activate the window menu"
|
msgid "Activate the window menu"
|
||||||
msgstr "Aktivigi la fenestromenuon"
|
msgstr "Aktivigi la fenestromenuon"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:3
|
#: data/50-mutter-windows.xml:10
|
||||||
msgid "Toggle fullscreen mode"
|
msgid "Toggle fullscreen mode"
|
||||||
msgstr "Baskuligi tutekranan reĝimon"
|
msgstr "Baskuligi tutekranan reĝimon"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:4
|
#: data/50-mutter-windows.xml:12
|
||||||
msgid "Toggle maximization state"
|
msgid "Toggle maximization state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:5
|
#: data/50-mutter-windows.xml:14
|
||||||
msgid "Maximize window"
|
msgid "Maximize window"
|
||||||
msgstr "Maksimumigi la fenestron"
|
msgstr "Maksimumigi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:6
|
#: data/50-mutter-windows.xml:16
|
||||||
msgid "Restore window"
|
msgid "Restore window"
|
||||||
msgstr "Restaŭri la fenestron"
|
msgstr "Restaŭri la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:7
|
#: data/50-mutter-windows.xml:18
|
||||||
msgid "Toggle shaded state"
|
msgid "Toggle shaded state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:8
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Close window"
|
msgid "Close window"
|
||||||
msgstr "Fermi la fenestron"
|
msgstr "Fermi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:9
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Kaŝi la fenestron"
|
msgstr "Kaŝi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:10
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Movi la fenestron"
|
msgstr "Movi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:11
|
#: data/50-mutter-windows.xml:26
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Ŝanĝi la fenestrograndon"
|
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"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:13
|
#: data/50-mutter-windows.xml:31
|
||||||
msgid "Raise window if covered, otherwise lower it"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:14
|
#: data/50-mutter-windows.xml:33
|
||||||
msgid "Raise window above other windows"
|
msgid "Raise window above other windows"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:15
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Lower window below other windows"
|
msgid "Lower window below other windows"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:16
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Vertikale maksimumigi la fenestron"
|
msgstr "Vertikale maksimumigi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:17
|
#: data/50-mutter-windows.xml:39
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Horizontale maksimumigi la fenestron"
|
msgstr "Horizontale maksimumigi la fenestron"
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:18
|
#: data/50-mutter-windows.xml:43
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/50-mutter-windows.xml.in.h:19
|
#: data/50-mutter-windows.xml:47
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/mutter.desktop.in.h:1
|
#: data/mutter.desktop.in:4
|
||||||
msgid "Mutter"
|
msgid "Mutter"
|
||||||
msgstr "Mutero"
|
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"
|
msgid "Modifier to use for extended window management operations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
|
#: data/org.gnome.mutter.gschema.xml.in:8
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key will initiate the \"overlay\", which is a combination window "
|
"This key will initiate the “overlay”, which is a combination window overview "
|
||||||
"overview and application launching system. The default is intended to be the "
|
"and application launching system. The default is intended to be the “Windows "
|
||||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
"key” on PC hardware. It’s expected that this binding either the default or "
|
||||||
"default or set to the empty string."
|
"set to the empty string."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
|
#: data/org.gnome.mutter.gschema.xml.in:20
|
||||||
msgid "Attach modal dialogs"
|
msgid "Attach modal dialogs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
|
#: data/org.gnome.mutter.gschema.xml.in:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"When true, instead of having independent titlebars, modal dialogs appear "
|
"When true, instead of having independent titlebars, modal dialogs appear "
|
||||||
"attached to the titlebar of the parent window and are moved together with "
|
"attached to the titlebar of the parent window and are moved together with "
|
||||||
"the parent window."
|
"the parent window."
|
||||||
msgstr ""
|
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"
|
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
|
#: data/org.gnome.mutter.gschema.xml.in:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, dropping windows on vertical screen edges maximizes them "
|
"If enabled, dropping windows on vertical screen edges maximizes them "
|
||||||
"vertically and resizes them horizontally to cover half of the available "
|
"vertically and resizes them horizontally to cover half of the available "
|
||||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
|
#: data/org.gnome.mutter.gschema.xml.in:40
|
||||||
msgid "Workspaces are managed dynamically"
|
msgid "Workspaces are managed dynamically"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
|
#: data/org.gnome.mutter.gschema.xml.in:41
|
||||||
msgid ""
|
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."
|
"static number of workspaces (determined by the num-workspaces key in org."
|
||||||
"gnome.desktop.wm.preferences)."
|
"gnome.desktop.wm.preferences)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
|
#: data/org.gnome.mutter.gschema.xml.in:50
|
||||||
msgid "Workspaces only on primary"
|
msgid "Workspaces only on primary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
|
#: data/org.gnome.mutter.gschema.xml.in:51
|
||||||
msgid ""
|
msgid ""
|
||||||
"Determines whether workspace switching should happen for windows on all "
|
"Determines whether workspace switching should happen for windows on all "
|
||||||
"monitors or only for windows on the primary monitor."
|
"monitors or only for windows on the primary monitor."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
|
#: data/org.gnome.mutter.gschema.xml.in:59
|
||||||
msgid "No tab popup"
|
msgid "No tab popup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
|
#: data/org.gnome.mutter.gschema.xml.in:60
|
||||||
msgid ""
|
msgid ""
|
||||||
"Determines whether the use of popup and highlight frame should be disabled "
|
"Determines whether the use of popup and highlight frame should be disabled "
|
||||||
"for window cycling."
|
"for window cycling."
|
||||||
msgstr ""
|
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"
|
msgid "Delay focus changes until the pointer stops moving"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
|
#: data/org.gnome.mutter.gschema.xml.in:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
|
||||||
"the focus will not be changed immediately when entering a window, but only "
|
"focus will not be changed immediately when entering a window, but only after "
|
||||||
"after the pointer stops moving."
|
"the pointer stops moving."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
|
#: data/org.gnome.mutter.gschema.xml.in:79
|
||||||
msgid "Draggable border width"
|
msgid "Draggable border width"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
|
#: data/org.gnome.mutter.gschema.xml.in:80
|
||||||
msgid ""
|
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."
|
"not enough, invisible borders will be added to meet this value."
|
||||||
msgstr ""
|
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"
|
msgid "Auto maximize nearly monitor sized windows"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
|
#: data/org.gnome.mutter.gschema.xml.in:90
|
||||||
msgid ""
|
msgid ""
|
||||||
"If enabled, new windows that are initially the size of the monitor "
|
"If enabled, new windows that are initially the size of the monitor "
|
||||||
"automatically get maximized."
|
"automatically get maximized."
|
||||||
msgstr ""
|
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"
|
msgid "Place new windows in the center"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
|
#: data/org.gnome.mutter.gschema.xml.in:99
|
||||||
msgid ""
|
msgid ""
|
||||||
"When true, the new windows will always be put in the center of the active "
|
"When true, the new windows will always be put in the center of the active "
|
||||||
"screen of the monitor."
|
"screen of the monitor."
|
||||||
msgstr ""
|
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"
|
msgid "Select window from tab popup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
|
#: data/org.gnome.mutter.gschema.xml.in:150
|
||||||
msgid "Cancel tab popup"
|
msgid "Cancel tab popup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
|
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||||
#, fuzzy
|
#, 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"
|
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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
|
||||||
#, fuzzy
|
|
||||||
msgid "Switch to VT 2"
|
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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
|
||||||
#, fuzzy
|
|
||||||
msgid "Switch to VT 3"
|
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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
|
||||||
#, fuzzy
|
|
||||||
msgid "Switch to VT 4"
|
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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Switch to workspace 5"
|
#| msgid "Switch to workspace 5"
|
||||||
msgid "Switch to VT 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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Switch to workspace 6"
|
#| msgid "Switch to workspace 6"
|
||||||
msgid "Switch to VT 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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Switch to workspace 7"
|
#| msgid "Switch to workspace 7"
|
||||||
msgid "Switch to VT 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"
|
msgid "Built-in display"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../src/backends/meta-monitor-manager.c:391
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nekonate"
|
msgstr "Nekonate"
|
||||||
|
|
||||||
#: ../src/backends/meta-monitor-manager.c:393
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Nekonata ekrano"
|
msgstr "Nekonata ekrano"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: ../src/backends/meta-monitor-manager.c:401
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: ../src/compositor/compositor.c:456
|
#: src/compositor/compositor.c:479
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "Another compositing manager is already running on screen %i on display "
|
||||||
|
#| "\"%s\"."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display \"%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”."
|
||||||
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"
|
msgid "Bell event"
|
||||||
msgstr "Sonoril-evento"
|
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
|
#, c-format
|
||||||
#| msgid "<tt>%s</tt> is not responding."
|
|
||||||
msgid "“%s” is not responding."
|
msgid "“%s” is not responding."
|
||||||
msgstr "“%s” ne respondas."
|
msgstr "“%s” ne respondas."
|
||||||
|
|
||||||
#: ../src/core/delete.c:129
|
#: src/core/meta-close-dialog-default.c:149
|
||||||
msgid "Application is not responding."
|
msgid "Application is not responding."
|
||||||
msgstr "Aplikaĵo ne respondas."
|
msgstr "Aplikaĵo ne respondas."
|
||||||
|
|
||||||
#: ../src/core/delete.c:134
|
#: src/core/meta-close-dialog-default.c:154
|
||||||
msgid ""
|
msgid ""
|
||||||
"You may choose to wait a short while for it to continue or force the "
|
"You may choose to wait a short while for it to continue or force the "
|
||||||
"application to quit entirely."
|
"application to quit entirely."
|
||||||
msgstr "Vi povas elekti ĉu atendi iomete por la aplikaĵo aŭ perforte ĉesi ĝin."
|
msgstr "Vi povas elekti ĉu atendi iomete por la aplikaĵo aŭ perforte ĉesi ĝin."
|
||||||
|
|
||||||
#: ../src/core/delete.c:141
|
#: src/core/meta-close-dialog-default.c:161
|
||||||
msgid "_Wait"
|
|
||||||
msgstr "_Atendi"
|
|
||||||
|
|
||||||
#: ../src/core/delete.c:141
|
|
||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "Per_forta eliro"
|
msgstr "Per_forta eliro"
|
||||||
|
|
||||||
#: ../src/core/display.c:562
|
#: src/core/meta-close-dialog-default.c:161
|
||||||
#, c-format
|
msgid "_Wait"
|
||||||
msgid "Failed to open X Window System display '%s'\n"
|
msgstr "_Atendi"
|
||||||
msgstr "Malsukcesis malfermi jenan vidigon de fenestra sistemo X: '%s'\n"
|
|
||||||
|
#: src/core/mutter.c:39
|
||||||
#: ../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
|
|
||||||
#, c-format
|
#, 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 ""
|
msgid ""
|
||||||
"mutter %s\n"
|
"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"
|
"This is free software; see the source for copying conditions.\n"
|
||||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||||
"PARTICULAR PURPOSE.\n"
|
"PARTICULAR PURPOSE.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mutero %s\n"
|
"Mutero %s\n"
|
||||||
"Kopirajto (C) 2001-%d Havoc PENNIGTON, Red Hat, Inc., kaj aliaj\n"
|
"Kopirajto © 2001-%d Havoc PENNIGTON, Red Hat, Inc., kaj aliaj\n"
|
||||||
"Ĉi tio estas libera programaro; rigardu la fontkodon por pli da informoj.\n"
|
"Ĉi tio estas libera programaro; rigardu la fontkodon por kondiĉoj pri "
|
||||||
"Ekzistas neniu GARANTIO; nek por NEGOCEBLO nek por ADAPTADO AL IU APARTA "
|
"kopiado.\n"
|
||||||
|
"Ekzistas NENIU garantio; nek por NEGOCEBLO nek por ADAPTADO AL IU APARTA "
|
||||||
"CELO.\n"
|
"CELO.\n"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:53
|
#: src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Motri version"
|
msgstr "Motri version"
|
||||||
|
|
||||||
#: ../src/core/mutter.c:59
|
#: src/core/mutter.c:59
|
||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../src/core/prefs.c:2004
|
#: src/core/prefs.c:1997
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Laborspaco %d"
|
msgstr "Laborspaco %d"
|
||||||
|
|
||||||
#: ../src/core/screen.c:525
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid ""
|
#| msgid ""
|
||||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
#| "Display \"%s\" already has a window manager; try using the --replace "
|
||||||
#| "replace option to replace the current window manager.\n"
|
#| "option to replace the current window manager."
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
"Display “%s” already has a window manager; try using the --replace option to "
|
||||||
"to replace the current window manager."
|
"replace the current window manager."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ekrano \"%s\" jam havas fenestroadministrilon; provu uzi opcion --replace por "
|
"Ekrano “%s” jam havas fenestroadministrilon; provu uzi la opcion --replace "
|
||||||
"anstataŭigi la nunan fenestroadministrilon."
|
"por anstataŭigi la nunan fenestroadministrilon."
|
||||||
|
|
||||||
#: ../src/core/screen.c:607
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, 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"
|
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"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutero estis kompilita sen subteno por eksplicita reĝimo\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 ""
|
msgid ""
|
||||||
"These windows do not support "save current setup" and will have to "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"be restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../src/x11/window-props.c:549
|
#: src/x11/window-props.c:559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (ĉe %s)"
|
msgstr "%s (ĉe %s)"
|
||||||
|
|||||||
80
po/es.po
80
po/es.po
@@ -14,8 +14,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter.master\n"
|
"Project-Id-Version: mutter.master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-02 10:05+0000\n"
|
"POT-Creation-Date: 2017-11-17 16:03+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-03 09:59+0200\n"
|
"PO-Revision-Date: 2017-12-14 13:02+0100\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@@ -177,7 +177,7 @@ msgstr "Mover al área de trabajo de la arriba"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Mover al área de trabajo de abajo"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
@@ -189,6 +189,10 @@ msgstr "Mostrar el elemento «ejecutar comando»"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Mostrar la vista de actividades"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Ventanas"
|
msgstr "Ventanas"
|
||||||
@@ -414,49 +418,59 @@ msgid "Enable experimental features"
|
|||||||
msgstr "Activar las características experimentales"
|
msgstr "Activar las características experimentales"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
#: 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 ""
|
msgid ""
|
||||||
"To enable experimental features, add the feature keyword to the list. "
|
"To enable experimental features, add the feature keyword to the list. "
|
||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"Whether the feature requires restarting the compositor depends on the given "
|
||||||
"feature. Any experimental feature is not required to still be available, or "
|
"feature. Any experimental feature is not required to still be available, or "
|
||||||
"configurable. Don’t expect adding anything in this setting to be future "
|
"configurable. Don’t expect adding anything in this setting to be future "
|
||||||
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
|
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||||
"monitor configuration system, aimed to replace the old one. This enables a "
|
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||||
"higher level configuration API to be used by configuration applications, as "
|
"space, while scaling monitor framebuffers instead of window content, to "
|
||||||
"well as the ability to configure per logical monitor scale. • “scale-monitor-"
|
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||||
"framebuffer” — makes mutter default to layout logical monitors in a logical "
|
"enables remote desktop support. To support remote desktop with screen "
|
||||||
"pixel coordinate space, while scaling monitor framebuffers instead of window "
|
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||||
"content, to manage HiDPI monitors. Does not require a restart. Also enabling "
|
"screen cast support."
|
||||||
"“monitor-config-manager” is required for this feature to be enabled."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Para activar las características experimentales, añada la palabra clave de "
|
"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 "
|
"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 "
|
"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 "
|
"estar disponible o ser configurable. No espere que lo que se añada en este "
|
||||||
"escenario sirva como prueba futura. Las palabras clave actualmente "
|
"escenario sirva como prueba futura. Las palabras clave actualmente "
|
||||||
"disponibles son: • \"monitor-config-manager\" - utiliza el nuevo sistema de "
|
"disponibles son: • \"scale-monitor-framebuffer\" - convierte a mutter en la "
|
||||||
"configuración del monitor, destinado a sustituir el antiguo. Esto permite "
|
"manera predeterminada de disponer monitores lógicos en un espacio lógico de "
|
||||||
"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 "
|
|
||||||
"coordenadas de píxeles, al escalar framebuffers de monitores framebuffers en "
|
"coordenadas de píxeles, al escalar framebuffers de monitores framebuffers en "
|
||||||
"lugar del contenido de ventana, para administrar monitores HiDPI. No "
|
"lugar del contenido de ventana, para administrar monitores HiDPI. No "
|
||||||
"requiere un reinicio. También es necesario activar \"monitor-config-manager"
|
"requiere un reinicio. • \"remote-desktop\" — activa el escritorio remoto. "
|
||||||
"\" para activar esta función."
|
"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"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Seleccionar ventana de la pestaña emergente"
|
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"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Cancelar pestaña emergente"
|
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"
|
msgid "Switch monitor configurations"
|
||||||
msgstr "Cambiar la configuración del monitor"
|
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"
|
msgid "Rotates the built-in monitor configuration"
|
||||||
msgstr "Rota la configuración del monitor empotrado"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2118
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Cambiar modo (grupo %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2141
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Cambiar monitor"
|
msgstr "Cambiar monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2143
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Mostrar la ayuda en pantalla"
|
msgstr "Mostrar la ayuda en pantalla"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:927
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Pantalla integrada"
|
msgstr "Pantalla integrada"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:950
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconocida"
|
msgstr "Desconocida"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:952
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Pantalla desconocida"
|
msgstr "Pantalla desconocida"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:960
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Workspace %d"
|
||||||
msgstr "Área de trabajo %d"
|
msgstr "Área de trabajo %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 «--"
|
"La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--"
|
||||||
"replace» para reemplazar el gestor de ventanas activo."
|
"replace» para reemplazar el gestor de ventanas activo."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "La ventana %d en la pantalla «%s» no es válida\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.
|
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
|
||||||
# Claude Paroz <claude@2xlibre.net>, 2008-2017.
|
# Claude Paroz <claude@2xlibre.net>, 2008-2017.
|
||||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
||||||
# Charles Monzat <superboa@hotmail.fr>, 2016.
|
|
||||||
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017.
|
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017.
|
||||||
|
# Charles Monzat <superboa@hotmail.fr>, 2016, 2017.
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-05 10:52+0100\n"
|
"PO-Revision-Date: 2017-11-10 23:07+0100\n"
|
||||||
"Last-Translator: Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>\n"
|
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
|
||||||
"Language-Team: French <traduc@traduc.org>\n"
|
"Language-Team: français <gnomefr@traduc.org>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Lokalize 2.0\n"
|
"X-Generator: Gtranslator 2.91.7\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -183,7 +184,7 @@ msgstr "Déplacer vers l’espace de travail du dessus"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Déplacer vers l’espace de travail du dessous"
|
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"
|
msgid "System"
|
||||||
msgstr "Système"
|
msgstr "Système"
|
||||||
|
|
||||||
@@ -195,6 +196,10 @@ msgstr "Afficher la fenêtre pour lancer une commande"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Afficher l’aperçu des activités"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Fenêtres"
|
msgstr "Fenêtres"
|
||||||
@@ -418,20 +423,6 @@ msgid "Enable experimental features"
|
|||||||
msgstr "Activer les fonctionnalités expérimentales"
|
msgstr "Activer les fonctionnalités expérimentales"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
#: 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 ""
|
msgid ""
|
||||||
"To enable experimental features, add the feature keyword to the list. "
|
"To enable experimental features, add the feature keyword to the list. "
|
||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"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 "
|
"Pour activer les fonctionnalités expérimentales, ajoutez le mot-clé de la "
|
||||||
"fonctionnalité dans la liste. Selon la fonctionnalité, il peut être "
|
"fonctionnalité dans la liste. Selon la fonctionnalité, il peut être "
|
||||||
"nécessaire de redémarrer le compositeur. Chaque fonctionnalité expérimentale "
|
"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"
|
"peut disparaître ou ne plus être configurable. Ne vous attendez pas à ce que "
|
||||||
" le "
|
"le contenu de ce réglage soit stable dans le temps. Les mots-clés "
|
||||||
"contenu de ce réglage soit stable dans le temps. Les mots-clés actuellement "
|
"actuellement possibles sont : • « scale-monitor-framebuffer » — demande à "
|
||||||
"possibles sont : • « scale-monitor-framebuffer » — demande à mutter "
|
"mutter d’utiliser par défaut une disposition par moniteur logique dans un "
|
||||||
"d’utiliser par défaut une disposition par moniteur logique dans un espace de "
|
"espace de coordonnées de pixels logique, tout en mettant à l’échelle les "
|
||||||
"coordonnées de pixels logique, tout en mettant à l’échelle les "
|
|
||||||
"« framebuffers » de moniteur au lieu des contenus de fenêtre pour pouvoir "
|
"« 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. "
|
"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 "
|
"« remote-desktop » — active la prise en charge du bureau à distance. Pour la "
|
||||||
"la prise en charge du bureau distant avec partage de l’écran, « screen-cast » "
|
"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. "
|
"doit aussi être activé. • « screen-cast » — active la diffusion de l’écran. "
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
#: 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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Changement de mode (groupe %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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Changer de moniteur"
|
msgstr "Changer de moniteur"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Afficher l’aide à l’écran"
|
msgstr "Afficher l’aide à l’écran"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:908
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Affichage intégré"
|
msgstr "Affichage intégré"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:931
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Inconnu"
|
msgstr "Inconnu"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Affichage inconnu"
|
msgstr "Affichage inconnu"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -679,7 +669,7 @@ msgstr "Greffon de Mutter à utiliser"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espace de travail %d"
|
msgstr "Espace de travail %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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’affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d’utiliser "
|
||||||
"l’option --replace pour remplacer le gestionnaire de fenêtres actuel."
|
"l’option --replace pour remplacer le gestionnaire de fenêtres actuel."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "L’écran %d sur l’affichage « %s » n’est pas valide\n"
|
msgstr "L’écran %d sur l’affichage « %s » n’est pas valide\n"
|
||||||
@@ -715,4 +705,3 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (sur %s)"
|
msgstr "%s (sur %s)"
|
||||||
|
|
||||||
|
|||||||
264
po/fur.po
264
po/fur.po
@@ -6,17 +6,16 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||||
"POT-Creation-Date: 2017-07-22 09:45+0000\n"
|
"PO-Revision-Date: 2018-02-06 22:43+0100\n"
|
||||||
"PO-Revision-Date: 2017-07-22 22:53+0200\n"
|
|
||||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||||
"Language-Team: Friulian <fur@li.org>\n"
|
"Language-Team: Friulian <fur@li.org>\n"
|
||||||
"Language: fur\n"
|
"Language: fur\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.0.2\n"
|
"X-Generator: Poedit 2.0.3\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -43,145 +42,133 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Sposte barcon tal ultin spazi di lavôr"
|
msgstr "Sposte barcon tal ultin spazi di lavôr"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Sposte barcon tal spazi di lavôr parsore"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Sposte barcon tal spazi di lavôr sot"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Sposte barcon tal visôr a çampe"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Sposte barcon tal visôr a drete"
|
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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Sposte barcon tal visôr parsore"
|
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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Sposte barcon tal visôr sot"
|
msgstr "Sposte barcon tal visôr sot"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Passâ di une aplicazion in chê altre"
|
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"
|
msgid "Switch to previous application"
|
||||||
msgstr "Passe ae aplicazion prime"
|
msgstr "Passe ae aplicazion prime"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Passâ di un barcon in chel altri"
|
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"
|
msgid "Switch to previous window"
|
||||||
msgstr "Passe al barcon prime"
|
msgstr "Passe al barcon prime"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Passâ di un barcon in chel altri di une aplicazion"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Passe al barcon prime di une aplicazion"
|
msgstr "Passe al barcon prime di une aplicazion"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:76
|
#: data/50-mutter-navigation.xml:70
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Passâ di un control di sisteme in chel altri"
|
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"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Passe al control di sisteme precedent"
|
msgstr "Passe al control di sisteme precedent"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Passe dret ai barcons"
|
msgstr "Passe dret ai barcons"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:90
|
#: data/50-mutter-navigation.xml:84
|
||||||
msgid "Switch directly to previous window"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Passe dret al barcon precedent"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Passe dret a un barcon di une aplicazion"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Passe dret al barcon precedent di une aplicazion"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Passe dret ai controi dal sisteme"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Passe dret al control precedent dal sisteme"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Plate ducj i barcons normâi"
|
msgstr "Plate ducj i barcons normâi"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Passe al spazi di lavôr 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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Passe al spazi di lavôr 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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Passe al spazi di lavôr 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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Passe al spazi di lavôr 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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Passe al ultin spazi di lavôr"
|
msgstr "Passe al ultin spazi di lavôr"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Sposte il spazi di lavôr parsore"
|
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"
|
msgid "Move to workspace below"
|
||||||
msgstr "Sposte il spazi di lavôr sot"
|
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"
|
msgid "System"
|
||||||
msgstr "Sisteme"
|
msgstr "Sisteme"
|
||||||
|
|
||||||
#: data/50-mutter-system.xml:8
|
#: data/50-mutter-system.xml:8
|
||||||
msgid "Show the run command prompt"
|
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
|
#: data/50-mutter-system.xml:10
|
||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Mostre la panoramiche ativitâts"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Barcons"
|
msgstr "Barcons"
|
||||||
@@ -207,54 +194,50 @@ msgid "Restore window"
|
|||||||
msgstr "Ripristine barcon"
|
msgstr "Ripristine barcon"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: 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"
|
msgid "Close window"
|
||||||
msgstr "Siere il barcon"
|
msgstr "Siere il barcon"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Plate il barcon"
|
msgstr "Plate il barcon"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Sposte il barcon"
|
msgstr "Sposte il barcon"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Ridimensione barcon"
|
msgstr "Ridimensione barcon"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:29
|
#: data/50-mutter-windows.xml:27
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Ative/Disative barcon su ducj i spazis di lavôr o nome un"
|
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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr "Tire sù il barcon se al è cuviert, se no sbassilu"
|
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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Met il barcon parsore di chei altris"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Bute il barcon sot di chei altris"
|
msgstr "Bute il barcon sot di chei altris"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:37
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Slargje il barcon par verticâl"
|
msgstr "Slargje il barcon par verticâl"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Slargje il barcon par orizontâl"
|
msgstr "Slargje il barcon par orizontâl"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Slargje dividint ae çampe"
|
msgstr "Slargje dividint ae çampe"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Slargje dividint ae drete"
|
msgstr "Slargje dividint ae drete"
|
||||||
|
|
||||||
@@ -405,14 +388,13 @@ msgid ""
|
|||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"Whether the feature requires restarting the compositor depends on the given "
|
||||||
"feature. Any experimental feature is not required to still be available, or "
|
"feature. Any experimental feature is not required to still be available, or "
|
||||||
"configurable. Don’t expect adding anything in this setting to be future "
|
"configurable. Don’t expect adding anything in this setting to be future "
|
||||||
"proof. Currently possible keywords: • “monitor-config-manager” — use the new "
|
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
|
||||||
"monitor configuration system, aimed to replace the old one. This enables a "
|
"mutter default to layout logical monitors in a logical pixel coordinate "
|
||||||
"higher level configuration API to be used by configuration applications, as "
|
"space, while scaling monitor framebuffers instead of window content, to "
|
||||||
"well as the ability to configure per logical monitor scale. • “scale-monitor-"
|
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
|
||||||
"framebuffer” — makes mutter default to layout logical monitors in a logical "
|
"enables remote desktop support. To support remote desktop with screen "
|
||||||
"pixel coordinate space, while scaling monitor framebuffers instead of window "
|
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
|
||||||
"content, to manage HiDPI monitors. Does not require a restart. Also enabling "
|
"screen cast support."
|
||||||
"“monitor-config-manager” is required for this feature to be enabled."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Par abilitâ lis funzionalitâts sperimentâls, zonte la peraule clâf de "
|
"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â "
|
"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 "
|
"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â "
|
"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: • "
|
"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 "
|
"“scale-monitor-framebuffer” — al rint come predefinît par mutter, la "
|
||||||
"visôr, fat par sostituî chel vecjo. Chest al abilite une API di nivel "
|
"disposizion logjiche dai visôrs intun spazi logjic di coordenadis di pixel, "
|
||||||
"superiôr che e pues jessi doprade di aplicazions di configurazion, cussì "
|
"in plui si fâs il scjalâ dai framebuffer dai visôrs invezit che il contignût "
|
||||||
"come la capacitât di configurâ par scjale di monitor logjic. • “scale-"
|
"dal barcon; dut chest par gjestî i visôrs HiDPI. Nol covente tornâ a inviâ. "
|
||||||
"monitor-framebuffer” — al rint come predefinît par mutter la disposizion dai "
|
"• “remote-desktop” — al abilite il supuart pal scritori rimot. Par podê "
|
||||||
"visôrs logjics intun spazi logjic di coordenadis dai pixel, intant i "
|
"supuartâ il scritori rimot cun la condivision dal schermi si scugne abilitâ "
|
||||||
"framebuffer dai visôrs par scjalâ, invezit dal contignût dal barcon, a "
|
"ancje “screen-cast”. • “screen-cast” — al abilite il supuart pe trasmission "
|
||||||
"gjestissin i visôrs HiDPI. Nol covente tornâ a inviâ. In plui al è necessari "
|
"dal schermi."
|
||||||
"abilitâ “monitor-config-manager” par fâ in mût che cheste funzionalitât e "
|
|
||||||
"sedi abilitade."
|
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:151
|
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Selezione barcon dal 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"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Anule 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"
|
msgid "Switch monitor configurations"
|
||||||
msgstr "Cambie configurazions visôr"
|
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"
|
msgid "Rotates the built-in monitor configuration"
|
||||||
msgstr "Al volte la configurazion dal visôr integrât"
|
msgstr "Al volte la configurazion dal visôr integrât"
|
||||||
|
|
||||||
@@ -495,10 +475,61 @@ msgstr "Passe al VT 11"
|
|||||||
msgid "Switch to VT 12"
|
msgid "Switch to VT 12"
|
||||||
msgstr "Passe al 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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2118
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Cambie mût (Grup %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2141
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Cambie visôr"
|
msgstr "Cambie visôr"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2143
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Mostre jutori a schermi"
|
msgstr "Mostre jutori a schermi"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:925
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Display integrât"
|
msgstr "Display integrât"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:948
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "No cognossût"
|
msgstr "No cognossût"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:950
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Display no cognossût"
|
msgstr "Display no cognossût"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:958
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Failed to open X Window System display “%s”\n"
|
||||||
msgstr "Impussibil vierzi il display “%s” di X Window System\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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Disabilite la conession al gjestôr de session"
|
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"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Rimplace il window manager in vore"
|
msgstr "Rimplace il window manager in vore"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Specifiche il ID di gjestion session"
|
msgstr "Specifiche il ID di gjestion session"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Display X di doprâ"
|
msgstr "Display X di doprâ"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inizialize session da file salvât"
|
msgstr "Inizialize session da file salvât"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Fâs lis clamadis X sincronis"
|
msgstr "Fâs lis clamadis X sincronis"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Eseguìs come compositor wayland"
|
msgstr "Eseguìs come compositor wayland"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Eseguìs come compositor nidiât"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Eseguìs come servidôr display complet, invezit che nidiât"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -643,7 +678,7 @@ msgstr "Plugin Mutter di doprâ"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Spazi di lavôr %d"
|
msgstr "Spazi di lavôr %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Il display “%s” al à za un window manager; prove dopre la opzion --replace "
|
||||||
"par rimplaçâ chel atuâl."
|
"par rimplaçâ chel atuâl."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Schermi %d su display “%s” no valit\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"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Cambie mût: mût %d"
|
msgstr "Cambie mût: mût %d"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -678,3 +713,18 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (su %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.
|
# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
|
||||||
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
||||||
# Leandro Regueiro <leandro.regueiro@gmail.com>, 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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gl\n"
|
"Project-Id-Version: gl\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-02-14 23:45+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-30 22:29+0200\n"
|
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: Galician\n"
|
"Language-Team: Galician\n"
|
||||||
"Language: gl\n"
|
"Language: gl\n"
|
||||||
@@ -52,134 +51,118 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Mover xanela ao último espazo de traballo"
|
msgstr "Mover xanela ao último espazo de traballo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Mover xanela un espazo de traballo cara a arriba"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Mover xanela un espazo de traballo cara a abaixo"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Mover xanela un monitor á esquerda"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Mover xanela un monitor á dereita"
|
msgstr "Mover xanela un monitor á dereita"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:42
|
#: data/50-mutter-navigation.xml:36
|
||||||
msgid "Move window one monitor up"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Mover xanela un monitor arriba"
|
msgstr "Mover xanela un monitor arriba"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:45
|
#: data/50-mutter-navigation.xml:39
|
||||||
msgid "Move window one monitor down"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Mover xanela un espazo de traballo abaixo"
|
msgstr "Mover xanela un espazo de traballo abaixo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Cambiar entre aplicativos"
|
msgstr "Cambiar entre aplicativos"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Cambiar ao aplicativo aplicativos"
|
msgstr "Cambiar ao aplicativo aplicativos"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Cambiar xanelas"
|
msgstr "Cambiar xanelas"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Cambiar á xanela anterior"
|
msgstr "Cambiar á xanela anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Cambiar entre as xanelas dun aplicativo"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Cambia á xanela anterior dun aplicativo"
|
msgstr "Cambia á xanela anterior dun aplicativo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:76
|
#: data/50-mutter-navigation.xml:70
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Cambiar entre os controles do sistema"
|
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"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Cambia ao control do sistema anterior"
|
msgstr "Cambia ao control do sistema anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Cambiar xanelas directamente"
|
msgstr "Cambiar xanelas directamente"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:90
|
#: data/50-mutter-navigation.xml:84
|
||||||
msgid "Switch directly to previous window"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Cambia directamente á xanela anterior"
|
msgstr "Cambia directamente á xanela anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:94
|
#: data/50-mutter-navigation.xml:88
|
||||||
msgid "Switch windows of an app directly"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Cambiar entre as xanelas dun aplicativo directamente"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Cambia directamente á xanela anterior do aplicativo"
|
msgstr "Cambia directamente á xanela anterior do aplicativo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:103
|
#: data/50-mutter-navigation.xml:97
|
||||||
msgid "Switch system controls directly"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Cambiar entre os controles do sistema directamente"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Cambiar directamente ao control do sistema anterior"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Ocultar todas as xanelas normais"
|
msgstr "Ocultar todas as xanelas normais"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Cambiar ao espazo de traballo 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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Cambiar ao espazo de traballo 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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Cambiar ao espazo de traballo 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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Cambiar ao espazo de traballo 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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Cambiar ao último espazo de traballo"
|
msgstr "Cambiar ao último espazo de traballo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Mover ao espazo de arriba"
|
msgstr "Mover ao espazo de arriba"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:138
|
#: data/50-mutter-navigation.xml:126
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Mover ao espazo de traballo de abaixo"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
@@ -191,6 +174,10 @@ msgstr "Mostrar o diálogo de executar orde"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Mostrar a vista xeral de actividades"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Xanelas"
|
msgstr "Xanelas"
|
||||||
@@ -216,54 +203,50 @@ msgid "Restore window"
|
|||||||
msgstr "Restaurar xanela"
|
msgstr "Restaurar xanela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: data/50-mutter-windows.xml:18
|
||||||
msgid "Toggle shaded state"
|
|
||||||
msgstr "Trocar o estado ensombrecido"
|
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:20
|
|
||||||
msgid "Close window"
|
msgid "Close window"
|
||||||
msgstr "Pechar xanela"
|
msgstr "Pechar xanela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Ocultar xanela"
|
msgstr "Ocultar xanela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Mover xanela"
|
msgstr "Mover xanela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Redimensionar xanela"
|
msgstr "Redimensionar xanela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:29
|
#: data/50-mutter-windows.xml:27
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Trocar que a xanela apareza en tódolos espazos de traballo ou nun"
|
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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr "Elevar a xanela se está cuberta por outra, en caso contrario baixala"
|
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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Subir a xanela por enriba doutras xanelas"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Baixar xanela debaixo doutras xanelas"
|
msgstr "Baixar xanela debaixo doutras xanelas"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:37
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Maximizar xanela verticalmente"
|
msgstr "Maximizar xanela verticalmente"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Maximizar xanela horizontalmente"
|
msgstr "Maximizar xanela horizontalmente"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Dividir vista á esquerda"
|
msgstr "Dividir vista á esquerda"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Dividir vista á dereita"
|
msgstr "Dividir vista á dereita"
|
||||||
|
|
||||||
@@ -411,16 +394,6 @@ msgid "Enable experimental features"
|
|||||||
msgstr "Activar as características experimentais"
|
msgstr "Activar as características experimentais"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
#: 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 ""
|
msgid ""
|
||||||
"To enable experimental features, add the feature keyword to the list. "
|
"To enable experimental features, add the feature keyword to the list. "
|
||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"Whether the feature requires restarting the compositor depends on the given "
|
||||||
@@ -516,10 +489,41 @@ msgstr "Cambiar á VT 12"
|
|||||||
msgid "Re-enable shortcuts"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Reactivar os atallos"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Modo conmutador (Grupo %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Cambiar monitor"
|
msgstr "Cambiar monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Mostrar axuda en pantalla"
|
msgstr "Mostrar axuda en pantalla"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Pantalla embebida"
|
msgstr "Pantalla embebida"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Descoñecido"
|
msgstr "Descoñecido"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Pantalla descoñecida"
|
msgstr "Pantalla descoñecida"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
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"
|
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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Desactivar a conexión ao xestor de sesión"
|
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"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Substituír o xestor de xanelas en execución"
|
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"
|
msgid "Specify session management ID"
|
||||||
msgstr "Especificar o ID de xestión de sesión"
|
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"
|
msgid "X Display to use"
|
||||||
msgstr "Pantalla X que se vai usar"
|
msgstr "Pantalla X que se vai usar"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inicializar sesión desde o ficheiro de salvagarda"
|
msgstr "Inicializar sesión desde o ficheiro de salvagarda"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
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"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Executar como compositor de wayland"
|
msgstr "Executar como compositor de wayland"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Executar como compositor anidado"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Executar como un servidor de pantalla completo, fronte a un aniñado"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -664,7 +672,7 @@ msgstr "Engadido de mutter que usar"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espazo de traballo %d"
|
msgstr "Espazo de traballo %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"A pantalla «%s» ten xa un xestor de xanelas, tente usar a opción --replace "
|
||||||
"para substituír o xestor de xanelas."
|
"para substituír o xestor de xanelas."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "A pantalla %d na visualización «%s» non é válida\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"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Modo conmutador: Modo %d"
|
msgstr "Modo conmutador: Modo %d"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -700,6 +708,21 @@ msgstr ""
|
|||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (en %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"
|
#~ msgid "background texture could not be created from file"
|
||||||
#~ msgstr "a textura do fondo non puido crearse desde o ficheiro"
|
#~ 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"
|
"Project-Id-Version: metacity.HEAD.he\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-03-30 18:41+0300\n"
|
"POT-Creation-Date: 2017-11-26 17:12+0200\n"
|
||||||
"PO-Revision-Date: 2017-03-30 18:46+0300\n"
|
"PO-Revision-Date: 2017-11-26 17:14+0200\n"
|
||||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
||||||
"Language-Team: עברית <>\n"
|
"Language-Team: עברית <>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
@@ -174,7 +174,7 @@ msgstr "העברה למרחב העבודה שמלמעלה"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "העברה למרחב העבודה שמלמטה"
|
msgstr "העברה למרחב העבודה שמלמטה"
|
||||||
|
|
||||||
#: data/50-mutter-system.xml:6
|
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
|
||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "מערכת"
|
msgstr "מערכת"
|
||||||
|
|
||||||
@@ -186,6 +186,10 @@ msgstr "הצגת החלונית להרצת פקודה"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "הצגת סקירת הפעילויות"
|
msgstr "הצגת סקירת הפעילויות"
|
||||||
|
|
||||||
|
#: data/50-mutter-wayland.xml:8
|
||||||
|
msgid "Restore the keyboard shortcuts"
|
||||||
|
msgstr "שחזור צירופי מקשים"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:6
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "חלונות"
|
msgstr "חלונות"
|
||||||
@@ -271,7 +275,6 @@ msgid "Modifier to use for extended window management operations"
|
|||||||
msgstr "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
|
#: data/org.gnome.mutter.gschema.xml.in:8
|
||||||
#,
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"This key will initiate the “overlay”, which is a combination window overview "
|
"This key will initiate the “overlay”, which is a combination window overview "
|
||||||
"and application launching system. The default is intended to be the “Windows "
|
"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"
|
msgstr "Workspaces are managed dynamically"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:41
|
#: data/org.gnome.mutter.gschema.xml.in:41
|
||||||
#,
|
|
||||||
msgid ""
|
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."
|
"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"
|
msgstr "Delay focus changes until the pointer stops moving"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:69
|
#: data/org.gnome.mutter.gschema.xml.in:69
|
||||||
#,
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
|
"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 "
|
"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 "
|
"When true, the new windows will always be put in the center of the active "
|
||||||
"screen of the monitor."
|
"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"
|
msgid "Select window from tab popup"
|
||||||
msgstr "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"
|
msgid "Cancel tab popup"
|
||||||
msgstr "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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||||
msgid "Switch to VT 1"
|
msgid "Switch to VT 1"
|
||||||
msgstr "מעבר ל־VT 1"
|
msgstr "מעבר ל־VT 1"
|
||||||
@@ -457,10 +496,14 @@ msgstr "מעבר ל־VT 11"
|
|||||||
msgid "Switch to VT 12"
|
msgid "Switch to VT 12"
|
||||||
msgstr "מעבר ל־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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1848
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "מצב העברה (קבוצה %d)"
|
msgstr "מצב העברה (קבוצה %d)"
|
||||||
@@ -468,37 +511,37 @@ msgstr "מצב העברה (קבוצה %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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1870
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "החלפה בין צגים"
|
msgstr "החלפה בין צגים"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:1872
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "הצגת עזרה על המסך"
|
msgstr "הצגת עזרה על המסך"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:630
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "תצוגה מובנית"
|
msgstr "תצוגה מובנית"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:653
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "לא ידוע"
|
msgstr "לא ידוע"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:655
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "תצוגה לא ידועה"
|
msgstr "תצוגה לא ידועה"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:663
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:474
|
#: src/compositor/compositor.c:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"Another compositing manager is already running on screen %i on display “%s”."
|
||||||
@@ -508,31 +551,6 @@ msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בת
|
|||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "אירוע פעמון"
|
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
|
#: src/core/display.c:608
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display “%s”\n"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "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
|
#: src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -601,7 +644,7 @@ msgstr "תוסף ה־mutter לשימוש"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "מרחב עבודה %d"
|
msgstr "מרחב עבודה %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Display “%s” already has a window manager; try using the --replace option to "
|
||||||
"replace the current window manager."
|
"replace the current window manager."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "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 "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"חלונות אלו אינם תומכים ב„שמירת ההגדרות הנוכחיות”, ויהיה צורך "
|
"חלונות אלו אינם תומכים ב„שמירת ההגדרות הנוכחיות”, ויהיה צורך באתחול ידני "
|
||||||
"באתחול ידני בכניסה הבאה שלך."
|
"בכניסה הבאה שלך."
|
||||||
|
|
||||||
#: src/x11/window-props.c:559
|
#: src/x11/window-props.c:559
|
||||||
#, c-format
|
#, c-format
|
||||||
|
|||||||
215
po/hr.po
215
po/hr.po
@@ -4,10 +4,9 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity 0\n"
|
"Project-Id-Version: metacity 0\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-02-17 16:00+0100\n"
|
||||||
"PO-Revision-Date: 2017-09-22 20:51+0200\n"
|
|
||||||
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||||
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
|
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
|
||||||
"Language: 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"
|
"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"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Launchpad-Export-Date: 2008-05-28 13:28+0000\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
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -44,134 +43,118 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Premjesti prozor posljednji radni prostor"
|
msgstr "Premjesti prozor posljednji radni prostor"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Premjesti prozor jedan radni prostor gore"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Premjesti prozor jedan radni prostor dolje"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Premjesti prozor jedan zaslon nalijevo"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Premjesti prozor jedan zaslon udesno"
|
msgstr "Premjesti prozor jedan zaslon udesno"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:42
|
#: data/50-mutter-navigation.xml:36
|
||||||
msgid "Move window one monitor up"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Premjesti prozor jedan zaslon gore"
|
msgstr "Premjesti prozor jedan zaslon gore"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:45
|
#: data/50-mutter-navigation.xml:39
|
||||||
msgid "Move window one monitor down"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Premjesti prozor jedan zaslon dolje"
|
msgstr "Premjesti prozor jedan zaslon dolje"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Prebacivanje aplikacija"
|
msgstr "Prebacivanje aplikacija"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Prebaci na prijašnju aplikaciju"
|
msgstr "Prebaci na prijašnju aplikaciju"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Prebacivanje prozora"
|
msgstr "Prebacivanje prozora"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Prebaci na prijašnji prozor"
|
msgstr "Prebaci na prijašnji prozor"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Prebacivanje prozora aplikacija"
|
msgstr "Prebacivanje prozora aplikacija"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:72
|
#: data/50-mutter-navigation.xml:66
|
||||||
msgid "Switch to previous window of an application"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Prebaci na prijašnji prozor aplikacije"
|
msgstr "Prebaci na prijašnji prozor aplikacije"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:76
|
#: data/50-mutter-navigation.xml:70
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Prebacivanje upravljanja sustavom"
|
msgstr "Prebacivanje upravljanja sustavom"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:81
|
#: data/50-mutter-navigation.xml:75
|
||||||
msgid "Switch to previous system control"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Prebaci na prijašnje upravljanje sustavom"
|
msgstr "Prebaci na prijašnje upravljanje sustavom"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Prebacivanje izravno na prozor"
|
msgstr "Prebacivanje izravno na prozor"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:90
|
#: data/50-mutter-navigation.xml:84
|
||||||
msgid "Switch directly to previous window"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Prebaci izravno na prijašnji prozor"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Prebacivanje prozora aplikacije izravno"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Prebaci izravno na prijašnji prozor aplikacije"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Prebacivanje upravljanja sustavom izravno"
|
msgstr "Prebacivanje upravljanja sustavom izravno"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:108
|
#: data/50-mutter-navigation.xml:102
|
||||||
msgid "Switch directly to previous system control"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Prebaci izravno na prijašnje upravljanje sustavom"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Sakrij sve normalne prozore"
|
msgstr "Sakrij sve normalne prozore"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Prebaci se na radni prostor 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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Prebaci se na radni prostor 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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Prebaci se na radni prostor 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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Prebaci se na radni prostor 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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Prebaci na prijašnji radni prostor"
|
msgstr "Prebaci na prijašnji radni prostor"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Premjesti na gornji radni prostor"
|
msgstr "Premjesti na gornji radni prostor"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:138
|
#: data/50-mutter-navigation.xml:126
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Premjesti na donji radni prostor"
|
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"
|
msgid "System"
|
||||||
msgstr "Sustav"
|
msgstr "Sustav"
|
||||||
|
|
||||||
@@ -183,6 +166,10 @@ msgstr "Prikaži dijalog pokretanja naredbe"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Prikaži pregled aktivnosti"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Prozori"
|
msgstr "Prozori"
|
||||||
@@ -208,54 +195,50 @@ msgid "Restore window"
|
|||||||
msgstr "Vrati prozor"
|
msgstr "Vrati prozor"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: data/50-mutter-windows.xml:18
|
||||||
msgid "Toggle shaded state"
|
|
||||||
msgstr "Uklj/Isklj stanje zasjenjenosti"
|
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:20
|
|
||||||
msgid "Close window"
|
msgid "Close window"
|
||||||
msgstr "Zatvori prozor"
|
msgstr "Zatvori prozor"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Sakrij prozor"
|
msgstr "Sakrij prozor"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Premjesti prozor"
|
msgstr "Premjesti prozor"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Promijeni veličinu prozora"
|
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"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Uklj/Isklj prozor na svim radnim prostorima"
|
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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr "Podigni prekriven prozor, u suprotnome 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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Podigni prozor iznad ostalih prozora"
|
msgstr "Podigni prozor iznad ostalih prozora"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:35
|
#: data/50-mutter-windows.xml:33
|
||||||
msgid "Lower window below other windows"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Spusti 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"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Uvećaj prozor okomito"
|
msgstr "Uvećaj prozor okomito"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Uvećaj prozor vodoravno"
|
msgstr "Uvećaj prozor vodoravno"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Podijeli pogled ulijevo"
|
msgstr "Podijeli pogled ulijevo"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Podijeli pogled udesno"
|
msgstr "Podijeli pogled udesno"
|
||||||
|
|
||||||
@@ -493,10 +476,55 @@ msgstr "Prebaci na VT 12"
|
|||||||
msgid "Re-enable shortcuts"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Ponovno omogući prečace"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Način prebacivanja (Grupa %d)"
|
msgstr "Način prebacivanja (Grupa %d)"
|
||||||
@@ -504,37 +532,37 @@ msgstr "Način prebacivanja (Grupa %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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Prebaci zaslon"
|
msgstr "Prebaci zaslon"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Prikaži zaslonsku pomoć"
|
msgstr "Prikaži zaslonsku pomoć"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Ugrađeni zaslon"
|
msgstr "Ugrađeni zaslon"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nepoznat"
|
msgstr "Nepoznat"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Nepoznat zaslon"
|
msgstr "Nepoznat zaslon"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"Another compositing manager is already running on screen %i on display “%s”."
|
||||||
@@ -550,42 +578,46 @@ msgstr "Događaj zvona"
|
|||||||
msgid "Failed to open X Window System display “%s”\n"
|
msgid "Failed to open X Window System display “%s”\n"
|
||||||
msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Onemogući povezivanje sa upraviteljem sesija"
|
msgstr "Onemogući povezivanje sa upraviteljem sesija"
|
||||||
|
|
||||||
#: src/core/main.c:195
|
#: src/core/main.c:196
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Zamijeni pokrenutoga upravitelja porozora"
|
msgstr "Zamijeni pokrenutoga upravitelja porozora"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Odredite ID upravljanja sesijama"
|
msgstr "Odredite ID upravljanja sesijama"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "X Prikaz za korištenje"
|
msgstr "X Prikaz za korištenje"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Pokreni sesiju iz spremljene datoteke"
|
msgstr "Pokreni sesiju iz spremljene datoteke"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Napravi X pozive usklađenim"
|
msgstr "Napravi X pozive usklađenim"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Pokreni wayland kompozitor"
|
msgstr "Pokreni wayland kompozitor"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Pokreni kao ugrađeni kompozitor"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Pokreni kao potpuni poslužitelj zaslona, radije nego ugrađeni"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -640,7 +672,7 @@ msgstr "Mutter priključak koji se koristi"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Radni prostor %d"
|
msgstr "Radni prostor %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"Display “%s” already has a window manager; try using the --replace option to "
|
||||||
@@ -649,7 +681,7 @@ msgstr ""
|
|||||||
"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
|
"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
|
||||||
"mogućnost za zamjenu trenutnog upravitelja prozora."
|
"mogućnost za zamjenu trenutnog upravitelja prozora."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Zaslon %d na prikazu '%s' je neispravan\n"
|
msgstr "Zaslon %d na prikazu '%s' je neispravan\n"
|
||||||
@@ -663,7 +695,7 @@ msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"
|
|||||||
msgid "Mode Switch: Mode %d"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Način prebacivanja: Način %d"
|
msgstr "Način prebacivanja: Način %d"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -676,6 +708,21 @@ msgstr ""
|
|||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (na %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"
|
#~ msgid "Desktop"
|
||||||
#~ msgstr "Radna površina"
|
#~ msgstr "Radna površina"
|
||||||
|
|
||||||
|
|||||||
207
po/hu.po
207
po/hu.po
@@ -1,19 +1,18 @@
|
|||||||
# Hungarian translation of mutter.
|
# Hungarian translation for mutter.
|
||||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
|
# 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.
|
# This file is distributed under the same license as the mutter package.
|
||||||
#
|
#
|
||||||
# Andras Timar <timar at gnome dot hu>, 2002, 2003.
|
# Andras Timar <timar at gnome dot hu>, 2002, 2003.
|
||||||
# Gabor Sari <saga at externet dot hu>, 2003.
|
# Gabor Sari <saga at externet dot hu>, 2003.
|
||||||
# Laszlo Dvornik <dvornik at gnome dot hu>, 2004.
|
# 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.
|
# 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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-01-24 21:11+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-01-26 21:46+0100\n"
|
||||||
"PO-Revision-Date: 2017-09-05 17:35+0200\n"
|
|
||||||
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
||||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
@@ -48,134 +47,118 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Ablak áthelyezése az utolsó munkaterületre"
|
msgstr "Ablak áthelyezése az utolsó munkaterületre"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Ablak áthelyezése egy munkaterülettel feljebb"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Ablak áthelyezése egy munkaterülettel lejjebb"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Ablak áthelyezése a balra lévő monitorra"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Ablak áthelyezése a jobbra lévő monitorra"
|
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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Ablak áthelyezése egy monitorral feljebb"
|
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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Ablak áthelyezése egy monitorral lejjebb"
|
msgstr "Ablak áthelyezése egy monitorral lejjebb"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Alkalmazásváltás"
|
msgstr "Alkalmazásváltás"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Váltás az előző alkalmazásra"
|
msgstr "Váltás az előző alkalmazásra"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Ablakváltás"
|
msgstr "Ablakváltás"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Váltás az előző ablakra"
|
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"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Váltás egy alkalmazás ablakai között"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Váltás egy alkalmazás előző ablakára"
|
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"
|
msgid "Switch system controls"
|
||||||
msgstr "Váltás a rendszer vezérlői közt"
|
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"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Váltás az előző rendszervezérlőre"
|
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"
|
msgid "Switch windows directly"
|
||||||
msgstr "Váltás az ablakok közt közvetlenül"
|
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"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Váltás közvetlenül az előző ablakra"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Váltás egy alkalmazás ablakai között közvetlenül"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Váltás közvetlenül egy alkalmazás előző ablakára"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Váltás a rendszer vezérlői közt közvetlenül"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Váltás közvetlenül az előző rendszervezérlőre"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Minden normál ablak elrejtése"
|
msgstr "Minden normál ablak elrejtése"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Váltás az 1. munkaterületre"
|
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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Váltás a 2. munkaterületre"
|
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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Váltás a 3. munkaterületre"
|
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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Váltás a 4. munkaterületre"
|
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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Váltás az utolsó munkaterületre"
|
msgstr "Váltás az utolsó munkaterületre"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Áthelyezés a felső munkaterületre"
|
msgstr "Áthelyezés a felső munkaterületre"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:138
|
#: data/50-mutter-navigation.xml:126
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Áthelyezés az alsó munkaterületre"
|
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"
|
msgid "System"
|
||||||
msgstr "Rendszer"
|
msgstr "Rendszer"
|
||||||
|
|
||||||
@@ -187,6 +170,10 @@ msgstr "A parancs futtatása ablak megjelenítése"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "A tevékenységek áttekintés megjelenítése"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Ablakok"
|
msgstr "Ablakok"
|
||||||
@@ -212,54 +199,50 @@ msgid "Restore window"
|
|||||||
msgstr "Ablak visszaállítása"
|
msgstr "Ablak visszaállítása"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: 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"
|
msgid "Close window"
|
||||||
msgstr "Ablak bezárása"
|
msgstr "Ablak bezárása"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Ablak elrejtése"
|
msgstr "Ablak elrejtése"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Ablak áthelyezése"
|
msgstr "Ablak áthelyezése"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Ablak átméretezése"
|
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"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Ablak megjelenítése minden munkaterületen vagy csak az egyiken"
|
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"
|
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"
|
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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Ablak más ablakok elé hozása"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Ablak más ablakok mögé küldése"
|
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"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Ablak függőleges maximalizálása"
|
msgstr "Ablak függőleges maximalizálása"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Ablak vízszintes maximalizálása"
|
msgstr "Ablak vízszintes maximalizálása"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Bal oldali felosztás megjelenítése"
|
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"
|
msgid "View split on right"
|
||||||
msgstr "Jobb oldali felosztás megjelenítése"
|
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"
|
msgstr "Kísérleti funkciók engedélyezése"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
#: 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 ""
|
msgid ""
|
||||||
"To enable experimental features, add the feature keyword to the list. "
|
"To enable experimental features, add the feature keyword to the list. "
|
||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"Whether the feature requires restarting the compositor depends on the given "
|
||||||
@@ -432,12 +401,12 @@ msgid ""
|
|||||||
"screen cast support."
|
"screen cast support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"A kísérleti funkciók engedélyezéséhez adja hozzá a funkció kulcsszavát a "
|
"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 "
|
"listához. A funkció a betűszedő újraindítását igényelheti az adott "
|
||||||
"függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra is elérhető "
|
"funkciótól függően. Egyik kísérleti funkciónál sem szükséges, hogy továbbra "
|
||||||
"vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad ehhez a "
|
"is elérhető vagy beállítható legyen. Ne várja el azt, hogy ha bármit hozzáad "
|
||||||
"beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg lehetséges "
|
"ehhez a beállításhoz, akkor az a jövőben is elérhető lesz. Jelenleg "
|
||||||
"kulcsszavak: • „scale-monitor-framebuffer” — alapértelmezetté teszi a mutter "
|
"lehetséges kulcsszavak: • „scale-monitor-framebuffer” — alapértelmezetté "
|
||||||
"programot a logikai monitorok elrendezéséhez egy logikai "
|
"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 "
|
"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 "
|
"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 "
|
"ú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"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Gyorsbillentyűk újraengedélyezése"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2259
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Módkapcsoló (%d. csoport)"
|
msgstr "Módkapcsoló (%d. csoport)"
|
||||||
@@ -524,37 +539,37 @@ msgstr "Módkapcsoló (%d. csoport)"
|
|||||||
#. 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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2282
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Monitorváltás"
|
msgstr "Monitorváltás"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2284
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Képernyősúgó megjelenítése"
|
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"
|
msgid "Built-in display"
|
||||||
msgstr "Beépített kijelző"
|
msgstr "Beépített kijelző"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ismeretlen"
|
msgstr "Ismeretlen"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Ismeretlen kijelző"
|
msgstr "Ismeretlen kijelző"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. munkaterület"
|
msgstr "%d. munkaterület"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"A(z) „%s” kijelző már rendelkezik ablakkezelővel; próbálja a --replace "
|
||||||
"kapcsolóval helyettesíteni a jelenlegi ablakkezelőt."
|
"kapcsolóval helyettesíteni a jelenlegi ablakkezelőt."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "A(z) %d. képernyő a(z) „%s” megjelenítőn érvénytelen\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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-07 18:39+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-02-09 17:00+0700\n"
|
||||||
"PO-Revision-Date: 2017-08-30 10:46+0700\n"
|
|
||||||
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
|
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
|
||||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||||
"Language: id\n"
|
"Language: id\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.0.3\n"
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
@@ -47,134 +46,118 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Pindahkan jendela ke ruang kerja terakhir"
|
msgstr "Pindahkan jendela ke ruang kerja terakhir"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Pindahkan jendela satu ruang kerja ke atas"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Pindahkan jendela satu ruang kerja ke bawah"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Pindahkan jendela satu monitor ke kiri"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Pindahkan jendela satu monitor ke kanan"
|
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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Pindahkan jendela satu monitor ke atas"
|
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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Pindahkan jendela satu monitor ke bawah"
|
msgstr "Pindahkan jendela satu monitor ke bawah"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Bertukar aplikasi"
|
msgstr "Bertukar aplikasi"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Bertukar ke aplikasi sebelumnya"
|
msgstr "Bertukar ke aplikasi sebelumnya"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Bertukar jendela"
|
msgstr "Bertukar jendela"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Bertukar ke jendela sebelumnya"
|
msgstr "Bertukar ke jendela sebelumnya"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Bertukar jendela dari suatu aplikasi"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Bertukar ke jendela aplikasi sebelumnya"
|
msgstr "Bertukar ke jendela aplikasi sebelumnya"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:76
|
#: data/50-mutter-navigation.xml:70
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Bertukar kendali sistem"
|
msgstr "Bertukar kendali sistem"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:81
|
#: data/50-mutter-navigation.xml:75
|
||||||
msgid "Switch to previous system control"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Bertukar ke kendali sistem sebelumnya"
|
msgstr "Bertukar ke kendali sistem sebelumnya"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Bertukar jendela secara langsung"
|
msgstr "Bertukar jendela secara langsung"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:90
|
#: data/50-mutter-navigation.xml:84
|
||||||
msgid "Switch directly to previous window"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Bertukar secara langsung ke jendela sebelumnya"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Bertukar jendela dari suatu app secara langsung"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Bertukar secara langsung ke jendela sebelumnya dari suatu 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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Bertukar kendali sistem secara langsung"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Bertukar secara langsung ke kendali sistem sebelumnya"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Sembunyikan semua jendela normal"
|
msgstr "Sembunyikan semua jendela normal"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Bertukar ke ruang kerja 1"
|
msgstr "Bertukar ke ruang kerja 1"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:117
|
#: data/50-mutter-navigation.xml:111
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Bertukar ke ruang kerja 2"
|
msgstr "Bertukar ke ruang kerja 2"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:120
|
#: data/50-mutter-navigation.xml:114
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Bertukar ke ruang kerja 3"
|
msgstr "Bertukar ke ruang kerja 3"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:123
|
#: data/50-mutter-navigation.xml:117
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Bertukar ke ruang kerja 4"
|
msgstr "Bertukar ke ruang kerja 4"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:126
|
#: data/50-mutter-navigation.xml:120
|
||||||
msgid "Switch to last workspace"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Bertukar ke ruang kerja terakhir"
|
msgstr "Bertukar ke ruang kerja terakhir"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Pindahkan ke ruang kerja di atas"
|
msgstr "Pindahkan ke ruang kerja di atas"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:138
|
#: data/50-mutter-navigation.xml:126
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Pindahkan ke ruang kerja di bawah"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistem"
|
msgstr "Sistem"
|
||||||
|
|
||||||
@@ -186,6 +169,10 @@ msgstr "Tampilkan sapaan jalankan perintah"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Tampilkan ringkasan aktivitas"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Jendela"
|
msgstr "Jendela"
|
||||||
@@ -211,54 +198,50 @@ msgid "Restore window"
|
|||||||
msgstr "Pulihkan jendela"
|
msgstr "Pulihkan jendela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: data/50-mutter-windows.xml:18
|
||||||
msgid "Toggle shaded state"
|
|
||||||
msgstr "Jungkitkan keadaan berbayang"
|
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:20
|
|
||||||
msgid "Close window"
|
msgid "Close window"
|
||||||
msgstr "Tutup jendela"
|
msgstr "Tutup jendela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Sembunyikan jendela"
|
msgstr "Sembunyikan jendela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Pindahkan jendela"
|
msgstr "Pindahkan jendela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Ubah ukuran jendela"
|
msgstr "Ubah ukuran jendela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:29
|
#: data/50-mutter-windows.xml:27
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Jungkitkan jendela pada semua atau satu area kerja"
|
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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr "Naikkan jendela bila tertutup jendela lain, sebaliknya turunkan"
|
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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Naikkan jendela di atas jendela-jendela lain"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Turunkan jendela di bawah jendela-jendela lain"
|
msgstr "Turunkan jendela di bawah jendela-jendela lain"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:37
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Maksimalkan ukuran jendela secara vertikal"
|
msgstr "Maksimalkan ukuran jendela secara vertikal"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Maksimalkan ukuran jendela secara horisontal"
|
msgstr "Maksimalkan ukuran jendela secara horisontal"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Tilik belah di kiri"
|
msgstr "Tilik belah di kiri"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Tilik belah di kanan"
|
msgstr "Tilik belah di kanan"
|
||||||
|
|
||||||
@@ -497,10 +480,59 @@ msgstr "Bertukar ke VT 12"
|
|||||||
msgid "Re-enable shortcuts"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Aktifkan kembali pintasan"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Tukar Mode: (Grup %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Berpindah monitor"
|
msgstr "Berpindah monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Tampilkan bantuan pada layar"
|
msgstr "Tampilkan bantuan pada layar"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Tampilan bawaan"
|
msgstr "Tampilan bawaan"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Tak Dikenal"
|
msgstr "Tak Dikenal"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Tampilan Tak Dikenal"
|
msgstr "Tampilan Tak Dikenal"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Failed to open X Window System display “%s”\n"
|
||||||
msgstr "Gagal membuka tampilan X Window System \"%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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Menonaktifkan koneksi ke manajer sesi"
|
msgstr "Menonaktifkan koneksi ke manajer sesi"
|
||||||
|
|
||||||
#: src/core/main.c:195
|
#: src/core/main.c:196
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Mengganti manajer jendela yang tengah berjalan"
|
msgstr "Mengganti manajer jendela yang tengah berjalan"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Tentukan kode pengaturan sesi"
|
msgstr "Tentukan kode pengaturan sesi"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Tampilan X yang digunakna"
|
msgstr "Tampilan X yang digunakna"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Aktifkan sesi dari berkas simpanan"
|
msgstr "Aktifkan sesi dari berkas simpanan"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Buat panggilan X selaras"
|
msgstr "Buat panggilan X selaras"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Jalankan sebagai kompositor wayland"
|
msgstr "Jalankan sebagai kompositor wayland"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Jalankan sebagai kompositor bersarang"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Jalankan sebagai server tampilan penuh, ketimbang tampilan bersarang"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -644,7 +680,7 @@ msgstr "Pengaya Mutter yang dipakai"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Area kerja %d"
|
msgstr "Area kerja %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 --"
|
"Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --"
|
||||||
"replace untuk mengganti manajer jendela saat ini."
|
"replace untuk mengganti manajer jendela saat ini."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Layar %d pada tampilan \"%s\" tidak valid\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"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Tukar Mode: Mode %d"
|
msgstr "Tukar Mode: Mode %d"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -679,3 +715,18 @@ msgstr ""
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (pada %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"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-29 06:41+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-29 10:21+0200\n"
|
"PO-Revision-Date: 2017-11-17 14:30+0100\n"
|
||||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@@ -21,7 +21,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||||
"X-Generator: Poedit 1.8.12\n"
|
"X-Generator: Poedit 2.0.4\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -175,7 +175,7 @@ msgstr "Sposta su spazio di lavoro in alto"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Sposta su spazio di lavoro in basso"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
@@ -187,6 +187,10 @@ msgstr "Mostra il prompt esegui comando"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Mostra la panoramica delle attività"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Finestre"
|
msgstr "Finestre"
|
||||||
@@ -513,7 +517,7 @@ msgstr "Riabilita scorciatoie"
|
|||||||
#. TRANSLATORS: This string refers to a button that switches between
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Cambio modalità (gruppo %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Cambia monitor"
|
msgstr "Cambia monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Mostra aiuto sullo schermo"
|
msgstr "Mostra aiuto sullo schermo"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:908
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Display integrato"
|
msgstr "Display integrato"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:931
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Sconosciuto"
|
msgstr "Sconosciuto"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Display sconosciuto"
|
msgstr "Display sconosciuto"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -658,7 +662,7 @@ msgstr "Plugin Mutter da usare"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Spazio di lavoro %d"
|
msgstr "Spazio di lavoro %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 --"
|
"Il display «%s» ha già un window manager; provare a utilizzare l'opzione --"
|
||||||
"replace per sostituirlo."
|
"replace per sostituirlo."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Lo schermo %d sul display «%s» non è valido\n"
|
msgstr "Lo schermo %d sul display «%s» non è valido\n"
|
||||||
|
|||||||
129
po/nb.po
129
po/nb.po
@@ -4,11 +4,10 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter 3.23.x\n"
|
"Project-Id-Version: mutter 3.27.x\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2017-11-10 18:31+0000\n"
|
||||||
"POT-Creation-Date: 2017-02-16 21:09+0000\n"
|
"PO-Revision-Date: 2017-11-11 18:19+0100\n"
|
||||||
"PO-Revision-Date: 2017-02-19 17:44+0100\n"
|
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||||
"Language: nb\n"
|
"Language: nb\n"
|
||||||
@@ -168,7 +167,7 @@ msgstr "Flytt til arbeidsområdet over"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Flytt til arbeidsområdet under"
|
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"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
@@ -180,6 +179,10 @@ msgstr "Vis kommandolinje"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Vis oversikt over aktiviteter"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Vinduer"
|
msgstr "Vinduer"
|
||||||
@@ -393,14 +396,41 @@ msgstr ""
|
|||||||
"Når denne er «true» vil mye vinduer alltid plasseres midt på aktivt område "
|
"Når denne er «true» vil mye vinduer alltid plasseres midt på aktivt område "
|
||||||
"på skjermen."
|
"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"
|
msgid "Select window from tab popup"
|
||||||
msgstr "Fjern vindu fra tabulatordialog"
|
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"
|
msgid "Cancel tab popup"
|
||||||
msgstr "Avbryt tabulatordialog"
|
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
|
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
|
||||||
msgid "Switch to VT 1"
|
msgid "Switch to VT 1"
|
||||||
msgstr "Bytt til VT 1"
|
msgstr "Bytt til VT 1"
|
||||||
@@ -449,10 +479,14 @@ msgstr "Bytt til VT 11"
|
|||||||
msgid "Switch to VT 12"
|
msgid "Switch to VT 12"
|
||||||
msgstr "Bytt til 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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1800
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Modusbytte: (Gruppe %d)"
|
msgstr "Modusbytte: (Gruppe %d)"
|
||||||
@@ -460,37 +494,37 @@ msgstr "Modusbytte: (Gruppe %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.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:1822
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Bytt skjerm"
|
msgstr "Bytt skjerm"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:1824
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Vis hjelp på skjermen"
|
msgstr "Vis hjelp på skjermen"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:675
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Innebygget skjerm"
|
msgstr "Innebygget skjerm"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:698
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukjent"
|
msgstr "Ukjent"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:700
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Ukjent skjerm"
|
msgstr "Ukjent skjerm"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:708
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:471
|
#: src/compositor/compositor.c:476
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Bell event"
|
||||||
msgstr "Klokkehendelse"
|
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
|
#: src/core/display.c:608
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open X Window System display “%s”\n"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Kjør som en full skjermtjener, heller enn nøstet"
|
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
|
#: src/core/mutter.c:39
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -579,7 +613,8 @@ msgstr ""
|
|||||||
"mutter %s\n"
|
"mutter %s\n"
|
||||||
"Opphavsrett © 2001-%d Havoc Pennington, Red Hat, Inc, og andre\n"
|
"Opphavsrett © 2001-%d Havoc Pennington, Red Hat, Inc, og andre\n"
|
||||||
"Dette er fri programvare; se i kildekoden for kopibetingelser.\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
|
#: src/core/mutter.c:53
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
@@ -594,7 +629,7 @@ msgstr "Mutter-tillegg som skal brukes"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbeidsområde %d"
|
msgstr "Arbeidsområde %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Skjerm «%s» har allerede en vindushåndterer; prøv å bruke flagget --replace "
|
||||||
"for å erstatte aktiv vindushåndterer."
|
"for å erstatte aktiv vindushåndterer."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||||
@@ -621,7 +656,9 @@ msgstr "Modusbytte: Modus %d"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"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
|
#: src/x11/window-props.c:559
|
||||||
#, c-format
|
#, c-format
|
||||||
|
|||||||
208
po/pl.po
208
po/pl.po
@@ -1,21 +1,20 @@
|
|||||||
# Polish translation for mutter.
|
# 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.
|
# This file is distributed under the same license as the mutter package.
|
||||||
# Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 2002-2003.
|
# Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 2002-2003.
|
||||||
# Artur Flinta <aflinta@at.kernel.pl>, 2003-2005.
|
# Artur Flinta <aflinta@at.kernel.pl>, 2003-2005.
|
||||||
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
||||||
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
||||||
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
||||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2017.
|
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2018.
|
||||||
# Aviary.pl <community-poland@mozilla.org>, 2007-2017.
|
# Aviary.pl <community-poland@mozilla.org>, 2007-2018.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-02-08 02:05+0100\n"
|
||||||
"PO-Revision-Date: 2017-08-29 18:14+0200\n"
|
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@@ -50,134 +49,118 @@ msgid "Move window to last workspace"
|
|||||||
msgstr "Przeniesienie okna na ostatni obszar roboczy"
|
msgstr "Przeniesienie okna na ostatni obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Przeniesienie okna o obszar roboczy w górę"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Przeniesienie okna o obszar roboczy w dół"
|
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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Przeniesienie okna na monitor po lewej"
|
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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Przeniesienie okna na monitor po prawej"
|
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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Przeniesienie okna na monitor na górze"
|
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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Przeniesienie okna na monitor na dole"
|
msgstr "Przeniesienie okna na monitor na dole"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Przełączenie programów"
|
msgstr "Przełączenie programów"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Przełączenie na poprzedni program"
|
msgstr "Przełączenie na poprzedni program"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Przełączenie okien"
|
msgstr "Przełączenie okien"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Przełączenie na poprzednie okno"
|
msgstr "Przełączenie na poprzednie okno"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Przełączenie między oknami programu"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Przełączenie na poprzednie okno programu"
|
msgstr "Przełączenie na poprzednie okno programu"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:76
|
#: data/50-mutter-navigation.xml:70
|
||||||
msgid "Switch system controls"
|
msgid "Switch system controls"
|
||||||
msgstr "Przełączenie kontroli systemowej"
|
msgstr "Przełączenie kontroli systemowej"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:81
|
#: data/50-mutter-navigation.xml:75
|
||||||
msgid "Switch to previous system control"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Przełączenie na poprzednią kontrolę systemową"
|
msgstr "Przełączenie na poprzednią kontrolę systemową"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Bezpośrednie przełączenie między oknami"
|
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"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Bezpośrednie przełączenie na poprzednie okno"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Bezpośrednie przełączenie między oknami programu"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Bezpośrednie przełączenie na poprzednie okno programu"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Bezpośrednie przełączenie kontroli systemowej"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Bezpośrednie przełączenie na poprzednią kontrolę systemową"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Ukrycie wszystkich zwykłych okien"
|
msgstr "Ukrycie wszystkich zwykłych okien"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Przełączenie na 1. obszar roboczy"
|
msgstr "Przełączenie na 1. obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:117
|
#: data/50-mutter-navigation.xml:111
|
||||||
msgid "Switch to workspace 2"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Przełączenie na 2. obszar roboczy"
|
msgstr "Przełączenie na 2. obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:120
|
#: data/50-mutter-navigation.xml:114
|
||||||
msgid "Switch to workspace 3"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Przełączenie na 3. obszar roboczy"
|
msgstr "Przełączenie na 3. obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:123
|
#: data/50-mutter-navigation.xml:117
|
||||||
msgid "Switch to workspace 4"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Przełączenie na 4. obszar roboczy"
|
msgstr "Przełączenie na 4. obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:126
|
#: data/50-mutter-navigation.xml:120
|
||||||
msgid "Switch to last workspace"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Przełączenie na ostatni obszar roboczy"
|
msgstr "Przełączenie na ostatni obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Przeniesienie na górny obszar roboczy"
|
msgstr "Przeniesienie na górny obszar roboczy"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:138
|
#: data/50-mutter-navigation.xml:126
|
||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Przeniesienie na dolny obszar roboczy"
|
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"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
@@ -189,6 +172,10 @@ msgstr "Wyświetlenie okna wykonania polecenia"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Wyświetlenie podglądu aktywności"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Okna"
|
msgstr "Okna"
|
||||||
@@ -214,56 +201,52 @@ msgid "Restore window"
|
|||||||
msgstr "Przywrócenie okna"
|
msgstr "Przywrócenie okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: 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"
|
msgid "Close window"
|
||||||
msgstr "Zamknięcie okna"
|
msgstr "Zamknięcie okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Ukrycie okna"
|
msgstr "Ukrycie okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Przeniesienie okna"
|
msgstr "Przeniesienie okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Zmiana rozmiaru okna"
|
msgstr "Zmiana rozmiaru okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:29
|
#: data/50-mutter-windows.xml:27
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Przełączenie obecności okna na wszystkich obszarach roboczych lub jednym"
|
"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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wysunięcie okna, jeśli jest zasłonięte, odsunięcie w przeciwnym wypadku"
|
"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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Wysunięcie okna przed pozostałe"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Odsunięcie okna pod pozostałe"
|
msgstr "Odsunięcie okna pod pozostałe"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:37
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Pionowa maksymalizacja okna"
|
msgstr "Pionowa maksymalizacja okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Pozioma maksymalizacja okna"
|
msgstr "Pozioma maksymalizacja okna"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Podział widoku po lewej"
|
msgstr "Podział widoku po lewej"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Podział widoku po prawej"
|
msgstr "Podział widoku po prawej"
|
||||||
|
|
||||||
@@ -436,8 +419,8 @@ msgstr ""
|
|||||||
"w przestrzeni współrzędnych logicznych pikseli, jednocześnie skalując bufory "
|
"w przestrzeni współrzędnych logicznych pikseli, jednocześnie skalując bufory "
|
||||||
"ramki monitorów zamiast zawartości okien. Nie wymaga ponownego uruchomienia. "
|
"ramki monitorów zamiast zawartości okien. Nie wymaga ponownego uruchomienia. "
|
||||||
"• „remote-desktop” — włącza obsługę zdalnego pulpitu. Aby dodać "
|
"• „remote-desktop” — włącza obsługę zdalnego pulpitu. Aby dodać "
|
||||||
"udostępnianie ekranu, należy włączyć także opcję „screen-cast”. • "
|
"udostępnianie ekranu, należy włączyć także opcję „screen-cast”. • „screen-"
|
||||||
"„screen-cast” — włącza obsługę nagrywania ekranu."
|
"cast” — włącza obsługę nagrywania ekranu."
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:145
|
#: data/org.gnome.mutter.gschema.xml.in:145
|
||||||
msgid "Select window from tab popup"
|
msgid "Select window from tab popup"
|
||||||
@@ -507,10 +490,55 @@ msgstr "Przełączenie na 12. konsolę wirtualną"
|
|||||||
msgid "Re-enable shortcuts"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Ponowne włączenie skrótów"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Przełącznik trybu (%d. grupa)"
|
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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Przełączenie monitora"
|
msgstr "Przełączenie monitora"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Ekran pomocy"
|
msgstr "Ekran pomocy"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Wbudowany ekran"
|
msgstr "Wbudowany ekran"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nieznany"
|
msgstr "Nieznany"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Nieznany ekran"
|
msgstr "Nieznany ekran"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
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"
|
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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Rozłącza połączenie z menedżerem sesji"
|
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"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Zastępuje uruchomionego menedżera okien"
|
msgstr "Zastępuje uruchomionego menedżera okien"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Podaje identyfikator zarządzania sesją"
|
msgstr "Podaje identyfikator zarządzania sesją"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Używany ekran X"
|
msgstr "Używany ekran X"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inicjuje sesję z zapisanego pliku"
|
msgstr "Inicjuje sesję z zapisanego pliku"
|
||||||
|
|
||||||
#: src/core/main.c:218
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Synchroniczne wywołania X"
|
msgstr "Synchroniczne wywołania X"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Uruchamia jako menedżer składania Wayland"
|
msgstr "Uruchamia jako menedżer składania Wayland"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Uruchamia jako osadzony menedżer składania"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Uruchamia jako pełny serwer wyświetlania zamiast osadzonego"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -653,7 +685,7 @@ msgstr "Używana wtyczka menedżera Mutter"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "%d. obszar roboczy"
|
msgstr "%d. obszar roboczy"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Na ekranie „%s” działa już menedżer okien. Aby zastąpić działającego "
|
||||||
"menedżera okien, należy użyć opcji „--replace”."
|
"menedżera okien, należy użyć opcji „--replace”."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Podekran %d ekranu „%s” jest nieprawidłowy\n"
|
msgstr "Podekran %d ekranu „%s” jest nieprawidłowy\n"
|
||||||
@@ -677,7 +709,7 @@ msgstr ""
|
|||||||
msgid "Mode Switch: Mode %d"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Przełącznik trybu: %d. tryb"
|
msgstr "Przełącznik trybu: %d. tryb"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"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.
|
# 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.
|
# This file is distributed under the same license as the mutter package.
|
||||||
# Sun G11n <gnome_int_l10n@ireland.sun.com>, 2002.
|
# Sun G11n <gnome_int_l10n@ireland.sun.com>, 2002.
|
||||||
# Evandro Fernandes Giovanini <evandrofg@ig.com.br>, 2002, 2003, 2006.
|
# Evandro Fernandes Giovanini <evandrofg@ig.com.br>, 2002, 2003, 2006.
|
||||||
@@ -14,15 +14,14 @@
|
|||||||
# Antonio Fernandes C. Neto <fernandes@pelivre.org>, 2010.
|
# Antonio Fernandes C. Neto <fernandes@pelivre.org>, 2010.
|
||||||
# Rodrigo Padula de Oliveira <contato@rodrigopadula.com>, 2011.
|
# Rodrigo Padula de Oliveira <contato@rodrigopadula.com>, 2011.
|
||||||
# Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
|
# Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
|
||||||
# Enrico Nicoletto <liverig@gmail.com>, 2012, 2014, 2016.
|
# Enrico Nicoletto <liverig@gmail.com>, 2012-2016.
|
||||||
# Rafael Fontenelle <rafaelff@gnome.org>, 2013, 2014, 2016, 2017.
|
# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2018.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"&keywords=I18N+L10N&component=general\n"
|
"POT-Creation-Date: 2018-02-06 04:14+0000\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"PO-Revision-Date: 2018-02-16 15:02-0200\n"
|
||||||
"PO-Revision-Date: 2017-09-03 11:06-0200\n"
|
|
||||||
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
||||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||||
"Language: pt_BR\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"
|
msgstr "Mover a janela para o último espaço de trabalho"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:24
|
#: 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"
|
msgid "Move window one workspace up"
|
||||||
msgstr "Mover a janela um espaço de trabalho acima"
|
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"
|
msgid "Move window one workspace down"
|
||||||
msgstr "Mover a janela um espaço de trabalho abaixo"
|
msgstr "Mover a janela um espaço de trabalho abaixo"
|
||||||
|
|
||||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
# 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"
|
msgid "Move window one monitor to the left"
|
||||||
msgstr "Mover janela para o monitor da esquerda"
|
msgstr "Mover janela para o monitor da esquerda"
|
||||||
|
|
||||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
# 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"
|
msgid "Move window one monitor to the right"
|
||||||
msgstr "Mover janela para o monitor da direita"
|
msgstr "Mover janela para o monitor da direita"
|
||||||
|
|
||||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
# 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"
|
msgid "Move window one monitor up"
|
||||||
msgstr "Mover janela para o monitor acima"
|
msgstr "Mover janela para o monitor acima"
|
||||||
|
|
||||||
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
|
# 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"
|
msgid "Move window one monitor down"
|
||||||
msgstr "Mover janela para o monitor abaixo"
|
msgstr "Mover janela para o monitor abaixo"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:49
|
#: data/50-mutter-navigation.xml:43
|
||||||
msgid "Switch applications"
|
msgid "Switch applications"
|
||||||
msgstr "Alternar aplicativos"
|
msgstr "Alternar aplicativos"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:54
|
#: data/50-mutter-navigation.xml:48
|
||||||
msgid "Switch to previous application"
|
msgid "Switch to previous application"
|
||||||
msgstr "Alternar para o aplicativo anterior"
|
msgstr "Alternar para o aplicativo anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:58
|
#: data/50-mutter-navigation.xml:52
|
||||||
msgid "Switch windows"
|
msgid "Switch windows"
|
||||||
msgstr "Alternar janelas"
|
msgstr "Alternar janelas"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:63
|
#: data/50-mutter-navigation.xml:57
|
||||||
msgid "Switch to previous window"
|
msgid "Switch to previous window"
|
||||||
msgstr "Alternar para a janela anterior"
|
msgstr "Alternar para a janela anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:67
|
#: data/50-mutter-navigation.xml:61
|
||||||
msgid "Switch windows of an application"
|
msgid "Switch windows of an application"
|
||||||
msgstr "Alternar as janelas de um aplicativo"
|
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"
|
msgid "Switch to previous window of an application"
|
||||||
msgstr "Alternar para a janela anterior de um aplicativo"
|
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"
|
msgid "Switch system controls"
|
||||||
msgstr "Alternar controles do sistema"
|
msgstr "Alternar controles do sistema"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:81
|
#: data/50-mutter-navigation.xml:75
|
||||||
msgid "Switch to previous system control"
|
msgid "Switch to previous system control"
|
||||||
msgstr "Alternar para o controle de sistema anterior"
|
msgstr "Alternar para o controle de sistema anterior"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:85
|
#: data/50-mutter-navigation.xml:79
|
||||||
msgid "Switch windows directly"
|
msgid "Switch windows directly"
|
||||||
msgstr "Alternar as janelas diretamente"
|
msgstr "Alternar as janelas diretamente"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:90
|
#: data/50-mutter-navigation.xml:84
|
||||||
msgid "Switch directly to previous window"
|
msgid "Switch directly to previous window"
|
||||||
msgstr "Alternar diretamente para a janela anterior"
|
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"
|
msgid "Switch windows of an app directly"
|
||||||
msgstr "Alternar as janelas de um aplicativo diretamente"
|
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"
|
msgid "Switch directly to previous window of an app"
|
||||||
msgstr "Alternar diretamente para a janela anterior de um aplicativo"
|
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"
|
msgid "Switch system controls directly"
|
||||||
msgstr "Alternar os controles de sistema diretamente"
|
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"
|
msgid "Switch directly to previous system control"
|
||||||
msgstr "Alternar diretamente para o controle de sistema anterior"
|
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"
|
msgid "Hide all normal windows"
|
||||||
msgstr "Ocultar todas as janelas normais"
|
msgstr "Ocultar todas as janelas normais"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:114
|
#: data/50-mutter-navigation.xml:108
|
||||||
msgid "Switch to workspace 1"
|
msgid "Switch to workspace 1"
|
||||||
msgstr "Trocar para o espaço de trabalho 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"
|
msgid "Switch to workspace 2"
|
||||||
msgstr "Trocar para o espaço de trabalho 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"
|
msgid "Switch to workspace 3"
|
||||||
msgstr "Trocar para o espaço de trabalho 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"
|
msgid "Switch to workspace 4"
|
||||||
msgstr "Trocar para o espaço de trabalho 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"
|
msgid "Switch to last workspace"
|
||||||
msgstr "Trocar para o último espaço de trabalho"
|
msgstr "Trocar para o último espaço de trabalho"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:129
|
#: data/50-mutter-navigation.xml:123
|
||||||
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
|
|
||||||
msgid "Move to workspace above"
|
msgid "Move to workspace above"
|
||||||
msgstr "Mover para o espaço de trabalho acima"
|
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"
|
msgid "Move to workspace below"
|
||||||
msgstr "Mover para o espaço de trabalho abaixo"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
@@ -201,6 +184,10 @@ msgstr "Mostrar o prompt de comando de execução"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Mostrar o panorama de atividades"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Janelas"
|
msgstr "Janelas"
|
||||||
@@ -226,54 +213,50 @@ msgid "Restore window"
|
|||||||
msgstr "Restaurar janela"
|
msgstr "Restaurar janela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:18
|
#: data/50-mutter-windows.xml:18
|
||||||
msgid "Toggle shaded state"
|
|
||||||
msgstr "Alternar estado sombreado"
|
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:20
|
|
||||||
msgid "Close window"
|
msgid "Close window"
|
||||||
msgstr "Fechar janela"
|
msgstr "Fechar janela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:22
|
#: data/50-mutter-windows.xml:20
|
||||||
msgid "Hide window"
|
msgid "Hide window"
|
||||||
msgstr "Ocultar janela"
|
msgstr "Ocultar janela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:24
|
#: data/50-mutter-windows.xml:22
|
||||||
msgid "Move window"
|
msgid "Move window"
|
||||||
msgstr "Mover janela"
|
msgstr "Mover janela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:26
|
#: data/50-mutter-windows.xml:24
|
||||||
msgid "Resize window"
|
msgid "Resize window"
|
||||||
msgstr "Redimensionar janela"
|
msgstr "Redimensionar janela"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:29
|
#: data/50-mutter-windows.xml:27
|
||||||
msgid "Toggle window on all workspaces or one"
|
msgid "Toggle window on all workspaces or one"
|
||||||
msgstr "Alternar a janela em todos os espaços de trabalho ou em apenas um"
|
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"
|
msgid "Raise window if covered, otherwise lower it"
|
||||||
msgstr "Elevar a janela se estiver coberta; caso contrário, a abaixa"
|
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"
|
msgid "Raise window above other windows"
|
||||||
msgstr "Elevar a janela para frente das outras"
|
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"
|
msgid "Lower window below other windows"
|
||||||
msgstr "Colocar a janela atrás das outras"
|
msgstr "Colocar a janela atrás das outras"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:37
|
#: data/50-mutter-windows.xml:35
|
||||||
msgid "Maximize window vertically"
|
msgid "Maximize window vertically"
|
||||||
msgstr "Maximizar a janela verticalmente"
|
msgstr "Maximizar a janela verticalmente"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:39
|
#: data/50-mutter-windows.xml:37
|
||||||
msgid "Maximize window horizontally"
|
msgid "Maximize window horizontally"
|
||||||
msgstr "Maximizar a janela horizontalmente"
|
msgstr "Maximizar a janela horizontalmente"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:43
|
#: data/50-mutter-windows.xml:41
|
||||||
msgid "View split on left"
|
msgid "View split on left"
|
||||||
msgstr "Visualizar divisão à esquerda"
|
msgstr "Visualizar divisão à esquerda"
|
||||||
|
|
||||||
#: data/50-mutter-windows.xml:47
|
#: data/50-mutter-windows.xml:45
|
||||||
msgid "View split on right"
|
msgid "View split on right"
|
||||||
msgstr "Visualizar divisão à direita"
|
msgstr "Visualizar divisão à direita"
|
||||||
|
|
||||||
@@ -457,7 +440,6 @@ msgid "Cancel tab popup"
|
|||||||
msgstr "Cancelar aba instantânea"
|
msgstr "Cancelar aba instantânea"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:155
|
#: data/org.gnome.mutter.gschema.xml.in:155
|
||||||
#| msgid "Switch monitor"
|
|
||||||
msgid "Switch monitor configurations"
|
msgid "Switch monitor configurations"
|
||||||
msgstr "Trocar configurações de monitor"
|
msgstr "Trocar configurações de monitor"
|
||||||
|
|
||||||
@@ -517,10 +499,56 @@ msgstr "Trocar para o VT 12"
|
|||||||
msgid "Re-enable shortcuts"
|
msgid "Re-enable shortcuts"
|
||||||
msgstr "Reabilita atalhos"
|
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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Alternador de modo (Grupo %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2283
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Trocar monitor"
|
msgstr "Trocar monitor"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2285
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Mostrar ajuda na tela"
|
msgstr "Mostrar ajuda na tela"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:900
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Tela embutida"
|
msgstr "Tela embutida"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:923
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconhecido"
|
msgstr "Desconhecido"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:925
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Monitor desconhecido"
|
msgstr "Monitor desconhecido"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s de %s"
|
msgstr "%s de %s"
|
||||||
|
|
||||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||||
#. * we have no way to get it to exit
|
#. * we have no way to get it to exit
|
||||||
#: src/compositor/compositor.c:476
|
#: src/compositor/compositor.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Another compositing manager is already running on screen %i on display “%s”."
|
"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"
|
msgid "Failed to open X Window System display “%s”\n"
|
||||||
msgstr "Falha ao abrir a exibição “%s” do sistema de janelas X\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"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Desabilitar a conexão com o gerenciador de sessões"
|
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"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Substituir o gerenciador de janelas em execução"
|
msgstr "Substituir o gerenciador de janelas em execução"
|
||||||
|
|
||||||
#: src/core/main.c:201
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Especificar o ID do gerenciador de sessões"
|
msgstr "Especificar o ID do gerenciador de sessões"
|
||||||
|
|
||||||
#: src/core/main.c:206
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Exibição do X a ser utilizada"
|
msgstr "Exibição do X a ser utilizada"
|
||||||
|
|
||||||
#: src/core/main.c:212
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inicializar a sessão a partir do arquivo salvo"
|
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"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Fazer X chamadas síncronas"
|
msgstr "Fazer X chamadas síncronas"
|
||||||
|
|
||||||
#: src/core/main.c:225
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Executar como um compositor wayland"
|
msgstr "Executar como um compositor wayland"
|
||||||
|
|
||||||
#: src/core/main.c:231
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Executar como um compositor aninhado"
|
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"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Executar como um servidor de tela cheia, ao invés de aninhado"
|
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
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:147
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -664,7 +696,7 @@ msgstr "Plug-in do Mutter para usar"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Espaço de trabalho %d"
|
msgstr "Espaço de trabalho %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 --"
|
"A exibição “%s” já possui um gerenciador de janelas; tente usar a opção --"
|
||||||
"replace para substituir o gerenciador de janelas atual."
|
"replace para substituir o gerenciador de janelas atual."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "A tela %d na exibição “%s” é inválida\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"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Alternador de modo: Modo %d"
|
msgstr "Alternador de modo: Modo %d"
|
||||||
|
|
||||||
#: src/x11/session.c:1815
|
#: src/x11/session.c:1818
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -700,6 +732,21 @@ msgstr ""
|
|||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (em %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"
|
#~ msgid "background texture could not be created from file"
|
||||||
#~ msgstr "textura de plano de fundo não pôde ser criado de arquivo"
|
#~ msgstr "textura de plano de fundo não pôde ser criado de arquivo"
|
||||||
|
|
||||||
|
|||||||
30
po/sv.po
30
po/sv.po
@@ -11,15 +11,15 @@ msgstr ""
|
|||||||
"Project-Id-Version: mutter\n"
|
"Project-Id-Version: mutter\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-09-04 14:39+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||||
"PO-Revision-Date: 2017-09-05 00:14+0200\n"
|
"PO-Revision-Date: 2017-11-14 00:43+0100\n"
|
||||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.0.3\n"
|
"X-Generator: Poedit 2.0.4\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
msgid "Navigation"
|
msgid "Navigation"
|
||||||
@@ -173,7 +173,7 @@ msgstr "Flytta till arbetsyta ovanför"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Flytta till arbetsyta nedanför"
|
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"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
@@ -185,6 +185,10 @@ msgstr "Visa Kör kommando-dialogen"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Visa aktivitetsöversikt"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Fönster"
|
msgstr "Fönster"
|
||||||
@@ -500,7 +504,7 @@ msgstr "Återaktivera genvägar"
|
|||||||
#. TRANSLATORS: This string refers to a button that switches between
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Lägesväxel (grupp %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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Växla skärm"
|
msgstr "Växla skärm"
|
||||||
|
|
||||||
#: src/backends/meta-input-settings.c:2176
|
#: src/backends/meta-input-settings.c:2192
|
||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Visa hjälp på skärmen"
|
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"
|
msgid "Built-in display"
|
||||||
msgstr "Inbyggd display"
|
msgstr "Inbyggd display"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:931
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Okänd"
|
msgstr "Okänd"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Okänd display"
|
msgstr "Okänd display"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -643,7 +647,7 @@ msgstr "Mutter-insticksmodul att använda"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Arbetsyta %d"
|
msgstr "Arbetsyta %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för "
|
||||||
"att ersätta den aktuella fönsterhanteraren."
|
"att ersätta den aktuella fönsterhanteraren."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "Skärm %d på display ”%s” är ogiltig\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.
|
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
|
||||||
# Muhammed EKEN <gnome@m-eken.com>, 2011.
|
# Muhammed EKEN <gnome@m-eken.com>, 2011.
|
||||||
# Furkan Ahmet Kara <furkanahmetkara.fk@gmail.com>, 2017.
|
# 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.
|
# Emin Tufan Çetin <etcetin@gmail.com>, 2017.
|
||||||
|
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: mutter master\n"
|
"Project-Id-Version: mutter master\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
|
||||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2017-08-29 16:09+0000\n"
|
"POT-Creation-Date: 2017-11-10 18:18+0000\n"
|
||||||
"PO-Revision-Date: 2017-08-29 23:17+0300\n"
|
"PO-Revision-Date: 2017-11-15 23:49+0300\n"
|
||||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
||||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -179,7 +179,7 @@ msgstr "Üstteki çalışma alanına taşı"
|
|||||||
msgid "Move to workspace below"
|
msgid "Move to workspace below"
|
||||||
msgstr "Alttaki çalışma alanına taşı"
|
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"
|
msgid "System"
|
||||||
msgstr "Sistem"
|
msgstr "Sistem"
|
||||||
|
|
||||||
@@ -191,6 +191,10 @@ msgstr "Komut çalıştırma istemini göster"
|
|||||||
msgid "Show the activities overview"
|
msgid "Show the activities overview"
|
||||||
msgstr "Etkinlik genel görünümünü göster"
|
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
|
#: data/50-mutter-windows.xml:6
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Pencereler"
|
msgstr "Pencereler"
|
||||||
@@ -413,20 +417,6 @@ msgid "Enable experimental features"
|
|||||||
msgstr "Deneysel özellikleri etkinleştir"
|
msgstr "Deneysel özellikleri etkinleştir"
|
||||||
|
|
||||||
#: data/org.gnome.mutter.gschema.xml.in:108
|
#: 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 ""
|
msgid ""
|
||||||
"To enable experimental features, add the feature keyword to the list. "
|
"To enable experimental features, add the feature keyword to the list. "
|
||||||
"Whether the feature requires restarting the compositor depends on the given "
|
"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
|
#. TRANSLATORS: This string refers to a button that switches between
|
||||||
#. * different modes.
|
#. * different modes.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2151
|
#: src/backends/meta-input-settings.c:2167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Mode Switch (Group %d)"
|
msgid "Mode Switch (Group %d)"
|
||||||
msgstr "Kip anahtarı (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'
|
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
|
||||||
#. * mapping through the available outputs.
|
#. * mapping through the available outputs.
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-input-settings.c:2174
|
#: src/backends/meta-input-settings.c:2190
|
||||||
msgid "Switch monitor"
|
msgid "Switch monitor"
|
||||||
msgstr "Monitör değiştir"
|
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"
|
msgid "Show on-screen help"
|
||||||
msgstr "Ekranda yardımı göster"
|
msgstr "Ekranda yardımı göster"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:903
|
#: src/backends/meta-monitor-manager.c:908
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Yerleşik ekran"
|
msgstr "Yerleşik ekran"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:926
|
#: src/backends/meta-monitor-manager.c:931
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Bilinmiyor"
|
msgstr "Bilinmiyor"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:928
|
#: src/backends/meta-monitor-manager.c:933
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Bilinmeyen Ekran"
|
msgstr "Bilinmeyen Ekran"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:936
|
#: src/backends/meta-monitor-manager.c:941
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -674,7 +664,7 @@ msgstr "Kullanılacak Mutter eklentisi"
|
|||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Çalışma Alanı %d"
|
msgstr "Çalışma Alanı %d"
|
||||||
|
|
||||||
#: src/core/screen.c:580
|
#: src/core/screen.c:583
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
"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 "
|
"yöneticisinin yerine bir başkasını koymak için --replace seçeneğini "
|
||||||
"kullanmayı deneyin."
|
"kullanmayı deneyin."
|
||||||
|
|
||||||
#: src/core/screen.c:665
|
#: src/core/screen.c:668
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"
|
msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"
|
||||||
|
|||||||
@@ -82,12 +82,19 @@ mutter_built_sources += \
|
|||||||
linux-dmabuf-unstable-v1-server-protocol.h \
|
linux-dmabuf-unstable-v1-server-protocol.h \
|
||||||
keyboard-shortcuts-inhibit-unstable-v1-protocol.c \
|
keyboard-shortcuts-inhibit-unstable-v1-protocol.c \
|
||||||
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h \
|
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)
|
$(NULL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
wayland_protocols = \
|
wayland_protocols = \
|
||||||
wayland/protocol/gtk-shell.xml \
|
wayland/protocol/gtk-shell.xml \
|
||||||
wayland/protocol/gtk-primary-selection.xml \
|
wayland/protocol/gtk-primary-selection.xml \
|
||||||
|
wayland/protocol/gtk-text-input.xml \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
||||||
@@ -97,6 +104,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
|||||||
backends/meta-backend-private.h \
|
backends/meta-backend-private.h \
|
||||||
backends/meta-barrier.c \
|
backends/meta-barrier.c \
|
||||||
backends/meta-barrier-private.h \
|
backends/meta-barrier-private.h \
|
||||||
|
backends/meta-crtc.c \
|
||||||
|
backends/meta-crtc.h \
|
||||||
backends/meta-cursor.c \
|
backends/meta-cursor.c \
|
||||||
backends/meta-cursor.h \
|
backends/meta-cursor.h \
|
||||||
backends/meta-cursor-tracker.c \
|
backends/meta-cursor-tracker.c \
|
||||||
@@ -107,6 +116,11 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
|||||||
backends/meta-egl.c \
|
backends/meta-egl.c \
|
||||||
backends/meta-egl.h \
|
backends/meta-egl.h \
|
||||||
backends/meta-egl-ext.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-display-config-shared.h \
|
||||||
backends/meta-idle-monitor.c \
|
backends/meta-idle-monitor.c \
|
||||||
backends/meta-idle-monitor-private.h \
|
backends/meta-idle-monitor-private.h \
|
||||||
@@ -131,6 +145,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
|||||||
backends/meta-monitor-manager-dummy.h \
|
backends/meta-monitor-manager-dummy.h \
|
||||||
backends/meta-orientation-manager.c \
|
backends/meta-orientation-manager.c \
|
||||||
backends/meta-orientation-manager.h \
|
backends/meta-orientation-manager.h \
|
||||||
|
backends/meta-output.c \
|
||||||
|
backends/meta-output.h \
|
||||||
backends/meta-pointer-constraint.c \
|
backends/meta-pointer-constraint.c \
|
||||||
backends/meta-pointer-constraint.h \
|
backends/meta-pointer-constraint.h \
|
||||||
backends/meta-settings.c \
|
backends/meta-settings.c \
|
||||||
@@ -149,8 +165,12 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
|
|||||||
backends/x11/meta-barrier-x11.h \
|
backends/x11/meta-barrier-x11.h \
|
||||||
backends/x11/meta-clutter-backend-x11.c \
|
backends/x11/meta-clutter-backend-x11.c \
|
||||||
backends/x11/meta-clutter-backend-x11.h \
|
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.c \
|
||||||
backends/x11/meta-cursor-renderer-x11.h \
|
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.c \
|
||||||
backends/x11/cm/meta-backend-x11-cm.h \
|
backends/x11/cm/meta-backend-x11-cm.h \
|
||||||
backends/x11/cm/meta-renderer-x11-cm.c \
|
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-input-settings-x11.h \
|
||||||
backends/x11/meta-monitor-manager-xrandr.c \
|
backends/x11/meta-monitor-manager-xrandr.c \
|
||||||
backends/x11/meta-monitor-manager-xrandr.h \
|
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.c \
|
||||||
backends/x11/meta-renderer-x11.h \
|
backends/x11/meta-renderer-x11.h \
|
||||||
backends/x11/meta-stage-x11-nested.c \
|
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-cursor.h \
|
||||||
wayland/meta-wayland-surface-role-tablet-cursor.c \
|
wayland/meta-wayland-surface-role-tablet-cursor.c \
|
||||||
wayland/meta-wayland-surface-role-tablet-cursor.h \
|
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-types.h \
|
||||||
wayland/meta-wayland-versions.h \
|
wayland/meta-wayland-versions.h \
|
||||||
wayland/meta-wayland-outputs.c \
|
wayland/meta-wayland-outputs.c \
|
||||||
@@ -420,6 +444,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
|||||||
wayland/meta-wayland-xdg-foreign.h \
|
wayland/meta-wayland-xdg-foreign.h \
|
||||||
wayland/meta-window-wayland.c \
|
wayland/meta-window-wayland.c \
|
||||||
wayland/meta-window-wayland.h \
|
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.c \
|
||||||
wayland/meta-wayland-xdg-shell.h \
|
wayland/meta-wayland-xdg-shell.h \
|
||||||
wayland/meta-wayland-wl-shell.c \
|
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.h \
|
||||||
wayland/meta-wayland-inhibit-shortcuts-dialog.c \
|
wayland/meta-wayland-inhibit-shortcuts-dialog.c \
|
||||||
wayland/meta-wayland-inhibit-shortcuts-dialog.h \
|
wayland/meta-wayland-inhibit-shortcuts-dialog.h \
|
||||||
|
wayland/meta-xwayland-grab-keyboard.c \
|
||||||
|
wayland/meta-xwayland-grab-keyboard.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -440,11 +468,15 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
|
|||||||
backends/native/meta-backend-native-private.h \
|
backends/native/meta-backend-native-private.h \
|
||||||
backends/native/meta-barrier-native.c \
|
backends/native/meta-barrier-native.c \
|
||||||
backends/native/meta-barrier-native.h \
|
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.c \
|
||||||
backends/native/meta-clutter-backend-native.h \
|
backends/native/meta-clutter-backend-native.h \
|
||||||
backends/native/meta-cursor-renderer-native.c \
|
backends/native/meta-cursor-renderer-native.c \
|
||||||
backends/native/meta-cursor-renderer-native.h \
|
backends/native/meta-cursor-renderer-native.h \
|
||||||
backends/native/meta-default-modes.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.c \
|
||||||
backends/native/meta-idle-monitor-native.h \
|
backends/native/meta-idle-monitor-native.h \
|
||||||
backends/native/meta-input-settings-native.c \
|
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-monitor-manager-kms.h \
|
||||||
backends/native/meta-launcher.c \
|
backends/native/meta-launcher.c \
|
||||||
backends/native/meta-launcher.h \
|
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.c \
|
||||||
backends/native/meta-renderer-native.h \
|
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.c \
|
||||||
backends/native/meta-stage-native.h \
|
backends/native/meta-stage-native.h \
|
||||||
backends/native/dbus-utils.c \
|
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 < $< > $@
|
$(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
|
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 < $< > $@
|
$(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,
|
MetaIdleMonitor * (* create_idle_monitor) (MetaBackend *backend,
|
||||||
int device_id);
|
int device_id);
|
||||||
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend);
|
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend,
|
||||||
|
GError **error);
|
||||||
MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend);
|
MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend);
|
||||||
MetaRenderer * (* create_renderer) (MetaBackend *backend);
|
MetaRenderer * (* create_renderer) (MetaBackend *backend,
|
||||||
|
GError **error);
|
||||||
MetaInputSettings * (* create_input_settings) (MetaBackend *backend);
|
MetaInputSettings * (* create_input_settings) (MetaBackend *backend);
|
||||||
|
|
||||||
gboolean (* grab_device) (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
|
void
|
||||||
@@ -337,6 +337,8 @@ on_device_removed (ClutterDeviceManager *device_manager,
|
|||||||
gboolean has_touchscreen, has_pointing_device;
|
gboolean has_touchscreen, has_pointing_device;
|
||||||
ClutterInputDeviceType device_type;
|
ClutterInputDeviceType device_type;
|
||||||
|
|
||||||
|
priv->current_device_id = 0;
|
||||||
|
|
||||||
device_type = clutter_input_device_get_device_type (device);
|
device_type = clutter_input_device_get_device_type (device);
|
||||||
has_touchscreen = check_has_slave_touchscreen (device_manager);
|
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
|
static void
|
||||||
create_device_monitors (MetaBackend *backend,
|
create_device_monitors (MetaBackend *backend,
|
||||||
ClutterDeviceManager *device_manager)
|
ClutterDeviceManager *device_manager)
|
||||||
@@ -441,7 +434,7 @@ meta_backend_real_post_init (MetaBackend *backend)
|
|||||||
clutter_actor_realize (priv->stage);
|
clutter_actor_realize (priv->stage);
|
||||||
META_BACKEND_GET_CLASS (backend)->select_stage_events (backend);
|
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);
|
meta_backend_sync_screen_size (backend);
|
||||||
|
|
||||||
@@ -579,6 +572,24 @@ experimental_features_changed (MetaSettings *settings,
|
|||||||
#endif /* HAVE_REMOTE_DESKTOP */
|
#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
|
static gboolean
|
||||||
meta_backend_initable_init (GInitable *initable,
|
meta_backend_initable_init (GInitable *initable,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
@@ -594,21 +605,20 @@ meta_backend_initable_init (GInitable *initable,
|
|||||||
|
|
||||||
priv->egl = g_object_new (META_TYPE_EGL, NULL);
|
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)
|
if (!priv->renderer)
|
||||||
{
|
return FALSE;
|
||||||
g_set_error (error, G_IO_ERROR,
|
|
||||||
G_IO_ERROR_FAILED,
|
|
||||||
"Failed to create MetaRenderer");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
priv->cursor_tracker = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
|
priv->cursor_tracker = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
|
||||||
|
|
||||||
priv->dnd = g_object_new (META_TYPE_DND, NULL);
|
priv->dnd = g_object_new (META_TYPE_DND, NULL);
|
||||||
|
|
||||||
priv->orientation_manager = g_object_new (META_TYPE_ORIENTATION_MANAGER, NULL);
|
|
||||||
|
|
||||||
return TRUE;
|
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 ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
ClutterActor *stage = meta_backend_get_stage (backend);
|
ClutterActor *stage = meta_backend_get_stage (backend);
|
||||||
CoglTexture *texture;
|
CoglTexture *texture;
|
||||||
ClutterRect rect = { 0 };
|
ClutterRect rect = CLUTTER_RECT_INIT_ZERO;
|
||||||
|
|
||||||
if (cursor_sprite)
|
if (cursor_sprite)
|
||||||
rect = meta_cursor_renderer_calculate_rect (renderer, 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);
|
texture = meta_cursor_sprite_get_cogl_texture (cursor_sprite);
|
||||||
if (!texture)
|
if (!texture)
|
||||||
return (ClutterRect) { 0 };
|
return (ClutterRect) CLUTTER_RECT_INIT_ZERO;
|
||||||
|
|
||||||
meta_cursor_sprite_get_hotspot (cursor_sprite, &hot_x, &hot_y);
|
meta_cursor_sprite_get_hotspot (cursor_sprite, &hot_x, &hot_y);
|
||||||
texture_scale = meta_cursor_sprite_get_texture_scale (cursor_sprite);
|
texture_scale = meta_cursor_sprite_get_texture_scale (cursor_sprite);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ struct _MetaCursorTracker {
|
|||||||
|
|
||||||
gboolean is_showing;
|
gboolean is_showing;
|
||||||
|
|
||||||
|
MetaCursorSprite *effective_cursor; /* May be NULL when hidden */
|
||||||
MetaCursorSprite *displayed_cursor;
|
MetaCursorSprite *displayed_cursor;
|
||||||
|
|
||||||
/* Wayland clients can set a NULL buffer as their cursor
|
/* Wayland clients can set a NULL buffer as their cursor
|
||||||
|
|||||||
@@ -53,47 +53,75 @@ enum {
|
|||||||
|
|
||||||
static guint signals[LAST_SIGNAL];
|
static guint signals[LAST_SIGNAL];
|
||||||
|
|
||||||
static MetaCursorSprite *
|
static void
|
||||||
get_displayed_cursor (MetaCursorTracker *tracker)
|
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 ();
|
MetaDisplay *display = meta_get_display ();
|
||||||
|
MetaCursorSprite *cursor = NULL;
|
||||||
|
|
||||||
if (!tracker->is_showing)
|
if (display && meta_display_windows_are_interactable (display) &&
|
||||||
return NULL;
|
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)
|
g_signal_handlers_disconnect_by_func (tracker->displayed_cursor,
|
||||||
return tracker->window_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
|
static void
|
||||||
update_displayed_cursor (MetaCursorTracker *tracker)
|
change_cursor_renderer (MetaCursorTracker *tracker)
|
||||||
{
|
{
|
||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
MetaCursorRenderer *cursor_renderer =
|
MetaCursorRenderer *cursor_renderer =
|
||||||
meta_backend_get_cursor_renderer (backend);
|
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
|
static void
|
||||||
sync_cursor (MetaCursorTracker *tracker)
|
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)
|
if (update_effective_cursor (tracker))
|
||||||
return;
|
change_cursor_renderer (tracker);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -107,6 +135,8 @@ meta_cursor_tracker_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
MetaCursorTracker *self = META_CURSOR_TRACKER (object);
|
MetaCursorTracker *self = META_CURSOR_TRACKER (object);
|
||||||
|
|
||||||
|
if (self->effective_cursor)
|
||||||
|
g_object_unref (self->effective_cursor);
|
||||||
if (self->displayed_cursor)
|
if (self->displayed_cursor)
|
||||||
g_object_unref (self->displayed_cursor);
|
g_object_unref (self->displayed_cursor);
|
||||||
if (self->root_cursor)
|
if (self->root_cursor)
|
||||||
@@ -282,9 +312,14 @@ meta_cursor_tracker_get_sprite (MetaCursorTracker *tracker)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cursor_sprite)
|
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
|
else
|
||||||
return NULL;
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PREPARE_AT,
|
PREPARE_AT,
|
||||||
|
TEXTURE_CHANGED,
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
@@ -228,6 +229,8 @@ meta_cursor_sprite_load_from_theme (MetaCursorSprite *self)
|
|||||||
|
|
||||||
g_assert (self->cursor != META_CURSOR_NONE);
|
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. */
|
/* We might be reloading with a different scale. If so clear the old data. */
|
||||||
if (self->xcursor_images)
|
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);
|
image = meta_cursor_sprite_get_current_frame_image (self);
|
||||||
meta_cursor_sprite_load_from_xcursor_image (self, image);
|
meta_cursor_sprite_load_from_xcursor_image (self, image);
|
||||||
|
|
||||||
self->theme_dirty = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaCursorSprite *
|
MetaCursorSprite *
|
||||||
@@ -266,11 +267,18 @@ meta_cursor_sprite_set_texture (MetaCursorSprite *self,
|
|||||||
int hot_x,
|
int hot_x,
|
||||||
int hot_y)
|
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);
|
g_clear_pointer (&self->texture, cogl_object_unref);
|
||||||
if (texture)
|
if (texture)
|
||||||
self->texture = cogl_object_ref (texture);
|
self->texture = cogl_object_ref (texture);
|
||||||
self->hot_x = hot_x;
|
self->hot_x = hot_x;
|
||||||
self->hot_y = hot_y;
|
self->hot_y = hot_y;
|
||||||
|
|
||||||
|
g_signal_emit (self, signals[TEXTURE_CHANGED], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -365,4 +373,10 @@ meta_cursor_sprite_class_init (MetaCursorSpriteClass *klass)
|
|||||||
G_TYPE_NONE, 2,
|
G_TYPE_NONE, 2,
|
||||||
G_TYPE_INT,
|
G_TYPE_INT,
|
||||||
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
|
#ifdef HAVE_WAYLAND
|
||||||
void meta_dnd_wayland_handle_begin_modal (MetaCompositor *compositor);
|
void meta_dnd_wayland_handle_begin_modal (MetaCompositor *compositor);
|
||||||
|
void meta_dnd_wayland_handle_end_modal (MetaCompositor *compositor);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* META_DND_PRIVATE_H */
|
#endif /* META_DND_PRIVATE_H */
|
||||||
|
|||||||
@@ -160,11 +160,11 @@ set_egl_error (GError **error)
|
|||||||
error_str);
|
error_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
gboolean
|
||||||
extensions_string_has_extensions_valist (const char *extensions_str,
|
meta_extensions_string_has_extensions_valist (const char *extensions_str,
|
||||||
char ***missing_extensions,
|
char ***missing_extensions,
|
||||||
char *first_extension,
|
char *first_extension,
|
||||||
va_list var_args)
|
va_list var_args)
|
||||||
{
|
{
|
||||||
char **extensions;
|
char **extensions;
|
||||||
char *extension;
|
char *extension;
|
||||||
@@ -222,10 +222,11 @@ meta_egl_has_extensions (MetaEgl *egl,
|
|||||||
}
|
}
|
||||||
|
|
||||||
va_start (var_args, first_extension);
|
va_start (var_args, first_extension);
|
||||||
has_extensions = extensions_string_has_extensions_valist (extensions_str,
|
has_extensions =
|
||||||
missing_extensions,
|
meta_extensions_string_has_extensions_valist (extensions_str,
|
||||||
first_extension,
|
missing_extensions,
|
||||||
var_args);
|
first_extension,
|
||||||
|
var_args);
|
||||||
va_end (var_args);
|
va_end (var_args);
|
||||||
|
|
||||||
return has_extensions;
|
return has_extensions;
|
||||||
@@ -245,6 +246,25 @@ meta_egl_initialize (MetaEgl *egl,
|
|||||||
return TRUE;
|
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
|
gboolean
|
||||||
meta_egl_choose_config (MetaEgl *egl,
|
meta_egl_choose_config (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
@@ -289,6 +309,27 @@ meta_egl_choose_config (MetaEgl *egl,
|
|||||||
return TRUE;
|
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
|
EGLSurface
|
||||||
meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
@@ -308,6 +349,21 @@ meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
|||||||
return surface;
|
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
|
static gboolean
|
||||||
is_egl_proc_valid_real (void *proc,
|
is_egl_proc_valid_real (void *proc,
|
||||||
const char *proc_name,
|
const char *proc_name,
|
||||||
@@ -352,6 +408,55 @@ meta_egl_get_platform_display (MetaEgl *egl,
|
|||||||
return display;
|
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
|
EGLImageKHR
|
||||||
meta_egl_create_image (MetaEgl *egl,
|
meta_egl_create_image (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
@@ -395,6 +500,38 @@ meta_egl_destroy_image (MetaEgl *egl,
|
|||||||
return TRUE;
|
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
|
gboolean
|
||||||
meta_egl_query_wayland_buffer (MetaEgl *egl,
|
meta_egl_query_wayland_buffer (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
@@ -479,10 +616,11 @@ meta_egl_egl_device_has_extensions (MetaEgl *egl,
|
|||||||
}
|
}
|
||||||
|
|
||||||
va_start (var_args, first_extension);
|
va_start (var_args, first_extension);
|
||||||
has_extensions = extensions_string_has_extensions_valist (extensions_str,
|
has_extensions =
|
||||||
missing_extensions,
|
meta_extensions_string_has_extensions_valist (extensions_str,
|
||||||
first_extension,
|
missing_extensions,
|
||||||
var_args);
|
first_extension,
|
||||||
|
var_args);
|
||||||
va_end (var_args);
|
va_end (var_args);
|
||||||
|
|
||||||
return has_extensions;
|
return has_extensions;
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ G_DECLARE_FINAL_TYPE (MetaEgl, meta_egl, META, EGL, GObject)
|
|||||||
|
|
||||||
GQuark meta_egl_error_quark (void);
|
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,
|
gboolean meta_egl_has_extensions (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
char ***missing_extensions,
|
char ***missing_extensions,
|
||||||
@@ -46,12 +52,28 @@ gboolean meta_egl_initialize (MetaEgl *egl,
|
|||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gpointer meta_egl_get_proc_address (MetaEgl *egl,
|
||||||
|
const char *procname,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean meta_egl_choose_config (MetaEgl *egl,
|
gboolean meta_egl_choose_config (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
const EGLint *attrib_list,
|
const EGLint *attrib_list,
|
||||||
EGLConfig *chosen_config,
|
EGLConfig *chosen_config,
|
||||||
GError **error);
|
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,
|
EGLImageKHR meta_egl_create_image (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
EGLContext context,
|
EGLContext context,
|
||||||
@@ -65,18 +87,46 @@ gboolean meta_egl_destroy_image (MetaEgl *egl,
|
|||||||
EGLImageKHR image,
|
EGLImageKHR image,
|
||||||
GError **error);
|
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,
|
EGLSurface meta_egl_create_pbuffer_surface (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
EGLConfig config,
|
EGLConfig config,
|
||||||
const EGLint *attrib_list,
|
const EGLint *attrib_list,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean meta_egl_destroy_surface (MetaEgl *egl,
|
||||||
|
EGLDisplay display,
|
||||||
|
EGLSurface surface,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
EGLDisplay meta_egl_get_platform_display (MetaEgl *egl,
|
EGLDisplay meta_egl_get_platform_display (MetaEgl *egl,
|
||||||
EGLenum platform,
|
EGLenum platform,
|
||||||
void *native_display,
|
void *native_display,
|
||||||
const EGLint *attrib_list,
|
const EGLint *attrib_list,
|
||||||
GError **error);
|
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,
|
gboolean meta_egl_query_wayland_buffer (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
struct wl_resource *buffer,
|
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,
|
ClutterInputDevice *device,
|
||||||
ClutterInputDeviceTool *tool,
|
ClutterInputDeviceTool *tool,
|
||||||
GDesktopStylusButtonAction primary,
|
GDesktopStylusButtonAction primary,
|
||||||
GDesktopStylusButtonAction secondary);
|
GDesktopStylusButtonAction secondary,
|
||||||
|
GDesktopStylusButtonAction tertiary);
|
||||||
gboolean (* has_two_finger_scroll) (MetaInputSettings *settings,
|
gboolean (* has_two_finger_scroll) (MetaInputSettings *settings,
|
||||||
ClutterInputDevice *device);
|
ClutterInputDevice *device);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ struct _MetaInputSettingsPrivate
|
|||||||
GSettings *trackball_settings;
|
GSettings *trackball_settings;
|
||||||
GSettings *keyboard_settings;
|
GSettings *keyboard_settings;
|
||||||
GSettings *gsd_settings;
|
GSettings *gsd_settings;
|
||||||
|
GSettings *a11y_settings;
|
||||||
|
|
||||||
GHashTable *mappable_devices;
|
GHashTable *mappable_devices;
|
||||||
|
|
||||||
@@ -143,6 +144,7 @@ meta_input_settings_dispose (GObject *object)
|
|||||||
g_clear_object (&priv->trackball_settings);
|
g_clear_object (&priv->trackball_settings);
|
||||||
g_clear_object (&priv->keyboard_settings);
|
g_clear_object (&priv->keyboard_settings);
|
||||||
g_clear_object (&priv->gsd_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->mappable_devices, g_hash_table_unref);
|
||||||
|
|
||||||
if (priv->monitors_changed_id && priv->monitor_manager)
|
if (priv->monitors_changed_id && priv->monitor_manager)
|
||||||
@@ -770,12 +772,11 @@ update_keyboard_repeat (MetaInputSettings *input_settings)
|
|||||||
repeat, delay, interval);
|
repeat, delay, interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static MetaMonitor *
|
||||||
logical_monitor_has_monitor (MetaMonitorManager *monitor_manager,
|
logical_monitor_find_monitor (MetaLogicalMonitor *logical_monitor,
|
||||||
MetaLogicalMonitor *logical_monitor,
|
const char *vendor,
|
||||||
const char *vendor,
|
const char *product,
|
||||||
const char *product,
|
const char *serial)
|
||||||
const char *serial)
|
|
||||||
{
|
{
|
||||||
GList *monitors;
|
GList *monitors;
|
||||||
GList *l;
|
GList *l;
|
||||||
@@ -788,20 +789,22 @@ logical_monitor_has_monitor (MetaMonitorManager *monitor_manager,
|
|||||||
if (g_strcmp0 (meta_monitor_get_vendor (monitor), vendor) == 0 &&
|
if (g_strcmp0 (meta_monitor_get_vendor (monitor), vendor) == 0 &&
|
||||||
g_strcmp0 (meta_monitor_get_product (monitor), product) == 0 &&
|
g_strcmp0 (meta_monitor_get_product (monitor), product) == 0 &&
|
||||||
g_strcmp0 (meta_monitor_get_serial (monitor), serial) == 0)
|
g_strcmp0 (meta_monitor_get_serial (monitor), serial) == 0)
|
||||||
return TRUE;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaLogicalMonitor *
|
static void
|
||||||
meta_input_settings_find_logical_monitor (MetaInputSettings *input_settings,
|
meta_input_settings_find_monitor (MetaInputSettings *input_settings,
|
||||||
GSettings *settings,
|
GSettings *settings,
|
||||||
ClutterInputDevice *device)
|
ClutterInputDevice *device,
|
||||||
|
MetaMonitor **out_monitor,
|
||||||
|
MetaLogicalMonitor **out_logical_monitor)
|
||||||
{
|
{
|
||||||
MetaInputSettingsPrivate *priv;
|
MetaInputSettingsPrivate *priv;
|
||||||
MetaMonitorManager *monitor_manager;
|
MetaMonitorManager *monitor_manager;
|
||||||
MetaLogicalMonitor *ret = NULL;
|
MetaMonitor *monitor;
|
||||||
guint n_values;
|
guint n_values;
|
||||||
GList *logical_monitors;
|
GList *logical_monitors;
|
||||||
GList *l;
|
GList *l;
|
||||||
@@ -829,20 +832,20 @@ meta_input_settings_find_logical_monitor (MetaInputSettings *input_settings,
|
|||||||
{
|
{
|
||||||
MetaLogicalMonitor *logical_monitor = l->data;
|
MetaLogicalMonitor *logical_monitor = l->data;
|
||||||
|
|
||||||
if (logical_monitor_has_monitor (monitor_manager,
|
monitor = logical_monitor_find_monitor (logical_monitor,
|
||||||
logical_monitor,
|
edid[0], edid[1], edid[2]);
|
||||||
edid[0],
|
if (monitor)
|
||||||
edid[1],
|
|
||||||
edid[2]))
|
|
||||||
{
|
{
|
||||||
ret = logical_monitor;
|
if (out_monitor)
|
||||||
|
*out_monitor = monitor;
|
||||||
|
if (out_logical_monitor)
|
||||||
|
*out_logical_monitor = logical_monitor;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
g_strfreev (edid);
|
g_strfreev (edid);
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -878,9 +881,8 @@ update_tablet_keep_aspect (MetaInputSettings *input_settings,
|
|||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
||||||
{
|
{
|
||||||
keep_aspect = g_settings_get_boolean (settings, "keep-aspect");
|
keep_aspect = g_settings_get_boolean (settings, "keep-aspect");
|
||||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
meta_input_settings_find_monitor (input_settings, settings, device,
|
||||||
settings,
|
NULL, &logical_monitor);
|
||||||
device);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -899,7 +901,8 @@ update_device_display (MetaInputSettings *input_settings,
|
|||||||
MetaInputSettingsClass *input_settings_class;
|
MetaInputSettingsClass *input_settings_class;
|
||||||
MetaInputSettingsPrivate *priv;
|
MetaInputSettingsPrivate *priv;
|
||||||
gfloat matrix[6] = { 1, 0, 0, 0, 1, 0 };
|
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 &&
|
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
|
||||||
clutter_input_device_get_device_type (device) != CLUTTER_PEN_DEVICE &&
|
clutter_input_device_get_device_type (device) != CLUTTER_PEN_DEVICE &&
|
||||||
@@ -914,15 +917,12 @@ update_device_display (MetaInputSettings *input_settings,
|
|||||||
if (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE ||
|
if (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE ||
|
||||||
clutter_input_device_get_mapping_mode (device) ==
|
clutter_input_device_get_mapping_mode (device) ==
|
||||||
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
|
||||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
meta_input_settings_find_monitor (input_settings, settings, device,
|
||||||
settings,
|
&monitor, &logical_monitor);
|
||||||
device);
|
|
||||||
else
|
|
||||||
logical_monitor = NULL;
|
|
||||||
|
|
||||||
if (logical_monitor)
|
if (monitor)
|
||||||
meta_monitor_manager_get_monitor_matrix (priv->monitor_manager,
|
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);
|
input_settings_class->set_matrix (input_settings, device, matrix);
|
||||||
|
|
||||||
@@ -1142,6 +1142,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 *
|
static GSettings *
|
||||||
lookup_device_settings (ClutterInputDevice *device)
|
lookup_device_settings (ClutterInputDevice *device)
|
||||||
{
|
{
|
||||||
@@ -1397,6 +1481,7 @@ apply_device_settings (MetaInputSettings *input_settings,
|
|||||||
update_pointer_accel_profile (input_settings,
|
update_pointer_accel_profile (input_settings,
|
||||||
priv->trackball_settings,
|
priv->trackball_settings,
|
||||||
device);
|
device);
|
||||||
|
load_keyboard_a11y_settings (input_settings, device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1440,7 +1525,7 @@ update_stylus_buttonmap (MetaInputSettings *input_settings,
|
|||||||
ClutterInputDeviceTool *tool)
|
ClutterInputDeviceTool *tool)
|
||||||
{
|
{
|
||||||
MetaInputSettingsClass *input_settings_class;
|
MetaInputSettingsClass *input_settings_class;
|
||||||
GDesktopStylusButtonAction primary, secondary;
|
GDesktopStylusButtonAction primary, secondary, tertiary;
|
||||||
GSettings *tool_settings;
|
GSettings *tool_settings;
|
||||||
|
|
||||||
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
|
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
|
||||||
@@ -1455,10 +1540,11 @@ update_stylus_buttonmap (MetaInputSettings *input_settings,
|
|||||||
|
|
||||||
primary = g_settings_get_enum (tool_settings, "button-action");
|
primary = g_settings_get_enum (tool_settings, "button-action");
|
||||||
secondary = g_settings_get_enum (tool_settings, "secondary-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 = META_INPUT_SETTINGS_GET_CLASS (input_settings);
|
||||||
input_settings_class->set_stylus_button_map (input_settings, device, tool,
|
input_settings_class->set_stylus_button_map (input_settings, device, tool,
|
||||||
primary, secondary);
|
primary, secondary, tertiary);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1613,11 +1699,17 @@ meta_input_settings_init (MetaInputSettings *settings)
|
|||||||
clutter_settings_get_default(), "double-click-time",
|
clutter_settings_get_default(), "double-click-time",
|
||||||
G_SETTINGS_BIND_GET);
|
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 =
|
priv->mappable_devices =
|
||||||
g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) device_mapping_info_free);
|
g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) device_mapping_info_free);
|
||||||
|
|
||||||
priv->monitor_manager = g_object_ref (meta_monitor_manager_get ());
|
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);
|
G_CALLBACK (monitors_changed_cb), settings);
|
||||||
|
|
||||||
#ifdef HAVE_LIBWACOM
|
#ifdef HAVE_LIBWACOM
|
||||||
@@ -1652,6 +1744,7 @@ MetaLogicalMonitor *
|
|||||||
meta_input_settings_get_tablet_logical_monitor (MetaInputSettings *settings,
|
meta_input_settings_get_tablet_logical_monitor (MetaInputSettings *settings,
|
||||||
ClutterInputDevice *device)
|
ClutterInputDevice *device)
|
||||||
{
|
{
|
||||||
|
MetaLogicalMonitor *logical_monitor = NULL;
|
||||||
MetaInputSettingsPrivate *priv;
|
MetaInputSettingsPrivate *priv;
|
||||||
DeviceMappingInfo *info;
|
DeviceMappingInfo *info;
|
||||||
|
|
||||||
@@ -1663,9 +1756,9 @@ meta_input_settings_get_tablet_logical_monitor (MetaInputSettings *settings,
|
|||||||
if (!info)
|
if (!info)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return meta_input_settings_find_logical_monitor (settings,
|
meta_input_settings_find_monitor (settings, info->settings, device,
|
||||||
info->settings,
|
NULL, &logical_monitor);
|
||||||
device);
|
return logical_monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
GDesktopTabletMapping
|
GDesktopTabletMapping
|
||||||
@@ -1769,7 +1862,7 @@ meta_input_settings_cycle_tablet_output (MetaInputSettings *input_settings,
|
|||||||
{
|
{
|
||||||
MetaInputSettingsPrivate *priv;
|
MetaInputSettingsPrivate *priv;
|
||||||
DeviceMappingInfo *info;
|
DeviceMappingInfo *info;
|
||||||
MetaLogicalMonitor *logical_monitor;
|
MetaLogicalMonitor *logical_monitor = NULL;
|
||||||
const gchar *edid[4] = { 0 }, *pretty_name = NULL;
|
const gchar *edid[4] = { 0 }, *pretty_name = NULL;
|
||||||
|
|
||||||
g_return_if_fail (META_IS_INPUT_SETTINGS (input_settings));
|
g_return_if_fail (META_IS_INPUT_SETTINGS (input_settings));
|
||||||
@@ -1792,9 +1885,9 @@ meta_input_settings_cycle_tablet_output (MetaInputSettings *input_settings,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
logical_monitor = meta_input_settings_find_logical_monitor (input_settings,
|
meta_input_settings_find_monitor (input_settings, info->settings, device,
|
||||||
info->settings,
|
NULL, &logical_monitor);
|
||||||
device);
|
|
||||||
if (!cycle_logical_monitors (input_settings,
|
if (!cycle_logical_monitors (input_settings,
|
||||||
logical_monitor,
|
logical_monitor,
|
||||||
&logical_monitor))
|
&logical_monitor))
|
||||||
|
|||||||
@@ -21,9 +21,12 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "backends/meta-backend-private.h"
|
|
||||||
#include "backends/meta-logical-monitor.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)
|
G_DEFINE_TYPE (MetaLogicalMonitor, meta_logical_monitor, G_TYPE_OBJECT)
|
||||||
|
|
||||||
static MetaMonitor *
|
static MetaMonitor *
|
||||||
@@ -100,7 +103,8 @@ derive_monitor_transform (MetaMonitor *monitor)
|
|||||||
|
|
||||||
main_output = meta_monitor_get_main_output (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 *
|
MetaLogicalMonitor *
|
||||||
@@ -199,14 +203,72 @@ meta_logical_monitor_get_monitors (MetaLogicalMonitor *logical_monitor)
|
|||||||
return logical_monitor->monitors;
|
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
|
static void
|
||||||
meta_logical_monitor_init (MetaLogicalMonitor *logical_monitor)
|
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
|
static void
|
||||||
meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass)
|
meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass)
|
||||||
{
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
|
object_class->finalize = meta_logical_monitor_finalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
|||||||
@@ -61,6 +61,10 @@ G_DECLARE_FINAL_TYPE (MetaLogicalMonitor, meta_logical_monitor,
|
|||||||
META, LOGICAL_MONITOR,
|
META, LOGICAL_MONITOR,
|
||||||
GObject)
|
GObject)
|
||||||
|
|
||||||
|
typedef void (* MetaLogicalMonitorCrtcFunc) (MetaLogicalMonitor *logical_monitor,
|
||||||
|
MetaCrtc *crtc,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
MetaLogicalMonitor * meta_logical_monitor_new (MetaMonitorManager *monitor_manager,
|
MetaLogicalMonitor * meta_logical_monitor_new (MetaMonitorManager *monitor_manager,
|
||||||
MetaLogicalMonitorConfig *logical_monitor_config,
|
MetaLogicalMonitorConfig *logical_monitor_config,
|
||||||
int monitor_number);
|
int monitor_number);
|
||||||
@@ -90,4 +94,8 @@ gboolean meta_logical_monitor_has_neighbor (MetaLogicalMonitor *logical_monitor
|
|||||||
MetaLogicalMonitor *neighbor,
|
MetaLogicalMonitor *neighbor,
|
||||||
MetaScreenDirection neighbor_dir);
|
MetaScreenDirection neighbor_dir);
|
||||||
|
|
||||||
|
void meta_logical_monitor_foreach_crtc (MetaLogicalMonitor *logical_monitor,
|
||||||
|
MetaLogicalMonitorCrtcFunc func,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
#endif /* META_LOGICAL_MONITOR_H */
|
#endif /* META_LOGICAL_MONITOR_H */
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "backends/meta-monitor-config-migration.h"
|
#include "backends/meta-monitor-config-migration.h"
|
||||||
#include "backends/meta-monitor-config-store.h"
|
#include "backends/meta-monitor-config-store.h"
|
||||||
#include "backends/meta-monitor-manager-private.h"
|
#include "backends/meta-monitor-manager-private.h"
|
||||||
|
#include "backends/meta-output.h"
|
||||||
#include "core/boxes-private.h"
|
#include "core/boxes-private.h"
|
||||||
|
|
||||||
#define CONFIG_HISTORY_MAX_SIZE 3
|
#define CONFIG_HISTORY_MAX_SIZE 3
|
||||||
@@ -151,11 +152,10 @@ assign_monitor_crtc (MetaMonitor *monitor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
transform = data->logical_monitor_config->transform;
|
transform = data->logical_monitor_config->transform;
|
||||||
if (meta_monitor_manager_is_transform_handled (data->monitor_manager,
|
crtc_transform = meta_monitor_logical_to_crtc_transform (monitor, transform);
|
||||||
crtc,
|
if (!meta_monitor_manager_is_transform_handled (data->monitor_manager,
|
||||||
transform))
|
crtc,
|
||||||
crtc_transform = transform;
|
crtc_transform))
|
||||||
else
|
|
||||||
crtc_transform = META_MONITOR_TRANSFORM_NORMAL;
|
crtc_transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
|
|
||||||
meta_monitor_calculate_crtc_pos (monitor, mode, output, crtc_transform,
|
meta_monitor_calculate_crtc_pos (monitor, mode, output, crtc_transform,
|
||||||
@@ -326,8 +326,8 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetaMonitorsConfigKey *
|
MetaMonitorsConfigKey *
|
||||||
create_key_for_current_state (MetaMonitorManager *monitor_manager)
|
meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager)
|
||||||
{
|
{
|
||||||
MetaMonitorsConfigKey *config_key;
|
MetaMonitorsConfigKey *config_key;
|
||||||
GList *l;
|
GList *l;
|
||||||
@@ -369,7 +369,8 @@ meta_monitor_config_manager_get_stored (MetaMonitorConfigManager *config_manager
|
|||||||
MetaMonitorsConfig *config;
|
MetaMonitorsConfig *config;
|
||||||
GError *error = NULL;
|
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)
|
if (!config_key)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -753,6 +754,20 @@ create_for_builtin_display_rotation (MetaMonitorConfigManager *config_manager,
|
|||||||
|
|
||||||
if (rotate)
|
if (rotate)
|
||||||
transform = (current_logical_monitor_config->transform + 1) % META_MONITOR_TRANSFORM_FLIPPED;
|
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)
|
if (current_logical_monitor_config->transform == transform)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1237,6 +1252,10 @@ meta_monitors_config_new (MetaMonitorManager *monitor_manager,
|
|||||||
MetaMonitor *monitor = l->data;
|
MetaMonitor *monitor = l->data;
|
||||||
MetaMonitorSpec *monitor_spec;
|
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);
|
monitor_spec = meta_monitor_get_spec (monitor);
|
||||||
if (meta_logical_monitor_configs_have_monitor (logical_monitor_configs,
|
if (meta_logical_monitor_configs_have_monitor (logical_monitor_configs,
|
||||||
monitor_spec))
|
monitor_spec))
|
||||||
|
|||||||
@@ -135,6 +135,8 @@ void meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor
|
|||||||
|
|
||||||
void meta_monitor_config_free (MetaMonitorConfig *monitor_config);
|
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,
|
gboolean meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs,
|
||||||
MetaMonitorSpec *monitor_spec);
|
MetaMonitorSpec *monitor_spec);
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,10 @@
|
|||||||
|
|
||||||
#include <meta/util.h>
|
#include <meta/util.h>
|
||||||
#include "backends/meta-backend-private.h"
|
#include "backends/meta-backend-private.h"
|
||||||
|
#include "backends/meta-crtc.h"
|
||||||
#include "backends/meta-monitor.h"
|
#include "backends/meta-monitor.h"
|
||||||
#include "backends/meta-monitor-config-manager.h"
|
#include "backends/meta-monitor-config-manager.h"
|
||||||
|
#include "backends/meta-output.h"
|
||||||
|
|
||||||
#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
@@ -45,6 +47,8 @@ struct _MetaMonitorManagerDummy
|
|||||||
{
|
{
|
||||||
MetaMonitorManager parent_instance;
|
MetaMonitorManager parent_instance;
|
||||||
|
|
||||||
|
MetaGpu *gpu;
|
||||||
|
|
||||||
gboolean is_transform_handled;
|
gboolean is_transform_handled;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -60,19 +64,49 @@ typedef struct _MetaOutputDummy
|
|||||||
|
|
||||||
G_DEFINE_TYPE (MetaMonitorManagerDummy, meta_monitor_manager_dummy, META_TYPE_MONITOR_MANAGER);
|
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
|
static void
|
||||||
meta_output_dummy_notify_destroy (MetaOutput *output);
|
meta_output_dummy_notify_destroy (MetaOutput *output);
|
||||||
|
|
||||||
#define array_last(a, t) \
|
typedef struct _CrtcModeSpec
|
||||||
g_array_index (a, t, a->len - 1)
|
{
|
||||||
|
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
|
static void
|
||||||
append_monitor (GArray *modes,
|
append_monitor (MetaMonitorManager *manager,
|
||||||
GArray *crtcs,
|
GList **modes,
|
||||||
GArray *outputs,
|
GList **crtcs,
|
||||||
float scale)
|
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,
|
.width = 800,
|
||||||
.height = 600,
|
.height = 600,
|
||||||
@@ -84,65 +118,84 @@ append_monitor (GArray *modes,
|
|||||||
.refresh_rate = 60.0
|
.refresh_rate = 60.0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
MetaCrtc crtc;
|
GList *new_modes = NULL;
|
||||||
|
MetaCrtc *crtc;
|
||||||
MetaOutputDummy *output_dummy;
|
MetaOutputDummy *output_dummy;
|
||||||
MetaOutput output;
|
MetaOutput *output;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
unsigned int number;
|
||||||
|
GList *l;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
for (i = 0; i < G_N_ELEMENTS (mode_specs); i++)
|
||||||
modes_decl[i].mode_id = modes->len + i;
|
{
|
||||||
g_array_append_vals (modes, modes_decl, G_N_ELEMENTS (modes_decl));
|
long mode_id;
|
||||||
|
MetaCrtcMode *mode;
|
||||||
|
|
||||||
crtc = (MetaCrtc) {
|
mode_id = g_list_length (*modes) + i + 1;
|
||||||
.crtc_id = crtcs->len + 1,
|
mode = create_mode (&mode_specs[i], mode_id);
|
||||||
.all_transforms = ALL_TRANSFORMS,
|
|
||||||
};
|
new_modes = g_list_append (new_modes, mode);
|
||||||
g_array_append_val (crtcs, crtc);
|
}
|
||||||
|
*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 = g_new0 (MetaOutputDummy, 1);
|
||||||
*output_dummy = (MetaOutputDummy) {
|
*output_dummy = (MetaOutputDummy) {
|
||||||
.scale = scale
|
.scale = scale
|
||||||
};
|
};
|
||||||
|
|
||||||
output = (MetaOutput) {
|
number = g_list_length (*outputs) + 1;
|
||||||
.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
|
|
||||||
};
|
|
||||||
|
|
||||||
output.modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (modes_decl));
|
output->gpu = gpu;
|
||||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
output->winsys_id = number;
|
||||||
output.modes[i] = &g_array_index (modes, MetaCrtcMode,
|
output->name = g_strdup_printf ("LVDS%d", number);
|
||||||
modes->len - (i + 1));
|
output->vendor = g_strdup ("MetaProducts Inc.");
|
||||||
output.n_modes = G_N_ELEMENTS (modes_decl);
|
output->product = g_strdup ("MetaMonitor");
|
||||||
output.possible_crtcs = g_new0 (MetaCrtc *, 1);
|
output->serial = g_strdup_printf ("0xC0FFEE-%d", number);
|
||||||
output.possible_crtcs[0] = &array_last (crtcs, MetaCrtc);
|
output->suggested_x = -1;
|
||||||
output.n_possible_crtcs = 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
|
static void
|
||||||
append_tiled_monitor (GArray *modes,
|
append_tiled_monitor (MetaMonitorManager *manager,
|
||||||
GArray *crtcs,
|
GList **modes,
|
||||||
GArray *outputs,
|
GList **crtcs,
|
||||||
int scale)
|
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,
|
.width = 800,
|
||||||
.height = 600,
|
.height = 600,
|
||||||
@@ -154,81 +207,105 @@ append_tiled_monitor (GArray *modes,
|
|||||||
.refresh_rate = 60.0
|
.refresh_rate = 60.0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
MetaCrtc crtcs_decl[] = {
|
unsigned int n_tiles = 2;
|
||||||
{
|
GList *new_modes = NULL;
|
||||||
.all_transforms = ALL_TRANSFORMS,
|
GList *new_crtcs = NULL;
|
||||||
},
|
MetaOutput *output;
|
||||||
{
|
|
||||||
.all_transforms = ALL_TRANSFORMS,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
MetaOutput output;
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
uint32_t tile_group_id;
|
uint32_t tile_group_id;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (modes_decl); i++)
|
for (i = 0; i < G_N_ELEMENTS (mode_specs); i++)
|
||||||
modes_decl[i].mode_id = modes->len + i;
|
{
|
||||||
g_array_append_vals (modes, modes_decl, G_N_ELEMENTS (modes_decl));
|
long mode_id;
|
||||||
|
MetaCrtcMode *mode;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (crtcs_decl); i++)
|
mode_id = g_list_length (*modes) + i + 1;
|
||||||
crtcs_decl[i].crtc_id = crtcs->len + i + 1;
|
mode = create_mode (&mode_specs[i], mode_id);
|
||||||
g_array_append_vals (crtcs, crtcs_decl, G_N_ELEMENTS (crtcs_decl));
|
|
||||||
|
|
||||||
tile_group_id = outputs->len + 1;
|
new_modes = g_list_append (new_modes, mode);
|
||||||
for (i = 0; i < G_N_ELEMENTS (crtcs_decl); i++)
|
}
|
||||||
|
*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;
|
MetaOutputDummy *output_dummy;
|
||||||
MetaCrtcMode *preferred_mode;
|
MetaCrtcMode *preferred_mode;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
|
unsigned int number;
|
||||||
|
GList *l;
|
||||||
|
|
||||||
output_dummy = g_new0 (MetaOutputDummy, 1);
|
output_dummy = g_new0 (MetaOutputDummy, 1);
|
||||||
*output_dummy = (MetaOutputDummy) {
|
*output_dummy = (MetaOutputDummy) {
|
||||||
.scale = scale
|
.scale = scale
|
||||||
};
|
};
|
||||||
|
|
||||||
preferred_mode = &array_last (modes, MetaCrtcMode),
|
/* Arbitrary ID unique for this output */
|
||||||
output = (MetaOutput) {
|
number = g_list_length (*outputs) + 1;
|
||||||
.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
|
|
||||||
};
|
|
||||||
|
|
||||||
output.modes = g_new0 (MetaCrtcMode *, G_N_ELEMENTS (modes_decl));
|
preferred_mode = g_list_last (*modes)->data;
|
||||||
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);
|
|
||||||
|
|
||||||
output.possible_crtcs = g_new0 (MetaCrtc *, G_N_ELEMENTS (crtcs_decl));
|
output = g_object_new (META_TYPE_OUTPUT, NULL);
|
||||||
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);
|
|
||||||
|
|
||||||
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
|
static void
|
||||||
meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
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;
|
unsigned int num_monitors = 1;
|
||||||
float *monitor_scales = NULL;
|
float *monitor_scales = NULL;
|
||||||
const char *num_monitors_str;
|
const char *num_monitors_str;
|
||||||
@@ -248,9 +327,9 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
|||||||
const char *tiled_monitors_str;
|
const char *tiled_monitors_str;
|
||||||
gboolean tiled_monitors;
|
gboolean tiled_monitors;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
GArray *outputs;
|
GList *outputs;
|
||||||
GArray *crtcs;
|
GList *crtcs;
|
||||||
GArray *modes;
|
GList *modes;
|
||||||
|
|
||||||
/* To control what monitor configuration is generated, there are two available
|
/* To control what monitor configuration is generated, there are two available
|
||||||
* environmental variables that can be used:
|
* 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_str = g_getenv ("MUTTER_DEBUG_TILED_DUMMY_MONITORS");
|
||||||
tiled_monitors = g_strcmp0 (tiled_monitors_str, "1") == 0;
|
tiled_monitors = g_strcmp0 (tiled_monitors_str, "1") == 0;
|
||||||
|
|
||||||
modes = g_array_sized_new (FALSE, TRUE, sizeof (MetaCrtcMode), MAX_MODES);
|
modes = NULL;
|
||||||
crtcs = g_array_sized_new (FALSE, TRUE, sizeof (MetaCrtc), MAX_CRTCS);
|
crtcs = NULL;
|
||||||
outputs = g_array_sized_new (FALSE, TRUE, sizeof (MetaOutput), MAX_OUTPUTS);
|
outputs = NULL;
|
||||||
|
|
||||||
for (i = 0; i < num_monitors; i++)
|
for (i = 0; i < num_monitors; i++)
|
||||||
{
|
{
|
||||||
if (tiled_monitors)
|
if (tiled_monitors)
|
||||||
append_tiled_monitor (modes, crtcs, outputs, monitor_scales[i]);
|
append_tiled_monitor (manager,
|
||||||
|
&modes, &crtcs, &outputs, monitor_scales[i]);
|
||||||
else
|
else
|
||||||
append_monitor (modes, crtcs, outputs, monitor_scales[i]);
|
append_monitor (manager, &modes, &crtcs, &outputs, monitor_scales[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
manager->modes = (MetaCrtcMode *) modes->data;
|
meta_gpu_take_modes (gpu, modes);
|
||||||
manager->n_modes = modes->len;
|
meta_gpu_take_crtcs (gpu, crtcs);
|
||||||
manager->crtcs = (MetaCrtc *) crtcs->data;
|
meta_gpu_take_outputs (gpu, outputs);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -363,6 +436,8 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
|||||||
MetaOutputInfo **outputs,
|
MetaOutputInfo **outputs,
|
||||||
unsigned int n_outputs)
|
unsigned int n_outputs)
|
||||||
{
|
{
|
||||||
|
MetaMonitorManagerDummy *manager_dummy = META_MONITOR_MANAGER_DUMMY (manager);
|
||||||
|
GList *l;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0; i < n_crtcs; i++)
|
for (i = 0; i < n_crtcs; i++)
|
||||||
@@ -426,9 +501,9 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Disable CRTCs not mentioned in the list */
|
/* 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;
|
crtc->logical_monitor = NULL;
|
||||||
|
|
||||||
@@ -446,9 +521,9 @@ apply_crtc_assignments (MetaMonitorManager *manager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Disable outputs not mentioned in the list */
|
/* 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)
|
if (output->is_dirty)
|
||||||
{
|
{
|
||||||
@@ -643,7 +718,6 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
|
|||||||
{
|
{
|
||||||
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (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->ensure_initial_config = meta_monitor_manager_dummy_ensure_initial_config;
|
||||||
manager_class->apply_monitors_config = meta_monitor_manager_dummy_apply_monitors_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;
|
manager_class->is_transform_handled = meta_monitor_manager_dummy_is_transform_handled;
|
||||||
@@ -655,14 +729,44 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
const char *nested_offscreen_transform;
|
||||||
|
|
||||||
nested_offscreen_transform =
|
nested_offscreen_transform =
|
||||||
g_getenv ("MUTTER_DEBUG_NESTED_OFFSCREEN_TRANSFORM");
|
g_getenv ("MUTTER_DEBUG_NESTED_OFFSCREEN_TRANSFORM");
|
||||||
if (g_strcmp0 (nested_offscreen_transform, "1") == 0)
|
if (g_strcmp0 (nested_offscreen_transform, "1") == 0)
|
||||||
manager->is_transform_handled = FALSE;
|
manager_dummy->is_transform_handled = FALSE;
|
||||||
else
|
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
|
#define META_MONITOR_MANAGER_DUMMY_H
|
||||||
|
|
||||||
#include "meta-monitor-manager-private.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_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))
|
G_DECLARE_FINAL_TYPE (MetaMonitorManagerDummy, meta_monitor_manager_dummy,
|
||||||
#define META_MONITOR_MANAGER_DUMMY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_MONITOR_MANAGER_DUMMY, MetaMonitorManagerDummyClass))
|
META, MONITOR_MANAGER_DUMMY, MetaMonitorManager)
|
||||||
#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))
|
|
||||||
|
|
||||||
typedef struct _MetaMonitorManagerDummyClass MetaMonitorManagerDummyClass;
|
#define META_TYPE_GPU_DUMMY (meta_gpu_dummy_get_type ())
|
||||||
typedef struct _MetaMonitorManagerDummy MetaMonitorManagerDummy;
|
G_DECLARE_FINAL_TYPE (MetaGpuDummy, meta_gpu_dummy, META, GPU_DUMMY, MetaGpu)
|
||||||
|
|
||||||
GType meta_monitor_manager_dummy_get_type (void);
|
|
||||||
|
|
||||||
#endif /* META_MONITOR_MANAGER_DUMMY_H */
|
#endif /* META_MONITOR_MANAGER_DUMMY_H */
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ typedef struct _MetaLogicalMonitor MetaLogicalMonitor;
|
|||||||
|
|
||||||
typedef struct _MetaMonitorMode MetaMonitorMode;
|
typedef struct _MetaMonitorMode MetaMonitorMode;
|
||||||
|
|
||||||
|
typedef struct _MetaGpu MetaGpu;
|
||||||
|
|
||||||
typedef struct _MetaCrtc MetaCrtc;
|
typedef struct _MetaCrtc MetaCrtc;
|
||||||
typedef struct _MetaOutput MetaOutput;
|
typedef struct _MetaOutput MetaOutput;
|
||||||
typedef struct _MetaCrtcMode MetaCrtcMode;
|
typedef struct _MetaCrtcMode MetaCrtcMode;
|
||||||
@@ -105,156 +107,6 @@ typedef enum
|
|||||||
META_MONITOR_TRANSFORM_FLIPPED_270,
|
META_MONITOR_TRANSFORM_FLIPPED_270,
|
||||||
} MetaMonitorTransform;
|
} MetaMonitorTransform;
|
||||||
|
|
||||||
/* This matches the values in drm_mode.h */
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_CONNECTOR_TYPE_Unknown = 0,
|
|
||||||
META_CONNECTOR_TYPE_VGA = 1,
|
|
||||||
META_CONNECTOR_TYPE_DVII = 2,
|
|
||||||
META_CONNECTOR_TYPE_DVID = 3,
|
|
||||||
META_CONNECTOR_TYPE_DVIA = 4,
|
|
||||||
META_CONNECTOR_TYPE_Composite = 5,
|
|
||||||
META_CONNECTOR_TYPE_SVIDEO = 6,
|
|
||||||
META_CONNECTOR_TYPE_LVDS = 7,
|
|
||||||
META_CONNECTOR_TYPE_Component = 8,
|
|
||||||
META_CONNECTOR_TYPE_9PinDIN = 9,
|
|
||||||
META_CONNECTOR_TYPE_DisplayPort = 10,
|
|
||||||
META_CONNECTOR_TYPE_HDMIA = 11,
|
|
||||||
META_CONNECTOR_TYPE_HDMIB = 12,
|
|
||||||
META_CONNECTOR_TYPE_TV = 13,
|
|
||||||
META_CONNECTOR_TYPE_eDP = 14,
|
|
||||||
META_CONNECTOR_TYPE_VIRTUAL = 15,
|
|
||||||
META_CONNECTOR_TYPE_DSI = 16,
|
|
||||||
} MetaConnectorType;
|
|
||||||
|
|
||||||
/* Same as KMS mode flags and X11 randr flags */
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
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 _MetaTileInfo
|
|
||||||
{
|
|
||||||
guint32 group_id;
|
|
||||||
guint32 flags;
|
|
||||||
guint32 max_h_tiles;
|
|
||||||
guint32 max_v_tiles;
|
|
||||||
guint32 loc_h_tile;
|
|
||||||
guint32 loc_v_tile;
|
|
||||||
guint32 tile_w;
|
|
||||||
guint32 tile_h;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaOutput
|
|
||||||
{
|
|
||||||
/* The CRTC driving this output, NULL if the output is not enabled */
|
|
||||||
MetaCrtc *crtc;
|
|
||||||
/* The low-level ID of this output, used to apply back configuration */
|
|
||||||
glong winsys_id;
|
|
||||||
char *name;
|
|
||||||
char *vendor;
|
|
||||||
char *product;
|
|
||||||
char *serial;
|
|
||||||
int width_mm;
|
|
||||||
int height_mm;
|
|
||||||
CoglSubpixelOrder subpixel_order;
|
|
||||||
|
|
||||||
MetaConnectorType connector_type;
|
|
||||||
|
|
||||||
MetaCrtcMode *preferred_mode;
|
|
||||||
MetaCrtcMode **modes;
|
|
||||||
unsigned int n_modes;
|
|
||||||
|
|
||||||
MetaCrtc **possible_crtcs;
|
|
||||||
unsigned int n_possible_crtcs;
|
|
||||||
|
|
||||||
MetaOutput **possible_clones;
|
|
||||||
unsigned int n_possible_clones;
|
|
||||||
|
|
||||||
int backlight;
|
|
||||||
int backlight_min;
|
|
||||||
int backlight_max;
|
|
||||||
|
|
||||||
/* Used when changing configuration */
|
|
||||||
gboolean is_dirty;
|
|
||||||
|
|
||||||
/* The low-level bits used to build the high-level info
|
|
||||||
in MetaLogicalMonitor
|
|
||||||
|
|
||||||
XXX: flags maybe?
|
|
||||||
There is a lot of code that uses MonitorInfo->is_primary,
|
|
||||||
but nobody uses MetaOutput yet
|
|
||||||
*/
|
|
||||||
gboolean is_primary;
|
|
||||||
gboolean is_presentation;
|
|
||||||
gboolean is_underscanning;
|
|
||||||
gboolean supports_underscanning;
|
|
||||||
|
|
||||||
gpointer driver_private;
|
|
||||||
GDestroyNotify driver_notify;
|
|
||||||
|
|
||||||
/* get a new preferred mode on hotplug events, to handle dynamic guest resizing */
|
|
||||||
gboolean hotplug_mode_update;
|
|
||||||
gint suggested_x;
|
|
||||||
gint suggested_y;
|
|
||||||
|
|
||||||
MetaTileInfo tile_info;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaCrtc
|
|
||||||
{
|
|
||||||
glong crtc_id;
|
|
||||||
MetaRectangle rect;
|
|
||||||
MetaCrtcMode *current_mode;
|
|
||||||
MetaMonitorTransform transform;
|
|
||||||
unsigned int all_transforms;
|
|
||||||
|
|
||||||
/* Only used to build the logical configuration
|
|
||||||
from the HW one
|
|
||||||
*/
|
|
||||||
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
|
|
||||||
{
|
|
||||||
/* 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;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MetaCrtcInfo:
|
* MetaCrtcInfo:
|
||||||
*
|
*
|
||||||
@@ -298,6 +150,8 @@ struct _MetaMonitorManager
|
|||||||
{
|
{
|
||||||
MetaDBusDisplayConfigSkeleton parent_instance;
|
MetaDBusDisplayConfigSkeleton parent_instance;
|
||||||
|
|
||||||
|
MetaBackend *backend;
|
||||||
|
|
||||||
/* XXX: this structure is very badly
|
/* XXX: this structure is very badly
|
||||||
packed, but I like the logical organization
|
packed, but I like the logical organization
|
||||||
of fields */
|
of fields */
|
||||||
@@ -312,19 +166,7 @@ struct _MetaMonitorManager
|
|||||||
int screen_width;
|
int screen_width;
|
||||||
int screen_height;
|
int screen_height;
|
||||||
|
|
||||||
/* Outputs refer to physical screens,
|
GList *gpus;
|
||||||
CRTCs refer to stuff that can drive outputs
|
|
||||||
(like encoders, but less tied to the HW),
|
|
||||||
while logical_monitors refer to logical ones.
|
|
||||||
*/
|
|
||||||
MetaOutput *outputs;
|
|
||||||
unsigned int n_outputs;
|
|
||||||
|
|
||||||
MetaCrtcMode *modes;
|
|
||||||
unsigned int n_modes;
|
|
||||||
|
|
||||||
MetaCrtc *crtcs;
|
|
||||||
unsigned int n_crtcs;
|
|
||||||
|
|
||||||
GList *monitors;
|
GList *monitors;
|
||||||
|
|
||||||
@@ -349,8 +191,6 @@ struct _MetaMonitorManagerClass
|
|||||||
{
|
{
|
||||||
MetaDBusDisplayConfigSkeletonClass parent_class;
|
MetaDBusDisplayConfigSkeletonClass parent_class;
|
||||||
|
|
||||||
void (*read_current) (MetaMonitorManager *);
|
|
||||||
|
|
||||||
char* (*get_edid_file) (MetaMonitorManager *,
|
char* (*get_edid_file) (MetaMonitorManager *,
|
||||||
MetaOutput *);
|
MetaOutput *);
|
||||||
GBytes* (*read_edid) (MetaMonitorManager *,
|
GBytes* (*read_edid) (MetaMonitorManager *,
|
||||||
@@ -414,6 +254,10 @@ struct _MetaMonitorManagerClass
|
|||||||
MetaLogicalMonitorLayoutMode (*get_default_layout_mode) (MetaMonitorManager *);
|
MetaLogicalMonitorLayoutMode (*get_default_layout_mode) (MetaMonitorManager *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MetaBackend * meta_monitor_manager_get_backend (MetaMonitorManager *manager);
|
||||||
|
|
||||||
|
void meta_monitor_manager_setup (MetaMonitorManager *manager);
|
||||||
|
|
||||||
void meta_monitor_manager_rebuild (MetaMonitorManager *manager,
|
void meta_monitor_manager_rebuild (MetaMonitorManager *manager,
|
||||||
MetaMonitorsConfig *config);
|
MetaMonitorsConfig *config);
|
||||||
void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,
|
void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager,
|
||||||
@@ -451,16 +295,10 @@ MetaMonitor * meta_monitor_manager_get_monitor_from_connector (MetaMonitor
|
|||||||
|
|
||||||
GList * meta_monitor_manager_get_monitors (MetaMonitorManager *manager);
|
GList * meta_monitor_manager_get_monitors (MetaMonitorManager *manager);
|
||||||
|
|
||||||
MetaOutput *meta_monitor_manager_get_outputs (MetaMonitorManager *manager,
|
void meta_monitor_manager_add_gpu (MetaMonitorManager *manager,
|
||||||
unsigned int *n_outputs);
|
MetaGpu *gpu);
|
||||||
|
|
||||||
void meta_monitor_manager_get_resources (MetaMonitorManager *manager,
|
GList * meta_monitor_manager_get_gpus (MetaMonitorManager *manager);
|
||||||
MetaCrtcMode **modes,
|
|
||||||
unsigned int *n_modes,
|
|
||||||
MetaCrtc **crtcs,
|
|
||||||
unsigned int *n_crtcs,
|
|
||||||
MetaOutput **outputs,
|
|
||||||
unsigned int *n_outputs);
|
|
||||||
|
|
||||||
void meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
|
void meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
|
||||||
int *width,
|
int *width,
|
||||||
@@ -478,6 +316,7 @@ void meta_monitor_manager_read_current_state (MetaMonitorManager *
|
|||||||
void meta_monitor_manager_on_hotplug (MetaMonitorManager *manager);
|
void meta_monitor_manager_on_hotplug (MetaMonitorManager *manager);
|
||||||
|
|
||||||
gboolean meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
|
gboolean meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
|
||||||
|
MetaMonitor *monitor,
|
||||||
MetaLogicalMonitor *logical_monitor,
|
MetaLogicalMonitor *logical_monitor,
|
||||||
gfloat matrix[6]);
|
gfloat matrix[6]);
|
||||||
|
|
||||||
@@ -546,4 +385,11 @@ meta_monitor_transform_is_rotated (MetaMonitorTransform transform)
|
|||||||
return (transform % 2);
|
return (transform % 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns true if transform involves flipping */
|
||||||
|
static inline gboolean
|
||||||
|
meta_monitor_transform_is_flipped (MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
return (transform >= META_MONITOR_TRANSFORM_FLIPPED);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* META_MONITOR_MANAGER_PRIVATE_H */
|
#endif /* META_MONITOR_MANAGER_PRIVATE_H */
|
||||||
|
|||||||
@@ -36,16 +36,30 @@
|
|||||||
#include "util-private.h"
|
#include "util-private.h"
|
||||||
#include <meta/errors.h>
|
#include <meta/errors.h>
|
||||||
#include "edid.h"
|
#include "edid.h"
|
||||||
|
#include "backends/meta-crtc.h"
|
||||||
#include "backends/meta-logical-monitor.h"
|
#include "backends/meta-logical-monitor.h"
|
||||||
#include "backends/meta-monitor.h"
|
#include "backends/meta-monitor.h"
|
||||||
#include "backends/meta-monitor-config-manager.h"
|
#include "backends/meta-monitor-config-manager.h"
|
||||||
#include "backends/meta-orientation-manager.h"
|
#include "backends/meta-orientation-manager.h"
|
||||||
|
#include "backends/meta-output.h"
|
||||||
#include "backends/x11/meta-monitor-manager-xrandr.h"
|
#include "backends/x11/meta-monitor-manager-xrandr.h"
|
||||||
#include "meta-backend-private.h"
|
#include "meta-backend-private.h"
|
||||||
|
|
||||||
#define DEFAULT_DISPLAY_CONFIGURATION_TIMEOUT 20
|
#define DEFAULT_DISPLAY_CONFIGURATION_TIMEOUT 20
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PROP_0,
|
||||||
|
|
||||||
|
PROP_BACKEND,
|
||||||
|
|
||||||
|
PROP_LAST
|
||||||
|
};
|
||||||
|
|
||||||
|
static GParamSpec *obj_props[PROP_LAST];
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
MONITORS_CHANGED_INTERNAL,
|
||||||
CONFIRM_DISPLAY_CHANGE,
|
CONFIRM_DISPLAY_CHANGE,
|
||||||
SIGNALS_LAST
|
SIGNALS_LAST
|
||||||
};
|
};
|
||||||
@@ -75,6 +89,12 @@ static gboolean
|
|||||||
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
|
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
|
||||||
MetaMonitorsConfig *config);
|
MetaMonitorsConfig *config);
|
||||||
|
|
||||||
|
MetaBackend *
|
||||||
|
meta_monitor_manager_get_backend (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
return manager->backend;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_init (MetaMonitorManager *manager)
|
meta_monitor_manager_init (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
@@ -446,13 +466,13 @@ meta_monitor_manager_apply_monitors_config (MetaMonitorManager *manager,
|
|||||||
gboolean
|
gboolean
|
||||||
meta_monitor_manager_has_hotplug_mode_update (MetaMonitorManager *manager)
|
meta_monitor_manager_has_hotplug_mode_update (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
GList *l;
|
||||||
|
|
||||||
for (i = 0; i < manager->n_outputs; i++)
|
for (l = manager->gpus; l; l = l->next)
|
||||||
{
|
{
|
||||||
MetaOutput *output = &manager->outputs[i];
|
MetaGpu *gpu = l->data;
|
||||||
|
|
||||||
if (output->hotplug_mode_update)
|
if (meta_gpu_has_hotplug_mode_update (gpu))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -674,13 +694,27 @@ experimental_features_changed (MetaSettings *settings,
|
|||||||
meta_settings_update_ui_scaling_factor (settings);
|
meta_settings_update_ui_scaling_factor (settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_monitor_manager_setup (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
manager->in_init = TRUE;
|
||||||
|
|
||||||
|
manager->config_manager = meta_monitor_config_manager_new (manager);
|
||||||
|
|
||||||
|
meta_monitor_manager_read_current_state (manager);
|
||||||
|
|
||||||
|
meta_monitor_manager_ensure_initial_config (manager);
|
||||||
|
|
||||||
|
manager->in_init = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_constructed (GObject *object)
|
meta_monitor_manager_constructed (GObject *object)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
MetaMonitorManagerClass *manager_class =
|
MetaMonitorManagerClass *manager_class =
|
||||||
META_MONITOR_MANAGER_GET_CLASS (manager);
|
META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = manager->backend;
|
||||||
MetaSettings *settings = meta_backend_get_settings (backend);
|
MetaSettings *settings = meta_backend_get_settings (backend);
|
||||||
|
|
||||||
manager->experimental_features_changed_handler_id =
|
manager->experimental_features_changed_handler_id =
|
||||||
@@ -705,90 +739,8 @@ meta_monitor_manager_constructed (GObject *object)
|
|||||||
manager, 0);
|
manager, 0);
|
||||||
|
|
||||||
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
||||||
manager->in_init = TRUE;
|
|
||||||
|
|
||||||
manager->config_manager = meta_monitor_config_manager_new (manager);
|
|
||||||
|
|
||||||
meta_monitor_manager_read_current_state (manager);
|
|
||||||
|
|
||||||
meta_monitor_manager_ensure_initial_config (manager);
|
|
||||||
|
|
||||||
initialize_dbus_interface (manager);
|
initialize_dbus_interface (manager);
|
||||||
|
|
||||||
manager->in_init = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_monitor_manager_clear_output (MetaOutput *output)
|
|
||||||
{
|
|
||||||
g_free (output->name);
|
|
||||||
g_free (output->vendor);
|
|
||||||
g_free (output->product);
|
|
||||||
g_free (output->serial);
|
|
||||||
g_free (output->modes);
|
|
||||||
g_free (output->possible_crtcs);
|
|
||||||
g_free (output->possible_clones);
|
|
||||||
|
|
||||||
if (output->driver_notify)
|
|
||||||
output->driver_notify (output);
|
|
||||||
|
|
||||||
memset (output, 0, sizeof (*output));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_monitor_manager_free_output_array (MetaOutput *old_outputs,
|
|
||||||
int n_old_outputs)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < n_old_outputs; i++)
|
|
||||||
meta_monitor_manager_clear_output (&old_outputs[i]);
|
|
||||||
|
|
||||||
g_free (old_outputs);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_monitor_manager_clear_mode (MetaCrtcMode *mode)
|
|
||||||
{
|
|
||||||
g_free (mode->name);
|
|
||||||
|
|
||||||
if (mode->driver_notify)
|
|
||||||
mode->driver_notify (mode);
|
|
||||||
|
|
||||||
memset (mode, 0, sizeof (*mode));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_monitor_manager_free_mode_array (MetaCrtcMode *old_modes,
|
|
||||||
int n_old_modes)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < n_old_modes; i++)
|
|
||||||
meta_monitor_manager_clear_mode (&old_modes[i]);
|
|
||||||
|
|
||||||
g_free (old_modes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
meta_monitor_manager_clear_crtc (MetaCrtc *crtc)
|
|
||||||
{
|
|
||||||
if (crtc->driver_notify)
|
|
||||||
crtc->driver_notify (crtc);
|
|
||||||
|
|
||||||
memset (crtc, 0, sizeof (*crtc));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_monitor_manager_free_crtc_array (MetaCrtc *old_crtcs,
|
|
||||||
int n_old_crtcs)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < n_old_crtcs; i++)
|
|
||||||
meta_monitor_manager_clear_crtc (&old_crtcs[i]);
|
|
||||||
|
|
||||||
g_free (old_crtcs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -796,12 +748,10 @@ meta_monitor_manager_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
|
|
||||||
meta_monitor_manager_free_output_array (manager->outputs, manager->n_outputs);
|
g_list_free_full (manager->gpus, g_object_unref);
|
||||||
meta_monitor_manager_free_mode_array (manager->modes, manager->n_modes);
|
|
||||||
meta_monitor_manager_free_crtc_array (manager->crtcs, manager->n_crtcs);
|
|
||||||
g_list_free_full (manager->logical_monitors, g_object_unref);
|
g_list_free_full (manager->logical_monitors, g_object_unref);
|
||||||
|
|
||||||
g_signal_handler_disconnect (meta_get_backend (),
|
g_signal_handler_disconnect (manager->backend,
|
||||||
manager->experimental_features_changed_handler_id);
|
manager->experimental_features_changed_handler_id);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->finalize (object);
|
||||||
@@ -838,6 +788,42 @@ meta_monitor_manager_real_get_edid_file (MetaMonitorManager *manager,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_set_property (GObject *object,
|
||||||
|
guint prop_id,
|
||||||
|
const GValue *value,
|
||||||
|
GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_BACKEND:
|
||||||
|
manager->backend = g_value_get_object (value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_monitor_manager_get_property (GObject *object,
|
||||||
|
guint prop_id,
|
||||||
|
GValue *value,
|
||||||
|
GParamSpec *pspec)
|
||||||
|
{
|
||||||
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
|
|
||||||
|
switch (prop_id)
|
||||||
|
{
|
||||||
|
case PROP_BACKEND:
|
||||||
|
g_value_set_object (value, manager->backend);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
||||||
{
|
{
|
||||||
@@ -846,11 +832,21 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
|||||||
object_class->constructed = meta_monitor_manager_constructed;
|
object_class->constructed = meta_monitor_manager_constructed;
|
||||||
object_class->dispose = meta_monitor_manager_dispose;
|
object_class->dispose = meta_monitor_manager_dispose;
|
||||||
object_class->finalize = meta_monitor_manager_finalize;
|
object_class->finalize = meta_monitor_manager_finalize;
|
||||||
|
object_class->get_property = meta_monitor_manager_get_property;
|
||||||
|
object_class->set_property = meta_monitor_manager_set_property;
|
||||||
|
|
||||||
klass->get_edid_file = meta_monitor_manager_real_get_edid_file;
|
klass->get_edid_file = meta_monitor_manager_real_get_edid_file;
|
||||||
klass->read_edid = meta_monitor_manager_real_read_edid;
|
klass->read_edid = meta_monitor_manager_real_read_edid;
|
||||||
klass->is_lid_closed = meta_monitor_manager_real_is_lid_closed;
|
klass->is_lid_closed = meta_monitor_manager_real_is_lid_closed;
|
||||||
|
|
||||||
|
signals[MONITORS_CHANGED_INTERNAL] =
|
||||||
|
g_signal_new ("monitors-changed-internal",
|
||||||
|
G_TYPE_FROM_CLASS (object_class),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL, NULL,
|
||||||
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
signals[CONFIRM_DISPLAY_CHANGE] =
|
signals[CONFIRM_DISPLAY_CHANGE] =
|
||||||
g_signal_new ("confirm-display-change",
|
g_signal_new ("confirm-display-change",
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
G_TYPE_FROM_CLASS (object_class),
|
||||||
@@ -858,6 +854,16 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
|||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
|
obj_props[PROP_BACKEND] =
|
||||||
|
g_param_spec_object ("backend",
|
||||||
|
"backend",
|
||||||
|
"MetaBackend",
|
||||||
|
META_TYPE_BACKEND,
|
||||||
|
G_PARAM_READWRITE |
|
||||||
|
G_PARAM_CONSTRUCT_ONLY |
|
||||||
|
G_PARAM_STATIC_STRINGS);
|
||||||
|
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const double known_diagonals[] = {
|
static const double known_diagonals[] = {
|
||||||
@@ -958,31 +964,61 @@ get_connector_type_name (MetaConnectorType connector_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GList *
|
||||||
|
combine_gpu_lists (MetaMonitorManager *manager,
|
||||||
|
GList * (*list_getter) (MetaGpu *gpu))
|
||||||
|
{
|
||||||
|
GList *list = NULL;
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
for (l = manager->gpus; l; l = l->next)
|
||||||
|
{
|
||||||
|
MetaGpu *gpu = l->data;
|
||||||
|
|
||||||
|
list = g_list_concat (list, g_list_copy (list_getter (gpu)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
||||||
GDBusMethodInvocation *invocation)
|
GDBusMethodInvocation *invocation)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_GET_CLASS (skeleton);
|
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_GET_CLASS (skeleton);
|
||||||
|
GList *combined_modes;
|
||||||
|
GList *combined_outputs;
|
||||||
|
GList *combined_crtcs;
|
||||||
GVariantBuilder crtc_builder, output_builder, mode_builder;
|
GVariantBuilder crtc_builder, output_builder, mode_builder;
|
||||||
|
GList *l;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
int max_screen_width;
|
int max_screen_width;
|
||||||
int max_screen_height;
|
int max_screen_height;
|
||||||
|
|
||||||
|
combined_modes = combine_gpu_lists (manager, meta_gpu_get_modes);
|
||||||
|
combined_outputs = combine_gpu_lists (manager, meta_gpu_get_outputs);
|
||||||
|
combined_crtcs = combine_gpu_lists (manager, meta_gpu_get_crtcs);
|
||||||
|
|
||||||
g_variant_builder_init (&crtc_builder, G_VARIANT_TYPE ("a(uxiiiiiuaua{sv})"));
|
g_variant_builder_init (&crtc_builder, G_VARIANT_TYPE ("a(uxiiiiiuaua{sv})"));
|
||||||
g_variant_builder_init (&output_builder, G_VARIANT_TYPE ("a(uxiausauaua{sv})"));
|
g_variant_builder_init (&output_builder, G_VARIANT_TYPE ("a(uxiausauaua{sv})"));
|
||||||
g_variant_builder_init (&mode_builder, G_VARIANT_TYPE ("a(uxuudu)"));
|
g_variant_builder_init (&mode_builder, G_VARIANT_TYPE ("a(uxuudu)"));
|
||||||
|
|
||||||
for (i = 0; i < manager->n_crtcs; i++)
|
for (l = combined_crtcs, i = 0; l; l = l->next, i++)
|
||||||
{
|
{
|
||||||
MetaCrtc *crtc = &manager->crtcs[i];
|
MetaCrtc *crtc = l->data;
|
||||||
GVariantBuilder transforms;
|
GVariantBuilder transforms;
|
||||||
|
int current_mode_index;
|
||||||
|
|
||||||
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
|
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
|
||||||
for (j = 0; j <= META_MONITOR_TRANSFORM_FLIPPED_270; j++)
|
for (j = 0; j <= META_MONITOR_TRANSFORM_FLIPPED_270; j++)
|
||||||
if (crtc->all_transforms & (1 << j))
|
if (crtc->all_transforms & (1 << j))
|
||||||
g_variant_builder_add (&transforms, "u", j);
|
g_variant_builder_add (&transforms, "u", j);
|
||||||
|
|
||||||
|
if (crtc->current_mode)
|
||||||
|
current_mode_index = g_list_index (combined_modes, crtc->current_mode);
|
||||||
|
else
|
||||||
|
current_mode_index = -1;
|
||||||
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
|
g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
(gint64)crtc->crtc_id,
|
(gint64)crtc->crtc_id,
|
||||||
@@ -990,33 +1026,48 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
(int)crtc->rect.y,
|
(int)crtc->rect.y,
|
||||||
(int)crtc->rect.width,
|
(int)crtc->rect.width,
|
||||||
(int)crtc->rect.height,
|
(int)crtc->rect.height,
|
||||||
(int)(crtc->current_mode ? crtc->current_mode - manager->modes : -1),
|
current_mode_index,
|
||||||
(guint32)crtc->transform,
|
(guint32)crtc->transform,
|
||||||
&transforms,
|
&transforms,
|
||||||
NULL /* properties */);
|
NULL /* properties */);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < manager->n_outputs; i++)
|
for (l = combined_outputs; l; l = l->next)
|
||||||
{
|
{
|
||||||
MetaOutput *output = &manager->outputs[i];
|
MetaOutput *output = l->data;
|
||||||
GVariantBuilder crtcs, modes, clones, properties;
|
GVariantBuilder crtcs, modes, clones, properties;
|
||||||
GBytes *edid;
|
GBytes *edid;
|
||||||
char *edid_file;
|
char *edid_file;
|
||||||
|
int crtc_index;
|
||||||
|
|
||||||
g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au"));
|
g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au"));
|
||||||
for (j = 0; j < output->n_possible_crtcs; j++)
|
for (j = 0; j < output->n_possible_crtcs; j++)
|
||||||
g_variant_builder_add (&crtcs, "u",
|
{
|
||||||
(unsigned)(output->possible_crtcs[j] - manager->crtcs));
|
MetaCrtc *possible_crtc = output->possible_crtcs[j];
|
||||||
|
unsigned possible_crtc_index;
|
||||||
|
|
||||||
|
possible_crtc_index = g_list_index (combined_crtcs, possible_crtc);
|
||||||
|
g_variant_builder_add (&crtcs, "u", possible_crtc_index);
|
||||||
|
}
|
||||||
|
|
||||||
g_variant_builder_init (&modes, G_VARIANT_TYPE ("au"));
|
g_variant_builder_init (&modes, G_VARIANT_TYPE ("au"));
|
||||||
for (j = 0; j < output->n_modes; j++)
|
for (j = 0; j < output->n_modes; j++)
|
||||||
g_variant_builder_add (&modes, "u",
|
{
|
||||||
(unsigned)(output->modes[j] - manager->modes));
|
unsigned mode_index;
|
||||||
|
|
||||||
|
mode_index = g_list_index (combined_modes, output->modes[j]);
|
||||||
|
g_variant_builder_add (&modes, "u", mode_index);
|
||||||
|
}
|
||||||
|
|
||||||
g_variant_builder_init (&clones, G_VARIANT_TYPE ("au"));
|
g_variant_builder_init (&clones, G_VARIANT_TYPE ("au"));
|
||||||
for (j = 0; j < output->n_possible_clones; j++)
|
for (j = 0; j < output->n_possible_clones; j++)
|
||||||
g_variant_builder_add (&clones, "u",
|
{
|
||||||
(unsigned)(output->possible_clones[j] - manager->outputs));
|
unsigned int possible_clone_index;
|
||||||
|
|
||||||
|
possible_clone_index = g_list_index (combined_outputs,
|
||||||
|
output->possible_clones[j]);
|
||||||
|
g_variant_builder_add (&clones, "u", possible_clone_index);
|
||||||
|
}
|
||||||
|
|
||||||
g_variant_builder_init (&properties, G_VARIANT_TYPE ("a{sv}"));
|
g_variant_builder_init (&properties, G_VARIANT_TYPE ("a{sv}"));
|
||||||
g_variant_builder_add (&properties, "{sv}", "vendor",
|
g_variant_builder_add (&properties, "{sv}", "vendor",
|
||||||
@@ -1080,10 +1131,12 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
output->tile_info.tile_h));
|
output->tile_info.tile_h));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
crtc_index = output->crtc ? g_list_index (combined_crtcs, output->crtc)
|
||||||
|
: -1;
|
||||||
g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
|
g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
(gint64)output->winsys_id,
|
(gint64)output->winsys_id,
|
||||||
(int)(output->crtc ? output->crtc - manager->crtcs : -1),
|
crtc_index,
|
||||||
&crtcs,
|
&crtcs,
|
||||||
output->name,
|
output->name,
|
||||||
&modes,
|
&modes,
|
||||||
@@ -1091,9 +1144,9 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
&properties);
|
&properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < manager->n_modes; i++)
|
for (l = combined_modes, i = 0; l; l = l->next, i++)
|
||||||
{
|
{
|
||||||
MetaCrtcMode *mode = &manager->modes[i];
|
MetaCrtcMode *mode = l->data;
|
||||||
|
|
||||||
g_variant_builder_add (&mode_builder, "(uxuudu)",
|
g_variant_builder_add (&mode_builder, "(uxuudu)",
|
||||||
i, /* ID */
|
i, /* ID */
|
||||||
@@ -1121,6 +1174,11 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
g_variant_builder_end (&mode_builder),
|
g_variant_builder_end (&mode_builder),
|
||||||
max_screen_width,
|
max_screen_width,
|
||||||
max_screen_height);
|
max_screen_height);
|
||||||
|
|
||||||
|
g_list_free (combined_modes);
|
||||||
|
g_list_free (combined_outputs);
|
||||||
|
g_list_free (combined_crtcs);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1212,12 +1270,14 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
|
|||||||
GDBusMethodInvocation *invocation)
|
GDBusMethodInvocation *invocation)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
|
MetaSettings *settings = meta_backend_get_settings (manager->backend);
|
||||||
GVariantBuilder monitors_builder;
|
GVariantBuilder monitors_builder;
|
||||||
GVariantBuilder logical_monitors_builder;
|
GVariantBuilder logical_monitors_builder;
|
||||||
GVariantBuilder properties_builder;
|
GVariantBuilder properties_builder;
|
||||||
GList *l;
|
GList *l;
|
||||||
int i;
|
int i;
|
||||||
MetaMonitorManagerCapability capabilities;
|
MetaMonitorManagerCapability capabilities;
|
||||||
|
int ui_scaling_factor;
|
||||||
int max_screen_width, max_screen_height;
|
int max_screen_width, max_screen_height;
|
||||||
|
|
||||||
g_variant_builder_init (&monitors_builder,
|
g_variant_builder_init (&monitors_builder,
|
||||||
@@ -1395,6 +1455,11 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
|
|||||||
g_variant_new_boolean (TRUE));
|
g_variant_new_boolean (TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ui_scaling_factor = meta_settings_get_ui_scaling_factor (settings);
|
||||||
|
g_variant_builder_add (&properties_builder, "{sv}",
|
||||||
|
"legacy-ui-scaling-factor",
|
||||||
|
g_variant_new_int32 (ui_scaling_factor));
|
||||||
|
|
||||||
if (meta_monitor_manager_get_max_screen_size (manager,
|
if (meta_monitor_manager_get_max_screen_size (manager,
|
||||||
&max_screen_width,
|
&max_screen_width,
|
||||||
&max_screen_height))
|
&max_screen_height))
|
||||||
@@ -1508,6 +1573,13 @@ meta_monitor_manager_is_config_applicable (MetaMonitorManager *manager,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (meta_monitor_is_laptop_panel (monitor) &&
|
||||||
|
meta_monitor_manager_is_lid_closed (manager))
|
||||||
|
{
|
||||||
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
|
"Refusing to activate a closed laptop panel");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1518,35 +1590,19 @@ static gboolean
|
|||||||
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
|
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
|
||||||
MetaMonitorsConfig *config)
|
MetaMonitorsConfig *config)
|
||||||
{
|
{
|
||||||
GList *l;
|
MetaMonitorsConfigKey *current_state_key;
|
||||||
unsigned int configured_monitor_count = 0;
|
gboolean is_config_complete;
|
||||||
unsigned int expected_monitor_count = 0;
|
|
||||||
|
|
||||||
for (l = config->logical_monitor_configs; l; l = l->next)
|
current_state_key =
|
||||||
{
|
meta_create_monitors_config_key_for_current_state (manager);
|
||||||
MetaLogicalMonitorConfig *logical_monitor_config = l->data;
|
if (!current_state_key)
|
||||||
GList *k;
|
return FALSE;
|
||||||
|
|
||||||
for (k = logical_monitor_config->monitor_configs; k; k = k->next)
|
is_config_complete = meta_monitors_config_key_equal (current_state_key,
|
||||||
configured_monitor_count++;
|
config->key);
|
||||||
}
|
meta_monitors_config_key_free (current_state_key);
|
||||||
|
|
||||||
for (l = manager->monitors; l; l = l->next)
|
if (!is_config_complete)
|
||||||
{
|
|
||||||
MetaMonitor *monitor = l->data;
|
|
||||||
|
|
||||||
if (meta_monitor_is_laptop_panel (monitor))
|
|
||||||
{
|
|
||||||
if (!meta_monitor_manager_is_lid_closed (manager))
|
|
||||||
expected_monitor_count++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
expected_monitor_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (configured_monitor_count != expected_monitor_count)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
return meta_monitor_manager_is_config_applicable (manager, config, NULL);
|
return meta_monitor_manager_is_config_applicable (manager, config, NULL);
|
||||||
@@ -1769,6 +1825,8 @@ create_logical_monitor_config_from_variant (MetaMonitorManager *manager
|
|||||||
monitor_config =
|
monitor_config =
|
||||||
create_monitor_config_from_variant (manager,
|
create_monitor_config_from_variant (manager,
|
||||||
monitor_config_variant, error);
|
monitor_config_variant, error);
|
||||||
|
g_variant_unref (monitor_config_variant);
|
||||||
|
|
||||||
if (!monitor_config)
|
if (!monitor_config)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@@ -1919,6 +1977,8 @@ meta_monitor_manager_handle_apply_monitors_config (MetaDBusDisplayConfig *skelet
|
|||||||
logical_monitor_config_variant,
|
logical_monitor_config_variant,
|
||||||
layout_mode,
|
layout_mode,
|
||||||
&error);
|
&error);
|
||||||
|
g_variant_unref (logical_monitor_config_variant);
|
||||||
|
|
||||||
if (!logical_monitor_config)
|
if (!logical_monitor_config)
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
@@ -2020,6 +2080,7 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton,
|
|||||||
gint value)
|
gint value)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
|
GList *combined_outputs;
|
||||||
MetaOutput *output;
|
MetaOutput *output;
|
||||||
|
|
||||||
if (serial != manager->serial)
|
if (serial != manager->serial)
|
||||||
@@ -2030,14 +2091,18 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (output_index >= manager->n_outputs)
|
combined_outputs = combine_gpu_lists (manager, meta_gpu_get_outputs);
|
||||||
|
|
||||||
|
if (output_index >= g_list_length (combined_outputs))
|
||||||
{
|
{
|
||||||
|
g_list_free (combined_outputs);
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
"Invalid output id");
|
"Invalid output id");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
output = &manager->outputs[output_index];
|
output = g_list_nth_data (combined_outputs, output_index);
|
||||||
|
g_list_free (combined_outputs);
|
||||||
|
|
||||||
if (value < 0 || value > 100)
|
if (value < 0 || value > 100)
|
||||||
{
|
{
|
||||||
@@ -2070,6 +2135,7 @@ meta_monitor_manager_handle_get_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
MetaMonitorManagerClass *klass;
|
MetaMonitorManagerClass *klass;
|
||||||
|
GList *combined_crtcs;
|
||||||
MetaCrtc *crtc;
|
MetaCrtc *crtc;
|
||||||
gsize size;
|
gsize size;
|
||||||
unsigned short *red;
|
unsigned short *red;
|
||||||
@@ -2086,14 +2152,18 @@ meta_monitor_manager_handle_get_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crtc_id >= manager->n_crtcs)
|
combined_crtcs = combine_gpu_lists (manager, meta_gpu_get_crtcs);
|
||||||
|
if (crtc_id >= g_list_length (combined_crtcs))
|
||||||
{
|
{
|
||||||
|
g_list_free (combined_crtcs);
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
"Invalid crtc id");
|
"Invalid crtc id");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
crtc = &manager->crtcs[crtc_id];
|
|
||||||
|
crtc = g_list_nth_data (combined_crtcs, crtc_id);
|
||||||
|
g_list_free (combined_crtcs);
|
||||||
|
|
||||||
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
klass = META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
if (klass->get_crtc_gamma)
|
if (klass->get_crtc_gamma)
|
||||||
@@ -2133,6 +2203,7 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (skeleton);
|
||||||
MetaMonitorManagerClass *klass;
|
MetaMonitorManagerClass *klass;
|
||||||
|
GList *combined_crtcs;
|
||||||
MetaCrtc *crtc;
|
MetaCrtc *crtc;
|
||||||
gsize size, dummy;
|
gsize size, dummy;
|
||||||
unsigned short *red;
|
unsigned short *red;
|
||||||
@@ -2148,14 +2219,19 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crtc_id >= manager->n_crtcs)
|
combined_crtcs = combine_gpu_lists (manager, meta_gpu_get_crtcs);
|
||||||
|
|
||||||
|
if (crtc_id >= g_list_length (combined_crtcs))
|
||||||
{
|
{
|
||||||
|
g_list_free (combined_crtcs);
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
G_DBUS_ERROR_INVALID_ARGS,
|
G_DBUS_ERROR_INVALID_ARGS,
|
||||||
"Invalid crtc id");
|
"Invalid crtc id");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
crtc = &manager->crtcs[crtc_id];
|
|
||||||
|
crtc = g_list_nth_data (combined_crtcs, crtc_id);
|
||||||
|
g_list_free (combined_crtcs);
|
||||||
|
|
||||||
red_bytes = g_variant_get_data_as_bytes (red_v);
|
red_bytes = g_variant_get_data_as_bytes (red_v);
|
||||||
green_bytes = g_variant_get_data_as_bytes (green_v);
|
green_bytes = g_variant_get_data_as_bytes (green_v);
|
||||||
@@ -2264,7 +2340,7 @@ MetaLogicalMonitor *
|
|||||||
meta_monitor_manager_get_logical_monitor_from_number (MetaMonitorManager *manager,
|
meta_monitor_manager_get_logical_monitor_from_number (MetaMonitorManager *manager,
|
||||||
int number)
|
int number)
|
||||||
{
|
{
|
||||||
g_assert ((unsigned int) number < g_list_length (manager->logical_monitors));
|
g_return_val_if_fail ((unsigned int) number < g_list_length (manager->logical_monitors), NULL);
|
||||||
|
|
||||||
return g_list_nth (manager->logical_monitors, number)->data;
|
return g_list_nth (manager->logical_monitors, number)->data;
|
||||||
}
|
}
|
||||||
@@ -2425,38 +2501,17 @@ meta_monitor_manager_get_monitors (MetaMonitorManager *manager)
|
|||||||
return manager->monitors;
|
return manager->monitors;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaOutput *
|
void
|
||||||
meta_monitor_manager_get_outputs (MetaMonitorManager *manager,
|
meta_monitor_manager_add_gpu (MetaMonitorManager *manager,
|
||||||
unsigned int *n_outputs)
|
MetaGpu *gpu)
|
||||||
{
|
{
|
||||||
*n_outputs = manager->n_outputs;
|
manager->gpus = g_list_append (manager->gpus, gpu);
|
||||||
return manager->outputs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
GList *
|
||||||
meta_monitor_manager_get_resources (MetaMonitorManager *manager,
|
meta_monitor_manager_get_gpus (MetaMonitorManager *manager)
|
||||||
MetaCrtcMode **modes,
|
|
||||||
unsigned int *n_modes,
|
|
||||||
MetaCrtc **crtcs,
|
|
||||||
unsigned int *n_crtcs,
|
|
||||||
MetaOutput **outputs,
|
|
||||||
unsigned int *n_outputs)
|
|
||||||
{
|
{
|
||||||
if (modes)
|
return manager->gpus;
|
||||||
{
|
|
||||||
*modes = manager->modes;
|
|
||||||
*n_modes = manager->n_modes;
|
|
||||||
}
|
|
||||||
if (crtcs)
|
|
||||||
{
|
|
||||||
*crtcs = manager->crtcs;
|
|
||||||
*n_crtcs = manager->n_crtcs;
|
|
||||||
}
|
|
||||||
if (outputs)
|
|
||||||
{
|
|
||||||
*outputs = manager->outputs;
|
|
||||||
*n_outputs = manager->n_outputs;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2471,7 +2526,7 @@ meta_monitor_manager_get_screen_size (MetaMonitorManager *manager,
|
|||||||
static void
|
static void
|
||||||
rebuild_monitors (MetaMonitorManager *manager)
|
rebuild_monitors (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
GList *l;
|
||||||
|
|
||||||
if (manager->monitors)
|
if (manager->monitors)
|
||||||
{
|
{
|
||||||
@@ -2479,28 +2534,34 @@ rebuild_monitors (MetaMonitorManager *manager)
|
|||||||
manager->monitors = NULL;
|
manager->monitors = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < manager->n_outputs; i++)
|
for (l = manager->gpus; l; l = l->next)
|
||||||
{
|
{
|
||||||
MetaOutput *output = &manager->outputs[i];
|
MetaGpu *gpu = l->data;
|
||||||
|
GList *k;
|
||||||
|
|
||||||
if (output->tile_info.group_id)
|
for (k = meta_gpu_get_outputs (gpu); k; k = k->next)
|
||||||
{
|
{
|
||||||
if (is_main_tiled_monitor_output (output))
|
MetaOutput *output = k->data;
|
||||||
|
|
||||||
|
if (output->tile_info.group_id)
|
||||||
{
|
{
|
||||||
MetaMonitorTiled *monitor_tiled;
|
if (is_main_tiled_monitor_output (output))
|
||||||
|
{
|
||||||
|
MetaMonitorTiled *monitor_tiled;
|
||||||
|
|
||||||
monitor_tiled = meta_monitor_tiled_new (manager, output);
|
monitor_tiled = meta_monitor_tiled_new (gpu, output);
|
||||||
manager->monitors = g_list_append (manager->monitors,
|
manager->monitors = g_list_append (manager->monitors,
|
||||||
monitor_tiled);
|
monitor_tiled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
MetaMonitorNormal *monitor_normal;
|
||||||
MetaMonitorNormal *monitor_normal;
|
|
||||||
|
|
||||||
monitor_normal = meta_monitor_normal_new (manager, output);
|
monitor_normal = meta_monitor_normal_new (gpu, output);
|
||||||
manager->monitors = g_list_append (manager->monitors,
|
manager->monitors = g_list_append (manager->monitors,
|
||||||
monitor_normal);
|
monitor_normal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2541,39 +2602,33 @@ meta_monitor_manager_is_transform_handled (MetaMonitorManager *manager,
|
|||||||
void
|
void
|
||||||
meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
|
meta_monitor_manager_read_current_state (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
MetaOutput *old_outputs;
|
GList *l;
|
||||||
MetaCrtc *old_crtcs;
|
|
||||||
MetaCrtcMode *old_modes;
|
|
||||||
unsigned int n_old_outputs, n_old_crtcs, n_old_modes;
|
|
||||||
|
|
||||||
/* Some implementations of read_current use the existing information
|
|
||||||
* we have available, so don't free the old configuration until after
|
|
||||||
* read_current finishes. */
|
|
||||||
old_outputs = manager->outputs;
|
|
||||||
n_old_outputs = manager->n_outputs;
|
|
||||||
old_crtcs = manager->crtcs;
|
|
||||||
n_old_crtcs = manager->n_crtcs;
|
|
||||||
old_modes = manager->modes;
|
|
||||||
n_old_modes = manager->n_modes;
|
|
||||||
|
|
||||||
manager->serial++;
|
manager->serial++;
|
||||||
META_MONITOR_MANAGER_GET_CLASS (manager)->read_current (manager);
|
|
||||||
|
for (l = manager->gpus; l; l = l->next)
|
||||||
|
{
|
||||||
|
MetaGpu *gpu = l->data;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
|
if (!meta_gpu_read_current (gpu, &error))
|
||||||
|
{
|
||||||
|
g_warning ("Failed to read current KMS state: %s", error->message);
|
||||||
|
g_clear_error (&error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rebuild_monitors (manager);
|
rebuild_monitors (manager);
|
||||||
|
|
||||||
meta_monitor_manager_free_output_array (old_outputs, n_old_outputs);
|
|
||||||
meta_monitor_manager_free_mode_array (old_modes, n_old_modes);
|
|
||||||
meta_monitor_manager_free_crtc_array (old_crtcs, n_old_crtcs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_notify_monitors_changed (MetaMonitorManager *manager)
|
meta_monitor_manager_notify_monitors_changed (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
MetaBackend *backend = meta_get_backend ();
|
|
||||||
|
|
||||||
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
||||||
|
|
||||||
meta_backend_monitors_changed (backend);
|
meta_backend_monitors_changed (manager->backend);
|
||||||
|
|
||||||
|
g_signal_emit (manager, signals[MONITORS_CHANGED_INTERNAL], 0);
|
||||||
g_signal_emit_by_name (manager, "monitors-changed");
|
g_signal_emit_by_name (manager, "monitors-changed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2801,6 +2856,7 @@ multiply_matrix (float a[6],
|
|||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
|
meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
|
||||||
|
MetaMonitor *monitor,
|
||||||
MetaLogicalMonitor *logical_monitor,
|
MetaLogicalMonitor *logical_monitor,
|
||||||
gfloat matrix[6])
|
gfloat matrix[6])
|
||||||
{
|
{
|
||||||
@@ -2810,46 +2866,14 @@ meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
|
|||||||
if (!calculate_viewport_matrix (manager, logical_monitor, viewport))
|
if (!calculate_viewport_matrix (manager, logical_monitor, viewport))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
/* Get transform corrected for LCD panel-orientation. */
|
||||||
transform = logical_monitor->transform;
|
transform = logical_monitor->transform;
|
||||||
|
transform = meta_monitor_logical_to_crtc_transform (monitor, transform);
|
||||||
multiply_matrix (viewport, transform_matrices[transform],
|
multiply_matrix (viewport, transform_matrices[transform],
|
||||||
matrix);
|
matrix);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* meta_monitor_manager_get_monitor_for_output:
|
|
||||||
* @manager: A #MetaMonitorManager
|
|
||||||
* @id: A valid #MetaOutput id
|
|
||||||
*
|
|
||||||
* Returns: The monitor index or -1 if @id isn't valid or the output
|
|
||||||
* isn't associated with a logical monitor.
|
|
||||||
*/
|
|
||||||
gint
|
|
||||||
meta_monitor_manager_get_monitor_for_output (MetaMonitorManager *manager,
|
|
||||||
guint id)
|
|
||||||
{
|
|
||||||
MetaOutput *output;
|
|
||||||
GList *l;
|
|
||||||
|
|
||||||
g_return_val_if_fail (META_IS_MONITOR_MANAGER (manager), -1);
|
|
||||||
g_return_val_if_fail (id < manager->n_outputs, -1);
|
|
||||||
|
|
||||||
output = &manager->outputs[id];
|
|
||||||
if (!output || !output->crtc)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
for (l = manager->logical_monitors; l; l = l->next)
|
|
||||||
{
|
|
||||||
MetaLogicalMonitor *logical_monitor = l->data;
|
|
||||||
|
|
||||||
if (meta_rectangle_contains_rect (&logical_monitor->rect,
|
|
||||||
&output->crtc->rect))
|
|
||||||
return logical_monitor->number;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_monitor_manager_get_monitor_for_connector:
|
* meta_monitor_manager_get_monitor_for_connector:
|
||||||
* @manager: A #MetaMonitorManager
|
* @manager: A #MetaMonitorManager
|
||||||
|
|||||||
@@ -24,18 +24,19 @@
|
|||||||
#include "backends/meta-monitor.h"
|
#include "backends/meta-monitor.h"
|
||||||
|
|
||||||
#include "backends/meta-backend-private.h"
|
#include "backends/meta-backend-private.h"
|
||||||
|
#include "backends/meta-crtc.h"
|
||||||
|
#include "backends/meta-gpu.h"
|
||||||
#include "backends/meta-monitor-manager-private.h"
|
#include "backends/meta-monitor-manager-private.h"
|
||||||
#include "backends/meta-settings-private.h"
|
#include "backends/meta-settings-private.h"
|
||||||
|
#include "backends/meta-output.h"
|
||||||
|
|
||||||
#define SCALE_FACTORS_PER_INTEGER 4
|
#define SCALE_FACTORS_PER_INTEGER 4
|
||||||
#define MINIMUM_SCALE_FACTOR 1.0f
|
#define MINIMUM_SCALE_FACTOR 1.0f
|
||||||
#define MAXIMUM_SCALE_FACTOR 4.0f
|
#define MAXIMUM_SCALE_FACTOR 4.0f
|
||||||
#define MINIMUM_LOGICAL_WIDTH 800
|
#define MINIMUM_LOGICAL_WIDTH 800
|
||||||
#define MINIMUM_LOGICAL_HEIGHT 600
|
#define MINIMUM_LOGICAL_HEIGHT 480
|
||||||
#define MAXIMUM_REFRESH_RATE_DIFF 0.001
|
#define MAXIMUM_REFRESH_RATE_DIFF 0.001
|
||||||
|
|
||||||
#define HANDLED_CRTC_MODE_FLAGS (META_CRTC_MODE_FLAG_INTERLACE)
|
|
||||||
|
|
||||||
typedef struct _MetaMonitorMode
|
typedef struct _MetaMonitorMode
|
||||||
{
|
{
|
||||||
char *id;
|
char *id;
|
||||||
@@ -52,7 +53,7 @@ typedef struct _MetaMonitorModeTiled
|
|||||||
|
|
||||||
typedef struct _MetaMonitorPrivate
|
typedef struct _MetaMonitorPrivate
|
||||||
{
|
{
|
||||||
MetaMonitorManager *monitor_manager;
|
MetaGpu *gpu;
|
||||||
|
|
||||||
GList *outputs;
|
GList *outputs;
|
||||||
GList *modes;
|
GList *modes;
|
||||||
@@ -177,6 +178,14 @@ meta_monitor_generate_spec (MetaMonitor *monitor)
|
|||||||
priv->spec = monitor_spec;
|
priv->spec = monitor_spec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetaGpu *
|
||||||
|
meta_monitor_get_gpu (MetaMonitor *monitor)
|
||||||
|
{
|
||||||
|
MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor);
|
||||||
|
|
||||||
|
return priv->gpu;
|
||||||
|
}
|
||||||
|
|
||||||
GList *
|
GList *
|
||||||
meta_monitor_get_outputs (MetaMonitor *monitor)
|
meta_monitor_get_outputs (MetaMonitor *monitor)
|
||||||
{
|
{
|
||||||
@@ -345,6 +354,37 @@ meta_monitor_get_connector_type (MetaMonitor *monitor)
|
|||||||
return output->connector_type;
|
return output->connector_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MetaMonitorTransform
|
||||||
|
meta_monitor_logical_to_crtc_transform (MetaMonitor *monitor,
|
||||||
|
MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
MetaOutput *output = meta_monitor_get_main_output (monitor);
|
||||||
|
MetaMonitorTransform new_transform;
|
||||||
|
|
||||||
|
new_transform = (transform + output->panel_orientation_transform) %
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED;
|
||||||
|
if (meta_monitor_transform_is_flipped (transform))
|
||||||
|
new_transform += META_MONITOR_TRANSFORM_FLIPPED;
|
||||||
|
|
||||||
|
return new_transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaMonitorTransform
|
||||||
|
meta_monitor_crtc_to_logical_transform (MetaMonitor *monitor,
|
||||||
|
MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
MetaOutput *output = meta_monitor_get_main_output (monitor);
|
||||||
|
MetaMonitorTransform new_transform;
|
||||||
|
|
||||||
|
new_transform = (transform + META_MONITOR_TRANSFORM_FLIPPED -
|
||||||
|
output->panel_orientation_transform) %
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED;
|
||||||
|
if (meta_monitor_transform_is_flipped (transform))
|
||||||
|
new_transform += META_MONITOR_TRANSFORM_FLIPPED;
|
||||||
|
|
||||||
|
return new_transform;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_finalize (GObject *object)
|
meta_monitor_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
@@ -394,20 +434,49 @@ generate_mode_id (MetaMonitorModeSpec *monitor_mode_spec)
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
meta_monitor_add_mode (MetaMonitor *monitor,
|
meta_monitor_add_mode (MetaMonitor *monitor,
|
||||||
MetaMonitorMode *monitor_mode)
|
MetaMonitorMode *monitor_mode,
|
||||||
|
gboolean replace)
|
||||||
{
|
{
|
||||||
MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor);
|
MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor);
|
||||||
|
MetaMonitorMode *existing_mode;
|
||||||
|
|
||||||
if (g_hash_table_lookup (priv->mode_ids,
|
existing_mode = g_hash_table_lookup (priv->mode_ids,
|
||||||
meta_monitor_mode_get_id (monitor_mode)))
|
meta_monitor_mode_get_id (monitor_mode));
|
||||||
|
if (existing_mode && !replace)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
if (existing_mode)
|
||||||
|
priv->modes = g_list_remove (priv->modes, existing_mode);
|
||||||
|
|
||||||
priv->modes = g_list_append (priv->modes, monitor_mode);
|
priv->modes = g_list_append (priv->modes, monitor_mode);
|
||||||
g_hash_table_insert (priv->mode_ids, monitor_mode->id, monitor_mode);
|
g_hash_table_replace (priv->mode_ids, monitor_mode->id, monitor_mode);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MetaMonitorModeSpec
|
||||||
|
meta_monitor_create_spec (MetaMonitor *monitor,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
MetaCrtcMode *crtc_mode)
|
||||||
|
{
|
||||||
|
MetaOutput *output = meta_monitor_get_main_output (monitor);
|
||||||
|
|
||||||
|
if (meta_monitor_transform_is_rotated (output->panel_orientation_transform))
|
||||||
|
{
|
||||||
|
int temp = width;
|
||||||
|
width = height;
|
||||||
|
height = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (MetaMonitorModeSpec) {
|
||||||
|
.width = width,
|
||||||
|
.height = height,
|
||||||
|
.refresh_rate = crtc_mode->refresh_rate,
|
||||||
|
.flags = crtc_mode->flags & HANDLED_CRTC_MODE_FLAGS
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_normal_generate_modes (MetaMonitorNormal *monitor_normal)
|
meta_monitor_normal_generate_modes (MetaMonitorNormal *monitor_normal)
|
||||||
{
|
{
|
||||||
@@ -415,21 +484,23 @@ meta_monitor_normal_generate_modes (MetaMonitorNormal *monitor_normal)
|
|||||||
MetaMonitorPrivate *monitor_priv =
|
MetaMonitorPrivate *monitor_priv =
|
||||||
meta_monitor_get_instance_private (monitor);
|
meta_monitor_get_instance_private (monitor);
|
||||||
MetaOutput *output;
|
MetaOutput *output;
|
||||||
|
MetaCrtcModeFlag preferred_mode_flags;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
output = meta_monitor_get_main_output (monitor);
|
output = meta_monitor_get_main_output (monitor);
|
||||||
|
preferred_mode_flags = output->preferred_mode->flags;
|
||||||
|
|
||||||
for (i = 0; i < output->n_modes; i++)
|
for (i = 0; i < output->n_modes; i++)
|
||||||
{
|
{
|
||||||
MetaCrtcMode *crtc_mode = output->modes[i];
|
MetaCrtcMode *crtc_mode = output->modes[i];
|
||||||
MetaMonitorMode *mode;
|
MetaMonitorMode *mode;
|
||||||
|
gboolean replace;
|
||||||
|
|
||||||
mode = g_new0 (MetaMonitorMode, 1);
|
mode = g_new0 (MetaMonitorMode, 1);
|
||||||
mode->spec = (MetaMonitorModeSpec) {
|
mode->spec = meta_monitor_create_spec (monitor,
|
||||||
.width = crtc_mode->width,
|
crtc_mode->width,
|
||||||
.height = crtc_mode->height,
|
crtc_mode->height,
|
||||||
.refresh_rate = crtc_mode->refresh_rate,
|
crtc_mode);
|
||||||
.flags = crtc_mode->flags & HANDLED_CRTC_MODE_FLAGS
|
|
||||||
},
|
|
||||||
mode->id = generate_mode_id (&mode->spec);
|
mode->id = generate_mode_id (&mode->spec);
|
||||||
mode->crtc_modes = g_new (MetaMonitorCrtcMode, 1);
|
mode->crtc_modes = g_new (MetaMonitorCrtcMode, 1);
|
||||||
mode->crtc_modes[0] = (MetaMonitorCrtcMode) {
|
mode->crtc_modes[0] = (MetaMonitorCrtcMode) {
|
||||||
@@ -437,19 +508,32 @@ meta_monitor_normal_generate_modes (MetaMonitorNormal *monitor_normal)
|
|||||||
.crtc_mode = crtc_mode
|
.crtc_mode = crtc_mode
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't distinguish between all available mode flags, just the ones
|
||||||
|
* that are configurable. We still need to pick some mode though, so
|
||||||
|
* prefer ones that has the same set of flags as the preferred mode;
|
||||||
|
* otherwise take the first one in the list. This guarantees that the
|
||||||
|
* preferred mode is always added.
|
||||||
|
*/
|
||||||
|
replace = crtc_mode->flags == preferred_mode_flags;
|
||||||
|
|
||||||
|
if (!meta_monitor_add_mode (monitor, mode, replace))
|
||||||
|
{
|
||||||
|
g_assert (crtc_mode != output->preferred_mode);
|
||||||
|
meta_monitor_mode_free (mode);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (crtc_mode == output->preferred_mode)
|
if (crtc_mode == output->preferred_mode)
|
||||||
monitor_priv->preferred_mode = mode;
|
monitor_priv->preferred_mode = mode;
|
||||||
if (output->crtc && crtc_mode == output->crtc->current_mode)
|
if (output->crtc && crtc_mode == output->crtc->current_mode)
|
||||||
monitor_priv->current_mode = mode;
|
monitor_priv->current_mode = mode;
|
||||||
|
|
||||||
if (!meta_monitor_add_mode (monitor, mode))
|
|
||||||
meta_monitor_mode_free (mode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaMonitorNormal *
|
MetaMonitorNormal *
|
||||||
meta_monitor_normal_new (MetaMonitorManager *monitor_manager,
|
meta_monitor_normal_new (MetaGpu *gpu,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
MetaMonitorNormal *monitor_normal;
|
MetaMonitorNormal *monitor_normal;
|
||||||
MetaMonitor *monitor;
|
MetaMonitor *monitor;
|
||||||
@@ -459,7 +543,7 @@ meta_monitor_normal_new (MetaMonitorManager *monitor_manager,
|
|||||||
monitor = META_MONITOR (monitor_normal);
|
monitor = META_MONITOR (monitor_normal);
|
||||||
monitor_priv = meta_monitor_get_instance_private (monitor);
|
monitor_priv = meta_monitor_get_instance_private (monitor);
|
||||||
|
|
||||||
monitor_priv->monitor_manager = monitor_manager;
|
monitor_priv->gpu = gpu;
|
||||||
|
|
||||||
monitor_priv->outputs = g_list_append (NULL, output);
|
monitor_priv->outputs = g_list_append (NULL, output);
|
||||||
monitor_priv->winsys_id = output->winsys_id;
|
monitor_priv->winsys_id = output->winsys_id;
|
||||||
@@ -555,16 +639,18 @@ meta_monitor_get_suggested_position (MetaMonitor *monitor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_tiled_monitor_outputs (MetaMonitorManager *monitor_manager,
|
add_tiled_monitor_outputs (MetaGpu *gpu,
|
||||||
MetaMonitorTiled *monitor_tiled)
|
MetaMonitorTiled *monitor_tiled)
|
||||||
{
|
{
|
||||||
MetaMonitorPrivate *monitor_priv =
|
MetaMonitorPrivate *monitor_priv =
|
||||||
meta_monitor_get_instance_private (META_MONITOR (monitor_tiled));
|
meta_monitor_get_instance_private (META_MONITOR (monitor_tiled));
|
||||||
unsigned int i;
|
GList *outputs;
|
||||||
|
GList *l;
|
||||||
|
|
||||||
for (i = 0; i < monitor_manager->n_outputs; i++)
|
outputs = meta_gpu_get_outputs (gpu);
|
||||||
|
for (l = outputs; l; l = l->next)
|
||||||
{
|
{
|
||||||
MetaOutput *output = &monitor_manager->outputs[i];
|
MetaOutput *output = l->data;
|
||||||
|
|
||||||
if (output->tile_info.group_id != monitor_tiled->tile_group_id)
|
if (output->tile_info.group_id != monitor_tiled->tile_group_id)
|
||||||
continue;
|
continue;
|
||||||
@@ -746,12 +832,8 @@ create_tiled_monitor_mode (MetaMonitorTiled *monitor_tiled,
|
|||||||
mode->is_tiled = TRUE;
|
mode->is_tiled = TRUE;
|
||||||
meta_monitor_tiled_calculate_tiled_size (monitor, &width, &height);
|
meta_monitor_tiled_calculate_tiled_size (monitor, &width, &height);
|
||||||
|
|
||||||
mode->parent.spec = (MetaMonitorModeSpec) {
|
mode->parent.spec =
|
||||||
.width = width,
|
meta_monitor_create_spec (monitor, width, height, reference_crtc_mode);
|
||||||
.height = height,
|
|
||||||
.refresh_rate = reference_crtc_mode->refresh_rate,
|
|
||||||
.flags = reference_crtc_mode->flags & HANDLED_CRTC_MODE_FLAGS
|
|
||||||
};
|
|
||||||
mode->parent.id = generate_mode_id (&mode->parent.spec);
|
mode->parent.id = generate_mode_id (&mode->parent.spec);
|
||||||
|
|
||||||
mode->parent.crtc_modes = g_new0 (MetaMonitorCrtcMode,
|
mode->parent.crtc_modes = g_new0 (MetaMonitorCrtcMode,
|
||||||
@@ -825,7 +907,7 @@ generate_tiled_monitor_modes (MetaMonitorTiled *monitor_tiled)
|
|||||||
|
|
||||||
tiled_modes = g_list_remove_link (tiled_modes, l);
|
tiled_modes = g_list_remove_link (tiled_modes, l);
|
||||||
|
|
||||||
if (!meta_monitor_add_mode (monitor, mode))
|
if (!meta_monitor_add_mode (monitor, mode, FALSE))
|
||||||
{
|
{
|
||||||
meta_monitor_mode_free (mode);
|
meta_monitor_mode_free (mode);
|
||||||
continue;
|
continue;
|
||||||
@@ -861,12 +943,10 @@ create_untiled_monitor_mode (MetaMonitorTiled *monitor_tiled,
|
|||||||
mode = g_new0 (MetaMonitorModeTiled, 1);
|
mode = g_new0 (MetaMonitorModeTiled, 1);
|
||||||
|
|
||||||
mode->is_tiled = FALSE;
|
mode->is_tiled = FALSE;
|
||||||
mode->parent.spec = (MetaMonitorModeSpec) {
|
mode->parent.spec = meta_monitor_create_spec (monitor,
|
||||||
.width = crtc_mode->width,
|
crtc_mode->width,
|
||||||
.height = crtc_mode->height,
|
crtc_mode->height,
|
||||||
.refresh_rate = crtc_mode->refresh_rate,
|
crtc_mode);
|
||||||
.flags = crtc_mode->flags & HANDLED_CRTC_MODE_FLAGS
|
|
||||||
};
|
|
||||||
mode->parent.id = generate_mode_id (&mode->parent.spec);
|
mode->parent.id = generate_mode_id (&mode->parent.spec);
|
||||||
mode->parent.crtc_modes = g_new0 (MetaMonitorCrtcMode,
|
mode->parent.crtc_modes = g_new0 (MetaMonitorCrtcMode,
|
||||||
g_list_length (monitor_priv->outputs));
|
g_list_length (monitor_priv->outputs));
|
||||||
@@ -967,7 +1047,7 @@ generate_untiled_monitor_modes (MetaMonitorTiled *monitor_tiled)
|
|||||||
if (!mode)
|
if (!mode)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!meta_monitor_add_mode (monitor, mode))
|
if (!meta_monitor_add_mode (monitor, mode, FALSE))
|
||||||
{
|
{
|
||||||
meta_monitor_mode_free (mode);
|
meta_monitor_mode_free (mode);
|
||||||
continue;
|
continue;
|
||||||
@@ -1080,9 +1160,10 @@ meta_monitor_tiled_generate_modes (MetaMonitorTiled *monitor_tiled)
|
|||||||
}
|
}
|
||||||
|
|
||||||
MetaMonitorTiled *
|
MetaMonitorTiled *
|
||||||
meta_monitor_tiled_new (MetaMonitorManager *monitor_manager,
|
meta_monitor_tiled_new (MetaGpu *gpu,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
|
MetaMonitorManager *monitor_manager;
|
||||||
MetaMonitorTiled *monitor_tiled;
|
MetaMonitorTiled *monitor_tiled;
|
||||||
MetaMonitor *monitor;
|
MetaMonitor *monitor;
|
||||||
MetaMonitorPrivate *monitor_priv;
|
MetaMonitorPrivate *monitor_priv;
|
||||||
@@ -1091,18 +1172,19 @@ meta_monitor_tiled_new (MetaMonitorManager *monitor_manager,
|
|||||||
monitor = META_MONITOR (monitor_tiled);
|
monitor = META_MONITOR (monitor_tiled);
|
||||||
monitor_priv = meta_monitor_get_instance_private (monitor);
|
monitor_priv = meta_monitor_get_instance_private (monitor);
|
||||||
|
|
||||||
monitor_priv->monitor_manager = monitor_manager;
|
monitor_priv->gpu = gpu;
|
||||||
|
|
||||||
monitor_tiled->tile_group_id = output->tile_info.group_id;
|
monitor_tiled->tile_group_id = output->tile_info.group_id;
|
||||||
monitor_priv->winsys_id = output->winsys_id;
|
monitor_priv->winsys_id = output->winsys_id;
|
||||||
|
|
||||||
monitor_tiled->origin_output = output;
|
monitor_tiled->origin_output = output;
|
||||||
add_tiled_monitor_outputs (monitor_manager, monitor_tiled);
|
add_tiled_monitor_outputs (gpu, monitor_tiled);
|
||||||
|
|
||||||
monitor_tiled->main_output = find_untiled_output (monitor_tiled);
|
monitor_tiled->main_output = find_untiled_output (monitor_tiled);
|
||||||
|
|
||||||
meta_monitor_generate_spec (monitor);
|
meta_monitor_generate_spec (monitor);
|
||||||
|
|
||||||
|
monitor_manager = meta_gpu_get_monitor_manager (gpu);
|
||||||
meta_monitor_manager_tiled_monitor_added (monitor_manager,
|
meta_monitor_manager_tiled_monitor_added (monitor_manager,
|
||||||
META_MONITOR (monitor_tiled));
|
META_MONITOR (monitor_tiled));
|
||||||
|
|
||||||
@@ -1120,8 +1202,8 @@ meta_monitor_tiled_get_main_output (MetaMonitor *monitor)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_derived_derive_layout (MetaMonitor *monitor,
|
meta_monitor_tiled_derive_layout (MetaMonitor *monitor,
|
||||||
MetaRectangle *layout)
|
MetaRectangle *layout)
|
||||||
{
|
{
|
||||||
MetaMonitorPrivate *monitor_priv =
|
MetaMonitorPrivate *monitor_priv =
|
||||||
meta_monitor_get_instance_private (monitor);
|
meta_monitor_get_instance_private (monitor);
|
||||||
@@ -1189,8 +1271,10 @@ meta_monitor_tiled_finalize (GObject *object)
|
|||||||
MetaMonitor *monitor = META_MONITOR (object);
|
MetaMonitor *monitor = META_MONITOR (object);
|
||||||
MetaMonitorPrivate *monitor_priv =
|
MetaMonitorPrivate *monitor_priv =
|
||||||
meta_monitor_get_instance_private (monitor);
|
meta_monitor_get_instance_private (monitor);
|
||||||
|
MetaMonitorManager *monitor_manager;
|
||||||
|
|
||||||
meta_monitor_manager_tiled_monitor_removed (monitor_priv->monitor_manager,
|
monitor_manager = meta_gpu_get_monitor_manager (monitor_priv->gpu);
|
||||||
|
meta_monitor_manager_tiled_monitor_removed (monitor_manager,
|
||||||
monitor);
|
monitor);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_monitor_tiled_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_monitor_tiled_parent_class)->finalize (object);
|
||||||
@@ -1210,7 +1294,7 @@ meta_monitor_tiled_class_init (MetaMonitorTiledClass *klass)
|
|||||||
object_class->finalize = meta_monitor_tiled_finalize;
|
object_class->finalize = meta_monitor_tiled_finalize;
|
||||||
|
|
||||||
monitor_class->get_main_output = meta_monitor_tiled_get_main_output;
|
monitor_class->get_main_output = meta_monitor_tiled_get_main_output;
|
||||||
monitor_class->derive_layout = meta_monitor_derived_derive_layout;
|
monitor_class->derive_layout = meta_monitor_tiled_derive_layout;
|
||||||
monitor_class->calculate_crtc_pos = meta_monitor_tiled_calculate_crtc_pos;
|
monitor_class->calculate_crtc_pos = meta_monitor_tiled_calculate_crtc_pos;
|
||||||
monitor_class->get_suggested_position = meta_monitor_tiled_get_suggested_position;
|
monitor_class->get_suggested_position = meta_monitor_tiled_get_suggested_position;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,9 @@
|
|||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
#include "backends/meta-crtc.h"
|
||||||
#include "backends/meta-monitor-manager-private.h"
|
#include "backends/meta-monitor-manager-private.h"
|
||||||
|
#include "backends/meta-output.h"
|
||||||
|
|
||||||
typedef struct _MetaMonitorSpec
|
typedef struct _MetaMonitorSpec
|
||||||
{
|
{
|
||||||
@@ -48,6 +50,8 @@ typedef struct _MetaMonitorCrtcMode
|
|||||||
MetaCrtcMode *crtc_mode;
|
MetaCrtcMode *crtc_mode;
|
||||||
} MetaMonitorCrtcMode;
|
} MetaMonitorCrtcMode;
|
||||||
|
|
||||||
|
#define HANDLED_CRTC_MODE_FLAGS (META_CRTC_MODE_FLAG_INTERLACE)
|
||||||
|
|
||||||
typedef gboolean (* MetaMonitorModeFunc) (MetaMonitor *monitor,
|
typedef gboolean (* MetaMonitorModeFunc) (MetaMonitor *monitor,
|
||||||
MetaMonitorMode *mode,
|
MetaMonitorMode *mode,
|
||||||
MetaMonitorCrtcMode *monitor_crtc_mode,
|
MetaMonitorCrtcMode *monitor_crtc_mode,
|
||||||
@@ -91,14 +95,16 @@ G_DECLARE_FINAL_TYPE (MetaMonitorTiled, meta_monitor_tiled,
|
|||||||
META, MONITOR_TILED,
|
META, MONITOR_TILED,
|
||||||
MetaMonitor)
|
MetaMonitor)
|
||||||
|
|
||||||
MetaMonitorTiled * meta_monitor_tiled_new (MetaMonitorManager *monitor_manager,
|
MetaMonitorTiled * meta_monitor_tiled_new (MetaGpu *gpu,
|
||||||
MetaOutput *main_output);
|
MetaOutput *output);
|
||||||
|
|
||||||
MetaMonitorNormal * meta_monitor_normal_new (MetaMonitorManager *monitor_manager,
|
MetaMonitorNormal * meta_monitor_normal_new (MetaGpu *gpu,
|
||||||
MetaOutput *output);
|
MetaOutput *output);
|
||||||
|
|
||||||
MetaMonitorSpec * meta_monitor_get_spec (MetaMonitor *monitor);
|
MetaMonitorSpec * meta_monitor_get_spec (MetaMonitor *monitor);
|
||||||
|
|
||||||
|
MetaGpu * meta_monitor_get_gpu (MetaMonitor *monitor);
|
||||||
|
|
||||||
gboolean meta_monitor_is_active (MetaMonitor *monitor);
|
gboolean meta_monitor_is_active (MetaMonitor *monitor);
|
||||||
|
|
||||||
MetaOutput * meta_monitor_get_main_output (MetaMonitor *monitor);
|
MetaOutput * meta_monitor_get_main_output (MetaMonitor *monitor);
|
||||||
@@ -139,6 +145,16 @@ const char * meta_monitor_get_serial (MetaMonitor *monitor);
|
|||||||
|
|
||||||
MetaConnectorType meta_monitor_get_connector_type (MetaMonitor *monitor);
|
MetaConnectorType meta_monitor_get_connector_type (MetaMonitor *monitor);
|
||||||
|
|
||||||
|
/* This function returns the transform corrected for the panel orientation */
|
||||||
|
MetaMonitorTransform meta_monitor_logical_to_crtc_transform (MetaMonitor *monitor,
|
||||||
|
MetaMonitorTransform transform);
|
||||||
|
/*
|
||||||
|
* This function converts a transform corrected for the panel orientation
|
||||||
|
* to its logical (user-visible) transform.
|
||||||
|
*/
|
||||||
|
MetaMonitorTransform meta_monitor_crtc_to_logical_transform (MetaMonitor *monitor,
|
||||||
|
MetaMonitorTransform transform);
|
||||||
|
|
||||||
uint32_t meta_monitor_tiled_get_tile_group_id (MetaMonitorTiled *monitor_tiled);
|
uint32_t meta_monitor_tiled_get_tile_group_id (MetaMonitorTiled *monitor_tiled);
|
||||||
|
|
||||||
gboolean meta_monitor_get_suggested_position (MetaMonitor *monitor,
|
gboolean meta_monitor_get_suggested_position (MetaMonitor *monitor,
|
||||||
|
|||||||
62
src/backends/meta-output.c
Normal file
62
src/backends/meta-output.c
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* 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-output.h"
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (MetaOutput, meta_output, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
MetaGpu *
|
||||||
|
meta_output_get_gpu (MetaOutput *output)
|
||||||
|
{
|
||||||
|
return output->gpu;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_output_finalize (GObject *object)
|
||||||
|
{
|
||||||
|
MetaOutput *output = META_OUTPUT (object);
|
||||||
|
|
||||||
|
g_free (output->name);
|
||||||
|
g_free (output->vendor);
|
||||||
|
g_free (output->product);
|
||||||
|
g_free (output->serial);
|
||||||
|
g_free (output->modes);
|
||||||
|
g_free (output->possible_crtcs);
|
||||||
|
g_free (output->possible_clones);
|
||||||
|
|
||||||
|
if (output->driver_notify)
|
||||||
|
output->driver_notify (output);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (meta_output_parent_class)->finalize (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_output_init (MetaOutput *output)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_output_class_init (MetaOutputClass *klass)
|
||||||
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
|
object_class->finalize = meta_output_finalize;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user