Compare commits
123 Commits
wip/primar
...
3.20.3
Author | SHA1 | Date | |
---|---|---|---|
83bddd75a6 | |||
1169ccc331 | |||
d934cdee4f | |||
9ec231f603 | |||
9b5daf9094 | |||
bd1297f35c | |||
15aa1a5140 | |||
b2bf30165f | |||
e75d9a5237 | |||
aa65fc8b85 | |||
a15f33ac9c | |||
0b4cd7ed92 | |||
69086f8daa | |||
ae8ce15587 | |||
16e2953c6f | |||
dc257ee1c1 | |||
4baf217d74 | |||
7631ba5208 | |||
b31eddd208 | |||
a6cc35e595 | |||
08ac192b9d | |||
ed5c3b39ee | |||
b6f11fa8b8 | |||
ab6c008e3e | |||
ff312b6958 | |||
e284370013 | |||
0fa9751b31 | |||
82a247ccf5 | |||
5d6af70bc9 | |||
5a58fc0621 | |||
8842bdfb11 | |||
bdc72dd9d7 | |||
588b8a163b | |||
8587f0e80d | |||
150732a894 | |||
75e6029206 | |||
e017148208 | |||
7173937a7d | |||
f44238a72f | |||
10a0114856 | |||
aa7bc501d5 | |||
623eb6eacc | |||
12a3125132 | |||
2ca3d30485 | |||
0559b8fe03 | |||
0e0915ed79 | |||
1d56aac156 | |||
f95f3b1ca5 | |||
3a4ae679ea | |||
190357c561 | |||
92c8a51ba6 | |||
8b1195be1a | |||
e427aa3606 | |||
7517c91e99 | |||
7a94fa3be7 | |||
f2ff0b6d42 | |||
4749bf0420 | |||
223bfb10a0 | |||
3d67bfda14 | |||
51e4491a9f | |||
82153ff23f | |||
9b39325244 | |||
868b3fd01e | |||
8b801aac77 | |||
c380f2e03f | |||
ca1b4382c0 | |||
f6ba3bdfc2 | |||
99bba9e56c | |||
4af908a970 | |||
417cb2b213 | |||
9f1d1151b7 | |||
fea1ddcd29 | |||
3b023ea994 | |||
f8c70491b9 | |||
9df99d8bac | |||
d4b0c21d06 | |||
517078d142 | |||
1c94d0e598 | |||
b04747b174 | |||
6396974eae | |||
20908b9c2c | |||
4abfb299e2 | |||
62ac9df43d | |||
0882bce989 | |||
2d65b485fd | |||
613cadd19b | |||
9987185e20 | |||
2ff61a7d1b | |||
ed686ab60b | |||
a94e640b3f | |||
da28d7a012 | |||
169f0e7324 | |||
e6eb5c3ebc | |||
96927b3415 | |||
ceae5dceea | |||
d694244f29 | |||
c52f716115 | |||
800c0c277e | |||
ae3fad7155 | |||
1e0abc5279 | |||
1a3653765c | |||
f0b8dadb7d | |||
d340c3a6dd | |||
43bd057754 | |||
66be0387ee | |||
837836a722 | |||
2c71a35b4c | |||
d3537c4dc6 | |||
7c114360d0 | |||
c6aad6e735 | |||
741dd674f6 | |||
821d737e2c | |||
35da6a9078 | |||
00139755ff | |||
95dd681d47 | |||
2e5c8b3f11 | |||
ad7e654a8b | |||
b01926dbfa | |||
5001aa76d7 | |||
f1730e488d | |||
c22bee19e1 | |||
7fe2873750 | |||
d6e32a6ac5 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -46,6 +46,7 @@ mutter
|
||||
mutter-restart-helper
|
||||
mutter-test-client
|
||||
mutter-test-runner
|
||||
mutter-test-unit-tests
|
||||
mutter-all.test
|
||||
org.gnome.mutter.gschema.valid
|
||||
org.gnome.mutter.gschema.xml
|
||||
@ -62,6 +63,8 @@ src/stamp-meta-enum-types.h
|
||||
src/meta-dbus-display-config.[ch]
|
||||
src/meta-dbus-idle-monitor.[ch]
|
||||
src/meta-dbus-login1.[ch]
|
||||
src/gtk-primary-selection-protocol.c
|
||||
src/gtk-primary-selection-server-protocol.h
|
||||
src/gtk-shell-protocol.c
|
||||
src/gtk-shell-server-protocol.h
|
||||
src/xdg-shell-unstable-v*-protocol.c
|
||||
|
100
NEWS
100
NEWS
@ -1,3 +1,103 @@
|
||||
3.20.3
|
||||
======
|
||||
* Fix grabbing random keys for disabled shortcuts [Rui; #766270]
|
||||
* Crash fixes [Marek, Rui; #751847, #767969]
|
||||
* Improve multi-monitor handling on wayland [Rui; #766528]
|
||||
* Don't create invalid UTF-8 window description strings [Rui; #765535]
|
||||
* Convert window titles and wm_class to UTF-8 [Rui; #752788]
|
||||
* Use kill() to force-quit unresponsive wayland clients [Olivier; #767464]
|
||||
* Fix window position when unmaximizing via DND on wayland [Olivier; #764180]
|
||||
* Avoid full window redraws when using extended frame sync [Florian; #767798]
|
||||
* Fix missing frame border around GTK+ dialogs [Florian; #745060]
|
||||
* Improve X11 <-> wayland copy and paste interaction [Carlos; #768007]
|
||||
|
||||
Contributors:
|
||||
Marek Chalupa, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
|
||||
|
||||
Translations:
|
||||
Kjartan Maraas [nb], Muhammet Kara [tr], Andika Triwidada [id]
|
||||
|
||||
3.20.2
|
||||
======
|
||||
* Notify clients of pending modifier state changes [Rui; #748526]
|
||||
* Add get_is_builtin_display_on() method [Florian; #765267]
|
||||
* Fix 2-finger titlebar taps on wayland [Carlos; #764519]
|
||||
* Misc. bug fixes [Florian, Victor, Jonas; #765058, #765252, #765062]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner,
|
||||
Victor Toso
|
||||
|
||||
Translations:
|
||||
GNOME Translation Robot [ja], Tiago Santos [pt]
|
||||
|
||||
3.20.1
|
||||
======
|
||||
* Constrain window move/resizes on wayland as on X11 [Rui; #748819]
|
||||
* Don't crash with invalid previous monitor configurations [Rui; #764286]
|
||||
* Misc. bug fixes and cleanups [Jonas, Cosimo; #762828, #764807]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Cosimo Cecchi, Rui Matos, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Inaki Larranaga Murgoitio [eu], Reinout van Schouwen [nl], Fabio Tomat [fur],
|
||||
Trần Ngọc Quân [vi]
|
||||
|
||||
3.20.0
|
||||
======
|
||||
* Fix crash when using visual bell [Jonas; #763858]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Milo Casagrande [it], Ask Hjorth Larsen [da]
|
||||
|
||||
3.19.92
|
||||
=======
|
||||
* Add system bell support on wayland [Jonas; #763284]
|
||||
* Add gtk_surface.present to gtk-shell [Jonas; #763295]
|
||||
* Handle DND drops on the root window [Carlos; #762104]
|
||||
* Misc. bug fixes [Jonas, Carlos, Rui; #762828, #760745, #763125, #762763,
|
||||
#762661, #762639, #763159]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner
|
||||
|
||||
Translations:
|
||||
Rūdolfs Mazurs [lv], Balázs Úr [hu], Claude Paroz [fr], Matej Urbančič [sl],
|
||||
Мирослав Николић [sr, sr@latin], Sebastian Rasmussen [sv], Changwoo Ryu [ko],
|
||||
Gil Forcada [ca], Tom Tryfonidis [el]
|
||||
|
||||
3.19.91
|
||||
=======
|
||||
* Add --nested CLI argument to fix nested wayland session [Jonas; #758658]
|
||||
* Fix stack - scene graph stacking synchronization issues [Jonas; #755605]
|
||||
* Rate-limit last-device changes to fix freezes [Carlos; #753527]
|
||||
* Implement primary selection protocol [Carlos; #762560]
|
||||
* Misc. bug fixes [Carlos, Jonas; #762878, #762716]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Carlos Garnacho, Tim Lunn
|
||||
|
||||
Translations:
|
||||
Piotr Drąg [pl], Artur de Aquino Morais [pt_BR], Marek Černocký [cs],
|
||||
Cédric Valmary [oc], Mario Blättermann [de], Dušan Kazik [sk],
|
||||
Fran Dieguez [gl], Aurimas Černius [lt], Daniel Mustieles [es],
|
||||
Stas Solovey [ru], Yosef Or Boczko [he]
|
||||
|
||||
3.19.90
|
||||
=======
|
||||
* Release buffer after processing commit [Ray; #761312, #761613]
|
||||
* Implement pointer motion, locks and confinement on wayland [Jonas; #744104]
|
||||
* Add basic startup notification support on wayland [Carlos; #762268]
|
||||
* Misc. bug fixes [Rui, Alberts, Florian; #760670, #761543, #752794, #761557]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos,
|
||||
Alberts Muktupāvels, Florian Müllner, Jasper St. Pierre, Ray Strode
|
||||
|
||||
3.19.4
|
||||
======
|
||||
* Fix updating stacking order when setting transient_for [Jonas; #755606]
|
||||
|
@ -1,8 +1,8 @@
|
||||
AC_PREREQ(2.62)
|
||||
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [19])
|
||||
m4_define([mutter_micro_version], [4])
|
||||
m4_define([mutter_minor_version], [20])
|
||||
m4_define([mutter_micro_version], [3])
|
||||
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
@ -64,7 +64,7 @@ MUTTER_PC_MODULES="
|
||||
pango >= 1.2.0
|
||||
cairo >= 1.10.0
|
||||
gsettings-desktop-schemas >= 3.19.3
|
||||
$CLUTTER_PACKAGE >= 1.25.1
|
||||
$CLUTTER_PACKAGE >= 1.25.6
|
||||
cogl-1.0 >= 1.17.1
|
||||
upower-glib >= 0.99.0
|
||||
gnome-desktop-3.0
|
||||
|
@ -29,6 +29,7 @@ eu
|
||||
fa
|
||||
fi
|
||||
fr
|
||||
fur
|
||||
ga
|
||||
gl
|
||||
gu
|
||||
|
58
po/ca.po
58
po/ca.po
@ -6,21 +6,23 @@
|
||||
# Jordi Mallach <jordi@sindominio.net>, 2003, 2004, 2005, 2006, 2007, 2008.
|
||||
# David Planella <david.planella@gmail.com>, 2008, 2009, 2011, 2012.
|
||||
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013, 2014.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013, 2014, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity 2.24\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-10 17:33-0400\n"
|
||||
"PO-Revision-Date: 2015-03-10 17:33-0400\n"
|
||||
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2016-03-13 01:36+0000\n"
|
||||
"PO-Revision-Date: 2016-03-13 14:45+0100\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -465,22 +467,22 @@ msgstr "Canvia al terminal virtual 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Canvia al terminal virtual 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla integrada"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Desconeguda"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantalla desconeguda"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -496,7 +498,7 @@ msgstr ""
|
||||
"Ja s'està executant un altre gestor de composició a la pantalla %i a la "
|
||||
"visualització «%s»."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:192
|
||||
msgid "Bell event"
|
||||
msgstr "Esdeveniment de campana"
|
||||
|
||||
@ -525,41 +527,51 @@ msgstr "_Espera"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Força'n la sortida"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr ""
|
||||
"S'ha produït un error en obrir la pantalla del sistema de finestres X «%s»\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Inhabilita la connexió al gestor de sessions"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Reemplaça el gestor de finestres en execució"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especifica l'ID de gestió de sessió"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Visualització X per usar"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicialitza la sessió des del fitxer desat"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fes que les crides a l'X siguin síncrones"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Funciona com a compositor de Wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
# Notes:
|
||||
# Afegeix una nota
|
||||
#
|
||||
# Camins:
|
||||
# ../src/core/main.c:223
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Funciona com a compositor imbricat"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Funciona com a servidor de pantalla completa, en comptes d'imbricat"
|
||||
|
||||
@ -587,12 +599,12 @@ msgstr "Escriu versió"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Connector del Mutter a utilitzar"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espai de treball %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -601,12 +613,12 @@ msgstr ""
|
||||
"La pantalla «%s» ja té un gestor de finestres; proveu l'opció --replace per "
|
||||
"reemplaçar el gestor de finestres actual."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "La pantalla %d en la visualització '%s' no és vàlida\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter es va compilar sense compatibilitat per al mode detallat\n"
|
||||
|
||||
|
74
po/cs.po
74
po/cs.po
@ -12,7 +12,7 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-24 23:25+0000\n"
|
||||
"POT-Creation-Date: 2016-02-27 13:36+0000\n"
|
||||
"PO-Revision-Date: 2014-09-22 15:01+0200\n"
|
||||
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
|
||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||
@ -238,8 +238,7 @@ msgstr "Přepnout okno na všechny/jednu pracovní plochu"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr ""
|
||||
"Když je okno zakryté vynést jej do popředí, jinak odsunout do pozadí"
|
||||
msgstr "Když je okno zakryté vynést jej do popředí, jinak odsunout do pozadí"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
@ -457,22 +456,22 @@ msgstr "Přepnout na VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Přepnout na VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Vestavěný displej"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámý"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Neznámý displej"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -515,40 +514,44 @@ msgstr "_Počkat"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Vynutit ukončení"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nelze otevřít displej X Window System „%s“\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Zakáže připojení ke správci sezení"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Nahradí běžícího správce oken"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Určení ID správy sezení"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Displej X, který použije"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Spustí sezení z uloženého souboru"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Provede volání X synchronně"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Spustit jako kompozitní program protokolu Wayland"
|
||||
msgstr "Spustit jako kompozitor protokolu Wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Spustit jako podkladový kompozitor"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Spustit jako plnohodnotný server displeje, nikoliv vnořeně"
|
||||
|
||||
@ -576,12 +579,12 @@ msgstr "Vypíše verzi"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Zásuvný modul Mutter, který se má použít"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Plocha %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -590,12 +593,12 @@ msgstr ""
|
||||
"Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
|
||||
"oken pomocí přepínače --replace."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
|
||||
|
||||
@ -1272,32 +1275,3 @@ msgstr "%s (na %s)"
|
||||
#~ msgid "Move to Another _Workspace"
|
||||
#~ msgstr "Přes_unout na jinou plochu"
|
||||
|
||||
#~ msgid "Shift"
|
||||
#~ msgstr "Shift"
|
||||
|
||||
#~ msgid "Ctrl"
|
||||
#~ msgstr "Ctrl"
|
||||
|
||||
#~ msgid "Alt"
|
||||
#~ msgstr "Alt"
|
||||
|
||||
#~ msgid "Meta"
|
||||
#~ msgstr "Meta"
|
||||
|
||||
#~ msgid "Super"
|
||||
#~ msgstr "Super"
|
||||
|
||||
#~ msgid "Hyper"
|
||||
#~ msgstr "Hyper"
|
||||
|
||||
#~ msgid "Mod2"
|
||||
#~ msgstr "Mod2"
|
||||
|
||||
#~ msgid "Mod3"
|
||||
#~ msgstr "Mod3"
|
||||
|
||||
#~ msgid "Mod4"
|
||||
#~ msgstr "Mod4"
|
||||
|
||||
#~ msgid "Mod5"
|
||||
#~ msgstr "Mod5"
|
||||
|
61
po/da.po
61
po/da.po
@ -1,5 +1,5 @@
|
||||
# Danish translation of Mutter.
|
||||
# Copyright (C) 2002-2009, 2012-2015.
|
||||
# Copyright (C) 2002-2009, 2012-2016.
|
||||
# This file is distributed under the same license as the metacity package.
|
||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002
|
||||
# Keld simonsen <keld@dkuug.dk>, 2002
|
||||
@ -8,7 +8,7 @@
|
||||
# Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006.
|
||||
# Kenneth Nielsen <k.nielsen81@gmail.com>, 2008.
|
||||
# Joe Hansen <joedalton2@yahoo.dk>, 2011.
|
||||
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15.
|
||||
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16.
|
||||
#
|
||||
# Konventioner:
|
||||
#
|
||||
@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-21 16:30+0100\n"
|
||||
"PO-Revision-Date: 2015-03-14 17:01+0100\n"
|
||||
"POT-Creation-Date: 2016-03-20 23:17+0100\n"
|
||||
"PO-Revision-Date: 2016-03-20 21:46+0100\n"
|
||||
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
|
||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||
"Language: da\n"
|
||||
@ -291,7 +291,7 @@ msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
|
||||
msgid "Attach modal dialogs"
|
||||
msgstr "Fastgør modaldialogvinduer"
|
||||
msgstr "Fastgør modaldialoger"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
|
||||
msgid ""
|
||||
@ -299,9 +299,8 @@ msgid ""
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
"Når sand, vil modaldialogvinduer hænge sammen med titellinjen af "
|
||||
"ophavsvinduet og flyttes sammen med dette, frem for at have uafhængige "
|
||||
"titellinjer."
|
||||
"Når sand, vil modaldialoger hænge sammen med titellinjen af ophavsvinduet og "
|
||||
"flyttes sammen med dette, frem for at have uafhængige titellinjer."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
@ -463,22 +462,22 @@ msgstr "Skift til VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Skift til VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Indbygget skærm"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Ukendt"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ukendt skærm"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -493,7 +492,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"En anden komposithåndtering kører allerede på skærm %i på terminal \"%s\"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:192
|
||||
msgid "Bell event"
|
||||
msgstr "Bip-hændelse"
|
||||
|
||||
@ -522,40 +521,44 @@ msgstr "_Vent"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tving til at afslutte"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Kunne ikke åbne X Window System-terminalen \"%s\"\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Deaktivér forbindelse til sessionshåndtering"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Erstat den kørende vindueshåndtering"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Angiv sessionhåndterings-id"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X-skærm som bruges"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initialisér session fra gemt fil"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Gør kald til X synkrone"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Kør som en wayland-kompositor"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Kør som en indlejret kompositor"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Kør som fuld displayserver, frem for indlejret"
|
||||
|
||||
@ -582,12 +585,12 @@ msgstr "Vis version"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Mutter-udvidelsesmodul der skal bruges"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbejdsområde %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -596,12 +599,12 @@ msgstr ""
|
||||
"Terminalen \"%s\" har allerede en vindueshåndtering; prøv tilvalget --"
|
||||
"replace for at erstatte den aktuelle vindueshåndtering."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skærm %d på terminal \"%s\" er ugyldig\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n"
|
||||
|
||||
@ -1336,9 +1339,6 @@ msgstr "%s (på %s)"
|
||||
#~ msgid "_Dialog"
|
||||
#~ msgstr "_Dialog"
|
||||
|
||||
#~ msgid "_Modal dialog"
|
||||
#~ msgstr "_Modaldialogvindue"
|
||||
|
||||
#~ msgid "_Utility"
|
||||
#~ msgstr "_Værktøj"
|
||||
|
||||
@ -1402,9 +1402,6 @@ msgstr "%s (på %s)"
|
||||
#~ msgid "Border"
|
||||
#~ msgstr "Ramme"
|
||||
|
||||
#~ msgid "Attached Modal Dialog"
|
||||
#~ msgstr "Fastgjort modaldialogvindue"
|
||||
|
||||
#~ msgid "Button layout test %d"
|
||||
#~ msgstr "Knaplayouttest %d"
|
||||
|
||||
|
48
po/de.po
48
po/de.po
@ -3,7 +3,7 @@
|
||||
# Matthias Warkus <mawarkus@gnome.org>, 2002.
|
||||
# Christian Neumair <chris@gnome-de.org>, 2002-2004.
|
||||
# Hendrik Richter <hendrikr@gnome.org>, 2005, 2006, 2007, 2008.
|
||||
# Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013.
|
||||
# Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2016.
|
||||
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2011, 2012.
|
||||
# Wolfgang Stöggl <c72578@yahoo.de> 2011.
|
||||
# Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012.
|
||||
@ -13,16 +13,16 @@ msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-06-20 08:08+0000\n"
|
||||
"PO-Revision-Date: 2015-06-18 20:59+0100\n"
|
||||
"Last-Translator: Bernd Homuth <dev@hmt.im>\n"
|
||||
"POT-Creation-Date: 2016-02-28 13:37+0000\n"
|
||||
"PO-Revision-Date: 2016-02-28 19:15+0100\n"
|
||||
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.8.1\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -463,22 +463,22 @@ msgstr "Zum virtuellen Terminal 11 wechseln"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Zum virtuellen Terminal 12 wechseln"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Eingebaute Anzeige"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Unbekannte Anzeige"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -523,40 +523,44 @@ msgstr "_Warten"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Beenden erzwingen"
|
||||
|
||||
#: ../src/core/display.c:563
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Verbindung zur Sitzungsverwaltung deaktivieren"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Den aktuellen Fensterverwalter ersetzen"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Kennung der Sitzungsverwaltung angeben"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Zu verwendende X-Anzeige"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Sitzung anhand gespeicherter Datei starten"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "X-Aufrufe abgleichen"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Als Wayland-Compositor ausführen"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Als eingebetteten Compositor ausführen"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Als vollwertigen Display-Server verwenden (nicht eingebettet)"
|
||||
|
||||
@ -586,12 +590,12 @@ msgstr "Version ausgeben"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Zu benutzendes Mutter-Plugin"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeitsfläche %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -600,12 +604,12 @@ msgstr ""
|
||||
"Bildschirm »%s« hat bereits einen Fensterverwalter. Versuchen Sie die Option "
|
||||
"»--replace«, um den aktuellen Fensterverwalter zu ersetzen."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter wurde ohne Unterstützung für den redseligen Modus kompiliert\n"
|
||||
|
||||
|
58
po/el.po
58
po/el.po
@ -20,16 +20,16 @@ msgstr ""
|
||||
"Project-Id-Version: metacity.gnome-2-26\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-21 11:31+0000\n"
|
||||
"PO-Revision-Date: 2015-02-21 15:43+0200\n"
|
||||
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
|
||||
"POT-Creation-Date: 2016-03-12 01:36+0000\n"
|
||||
"PO-Revision-Date: 2016-03-14 23:05+0200\n"
|
||||
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
||||
"Language-Team: Greek, Modern (1453-) <opensuse-translation-el@opensuse.org>\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
@ -453,46 +453,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Εναλλαγή στο VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Εναλλαγή στο VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Εναλλαγή στο VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Εναλλαγή στο VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Εναλλαγή στο VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Εναλλαγή στο VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Ενσωματωμένη οθόνη"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Άγνωστη"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Άγνωστη οθόνη"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -507,7 +502,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Εκτελείται ένας άλλος διαχειριστής παραθύρων στην οθόνη %i προβολή \"%s\"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:192
|
||||
msgid "Bell event"
|
||||
msgstr "Ηχητικό συμβάν κουδουνιού"
|
||||
|
||||
@ -537,40 +532,44 @@ msgid "_Force Quit"
|
||||
msgstr "_Εξαναγκασμός σε τερματισμό"
|
||||
|
||||
# gconf/gconf-internals.c:2416
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Αποτυχία ανοίγματος οθόνης του συστήματος παραθύρων Χ '%s'\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Απενεργοποίηση σύνδεσης στο διαχειριστή συνεδρίας"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Αντικατάσταση του τρέχοντος διαχειριστή παραθύρων"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Καθορισμός αναγνωριστικού διαχείρισης συνεδρίας"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Εμφάνιση Χ για χρήση"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Εκκίνηση συνεδρίας από savefile"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Να καταστούν σύγχρονες οι κλήσεις του X"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Εκτέλεση ως συνθετητής wayland"
|
||||
msgstr "Εκτέλεση ως wayland compositor"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Εκτέλεση ως ενσωματωμένος compositor"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Εκτέλεση ως διακομιστής πλήρους οθόνης, αντί ενσωματωμένης"
|
||||
|
||||
@ -598,16 +597,13 @@ msgstr "Εμφάνιση έκδοσης"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Πρόσθετα του Mutter για χρήση"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Χώρος εργασίας %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
@ -616,12 +612,12 @@ msgstr ""
|
||||
"χρησιμοποιήσετε την επιλογή --replace για να αντικαταστήσετε τον τρέχων "
|
||||
"διαχειριστή παραθύρων."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Η οθόνη %d στην προβολή '%s' δεν είναι έγκυρη\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
"Το Mutter έχει μεταγλωττιστεί χωρίς υποστήριξη για λειτουργία εμφάνισης "
|
||||
|
50
po/es.po
50
po/es.po
@ -7,15 +7,15 @@
|
||||
# Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002,2003.
|
||||
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006.
|
||||
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011.
|
||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015.
|
||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-23 11:10+0000\n"
|
||||
"PO-Revision-Date: 2015-02-23 19:07+0100\n"
|
||||
"POT-Creation-Date: 2016-02-28 13:37+0000\n"
|
||||
"PO-Revision-Date: 2016-02-29 16:02+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@ -445,46 +445,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Cambiar al VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Cambiar al VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Cambiar al VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Cambiar al VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Cambiar al VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Cambiar al VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla integrada"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantalla desconocida"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -529,40 +524,45 @@ msgstr "_Esperar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forzar la salida"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desactivar conexión al gestor de sesión"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Reemplazar el gestor de ventanas en ejecución"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar el ID se gestión de sesión"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Pantalla X que usar"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar sesión desde el archivo de salvaguarda"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Hacer que las llamadas a las X sean síncronas"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Ejecutar como compositor Wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Ejecutar como compositor anidado"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Ejecutar como servidor completo, en lugar de anidado"
|
||||
|
||||
@ -589,12 +589,12 @@ msgstr "Imprimir versión"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Complemento de mutter que usar"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Área de trabajo %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -603,12 +603,12 @@ msgstr ""
|
||||
"La pantalla «%s» ya tiene un gestor de ventanas; pruebe a usar la opción «--"
|
||||
"replace» para reemplazar el gestor de ventanas activo."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "La ventana %d en la pantalla «%s» no es válida\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter fue compilado sin soporte para modo prolijo\n"
|
||||
|
||||
|
63
po/eu.po
63
po/eu.po
@ -2,24 +2,23 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
|
||||
#
|
||||
#
|
||||
# Hizkuntza Politikarako Sailburuordetza <hizpol@ej-gv.es>, 2004.
|
||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
|
||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2012, 2013, 2014, 2015.
|
||||
#
|
||||
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2012, 2013, 2014, 2015, 2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-21 15:50+0100\n"
|
||||
"PO-Revision-Date: 2015-03-21 15:51+0100\n"
|
||||
"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@zundan.com>\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-03-23 17:05+0100\n"
|
||||
"PO-Revision-Date: 2016-03-23 17:06+0100\n"
|
||||
"Last-Translator: dooteo <dooteo@zundan.com>\n"
|
||||
"Language-Team: Basque <librezale@librezale.org>\n"
|
||||
"Language: eu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 1.4\n"
|
||||
"X-Generator: Lokalize 2.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
@ -455,22 +454,22 @@ msgstr "Aldatu 11. TBra"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Aldatu 12. TBra"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Bertako pantaila"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Ezezaguna"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantaila ezezaguna"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -486,7 +485,7 @@ msgstr ""
|
||||
"Dagoeneko beste konposatze-kudeatzailea ari da exekutatzen \"%2$s\" "
|
||||
"pantailako %1$i. monitorean \"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Soinuaren gertaera"
|
||||
|
||||
@ -515,40 +514,44 @@ msgstr "_Itxaron"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Behartu ixtera"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Huts egin du X Window sistemaren '%s' pantaila irekitzean\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desgaitu saio-kudeatzailearen konexioa"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Ordeztu exekutatzen dagoen leiho-kudeatzailea"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Zehaztu saio-kudeatzailearen IDa"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X pantaila erabiltzeko"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Hasieratu saioa babes-fitxategitik"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Egin X deiak sinkronoak izatea"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Exekutatu wayland konposatzaile gisa"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Exekutatu habiaratutako konposatzaile gisa"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Exekutatu pantaila-zerbitzari oso bezala, habiaratuta baino"
|
||||
|
||||
@ -575,12 +578,12 @@ msgstr "Erakutsi bertsioa"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Mutter-en osagaia erabiltzeko"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. laneko area"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -589,12 +592,12 @@ msgstr ""
|
||||
"'%s' pantailak badu leiho-kudeatzailea; erabili --replace aukera uneko leiho-"
|
||||
"kudeatzailea ordezteko."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "'%2$s' bistaratzeko %1$d pantaila ez da baliozkoa\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter modu xehatuaren euskarririk gabe konpilatu da\n"
|
||||
|
||||
@ -676,11 +679,11 @@ msgstr "%s (%s)"
|
||||
#~ "\" ez dator bat formatuarekin"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GTK color specification must have the state in brackets, e.g. gtk:fg"
|
||||
#~ "[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
#~ "GTK color specification must have the state in brackets, e.g. gtk:"
|
||||
#~ "fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
#~ msgstr ""
|
||||
#~ "GTK kolore-zehaztapenak egoera kortxete artean izan behar du, adib. gtk:fg"
|
||||
#~ "[NORMAL], NORMAL egoera izanik; \"%s\" ezin da analizatu"
|
||||
#~ "GTK kolore-zehaztapenak egoera kortxete artean izan behar du, adib. gtk:"
|
||||
#~ "fg[NORMAL], NORMAL egoera izanik; \"%s\" ezin da analizatu"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GTK color specification must have a close bracket after the state, e.g. "
|
||||
|
46
po/fr.po
46
po/fr.po
@ -1,5 +1,5 @@
|
||||
# French translation of mutter.
|
||||
# Copyright (C) 2002-2015 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2016 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the metacity package.
|
||||
#
|
||||
# Christophe Fergeau <teuf@users.sourceforge.net>, 2002.
|
||||
@ -11,7 +11,7 @@
|
||||
# Cyprien Le Pannérer <cyplp@free.fr>, 2006.
|
||||
# Robert-André Mauchin <zebob.m@gmail.com>, 2007.
|
||||
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
|
||||
# Claude Paroz <claude@2xlibre.net>, 2008-2015.
|
||||
# Claude Paroz <claude@2xlibre.net>, 2008-2016.
|
||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
||||
#
|
||||
msgid ""
|
||||
@ -19,8 +19,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-23 23:11+0000\n"
|
||||
"PO-Revision-Date: 2015-02-24 10:08+0100\n"
|
||||
"POT-Creation-Date: 2016-03-05 13:41+0000\n"
|
||||
"PO-Revision-Date: 2016-03-05 17:57+0100\n"
|
||||
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
|
||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
@ -468,22 +468,22 @@ msgstr "Passer à l'émulateur de terminal 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Passer à l'émulateur de terminal 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Affichage intégré"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Affichage inconnu"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -528,40 +528,44 @@ msgstr "_Attendre"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forcer à quitter"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Impossible d'ouvrir l'affichage « %s » du système X Window\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Désactiver la connexion au gestionnaire de sessions"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Indiquer l'ID de gestion de sessions"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Affichage X à utiliser"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initialiser la session depuis le fichier de sauvegarde"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Rendre synchrones les appels à X"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Lancer comme un compositeur wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Lancer comme un compositeur imbriqué"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué"
|
||||
|
||||
@ -589,12 +593,12 @@ msgstr "Afficher la version"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Greffon de Mutter à utiliser"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espace de travail %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -603,12 +607,12 @@ msgstr ""
|
||||
"L'affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d'utiliser "
|
||||
"l'option --replace pour remplacer le gestionnaire de fenêtres actuel."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "L'écran %d sur l'affichage « %s » n'est pas valide\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
|
||||
|
||||
|
583
po/fur.po
Normal file
583
po/fur.po
Normal file
@ -0,0 +1,583 @@
|
||||
# Friulian translation for mutter.
|
||||
# Copyright (C) 2016 mutter's COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
# Fabio Tomat <f.t.public@gmail.com>, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2016-03-25 01:58+0000\n"
|
||||
"PO-Revision-Date: 2016-03-25 17:54+0100\n"
|
||||
"Language-Team: Friulian <fur@li.org>\n"
|
||||
"Language: fur\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||
"X-Generator: Poedit 1.8.5\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Navigazion"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
msgstr "Sposte barcon tal spazi di lavôr 1"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:3
|
||||
msgid "Move window to workspace 2"
|
||||
msgstr "Sposte barcon tal spazi di lavôr 2"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:4
|
||||
msgid "Move window to workspace 3"
|
||||
msgstr "Sposte barcon tal spazi di lavôr 3"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:5
|
||||
msgid "Move window to workspace 4"
|
||||
msgstr "Sposte barcon tal spazi di lavôr 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:6
|
||||
msgid "Move window to last workspace"
|
||||
msgstr "Sposte barcon tal ultin spazi di lavôr"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:7
|
||||
msgid "Move window one workspace to the left"
|
||||
msgstr "Sposte barcon tal spazi di lavôr a çampe"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:8
|
||||
msgid "Move window one workspace to the right"
|
||||
msgstr "Sposte barcon tal spazi di lavôr a drete"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:9
|
||||
msgid "Move window one workspace up"
|
||||
msgstr "Sposte barcon tal spazi di lavôr parsore"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:10
|
||||
msgid "Move window one workspace down"
|
||||
msgstr "Sposte barcon tal spazi di lavôr sot"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:11
|
||||
msgid "Move window one monitor to the left"
|
||||
msgstr "Sposte barcon tal visôr a çampe"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:12
|
||||
msgid "Move window one monitor to the right"
|
||||
msgstr "Sposte barcon tal visôr a drete"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:13
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Sposte barcon tal visôr parsore"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:14
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Sposte barcon tal visôr sot"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:15
|
||||
msgid "Switch applications"
|
||||
msgstr "Passâ di une aplicazion in chê altre"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:16
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Passe ae aplicazion prime"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:17
|
||||
msgid "Switch windows"
|
||||
msgstr "Passâ di un barcon in chel altri"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:18
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Passe al barcon prime"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:19
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Passâ di un barcon in chel altri di une aplicazion"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:20
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Passe al barcon prime di une aplicazion"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:21
|
||||
msgid "Switch system controls"
|
||||
msgstr "Passâ di un control di sisteme in chel altri"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:22
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Passe al control di sisteme precedent"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:23
|
||||
msgid "Switch windows directly"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:24
|
||||
msgid "Switch directly to previous window"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:25
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:26
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:27
|
||||
msgid "Switch system controls directly"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:28
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:29
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Plate ducj i barcons normâi"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:30
|
||||
msgid "Switch to workspace 1"
|
||||
msgstr "Passe al spazi di lavôr 1"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:31
|
||||
msgid "Switch to workspace 2"
|
||||
msgstr "Passe al spazi di lavôr 2"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:32
|
||||
msgid "Switch to workspace 3"
|
||||
msgstr "Passe al spazi di lavôr 3"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:33
|
||||
msgid "Switch to workspace 4"
|
||||
msgstr "Passe al spazi di lavôr 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:34
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Passe al ultin spazi di lavôr"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:35
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Sposte il spazi di lavôr a çampe"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:36
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Sposte il spazi di lavôr a drete"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:37
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Sposte il spazi di lavôr parsore"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:38
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Sposte il spazi di lavôr sot"
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Sisteme"
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:2
|
||||
msgid "Show the run command prompt"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:3
|
||||
msgid "Show the activities overview"
|
||||
msgstr "Mostre la panoramiche ativitâts"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:1
|
||||
msgid "Windows"
|
||||
msgstr "Barcons"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:2
|
||||
msgid "Activate the window menu"
|
||||
msgstr "Ative il menù dal barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:3
|
||||
msgid "Toggle fullscreen mode"
|
||||
msgstr "Ative/Disative modalitât plen visôr"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:4
|
||||
msgid "Toggle maximization state"
|
||||
msgstr "Ative/Disative il stât slargjât"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:5
|
||||
msgid "Maximize window"
|
||||
msgstr "Slargje il barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:6
|
||||
msgid "Restore window"
|
||||
msgstr "Ripristine barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:7
|
||||
msgid "Toggle shaded state"
|
||||
msgstr "Ative/Disative stât inrodolât"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:8
|
||||
msgid "Close window"
|
||||
msgstr "Siere il barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:9
|
||||
msgid "Hide window"
|
||||
msgstr "Plate il barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:10
|
||||
msgid "Move window"
|
||||
msgstr "Sposte il barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:11
|
||||
msgid "Resize window"
|
||||
msgstr "Ridimensione barcon"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:12
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr "Ative/Disative barcon su ducj i spazis di lavôr o nome un"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:13
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr "Tire sù il barcon se al è cuviert, se no sbassilu"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:14
|
||||
msgid "Raise window above other windows"
|
||||
msgstr "Met il barcon parsore di chei altris"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:15
|
||||
msgid "Lower window below other windows"
|
||||
msgstr "Bute il barcon sot di chei altris"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:16
|
||||
msgid "Maximize window vertically"
|
||||
msgstr "Slargje il barcon par verticâl"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:17
|
||||
msgid "Maximize window horizontally"
|
||||
msgstr "Slargje il barcon par orizontâl"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:18
|
||||
msgid "View split on left"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:19
|
||||
msgid "View split on right"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/mutter.desktop.in.h:1
|
||||
msgid "Mutter"
|
||||
msgstr "Mutter"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
|
||||
msgid "Modifier to use for extended window management operations"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
|
||||
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.h:3
|
||||
msgid "Attach modal dialogs"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
|
||||
msgid ""
|
||||
"When true, instead of having independent titlebars, modal dialogs appear "
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
|
||||
msgid ""
|
||||
"If enabled, dropping windows on vertical screen edges maximizes them "
|
||||
"vertically and resizes them horizontally to cover half of the available "
|
||||
"area. Dropping windows on the top screen edge maximizes them completely."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
|
||||
msgid "Workspaces are managed dynamically"
|
||||
msgstr "I spazis di vore a son ministrât in maniere dinamiche"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
|
||||
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.h:9
|
||||
msgid "Workspaces only on primary"
|
||||
msgstr "Spazis di vore nome tal visôr primari"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
|
||||
msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
|
||||
msgid "No tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
|
||||
msgid ""
|
||||
"Determines whether the use of popup and highlight frame should be disabled "
|
||||
"for window cycling."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
|
||||
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.h:15
|
||||
msgid "Draggable border width"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
|
||||
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.h:17
|
||||
msgid "Auto maximize nearly monitor sized windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
|
||||
msgid "Place new windows in the center"
|
||||
msgstr "Place i gnûfs barcons tal mieç"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid ""
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
|
||||
msgid "Select window from tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
|
||||
msgid "Cancel tab popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "Passe al VT 1"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
|
||||
msgid "Switch to VT 2"
|
||||
msgstr "Passe al VT 2"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
|
||||
msgid "Switch to VT 3"
|
||||
msgstr "Passe al VT 3"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
|
||||
msgid "Switch to VT 4"
|
||||
msgstr "Passe al VT 4"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
|
||||
msgid "Switch to VT 5"
|
||||
msgstr "Passe al VT 5"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
|
||||
msgid "Switch to VT 6"
|
||||
msgstr "Passe al VT 6"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Passe al VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Passe al VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Passe al VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Passe al VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Passe al VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Passe al VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Display integrât"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "No cognossût"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Display no cognossût"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
|
||||
#. This probably means that a non-WM compositor like xcompmgr is running;
|
||||
#. * we have no way to get it to exit
|
||||
#: ../src/compositor/compositor.c:456
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr ""
|
||||
"Un altri compositing manager al è za in esecuzion sul schermi %i sul display "
|
||||
"\"%s\"."
|
||||
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Event cjampane"
|
||||
|
||||
#: ../src/core/delete.c:127
|
||||
#, c-format
|
||||
msgid "“%s” is not responding."
|
||||
msgstr "“%s” nol rispuint."
|
||||
|
||||
#: ../src/core/delete.c:129
|
||||
msgid "Application is not responding."
|
||||
msgstr "La aplicazion no rispuint."
|
||||
|
||||
#: ../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 "_Wait"
|
||||
msgstr "_Spiete"
|
||||
|
||||
#: ../src/core/delete.c:141
|
||||
msgid "_Force Quit"
|
||||
msgstr "Sfuarce _Jessude"
|
||||
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Impussibil vierzi il display '%s' di X Window System\n"
|
||||
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Rimplace il window manager in vore"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Display X di doprâ"
|
||||
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inizialize session da file salvât"
|
||||
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fâs lis clamadis X sincronis"
|
||||
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Eseguìs come compositor wayland"
|
||||
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Eseguìs come compositor nidiât"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Eseguìs come servidôr display complet, invezit che nidiât"
|
||||
|
||||
#: ../src/core/mutter.c:39
|
||||
#, c-format
|
||||
msgid ""
|
||||
"mutter %s\n"
|
||||
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
|
||||
"This is free software; see the source for copying conditions.\n"
|
||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"mutter %s\n"
|
||||
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e altris\n"
|
||||
"Chest al è software libar; viodi i sorzints pes condizions di copie.\n"
|
||||
"No je NISSUNE garanzie; nancje di COMERCIABILITÂT o IDONEITÂT A UNE "
|
||||
"FINALITÂT PARTICOLÂR.\n"
|
||||
|
||||
#: ../src/core/mutter.c:53
|
||||
msgid "Print version"
|
||||
msgstr "Stampe version"
|
||||
|
||||
#: ../src/core/mutter.c:59
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Plugin Mutter di doprâ"
|
||||
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Spazi di lavôr %d"
|
||||
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Il display \"%s\" al à za un window manager; prove dopre la opzion --replace "
|
||||
"par rimplaçâ chel atuâl."
|
||||
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Schermi %d su display '%s' no valit\n"
|
||||
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n"
|
||||
|
||||
#: ../src/x11/session.c:1815
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"Chescj barcons no supuartin la funzion "salve impostazions atuâi" "
|
||||
"e si scugnarà tornâ a inviâlis a man tal prossim acès."
|
||||
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (su %s)"
|
49
po/gl.po
49
po/gl.po
@ -9,22 +9,21 @@
|
||||
# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
|
||||
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
|
||||
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
|
||||
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015.
|
||||
#
|
||||
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gl\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-02-28 22:43+0100\n"
|
||||
"PO-Revision-Date: 2015-02-28 22:42+0100\n"
|
||||
"POT-Creation-Date: 2016-03-02 09:49+0100\n"
|
||||
"PO-Revision-Date: 2016-03-02 09:49+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <>\n"
|
||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||
"Language: gl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -461,22 +460,22 @@ msgstr "Cambiar á VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Cambiar á VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla embebida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Pantalla descoñecida"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -521,40 +520,44 @@ msgstr "Espe_rar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forzar a saída"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desactivar a conexión ao xestor de sesión"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Substituír o xestor de xanelas en execución"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar o ID de xestión de sesión"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Pantalla X que se vai usar"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar sesión desde o ficheiro de salvagarda"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Facer que as chamadas a X sexan sincrónicas"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Executar como compositor de wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Executar como compositor anidado"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Executar como un servidor de pantalla completo, fronte a un aniñado"
|
||||
|
||||
@ -581,12 +584,12 @@ msgstr "Imprimir versión"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Engadido de mutter que usar"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espazo de traballo %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -595,12 +598,12 @@ msgstr ""
|
||||
"A pantalla «%s» ten xa un xestor de xanelas, tente usar a opción --replace "
|
||||
"para substituír o xestor de xanelas."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "A pantalla %d na visualización «%s» non é válida\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n"
|
||||
|
||||
|
42
po/he.po
42
po/he.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity.HEAD.he\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-02-24 19:33+0200\n"
|
||||
"PO-Revision-Date: 2015-02-24 19:34+0200\n"
|
||||
"POT-Creation-Date: 2016-03-03 14:39+0200\n"
|
||||
"PO-Revision-Date: 2016-03-03 14:40+0200\n"
|
||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
||||
"Language-Team: עברית <>\n"
|
||||
"Language: he\n"
|
||||
@ -453,22 +453,22 @@ msgstr "מעבר ל־VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "מעבר ל־VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "תצוגה מובנית"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "לא ידוע"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "תצוגה לא ידועה"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -510,40 +510,44 @@ msgstr "ה_מתנה"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_אילוץ סגירה"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Failed to open X Window System display '%s'\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Disable connection to session manager"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Replace the running window manager"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Specify session management ID"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X Display to use"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initialize session from savefile"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Make X calls synchronous"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Run as a wayland compositor"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Run as a nested compositor"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Run as a full display server, rather than nested"
|
||||
|
||||
@ -569,12 +573,12 @@ msgstr "Print version"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "תוסף ה־mutter לשימוש"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "מרחב עבודה %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -583,12 +587,12 @@ msgstr ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Screen %d on display '%s' is invalid\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter הודר ללא תמיכה במצב פירוט\n"
|
||||
|
||||
|
52
po/hu.po
52
po/hu.po
@ -1,4 +1,4 @@
|
||||
# Hungarian translation of mutter
|
||||
# Hungarian translation of mutter.
|
||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
#
|
||||
@ -6,14 +6,14 @@
|
||||
# Gabor Sari <saga at externet dot hu>, 2003.
|
||||
# Laszlo Dvornik <dvornik at gnome dot hu>, 2004.
|
||||
# Gabor Kelemen <kelemeng at gnome dot hu>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
|
||||
# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015.
|
||||
# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015, 2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-22 11:10+0000\n"
|
||||
"PO-Revision-Date: 2015-02-22 20:52+0100\n"
|
||||
"POT-Creation-Date: 2016-03-04 13:42+0000\n"
|
||||
"PO-Revision-Date: 2016-03-04 20:43+0100\n"
|
||||
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||
"Language: hu\n"
|
||||
@ -436,46 +436,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Váltás a 7. VT-re"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Váltás a 8. VT-re"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Váltás a 9. VT-re"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Váltás a 10. VT-re"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Váltás a 11. VT-re"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Váltás a 12. VT-re"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Beépített kijelző"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ismeretlen kijelző"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -519,40 +514,45 @@ msgstr "Vá_rakozás"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Erőltetett kilépés"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nem sikerült megnyitni a(z) „%s” X Window rendszer képernyőt\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "A munkamenet-kezelőhöz való csatlakozás tiltása"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "A futó ablakkezelő helyettesítése"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "A munkamenet-kezelő azonosítójának megadása"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "A használandó X megjelenítő"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "A munkamenet előkészítése a mentési fájlból"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Az X-hívások szinkronná tétele"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Futtatás wayland betűszedőként"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Futtatás beágyazott betűszedőként"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr ""
|
||||
"Futtatás teljes megjelenítő kiszolgálóként az egymásba ágyazott helyett"
|
||||
@ -580,12 +580,12 @@ msgstr "Verzió kinyomtatása"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Használandó Mutter bővítmény"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. munkaterület"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -594,12 +594,12 @@ msgstr ""
|
||||
"A(z) „%s” kijelző már rendelkezik ablakkezelővel; próbálja a --replace "
|
||||
"kapcsolóval helyettesíteni a jelenlegi ablakkezelőt."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "A(z) %d képernyő a(z) „%s” megjelenítőn érvénytelen\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordították\n"
|
||||
|
||||
|
48
po/id.po
48
po/id.po
@ -8,18 +8,18 @@
|
||||
# Andika Triwidada <andika@gmail.com>, 2011-2015.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Project-Id-Version: mutter gnome-3-20\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-21 11:13+0000\n"
|
||||
"PO-Revision-Date: 2015-03-21 19:04+0700\n"
|
||||
"POT-Creation-Date: 2016-05-10 20:26+0000\n"
|
||||
"PO-Revision-Date: 2016-06-23 04:18+0700\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||
"Language: id\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.7.1\n"
|
||||
"X-Generator: Poedit 1.8.8\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
@ -454,22 +454,22 @@ msgstr "Pindah ke VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Pindah ke VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:515
|
||||
msgid "Built-in display"
|
||||
msgstr "Tampilan bawaan"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:538
|
||||
msgid "Unknown"
|
||||
msgstr "Tak Dikenal"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:540
|
||||
msgid "Unknown Display"
|
||||
msgstr "Tampilan Tak Dikenal"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:548
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -484,7 +484,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Manajer komposit lain telah berjalan pada layar %i pada tampilan \"%s\"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Bel peristiwa"
|
||||
|
||||
@ -512,40 +512,44 @@ msgstr "_Tunggu"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Matikan Paksa"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Gagal membuka tampilan X Window System '%s'\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Menonaktifkan koneksi ke manajer sesi"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Mengganti manajer jendela yang tengah berjalan"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Tentukan kode pengaturan sesi"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Tampilan X yang digunakna"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Aktifkan sesi dari berkas simpanan"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Buat panggilan X selaras"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Jalankan sebagai kompositor wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Jalankan sebagai kompositor bersarang"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Jalankan sebagai server tampilan penuh, ketimbang tampilan bersarang"
|
||||
|
||||
@ -573,12 +577,12 @@ msgstr "Cetak versi"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Pengaya Mutter yang dipakai"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Area kerja %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -587,12 +591,12 @@ msgstr ""
|
||||
"Tampilan \"%s\" sudah memiliki manajer jendela; cobalah gunakan pilihan --"
|
||||
"replace untuk mengganti manajer jendela saat ini."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Layar %d pada tampilan '%s' tidak benar\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Muter dikompilasi tanpa dukungan mode riuh\n"
|
||||
|
||||
|
48
po/it.po
48
po/it.po
@ -5,15 +5,15 @@
|
||||
# Pier Luigi Fiorini <plfiorini@libero.it>, 2002.
|
||||
# Lapo Calamandrei <lapo.calamandrei@virgilio.it>, 2003.
|
||||
# Luca Ferretti <lferrett@gnome.org>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
|
||||
# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015.
|
||||
# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-04 23:11+0000\n"
|
||||
"PO-Revision-Date: 2015-03-05 09:16+0100\n"
|
||||
"POT-Creation-Date: 2016-03-17 13:44+0000\n"
|
||||
"PO-Revision-Date: 2016-03-17 21:24+0100\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
@ -21,7 +21,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
"X-Generator: Poedit 1.7.4\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -466,22 +466,22 @@ msgstr "Passa al VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Passa al VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Display integrato"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Display sconosciuto"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -497,7 +497,7 @@ msgstr ""
|
||||
"Un altro compositing manager è già in esecuzione sullo schermo %i sul "
|
||||
"display «%s»."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:192
|
||||
msgid "Bell event"
|
||||
msgstr "Evento campanella"
|
||||
|
||||
@ -526,40 +526,44 @@ msgstr "_Attendi"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forza uscita"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Apertura del display «%s» di X Window System non riuscita\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Disabilita la connessione al gestore di sessione"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Sostituisce il window manager in esecuzione"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Specifica l'ID di gestione sessione"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Display X da usare"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inizializza la sessione da file salvato"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Rende le chiamate X sincrone"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Esegui come compositor Wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Esegui come compositor annidato"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Esegui come display server invece che annidato"
|
||||
|
||||
@ -586,12 +590,12 @@ msgstr "Stampa la versione"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Plugin Mutter da usare"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Spazio di lavoro %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -600,12 +604,12 @@ msgstr ""
|
||||
"Il display «%s» ha già un window manager; provare a utilizzare l'opzione --"
|
||||
"replace per sostituirlo."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Lo schermo %d nel display «%s» non è valido\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
"Mutter è stato compilato escludendo il supporto per la modalità prolissa\n"
|
||||
|
50
po/ko.po
50
po/ko.po
@ -6,7 +6,7 @@
|
||||
# Changwoo Ryu <cwryu@debian.org>, 2003, 2004, 2005, 2006, 2007, 2008, 2009.
|
||||
#
|
||||
# Updated in mutter:
|
||||
# Changwoo Ryu <cwryu@debian.org>, 2011-2015.
|
||||
# Changwoo Ryu <cwryu@debian.org>, 2011-2016.
|
||||
#
|
||||
#
|
||||
# 주의:
|
||||
@ -18,8 +18,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-07 11:12+0000\n"
|
||||
"PO-Revision-Date: 2015-03-08 03:44+0900\n"
|
||||
"POT-Creation-Date: 2016-03-12 13:40+0000\n"
|
||||
"PO-Revision-Date: 2016-03-13 04:38+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"Language: Korean\n"
|
||||
@ -453,22 +453,22 @@ msgstr "가상 터미널 11로 이동"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "가상 터미널 12로 이동"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "내장 디스플레이"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "알 수 없음"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "알 수 없는 디스플레이"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -484,7 +484,7 @@ msgstr ""
|
||||
"다른 창 구성 관리 프로그램이 이미 디스플레이 \"%2$s\" 화면 %1$i번에서 실행 중"
|
||||
"입니다."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:192
|
||||
msgid "Bell event"
|
||||
msgstr "삑소리 이벤트"
|
||||
|
||||
@ -511,40 +511,44 @@ msgstr "기다리기(_W)"
|
||||
msgid "_Force Quit"
|
||||
msgstr "강제로 끝내기(_F)"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "X 윈도 시스템 디스플레이 '%s'을(를) 여는데 실패하였습니다\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "세션 관리자와 연결 하지 않습니다"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "실행 중인 창 관리자를 바꿉니다"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "세션 관리 ID를 지정합니다"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "사용할 X 디스플레이"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "저장 파일에서 세션을 초기화 합니다"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "동기 X 호출을 합니다"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "웨일랜드 컴포지터로 실행합니다"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "내장 컴포지터로 실행합니다"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "전체 디스플레이 서버로 실행, 내장 프로그램 아님"
|
||||
|
||||
@ -571,24 +575,26 @@ msgstr "버전을 출력합니다"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "사용할 머터 플러그인"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "작업 공간 %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr "디스플레이 \"%s\"에 이미 창 관리자가 있습니다. 현재 창 관리자를 바꾸려면 --replace 옵션을 써보십시오."
|
||||
msgstr ""
|
||||
"디스플레이 \"%s\"에 이미 창 관리자가 있습니다. 현재 창 관리자를 바꾸려면 --"
|
||||
"replace 옵션을 써보십시오."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "디스플레이 '%2$s'의 화면 %1$d은(는) 잘못되었습니다\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "머터가 자세한 모드 지원 없이 컴파일 되었습니다\n"
|
||||
|
||||
|
36
po/lt.po
36
po/lt.po
@ -13,8 +13,8 @@ msgstr ""
|
||||
"Project-Id-Version: lt\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2016-01-05 13:43+0000\n"
|
||||
"PO-Revision-Date: 2016-01-05 18:04+0200\n"
|
||||
"POT-Creation-Date: 2016-02-26 09:54+0000\n"
|
||||
"PO-Revision-Date: 2016-02-25 15:18+0200\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
|
||||
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
|
||||
"Language: lt\n"
|
||||
@ -23,7 +23,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
|
||||
"%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Poedit 1.8.6\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -513,42 +513,46 @@ msgstr "_Laukti"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Priverstinai išeiti"
|
||||
|
||||
#: ../src/core/display.c:563
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nepavyko atverti X Window sistemos ekrano „%s“\n"
|
||||
|
||||
#: ../src/core/main.c:180
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Išjungti susijungimą su sesijos tvarkytuve"
|
||||
|
||||
#: ../src/core/main.c:186
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Pakeisti veikiančią langų tvarkytuvę"
|
||||
|
||||
#: ../src/core/main.c:192
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Nurodyti sesijos tvarkymo ID"
|
||||
|
||||
#: ../src/core/main.c:197
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Naudotinas X ekranas"
|
||||
|
||||
#: ../src/core/main.c:203
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializuoti sesiją iš išsaugojimo failo"
|
||||
|
||||
#: ../src/core/main.c:209
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Sinchronizuoti X iškvietimus"
|
||||
|
||||
#: ../src/core/main.c:216
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Vykdyti kaip wayland kompozitorių"
|
||||
|
||||
#: ../src/core/main.c:224
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Vykdyti kaip įdėtinį kompozitorių"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne vidinį"
|
||||
msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne įdėtinį"
|
||||
|
||||
#: ../src/core/mutter.c:39
|
||||
#, c-format
|
||||
@ -580,7 +584,7 @@ msgstr "Naudojamas Mutter įskiepis"
|
||||
msgid "Workspace %d"
|
||||
msgstr "Darbo sritis %d"
|
||||
|
||||
#: ../src/core/screen.c:526
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -589,12 +593,12 @@ msgstr ""
|
||||
"Vaizduoklis „%s“ jau turi langų tvarkytuvę; pabandykite pakeisti esamą langų "
|
||||
"tvarkytuvę, naudodami parametrą --replace."
|
||||
|
||||
#: ../src/core/screen.c:608
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Ekranas %d vaizduoklyje „%s“ netinkamas\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n"
|
||||
|
||||
|
64
po/lv.po
64
po/lv.po
@ -7,14 +7,14 @@
|
||||
# Raivis Dejus <orvils@gmail.com>, 2006, 2007, 2009.
|
||||
# Rudolfs <rudolfs.mazurs@gmail.com>, 2011.
|
||||
# Rūdofls Mazurs <rudolfs.mazurs@gmail.com>, 2011, 2012.
|
||||
# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013, 2014, 2015.
|
||||
# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013, 2014, 2015, 2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lv\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-09-20 11:14+0000\n"
|
||||
"PO-Revision-Date: 2015-09-20 18:51+0300\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
||||
"keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2016-03-03 13:37+0000\n"
|
||||
"PO-Revision-Date: 2016-03-03 22:19+0200\n"
|
||||
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
|
||||
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
|
||||
"Language: lv\n"
|
||||
@ -23,7 +23,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
|
||||
"2);\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
"X-Generator: Lokalize 2.0\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -437,46 +437,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Pārslēgties uz VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Pārslēgties uz VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Pārslēgties uz VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Pārslēgties uz VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Pārslēgties uz VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Pārslēgties uz VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:500
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Iebūvēts displejs"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:526
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Nezināms"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:528
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nezināms displejs"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:536
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -519,40 +514,45 @@ msgstr "_Gaidīt"
|
||||
msgid "_Force Quit"
|
||||
msgstr "Aizvērt _piespiedu kārtā"
|
||||
|
||||
#: ../src/core/display.c:563
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Neizdevās atvērt X logu sistēmas displeju “%s”\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Deaktivēt savienojumu ar sesiju pārvaldnieku"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Aizvietot darbojošos logu pārvaldnieku"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Norādiet sesiju pārvaldības ID"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Lietojamais X displejs"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializēt sesiju no saglabātās datnes"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Padarīt X izsaukumus sinhronus"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Palaist kā wayland kompozitoru"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Palaist kā ligzdotu kompozitoru"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Palaist kā pilnu attēlošanas serveri, nevis iegultu"
|
||||
|
||||
@ -579,29 +579,26 @@ msgstr "Parādīt versiju"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Izmantojamais mutter spraudnis"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Darbvieta %d"
|
||||
|
||||
#: ../src/core/screen.c:526
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Displejam “%s” jau ir logu pārvaldnieks; mēģiniet lietot --replace "
|
||||
"iespēju, lai aizvietotu pašreizējo logu pārvaldnieku."
|
||||
"Displejam “%s” jau ir logu pārvaldnieks; mēģiniet lietot --replace iespēju, "
|
||||
"lai aizvietotu pašreizējo logu pārvaldnieku."
|
||||
|
||||
#: ../src/core/screen.c:608
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Ekrāna %d displejs “%s“ nav derīgs\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter tika kompilēts bez detalizētas izvades režīma atbalsta\n"
|
||||
|
||||
@ -617,3 +614,4 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (uz %s)"
|
||||
|
||||
|
432
po/nb.po
432
po/nb.po
@ -1,13 +1,13 @@
|
||||
# Norwegian bokmål translation of mutter.
|
||||
# Copyright © 2002-2004 Free Software Foundation, Inc.
|
||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2015.
|
||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter 3.15.x\n"
|
||||
"Project-Id-Version: mutter 3.20.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-03-19 21:23+0100\n"
|
||||
"PO-Revision-Date: 2015-03-19 21:24+0100\n"
|
||||
"POT-Creation-Date: 2016-05-23 18:59+0200\n"
|
||||
"PO-Revision-Date: 2016-05-23 19:00+0200\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
|
||||
"Language: \n"
|
||||
@ -448,22 +448,22 @@ msgstr "Bytt til VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Bytt til VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:515
|
||||
msgid "Built-in display"
|
||||
msgstr "Innebygget skjerm"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:538
|
||||
msgid "Unknown"
|
||||
msgstr "Ukjent"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:540
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ukjent skjerm"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:548
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -477,7 +477,7 @@ msgid ""
|
||||
"\"."
|
||||
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Klokkehendelse"
|
||||
|
||||
@ -506,40 +506,44 @@ msgstr "_Vent"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvungen nedstenging"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Deaktiver tilkobling til sesjonshåndtereren"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Erstatt kjørende vindushåndterer"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Oppgi sesjonshåndterings-ID"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X-skjerm som skal brukes"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initier sesjonen fra en lagret fil"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Gjør X-kall synkrone"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Kjør som en wayland-kompositør"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Kjør som en nøstet kompositør"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Kjør som en full skjermtjener, heller enn nøstet"
|
||||
|
||||
@ -565,24 +569,26 @@ msgstr "Skriv versjonsnummer"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Mutter-tillegg som skal brukes"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbeidsområde %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr "Skjerm «%s» har allerede en vindushåndterer; prøv å bruke flagget --replace for å erstatte aktiv vindushåndterer."
|
||||
msgstr ""
|
||||
"Skjerm «%s» har allerede en vindushåndterer; prøv å bruke flagget --replace "
|
||||
"for å erstatte aktiv vindushåndterer."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skjerm %d på display «%s» er ugyldig\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter er kompilert uten støtte for «verbose» modus\n"
|
||||
|
||||
@ -598,383 +604,3 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (på %s)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit "
|
||||
#~ "the format"
|
||||
#~ msgstr ""
|
||||
#~ "Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
|
||||
#~ "formatet"
|
||||
|
||||
#~ msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
#~ msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
|
||||
|
||||
#~ msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
#~ msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the "
|
||||
#~ "format"
|
||||
#~ msgstr ""
|
||||
#~ "Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
|
||||
|
||||
#~ msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
#~ msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
|
||||
|
||||
#~ msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
#~ msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
|
||||
|
||||
#~ msgid "Could not parse color \"%s\""
|
||||
#~ msgstr "Kunne ikke lese farge «%s»"
|
||||
|
||||
#~ msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
#~ msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression contains floating point number '%s' which could not "
|
||||
#~ "be parsed"
|
||||
#~ msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
#~ msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression contained unknown operator at the start of this "
|
||||
#~ "text: \"%s\""
|
||||
#~ msgstr ""
|
||||
#~ "Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
|
||||
#~ "teksten: «%s»"
|
||||
|
||||
#~ msgid "Coordinate expression was empty or not understood"
|
||||
#~ msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
|
||||
|
||||
#~ msgid "Coordinate expression results in division by zero"
|
||||
#~ msgstr "Koordinatuttrykket resulterer i divisjon med null"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression tries to use mod operator on a floating-point number"
|
||||
#~ msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
#~ msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
|
||||
|
||||
#~ msgid "Coordinate expression had an operand where an operator was expected"
|
||||
#~ msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
|
||||
|
||||
#~ msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
#~ msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression has operator \"%c\" following operator \"%c\" with "
|
||||
#~ "no operand in between"
|
||||
#~ msgstr ""
|
||||
#~ "Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
|
||||
#~ "operand mellom dem."
|
||||
|
||||
#~ msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
#~ msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
|
||||
|
||||
#~ msgid "Coordinate expression parser overflowed its buffer."
|
||||
#~ msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
#~ msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
#~ msgstr ""
|
||||
#~ "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
|
||||
|
||||
#~ msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
#~ msgstr ""
|
||||
#~ "Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
|
||||
|
||||
#~ msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
#~ msgstr "Tema inneholdt et uttrykk som resulterte i en feil: %s\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
#~ "specified for this frame style"
|
||||
#~ msgstr ""
|
||||
#~ "<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
|
||||
#~ "spesifiseres for denne rammestilen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/"
|
||||
#~ ">"
|
||||
#~ msgstr ""
|
||||
#~ "Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
|
||||
|
||||
#~ msgid "Failed to load theme \"%s\": %s\n"
|
||||
#~ msgstr "Klarte ikke å laste tema «%s»: %s\n"
|
||||
|
||||
#~ msgid "No <%s> set for theme \"%s\""
|
||||
#~ msgstr "<%s> er ikke satt for tema «%s»"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
#~ "type=\"%s\" style_set=\"whatever\"/> element"
|
||||
#~ msgstr ""
|
||||
#~ "Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
|
||||
#~ "type=«%s» style_set=«ett-eller-annet»/>-element"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
#~ msgstr ""
|
||||
#~ "Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
|
||||
|
||||
#~ msgid "Constant \"%s\" has already been defined"
|
||||
#~ msgstr "Konstant «%s» er allerede definert"
|
||||
|
||||
#~ msgid "No \"%s\" attribute on element <%s>"
|
||||
#~ msgstr "Ingen «%s»-attributt på element <%s>"
|
||||
|
||||
#~ msgid "Line %d character %d: %s"
|
||||
#~ msgstr "Linje %d tegn %d: %s"
|
||||
|
||||
#~ msgid "Attribute \"%s\" repeated twice on the same <%s> element"
|
||||
#~ msgstr "Attributt «%s» gjentatt to ganger på samme <%s>-element"
|
||||
|
||||
#~ msgid "Attribute \"%s\" is invalid on <%s> element in this context"
|
||||
#~ msgstr "Attributt «%s» er ugyldig på <%s>-element i denne konteksten"
|
||||
|
||||
#~ msgid "Could not parse \"%s\" as an integer"
|
||||
#~ msgstr "Kunne ikke lese «%s» som et heltall"
|
||||
|
||||
#~ msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
#~ msgstr "Forsto ikke etterslepende tegn «%s» i streng «%s»"
|
||||
|
||||
#~ msgid "Integer %ld must be positive"
|
||||
#~ msgstr "Heltall %ld må være positivt"
|
||||
|
||||
#~ msgid "Integer %ld is too large, current max is %d"
|
||||
#~ msgstr "Heltall %ld er for stort, maksimalverdien er %d"
|
||||
|
||||
#~ msgid "Could not parse \"%s\" as a floating point number"
|
||||
#~ msgstr "Kunne ikke lese «%s» som et flyttall"
|
||||
|
||||
#~ msgid "Boolean values must be \"true\" or \"false\" not \"%s\""
|
||||
#~ msgstr "Bolske verdier må være «sann» eller «usann» ikke «%s»"
|
||||
|
||||
#~ msgid "Angle must be between 0.0 and 360.0, was %g\n"
|
||||
#~ msgstr "Vinkelen må være mellom 0.0 og 360.0, var %g\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Alpha must be between 0.0 (invisible) and 1.0 (fully opaque), was %g\n"
|
||||
#~ msgstr ""
|
||||
#~ "Alpha må være mellom 0.0 (usynlig) og 1.0 (helt ugjennomsiktig), var %g\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Invalid title scale \"%s\" (must be one of xx-small,x-small,small,medium,"
|
||||
#~ "large,x-large,xx-large)\n"
|
||||
#~ msgstr ""
|
||||
#~ "Ugyldig skalering av tittel «%s» (må være en av xx-small,x-small,small,"
|
||||
#~ "medium,large,x-large,xx-large)\n"
|
||||
|
||||
#~ msgid "<%s> name \"%s\" used a second time"
|
||||
#~ msgstr "<%s> navn «%s» brukt på nytt"
|
||||
|
||||
#~ msgid "<%s> parent \"%s\" has not been defined"
|
||||
#~ msgstr "<%s> opphav «%s» er ikke definert"
|
||||
|
||||
#~ msgid "<%s> geometry \"%s\" has not been defined"
|
||||
#~ msgstr "<%s> geometri «%s» er ikke definert"
|
||||
|
||||
#~ msgid "<%s> must specify either a geometry or a parent that has a geometry"
|
||||
#~ msgstr ""
|
||||
#~ "<%s> må spesifisere enten en geometri eller et opphav som har geometri"
|
||||
|
||||
#~ msgid "You must specify a background for an alpha value to be meaningful"
|
||||
#~ msgstr "Du må oppgi en bakgrunn for at en alpha-verdi skal ha mening"
|
||||
|
||||
#~ msgid "Unknown type \"%s\" on <%s> element"
|
||||
#~ msgstr "Ukjent type «%s» på <%s>-element"
|
||||
|
||||
#~ msgid "Unknown style_set \"%s\" on <%s> element"
|
||||
#~ msgstr "Ukjent style_set «%s» på <%s>-element"
|
||||
|
||||
#~ msgid "Window type \"%s\" has already been assigned a style set"
|
||||
#~ msgstr "Vindutype «%s» er allerede tildelt et stilsett"
|
||||
|
||||
#~ msgid "Element <%s> is not allowed below <%s>"
|
||||
#~ msgstr "Element <%s> er ikke tillatt under <%s>"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio"
|
||||
#~ "\" for buttons"
|
||||
#~ msgstr ""
|
||||
#~ "Kan ikke spesifisere både «button_width»/«button_height» og "
|
||||
#~ "«aspect_ratio» for knapper"
|
||||
|
||||
#~ msgid "Distance \"%s\" is unknown"
|
||||
#~ msgstr "Avstand «%s» er ukjent"
|
||||
|
||||
#~ msgid "Aspect ratio \"%s\" is unknown"
|
||||
#~ msgstr "Aspektrate «%s» er ukjent"
|
||||
|
||||
#~ msgid "Border \"%s\" is unknown"
|
||||
#~ msgstr "Grense «%s» er ukjent"
|
||||
|
||||
#~ msgid "No \"start_angle\" or \"from\" attribute on element <%s>"
|
||||
#~ msgstr "Ingen «start_angle» eller «from»-attributt på element <%s>"
|
||||
|
||||
#~ msgid "No \"extent_angle\" or \"to\" attribute on element <%s>"
|
||||
#~ msgstr "Ingen «extent_angle» eller «to»-attributt <%s>-element"
|
||||
|
||||
#~ msgid "Did not understand value \"%s\" for type of gradient"
|
||||
#~ msgstr "Forsto ikke verdi «%s» for gradienttype"
|
||||
|
||||
#~ msgid "Did not understand fill type \"%s\" for <%s> element"
|
||||
#~ msgstr "Forsto ikke fyll-type «%s» for <%s>-element"
|
||||
|
||||
#~ msgid "Did not understand state \"%s\" for <%s> element"
|
||||
#~ msgstr "Forsto ikke tilstand «%s» for element <%s>"
|
||||
|
||||
#~ msgid "Did not understand shadow \"%s\" for <%s> element"
|
||||
#~ msgstr "Forsto ikke skygge «%s» for element <%s>"
|
||||
|
||||
#~ msgid "Did not understand arrow \"%s\" for <%s> element"
|
||||
#~ msgstr "Forsto ikke pil «%s» for element <%s>"
|
||||
|
||||
#~ msgid "No <draw_ops> called \"%s\" has been defined"
|
||||
#~ msgstr "Ingen <draw_ops> kalt «%s» er definert"
|
||||
|
||||
#~ msgid "Including draw_ops \"%s\" here would create a circular reference"
|
||||
#~ msgstr ""
|
||||
#~ "Hvis du tar med draw_ops «%s» her vil dette lage en sirkulær referanse"
|
||||
|
||||
#~ msgid "Unknown position \"%s\" for frame piece"
|
||||
#~ msgstr "Ukjent posisjon «%s» for rammesdel"
|
||||
|
||||
#~ msgid "Frame style already has a piece at position %s"
|
||||
#~ msgstr "Rammestil har allerede en del i posisjon %s"
|
||||
|
||||
#~ msgid "No <draw_ops> with the name \"%s\" has been defined"
|
||||
#~ msgstr "Ingen <draw_ops> med navn «%s» er definert"
|
||||
|
||||
#~ msgid "Unknown function \"%s\" for button"
|
||||
#~ msgstr "Ukjent funksjon «%s» for knapp"
|
||||
|
||||
#~ msgid "Button function \"%s\" does not exist in this version (%d, need %d)"
|
||||
#~ msgstr ""
|
||||
#~ "Knappefunksjon «%s» eksisterer ikke i denne versjonen (%d, trenger %d)"
|
||||
|
||||
#~ msgid "Unknown state \"%s\" for button"
|
||||
#~ msgstr "Ukjent tilstand «%s» for knapp"
|
||||
|
||||
#~ msgid "Frame style already has a button for function %s state %s"
|
||||
#~ msgstr "Rammestil har allerede en knapp for funksjon %s tilstand %s"
|
||||
|
||||
#~ msgid "\"%s\" is not a valid value for focus attribute"
|
||||
#~ msgstr "«%s» er ikke en gyldig verdi for fokusattributt"
|
||||
|
||||
#~ msgid "\"%s\" is not a valid value for state attribute"
|
||||
#~ msgstr "«%s» er ikke en gyldig verdi for tilstandsattributt"
|
||||
|
||||
#~ msgid "A style called \"%s\" has not been defined"
|
||||
#~ msgstr "En stil med navn «%s» er ikke definert"
|
||||
|
||||
#~ msgid "\"%s\" is not a valid value for resize attribute"
|
||||
#~ msgstr "«%s» er ikke en gyldig verdi for attributt for endring av størrelse"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Should not have \"resize\" attribute on <%s> element for maximized/shaded "
|
||||
#~ "states"
|
||||
#~ msgstr ""
|
||||
#~ "Skal ikke være noen «resize»-attributt på <%s>-element for maksimert/"
|
||||
#~ "skyggelagt tilstand"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Should not have \"resize\" attribute on <%s> element for maximized states"
|
||||
#~ msgstr ""
|
||||
#~ "Skal ikke være noen «resize»-attributt på <%s>-element for maksimert "
|
||||
#~ "tilstand"
|
||||
|
||||
#~ msgid "Style has already been specified for state %s resize %s focus %s"
|
||||
#~ msgstr ""
|
||||
#~ "Stil er allerede spesifisert for tilstand %s størrelsesendring %s fokus %s"
|
||||
|
||||
#~ msgid "Style has already been specified for state %s focus %s"
|
||||
#~ msgstr "Stil er allerede spesifisert for tilstand %s fokus %s"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Can't have a two draw_ops for a <piece> element (theme specified a "
|
||||
#~ "draw_ops attribute and also a <draw_ops> element, or specified two "
|
||||
#~ "elements)"
|
||||
#~ msgstr ""
|
||||
#~ "Kan ikke ha to draw_ops for et <piece>-element (tema spesifiserte en "
|
||||
#~ "draw_ops-attributt i tillegg til et <draw_ops>-element, eller så "
|
||||
#~ "spesifiserte det to elementer)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Can't have a two draw_ops for a <button> element (theme specified a "
|
||||
#~ "draw_ops attribute and also a <draw_ops> element, or specified two "
|
||||
#~ "elements)"
|
||||
#~ msgstr ""
|
||||
#~ "Kan ikke ha to draw_ops for et <button>-element (tema spesifiserte en "
|
||||
#~ "draw_ops-attributt i tillegg til et <draw_ops>-element, eller det "
|
||||
#~ "spesifiserte to elementer)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Can't have a two draw_ops for a <menu_icon> element (theme specified a "
|
||||
#~ "draw_ops attribute and also a <draw_ops> element, or specified two "
|
||||
#~ "elements)"
|
||||
#~ msgstr ""
|
||||
#~ "Kan ikke ha to draw_ops for et <menu_icon>-element (tema spesifiserte en "
|
||||
#~ "draw_ops-attributt i tillegg til et <draw_ops>-element, eller det "
|
||||
#~ "spesifiserte to elementer)"
|
||||
|
||||
#~ msgid "Bad version specification '%s'"
|
||||
#~ msgstr "Ugyldig versjonspesifikasjon «%s»"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\"version\" attribute cannot be used in metacity-theme-1.xml or metacity-"
|
||||
#~ "theme-2.xml"
|
||||
#~ msgstr ""
|
||||
#~ "«version»-attributt kan ikke brukes i metacity-theme-1.xml eller metacity-"
|
||||
#~ "theme-2.xml"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Theme requires version %s but latest supported theme version is %d.%d"
|
||||
#~ msgstr "Tema krever versjon %s men siste støttede temaversjon er %d.%d"
|
||||
|
||||
#~ msgid "Outermost element in theme must be <metacity_theme> not <%s>"
|
||||
#~ msgstr "Ytterste element i temaet må være <metacity_theme> ikke <%s>"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Element <%s> is not allowed inside a name/author/date/description element"
|
||||
#~ msgstr ""
|
||||
#~ "Element <%s> er ikke tillatt inne i et name/author/date/description "
|
||||
#~ "element"
|
||||
|
||||
#~ msgid "Element <%s> is not allowed inside a <constant> element"
|
||||
#~ msgstr "Element <%s> er ikke tillatt inne i et <constand> element"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
|
||||
#~ msgstr ""
|
||||
#~ "Element <%s> er ikke tillatt inne i et avstand/kant/aspektrate-element"
|
||||
|
||||
#~ msgid "Element <%s> is not allowed inside a draw operation element"
|
||||
#~ msgstr "Element <%s> er ikke tillatt inne i et element for tegneoperasjon"
|
||||
|
||||
#~ msgid "Element <%s> is not allowed inside a <%s> element"
|
||||
#~ msgstr "Element <%s> er ikke tillatt inne i et <%s>-element"
|
||||
|
||||
#~ msgid "No draw_ops provided for frame piece"
|
||||
#~ msgstr "Ingen draw_ops tilbys for rammedelen"
|
||||
|
||||
#~ msgid "No draw_ops provided for button"
|
||||
#~ msgstr "Ingen draw_ops tilbys for knappen"
|
||||
|
||||
#~ msgid "No text is allowed inside element <%s>"
|
||||
#~ msgstr "Ingen tekst er tillatt inne i element <%s>"
|
||||
|
||||
#~ msgid "<%s> specified twice for this theme"
|
||||
#~ msgstr "<%s> spesifisert to ganger for dette temaet"
|
||||
|
||||
#~ msgid "Failed to find a valid file for theme %s\n"
|
||||
#~ msgstr "Fant ikke en gyldig fil for tema %s\n"
|
||||
|
68
po/pl.po
68
po/pl.po
@ -9,14 +9,14 @@
|
||||
# Marek Stępień <marcoos@aviary.pl>, 2007.
|
||||
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007.
|
||||
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
|
||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2015.
|
||||
# Aviary.pl <gnomepl@aviary.pl>, 2007-2015.
|
||||
# Piotr Drąg <piotrdrag@gmail.com>, 2010-2016.
|
||||
# Aviary.pl <gnomepl@aviary.pl>, 2007-2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-08-26 18:49+0200\n"
|
||||
"PO-Revision-Date: 2015-08-26 18:50+0200\n"
|
||||
"POT-Creation-Date: 2016-02-25 17:29+0100\n"
|
||||
"PO-Revision-Date: 2016-02-25 17:30+0100\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||
"Language: pl\n"
|
||||
@ -285,10 +285,10 @@ msgid ""
|
||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
||||
"default or set to the empty string."
|
||||
msgstr ""
|
||||
"Ten klawisz inicjuje tryb „overlay”, który jest połączeniem podglądu okien i "
|
||||
"systemu uruchamiania programów. Domyślnie jest przeznaczony do powiązania z "
|
||||
"klawiszem „Windows” na komputerach typu PC. Ustawienie tego powiązania "
|
||||
"powinno być domyślne lub puste."
|
||||
"Ten klawisz inicjuje tryb „overlay” (nakładki), który jest połączeniem "
|
||||
"podglądu okien i systemu uruchamiania programów. Domyślnie jest przeznaczony "
|
||||
"do powiązania z klawiszem „Windows” na komputerach typu PC. Ustawienie tego "
|
||||
"powiązania powinno być domyślne lub puste."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
|
||||
msgid "Attach modal dialogs"
|
||||
@ -332,8 +332,8 @@ msgid ""
|
||||
"gnome.desktop.wm.preferences)."
|
||||
msgstr ""
|
||||
"Określa, czy obszary robocze są zarządzane dynamicznie, czy istnieje "
|
||||
"statyczna liczba obszarów (określona przez klucz „num-workspaces” w org."
|
||||
"gnome.desktop.wm.preferences)."
|
||||
"statyczna liczba obszarów (określona przez klucz „num-workspaces” w „org."
|
||||
"gnome.desktop.wm.preferences”)."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
|
||||
msgid "Workspaces only on primary"
|
||||
@ -468,22 +468,22 @@ msgstr "Przełączenie na 11. konsolę wirtualną"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Przełączenie na 12. konsolę wirtualną"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:500
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Wbudowany ekran"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:526
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:528
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nieznany ekran"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:536
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -525,42 +525,46 @@ msgstr "_Czekaj"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Zakończ"
|
||||
|
||||
#: ../src/core/display.c:563
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Otwarcie połączenia z ekranem „%s” systemu X Window się nie powiodło\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Rozłącza połączenie z menedżerem sesji"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Zastępuje uruchomionego menedżera okien"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Podaje identyfikator zarządzania sesją"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Używany ekran X"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicjuje sesję z zapisanego pliku"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Synchroniczne wywołania X"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Uruchamia jako menedżer składania Wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Uruchamia jako osadzony menedżer składania"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Uruchamia pełny serwer wyświetlania zamiast osadzonego"
|
||||
msgstr "Uruchamia jako pełny serwer wyświetlania zamiast osadzonego"
|
||||
|
||||
#: ../src/core/mutter.c:39
|
||||
#, c-format
|
||||
@ -572,7 +576,7 @@ msgid ""
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"mutter %s\n"
|
||||
"Copyright (C) 2001—%d Havoc Pennington, Red Hat, Inc., oraz inni\n"
|
||||
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., oraz inni\n"
|
||||
"Niniejszy program jest wolnym oprogramowaniem, aby poznać warunki, pod\n"
|
||||
"jakimi dopuszczalne jest kopiowanie programu, zajrzyj do jego źródeł.\n"
|
||||
"Na program nie udziela się ŻADNYCH GWARANCJI, nawet domyślnej gwarancji\n"
|
||||
@ -584,23 +588,23 @@ msgstr "Wyświetla wersję"
|
||||
|
||||
#: ../src/core/mutter.c:59
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Używana wtyczka programu Mutter"
|
||||
msgstr "Używana wtyczka menedżera Mutter"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Obszar roboczy %d"
|
||||
msgstr "%d. obszar roboczy"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Na ekranie „%s” działa już menedżer okien. Aby zastąpić działającego "
|
||||
"menedżera okien, proszę spróbować użyć opcji --replace."
|
||||
"menedżera okien, należy użyć opcji „--replace”."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Podekran %d ekranu „%s” jest nieprawidłowy\n"
|
||||
@ -608,7 +612,7 @@ msgstr "Podekran %d ekranu „%s” jest nieprawidłowy\n"
|
||||
#: ../src/core/util.c:118
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
"Program Mutter został skompilowany bez obsługi trybu z obszerną informacją\n"
|
||||
"Menedżer Mutter został skompilowany bez obsługi trybu z obszerną informacją\n"
|
||||
|
||||
#: ../src/x11/session.c:1815
|
||||
msgid ""
|
||||
|
73
po/pt.po
73
po/pt.po
@ -3,21 +3,22 @@
|
||||
# Distributed under the same licence as the metacity package
|
||||
# Duarte Loreto <happyguy_pt@hotmail.com>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
|
||||
# Pedro Albuquerque <palbuquerque73@openmailbox.com>, 2015.
|
||||
# Tiago Santos <tiagofsantos81@sapo.pt>, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.10\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-06-07 22:51+0000\n"
|
||||
"PO-Revision-Date: 2015-06-25 08:16+0100\n"
|
||||
"Last-Translator: Pedro Albuquerque <palbuquerque73@openmailbox.com>\n"
|
||||
"POT-Creation-Date: 2016-04-30 13:15+0000\n"
|
||||
"PO-Revision-Date: 2016-04-30 16:12+0100\n"
|
||||
"Last-Translator: Tiago Santos <tiagofsantos81@sapo.pt>\n"
|
||||
"Language-Team: Português <palbuquerque73@openmailbox.com>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
@ -41,7 +42,6 @@ msgid "Move window to workspace 4"
|
||||
msgstr "Mover janela para a área de trabalho 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:6
|
||||
#| msgid "Move window to workspace 1"
|
||||
msgid "Move window to last workspace"
|
||||
msgstr "Mover janela para a última área de trabalho"
|
||||
|
||||
@ -82,7 +82,6 @@ msgid "Switch applications"
|
||||
msgstr "Mudar de aplicações"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:16
|
||||
#| msgid "Switch applications"
|
||||
msgid "Switch to previous application"
|
||||
msgstr "Mudar para a aplicação anterior"
|
||||
|
||||
@ -91,7 +90,6 @@ msgid "Switch windows"
|
||||
msgstr "Mudar de janelas"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:18
|
||||
#| msgid "Switch windows"
|
||||
msgid "Switch to previous window"
|
||||
msgstr "Mudar para a janela anterior"
|
||||
|
||||
@ -100,7 +98,6 @@ msgid "Switch windows of an application"
|
||||
msgstr "Alternar entre janelas de uma aplicação"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:20
|
||||
#| msgid "Switch windows of an application"
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Mudar para a janela anterior de uma aplicação"
|
||||
|
||||
@ -109,7 +106,6 @@ msgid "Switch system controls"
|
||||
msgstr "Alternar entre controlos de sistema"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:22
|
||||
#| msgid "Switch system controls"
|
||||
msgid "Switch to previous system control"
|
||||
msgstr "Mudar para o controlo de sistema anterior"
|
||||
|
||||
@ -126,7 +122,6 @@ msgid "Switch windows of an app directly"
|
||||
msgstr "Alternar diretamente entre janelas de uma aplicação"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:26
|
||||
#| msgid "Switch windows of an application"
|
||||
msgid "Switch directly to previous window of an app"
|
||||
msgstr "Mudar diretamente para a janela anterior de uma aplicação"
|
||||
|
||||
@ -135,7 +130,6 @@ msgid "Switch system controls directly"
|
||||
msgstr "Alternar diretamente entre controlos de sistema"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:28
|
||||
#| msgid "Switch system controls"
|
||||
msgid "Switch directly to previous system control"
|
||||
msgstr "Mudar diretamente para o controlo de sistema anterior"
|
||||
|
||||
@ -160,7 +154,6 @@ msgid "Switch to workspace 4"
|
||||
msgstr "Mudar para a área de trabalho 4"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:34
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Mudar para a última área de trabalho 1"
|
||||
|
||||
@ -415,81 +408,69 @@ msgid "Cancel tab popup"
|
||||
msgstr "Cancelar o popup de tabulador"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "Alternar para a área de trabalho 1"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
|
||||
#| msgid "Switch to workspace 2"
|
||||
msgid "Switch to VT 2"
|
||||
msgstr "Alternar para a área de trabalho 2"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
|
||||
#| msgid "Switch to workspace 3"
|
||||
msgid "Switch to VT 3"
|
||||
msgstr "Alternar para a área de trabalho 3"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
|
||||
#| msgid "Switch to workspace 4"
|
||||
msgid "Switch to VT 4"
|
||||
msgstr "Alternar para a área de trabalho 4"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
|
||||
#| msgid "Switch to workspace 5"
|
||||
msgid "Switch to VT 5"
|
||||
msgstr "Mover para a área de trabalho 5"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
|
||||
#| msgid "Switch to workspace 6"
|
||||
msgid "Switch to VT 6"
|
||||
msgstr "Mover para a área de trabalho 6"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
|
||||
#| msgid "Switch to workspace 7"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Mover para a área de trabalho 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to workspace 8"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Mover para a área de trabalho 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to workspace 9"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Mover para a área de trabalho 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to workspace 10"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Mover para a área de trabalho 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to workspace 11"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Mover para a área de trabalho 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to workspace 12"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Mover para a área de trabalho 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:496
|
||||
#: ../src/backends/meta-monitor-manager.c:515
|
||||
msgid "Built-in display"
|
||||
msgstr "Ecrã embutido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:522
|
||||
#: ../src/backends/meta-monitor-manager.c:538
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:524
|
||||
#: ../src/backends/meta-monitor-manager.c:540
|
||||
msgid "Unknown Display"
|
||||
msgstr "Ecrã desconhecido"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:532
|
||||
#: ../src/backends/meta-monitor-manager.c:548
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -505,7 +486,7 @@ msgstr ""
|
||||
"Já se encontra em execução outro gestor de janelas no ecrã %i do monitor \"%s"
|
||||
"\"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Evento de campainha"
|
||||
|
||||
@ -534,40 +515,45 @@ msgstr "_Aguardar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forçar terminar"
|
||||
|
||||
#: ../src/core/display.c:563
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Falha ao abrir ecrã \"%s\" do sistema Janelas X\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desativar a ligação ao gestor de sessão"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Substituir o gestor de janelas em execução"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar a ID de gestão de sessão"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Ecrã X a utilizar"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar a sessão a partir de um ficheiro de gravação de sessão"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fazer as chamadas X sincronamente"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Executar como compositor wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Executar como compositor aninhado"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Executar como servidor de ecrã completo, em vez de aninhado"
|
||||
|
||||
@ -595,16 +581,13 @@ msgstr "Imprimir a versão"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Extensão Mutter a utilizar"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Área de trabalho %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
@ -612,12 +595,12 @@ msgstr ""
|
||||
"O ecrã \"%s\" já tem um gestor de janelas; tente utilizar a opção --replace "
|
||||
"para substituir o gestor de janelas atual."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Ecrã %d no monitor \"%s\" é inválido\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "O Mutter foi compilado sem suporte para modo verboso\n"
|
||||
|
||||
|
45
po/pt_BR.po
45
po/pt_BR.po
@ -15,22 +15,23 @@
|
||||
# Rodrigo Padula de Oliveira <contato@rodrigopadula.com>, 2011.
|
||||
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
|
||||
# Enrico Nicoletto <liverig@gmail.com>, 2012, 2014.
|
||||
# Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-26 11:24+0000\n"
|
||||
"PO-Revision-Date: 2015-02-26 17:36-0300\n"
|
||||
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
|
||||
"POT-Creation-Date: 2016-02-25 13:40+0000\n"
|
||||
"PO-Revision-Date: 2016-02-25 13:41-0300\n"
|
||||
"Last-Translator: Artur de Aquino Morais <artur.morais93@outlook.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.7.4\n"
|
||||
"X-Generator: Poedit 1.8.4\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -472,22 +473,22 @@ msgstr "Trocar para o VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Trocar para o VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Tela embutida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Monitor desconhecido"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s de %s"
|
||||
@ -531,40 +532,44 @@ msgstr "_Esperar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forçar sair"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Falha ao abrir a exibição \"%s\" do sistema de janelas X\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Desabilitar a conexão com o gerenciador de sessões"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Substituir o gerenciador de janelas em execução"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Especificar o ID do gerenciador de sessões"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Exibição do X a ser utilizada"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializar a sessão a partir do arquivo salvo"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Fazer X chamadas síncronas"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Executar como um compositor wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Executar como um compositor aninhado"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Executar como um servidor de tela cheia, ao invés de aninhado"
|
||||
|
||||
@ -592,12 +597,12 @@ msgstr "Versão impressa"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Plug-in do Mutter para usar"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espaço de trabalho %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -606,7 +611,7 @@ msgstr ""
|
||||
"A exibição \"%s\" já possui um gerenciador de janelas; tente usar a opção --"
|
||||
"replace para substituir o gerenciador de janelas atual."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "A tela %d na exibição \"%s\" é inválida\n"
|
||||
|
53
po/ru.po
53
po/ru.po
@ -9,15 +9,16 @@
|
||||
# Yuri Kozlov <yuray@komyakino.ru>, 2011.
|
||||
# Yuri Myasoedov <ymyasoedov@yandex.ru>, 2012-2014, 2015.
|
||||
# Ivan Komaritsyn <vantu5z@mail.ru>, 2015.
|
||||
# Stas Solovey <whats_up@tut.by>, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity ru\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-19 23:11+0000\n"
|
||||
"PO-Revision-Date: 2015-02-20 13:59+0300\n"
|
||||
"Last-Translator: Ivan Komaritsyn <vantu5z@mail.ru>\n"
|
||||
"POT-Creation-Date: 2016-03-03 01:44+0000\n"
|
||||
"PO-Revision-Date: 2016-03-03 13:51+0300\n"
|
||||
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
|
||||
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -25,7 +26,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\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"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -441,46 +442,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Переключиться на виртуальный терминал 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Переключиться на виртуальный терминал 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Переключиться на виртуальный терминал 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Переключиться на виртуальный терминал 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Переключиться на виртуальный терминал 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Переключиться на виртуальный терминал 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Встроенный дисплей"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестный"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Неизвестный дисплей"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -521,40 +517,45 @@ msgstr "_Подождать"
|
||||
msgid "_Force Quit"
|
||||
msgstr "Завер_шить"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Не удалось открыть дисплей «%s» системы X Window\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Запретить подключение к менеджеру сеансов"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Заменить запущенный оконный менеджер"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Указать идентификатор управления сеансом"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Используемый дисплей X"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Инициализировать сеанс из сохранённого файла"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Сделать X-вызовы синхронными"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Запустить в качестве композитора wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Запустить в качестве встроенного композитора"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Запустить в качестве полноэкранного сервера вместо встроенного"
|
||||
|
||||
@ -583,12 +584,12 @@ msgstr "Вывести версию"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Использовать модуль mutter"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Рабочее место %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -597,12 +598,12 @@ msgstr ""
|
||||
"Дисплей «%s» уже использует менеджер окон; попробуйте использовать параметр "
|
||||
"--replace, чтобы заменить текущий менеджер окон."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Недопустимый экран %d дисплея «%s»\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter собран без поддержки режима подробных сообщений\n"
|
||||
|
||||
|
45
po/sk.po
45
po/sk.po
@ -14,8 +14,8 @@ msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-21 23:27+0000\n"
|
||||
"PO-Revision-Date: 2015-02-22 11:11+0100\n"
|
||||
"POT-Creation-Date: 2016-03-01 13:42+0000\n"
|
||||
"PO-Revision-Date: 2016-03-01 20:40+0100\n"
|
||||
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
|
||||
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
|
||||
"Language: sk\n"
|
||||
@ -23,7 +23,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
|
||||
"X-Generator: Poedit 1.7.4\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -542,22 +542,22 @@ msgstr "Prepnúť na VT č. 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Prepnúť na VT č. 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Vstavaný displej"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámy"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Neznámy displej"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -602,46 +602,51 @@ msgid "_Force Quit"
|
||||
msgstr "_Vynútiť ukončenie"
|
||||
|
||||
# X window system preloz, napr. system na spravu okien X
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Zakáže pripojenia k správcovi relácií"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Nahradí bežiaceho správcu okien"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Zadá identifikátor správy relácií"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X displej, ktorý bude použitý"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Inicializuje reláciu z uloženého súboru"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Použije synchrónne volania X"
|
||||
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Spustí ako kompozitor protokolu wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
# cmd desc
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Spustí ako kompozitor s vnoreným režimom"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Spustí ako plnohodnotný zobrazovací server, namiesto vnoreného režimu"
|
||||
|
||||
@ -670,12 +675,12 @@ msgstr "Zobrazí verziu"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Použije zásuvný modul Mutter"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Pracovný priestor č. %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -684,12 +689,12 @@ msgstr ""
|
||||
"Displej „%s“ už má správcu okien. Skúste použiť prepínač --replace, aby sa "
|
||||
"aktuálny správca nahradil."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
|
||||
|
||||
|
46
po/sl.po
46
po/sl.po
@ -4,15 +4,15 @@
|
||||
#
|
||||
# Andraž Tori <andraz.tori1@guest.arnes.si>, 2000.
|
||||
# Matjaž Horvat <m@owca.info>, 2006.
|
||||
# Matej Urbančič <mateju@svn.gnome.org>, 2007-2015.
|
||||
# Matej Urbančič <mateju@svn.gnome.org>, 2007-2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-15 11:07+0000\n"
|
||||
"PO-Revision-Date: 2015-03-15 14:36+0100\n"
|
||||
"POT-Creation-Date: 2016-03-05 21:12+0100\n"
|
||||
"PO-Revision-Date: 2016-03-05 21:12+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: sl_SI\n"
|
||||
@ -22,7 +22,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||
"%100==4 ? 3 : 0);\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Generator: Poedit 1.8.4\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -455,22 +455,22 @@ msgstr "Preklopi na VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Preklopi na VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Vgrajen zaslon"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Neznano"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Neznan zaslon"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -514,40 +514,44 @@ msgstr "_Počakaj"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Vsili konec"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Onemogoči povezavo z upravljalnikom sej"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Zamenjaj trenutni upravljalnik oken"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Navedite ID upravljanja seje"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Zaslon X za uporabo"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Začni sejo iz shranjene datoteke"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Uskladi klice X"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Zaženi izbirnik wayland"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Zaženi kot gnezden vpisovalnik"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno"
|
||||
|
||||
@ -575,12 +579,12 @@ msgid "Mutter plugin to use"
|
||||
msgstr "Vstavek Mutter za uporabo"
|
||||
|
||||
# G:1 K:0 O:0
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Delovna površina %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -589,12 +593,12 @@ msgstr ""
|
||||
"Zaslon \"%s\" že ima določen upravljalnik oken; poskušajte uporabiti možnost "
|
||||
"--replace za zamenjavo trenutnega upravljalnika zaslona."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Zaslon %d na prikazu '%s' ni veljaven\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr ""
|
||||
"Program Mutter je kodno preveden brez podpore za podrobni način izpisovanja\n"
|
||||
|
67
po/sr.po
67
po/sr.po
@ -1,19 +1,21 @@
|
||||
# Serbian translation of mutter.
|
||||
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2015.
|
||||
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2016.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
#
|
||||
# Translators:
|
||||
# Горан Ракић <grakic@devbase.net>
|
||||
# Данило Шеган <danilo@prevod.org>, 2005.
|
||||
# Милош Поповић <gpopac@gmail.com>, 2010.
|
||||
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2015.
|
||||
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
||||
"keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-04 11:14+0000\n"
|
||||
"PO-Revision-Date: 2015-03-04 19:46+0200\n"
|
||||
"POT-Creation-Date: 2016-03-09 01:41+0000\n"
|
||||
"PO-Revision-Date: 2016-03-09 09:52+0200\n"
|
||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language-Team: Serbian <(nothing)>\n"
|
||||
"Language: sr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -436,46 +438,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Прелазак на ВТ 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Прелазак на ВТ 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Прелазак на ВТ 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Прелазак на ВТ 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Прелазак на ВТ 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Прелазак на ВТ 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Уграђени дисплеј"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Непознато"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Непознат дисплеј"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -519,40 +516,45 @@ msgstr "_Сачекај"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Приморај излаз"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Искључује везу са управником сесије"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Мења текућег управника прозорима"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Наводи ИБ управника сесије"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Икс екран који ће бити коришћен"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Покреће сесију из датотеке чувања"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Чини Икс позиве усклађеним"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Ради као вајландов саставник"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Ради као угнеждени саставник"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Ради као пуни сервер приказа, уместо као угнеждени"
|
||||
|
||||
@ -566,8 +568,8 @@ msgid ""
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"матер %s\n"
|
||||
"Сва права задржана (C) 2001–%d Havoc Pennington, Red Hat, Inc., и остали\n"
|
||||
"Ово је слободан програм; погледајте изворни код за услове коришћења.\n"
|
||||
"Сва права задржана © 2001–%d Хевок Пенингтон, Ред Хет, Инк., и остали\n"
|
||||
"Ово је слободан програм; погледајте изворни кôд за услове коришћења.\n"
|
||||
"НЕ постоји никаква гаранција; чак ни гаранција о ТРЖИШНОЈ ВРЕДНОСТИ или "
|
||||
"ПРИЛАГОЂЕНОСТИ ОДРЕЂЕНОЈ НАМЕНИ.\n"
|
||||
|
||||
@ -579,29 +581,26 @@ msgstr "Исписује издање"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Прикључци Матера за коришћење"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. радни простор"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију "
|
||||
"„--replace“ да замените тренутног управника прозора."
|
||||
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--"
|
||||
"replace“ да замените тренутног управника прозора."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Матер је преведен без подршке за опширан режим\n"
|
||||
|
||||
|
@ -1,19 +1,21 @@
|
||||
# Serbian translation of mutter.
|
||||
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2015.
|
||||
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2016.
|
||||
# This file is distributed under the same license as the mutter package.
|
||||
#
|
||||
# Translators:
|
||||
# Goran Rakić <grakic@devbase.net>
|
||||
# Danilo Šegan <danilo@prevod.org>, 2005.
|
||||
# Miloš Popović <gpopac@gmail.com>, 2010.
|
||||
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011—2015.
|
||||
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2011—2016.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
|
||||
"keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-04 11:14+0000\n"
|
||||
"PO-Revision-Date: 2015-03-04 19:46+0200\n"
|
||||
"POT-Creation-Date: 2016-03-09 01:41+0000\n"
|
||||
"PO-Revision-Date: 2016-03-09 09:52+0200\n"
|
||||
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language-Team: Serbian <(nothing)>\n"
|
||||
"Language: sr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -436,46 +438,41 @@ msgid "Switch to VT 7"
|
||||
msgstr "Prelazak na VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Prelazak na VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Prelazak na VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Prelazak na VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Prelazak na VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to VT 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Prelazak na VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Ugrađeni displej"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Nepoznato"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Nepoznat displej"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -519,40 +516,45 @@ msgstr "_Sačekaj"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Primoraj izlaz"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Isključuje vezu sa upravnikom sesije"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Menja tekućeg upravnika prozorima"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Navodi IB upravnika sesije"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Iks ekran koji će biti korišćen"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Pokreće sesiju iz datoteke čuvanja"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Čini Iks pozive usklađenim"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Radi kao vajlandov sastavnik"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
#| msgid "Run as a wayland compositor"
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Radi kao ugneždeni sastavnik"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Radi kao puni server prikaza, umesto kao ugneždeni"
|
||||
|
||||
@ -566,8 +568,8 @@ msgid ""
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"mater %s\n"
|
||||
"Sva prava zadržana (C) 2001–%d Havoc Pennington, Red Hat, Inc., i ostali\n"
|
||||
"Ovo je slobodan program; pogledajte izvorni kod za uslove korišćenja.\n"
|
||||
"Sva prava zadržana © 2001–%d Hevok Penington, Red Het, Ink., i ostali\n"
|
||||
"Ovo je slobodan program; pogledajte izvorni kôd za uslove korišćenja.\n"
|
||||
"NE postoji nikakva garancija; čak ni garancija o TRŽIŠNOJ VREDNOSTI ili "
|
||||
"PRILAGOĐENOSTI ODREĐENOJ NAMENI.\n"
|
||||
|
||||
@ -579,29 +581,26 @@ msgstr "Ispisuje izdanje"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Priključci Matera za korišćenje"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "%d. radni prostor"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju "
|
||||
"„--replace“ da zamenite trenutnog upravnika prozora."
|
||||
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju „--"
|
||||
"replace“ da zamenite trenutnog upravnika prozora."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mater je preveden bez podrške za opširan režim\n"
|
||||
|
||||
|
162
po/sv.po
162
po/sv.po
@ -1,24 +1,25 @@
|
||||
# Swedish messages for mutter.
|
||||
# Copyright © 2001-2015 Free Software Foundation, Inc.
|
||||
# Copyright © 2001-2016 Free Software Foundation, Inc.
|
||||
# Christian Rose <menthos@menthos.com>, 2001, 2002, 2003, 2004, 2005.
|
||||
# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
|
||||
# Mattias Eriksson <snaggen@gmail.com>, 2014.
|
||||
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015.
|
||||
# Sebastian Rasmussen <sebras@gmail.com>, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-02-19 21:45+0000\n"
|
||||
"PO-Revision-Date: 2015-02-24 17:54+0100\n"
|
||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"POT-Creation-Date: 2016-03-05 13:41+0000\n"
|
||||
"PO-Revision-Date: 2016-03-06 13:47+0100\n"
|
||||
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
|
||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.7.3\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@ -270,15 +271,15 @@ msgstr "Modifierare att använda för utökade fönsterhanteringsåtgärder"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"This key will initiate the \"overlay\", which is a combination window overview "
|
||||
"and application launching system. The default is intended to be the \"Windows key"
|
||||
"\" on PC hardware. It's expected that this binding either the default or set to "
|
||||
"the empty string."
|
||||
"This key will initiate the \"overlay\", which is a combination window "
|
||||
"overview and application launching system. The default is intended to be the "
|
||||
"\"Windows key\" on PC hardware. It's expected that this binding either the "
|
||||
"default or set to the empty string."
|
||||
msgstr ""
|
||||
"Denna nyckel kommer att initiera \"overlay\", som är en kombinerad "
|
||||
"fönsteröversikt och programstartare. Standard är tänkt att vara \"Windows-"
|
||||
"tangenten\" på PC-maskinvara. Det är förväntat att denna bindning antingen är "
|
||||
"standard eller inställd till en tom sträng."
|
||||
"tangenten\" på PC-maskinvara. Det är förväntat att denna bindning antingen "
|
||||
"är standard eller inställd till en tom sträng."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
|
||||
msgid "Attach modal dialogs"
|
||||
@ -287,12 +288,12 @@ msgstr "Bifoga modala dialogfönster"
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
|
||||
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."
|
||||
"attached to the titlebar of the parent window and are moved together with "
|
||||
"the parent window."
|
||||
msgstr ""
|
||||
"När true kommer, istället för att ha oberoende namnlister, modala dialogfönster "
|
||||
"att visas anslutna till namnlisten i föräldrafönstret och flyttas tillsammans "
|
||||
"med föräldrafönstret."
|
||||
"När true kommer, istället för att ha oberoende namnlister, modala "
|
||||
"dialogfönster att visas anslutna till namnlisten i föräldrafönstret och "
|
||||
"flyttas tillsammans med föräldrafönstret."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
|
||||
msgid "Enable edge tiling when dropping windows on screen edges"
|
||||
@ -300,13 +301,13 @@ msgstr "Aktivera kantframhävning när fönster släpps på skärmkanter"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
|
||||
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."
|
||||
"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 ""
|
||||
"Om aktiverad, släppa fönster på vertikala skärmkanter kommer att maximera dem "
|
||||
"vertikalt och storleksändra dem horisontellt till att täcka hälften av den "
|
||||
"tillgängliga ytan. Släppa fönster på övre skärmkanten maximerar dem helt."
|
||||
"Om aktiverad, släppa fönster på vertikala skärmkanter kommer att maximera "
|
||||
"dem vertikalt och storleksändra dem horisontellt till att täcka hälften av "
|
||||
"den tillgängliga ytan. Släppa fönster på övre skärmkanten maximerar dem helt."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
|
||||
msgid "Workspaces are managed dynamically"
|
||||
@ -315,12 +316,12 @@ msgstr "Arbetsytor hanteras dynamiskt"
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
|
||||
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)."
|
||||
"static number of workspaces (determined by the num-workspaces key in org."
|
||||
"gnome.desktop.wm.preferences)."
|
||||
msgstr ""
|
||||
"Bestämmer huruvida arbetsytor hanteras dynamiskt eller huruvida det finns ett "
|
||||
"fast antal arbetsytor (bestäms av nyckeln num-workspaces i org.gnome.desktop.wm."
|
||||
"preferences)."
|
||||
"Bestämmer huruvida arbetsytor hanteras dynamiskt eller huruvida det finns "
|
||||
"ett fast antal arbetsytor (bestäms av nyckeln num-workspaces i org.gnome."
|
||||
"desktop.wm.preferences)."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
|
||||
msgid "Workspaces only on primary"
|
||||
@ -328,11 +329,11 @@ msgstr "Arbetsytor endast på primär"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
|
||||
msgid ""
|
||||
"Determines whether workspace switching should happen for windows on all monitors "
|
||||
"or only for windows on the primary monitor."
|
||||
"Determines whether workspace switching should happen for windows on all "
|
||||
"monitors or only for windows on the primary monitor."
|
||||
msgstr ""
|
||||
"Bestämmer huruvida arbetsyteväxling ska hända för alla fönster på alla skärmar "
|
||||
"eller endast för fönster på den primära skärmen."
|
||||
"Bestämmer huruvida arbetsyteväxling ska hända för alla fönster på alla "
|
||||
"skärmar eller endast för fönster på den primära skärmen."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
|
||||
msgid "No tab popup"
|
||||
@ -340,11 +341,11 @@ msgstr "Ingen flik-popup"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
|
||||
msgid ""
|
||||
"Determines whether the use of popup and highlight frame should be disabled for "
|
||||
"window cycling."
|
||||
"Determines whether the use of popup and highlight frame should be disabled "
|
||||
"for window cycling."
|
||||
msgstr ""
|
||||
"Bestämmer huruvida användning av popup och framhävning av kontur ska inaktiveras "
|
||||
"vid fönsterväxling."
|
||||
"Bestämmer huruvida användning av popup och framhävning av kontur ska "
|
||||
"inaktiveras vid fönsterväxling."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
|
||||
msgid "Delay focus changes until the pointer stops moving"
|
||||
@ -352,13 +353,13 @@ msgstr "Fördröj fokusändringar till muspekaren hålls still"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
|
||||
msgid ""
|
||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then the "
|
||||
"focus will not be changed immediately when entering a window, but only after the "
|
||||
"pointer stops moving."
|
||||
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
"the focus will not be changed immediately when entering a window, but only "
|
||||
"after the pointer stops moving."
|
||||
msgstr ""
|
||||
"Om satt till \"true\", och fokusläget är antingen \"sloppy\" eller \"mouse\" "
|
||||
"kommer fokus inte att ändras omedelbart när muspekaren går in över ett fönster, "
|
||||
"utan först efter att muspekaren slutar röra sig."
|
||||
"kommer fokus inte att ändras omedelbart när muspekaren går in över ett "
|
||||
"fönster, utan först efter att muspekaren slutar röra sig."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
|
||||
msgid "Draggable border width"
|
||||
@ -366,8 +367,8 @@ msgstr "Dragbar rambredd"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
|
||||
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."
|
||||
"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 ""
|
||||
"Mängd av totalt dragbara ramar. Om temats synliga ramar inte är tillräckliga "
|
||||
"kommer osynliga ramar att läggas till för att möta detta värde."
|
||||
@ -378,8 +379,8 @@ msgstr "Automatiskt maximera fönster vars storlek ligger nära skärmens storle
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
|
||||
msgid ""
|
||||
"If enabled, new windows that are initially the size of the monitor automatically "
|
||||
"get maximized."
|
||||
"If enabled, new windows that are initially the size of the monitor "
|
||||
"automatically get maximized."
|
||||
msgstr ""
|
||||
"Om aktiverad kommer nya fönster med nästan samma storlek som skärmen att bli "
|
||||
"automatiskt maximerade."
|
||||
@ -390,11 +391,11 @@ msgstr "Placera nya fönster centrerat"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
|
||||
msgid ""
|
||||
"When true, the new windows will always be put in the center of the active screen "
|
||||
"of the monitor."
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
msgstr ""
|
||||
"När satt till \"true\", kommer nya fönster alltid att placeras centrerat på den "
|
||||
"aktiva skärmen."
|
||||
"När satt till \"true\", kommer nya fönster alltid att placeras centrerat på "
|
||||
"den aktiva skärmen."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
|
||||
msgid "Select window from tab popup"
|
||||
@ -452,22 +453,22 @@ msgstr "Växla till VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Växla till VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Inbyggd display"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Okänd"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Okänd display"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -477,8 +478,9 @@ msgstr "%s %s"
|
||||
#: ../src/compositor/compositor.c:456
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s\"."
|
||||
msgstr "En annan compositing-hanterare körs redan på skärm %i på display \"%s\"."
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
"\"."
|
||||
msgstr "En annan kompositionshanterare körs redan på skärm %i på display ”%s”."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
msgid "Bell event"
|
||||
@ -495,8 +497,8 @@ msgstr "Programmet svarar inte."
|
||||
|
||||
#: ../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."
|
||||
"You may choose to wait a short while for it to continue or force the "
|
||||
"application to quit entirely."
|
||||
msgstr ""
|
||||
"Du kan välja att vänta en kort stund på det för att fortsätta eller tvinga "
|
||||
"programmet att helt avslutas."
|
||||
@ -509,40 +511,44 @@ msgstr "_Vänta"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Tvinga avslut"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Misslyckades med att öppna X Window System-displayen ”%s”\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Inaktivera anslutning till sessionshanteraren"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Ersätt körande fönsterhanteraren"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Ange sessionshanteringsid"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "X-display att använda"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Initiera session från sparandefil"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Gör X-anrop synkrona"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Kör som en wayland-compositor"
|
||||
msgstr "Kör som en wayland-kompositionshanterare"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Kör som en nästlad kompositionshanterare"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Kör som en full display-tjänst, i stället för nästlad"
|
||||
|
||||
@ -552,8 +558,8 @@ 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"
|
||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
|
||||
"PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"mutter %s\n"
|
||||
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc. och andra\n"
|
||||
@ -569,33 +575,33 @@ msgstr "Skriv ut version"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Mutter-insticksmodul att använda"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Arbetsyta %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option to "
|
||||
"replace the current window manager."
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
msgstr ""
|
||||
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för att "
|
||||
"ersätta den aktuella fönsterhanteraren."
|
||||
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för "
|
||||
"att ersätta den aktuella fönsterhanteraren."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Skärm %d på display ”%s” är ogiltig\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter kompilerades utan stöd för utförligt läge\n"
|
||||
|
||||
#: ../src/x11/session.c:1815
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to be "
|
||||
"restarted manually next time you log in."
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
"be restarted manually next time you log in."
|
||||
msgstr ""
|
||||
"Dessa fönster saknar stöd för "spara nuvarande inställningar" och "
|
||||
"kommer att behöva startas om manuellt nästa gång du loggar in."
|
||||
|
82
po/tr.po
82
po/tr.po
@ -6,22 +6,22 @@
|
||||
# Baris Cicek <baris@teamforce.name.tr>, 2004, 2005, 2008, 2009.
|
||||
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
|
||||
# Muhammed EKEN <gnome@m-eken.com>, 2011.
|
||||
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015.
|
||||
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-21 23:08+0000\n"
|
||||
"PO-Revision-Date: 2015-03-22 15:57+0200\n"
|
||||
"POT-Creation-Date: 2016-05-10 20:26+0000\n"
|
||||
"PO-Revision-Date: 2016-05-26 22:25+0300\n"
|
||||
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
|
||||
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
"X-Generator: Poedit 1.8.6\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
@ -73,12 +73,10 @@ msgid "Move window one monitor to the right"
|
||||
msgstr "Pencereyi sağdaki monitöre taşı"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:13
|
||||
#| msgid "Move window one workspace up"
|
||||
msgid "Move window one monitor up"
|
||||
msgstr "Pencereyi üstteki monitöre taşı"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:14
|
||||
#| msgid "Move window one workspace down"
|
||||
msgid "Move window one monitor down"
|
||||
msgstr "Pencereyi alttaki monitöre taşı"
|
||||
|
||||
@ -99,12 +97,10 @@ msgid "Switch to previous window"
|
||||
msgstr "Önceki pencereye geç"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:19
|
||||
#| msgid "Move between windows of an application immediately"
|
||||
msgid "Switch windows of an application"
|
||||
msgstr "Uygulamanın pencereleri arasında geçiş yap"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:20
|
||||
#| msgid "Move between windows of an application immediately"
|
||||
msgid "Switch to previous window of an application"
|
||||
msgstr "Uygulamanın bir önceki penceresine geç"
|
||||
|
||||
@ -125,7 +121,6 @@ msgid "Switch directly to previous window"
|
||||
msgstr "Önceki pencereye doğrudan geç"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:25
|
||||
#| msgid "Move between windows of an application immediately"
|
||||
msgid "Switch windows of an app directly"
|
||||
msgstr "Uygulamanın pencereleri arasında anında geçiş yap"
|
||||
|
||||
@ -142,7 +137,6 @@ msgid "Switch directly to previous system control"
|
||||
msgstr "Önceki sistem denetimine doğrudan geç"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:29
|
||||
#| msgid "Hide all normal windows and set focus to the desktop"
|
||||
msgid "Hide all normal windows"
|
||||
msgstr "Tüm normal pencereleri gizle"
|
||||
|
||||
@ -163,27 +157,22 @@ msgid "Switch to workspace 4"
|
||||
msgstr "Çalışma alanı 4'e geç"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:34
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to last workspace"
|
||||
msgstr "Son çalışma alanına geç"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:35
|
||||
#| msgid "Move to Workspace _Left"
|
||||
msgid "Move to workspace left"
|
||||
msgstr "Soldaki çalışma alanına taşı"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:36
|
||||
#| msgid "Move to Workspace R_ight"
|
||||
msgid "Move to workspace right"
|
||||
msgstr "Sağdaki çalışma alanına taşı"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:37
|
||||
#| msgid "Move to Workspace _Left"
|
||||
msgid "Move to workspace above"
|
||||
msgstr "Üstteki çalışma alanına taşı"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:38
|
||||
#| msgid "Move to Workspace _Down"
|
||||
msgid "Move to workspace below"
|
||||
msgstr "Alttaki çalışma alanına taşı"
|
||||
|
||||
@ -192,7 +181,6 @@ msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: ../data/50-mutter-system.xml.in.h:2
|
||||
#| msgid "Show the panel's main menu"
|
||||
msgid "Show the run command prompt"
|
||||
msgstr "Komut çalıştırma istemini göster"
|
||||
|
||||
@ -245,14 +233,12 @@ msgid "Resize window"
|
||||
msgstr "Pencereyi yeniden boyutlandır"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:12
|
||||
#| msgid "Toggle whether window is on all workspaces or just one"
|
||||
msgid "Toggle window on all workspaces or one"
|
||||
msgstr ""
|
||||
"Pencerenin tüm çalışma alanlarında veya sadece bir tanesi üzerinde olmasını "
|
||||
"seç"
|
||||
|
||||
#: ../data/50-mutter-windows.xml.in.h:13
|
||||
#| msgid "Raise window if it's covered by another window, otherwise lower it"
|
||||
msgid "Raise window if covered, otherwise lower it"
|
||||
msgstr ""
|
||||
"Pencere eğer başkası tarafından kapatılmışsa yukarı çıkar, yoksa aşağıya it"
|
||||
@ -374,11 +360,6 @@ msgid "Delay focus changes until the pointer stops moving"
|
||||
msgstr "Odak değişikliklerini işaretçi hareketi durana kadar ertele"
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
|
||||
#| msgid ""
|
||||
#| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
|
||||
#| "the focused window will be automatically raised after a delay specified "
|
||||
#| "by the auto_raise_delay key. This is not related to clicking on a window "
|
||||
#| "to raise it, nor to entering a window during drag-and-drop."
|
||||
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 "
|
||||
@ -433,81 +414,69 @@ msgid "Cancel tab popup"
|
||||
msgstr "Sekmeyi yeni pencerede açmayı iptal et"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 1"
|
||||
msgstr "VT 1'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
|
||||
#| msgid "Switch to workspace 2"
|
||||
msgid "Switch to VT 2"
|
||||
msgstr "VT 2'ye geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
|
||||
#| msgid "Switch to workspace 3"
|
||||
msgid "Switch to VT 3"
|
||||
msgstr "VT 3'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
|
||||
#| msgid "Switch to workspace 4"
|
||||
msgid "Switch to VT 4"
|
||||
msgstr "VT 4'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
|
||||
#| msgid "Switch to workspace 5"
|
||||
msgid "Switch to VT 5"
|
||||
msgstr "VT 5'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
|
||||
#| msgid "Switch to workspace 6"
|
||||
msgid "Switch to VT 6"
|
||||
msgstr "VT 6'ya geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
|
||||
#| msgid "Switch to workspace 7"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "VT 7'ye geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "VT 8'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "VT 9'a geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "VT 10'a geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "VT 11'e geç"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
#| msgid "Switch to workspace 1"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "VT 12'ye geç"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:515
|
||||
msgid "Built-in display"
|
||||
msgstr "Yerleşik ekran"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:538
|
||||
msgid "Unknown"
|
||||
msgstr "Bilinmiyor"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:540
|
||||
msgid "Unknown Display"
|
||||
msgstr "Bilinmeyen Ekran"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:548
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -523,7 +492,7 @@ msgstr ""
|
||||
"\"%2$s\" monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi "
|
||||
"çalışıyor."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Etkinlik zili"
|
||||
|
||||
@ -552,40 +521,44 @@ msgstr "_Bekle"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Sonlandır"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "X Pencere Sistemi '%s' ekranı açılamadı\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Ortam yöneticisine olan bağlantıyı kapat"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Çalışan pencere yöneticisinin yerini al"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Ortam yönetim ID'sini belirtin"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Kullanılacak X Ekranı"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Ortamı kayıtlı dosyadan başlat"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "X çağrılarını eşazamanlı yap"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Bir wayland dizgicisi olarak çalıştır"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Yuvalanmış dizgici olarak çalıştır"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "İç içe değil tam ekran sunucusu olarak çalıştır"
|
||||
|
||||
@ -611,16 +584,13 @@ msgstr "Sürümü yazdır"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Kullanılacak Mutter eklentisi"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Çalışma Alanı %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
#| msgid ""
|
||||
#| "Screen %d on display \"%s\" already has a window manager; try using the --"
|
||||
#| "replace option to replace the current window manager.\n"
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
@ -629,12 +599,12 @@ msgstr ""
|
||||
"yöneticisinin yerine bir başkasını koymak için --replace seçeneğini "
|
||||
"kullanmayı deneyin."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "'%2$s' X oturumundaki ekran %1$d geçersiz\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n"
|
||||
|
||||
|
52
po/vi.po
52
po/vi.po
@ -1,17 +1,17 @@
|
||||
# Vietnamese translation for Metacity.
|
||||
# Copyright © 2015 GNOME i18n Project for Vietnamese.
|
||||
# Copyright © 2016 GNOME i18n Project for Vietnamese.
|
||||
# This file is distributed under the same license as the Metacity package.
|
||||
# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2002-2004, 2007, 2008, 2011-2013.
|
||||
# Clytie Siddall <clytie@riverland.net.au>, 2005-2009.
|
||||
# Trần Ngọc Quân <vnwildman@gmail.com>, 2014, 2015.
|
||||
# Trần Ngọc Quân <vnwildman@gmail.com>, 2014, 2015, 2016.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: metacity master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
|
||||
"product=mutter&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-09 23:13+0000\n"
|
||||
"PO-Revision-Date: 2015-03-10 13:28+0700\n"
|
||||
"POT-Creation-Date: 2016-03-26 14:03+0000\n"
|
||||
"PO-Revision-Date: 2016-03-27 07:22+0700\n"
|
||||
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
|
||||
"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
|
||||
"Language: vi\n"
|
||||
@ -19,11 +19,11 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: LocFactoryEditor 1.8\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
msgstr "Di chuyển"
|
||||
msgstr "Điều hướng"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:2
|
||||
msgid "Move window to workspace 1"
|
||||
@ -447,22 +447,22 @@ msgstr "Chuyển sang VT 11"
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Chuyển sang VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
#: ../src/backends/meta-monitor-manager.c:518
|
||||
msgid "Built-in display"
|
||||
msgstr "Màn hình tích hợp"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
#: ../src/backends/meta-monitor-manager.c:544
|
||||
msgid "Unknown"
|
||||
msgstr "Không rõ"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
#: ../src/backends/meta-monitor-manager.c:546
|
||||
msgid "Unknown Display"
|
||||
msgstr "Không hiểu màn hình"
|
||||
|
||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||
#. * size in inches, like 'Dell 15"'
|
||||
#.
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#: ../src/backends/meta-monitor-manager.c:554
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@ -477,7 +477,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Bộ quản lý cửa sổ đã đang chạy trên Màn hình %i trên bộ trình bày \"%s\"."
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
#: ../src/core/bell.c:194
|
||||
msgid "Bell event"
|
||||
msgstr "Sự kiện chuông"
|
||||
|
||||
@ -506,40 +506,44 @@ msgstr "_Chờ"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Buộc thoát"
|
||||
|
||||
#: ../src/core/display.c:562
|
||||
#: ../src/core/display.c:555
|
||||
#, c-format
|
||||
msgid "Failed to open X Window System display '%s'\n"
|
||||
msgstr "Gặp lỗi khi mở bộ trình bày Hệ thống Cửa sổ X \"%s\".\n"
|
||||
|
||||
#: ../src/core/main.c:176
|
||||
#: ../src/core/main.c:181
|
||||
msgid "Disable connection to session manager"
|
||||
msgstr "Vô hiệu hóa kết nối với bộ quản lý phiên làm việc"
|
||||
|
||||
#: ../src/core/main.c:182
|
||||
#: ../src/core/main.c:187
|
||||
msgid "Replace the running window manager"
|
||||
msgstr "Thay thế bộ quản lý cửa sổ đang chạy"
|
||||
|
||||
#: ../src/core/main.c:188
|
||||
#: ../src/core/main.c:193
|
||||
msgid "Specify session management ID"
|
||||
msgstr "Ghi rõ mã số quản lý phiên làm việc"
|
||||
|
||||
#: ../src/core/main.c:193
|
||||
#: ../src/core/main.c:198
|
||||
msgid "X Display to use"
|
||||
msgstr "Bộ trình bày X cần dùng"
|
||||
|
||||
#: ../src/core/main.c:199
|
||||
#: ../src/core/main.c:204
|
||||
msgid "Initialize session from savefile"
|
||||
msgstr "Khởi động phiên làm việc từ tập tin lưu"
|
||||
|
||||
#: ../src/core/main.c:205
|
||||
#: ../src/core/main.c:210
|
||||
msgid "Make X calls synchronous"
|
||||
msgstr "Khiến các lời gọi X đồng bộ với nhau"
|
||||
|
||||
#: ../src/core/main.c:212
|
||||
#: ../src/core/main.c:217
|
||||
msgid "Run as a wayland compositor"
|
||||
msgstr "Chạy như là một “wayland compositor”"
|
||||
|
||||
#: ../src/core/main.c:220
|
||||
#: ../src/core/main.c:223
|
||||
msgid "Run as a nested compositor"
|
||||
msgstr "Chạy như là một “nested compositor”"
|
||||
|
||||
#: ../src/core/main.c:231
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Chạy như là một dịch vụ hiển thị đầy đủ, thay cho lồng nhau"
|
||||
|
||||
@ -567,12 +571,12 @@ msgstr "Hiển thị phiên bản"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Phần bổ sung Mutter cần dùng"
|
||||
|
||||
#: ../src/core/prefs.c:2004
|
||||
#: ../src/core/prefs.c:1997
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Vùng làm việc %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#: ../src/core/screen.c:521
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
@ -581,12 +585,12 @@ msgstr ""
|
||||
"Màn hình \"%s\" đã có bộ quản lý cửa sổ rồi; hãy thử dùng tùy chọn “--"
|
||||
"replace” để thay thế bộ quản lý cửa sổ đang dùng."
|
||||
|
||||
#: ../src/core/screen.c:607
|
||||
#: ../src/core/screen.c:603
|
||||
#, c-format
|
||||
msgid "Screen %d on display '%s' is invalid\n"
|
||||
msgstr "Màn hình %d trên bộ trình bày \"%s\" không hợp lệ.\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
#: ../src/core/util.c:121
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter đã được biên dịch không hỗ trợ chế độ chi tiết\n"
|
||||
|
||||
|
@ -19,9 +19,9 @@ installedtestsdir = $(datadir)/installed-tests/mutter
|
||||
installedtests_DATA = mutter-all.test
|
||||
|
||||
installedtestsbindir = $(libexecdir)/installed-tests/mutter
|
||||
installedtestsbin_PROGRAMS = mutter-test-client mutter-test-runner
|
||||
installedtestsbin_PROGRAMS = mutter-test-client mutter-test-runner mutter-test-unit-tests
|
||||
else
|
||||
noinst_PROGRAMS += mutter-test-client mutter-test-runner
|
||||
noinst_PROGRAMS += mutter-test-client mutter-test-runner mutter-test-unit-tests
|
||||
endif
|
||||
|
||||
EXTRA_DIST += tests/mutter-all.test.in
|
||||
@ -32,11 +32,19 @@ mutter_test_client_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
mutter_test_runner_SOURCES = tests/test-runner.c
|
||||
mutter_test_runner_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
|
||||
.PHONY: run-tests
|
||||
mutter_test_unit_tests_SOURCES = tests/unit-tests.c
|
||||
mutter_test_unit_tests_LDADD = $(MUTTER_LIBS) libmutter.la
|
||||
|
||||
run-tests: mutter-test-client mutter-test-runner
|
||||
.PHONY: run-tests run-test-runner-tests run-unit-tests
|
||||
|
||||
run-test-runner-tests: mutter-test-client mutter-test-runner
|
||||
./mutter-test-runner $(dist_stacking_DATA)
|
||||
|
||||
run-unit-tests: mutter-test-unit-tests
|
||||
./mutter-test-unit-tests
|
||||
|
||||
run-tests: run-test-runner-tests run-unit-tests
|
||||
|
||||
endif
|
||||
|
||||
# Some random test programs for bits of the code
|
||||
|
@ -49,6 +49,8 @@ mutter_built_sources += \
|
||||
pointer-gestures-unstable-v1-server-protocol.h \
|
||||
gtk-shell-protocol.c \
|
||||
gtk-shell-server-protocol.h \
|
||||
gtk-primary-selection-protocol.c \
|
||||
gtk-primary-selection-server-protocol.h \
|
||||
xdg-shell-unstable-v5-protocol.c \
|
||||
xdg-shell-unstable-v5-server-protocol.h \
|
||||
relative-pointer-unstable-v1-protocol.c \
|
||||
@ -60,6 +62,7 @@ endif
|
||||
|
||||
wayland_protocols = \
|
||||
wayland/protocol/gtk-shell.xml \
|
||||
wayland/protocol/gtk-primary-selection.xml \
|
||||
$(NULL)
|
||||
|
||||
libmutter_la_SOURCES = \
|
||||
|
@ -64,6 +64,8 @@ struct _MetaBackendPrivate
|
||||
MetaInputSettings *input_settings;
|
||||
|
||||
ClutterActor *stage;
|
||||
|
||||
guint device_update_idle_id;
|
||||
};
|
||||
typedef struct _MetaBackendPrivate MetaBackendPrivate;
|
||||
|
||||
@ -78,6 +80,9 @@ meta_backend_finalize (GObject *object)
|
||||
g_clear_object (&priv->monitor_manager);
|
||||
g_clear_object (&priv->input_settings);
|
||||
|
||||
if (priv->device_update_idle_id)
|
||||
g_source_remove (priv->device_update_idle_id);
|
||||
|
||||
g_hash_table_destroy (backend->device_monitors);
|
||||
|
||||
G_OBJECT_CLASS (meta_backend_parent_class)->finalize (object);
|
||||
@ -517,12 +522,44 @@ meta_backend_get_stage (MetaBackend *backend)
|
||||
return priv->stage;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
update_last_device (MetaBackend *backend)
|
||||
{
|
||||
MetaCursorTracker *cursor_tracker = meta_cursor_tracker_get_for_screen (NULL);
|
||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
||||
ClutterInputDeviceType device_type;
|
||||
ClutterDeviceManager *manager;
|
||||
ClutterInputDevice *device;
|
||||
|
||||
priv->device_update_idle_id = 0;
|
||||
manager = clutter_device_manager_get_default ();
|
||||
device = clutter_device_manager_get_device (manager,
|
||||
backend->current_device_id);
|
||||
device_type = clutter_input_device_get_device_type (device);
|
||||
|
||||
g_signal_emit_by_name (backend, "last-device-changed",
|
||||
backend->current_device_id);
|
||||
|
||||
switch (device_type)
|
||||
{
|
||||
case CLUTTER_KEYBOARD_DEVICE:
|
||||
break;
|
||||
case CLUTTER_TOUCHSCREEN_DEVICE:
|
||||
meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE);
|
||||
break;
|
||||
default:
|
||||
meta_cursor_tracker_set_pointer_visible (cursor_tracker, TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_backend_update_last_device (MetaBackend *backend,
|
||||
int device_id)
|
||||
{
|
||||
ClutterInputDeviceType device_type;
|
||||
MetaCursorTracker *cursor_tracker;
|
||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
||||
ClutterDeviceManager *manager;
|
||||
ClutterInputDevice *device;
|
||||
|
||||
@ -536,23 +573,14 @@ meta_backend_update_last_device (MetaBackend *backend,
|
||||
clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER)
|
||||
return;
|
||||
|
||||
device_type = clutter_input_device_get_device_type (device);
|
||||
|
||||
cursor_tracker = meta_cursor_tracker_get_for_screen (NULL);
|
||||
backend->current_device_id = device_id;
|
||||
g_signal_emit_by_name (backend, "last-device-changed", device_id);
|
||||
|
||||
if (device_type == CLUTTER_KEYBOARD_DEVICE)
|
||||
return;
|
||||
|
||||
switch (device_type)
|
||||
if (priv->device_update_idle_id == 0)
|
||||
{
|
||||
case CLUTTER_TOUCHSCREEN_DEVICE:
|
||||
meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE);
|
||||
break;
|
||||
default:
|
||||
meta_cursor_tracker_set_pointer_visible (cursor_tracker, TRUE);
|
||||
break;
|
||||
priv->device_update_idle_id =
|
||||
g_idle_add ((GSourceFunc) update_last_device, backend);
|
||||
g_source_set_name_by_id (priv->device_update_idle_id,
|
||||
"[mutter] update_last_device");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,9 +27,8 @@
|
||||
#include "meta-cursor-renderer.h"
|
||||
|
||||
#include <meta/meta-backend.h>
|
||||
#include <backends/meta-backend-private.h>
|
||||
#include <backends/meta-monitor-manager-private.h>
|
||||
#include <meta/util.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
#include <clutter/clutter.h>
|
||||
@ -118,14 +117,6 @@ meta_cursor_renderer_calculate_rect (MetaCursorRenderer *renderer,
|
||||
};
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_cursor_in_monitors_area (int x, int y)
|
||||
{
|
||||
MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (meta_get_backend ());
|
||||
return meta_monitor_manager_get_monitor_at_point (monitor_manager,
|
||||
(gfloat) x, (gfloat) y) >= 0;
|
||||
}
|
||||
|
||||
static void
|
||||
update_cursor (MetaCursorRenderer *renderer,
|
||||
MetaCursorSprite *cursor_sprite)
|
||||
@ -134,11 +125,6 @@ update_cursor (MetaCursorRenderer *renderer,
|
||||
gboolean handled_by_backend;
|
||||
gboolean should_redraw = FALSE;
|
||||
|
||||
/* do not render cursor if it is not on any monitor. Such situation
|
||||
* can occur e. g. after monitor hot-plug */
|
||||
if (!is_cursor_in_monitors_area (priv->current_x, priv->current_y))
|
||||
return;
|
||||
|
||||
if (cursor_sprite)
|
||||
meta_cursor_sprite_prepare_at (cursor_sprite,
|
||||
priv->current_x,
|
||||
|
@ -198,6 +198,7 @@ ensure_xfixes_cursor (MetaCursorTracker *tracker)
|
||||
guint8 *cursor_data;
|
||||
gboolean free_cursor_data;
|
||||
CoglContext *ctx;
|
||||
CoglError *error = NULL;
|
||||
|
||||
if (tracker->xfixes_cursor)
|
||||
return;
|
||||
@ -239,11 +240,17 @@ ensure_xfixes_cursor (MetaCursorTracker *tracker)
|
||||
CLUTTER_CAIRO_FORMAT_ARGB32,
|
||||
cursor_image->width * 4, /* stride */
|
||||
cursor_data,
|
||||
NULL);
|
||||
&error);
|
||||
|
||||
if (free_cursor_data)
|
||||
g_free (cursor_data);
|
||||
|
||||
if (error != NULL)
|
||||
{
|
||||
meta_warning ("Failed to allocate cursor sprite texture: %s\n", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
|
||||
if (sprite != NULL)
|
||||
{
|
||||
MetaCursorSprite *cursor_sprite = meta_cursor_sprite_new ();
|
||||
|
@ -136,6 +136,7 @@ meta_cursor_sprite_load_from_xcursor_image (MetaCursorSprite *self,
|
||||
ClutterBackend *clutter_backend;
|
||||
CoglContext *cogl_context;
|
||||
CoglTexture *texture;
|
||||
CoglError *error = NULL;
|
||||
|
||||
g_assert (self->texture == NULL);
|
||||
|
||||
@ -156,10 +157,19 @@ meta_cursor_sprite_load_from_xcursor_image (MetaCursorSprite *self,
|
||||
cogl_format,
|
||||
rowstride,
|
||||
(uint8_t *) xc_image->pixels,
|
||||
NULL);
|
||||
&error);
|
||||
|
||||
if (error)
|
||||
{
|
||||
meta_warning ("Failed to allocate cursor texture: %s\n", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
|
||||
meta_cursor_sprite_set_texture (self, texture,
|
||||
xc_image->xhot, xc_image->yhot);
|
||||
cogl_object_unref (texture);
|
||||
|
||||
if (texture)
|
||||
cogl_object_unref (texture);
|
||||
|
||||
meta_cursor_renderer_realize_cursor_from_xcursor (renderer, self, xc_image);
|
||||
}
|
||||
|
@ -913,23 +913,13 @@ key_is_laptop (MetaOutputKey *key)
|
||||
{
|
||||
/* FIXME: extend with better heuristics */
|
||||
return g_str_has_prefix (key->connector, "LVDS") ||
|
||||
g_str_has_prefix (key->connector, "lvds") ||
|
||||
g_str_has_prefix (key->connector, "Lvds") ||
|
||||
g_str_has_prefix (key->connector, "LCD") || /* some versions of fglrx, sigh */
|
||||
g_str_has_prefix (key->connector, "DSI") ||
|
||||
g_str_has_prefix (key->connector, "eDP");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
output_is_laptop (MetaOutput *output)
|
||||
{
|
||||
/* FIXME: extend with better heuristics */
|
||||
switch (output->connector_type)
|
||||
{
|
||||
case META_CONNECTOR_TYPE_eDP:
|
||||
case META_CONNECTOR_TYPE_LVDS:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
laptop_display_is_on (MetaConfiguration *config)
|
||||
{
|
||||
@ -1051,6 +1041,17 @@ apply_configuration_with_lid (MetaMonitorConfig *self,
|
||||
return apply_configuration (self, config, manager);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_monitor_config_get_is_builtin_display_on (MetaMonitorConfig *self)
|
||||
{
|
||||
g_return_val_if_fail (META_IS_MONITOR_CONFIG (self), FALSE);
|
||||
|
||||
if (self->current)
|
||||
return laptop_display_is_on (self->current);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_monitor_config_apply_stored (MetaMonitorConfig *self,
|
||||
MetaMonitorManager *manager)
|
||||
@ -1092,7 +1093,7 @@ find_primary_output (MetaOutput *outputs,
|
||||
|
||||
for (i = 0; i < n_outputs; i++)
|
||||
{
|
||||
if (output_is_laptop (&outputs[i]))
|
||||
if (meta_output_is_laptop (&outputs[i]))
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -1554,18 +1555,19 @@ meta_monitor_config_restore_previous (MetaMonitorConfig *self,
|
||||
/* The user chose to restore the previous configuration. In this
|
||||
* case, restore the previous configuration. */
|
||||
MetaConfiguration *prev_config = config_ref (self->previous);
|
||||
apply_configuration (self, prev_config, manager);
|
||||
gboolean ok = apply_configuration (self, prev_config, manager);
|
||||
config_unref (prev_config);
|
||||
|
||||
/* After this, self->previous contains the rejected configuration.
|
||||
* Since it was rejected, nuke it. */
|
||||
g_clear_pointer (&self->previous, (GDestroyNotify) config_unref);
|
||||
|
||||
if (ok)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!meta_monitor_config_apply_stored (self, manager))
|
||||
meta_monitor_config_make_default (self, manager);
|
||||
}
|
||||
|
||||
if (!meta_monitor_config_apply_stored (self, manager))
|
||||
meta_monitor_config_make_default (self, manager);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2029,7 +2031,11 @@ meta_monitor_config_assign_crtcs (MetaConfiguration *config,
|
||||
|
||||
all_outputs = meta_monitor_manager_get_outputs (manager,
|
||||
&n_outputs);
|
||||
g_assert (n_outputs == config->n_outputs);
|
||||
if (n_outputs != config->n_outputs)
|
||||
{
|
||||
g_hash_table_destroy (assignment.info);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < n_outputs; i++)
|
||||
{
|
||||
|
@ -49,4 +49,6 @@ void meta_monitor_config_make_persistent (MetaMonitorConfig *confi
|
||||
void meta_monitor_config_restore_previous (MetaMonitorConfig *config,
|
||||
MetaMonitorManager *manager);
|
||||
|
||||
gboolean meta_monitor_config_get_is_builtin_display_on (MetaMonitorConfig *config);
|
||||
|
||||
#endif /* META_MONITOR_CONFIG_H */
|
||||
|
@ -398,6 +398,7 @@ void meta_monitor_manager_confirm_configuration (MetaMonitorManag
|
||||
|
||||
void meta_output_parse_edid (MetaOutput *output,
|
||||
GBytes *edid);
|
||||
gboolean meta_output_is_laptop (MetaOutput *output);
|
||||
|
||||
void meta_crtc_info_free (MetaCRTCInfo *info);
|
||||
void meta_output_info_free (MetaOutputInfo *info);
|
||||
|
@ -511,14 +511,8 @@ make_display_name (MetaMonitorManager *manager,
|
||||
g_autofree char *inches = NULL;
|
||||
g_autofree char *vendor_name = NULL;
|
||||
|
||||
switch (output->connector_type)
|
||||
{
|
||||
case META_CONNECTOR_TYPE_LVDS:
|
||||
case META_CONNECTOR_TYPE_eDP:
|
||||
if (meta_output_is_laptop (output))
|
||||
return g_strdup (_("Built-in display"));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (output->width_mm > 0 && output->height_mm > 0)
|
||||
{
|
||||
@ -1464,6 +1458,21 @@ meta_output_parse_edid (MetaOutput *meta_output,
|
||||
meta_output->serial = g_strdup ("unknown");
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_output_is_laptop (MetaOutput *output)
|
||||
{
|
||||
/* FIXME: extend with better heuristics */
|
||||
switch (output->connector_type)
|
||||
{
|
||||
case META_CONNECTOR_TYPE_eDP:
|
||||
case META_CONNECTOR_TYPE_LVDS:
|
||||
case META_CONNECTOR_TYPE_DSI:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_monitor_manager_on_hotplug (MetaMonitorManager *manager)
|
||||
{
|
||||
@ -1590,3 +1599,11 @@ meta_monitor_manager_get_monitor_at_point (MetaMonitorManager *manager,
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager)
|
||||
{
|
||||
g_return_val_if_fail (META_IS_MONITOR_MANAGER (manager), FALSE);
|
||||
|
||||
return meta_monitor_config_get_is_builtin_display_on (manager->config);
|
||||
}
|
||||
|
@ -60,4 +60,7 @@ void meta_end_modal_for_plugin (MetaCompositor *compositor,
|
||||
gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
|
||||
gint64 monotonic_time);
|
||||
|
||||
void meta_compositor_flash_window (MetaCompositor *compositor,
|
||||
MetaWindow *window);
|
||||
|
||||
#endif /* META_COMPOSITOR_PRIVATE_H */
|
||||
|
@ -1249,6 +1249,48 @@ meta_compositor_flash_screen (MetaCompositor *compositor,
|
||||
clutter_actor_restore_easing_state (flash);
|
||||
}
|
||||
|
||||
static void
|
||||
window_flash_out_completed (ClutterTimeline *timeline,
|
||||
gboolean is_finished,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterActor *flash = CLUTTER_ACTOR (user_data);
|
||||
clutter_actor_destroy (flash);
|
||||
}
|
||||
|
||||
void
|
||||
meta_compositor_flash_window (MetaCompositor *compositor,
|
||||
MetaWindow *window)
|
||||
{
|
||||
ClutterActor *window_actor =
|
||||
CLUTTER_ACTOR (meta_window_get_compositor_private (window));
|
||||
ClutterActor *flash;
|
||||
ClutterTransition *transition;
|
||||
|
||||
flash = clutter_actor_new ();
|
||||
clutter_actor_set_background_color (flash, CLUTTER_COLOR_Black);
|
||||
clutter_actor_set_size (flash, window->rect.width, window->rect.height);
|
||||
clutter_actor_set_position (flash,
|
||||
window->custom_frame_extents.left,
|
||||
window->custom_frame_extents.top);
|
||||
clutter_actor_set_opacity (flash, 0);
|
||||
clutter_actor_add_child (window_actor, flash);
|
||||
|
||||
clutter_actor_save_easing_state (flash);
|
||||
clutter_actor_set_easing_mode (flash, CLUTTER_EASE_IN_QUAD);
|
||||
clutter_actor_set_easing_duration (flash, FLASH_TIME_MS);
|
||||
clutter_actor_set_opacity (flash, 192);
|
||||
|
||||
transition = clutter_actor_get_transition (flash, "opacity");
|
||||
clutter_timeline_set_auto_reverse (CLUTTER_TIMELINE (transition), TRUE);
|
||||
clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (transition), 2);
|
||||
|
||||
g_signal_connect (transition, "stopped",
|
||||
G_CALLBACK (window_flash_out_completed), flash);
|
||||
|
||||
clutter_actor_restore_easing_state (flash);
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_compositor_monotonic_time_to_server_time:
|
||||
* @display: a #MetaDisplay
|
||||
|
@ -152,6 +152,7 @@ file_loaded (GObject *source_object,
|
||||
{
|
||||
MetaBackgroundImage *image = META_BACKGROUND_IMAGE (source_object);
|
||||
GError *error = NULL;
|
||||
CoglError *catch_error = NULL;
|
||||
GTask *task;
|
||||
CoglTexture *texture;
|
||||
GdkPixbuf *pixbuf;
|
||||
@ -186,9 +187,10 @@ file_loaded (GObject *source_object,
|
||||
has_alpha ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
|
||||
row_stride,
|
||||
pixels, 0,
|
||||
NULL))
|
||||
&catch_error))
|
||||
{
|
||||
g_warning ("Failed to create texture for background");
|
||||
cogl_error_free (catch_error);
|
||||
cogl_object_unref (texture);
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <meta/util.h>
|
||||
#include <meta/meta-background.h>
|
||||
#include <meta/meta-background-image.h>
|
||||
#include "meta-background-private.h"
|
||||
@ -542,6 +543,7 @@ ensure_color_texture (MetaBackground *self)
|
||||
{
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (backend);
|
||||
CoglError *error = NULL;
|
||||
uint8_t pixels[6];
|
||||
int width, height;
|
||||
|
||||
@ -582,7 +584,13 @@ ensure_color_texture (MetaBackground *self)
|
||||
COGL_PIXEL_FORMAT_RGB_888,
|
||||
width * 3,
|
||||
pixels,
|
||||
NULL));
|
||||
&error));
|
||||
|
||||
if (error != NULL)
|
||||
{
|
||||
meta_warning ("Failed to allocate color texture: %s\n", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <meta/meta-shadow-factory.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
#include "cogl-utils.h"
|
||||
#include "region-utils.h"
|
||||
@ -707,6 +708,7 @@ make_shadow (MetaShadow *shadow,
|
||||
{
|
||||
ClutterBackend *backend = clutter_get_default_backend ();
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (backend);
|
||||
CoglError *error = NULL;
|
||||
int d = get_box_filter_size (shadow->key.radius);
|
||||
int spread = get_shadow_spread (shadow->key.radius);
|
||||
cairo_rectangle_int_t extents;
|
||||
@ -804,7 +806,13 @@ make_shadow (MetaShadow *shadow,
|
||||
(buffer +
|
||||
(y_offset - shadow->outer_border_top) * buffer_width +
|
||||
(x_offset - shadow->outer_border_left)),
|
||||
NULL));
|
||||
&error));
|
||||
|
||||
if (error)
|
||||
{
|
||||
meta_warning ("Failed to allocate shadow texture: %s\n", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
|
||||
cairo_region_destroy (row_convolve_region);
|
||||
cairo_region_destroy (column_convolve_region);
|
||||
|
@ -36,5 +36,6 @@ void meta_shaped_texture_set_fallback_size (MetaShapedTexture *stex,
|
||||
guint fallback_width,
|
||||
guint fallback_height);
|
||||
gboolean meta_shaped_texture_is_obscured (MetaShapedTexture *self);
|
||||
cairo_region_t * meta_shaped_texture_get_opaque_region (MetaShapedTexture *stex);
|
||||
|
||||
#endif
|
||||
|
@ -303,6 +303,7 @@ set_cogl_texture (MetaShapedTexture *stex,
|
||||
{
|
||||
priv->tex_width = width;
|
||||
priv->tex_height = height;
|
||||
meta_shaped_texture_set_mask_texture (stex, NULL);
|
||||
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
|
||||
g_signal_emit (stex, signals[SIZE_CHANGED], 0);
|
||||
}
|
||||
@ -789,6 +790,13 @@ meta_shaped_texture_set_opaque_region (MetaShapedTexture *stex,
|
||||
priv->opaque_region = NULL;
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_shaped_texture_get_opaque_region (MetaShapedTexture *stex)
|
||||
{
|
||||
MetaShapedTexturePrivate *priv = stex->priv;
|
||||
return priv->opaque_region;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_shaped_texture_get_image:
|
||||
* @stex: A #MetaShapedTexture
|
||||
|
@ -136,7 +136,8 @@ meta_surface_actor_wayland_get_subsurface_rect (MetaSurfaceActorWayland *self,
|
||||
MetaRectangle *rect)
|
||||
{
|
||||
MetaWaylandSurface *surface = meta_surface_actor_wayland_get_surface (self);
|
||||
CoglTexture *texture = surface->buffer->texture;
|
||||
MetaWaylandBuffer *buffer = meta_wayland_surface_get_buffer (surface);
|
||||
CoglTexture *texture = buffer->texture;
|
||||
MetaWindow *toplevel_window;
|
||||
int monitor_scale;
|
||||
float x, y;
|
||||
|
@ -102,8 +102,7 @@ detach_pixmap (MetaSurfaceActorX11 *self)
|
||||
priv->pixmap = None;
|
||||
meta_error_trap_pop (display);
|
||||
|
||||
cogl_object_unref (priv->texture);
|
||||
priv->texture = NULL;
|
||||
g_clear_pointer (&priv->texture, cogl_object_unref);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -114,14 +113,20 @@ set_pixmap (MetaSurfaceActorX11 *self,
|
||||
|
||||
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
|
||||
CoglError *error = NULL;
|
||||
CoglTexture *texture;
|
||||
|
||||
g_assert (priv->pixmap == None);
|
||||
priv->pixmap = pixmap;
|
||||
|
||||
texture = COGL_TEXTURE (cogl_texture_pixmap_x11_new (ctx, priv->pixmap, FALSE, NULL));
|
||||
texture = COGL_TEXTURE (cogl_texture_pixmap_x11_new (ctx, priv->pixmap, FALSE, &error));
|
||||
|
||||
if (G_UNLIKELY (!cogl_texture_pixmap_x11_is_using_tfp_extension (COGL_TEXTURE_PIXMAP_X11 (texture))))
|
||||
if (error != NULL)
|
||||
{
|
||||
g_warning ("Failed to allocate stex texture: %s", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
else if (G_UNLIKELY (!cogl_texture_pixmap_x11_is_using_tfp_extension (COGL_TEXTURE_PIXMAP_X11 (texture))))
|
||||
g_warning ("NOTE: Not using GLX TFP!\n");
|
||||
|
||||
priv->texture = texture;
|
||||
@ -238,6 +243,33 @@ meta_surface_actor_x11_is_visible (MetaSurfaceActor *actor)
|
||||
return is_visible (self);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_surface_actor_x11_is_opaque (MetaSurfaceActor *actor)
|
||||
{
|
||||
MetaSurfaceActorX11 *self = META_SURFACE_ACTOR_X11 (actor);
|
||||
MetaSurfaceActorX11Private *priv = meta_surface_actor_x11_get_instance_private (self);
|
||||
|
||||
/* If we're not ARGB32, then we're opaque. */
|
||||
if (!meta_surface_actor_is_argb32 (actor))
|
||||
return TRUE;
|
||||
|
||||
cairo_region_t *opaque_region = meta_surface_actor_get_opaque_region (actor);
|
||||
|
||||
/* If we have no opaque region, then no pixels are opaque. */
|
||||
if (!opaque_region)
|
||||
return FALSE;
|
||||
|
||||
MetaWindow *window = priv->window;
|
||||
cairo_rectangle_int_t client_area;
|
||||
meta_window_get_client_area_rect (window, &client_area);
|
||||
|
||||
/* Otherwise, check if our opaque region covers our entire surface. */
|
||||
if (cairo_region_contains_rectangle (opaque_region, &client_area) == CAIRO_REGION_OVERLAP_IN)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_surface_actor_x11_should_unredirect (MetaSurfaceActor *actor)
|
||||
{
|
||||
@ -255,15 +287,15 @@ meta_surface_actor_x11_should_unredirect (MetaSurfaceActor *actor)
|
||||
if (window->shape_region != NULL)
|
||||
return FALSE;
|
||||
|
||||
if (meta_surface_actor_is_argb32 (actor) && !meta_window_requested_bypass_compositor (window))
|
||||
return FALSE;
|
||||
|
||||
if (!meta_window_is_monitor_sized (window))
|
||||
return FALSE;
|
||||
|
||||
if (meta_window_requested_bypass_compositor (window))
|
||||
return TRUE;
|
||||
|
||||
if (!meta_surface_actor_x11_is_opaque (actor))
|
||||
return FALSE;
|
||||
|
||||
if (meta_window_is_override_redirect (window))
|
||||
return TRUE;
|
||||
|
||||
|
@ -25,7 +25,7 @@ struct _MetaSurfaceActorPrivate
|
||||
cairo_region_t *input_region;
|
||||
|
||||
/* Freeze/thaw accounting */
|
||||
guint needs_damage_all : 1;
|
||||
cairo_region_t *pending_damage;
|
||||
guint frozen : 1;
|
||||
};
|
||||
|
||||
@ -235,6 +235,13 @@ meta_surface_actor_set_opaque_region (MetaSurfaceActor *self,
|
||||
meta_shaped_texture_set_opaque_region (priv->texture, region);
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_surface_actor_get_opaque_region (MetaSurfaceActor *actor)
|
||||
{
|
||||
MetaSurfaceActorPrivate *priv = actor->priv;
|
||||
return meta_shaped_texture_get_opaque_region (priv->texture);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
is_frozen (MetaSurfaceActor *self)
|
||||
{
|
||||
@ -254,9 +261,8 @@ meta_surface_actor_process_damage (MetaSurfaceActor *self,
|
||||
* here on the off chance that this will stop the corresponding
|
||||
* texture_from_pixmap from being update.
|
||||
*
|
||||
* needs_damage_all tracks that some unknown damage happened while the
|
||||
* window was frozen so that when the window becomes unfrozen we can
|
||||
* issue a full window update to cover any lost damage.
|
||||
* pending_damage tracks any damage that happened while the window was
|
||||
* frozen so that when can apply it when the window becomes unfrozen.
|
||||
*
|
||||
* It should be noted that this is an unreliable mechanism since it's
|
||||
* quite likely that drivers will aim to provide a zero-copy
|
||||
@ -264,7 +270,12 @@ meta_surface_actor_process_damage (MetaSurfaceActor *self,
|
||||
* any drawing done to the window is always immediately reflected in the
|
||||
* texture regardless of damage event handling.
|
||||
*/
|
||||
priv->needs_damage_all = TRUE;
|
||||
cairo_rectangle_int_t rect = { .x = x, .y = y, .width = width, .height = height };
|
||||
|
||||
if (!priv->pending_damage)
|
||||
priv->pending_damage = cairo_region_create_rectangle (&rect);
|
||||
else
|
||||
cairo_region_union_rectangle (priv->pending_damage, &rect);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -325,16 +336,21 @@ meta_surface_actor_set_frozen (MetaSurfaceActor *self,
|
||||
|
||||
priv->frozen = frozen;
|
||||
|
||||
if (!frozen && priv->needs_damage_all)
|
||||
if (!frozen && priv->pending_damage)
|
||||
{
|
||||
/* Since we ignore damage events while a window is frozen for certain effects
|
||||
* we may need to issue an update_area() covering the whole pixmap if we
|
||||
* don't know what real damage has happened. */
|
||||
int i, n_rects = cairo_region_num_rectangles (priv->pending_damage);
|
||||
cairo_rectangle_int_t rect;
|
||||
|
||||
meta_surface_actor_process_damage (self, 0, 0,
|
||||
clutter_actor_get_width (CLUTTER_ACTOR (priv->texture)),
|
||||
clutter_actor_get_height (CLUTTER_ACTOR (priv->texture)));
|
||||
priv->needs_damage_all = FALSE;
|
||||
/* Since we ignore damage events while a window is frozen for certain effects
|
||||
* we need to apply the tracked damage now. */
|
||||
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
cairo_region_get_rectangle (priv->pending_damage, i, &rect);
|
||||
meta_surface_actor_process_damage (self, rect.x, rect.y,
|
||||
rect.width, rect.height);
|
||||
}
|
||||
g_clear_pointer (&priv->pending_damage, cairo_region_destroy);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ void meta_surface_actor_set_input_region (MetaSurfaceActor *self,
|
||||
cairo_region_t *region);
|
||||
void meta_surface_actor_set_opaque_region (MetaSurfaceActor *self,
|
||||
cairo_region_t *region);
|
||||
cairo_region_t * meta_surface_actor_get_opaque_region (MetaSurfaceActor *self);
|
||||
|
||||
void meta_surface_actor_process_damage (MetaSurfaceActor *actor,
|
||||
int x, int y, int width, int height);
|
||||
|
@ -1752,9 +1752,17 @@ build_and_scan_frame_mask (MetaWindowActor *self,
|
||||
}
|
||||
else
|
||||
{
|
||||
CoglError *error = NULL;
|
||||
|
||||
mask_texture = COGL_TEXTURE (cogl_texture_2d_new_from_data (ctx, tex_width, tex_height,
|
||||
COGL_PIXEL_FORMAT_A_8,
|
||||
stride, mask_data, NULL));
|
||||
stride, mask_data, &error));
|
||||
|
||||
if (error)
|
||||
{
|
||||
g_warning ("Failed to allocate mask texture: %s", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
}
|
||||
|
||||
meta_shaped_texture_set_mask_texture (stex, mask_texture);
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include "screen-private.h"
|
||||
#include "window-private.h"
|
||||
#include "util-private.h"
|
||||
#include "compositor/compositor-private.h"
|
||||
#include <meta/prefs.h>
|
||||
#include <meta/compositor.h>
|
||||
#ifdef HAVE_LIBCANBERRA
|
||||
@ -131,6 +132,12 @@ bell_flash_window_frame (MetaWindow *window)
|
||||
g_source_set_name_by_id (id, "[mutter] bell_unflash_frame");
|
||||
}
|
||||
|
||||
static void
|
||||
bell_flash_window (MetaWindow *window)
|
||||
{
|
||||
meta_compositor_flash_window (window->display->compositor, window);
|
||||
}
|
||||
|
||||
/**
|
||||
* bell_flash_frame:
|
||||
* @display: The display the bell event came in on
|
||||
@ -145,6 +152,8 @@ bell_flash_frame (MetaDisplay *display,
|
||||
{
|
||||
if (window && window->frame)
|
||||
bell_flash_window_frame (window);
|
||||
else if (window)
|
||||
bell_flash_window (window);
|
||||
else
|
||||
bell_flash_fullscreen (display);
|
||||
}
|
||||
@ -203,33 +212,18 @@ bell_audible_notify (MetaDisplay *display,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
meta_bell_notify (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
MetaWindow *window)
|
||||
{
|
||||
MetaWindow *window;
|
||||
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent*) xkb_ev;
|
||||
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
if (!window && display->focus_window && display->focus_window->frame)
|
||||
window = display->focus_window;
|
||||
|
||||
/* flash something */
|
||||
if (meta_prefs_get_visual_bell ())
|
||||
bell_visual_notify (display, window);
|
||||
|
||||
if (meta_prefs_bell_is_audible ())
|
||||
{
|
||||
if (!bell_audible_notify (display, window))
|
||||
{
|
||||
/* Force a classic bell if the libcanberra bell failed. */
|
||||
XkbForceDeviceBell (display->xdisplay,
|
||||
xkb_bell_event->device,
|
||||
xkb_bell_event->bell_class,
|
||||
xkb_bell_event->bell_id,
|
||||
xkb_bell_event->percent);
|
||||
}
|
||||
}
|
||||
return bell_audible_notify (display, window);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -25,15 +25,14 @@
|
||||
/**
|
||||
* meta_bell_notify:
|
||||
* @display: The display the bell event came in on
|
||||
* @xkb_ev: The bell event we just received
|
||||
* @window: The window the bell event was received on
|
||||
*
|
||||
* Gives the user some kind of visual bell; in fact, this is our response
|
||||
* to any kind of bell request, but we set it up so that we only get
|
||||
* notified about visual bells, and X deals with audible ones.
|
||||
*
|
||||
* If the configure script found we had no XKB, this does not exist.
|
||||
* Gives the user some kind of aural or visual feedback, such as a bell sound
|
||||
* or flash. What type of feedback is invoked depends on the configuration.
|
||||
* If the aural feedback could not be invoked, FALSE is returned.
|
||||
*/
|
||||
void meta_bell_notify (MetaDisplay *display, XkbAnyEvent *xkb_ev);
|
||||
gboolean meta_bell_notify (MetaDisplay *display,
|
||||
MetaWindow *window);
|
||||
|
||||
/**
|
||||
* meta_bell_set_audible:
|
||||
|
@ -1212,7 +1212,7 @@ meta_grab_op_is_moving (MetaGrabOp op)
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_grab_op_windows_are_interactable:
|
||||
* meta_display_windows_are_interactable:
|
||||
* @op: A #MetaGrabOp
|
||||
*
|
||||
* Whether windows can be interacted with.
|
||||
|
@ -94,8 +94,11 @@ typedef struct
|
||||
GHashTable *key_bindings_index;
|
||||
xkb_mod_mask_t ignored_modifier_mask;
|
||||
xkb_mod_mask_t hyper_mask;
|
||||
xkb_mod_mask_t virtual_hyper_mask;
|
||||
xkb_mod_mask_t super_mask;
|
||||
xkb_mod_mask_t virtual_super_mask;
|
||||
xkb_mod_mask_t meta_mask;
|
||||
xkb_mod_mask_t virtual_meta_mask;
|
||||
MetaKeyCombo overlay_key_combo;
|
||||
MetaResolvedKeyCombo overlay_resolved_key_combo;
|
||||
gboolean overlay_key_only_pressed;
|
||||
|
@ -185,16 +185,18 @@ reload_modmap (MetaKeyBindingManager *keys)
|
||||
struct xkb_keymap *keymap = meta_backend_get_keymap (backend);
|
||||
struct xkb_state *scratch_state;
|
||||
xkb_mod_mask_t scroll_lock_mask;
|
||||
xkb_mod_mask_t dummy_mask;
|
||||
|
||||
/* Modifiers to find. */
|
||||
struct {
|
||||
const char *name;
|
||||
xkb_mod_mask_t *mask_p;
|
||||
xkb_mod_mask_t *virtual_mask_p;
|
||||
} mods[] = {
|
||||
{ "ScrollLock", &scroll_lock_mask },
|
||||
{ "Meta", &keys->meta_mask },
|
||||
{ "Hyper", &keys->hyper_mask },
|
||||
{ "Super", &keys->super_mask },
|
||||
{ "ScrollLock", &scroll_lock_mask, &dummy_mask },
|
||||
{ "Meta", &keys->meta_mask, &keys->virtual_meta_mask },
|
||||
{ "Hyper", &keys->hyper_mask, &keys->virtual_hyper_mask },
|
||||
{ "Super", &keys->super_mask, &keys->virtual_super_mask },
|
||||
};
|
||||
|
||||
scratch_state = xkb_state_new (keymap);
|
||||
@ -203,6 +205,7 @@ reload_modmap (MetaKeyBindingManager *keys)
|
||||
for (i = 0; i < G_N_ELEMENTS (mods); i++)
|
||||
{
|
||||
xkb_mod_mask_t *mask_p = mods[i].mask_p;
|
||||
xkb_mod_mask_t *virtual_mask_p = mods[i].virtual_mask_p;
|
||||
xkb_mod_index_t idx = xkb_keymap_mod_get_index (keymap, mods[i].name);
|
||||
|
||||
if (idx != XKB_MOD_INVALID)
|
||||
@ -210,9 +213,13 @@ reload_modmap (MetaKeyBindingManager *keys)
|
||||
xkb_mod_mask_t vmodmask = (1 << idx);
|
||||
xkb_state_update_mask (scratch_state, vmodmask, 0, 0, 0, 0, 0);
|
||||
*mask_p = xkb_state_serialize_mods (scratch_state, XKB_STATE_MODS_DEPRESSED) & ~vmodmask;
|
||||
*virtual_mask_p = vmodmask;
|
||||
}
|
||||
else
|
||||
*mask_p = 0;
|
||||
{
|
||||
*mask_p = 0;
|
||||
*virtual_mask_p = 0;
|
||||
}
|
||||
}
|
||||
|
||||
xkb_state_unref (scratch_state);
|
||||
@ -897,6 +904,9 @@ meta_change_button_grab (MetaKeyBindingManager *keys,
|
||||
int button,
|
||||
int modmask)
|
||||
{
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
|
||||
Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
|
||||
|
||||
@ -969,9 +979,6 @@ meta_display_grab_window_buttons (MetaDisplay *display,
|
||||
{
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
/* Grab Alt + button1 for moving window.
|
||||
* Grab Alt + button2 for resizing window.
|
||||
* Grab Alt + button3 for popping up window menu.
|
||||
@ -1008,9 +1015,6 @@ meta_display_ungrab_window_buttons (MetaDisplay *display,
|
||||
{
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
if (keys->window_grab_modifiers == 0)
|
||||
return;
|
||||
|
||||
@ -1037,9 +1041,6 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
|
||||
{
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
/* Grab button 1 for activating unfocused windows */
|
||||
meta_verbose ("Grabbing unfocused window buttons for %s\n", window->desc);
|
||||
|
||||
@ -1079,9 +1080,6 @@ meta_display_ungrab_focus_window_button (MetaDisplay *display,
|
||||
{
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
meta_verbose ("Ungrabbing unfocused window buttons for %s\n", window->desc);
|
||||
|
||||
if (!window->have_focus_click_grab)
|
||||
@ -1161,6 +1159,9 @@ meta_change_keygrab (MetaKeyBindingManager *keys,
|
||||
XISetMask (mask.mask, XI_KeyPress);
|
||||
XISetMask (mask.mask, XI_KeyRelease);
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
|
||||
Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
|
||||
|
||||
@ -1275,11 +1276,6 @@ meta_screen_change_keygrabs (MetaScreen *screen,
|
||||
void
|
||||
meta_screen_grab_keys (MetaScreen *screen)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
|
||||
if (!META_IS_BACKEND_X11 (backend))
|
||||
return;
|
||||
|
||||
if (screen->keys_grabbed)
|
||||
return;
|
||||
|
||||
@ -1313,10 +1309,6 @@ meta_window_grab_keys (MetaWindow *window)
|
||||
MetaDisplay *display = window->display;
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
|
||||
/* Under Wayland, we don't need to grab at all. */
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
if (window->all_keys_grabbed)
|
||||
return;
|
||||
|
||||
@ -1384,12 +1376,11 @@ guint
|
||||
meta_display_grab_accelerator (MetaDisplay *display,
|
||||
const char *accelerator)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
MetaKeyBinding *binding;
|
||||
MetaKeyGrab *grab;
|
||||
MetaKeyCombo combo;
|
||||
MetaResolvedKeyCombo resolved_combo;
|
||||
MetaKeyCombo combo = { 0 };
|
||||
MetaResolvedKeyCombo resolved_combo = { 0 };
|
||||
|
||||
if (!meta_parse_accelerator (accelerator, &combo))
|
||||
{
|
||||
@ -1408,8 +1399,7 @@ meta_display_grab_accelerator (MetaDisplay *display,
|
||||
if (get_keybinding (keys, &resolved_combo))
|
||||
return META_KEYBINDING_ACTION_NONE;
|
||||
|
||||
if (META_IS_BACKEND_X11 (backend))
|
||||
meta_change_keygrab (keys, display->screen->xroot, TRUE, &resolved_combo);
|
||||
meta_change_keygrab (keys, display->screen->xroot, TRUE, &resolved_combo);
|
||||
|
||||
grab = g_new0 (MetaKeyGrab, 1);
|
||||
grab->action = next_dynamic_keybinding_action ();
|
||||
@ -1434,7 +1424,6 @@ gboolean
|
||||
meta_display_ungrab_accelerator (MetaDisplay *display,
|
||||
guint action)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||
MetaKeyBinding *binding;
|
||||
MetaKeyGrab *grab;
|
||||
@ -1454,8 +1443,7 @@ meta_display_ungrab_accelerator (MetaDisplay *display,
|
||||
{
|
||||
guint32 index_key;
|
||||
|
||||
if (META_IS_BACKEND_X11 (backend))
|
||||
meta_change_keygrab (keys, display->screen->xroot, FALSE, &binding->resolved_combo);
|
||||
meta_change_keygrab (keys, display->screen->xroot, FALSE, &binding->resolved_combo);
|
||||
|
||||
index_key = key_combo_key (&binding->resolved_combo);
|
||||
g_hash_table_remove (keys->key_bindings_index, GINT_TO_POINTER (index_key));
|
||||
@ -1482,6 +1470,9 @@ grab_keyboard (Window xwindow,
|
||||
XISetMask (mask.mask, XI_KeyPress);
|
||||
XISetMask (mask.mask, XI_KeyRelease);
|
||||
|
||||
if (meta_is_wayland_compositor ())
|
||||
return TRUE;
|
||||
|
||||
/* Grab the keyboard, so we get key releases and all key
|
||||
* presses
|
||||
*/
|
||||
@ -1513,6 +1504,9 @@ grab_keyboard (Window xwindow,
|
||||
static void
|
||||
ungrab_keyboard (guint32 timestamp)
|
||||
{
|
||||
if (meta_is_wayland_compositor ())
|
||||
return;
|
||||
|
||||
MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
|
||||
Display *xdisplay = meta_backend_x11_get_xdisplay (backend);
|
||||
|
||||
@ -1525,10 +1519,6 @@ meta_window_grab_all_keys (MetaWindow *window,
|
||||
{
|
||||
Window grabwindow;
|
||||
gboolean retval;
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
|
||||
if (!META_IS_BACKEND_X11 (backend))
|
||||
return TRUE;
|
||||
|
||||
if (window->all_keys_grabbed)
|
||||
return FALSE;
|
||||
@ -1590,11 +1580,6 @@ meta_display_freeze_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||
void
|
||||
meta_display_ungrab_keyboard (MetaDisplay *display, guint32 timestamp)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
|
||||
if (!META_IS_BACKEND_X11 (backend))
|
||||
return;
|
||||
|
||||
ungrab_keyboard (timestamp);
|
||||
}
|
||||
|
||||
|
@ -168,6 +168,7 @@ static gboolean opt_disable_sm;
|
||||
static gboolean opt_sync;
|
||||
#ifdef HAVE_WAYLAND
|
||||
static gboolean opt_wayland;
|
||||
static gboolean opt_nested;
|
||||
#endif
|
||||
#ifdef HAVE_NATIVE_BACKEND
|
||||
static gboolean opt_display_server;
|
||||
@ -216,6 +217,12 @@ static GOptionEntry meta_options[] = {
|
||||
N_("Run as a wayland compositor"),
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"nested", 0, 0, G_OPTION_ARG_NONE,
|
||||
&opt_nested,
|
||||
N_("Run as a nested compositor"),
|
||||
NULL
|
||||
},
|
||||
#endif
|
||||
#ifdef HAVE_NATIVE_BACKEND
|
||||
{
|
||||
@ -366,21 +373,30 @@ check_for_wayland_session_type (void)
|
||||
static void
|
||||
init_backend (void)
|
||||
{
|
||||
gboolean session_type_is_wayland = FALSE;
|
||||
#ifdef HAVE_WAYLAND
|
||||
gboolean run_as_wayland_compositor = opt_wayland;
|
||||
|
||||
#if defined(HAVE_WAYLAND) && defined(HAVE_NATIVE_BACKEND)
|
||||
session_type_is_wayland = check_for_wayland_session_type ();
|
||||
#endif
|
||||
#ifdef HAVE_NATIVE_BACKEND
|
||||
if (opt_nested && opt_display_server)
|
||||
{
|
||||
meta_warning ("Can't run both as nested and as a display server\n");
|
||||
meta_exit (META_EXIT_ERROR);
|
||||
}
|
||||
|
||||
#if defined(CLUTTER_WINDOWING_EGL) && defined(HAVE_NATIVE_BACKEND)
|
||||
if (opt_display_server || session_type_is_wayland)
|
||||
if (!run_as_wayland_compositor)
|
||||
run_as_wayland_compositor = check_for_wayland_session_type ();
|
||||
|
||||
#ifdef CLUTTER_WINDOWING_EGL
|
||||
if (opt_display_server || (run_as_wayland_compositor && !opt_nested))
|
||||
clutter_set_windowing_backend (CLUTTER_WINDOWING_EGL);
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
clutter_set_windowing_backend (CLUTTER_WINDOWING_X11);
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
meta_set_is_wayland_compositor (opt_wayland || session_type_is_wayland);
|
||||
meta_set_is_wayland_compositor (run_as_wayland_compositor);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -326,6 +326,10 @@ gboolean
|
||||
meta_parse_accelerator (const char *accel,
|
||||
MetaKeyCombo *combo)
|
||||
{
|
||||
g_return_val_if_fail (combo != NULL, FALSE);
|
||||
|
||||
*combo = (MetaKeyCombo) { 0 };
|
||||
|
||||
if (!accel[0] || strcmp (accel, "disabled") == 0)
|
||||
return TRUE;
|
||||
|
||||
@ -336,7 +340,11 @@ gboolean
|
||||
meta_parse_modifier (const char *accel,
|
||||
MetaVirtualModifier *mask)
|
||||
{
|
||||
MetaKeyCombo combo;
|
||||
MetaKeyCombo combo = { 0 };
|
||||
|
||||
g_return_val_if_fail (mask != NULL, FALSE);
|
||||
|
||||
*mask = 0;
|
||||
|
||||
if (accel == NULL || !accel[0] || strcmp (accel, "disabled") == 0)
|
||||
return TRUE;
|
||||
|
@ -1233,7 +1233,8 @@ root_cursor_prepare_at (MetaCursorSprite *cursor_sprite,
|
||||
monitor = meta_screen_get_monitor_for_point (screen, x, y);
|
||||
|
||||
/* Reload the cursor texture if the scale has changed. */
|
||||
meta_cursor_sprite_set_theme_scale (cursor_sprite, monitor->scale);
|
||||
if (monitor)
|
||||
meta_cursor_sprite_set_theme_scale (cursor_sprite, monitor->scale);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1061,7 +1061,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
for (tmp = g_list_last(stack->sorted); tmp != NULL; tmp = tmp->prev)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
Window top_level_window;
|
||||
guint64 top_level_window;
|
||||
guint64 stack_id;
|
||||
|
||||
if (w->unmanaging)
|
||||
@ -1100,7 +1100,8 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
|
||||
/* The screen guard window sits above all hidden windows and acts as
|
||||
* a barrier to input reaching these windows. */
|
||||
g_array_append_val (x11_hidden_stack_ids, stack->screen->guard_window);
|
||||
guint64 guard_window_id = stack->screen->guard_window;
|
||||
g_array_append_val (x11_hidden_stack_ids, guard_window_id);
|
||||
|
||||
/* Sync to server */
|
||||
|
||||
|
@ -93,7 +93,7 @@ G_DECLARE_DERIVABLE_TYPE (MetaStartupNotificationSequence,
|
||||
|
||||
typedef struct {
|
||||
gchar *id;
|
||||
time_t timestamp;
|
||||
gint64 timestamp;
|
||||
} MetaStartupNotificationSequencePrivate;
|
||||
|
||||
struct _MetaStartupNotificationSequenceClass {
|
||||
@ -385,9 +385,12 @@ meta_startup_notification_sequence_x11_class_init (MetaStartupNotificationSequen
|
||||
static MetaStartupNotificationSequence *
|
||||
meta_startup_notification_sequence_x11_new (SnStartupSequence *seq)
|
||||
{
|
||||
gint64 timestamp;
|
||||
|
||||
timestamp = sn_startup_sequence_get_timestamp (seq) * 1000;
|
||||
return g_object_new (META_TYPE_STARTUP_NOTIFICATION_SEQUENCE_X11,
|
||||
"id", sn_startup_sequence_get_id (seq),
|
||||
"timestamp", sn_startup_sequence_get_timestamp (seq) * 1000,
|
||||
"timestamp", timestamp,
|
||||
"seq", seq,
|
||||
NULL);
|
||||
}
|
||||
|
105
src/core/util.c
105
src/core/util.c
@ -49,6 +49,9 @@ meta_topic_real_valist (MetaDebugTopic topic,
|
||||
va_list args) G_GNUC_PRINTF(2, 0);
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
meta_later_remove_from_list (guint later_id, GSList **laters_list);
|
||||
|
||||
static gint verbose_topics = 0;
|
||||
static gboolean is_debugging = FALSE;
|
||||
static gboolean replace_current = FALSE;
|
||||
@ -739,7 +742,14 @@ typedef struct
|
||||
gboolean run_once;
|
||||
} MetaLater;
|
||||
|
||||
static GSList *laters = NULL;
|
||||
static GSList *laters[] = {
|
||||
NULL, /* META_LATER_RESIZE */
|
||||
NULL, /* META_LATER_CALC_SHOWING */
|
||||
NULL, /* META_LATER_CHECK_FULLSCREEN */
|
||||
NULL, /* META_LATER_SYNC_STACK */
|
||||
NULL, /* META_LATER_BEFORE_REDRAW */
|
||||
NULL, /* META_LATER_IDLE */
|
||||
};
|
||||
/* This is a dummy timeline used to get the Clutter master clock running */
|
||||
static ClutterTimeline *later_timeline;
|
||||
static guint later_repaint_func = 0;
|
||||
@ -772,25 +782,14 @@ destroy_later (MetaLater *later)
|
||||
unref_later (later);
|
||||
}
|
||||
|
||||
/* Used to sort the list of laters with the highest priority
|
||||
* functions first.
|
||||
*/
|
||||
static int
|
||||
compare_laters (gconstpointer a,
|
||||
gconstpointer b)
|
||||
{
|
||||
return ((const MetaLater *)a)->when - ((const MetaLater *)b)->when;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
run_repaint_laters (gpointer data)
|
||||
static void
|
||||
run_repaint_laters (GSList **laters_list)
|
||||
{
|
||||
GSList *laters_copy;
|
||||
GSList *l;
|
||||
gboolean keep_timeline_running = FALSE;
|
||||
|
||||
laters_copy = NULL;
|
||||
for (l = laters; l; l = l->next)
|
||||
for (l = *laters_list; l; l = l->next)
|
||||
{
|
||||
MetaLater *later = l->data;
|
||||
if (later->source == 0 ||
|
||||
@ -806,22 +805,41 @@ run_repaint_laters (gpointer data)
|
||||
{
|
||||
MetaLater *later = l->data;
|
||||
|
||||
if (later->func && later->func (later->data))
|
||||
if (!later->func || !later->func (later->data))
|
||||
meta_later_remove_from_list (later->id, laters_list);
|
||||
unref_later (later);
|
||||
}
|
||||
|
||||
g_slist_free (laters_copy);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
run_all_repaint_laters (gpointer data)
|
||||
{
|
||||
guint i;
|
||||
GSList *l;
|
||||
gboolean keep_timeline_running = FALSE;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (laters); i++)
|
||||
{
|
||||
run_repaint_laters (&laters[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (laters); i++)
|
||||
{
|
||||
for (l = laters[i]; l; l = l->next)
|
||||
{
|
||||
MetaLater *later = l->data;
|
||||
|
||||
if (later->source == 0)
|
||||
keep_timeline_running = TRUE;
|
||||
}
|
||||
else
|
||||
meta_later_remove (later->id);
|
||||
unref_later (later);
|
||||
}
|
||||
|
||||
if (!keep_timeline_running)
|
||||
clutter_timeline_stop (later_timeline);
|
||||
|
||||
g_slist_free (laters_copy);
|
||||
|
||||
/* Just keep the repaint func around - it's cheap if the list is empty */
|
||||
/* Just keep the repaint func around - it's cheap if the lists are empty */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -832,7 +850,7 @@ ensure_later_repaint_func (void)
|
||||
later_timeline = clutter_timeline_new (G_MAXUINT);
|
||||
|
||||
if (later_repaint_func == 0)
|
||||
later_repaint_func = clutter_threads_add_repaint_func (run_repaint_laters,
|
||||
later_repaint_func = clutter_threads_add_repaint_func (run_all_repaint_laters,
|
||||
NULL, NULL);
|
||||
|
||||
/* Make sure the repaint function gets run */
|
||||
@ -888,7 +906,7 @@ meta_later_add (MetaLaterType when,
|
||||
later->data = data;
|
||||
later->notify = notify;
|
||||
|
||||
laters = g_slist_insert_sorted (laters, later, compare_laters);
|
||||
laters[when] = g_slist_prepend (laters[when], later);
|
||||
|
||||
switch (when)
|
||||
{
|
||||
@ -920,6 +938,29 @@ meta_later_add (MetaLaterType when,
|
||||
return later->id;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_later_remove_from_list (guint later_id, GSList **laters_list)
|
||||
{
|
||||
GSList *l;
|
||||
|
||||
for (l = *laters_list; l; l = l->next)
|
||||
{
|
||||
MetaLater *later = l->data;
|
||||
|
||||
if (later->id == later_id)
|
||||
{
|
||||
*laters_list = g_slist_delete_link (*laters_list, l);
|
||||
/* If this was a "repaint func" later, we just let the
|
||||
* repaint func run and get removed
|
||||
*/
|
||||
destroy_later (later);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* meta_later_remove:
|
||||
* @later_id: the integer ID returned from meta_later_add()
|
||||
@ -929,20 +970,12 @@ meta_later_add (MetaLaterType when,
|
||||
void
|
||||
meta_later_remove (guint later_id)
|
||||
{
|
||||
GSList *l;
|
||||
guint i;
|
||||
|
||||
for (l = laters; l; l = l->next)
|
||||
for (i = 0; i < G_N_ELEMENTS (laters); i++)
|
||||
{
|
||||
MetaLater *later = l->data;
|
||||
if (later->id == later_id)
|
||||
{
|
||||
laters = g_slist_delete_link (laters, l);
|
||||
/* If this was a "repaint func" later, we just let the
|
||||
* repaint func run and get removed
|
||||
*/
|
||||
destroy_later (later);
|
||||
return;
|
||||
}
|
||||
if (meta_later_remove_from_list (later_id, &laters[i]))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -726,7 +726,7 @@ client_window_should_be_mapped (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||
!window->surface->buffer)
|
||||
!meta_wayland_surface_get_buffer (window->surface))
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
@ -761,12 +761,18 @@ sync_client_window_mapped (MetaWindow *window)
|
||||
static void
|
||||
meta_window_update_desc (MetaWindow *window)
|
||||
{
|
||||
g_autofree gchar *title = NULL;
|
||||
|
||||
g_clear_pointer (&window->desc, g_free);
|
||||
|
||||
if (window->title)
|
||||
title = g_utf8_substring (window->title, 0,
|
||||
MIN (10, g_utf8_strlen (window->title, -1)));
|
||||
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_X11)
|
||||
{
|
||||
if (window->title)
|
||||
window->desc = g_strdup_printf ("0x%lx (%.10s)", window->xwindow, window->title);
|
||||
if (title)
|
||||
window->desc = g_strdup_printf ("0x%lx (%s)", window->xwindow, title);
|
||||
else
|
||||
window->desc = g_strdup_printf ("0x%lx", window->xwindow);
|
||||
}
|
||||
@ -774,8 +780,8 @@ meta_window_update_desc (MetaWindow *window)
|
||||
{
|
||||
guint64 small_stamp = window->stamp - G_GUINT64_CONSTANT(0x100000000);
|
||||
|
||||
if (window->title)
|
||||
window->desc = g_strdup_printf ("W%" G_GUINT64_FORMAT " (%.10s)", small_stamp, window->title);
|
||||
if (title)
|
||||
window->desc = g_strdup_printf ("W%" G_GUINT64_FORMAT " (%s)", small_stamp, title);
|
||||
else
|
||||
window->desc = g_strdup_printf ("W%" G_GUINT64_FORMAT , small_stamp);
|
||||
}
|
||||
@ -1259,6 +1265,7 @@ meta_window_unmanage (MetaWindow *window,
|
||||
GList *tmp;
|
||||
|
||||
meta_verbose ("Unmanaging %s\n", window->desc);
|
||||
window->unmanaging = TRUE;
|
||||
|
||||
#ifdef HAVE_WAYLAND
|
||||
/* This needs to happen for both Wayland and XWayland clients,
|
||||
@ -1286,8 +1293,6 @@ meta_window_unmanage (MetaWindow *window,
|
||||
|
||||
meta_display_unregister_stamp (window->display, window->stamp);
|
||||
|
||||
window->unmanaging = TRUE;
|
||||
|
||||
if (meta_prefs_get_attach_modal_dialogs ())
|
||||
{
|
||||
GList *attached_children = NULL, *iter;
|
||||
@ -1554,7 +1559,7 @@ meta_window_should_be_showing (MetaWindow *window)
|
||||
{
|
||||
#ifdef HAVE_WAYLAND
|
||||
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||
!window->surface->buffer)
|
||||
!meta_wayland_surface_get_buffer (window->surface))
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
|
@ -520,7 +520,6 @@ void meta_frame_borders_clear (MetaFrameBorders *self);
|
||||
* @META_LAYER_TOP: Top layer
|
||||
* @META_LAYER_DOCK: Dock layer
|
||||
* @META_LAYER_FULLSCREEN: Fullscreen layer
|
||||
* @META_LAYER_FOCUSED_WINDOW: Focused window layer
|
||||
* @META_LAYER_OVERRIDE_REDIRECT: Override-redirect layer
|
||||
* @META_LAYER_LAST: Marks the end of the #MetaStackLayer enumeration
|
||||
*
|
||||
@ -535,7 +534,6 @@ typedef enum
|
||||
META_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
|
||||
META_LAYER_DOCK = 4,
|
||||
META_LAYER_FULLSCREEN = 5,
|
||||
META_LAYER_FOCUSED_WINDOW = 6,
|
||||
META_LAYER_OVERRIDE_REDIRECT = 7,
|
||||
META_LAYER_LAST = 8
|
||||
} MetaStackLayer;
|
||||
|
@ -34,4 +34,6 @@ MetaMonitorManager *meta_monitor_manager_get (void);
|
||||
gint meta_monitor_manager_get_monitor_for_output (MetaMonitorManager *manager,
|
||||
guint id);
|
||||
|
||||
gboolean meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager);
|
||||
|
||||
#endif /* META_MONITOR_MANAGER_H */
|
||||
|
@ -1136,10 +1136,10 @@ main (int argc, char **argv)
|
||||
|
||||
/* Then initalize mutter with a different set of arguments */
|
||||
|
||||
char *fake_args[] = { NULL, (char *)"--wayland" };
|
||||
char *fake_args[] = { NULL, (char *)"--wayland", (char *)"--nested" };
|
||||
fake_args[0] = argv[0];
|
||||
char **fake_argv = fake_args;
|
||||
int fake_argc = 2;
|
||||
int fake_argc = G_N_ELEMENTS (fake_args);
|
||||
|
||||
char *basename = g_path_get_basename (argv[0]);
|
||||
char *dirname = g_path_get_dirname (argv[0]);
|
||||
|
238
src/tests/unit-tests.c
Normal file
238
src/tests/unit-tests.c
Normal file
@ -0,0 +1,238 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015 Red Hat, Inc.
|
||||
*
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <meta/main.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
#include "compositor/meta-plugin-manager.h"
|
||||
|
||||
typedef struct _MetaTestLaterOrderCallbackData
|
||||
{
|
||||
GMainLoop *loop; /* Loop to terminate when done. */
|
||||
int callback_num; /* Callback number integer. */
|
||||
int *expected_callback_num; /* Pointer to the expected callback number. */
|
||||
} MetaTestLaterOrderCallbackData;
|
||||
|
||||
static gboolean
|
||||
test_later_order_callback (gpointer user_data)
|
||||
{
|
||||
MetaTestLaterOrderCallbackData *data = user_data;
|
||||
|
||||
g_assert_cmpint (data->callback_num, ==, *data->expected_callback_num);
|
||||
|
||||
if (*data->expected_callback_num == 0)
|
||||
g_main_loop_quit (data->loop);
|
||||
else
|
||||
(*data->expected_callback_num)--;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_test_util_later_order (void)
|
||||
{
|
||||
GMainLoop *loop;
|
||||
int expected_callback_num;
|
||||
int i;
|
||||
const int num_callbacks = 3;
|
||||
MetaTestLaterOrderCallbackData callback_data[num_callbacks];
|
||||
|
||||
loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
/* Schedule three BEFORE_DRAW callbacks each with its own number associated
|
||||
* with it.
|
||||
*/
|
||||
for (i = 0; i < num_callbacks; i++)
|
||||
{
|
||||
callback_data[i] = (MetaTestLaterOrderCallbackData) {
|
||||
.loop = loop,
|
||||
.callback_num = i,
|
||||
.expected_callback_num = &expected_callback_num,
|
||||
};
|
||||
meta_later_add (META_LATER_BEFORE_REDRAW,
|
||||
test_later_order_callback,
|
||||
&callback_data[i],
|
||||
NULL);
|
||||
}
|
||||
|
||||
/* Check that the callbacks are invoked in the opposite order that they were
|
||||
* scheduled. Each callback will decrease the number by 1 after it checks the
|
||||
* validity.
|
||||
*/
|
||||
expected_callback_num = num_callbacks - 1;
|
||||
g_main_loop_run (loop);
|
||||
g_assert_cmpint (expected_callback_num, ==, 0);
|
||||
g_main_loop_unref (loop);
|
||||
}
|
||||
|
||||
typedef enum _MetaTestLaterScheduleFromLaterState
|
||||
{
|
||||
META_TEST_LATER_EXPECT_CALC_SHOWING,
|
||||
META_TEST_LATER_EXPECT_SYNC_STACK,
|
||||
META_TEST_LATER_EXPECT_BEFORE_REDRAW,
|
||||
META_TEST_LATER_FINISHED,
|
||||
} MetaTestLaterScheduleFromLaterState;
|
||||
|
||||
typedef struct _MetaTestLaterScheduleFromLaterData
|
||||
{
|
||||
GMainLoop *loop;
|
||||
MetaTestLaterScheduleFromLaterState state;
|
||||
} MetaTestLaterScheduleFromLaterData;
|
||||
|
||||
static gboolean
|
||||
test_later_schedule_from_later_sync_stack_callback (gpointer user_data);
|
||||
|
||||
static gboolean
|
||||
test_later_schedule_from_later_calc_showing_callback (gpointer user_data)
|
||||
{
|
||||
MetaTestLaterScheduleFromLaterData *data = user_data;
|
||||
|
||||
g_assert_cmpint (data->state, ==, META_TEST_LATER_EXPECT_CALC_SHOWING);
|
||||
|
||||
meta_later_add (META_LATER_SYNC_STACK,
|
||||
test_later_schedule_from_later_sync_stack_callback,
|
||||
data,
|
||||
NULL);
|
||||
|
||||
data->state = META_TEST_LATER_EXPECT_SYNC_STACK;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
test_later_schedule_from_later_sync_stack_callback (gpointer user_data)
|
||||
{
|
||||
MetaTestLaterScheduleFromLaterData *data = user_data;
|
||||
|
||||
g_assert_cmpint (data->state, ==, META_TEST_LATER_EXPECT_SYNC_STACK);
|
||||
|
||||
data->state = META_TEST_LATER_EXPECT_BEFORE_REDRAW;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
test_later_schedule_from_later_before_redraw_callback (gpointer user_data)
|
||||
{
|
||||
MetaTestLaterScheduleFromLaterData *data = user_data;
|
||||
|
||||
g_assert_cmpint (data->state, ==, META_TEST_LATER_EXPECT_BEFORE_REDRAW);
|
||||
data->state = META_TEST_LATER_FINISHED;
|
||||
g_main_loop_quit (data->loop);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_test_util_later_schedule_from_later (void)
|
||||
{
|
||||
MetaTestLaterScheduleFromLaterData data;
|
||||
|
||||
data.loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
/* Test that scheduling a MetaLater with 'when' being later than the one being
|
||||
* invoked causes it to be invoked before any callback with a later 'when'
|
||||
* value being invoked.
|
||||
*
|
||||
* The first and last callback is queued here. The one to be invoked in
|
||||
* between is invoked in test_later_schedule_from_later_calc_showing_callback.
|
||||
*/
|
||||
meta_later_add (META_LATER_CALC_SHOWING,
|
||||
test_later_schedule_from_later_calc_showing_callback,
|
||||
&data,
|
||||
NULL);
|
||||
meta_later_add (META_LATER_BEFORE_REDRAW,
|
||||
test_later_schedule_from_later_before_redraw_callback,
|
||||
&data,
|
||||
NULL);
|
||||
|
||||
data.state = META_TEST_LATER_EXPECT_CALC_SHOWING;
|
||||
|
||||
g_main_loop_run (data.loop);
|
||||
g_main_loop_unref (data.loop);
|
||||
|
||||
g_assert_cmpint (data.state, ==, META_TEST_LATER_FINISHED);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
run_tests (gpointer data)
|
||||
{
|
||||
gboolean ret;
|
||||
|
||||
ret = g_test_run ();
|
||||
|
||||
meta_quit (ret != 0);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
init_tests (int argc, char **argv)
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=");
|
||||
|
||||
g_test_add_func ("/util/meta-later/order", meta_test_util_later_order);
|
||||
g_test_add_func ("/util/meta-later/schedule-from-later",
|
||||
meta_test_util_later_schedule_from_later);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
GOptionContext *ctx;
|
||||
GError *error = NULL;
|
||||
|
||||
ctx = g_option_context_new (NULL);
|
||||
|
||||
if (!g_option_context_parse (ctx,
|
||||
&argc, &argv, &error))
|
||||
{
|
||||
g_printerr ("%s", error->message);
|
||||
return 1;
|
||||
}
|
||||
|
||||
g_option_context_free (ctx);
|
||||
|
||||
const char *fake_args[] = { NULL, "--wayland", "--nested" };
|
||||
fake_args[0] = argv[0];
|
||||
char **fake_argv = (char**)fake_args;
|
||||
int fake_argc = G_N_ELEMENTS (fake_args);
|
||||
|
||||
ctx = meta_get_option_context ();
|
||||
if (!g_option_context_parse (ctx, &fake_argc, &fake_argv, &error))
|
||||
{
|
||||
g_printerr ("mutter: %s\n", error->message);
|
||||
exit (1);
|
||||
}
|
||||
g_option_context_free (ctx);
|
||||
|
||||
meta_plugin_manager_load ("default");
|
||||
|
||||
meta_init ();
|
||||
meta_register_with_session ();
|
||||
|
||||
init_tests (argc, argv);
|
||||
g_idle_add (run_tests, NULL);
|
||||
|
||||
return meta_run ();
|
||||
}
|
@ -1114,6 +1114,7 @@ handle_button_release_event (MetaUIFrame *frame,
|
||||
{
|
||||
Display *display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
frame->frames->current_grab_op = META_GRAB_OP_NONE;
|
||||
meta_core_end_grab_op (display, event->time);
|
||||
|
||||
/* We only handle the releases we handled the presses for (things
|
||||
@ -1292,7 +1293,7 @@ get_visible_frame_border_region (MetaUIFrame *frame)
|
||||
MetaFrameFlags flags;
|
||||
MetaFrameType type;
|
||||
MetaFrameBorders borders;
|
||||
MetaRectangle frame_rect = frame->meta_window->rect;
|
||||
MetaRectangle buffer_rect = frame->meta_window->buffer_rect;
|
||||
|
||||
flags = meta_frame_get_flags (frame->meta_window->frame);
|
||||
type = meta_window_get_frame_type (frame->meta_window);
|
||||
@ -1301,19 +1302,19 @@ get_visible_frame_border_region (MetaUIFrame *frame)
|
||||
type, frame->text_height, flags,
|
||||
&borders);
|
||||
|
||||
/* Visible frame rect */
|
||||
area.x = borders.invisible.left;
|
||||
area.y = borders.invisible.top;
|
||||
area.width = frame_rect.width;
|
||||
area.height = frame_rect.height;
|
||||
/* Frame rect */
|
||||
area.x = 0;
|
||||
area.y = 0;
|
||||
area.width = buffer_rect.width;
|
||||
area.height = buffer_rect.height;
|
||||
|
||||
frame_border = cairo_region_create_rectangle (&area);
|
||||
|
||||
/* Client rect */
|
||||
area.x += borders.visible.left;
|
||||
area.y += borders.visible.top;
|
||||
area.width -= borders.visible.left + borders.visible.right;
|
||||
area.height -= borders.visible.top + borders.visible.bottom;
|
||||
area.x += borders.total.left;
|
||||
area.y += borders.total.top;
|
||||
area.width -= borders.total.left + borders.total.right;
|
||||
area.height -= borders.total.top + borders.total.bottom;
|
||||
|
||||
/* Visible frame border */
|
||||
cairo_region_subtract_rectangle (frame_border, &area);
|
||||
@ -1403,6 +1404,13 @@ meta_frames_draw (GtkWidget *widget,
|
||||
gdk_cairo_region (cr, region);
|
||||
cairo_clip (cr);
|
||||
|
||||
/* The target may be cleared to black or transparent, depending
|
||||
* on the frame's visual; we don't want decorations to appear
|
||||
* differently when the theme's decorations aren't fully opaque,
|
||||
* so clear to black first
|
||||
*/
|
||||
cairo_paint (cr);
|
||||
|
||||
meta_ui_frame_paint (frame, cr);
|
||||
cairo_region_destroy (region);
|
||||
|
||||
|
@ -992,6 +992,7 @@ create_style_context (GType widget_type,
|
||||
...)
|
||||
{
|
||||
GtkStyleContext *style;
|
||||
GtkStateFlags state;
|
||||
GtkWidgetPath *path;
|
||||
const char *name;
|
||||
va_list ap;
|
||||
@ -1010,6 +1011,19 @@ create_style_context (GType widget_type,
|
||||
if (object_name)
|
||||
gtk_widget_path_iter_set_object_name (path, -1, object_name);
|
||||
|
||||
state = gtk_style_context_get_state (style);
|
||||
if (meta_get_locale_direction() == META_LOCALE_DIRECTION_RTL)
|
||||
{
|
||||
state |= GTK_STATE_FLAG_DIR_RTL;
|
||||
state &= ~GTK_STATE_FLAG_DIR_LTR;
|
||||
}
|
||||
else
|
||||
{
|
||||
state |= GTK_STATE_FLAG_DIR_LTR;
|
||||
state &= ~GTK_STATE_FLAG_DIR_RTL;
|
||||
}
|
||||
gtk_style_context_set_state (style, state);
|
||||
|
||||
va_start (ap, first_class);
|
||||
for (name = first_class; name; name = va_arg (ap, const char *))
|
||||
gtk_widget_path_iter_add_class (path, -1, name);
|
||||
|
@ -30,6 +30,17 @@
|
||||
#include <cogl/cogl-wayland-server.h>
|
||||
#include <meta/util.h>
|
||||
|
||||
enum
|
||||
{
|
||||
RESOURCE_DESTROYED,
|
||||
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
guint signals[LAST_SIGNAL];
|
||||
|
||||
G_DEFINE_TYPE (MetaWaylandBuffer, meta_wayland_buffer, G_TYPE_OBJECT);
|
||||
|
||||
static void
|
||||
meta_wayland_buffer_destroy_handler (struct wl_listener *listener,
|
||||
void *data)
|
||||
@ -37,44 +48,9 @@ meta_wayland_buffer_destroy_handler (struct wl_listener *listener,
|
||||
MetaWaylandBuffer *buffer =
|
||||
wl_container_of (listener, buffer, destroy_listener);
|
||||
|
||||
wl_signal_emit (&buffer->destroy_signal, buffer);
|
||||
g_slice_free (MetaWaylandBuffer, buffer);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_buffer_ref (MetaWaylandBuffer *buffer)
|
||||
{
|
||||
buffer->ref_count++;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_buffer_unref (MetaWaylandBuffer *buffer)
|
||||
{
|
||||
buffer->ref_count--;
|
||||
|
||||
if (buffer->ref_count == 0)
|
||||
{
|
||||
g_warn_if_fail (buffer->use_count == 0);
|
||||
|
||||
g_clear_pointer (&buffer->texture, cogl_object_unref);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_buffer_ref_use_count (MetaWaylandBuffer *buffer)
|
||||
{
|
||||
buffer->use_count++;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_buffer_unref_use_count (MetaWaylandBuffer *buffer)
|
||||
{
|
||||
g_return_if_fail (buffer->use_count != 0);
|
||||
|
||||
buffer->use_count--;
|
||||
|
||||
if (buffer->use_count == 0)
|
||||
wl_resource_queue_event (buffer->resource, WL_BUFFER_RELEASE);
|
||||
buffer->resource = NULL;
|
||||
g_signal_emit (buffer, signals[RESOURCE_DESTROYED], 0);
|
||||
g_object_unref (buffer);
|
||||
}
|
||||
|
||||
MetaWaylandBuffer *
|
||||
@ -93,10 +69,9 @@ meta_wayland_buffer_from_resource (struct wl_resource *resource)
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer = g_slice_new0 (MetaWaylandBuffer);
|
||||
buffer = g_object_new (META_TYPE_WAYLAND_BUFFER, NULL);
|
||||
|
||||
buffer->resource = resource;
|
||||
wl_signal_init (&buffer->destroy_signal);
|
||||
buffer->destroy_listener.notify = meta_wayland_buffer_destroy_handler;
|
||||
wl_resource_add_destroy_listener (resource, &buffer->destroy_listener);
|
||||
}
|
||||
@ -112,7 +87,7 @@ meta_wayland_buffer_ensure_texture (MetaWaylandBuffer *buffer)
|
||||
CoglTexture *texture;
|
||||
struct wl_shm_buffer *shm_buffer;
|
||||
|
||||
g_return_val_if_fail (buffer->use_count != 0, NULL);
|
||||
g_return_val_if_fail (buffer->resource, NULL);
|
||||
|
||||
if (buffer->texture)
|
||||
goto out;
|
||||
@ -147,8 +122,6 @@ meta_wayland_buffer_process_damage (MetaWaylandBuffer *buffer,
|
||||
{
|
||||
struct wl_shm_buffer *shm_buffer;
|
||||
|
||||
g_return_if_fail (buffer->use_count != 0);
|
||||
|
||||
shm_buffer = wl_shm_buffer_get (buffer->resource);
|
||||
|
||||
if (shm_buffer)
|
||||
@ -161,14 +134,51 @@ meta_wayland_buffer_process_damage (MetaWaylandBuffer *buffer,
|
||||
|
||||
for (i = 0; i < n_rectangles; i++)
|
||||
{
|
||||
CoglError *error = NULL;
|
||||
cairo_rectangle_int_t rect;
|
||||
cairo_region_get_rectangle (region, i, &rect);
|
||||
cogl_wayland_texture_set_region_from_shm_buffer (buffer->texture,
|
||||
rect.x, rect.y, rect.width, rect.height,
|
||||
shm_buffer,
|
||||
rect.x, rect.y, 0, NULL);
|
||||
rect.x, rect.y, 0, &error);
|
||||
|
||||
if (error)
|
||||
{
|
||||
meta_warning ("Failed to set texture region: %s\n", error->message);
|
||||
cogl_error_free (error);
|
||||
}
|
||||
}
|
||||
|
||||
wl_shm_buffer_end_access (shm_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_buffer_finalize (GObject *object)
|
||||
{
|
||||
MetaWaylandBuffer *buffer = META_WAYLAND_BUFFER (object);
|
||||
|
||||
g_clear_pointer (&buffer->texture, cogl_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (meta_wayland_buffer_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_buffer_init (MetaWaylandBuffer *buffer)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_buffer_class_init (MetaWaylandBufferClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = meta_wayland_buffer_finalize;
|
||||
|
||||
signals[RESOURCE_DESTROYED] = g_signal_new ("resource-destroyed",
|
||||
G_TYPE_FROM_CLASS (object_class),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
@ -33,20 +33,19 @@
|
||||
|
||||
struct _MetaWaylandBuffer
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
struct wl_resource *resource;
|
||||
struct wl_signal destroy_signal;
|
||||
struct wl_listener destroy_listener;
|
||||
|
||||
CoglTexture *texture;
|
||||
uint32_t ref_count;
|
||||
uint32_t use_count;
|
||||
};
|
||||
|
||||
#define META_TYPE_WAYLAND_BUFFER (meta_wayland_buffer_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaWaylandBuffer, meta_wayland_buffer,
|
||||
META, WAYLAND_BUFFER, GObject);
|
||||
|
||||
MetaWaylandBuffer * meta_wayland_buffer_from_resource (struct wl_resource *resource);
|
||||
void meta_wayland_buffer_ref (MetaWaylandBuffer *buffer);
|
||||
void meta_wayland_buffer_unref (MetaWaylandBuffer *buffer);
|
||||
void meta_wayland_buffer_ref_use_count (MetaWaylandBuffer *buffer);
|
||||
void meta_wayland_buffer_unref_use_count (MetaWaylandBuffer *buffer);
|
||||
CoglTexture * meta_wayland_buffer_ensure_texture (MetaWaylandBuffer *buffer);
|
||||
void meta_wayland_buffer_process_damage (MetaWaylandBuffer *buffer,
|
||||
cairo_region_t *region);
|
||||
|
@ -31,4 +31,10 @@ G_DECLARE_FINAL_TYPE (MetaWaylandDataSourceWayland,
|
||||
META, WAYLAND_DATA_SOURCE_WAYLAND,
|
||||
MetaWaylandDataSource);
|
||||
|
||||
#define META_TYPE_WAYLAND_DATA_SOURCE_PRIMARY (meta_wayland_data_source_primary_get_type ())
|
||||
G_DECLARE_FINAL_TYPE (MetaWaylandDataSourcePrimary,
|
||||
meta_wayland_data_source_primary,
|
||||
META, WAYLAND_DATA_SOURCE_PRIMARY,
|
||||
MetaWaylandDataSourceWayland);
|
||||
|
||||
#endif /* META_WAYLAND_DATA_DEVICE_PRIVATE_H */
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <glib.h>
|
||||
#include <glib-unix.h>
|
||||
|
||||
#include "meta-wayland-data-device.h"
|
||||
#include "meta-wayland-data-device-private.h"
|
||||
@ -37,6 +38,10 @@
|
||||
#include "meta-wayland-private.h"
|
||||
#include "meta-dnd-actor-private.h"
|
||||
|
||||
#include "gtk-primary-selection-server-protocol.h"
|
||||
|
||||
#define ROOTWINDOW_DROP_MIME "application/x-rootwindow-drop"
|
||||
|
||||
#define ALL_ACTIONS (WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY | \
|
||||
WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE | \
|
||||
WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK)
|
||||
@ -70,13 +75,24 @@ typedef struct _MetaWaylandDataSourceWayland
|
||||
struct wl_resource *resource;
|
||||
} MetaWaylandDataSourceWayland;
|
||||
|
||||
typedef struct _MetaWaylandDataSourcePrimary
|
||||
{
|
||||
MetaWaylandDataSourceWayland parent;
|
||||
|
||||
struct wl_resource *resource;
|
||||
} MetaWaylandDataSourcePrimary;
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (MetaWaylandDataSource, meta_wayland_data_source,
|
||||
G_TYPE_OBJECT);
|
||||
G_DEFINE_TYPE (MetaWaylandDataSourceWayland, meta_wayland_data_source_wayland,
|
||||
META_TYPE_WAYLAND_DATA_SOURCE);
|
||||
G_DEFINE_TYPE (MetaWaylandDataSourcePrimary, meta_wayland_data_source_primary,
|
||||
META_TYPE_WAYLAND_DATA_SOURCE);
|
||||
|
||||
static MetaWaylandDataSource *
|
||||
meta_wayland_data_source_wayland_new (struct wl_resource *resource);
|
||||
static MetaWaylandDataSource *
|
||||
meta_wayland_data_source_primary_new (struct wl_resource *resource);
|
||||
|
||||
static void
|
||||
drag_grab_data_source_destroyed (gpointer data, GObject *where_the_object_was);
|
||||
@ -160,7 +176,8 @@ static void
|
||||
meta_wayland_data_source_target (MetaWaylandDataSource *source,
|
||||
const char *mime_type)
|
||||
{
|
||||
META_WAYLAND_DATA_SOURCE_GET_CLASS (source)->target (source, mime_type);
|
||||
if (META_WAYLAND_DATA_SOURCE_GET_CLASS (source)->target)
|
||||
META_WAYLAND_DATA_SOURCE_GET_CLASS (source)->target (source, mime_type);
|
||||
}
|
||||
|
||||
void
|
||||
@ -351,7 +368,8 @@ data_offer_receive (struct wl_client *client, struct wl_resource *resource,
|
||||
}
|
||||
|
||||
static void
|
||||
data_offer_destroy (struct wl_client *client, struct wl_resource *resource)
|
||||
default_destructor (struct wl_client *client,
|
||||
struct wl_resource *resource)
|
||||
{
|
||||
wl_resource_destroy (resource);
|
||||
}
|
||||
@ -425,11 +443,42 @@ data_offer_set_actions (struct wl_client *client,
|
||||
static const struct wl_data_offer_interface data_offer_interface = {
|
||||
data_offer_accept,
|
||||
data_offer_receive,
|
||||
data_offer_destroy,
|
||||
default_destructor,
|
||||
data_offer_finish,
|
||||
data_offer_set_actions,
|
||||
};
|
||||
|
||||
static void
|
||||
primary_offer_receive (struct wl_client *client, struct wl_resource *resource,
|
||||
const char *mime_type, int32_t fd)
|
||||
{
|
||||
MetaWaylandDataOffer *offer = wl_resource_get_user_data (resource);
|
||||
MetaWaylandDataSource *source = offer->source;
|
||||
MetaWaylandSeat *seat;
|
||||
|
||||
if (!offer->source)
|
||||
{
|
||||
close (fd);
|
||||
return;
|
||||
}
|
||||
|
||||
seat = meta_wayland_data_source_get_seat (source);
|
||||
|
||||
if (wl_resource_get_client (offer->resource) !=
|
||||
meta_wayland_keyboard_get_focus_client (&seat->keyboard))
|
||||
{
|
||||
close (fd);
|
||||
return;
|
||||
}
|
||||
|
||||
meta_wayland_data_source_send (offer->source, mime_type, fd);
|
||||
}
|
||||
|
||||
static const struct gtk_primary_selection_offer_interface primary_offer_interface = {
|
||||
primary_offer_receive,
|
||||
default_destructor,
|
||||
};
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_notify_drop_performed (MetaWaylandDataSource *source)
|
||||
{
|
||||
@ -446,12 +495,16 @@ static void
|
||||
destroy_data_offer (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandDataOffer *offer = wl_resource_get_user_data (resource);
|
||||
MetaWaylandSeat *seat;
|
||||
|
||||
if (offer->source)
|
||||
{
|
||||
seat = meta_wayland_data_source_get_seat (offer->source);
|
||||
|
||||
if (offer == meta_wayland_data_source_get_current_offer (offer->source))
|
||||
{
|
||||
if (wl_resource_get_version (offer->resource) <
|
||||
if (seat && seat->data_device.dnd_data_source == offer->source &&
|
||||
wl_resource_get_version (offer->resource) <
|
||||
WL_DATA_OFFER_ACTION_SINCE_VERSION)
|
||||
meta_wayland_data_source_notify_finish (offer->source);
|
||||
else
|
||||
@ -470,6 +523,28 @@ destroy_data_offer (struct wl_resource *resource)
|
||||
g_slice_free (MetaWaylandDataOffer, offer);
|
||||
}
|
||||
|
||||
static void
|
||||
destroy_primary_offer (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandDataOffer *offer = wl_resource_get_user_data (resource);
|
||||
|
||||
if (offer->source)
|
||||
{
|
||||
if (offer == meta_wayland_data_source_get_current_offer (offer->source))
|
||||
{
|
||||
meta_wayland_data_source_cancel (offer->source);
|
||||
meta_wayland_data_source_set_current_offer (offer->source, NULL);
|
||||
}
|
||||
|
||||
g_object_remove_weak_pointer (G_OBJECT (offer->source),
|
||||
(gpointer *)&offer->source);
|
||||
offer->source = NULL;
|
||||
}
|
||||
|
||||
meta_display_sync_wayland_input_focus (meta_get_display ());
|
||||
g_slice_free (MetaWaylandDataOffer, offer);
|
||||
}
|
||||
|
||||
static struct wl_resource *
|
||||
meta_wayland_data_source_send_offer (MetaWaylandDataSource *source,
|
||||
struct wl_resource *target)
|
||||
@ -500,6 +575,35 @@ meta_wayland_data_source_send_offer (MetaWaylandDataSource *source,
|
||||
return offer->resource;
|
||||
}
|
||||
|
||||
static struct wl_resource *
|
||||
meta_wayland_data_source_send_primary_offer (MetaWaylandDataSource *source,
|
||||
struct wl_resource *target)
|
||||
{
|
||||
MetaWaylandDataSourcePrivate *priv =
|
||||
meta_wayland_data_source_get_instance_private (source);
|
||||
MetaWaylandDataOffer *offer = g_slice_new0 (MetaWaylandDataOffer);
|
||||
char **p;
|
||||
|
||||
offer->source = source;
|
||||
g_object_add_weak_pointer (G_OBJECT (source), (gpointer *)&offer->source);
|
||||
offer->resource = wl_resource_create (wl_resource_get_client (target),
|
||||
>k_primary_selection_offer_interface,
|
||||
wl_resource_get_version (target), 0);
|
||||
wl_resource_set_implementation (offer->resource,
|
||||
&primary_offer_interface,
|
||||
offer,
|
||||
destroy_primary_offer);
|
||||
|
||||
gtk_primary_selection_device_send_data_offer (target, offer->resource);
|
||||
|
||||
wl_array_for_each (p, &priv->mime_types)
|
||||
gtk_primary_selection_offer_send_offer (offer->resource, *p);
|
||||
|
||||
meta_wayland_data_source_set_current_offer (source, offer);
|
||||
|
||||
return offer->resource;
|
||||
}
|
||||
|
||||
static void
|
||||
data_source_offer (struct wl_client *client,
|
||||
struct wl_resource *resource, const char *type)
|
||||
@ -510,12 +614,6 @@ data_source_offer (struct wl_client *client,
|
||||
wl_resource_post_no_memory (resource);
|
||||
}
|
||||
|
||||
static void
|
||||
data_source_destroy (struct wl_client *client, struct wl_resource *resource)
|
||||
{
|
||||
wl_resource_destroy (resource);
|
||||
}
|
||||
|
||||
static void
|
||||
data_source_set_actions (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
@ -557,10 +655,26 @@ data_source_set_actions (struct wl_client *client,
|
||||
|
||||
static struct wl_data_source_interface data_source_interface = {
|
||||
data_source_offer,
|
||||
data_source_destroy,
|
||||
default_destructor,
|
||||
data_source_set_actions
|
||||
};
|
||||
|
||||
static void
|
||||
primary_source_offer (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
const char *type)
|
||||
{
|
||||
MetaWaylandDataSource *source = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!meta_wayland_data_source_add_mime_type (source, type))
|
||||
wl_resource_post_no_memory (resource);
|
||||
}
|
||||
|
||||
static struct gtk_primary_selection_source_interface primary_source_interface = {
|
||||
primary_source_offer,
|
||||
default_destructor,
|
||||
};
|
||||
|
||||
struct _MetaWaylandDragGrab {
|
||||
MetaWaylandPointerGrab generic;
|
||||
|
||||
@ -585,6 +699,8 @@ struct _MetaWaylandDragGrab {
|
||||
|
||||
int drag_start_x, drag_start_y;
|
||||
ClutterModifierType buttons;
|
||||
|
||||
guint need_initial_focus : 1;
|
||||
};
|
||||
|
||||
static void
|
||||
@ -613,30 +729,64 @@ meta_wayland_drag_grab_set_source (MetaWaylandDragGrab *drag_grab,
|
||||
drag_grab);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_drag_source_fake_acceptance (MetaWaylandDataSource *source,
|
||||
const gchar *mimetype)
|
||||
{
|
||||
uint32_t actions, user_action, action = 0;
|
||||
|
||||
actions = meta_wayland_data_source_get_actions (source);
|
||||
user_action = meta_wayland_data_source_get_user_action (source);
|
||||
|
||||
/* Pick a suitable action */
|
||||
if ((user_action & actions) != 0)
|
||||
action = user_action;
|
||||
else if (actions != 0)
|
||||
action = 1 << (ffs (actions) - 1);
|
||||
|
||||
/* Bail out if there is none, source didn't cooperate */
|
||||
if (action == 0)
|
||||
return;
|
||||
|
||||
meta_wayland_data_source_target (source, mimetype);
|
||||
meta_wayland_data_source_set_current_action (source, action);
|
||||
meta_wayland_data_source_set_has_target (source, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_drag_grab_set_focus (MetaWaylandDragGrab *drag_grab,
|
||||
MetaWaylandSurface *surface)
|
||||
{
|
||||
MetaWaylandSeat *seat = drag_grab->seat;
|
||||
MetaWaylandDataSource *source = drag_grab->drag_data_source;
|
||||
struct wl_client *client;
|
||||
struct wl_resource *data_device_resource, *offer = NULL;
|
||||
|
||||
if (drag_grab->drag_focus == surface)
|
||||
if (!drag_grab->need_initial_focus &&
|
||||
drag_grab->drag_focus == surface)
|
||||
return;
|
||||
|
||||
drag_grab->need_initial_focus = FALSE;
|
||||
|
||||
if (drag_grab->drag_focus)
|
||||
{
|
||||
meta_wayland_surface_drag_dest_focus_out (drag_grab->drag_focus);
|
||||
drag_grab->drag_focus = NULL;
|
||||
}
|
||||
|
||||
if (drag_grab->drag_data_source)
|
||||
meta_wayland_data_source_set_current_offer (drag_grab->drag_data_source, NULL);
|
||||
if (source)
|
||||
meta_wayland_data_source_set_current_offer (source, NULL);
|
||||
|
||||
if (!surface && source &&
|
||||
meta_wayland_data_source_has_mime_type (source, ROOTWINDOW_DROP_MIME))
|
||||
meta_wayland_drag_source_fake_acceptance (source, ROOTWINDOW_DROP_MIME);
|
||||
else if (source)
|
||||
meta_wayland_data_source_target (source, NULL);
|
||||
|
||||
if (!surface)
|
||||
return;
|
||||
|
||||
if (!drag_grab->drag_data_source &&
|
||||
if (!source &&
|
||||
wl_resource_get_client (surface->resource) != drag_grab->drag_client)
|
||||
return;
|
||||
|
||||
@ -644,9 +794,8 @@ meta_wayland_drag_grab_set_focus (MetaWaylandDragGrab *drag_grab,
|
||||
|
||||
data_device_resource = wl_resource_find_for_client (&seat->data_device.resource_list, client);
|
||||
|
||||
if (drag_grab->drag_data_source && data_device_resource)
|
||||
offer = meta_wayland_data_source_send_offer (drag_grab->drag_data_source,
|
||||
data_device_resource);
|
||||
if (source && data_device_resource)
|
||||
offer = meta_wayland_data_source_send_offer (source, data_device_resource);
|
||||
|
||||
drag_grab->drag_focus = surface;
|
||||
drag_grab->drag_focus_data_device = data_device_resource;
|
||||
@ -739,6 +888,47 @@ data_device_end_drag_grab (MetaWaylandDragGrab *drag_grab)
|
||||
g_slice_free (MetaWaylandDragGrab, drag_grab);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_fake_read_hup (GIOChannel *channel,
|
||||
GIOCondition condition,
|
||||
gpointer data)
|
||||
{
|
||||
MetaWaylandDataSource *source = data;
|
||||
|
||||
meta_wayland_data_source_notify_finish (source);
|
||||
g_io_channel_shutdown (channel, FALSE, NULL);
|
||||
g_io_channel_unref (channel);
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_fake_read (MetaWaylandDataSource *source,
|
||||
const gchar *mimetype)
|
||||
{
|
||||
GIOChannel *channel;
|
||||
int p[2];
|
||||
|
||||
if (!g_unix_open_pipe (p, FD_CLOEXEC, NULL))
|
||||
{
|
||||
meta_wayland_data_source_notify_finish (source);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!g_unix_set_fd_nonblocking (p[0], TRUE, NULL) ||
|
||||
!g_unix_set_fd_nonblocking (p[1], TRUE, NULL))
|
||||
{
|
||||
meta_wayland_data_source_notify_finish (source);
|
||||
close (p[0]);
|
||||
close (p[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
meta_wayland_data_source_send (source, mimetype, p[1]);
|
||||
channel = g_io_channel_unix_new (p[0]);
|
||||
g_io_add_watch (channel, G_IO_HUP, on_fake_read_hup, source);
|
||||
}
|
||||
|
||||
static void
|
||||
drag_grab_button (MetaWaylandPointerGrab *grab,
|
||||
const ClutterEvent *event)
|
||||
@ -767,6 +957,15 @@ drag_grab_button (MetaWaylandPointerGrab *grab,
|
||||
meta_wayland_source_update_in_ask (source);
|
||||
success = TRUE;
|
||||
}
|
||||
else if (!drag_grab->drag_focus && source &&
|
||||
meta_wayland_data_source_has_target (source) &&
|
||||
meta_wayland_data_source_get_current_action (source) &&
|
||||
meta_wayland_data_source_has_mime_type (source, ROOTWINDOW_DROP_MIME))
|
||||
{
|
||||
/* Perform a fake read, that will lead to notify_finish() being called */
|
||||
meta_wayland_data_source_fake_read (source, ROOTWINDOW_DROP_MIME);
|
||||
success = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_wayland_data_source_cancel (source);
|
||||
@ -868,7 +1067,7 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
|
||||
{
|
||||
MetaWaylandSeat *seat = wl_container_of (data_device, seat, data_device);
|
||||
MetaWaylandDragGrab *drag_grab;
|
||||
ClutterPoint pos, stage_pos;
|
||||
ClutterPoint pos, surface_pos;
|
||||
ClutterModifierType modifiers;
|
||||
|
||||
data_device->current_grab = drag_grab = g_slice_new0 (MetaWaylandDragGrab);
|
||||
@ -887,11 +1086,14 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
|
||||
wl_resource_add_destroy_listener (surface->resource,
|
||||
&drag_grab->drag_origin_listener);
|
||||
|
||||
clutter_input_device_get_coords (seat->pointer.device, NULL, &pos);
|
||||
clutter_actor_transform_stage_point (CLUTTER_ACTOR (meta_surface_actor_get_texture (surface->surface_actor)),
|
||||
pos.x, pos.y, &stage_pos.x, &stage_pos.y);
|
||||
drag_grab->drag_start_x = stage_pos.x;
|
||||
drag_grab->drag_start_y = stage_pos.y;
|
||||
seat->pointer.grab_x,
|
||||
seat->pointer.grab_y,
|
||||
&surface_pos.x, &surface_pos.y);
|
||||
drag_grab->drag_start_x = surface_pos.x;
|
||||
drag_grab->drag_start_y = surface_pos.y;
|
||||
|
||||
drag_grab->need_initial_focus = TRUE;
|
||||
|
||||
modifiers = clutter_input_device_get_modifier_state (seat->pointer.device);
|
||||
drag_grab->buttons = modifiers &
|
||||
@ -919,6 +1121,7 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
|
||||
clutter_actor_add_child (drag_grab->feedback_actor,
|
||||
CLUTTER_ACTOR (drag_grab->drag_surface->surface_actor));
|
||||
|
||||
clutter_input_device_get_coords (seat->pointer.device, NULL, &pos);
|
||||
meta_feedback_actor_set_position (META_FEEDBACK_ACTOR (drag_grab->feedback_actor),
|
||||
pos.x, pos.y);
|
||||
}
|
||||
@ -1006,6 +1209,8 @@ selection_data_source_destroyed (gpointer data, GObject *object_was_here)
|
||||
if (data_device_resource)
|
||||
wl_data_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
|
||||
wl_signal_emit (&data_device->selection_ownership_signal, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1108,6 +1313,43 @@ meta_wayland_data_source_wayland_class_init (MetaWaylandDataSourceWaylandClass *
|
||||
data_source_class->drag_finished = meta_wayland_source_drag_finished;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_primary_send (MetaWaylandDataSource *source,
|
||||
const gchar *mime_type,
|
||||
gint fd)
|
||||
{
|
||||
MetaWaylandDataSourcePrimary *source_primary;
|
||||
|
||||
source_primary = META_WAYLAND_DATA_SOURCE_PRIMARY (source);
|
||||
gtk_primary_selection_source_send_send (source_primary->resource,
|
||||
mime_type, fd);
|
||||
close (fd);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_primary_cancel (MetaWaylandDataSource *source)
|
||||
{
|
||||
MetaWaylandDataSourcePrimary *source_primary;
|
||||
|
||||
source_primary = META_WAYLAND_DATA_SOURCE_PRIMARY (source);
|
||||
gtk_primary_selection_source_send_cancelled (source_primary->resource);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_primary_init (MetaWaylandDataSourcePrimary *source_primary)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_primary_class_init (MetaWaylandDataSourcePrimaryClass *klass)
|
||||
{
|
||||
MetaWaylandDataSourceClass *data_source_class =
|
||||
META_WAYLAND_DATA_SOURCE_CLASS (klass);
|
||||
|
||||
data_source_class->send = meta_wayland_data_source_primary_send;
|
||||
data_source_class->cancel = meta_wayland_data_source_primary_cancel;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_data_source_finalize (GObject *object)
|
||||
{
|
||||
@ -1182,9 +1424,10 @@ meta_wayland_drag_dest_focus_out (MetaWaylandDataDevice *data_device,
|
||||
{
|
||||
MetaWaylandDragGrab *grab = data_device->current_grab;
|
||||
|
||||
if (grab->drag_focus_data_device)
|
||||
wl_data_device_send_leave (grab->drag_focus_data_device);
|
||||
if (!grab->drag_focus_data_device)
|
||||
return;
|
||||
|
||||
wl_data_device_send_leave (grab->drag_focus_data_device);
|
||||
wl_list_remove (&grab->drag_focus_listener.link);
|
||||
grab->drag_focus_data_device = NULL;
|
||||
}
|
||||
@ -1197,6 +1440,9 @@ meta_wayland_drag_dest_motion (MetaWaylandDataDevice *data_device,
|
||||
MetaWaylandDragGrab *grab = data_device->current_grab;
|
||||
wl_fixed_t sx, sy;
|
||||
|
||||
if (!grab->drag_focus_data_device)
|
||||
return;
|
||||
|
||||
meta_wayland_pointer_get_relative_coordinates (grab->generic.pointer,
|
||||
grab->drag_focus,
|
||||
&sx, &sy);
|
||||
@ -1211,6 +1457,9 @@ meta_wayland_drag_dest_drop (MetaWaylandDataDevice *data_device,
|
||||
{
|
||||
MetaWaylandDragGrab *grab = data_device->current_grab;
|
||||
|
||||
if (!grab->drag_focus_data_device)
|
||||
return;
|
||||
|
||||
wl_data_device_send_drop (grab->drag_focus_data_device);
|
||||
}
|
||||
|
||||
@ -1299,6 +1548,7 @@ meta_wayland_data_device_set_selection (MetaWaylandDataDevice *data_device,
|
||||
|
||||
if (source)
|
||||
{
|
||||
meta_wayland_data_source_set_seat (source, seat);
|
||||
g_object_weak_ref (G_OBJECT (source),
|
||||
selection_data_source_destroyed,
|
||||
data_device);
|
||||
@ -1339,16 +1589,116 @@ data_device_set_selection (struct wl_client *client,
|
||||
meta_wayland_data_device_set_selection (data_device, source, serial);
|
||||
}
|
||||
|
||||
static void
|
||||
data_device_release(struct wl_client *client, struct wl_resource *resource)
|
||||
{
|
||||
wl_resource_destroy(resource);
|
||||
}
|
||||
|
||||
static const struct wl_data_device_interface data_device_interface = {
|
||||
data_device_start_drag,
|
||||
data_device_set_selection,
|
||||
data_device_release,
|
||||
default_destructor,
|
||||
};
|
||||
|
||||
static void
|
||||
primary_source_destroyed (gpointer data,
|
||||
GObject *object_was_here)
|
||||
{
|
||||
MetaWaylandDataDevice *data_device = data;
|
||||
MetaWaylandSeat *seat = wl_container_of (data_device, seat, data_device);
|
||||
struct wl_client *focus_client = NULL;
|
||||
|
||||
data_device->primary_data_source = NULL;
|
||||
|
||||
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
|
||||
if (focus_client)
|
||||
{
|
||||
struct wl_resource *data_device_resource;
|
||||
|
||||
data_device_resource = wl_resource_find_for_client (&data_device->primary_resource_list, focus_client);
|
||||
if (data_device_resource)
|
||||
gtk_primary_selection_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
|
||||
wl_signal_emit (&data_device->primary_ownership_signal, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_data_device_set_primary (MetaWaylandDataDevice *data_device,
|
||||
MetaWaylandDataSource *source,
|
||||
guint32 serial)
|
||||
{
|
||||
MetaWaylandSeat *seat = wl_container_of (data_device, seat, data_device);
|
||||
struct wl_resource *data_device_resource, *offer;
|
||||
struct wl_client *focus_client;
|
||||
|
||||
if (META_IS_WAYLAND_DATA_SOURCE_PRIMARY (source))
|
||||
{
|
||||
struct wl_resource *resource;
|
||||
|
||||
resource = META_WAYLAND_DATA_SOURCE_PRIMARY (source)->resource;
|
||||
|
||||
if (wl_resource_get_client (resource) !=
|
||||
meta_wayland_keyboard_get_focus_client (&seat->keyboard))
|
||||
return;
|
||||
}
|
||||
|
||||
if (data_device->primary_data_source &&
|
||||
data_device->primary_serial - serial < UINT32_MAX / 2)
|
||||
return;
|
||||
|
||||
if (data_device->primary_data_source)
|
||||
{
|
||||
meta_wayland_data_source_cancel (data_device->primary_data_source);
|
||||
g_object_weak_unref (G_OBJECT (data_device->primary_data_source),
|
||||
primary_source_destroyed,
|
||||
data_device);
|
||||
}
|
||||
|
||||
data_device->primary_data_source = source;
|
||||
data_device->primary_serial = serial;
|
||||
|
||||
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
|
||||
if (focus_client)
|
||||
{
|
||||
data_device_resource = wl_resource_find_for_client (&data_device->primary_resource_list, focus_client);
|
||||
if (data_device_resource)
|
||||
{
|
||||
if (data_device->primary_data_source)
|
||||
{
|
||||
offer = meta_wayland_data_source_send_primary_offer (data_device->primary_data_source,
|
||||
data_device_resource);
|
||||
gtk_primary_selection_device_send_selection (data_device_resource, offer);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_primary_selection_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (source)
|
||||
{
|
||||
meta_wayland_data_source_set_seat (source, seat);
|
||||
g_object_weak_ref (G_OBJECT (source),
|
||||
primary_source_destroyed,
|
||||
data_device);
|
||||
}
|
||||
|
||||
wl_signal_emit (&data_device->primary_ownership_signal, source);
|
||||
}
|
||||
|
||||
static void
|
||||
primary_device_set_selection (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
struct wl_resource *source_resource,
|
||||
uint32_t serial)
|
||||
{
|
||||
MetaWaylandDataDevice *data_device = wl_resource_get_user_data (resource);
|
||||
MetaWaylandDataSource *source;
|
||||
|
||||
source = wl_resource_get_user_data (source_resource);
|
||||
meta_wayland_data_device_set_primary (data_device, source, serial);
|
||||
}
|
||||
|
||||
static const struct gtk_primary_selection_device_interface primary_device_interface = {
|
||||
primary_device_set_selection,
|
||||
default_destructor,
|
||||
};
|
||||
|
||||
static void
|
||||
@ -1389,6 +1739,51 @@ static const struct wl_data_device_manager_interface manager_interface = {
|
||||
get_data_device
|
||||
};
|
||||
|
||||
static void
|
||||
destroy_primary_source (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandDataSourcePrimary *source = wl_resource_get_user_data (resource);
|
||||
|
||||
source->resource = NULL;
|
||||
g_object_unref (source);
|
||||
}
|
||||
|
||||
static void
|
||||
primary_device_manager_create_source (struct wl_client *client,
|
||||
struct wl_resource *manager_resource,
|
||||
guint32 id)
|
||||
{
|
||||
struct wl_resource *source_resource;
|
||||
|
||||
source_resource =
|
||||
wl_resource_create (client, >k_primary_selection_source_interface,
|
||||
wl_resource_get_version (manager_resource),
|
||||
id);
|
||||
meta_wayland_data_source_primary_new (source_resource);
|
||||
}
|
||||
|
||||
static void
|
||||
primary_device_manager_get_device (struct wl_client *client,
|
||||
struct wl_resource *manager_resource,
|
||||
guint32 id,
|
||||
struct wl_resource *seat_resource)
|
||||
{
|
||||
MetaWaylandSeat *seat = wl_resource_get_user_data (seat_resource);
|
||||
struct wl_resource *cr;
|
||||
|
||||
cr = wl_resource_create (client, >k_primary_selection_device_interface,
|
||||
wl_resource_get_version (manager_resource), id);
|
||||
wl_resource_set_implementation (cr, &primary_device_interface,
|
||||
&seat->data_device, unbind_resource);
|
||||
wl_list_insert (&seat->data_device.primary_resource_list, wl_resource_get_link (cr));
|
||||
}
|
||||
|
||||
static const struct gtk_primary_selection_device_manager_interface primary_manager_interface = {
|
||||
primary_device_manager_create_source,
|
||||
primary_device_manager_get_device,
|
||||
default_destructor,
|
||||
};
|
||||
|
||||
static void
|
||||
bind_manager (struct wl_client *client,
|
||||
void *data, guint32 version, guint32 id)
|
||||
@ -1398,6 +1793,19 @@ bind_manager (struct wl_client *client,
|
||||
wl_resource_set_implementation (resource, &manager_interface, NULL, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
bind_primary_manager (struct wl_client *client,
|
||||
void *data,
|
||||
uint32_t version,
|
||||
uint32_t id)
|
||||
{
|
||||
struct wl_resource *resource;
|
||||
|
||||
resource = wl_resource_create (client, >k_primary_selection_device_manager_interface,
|
||||
version, id);
|
||||
wl_resource_set_implementation (resource, &primary_manager_interface, NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_data_device_manager_init (MetaWaylandCompositor *compositor)
|
||||
{
|
||||
@ -1406,13 +1814,20 @@ meta_wayland_data_device_manager_init (MetaWaylandCompositor *compositor)
|
||||
META_WL_DATA_DEVICE_MANAGER_VERSION,
|
||||
NULL, bind_manager) == NULL)
|
||||
g_error ("Could not create data_device");
|
||||
|
||||
if (wl_global_create (compositor->wayland_display,
|
||||
>k_primary_selection_device_manager_interface,
|
||||
1, NULL, bind_primary_manager) == NULL)
|
||||
g_error ("Could not create data_device");
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_data_device_init (MetaWaylandDataDevice *data_device)
|
||||
{
|
||||
wl_list_init (&data_device->resource_list);
|
||||
wl_list_init (&data_device->primary_resource_list);
|
||||
wl_signal_init (&data_device->selection_ownership_signal);
|
||||
wl_signal_init (&data_device->primary_ownership_signal);
|
||||
wl_signal_init (&data_device->dnd_ownership_signal);
|
||||
}
|
||||
|
||||
@ -1435,17 +1850,34 @@ meta_wayland_data_device_set_keyboard_focus (MetaWaylandDataDevice *data_device)
|
||||
return;
|
||||
|
||||
data_device_resource = wl_resource_find_for_client (&data_device->resource_list, focus_client);
|
||||
if (!data_device_resource)
|
||||
return;
|
||||
|
||||
source = data_device->selection_data_source;
|
||||
if (source)
|
||||
if (data_device_resource)
|
||||
{
|
||||
offer = meta_wayland_data_source_send_offer (source, data_device_resource);
|
||||
wl_data_device_send_selection (data_device_resource, offer);
|
||||
source = data_device->selection_data_source;
|
||||
if (source)
|
||||
{
|
||||
offer = meta_wayland_data_source_send_offer (source, data_device_resource);
|
||||
wl_data_device_send_selection (data_device_resource, offer);
|
||||
}
|
||||
else
|
||||
{
|
||||
wl_data_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
data_device_resource = wl_resource_find_for_client (&data_device->primary_resource_list, focus_client);
|
||||
if (data_device_resource)
|
||||
{
|
||||
source = data_device->primary_data_source;
|
||||
if (source)
|
||||
{
|
||||
offer = meta_wayland_data_source_send_primary_offer (source, data_device_resource);
|
||||
gtk_primary_selection_device_send_selection (data_device_resource, offer);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_primary_selection_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
wl_data_device_send_selection (data_device_resource, NULL);
|
||||
}
|
||||
|
||||
gboolean
|
||||
@ -1486,6 +1918,19 @@ meta_wayland_data_source_wayland_new (struct wl_resource *resource)
|
||||
return META_WAYLAND_DATA_SOURCE (source_wayland);
|
||||
}
|
||||
|
||||
static MetaWaylandDataSource *
|
||||
meta_wayland_data_source_primary_new (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandDataSourcePrimary *source_primary =
|
||||
g_object_new (META_TYPE_WAYLAND_DATA_SOURCE_PRIMARY, NULL);
|
||||
|
||||
source_primary->resource = resource;
|
||||
wl_resource_set_implementation (resource, &primary_source_interface,
|
||||
source_primary, destroy_primary_source);
|
||||
|
||||
return META_WAYLAND_DATA_SOURCE (source_primary);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_wayland_data_source_add_mime_type (MetaWaylandDataSource *source,
|
||||
const gchar *mime_type)
|
||||
|
@ -55,15 +55,19 @@ struct _MetaWaylandDataSourceClass
|
||||
struct _MetaWaylandDataDevice
|
||||
{
|
||||
uint32_t selection_serial;
|
||||
uint32_t primary_serial;
|
||||
MetaWaylandDataSource *selection_data_source;
|
||||
MetaWaylandDataSource *dnd_data_source;
|
||||
MetaWaylandDataSource *primary_data_source;
|
||||
struct wl_listener selection_data_source_listener;
|
||||
struct wl_list resource_list;
|
||||
struct wl_list primary_resource_list;
|
||||
MetaWaylandDragGrab *current_grab;
|
||||
struct wl_client *focus_client;
|
||||
|
||||
struct wl_signal selection_ownership_signal;
|
||||
struct wl_signal dnd_ownership_signal;
|
||||
struct wl_signal primary_ownership_signal;
|
||||
};
|
||||
|
||||
void meta_wayland_data_device_manager_init (MetaWaylandCompositor *compositor);
|
||||
@ -80,6 +84,9 @@ void meta_wayland_data_device_set_dnd_source (MetaWaylandDataDevice *data_de
|
||||
void meta_wayland_data_device_set_selection (MetaWaylandDataDevice *data_device,
|
||||
MetaWaylandDataSource *source,
|
||||
guint32 serial);
|
||||
void meta_wayland_data_device_set_primary (MetaWaylandDataDevice *data_device,
|
||||
MetaWaylandDataSource *source,
|
||||
guint32 serial);
|
||||
|
||||
gboolean meta_wayland_data_source_add_mime_type (MetaWaylandDataSource *source,
|
||||
const gchar *mime_type);
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include <sys/mman.h>
|
||||
#include <clutter/evdev/clutter-evdev.h>
|
||||
|
||||
#include "display-private.h"
|
||||
#include "backends/meta-backend-private.h"
|
||||
|
||||
#include "meta-wayland-private.h"
|
||||
@ -279,14 +280,66 @@ notify_key (MetaWaylandKeyboard *keyboard,
|
||||
return keyboard->grab->interface->key (keyboard->grab, event);
|
||||
}
|
||||
|
||||
static xkb_mod_mask_t
|
||||
add_vmod (xkb_mod_mask_t mask,
|
||||
xkb_mod_mask_t mod,
|
||||
xkb_mod_mask_t vmod,
|
||||
xkb_mod_mask_t *added)
|
||||
{
|
||||
if ((mask & mod) && !(mod & *added))
|
||||
{
|
||||
mask |= vmod;
|
||||
*added |= mod;
|
||||
}
|
||||
return mask;
|
||||
}
|
||||
|
||||
static xkb_mod_mask_t
|
||||
add_virtual_mods (xkb_mod_mask_t mask)
|
||||
{
|
||||
MetaKeyBindingManager *keys = &(meta_get_display ()->key_binding_manager);
|
||||
xkb_mod_mask_t added;
|
||||
guint i;
|
||||
/* Order is important here: if multiple vmods share the same real
|
||||
modifier we only want to add the first. */
|
||||
struct {
|
||||
xkb_mod_mask_t mod;
|
||||
xkb_mod_mask_t vmod;
|
||||
} mods[] = {
|
||||
{ keys->super_mask, keys->virtual_super_mask },
|
||||
{ keys->hyper_mask, keys->virtual_hyper_mask },
|
||||
{ keys->meta_mask, keys->virtual_meta_mask },
|
||||
};
|
||||
|
||||
added = 0;
|
||||
for (i = 0; i < G_N_ELEMENTS (mods); ++i)
|
||||
mask = add_vmod (mask, mods[i].mod, mods[i].vmod, &added);
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
static void
|
||||
keyboard_send_modifiers (MetaWaylandKeyboard *keyboard,
|
||||
struct wl_resource *resource,
|
||||
uint32_t serial)
|
||||
{
|
||||
struct xkb_state *state = keyboard->xkb_info.state;
|
||||
xkb_mod_mask_t depressed, latched, locked;
|
||||
|
||||
depressed = add_virtual_mods (xkb_state_serialize_mods (state, XKB_STATE_MODS_DEPRESSED));
|
||||
latched = add_virtual_mods (xkb_state_serialize_mods (state, XKB_STATE_MODS_LATCHED));
|
||||
locked = add_virtual_mods (xkb_state_serialize_mods (state, XKB_STATE_MODS_LOCKED));
|
||||
|
||||
wl_keyboard_send_modifiers (resource, serial, depressed, latched, locked,
|
||||
xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE));
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_keyboard_broadcast_modifiers (MetaWaylandKeyboard *keyboard)
|
||||
{
|
||||
struct xkb_state *state;
|
||||
struct wl_resource *resource;
|
||||
struct wl_list *l;
|
||||
|
||||
state = keyboard->xkb_info.state;
|
||||
|
||||
l = &keyboard->focus_resource_list;
|
||||
if (!wl_list_empty (l))
|
||||
@ -294,14 +347,7 @@ meta_wayland_keyboard_broadcast_modifiers (MetaWaylandKeyboard *keyboard)
|
||||
uint32_t serial = wl_display_next_serial (keyboard->display);
|
||||
|
||||
wl_resource_for_each (resource, l)
|
||||
{
|
||||
wl_keyboard_send_modifiers (resource,
|
||||
serial,
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_DEPRESSED),
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_LATCHED),
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_LOCKED),
|
||||
xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE));
|
||||
}
|
||||
keyboard_send_modifiers (keyboard, resource, serial);
|
||||
}
|
||||
}
|
||||
|
||||
@ -509,6 +555,13 @@ meta_wayland_keyboard_update (MetaWaylandKeyboard *keyboard,
|
||||
{
|
||||
gboolean is_press = event->type == CLUTTER_KEY_PRESS;
|
||||
|
||||
/* If we get a key event but still have pending modifier state
|
||||
* changes from a previous event that didn't get cleared, we need to
|
||||
* send that state right away so that the new key event can be
|
||||
* interpreted by clients correctly modified. */
|
||||
if (keyboard->mods_changed)
|
||||
notify_modifiers (keyboard);
|
||||
|
||||
keyboard->mods_changed = xkb_state_update_key (keyboard->xkb_info.state,
|
||||
event->hardware_keycode,
|
||||
is_press ? XKB_KEY_DOWN : XKB_KEY_UP);
|
||||
@ -602,7 +655,6 @@ broadcast_focus (MetaWaylandKeyboard *keyboard,
|
||||
struct wl_resource *resource)
|
||||
{
|
||||
struct wl_array fake_keys;
|
||||
struct xkb_state *state = keyboard->xkb_info.state;
|
||||
|
||||
/* We never want to send pressed keys to wayland clients on
|
||||
* enter. The protocol says that we should send them, presumably so
|
||||
@ -622,11 +674,7 @@ broadcast_focus (MetaWaylandKeyboard *keyboard,
|
||||
*/
|
||||
wl_array_init (&fake_keys);
|
||||
|
||||
wl_keyboard_send_modifiers (resource, keyboard->focus_serial,
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_DEPRESSED),
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_LATCHED),
|
||||
xkb_state_serialize_mods (state, XKB_STATE_MODS_LOCKED),
|
||||
xkb_state_serialize_layout (state, XKB_STATE_LAYOUT_EFFECTIVE));
|
||||
keyboard_send_modifiers (keyboard, resource, keyboard->focus_serial);
|
||||
wl_keyboard_send_enter (resource, keyboard->focus_serial,
|
||||
keyboard->focus_surface->resource,
|
||||
&fake_keys);
|
||||
|
@ -53,6 +53,80 @@ output_resource_destroy (struct wl_resource *res)
|
||||
wayland_output->resources = g_list_remove (wayland_output->resources, res);
|
||||
}
|
||||
|
||||
static inline enum wl_output_transform
|
||||
wl_output_transform_from_meta_monitor_transform (MetaMonitorTransform transform)
|
||||
{
|
||||
/* The enums are the same. */
|
||||
return (enum wl_output_transform) transform;
|
||||
}
|
||||
|
||||
static void
|
||||
send_output_events (struct wl_resource *resource,
|
||||
MetaWaylandOutput *wayland_output,
|
||||
MetaMonitorInfo *monitor_info,
|
||||
gboolean need_all_events)
|
||||
{
|
||||
int version = wl_resource_get_version (resource);
|
||||
|
||||
MetaOutput *output = monitor_info->outputs[0];
|
||||
enum wl_output_transform transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
|
||||
guint mode_flags = WL_OUTPUT_MODE_CURRENT;
|
||||
|
||||
MetaMonitorInfo *old_monitor_info = wayland_output->monitor_info;
|
||||
enum wl_output_transform old_transform = wayland_output->transform;
|
||||
guint old_mode_flags = wayland_output->mode_flags;
|
||||
gint old_scale = wayland_output->scale;
|
||||
|
||||
gboolean need_done = FALSE;
|
||||
|
||||
if (need_all_events ||
|
||||
old_monitor_info->rect.x != monitor_info->rect.x ||
|
||||
old_monitor_info->rect.y != monitor_info->rect.y ||
|
||||
old_transform != transform)
|
||||
{
|
||||
wl_output_send_geometry (resource,
|
||||
(int)monitor_info->rect.x,
|
||||
(int)monitor_info->rect.y,
|
||||
monitor_info->width_mm,
|
||||
monitor_info->height_mm,
|
||||
output->subpixel_order,
|
||||
output->vendor,
|
||||
output->product,
|
||||
transform);
|
||||
need_done = TRUE;
|
||||
}
|
||||
|
||||
if (output->crtc->current_mode == output->preferred_mode)
|
||||
mode_flags |= WL_OUTPUT_MODE_PREFERRED;
|
||||
|
||||
if (need_all_events ||
|
||||
old_monitor_info->rect.width != monitor_info->rect.width ||
|
||||
old_monitor_info->rect.height != monitor_info->rect.height ||
|
||||
old_monitor_info->refresh_rate != monitor_info->refresh_rate ||
|
||||
old_mode_flags != mode_flags)
|
||||
{
|
||||
wl_output_send_mode (resource,
|
||||
mode_flags,
|
||||
(int)monitor_info->rect.width,
|
||||
(int)monitor_info->rect.height,
|
||||
(int)(monitor_info->refresh_rate * 1000));
|
||||
need_done = TRUE;
|
||||
}
|
||||
|
||||
if (version >= WL_OUTPUT_SCALE_SINCE_VERSION)
|
||||
{
|
||||
if (need_all_events ||
|
||||
old_scale != output->scale)
|
||||
{
|
||||
wl_output_send_scale (resource, output->scale);
|
||||
need_done = TRUE;
|
||||
}
|
||||
|
||||
if (need_done)
|
||||
wl_output_send_done (resource);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
bind_output (struct wl_client *client,
|
||||
void *data,
|
||||
@ -62,7 +136,6 @@ bind_output (struct wl_client *client,
|
||||
MetaWaylandOutput *wayland_output = data;
|
||||
MetaMonitorInfo *monitor_info = wayland_output->monitor_info;
|
||||
struct wl_resource *resource;
|
||||
guint mode_flags;
|
||||
MetaOutput *output = monitor_info->outputs[0];
|
||||
|
||||
resource = wl_resource_create (client, &wl_output_interface, version, id);
|
||||
@ -77,35 +150,7 @@ bind_output (struct wl_client *client,
|
||||
monitor_info->rect.width, monitor_info->rect.height,
|
||||
monitor_info->refresh_rate);
|
||||
|
||||
wl_output_send_geometry (resource,
|
||||
(int)monitor_info->rect.x,
|
||||
(int)monitor_info->rect.y,
|
||||
monitor_info->width_mm,
|
||||
monitor_info->height_mm,
|
||||
/* Cogl values reflect XRandR values,
|
||||
and so does wayland */
|
||||
output->subpixel_order,
|
||||
output->vendor,
|
||||
output->product,
|
||||
output->crtc->transform);
|
||||
|
||||
g_assert (output->crtc->current_mode != NULL);
|
||||
|
||||
mode_flags = WL_OUTPUT_MODE_CURRENT;
|
||||
if (output->crtc->current_mode == output->preferred_mode)
|
||||
mode_flags |= WL_OUTPUT_MODE_PREFERRED;
|
||||
|
||||
wl_output_send_mode (resource,
|
||||
mode_flags,
|
||||
(int)monitor_info->rect.width,
|
||||
(int)monitor_info->rect.height,
|
||||
(int)(monitor_info->refresh_rate * 1000));
|
||||
|
||||
if (version >= WL_OUTPUT_SCALE_SINCE_VERSION)
|
||||
wl_output_send_scale (resource, output->scale);
|
||||
|
||||
if (version >= WL_OUTPUT_DONE_SINCE_VERSION)
|
||||
wl_output_send_done (resource);
|
||||
send_output_events (resource, wayland_output, monitor_info, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -117,11 +162,19 @@ wayland_output_destroy_notify (gpointer data)
|
||||
g_object_unref (wayland_output);
|
||||
}
|
||||
|
||||
static inline enum wl_output_transform
|
||||
wl_output_transform_from_meta_monitor_transform (MetaMonitorTransform transform)
|
||||
static void
|
||||
wayland_output_set_monitor_info (MetaWaylandOutput *wayland_output,
|
||||
MetaMonitorInfo *monitor_info)
|
||||
{
|
||||
/* The enums are the same. */
|
||||
return (enum wl_output_transform) transform;
|
||||
MetaOutput *output = monitor_info->outputs[0];
|
||||
enum wl_output_transform transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
|
||||
|
||||
wayland_output->monitor_info = monitor_info;
|
||||
wayland_output->transform = transform;
|
||||
wayland_output->mode_flags = WL_OUTPUT_MODE_CURRENT;
|
||||
if (output->crtc->current_mode == output->preferred_mode)
|
||||
wayland_output->mode_flags |= WL_OUTPUT_MODE_PREFERRED;
|
||||
wayland_output->scale = output->scale;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -129,50 +182,21 @@ wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
||||
MetaMonitorInfo *monitor_info)
|
||||
{
|
||||
GList *iter;
|
||||
guint mode_flags;
|
||||
MetaOutput *output = monitor_info->outputs[0];
|
||||
enum wl_output_transform wl_transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
|
||||
|
||||
mode_flags = WL_OUTPUT_MODE_CURRENT;
|
||||
if (output->crtc->current_mode == output->preferred_mode)
|
||||
mode_flags |= WL_OUTPUT_MODE_PREFERRED;
|
||||
|
||||
for (iter = wayland_output->resources; iter; iter = iter->next)
|
||||
{
|
||||
struct wl_resource *resource = iter->data;
|
||||
|
||||
if (wayland_output->x != monitor_info->rect.x ||
|
||||
wayland_output->y != monitor_info->rect.y ||
|
||||
wayland_output->transform != wl_transform)
|
||||
{
|
||||
wl_output_send_geometry (resource,
|
||||
(int)monitor_info->rect.x,
|
||||
(int)monitor_info->rect.y,
|
||||
monitor_info->width_mm,
|
||||
monitor_info->height_mm,
|
||||
output->subpixel_order,
|
||||
output->vendor,
|
||||
output->product,
|
||||
wl_transform);
|
||||
}
|
||||
|
||||
wl_output_send_mode (resource,
|
||||
mode_flags,
|
||||
(int)monitor_info->rect.width,
|
||||
(int)monitor_info->rect.height,
|
||||
(int)(monitor_info->refresh_rate * 1000));
|
||||
send_output_events (resource, wayland_output, monitor_info, FALSE);
|
||||
}
|
||||
|
||||
/* It's very important that we change the output pointer here, as
|
||||
the old structure is about to be freed by MetaMonitorManager */
|
||||
wayland_output->monitor_info = monitor_info;
|
||||
wayland_output->x = monitor_info->rect.x;
|
||||
wayland_output->y = monitor_info->rect.y;
|
||||
wayland_output->transform = wl_transform;
|
||||
wayland_output_set_monitor_info (wayland_output, monitor_info);
|
||||
}
|
||||
|
||||
static MetaWaylandOutput *
|
||||
meta_wayland_output_new (MetaWaylandCompositor *compositor)
|
||||
meta_wayland_output_new (MetaWaylandCompositor *compositor,
|
||||
MetaMonitorInfo *monitor_info)
|
||||
{
|
||||
MetaWaylandOutput *wayland_output;
|
||||
|
||||
@ -181,6 +205,7 @@ meta_wayland_output_new (MetaWaylandCompositor *compositor)
|
||||
&wl_output_interface,
|
||||
META_WL_OUTPUT_VERSION,
|
||||
wayland_output, bind_output);
|
||||
wayland_output_set_monitor_info (wayland_output, monitor_info);
|
||||
|
||||
return wayland_output;
|
||||
}
|
||||
@ -211,7 +236,7 @@ meta_wayland_compositor_update_outputs (MetaWaylandCompositor *compositor,
|
||||
g_hash_table_steal (compositor->outputs, GSIZE_TO_POINTER (info->winsys_id));
|
||||
}
|
||||
else
|
||||
wayland_output = meta_wayland_output_new (compositor);
|
||||
wayland_output = meta_wayland_output_new (compositor, info);
|
||||
|
||||
wayland_output_update_for_output (wayland_output, info);
|
||||
g_hash_table_insert (new_table, GSIZE_TO_POINTER (info->winsys_id), wayland_output);
|
||||
|
@ -41,10 +41,11 @@ struct _MetaWaylandOutput
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
MetaMonitorInfo *monitor_info;
|
||||
struct wl_global *global;
|
||||
int x, y;
|
||||
MetaMonitorInfo *monitor_info;
|
||||
enum wl_output_transform transform;
|
||||
guint mode_flags;
|
||||
gint scale;
|
||||
|
||||
GList *resources;
|
||||
};
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "pointer-constraints-unstable-v1-server-protocol.h"
|
||||
|
||||
static GQuark quark_pending_constraint_state = 0;
|
||||
static GQuark quark_surface_pointer_constraints_data = 0;
|
||||
|
||||
struct _MetaWaylandPointerConstraint
|
||||
{
|
||||
@ -64,6 +65,14 @@ struct _MetaWaylandPointerConstraint
|
||||
MetaPointerConstraint *constraint;
|
||||
};
|
||||
|
||||
typedef struct _MetaWaylandSurfacePointerConstraintsData
|
||||
{
|
||||
GList *pointer_constraints;
|
||||
MetaWindow *window;
|
||||
gulong appears_changed_handler_id;
|
||||
gulong raised_handler_id;
|
||||
} MetaWaylandSurfacePointerConstraintsData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
MetaWaylandPointerConstraint *constraint;
|
||||
@ -84,15 +93,137 @@ static const struct zwp_confined_pointer_v1_interface confined_pointer_interface
|
||||
static const MetaWaylandPointerGrabInterface locked_pointer_grab_interface;
|
||||
static const MetaWaylandPointerGrabInterface confined_pointer_grab_interface;
|
||||
|
||||
static cairo_region_t *
|
||||
create_infinite_constraint_region (void)
|
||||
static void
|
||||
meta_wayland_pointer_constraint_destroy (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
static void
|
||||
meta_wayland_pointer_constraint_maybe_enable_for_window (MetaWindow *window);
|
||||
|
||||
static void
|
||||
meta_wayland_pointer_constraint_maybe_remove_for_seat (MetaWaylandSeat *seat,
|
||||
MetaWindow *window);
|
||||
|
||||
static MetaWaylandSurfacePointerConstraintsData *
|
||||
get_surface_constraints_data (MetaWaylandSurface *surface)
|
||||
{
|
||||
return cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
|
||||
.x = INT_MIN / 2,
|
||||
.y = INT_MIN / 2,
|
||||
.width = INT_MAX,
|
||||
.height = INT_MAX,
|
||||
});
|
||||
return g_object_get_qdata (G_OBJECT (surface),
|
||||
quark_surface_pointer_constraints_data);
|
||||
}
|
||||
|
||||
static void
|
||||
appears_focused_changed (MetaWindow *window,
|
||||
GParamSpec *pspec,
|
||||
gpointer user_data)
|
||||
{
|
||||
MetaWaylandCompositor *wayland_compositor;
|
||||
|
||||
wayland_compositor = meta_wayland_compositor_get_default ();
|
||||
meta_wayland_pointer_constraint_maybe_remove_for_seat (wayland_compositor->seat,
|
||||
window);
|
||||
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
meta_wayland_pointer_constraint_maybe_enable_for_window (window);
|
||||
}
|
||||
|
||||
static void
|
||||
window_raised (MetaWindow *window)
|
||||
{
|
||||
meta_wayland_pointer_constraint_maybe_enable_for_window (window);
|
||||
}
|
||||
|
||||
static MetaWaylandSurfacePointerConstraintsData *
|
||||
surface_constraint_data_new (MetaWaylandSurface *surface)
|
||||
{
|
||||
MetaWaylandSurfacePointerConstraintsData *data;
|
||||
|
||||
data = g_new0 (MetaWaylandSurfacePointerConstraintsData, 1);
|
||||
|
||||
if (surface->window)
|
||||
{
|
||||
data->window = surface->window;
|
||||
g_object_add_weak_pointer (G_OBJECT (data->window),
|
||||
(gpointer *) &data->window);
|
||||
data->appears_changed_handler_id =
|
||||
g_signal_connect (data->window, "notify::appears-focused",
|
||||
G_CALLBACK (appears_focused_changed), NULL);
|
||||
data->raised_handler_id =
|
||||
g_signal_connect (data->window, "raised",
|
||||
G_CALLBACK (window_raised), NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* TODO: Support constraints on non-toplevel windows, such as subsurfaces.
|
||||
*/
|
||||
g_warn_if_reached ();
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
static void
|
||||
surface_constraint_data_free (MetaWaylandSurfacePointerConstraintsData *data)
|
||||
{
|
||||
if (data->window)
|
||||
{
|
||||
g_signal_handler_disconnect (data->window,
|
||||
data->appears_changed_handler_id);
|
||||
g_signal_handler_disconnect (data->window,
|
||||
data->raised_handler_id);
|
||||
g_object_remove_weak_pointer (G_OBJECT (data->window),
|
||||
(gpointer *) &data->window);
|
||||
}
|
||||
|
||||
g_list_free_full (data->pointer_constraints,
|
||||
(GDestroyNotify) meta_wayland_pointer_constraint_destroy);
|
||||
g_free (data);
|
||||
}
|
||||
|
||||
static MetaWaylandSurfacePointerConstraintsData *
|
||||
ensure_surface_constraints_data (MetaWaylandSurface *surface)
|
||||
{
|
||||
MetaWaylandSurfacePointerConstraintsData *data;
|
||||
|
||||
data = get_surface_constraints_data (surface);
|
||||
if (!data)
|
||||
{
|
||||
data = surface_constraint_data_new (surface);
|
||||
g_object_set_qdata_full (G_OBJECT (surface),
|
||||
quark_surface_pointer_constraints_data,
|
||||
data,
|
||||
(GDestroyNotify) surface_constraint_data_free);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
static void
|
||||
surface_add_pointer_constraint (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
MetaWaylandSurfacePointerConstraintsData *data;
|
||||
|
||||
data = ensure_surface_constraints_data (surface);
|
||||
data->pointer_constraints = g_list_append (data->pointer_constraints,
|
||||
constraint);
|
||||
}
|
||||
|
||||
static void
|
||||
surface_remove_pointer_constraints (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
MetaWaylandSurfacePointerConstraintsData *data;
|
||||
|
||||
data = get_surface_constraints_data (surface);
|
||||
data->pointer_constraints =
|
||||
g_list_remove (data->pointer_constraints, constraint);
|
||||
|
||||
if (!data->pointer_constraints)
|
||||
{
|
||||
g_object_set_qdata (G_OBJECT (surface),
|
||||
quark_surface_pointer_constraints_data,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static MetaWaylandPointerConstraint *
|
||||
@ -122,7 +253,7 @@ meta_wayland_pointer_constraint_new (MetaWaylandSurface *su
|
||||
}
|
||||
else
|
||||
{
|
||||
constraint->region = create_infinite_constraint_region ();
|
||||
constraint->region = NULL;
|
||||
}
|
||||
|
||||
return constraint;
|
||||
@ -212,6 +343,7 @@ meta_wayland_pointer_constraint_enable (MetaWaylandPointerConstraint *constraint
|
||||
static void
|
||||
meta_wayland_pointer_constraint_disable (MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
constraint->is_enabled = FALSE;
|
||||
meta_wayland_pointer_constraint_notify_deactivated (constraint);
|
||||
meta_wayland_pointer_end_grab (constraint->grab.pointer);
|
||||
meta_backend_set_client_pointer_constraint (meta_get_backend (), NULL);
|
||||
@ -224,7 +356,7 @@ meta_wayland_pointer_constraint_destroy (MetaWaylandPointerConstraint *constrain
|
||||
meta_wayland_pointer_constraint_disable (constraint);
|
||||
|
||||
wl_resource_set_user_data (constraint->resource, NULL);
|
||||
cairo_region_destroy (constraint->region);
|
||||
g_clear_pointer (&constraint->region, cairo_region_destroy);
|
||||
g_object_unref (constraint);
|
||||
}
|
||||
|
||||
@ -237,7 +369,7 @@ is_within_constraint_region (MetaWaylandPointerConstraint *constraint,
|
||||
gboolean is_within;
|
||||
|
||||
region = meta_wayland_pointer_constraint_calculate_effective_region (constraint);
|
||||
is_within = cairo_region_contains_point (constraint->region,
|
||||
is_within = cairo_region_contains_point (region,
|
||||
wl_fixed_to_int (sx),
|
||||
wl_fixed_to_int (sy));
|
||||
cairo_region_destroy (region);
|
||||
@ -245,16 +377,21 @@ is_within_constraint_region (MetaWaylandPointerConstraint *constraint,
|
||||
return is_within;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
meta_wayland_pointer_constraint_maybe_enable (MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
MetaWaylandSeat *seat = constraint->seat;
|
||||
wl_fixed_t sx, sy;
|
||||
|
||||
if (constraint->is_enabled)
|
||||
return;
|
||||
|
||||
if (seat->keyboard.focus_surface != constraint->surface)
|
||||
if (!constraint->surface->window)
|
||||
{
|
||||
g_warn_if_reached ();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!meta_window_appears_focused (constraint->surface->window))
|
||||
return;
|
||||
|
||||
meta_wayland_pointer_get_relative_coordinates (&constraint->seat->pointer,
|
||||
@ -271,49 +408,59 @@ meta_wayland_pointer_constraint_remove (MetaWaylandPointerConstraint *constraint
|
||||
{
|
||||
MetaWaylandSurface *surface = constraint->surface;
|
||||
|
||||
meta_wayland_surface_remove_pointer_constraint (surface, constraint);
|
||||
surface_remove_pointer_constraints (surface, constraint);
|
||||
meta_wayland_pointer_constraint_destroy (constraint);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_pointer_constraint_maybe_remove_for_seat (MetaWaylandSeat *seat,
|
||||
MetaWindow *focus_window)
|
||||
MetaWindow *window)
|
||||
{
|
||||
MetaWaylandPointer *pointer = &seat->pointer;
|
||||
MetaWaylandPointerConstraint *constraint;
|
||||
|
||||
if ((pointer->grab->interface == &confined_pointer_grab_interface ||
|
||||
pointer->grab->interface == &locked_pointer_grab_interface) &&
|
||||
pointer->focus_surface &&
|
||||
pointer->focus_surface->window != focus_window)
|
||||
if ((pointer->grab->interface != &confined_pointer_grab_interface &&
|
||||
pointer->grab->interface != &locked_pointer_grab_interface))
|
||||
return;
|
||||
|
||||
constraint = wl_container_of (pointer->grab, constraint, grab);
|
||||
|
||||
if (constraint->surface != window->surface)
|
||||
return;
|
||||
|
||||
if (meta_window_appears_focused (window) &&
|
||||
pointer->focus_surface == window->surface)
|
||||
return;
|
||||
|
||||
switch (constraint->lifetime)
|
||||
{
|
||||
MetaWaylandPointerConstraint *constraint =
|
||||
wl_container_of (pointer->grab, constraint, grab);
|
||||
case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT:
|
||||
meta_wayland_pointer_constraint_remove (constraint);
|
||||
break;
|
||||
|
||||
switch (constraint->lifetime)
|
||||
{
|
||||
case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT:
|
||||
meta_wayland_pointer_constraint_remove (constraint);
|
||||
break;
|
||||
case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT:
|
||||
meta_wayland_pointer_constraint_disable (constraint);
|
||||
break;
|
||||
|
||||
case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT:
|
||||
meta_wayland_pointer_constraint_disable (constraint);
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
meta_wayland_pointer_constraint_maybe_enable_for_window (MetaWindow *window)
|
||||
{
|
||||
MetaWaylandSurface *surface = window->surface;
|
||||
GList *it;
|
||||
MetaWaylandSurfacePointerConstraintsData *surface_data;
|
||||
GList *l;
|
||||
|
||||
for (it = surface->pointer_constraints; it; it = it->next)
|
||||
surface_data = get_surface_constraints_data (surface);
|
||||
if (!surface_data)
|
||||
return;
|
||||
|
||||
for (l = surface_data->pointer_constraints; l; l = l->next)
|
||||
{
|
||||
MetaWaylandPointerConstraint *constraint = it->data;
|
||||
MetaWaylandPointerConstraint *constraint = l->data;
|
||||
|
||||
meta_wayland_pointer_constraint_maybe_enable (constraint);
|
||||
}
|
||||
@ -330,18 +477,13 @@ meta_wayland_pointer_constraint_calculate_effective_region (MetaWaylandPointerCo
|
||||
{
|
||||
cairo_region_t *region;
|
||||
|
||||
region = cairo_region_copy (constraint->surface->input_region);
|
||||
cairo_region_intersect (region, constraint->region);
|
||||
region = meta_wayland_surface_calculate_input_region (constraint->surface);
|
||||
if (constraint->region)
|
||||
cairo_region_intersect (region, constraint->region);
|
||||
|
||||
return region;
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_wayland_pointer_constraint_get_region (MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
return constraint->region;
|
||||
}
|
||||
|
||||
MetaWaylandSurface *
|
||||
meta_wayland_pointer_constraint_get_surface (MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
@ -460,7 +602,7 @@ pending_constraint_state_applied (MetaWaylandPendingState *pending,
|
||||
}
|
||||
else
|
||||
{
|
||||
constraint->region = create_infinite_constraint_region ();
|
||||
constraint->region = NULL;
|
||||
}
|
||||
|
||||
g_signal_handler_disconnect (pending,
|
||||
@ -516,6 +658,28 @@ meta_wayland_pointer_constraint_set_pending_region (MetaWaylandPointerConstraint
|
||||
}
|
||||
}
|
||||
|
||||
static MetaWaylandPointerConstraint *
|
||||
get_pointer_constraint_for_seat (MetaWaylandSurface *surface,
|
||||
MetaWaylandSeat *seat)
|
||||
{
|
||||
MetaWaylandSurfacePointerConstraintsData *surface_data;
|
||||
GList *l;
|
||||
|
||||
surface_data = get_surface_constraints_data (surface);
|
||||
if (!surface_data)
|
||||
return NULL;
|
||||
|
||||
for (l = surface_data->pointer_constraints; l; l = l->next)
|
||||
{
|
||||
MetaWaylandPointerConstraint *constraint = l->data;
|
||||
|
||||
if (seat == constraint->seat)
|
||||
return constraint;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
init_pointer_constraint (struct wl_resource *resource,
|
||||
uint32_t id,
|
||||
@ -531,7 +695,7 @@ init_pointer_constraint (struct wl_resource *resource,
|
||||
struct wl_resource *cr;
|
||||
MetaWaylandPointerConstraint *constraint;
|
||||
|
||||
if (meta_wayland_surface_get_pointer_constraint_for_seat (surface, seat))
|
||||
if (get_pointer_constraint_for_seat (surface, seat))
|
||||
{
|
||||
wl_resource_post_error (resource,
|
||||
WL_DISPLAY_ERROR_INVALID_OBJECT,
|
||||
@ -559,7 +723,7 @@ init_pointer_constraint (struct wl_resource *resource,
|
||||
return;
|
||||
}
|
||||
|
||||
meta_wayland_surface_add_pointer_constraint (surface, constraint);
|
||||
surface_add_pointer_constraint (surface, constraint);
|
||||
|
||||
wl_resource_set_implementation (cr, implementation, constraint,
|
||||
pointer_constraint_resource_destroyed);
|
||||
@ -610,7 +774,7 @@ locked_pointer_set_cursor_position_hint (struct wl_client *client,
|
||||
|
||||
/* Ignore a set cursor hint that was already sent after the constraint
|
||||
* was cancelled. */
|
||||
if (!constraint->resource || constraint->resource != resource)
|
||||
if (!constraint || !constraint->resource || constraint->resource != resource)
|
||||
return;
|
||||
|
||||
constraint->hint_set = TRUE;
|
||||
@ -628,6 +792,9 @@ locked_pointer_set_region (struct wl_client *client,
|
||||
MetaWaylandRegion *region =
|
||||
region_resource ? wl_resource_get_user_data (region_resource) : NULL;
|
||||
|
||||
if (!constraint)
|
||||
return;
|
||||
|
||||
meta_wayland_pointer_constraint_set_pending_region (constraint, region);
|
||||
}
|
||||
|
||||
@ -741,6 +908,9 @@ confined_pointer_set_region (struct wl_client *client,
|
||||
MetaWaylandRegion *region =
|
||||
region_resource ? wl_resource_get_user_data (region_resource) : NULL;
|
||||
|
||||
if (!constraint)
|
||||
return;
|
||||
|
||||
meta_wayland_pointer_constraint_set_pending_region (constraint, region);
|
||||
}
|
||||
|
||||
@ -815,4 +985,6 @@ meta_wayland_pointer_constraint_class_init (MetaWaylandPointerConstraintClass *k
|
||||
{
|
||||
quark_pending_constraint_state =
|
||||
g_quark_from_static_string ("-meta-wayland-pointer-constraint-pending_state");
|
||||
quark_surface_pointer_constraints_data =
|
||||
g_quark_from_static_string ("-meta-wayland-surface-constraints-data");
|
||||
}
|
||||
|
@ -36,25 +36,12 @@ G_DECLARE_FINAL_TYPE (MetaWaylandPointerConstraint,
|
||||
META, WAYLAND_POINTER_CONSTRAINT,
|
||||
GObject);
|
||||
|
||||
typedef struct _MetaWaylandPointerConstraint MetaWaylandPointerConstraint;
|
||||
|
||||
void meta_wayland_pointer_constraints_init (MetaWaylandCompositor *compositor);
|
||||
|
||||
void meta_wayland_pointer_constraint_maybe_enable (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
void meta_wayland_pointer_constraint_destroy (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
MetaWaylandSeat * meta_wayland_pointer_constraint_get_seat (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
cairo_region_t * meta_wayland_pointer_constraint_calculate_effective_region (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
cairo_region_t * meta_wayland_pointer_constraint_get_region (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
MetaWaylandSurface * meta_wayland_pointer_constraint_get_surface (MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
void meta_wayland_pointer_constraint_maybe_remove_for_seat (MetaWaylandSeat *seat,
|
||||
MetaWindow *focus_window);
|
||||
|
||||
void meta_wayland_pointer_constraint_maybe_enable_for_window (MetaWindow *window);
|
||||
|
||||
#endif /* META_WAYLAND_POINTER_CONSTRAINTS_H */
|
||||
|
@ -80,6 +80,8 @@ struct _MetaWaylandSurfaceRoleCursor
|
||||
int hot_x;
|
||||
int hot_y;
|
||||
MetaCursorSprite *cursor_sprite;
|
||||
|
||||
MetaWaylandBuffer *buffer;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaWaylandSurfaceRoleCursor,
|
||||
@ -863,8 +865,7 @@ meta_wayland_pointer_start_grab (MetaWaylandPointer *pointer,
|
||||
interface = pointer->grab->interface;
|
||||
grab->pointer = pointer;
|
||||
|
||||
if (pointer->current)
|
||||
interface->focus (pointer->grab, pointer->current);
|
||||
interface->focus (pointer->grab, pointer->current);
|
||||
}
|
||||
|
||||
void
|
||||
@ -967,28 +968,30 @@ update_cursor_sprite_texture (MetaWaylandSurface *surface)
|
||||
MetaWaylandSurfaceRoleCursor *cursor_role =
|
||||
META_WAYLAND_SURFACE_ROLE_CURSOR (surface->role);
|
||||
MetaCursorSprite *cursor_sprite = cursor_role->cursor_sprite;
|
||||
ClutterBackend *clutter_backend = clutter_get_default_backend ();
|
||||
CoglContext *cogl_context =
|
||||
clutter_backend_get_cogl_context (clutter_backend);
|
||||
CoglTexture *texture;
|
||||
MetaWaylandBuffer *buffer = meta_wayland_surface_get_buffer (surface);
|
||||
|
||||
if (surface->buffer)
|
||||
g_return_if_fail (!buffer || buffer->texture);
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
struct wl_resource *buffer;
|
||||
|
||||
buffer = surface->buffer->resource;
|
||||
texture = cogl_wayland_texture_2d_new_from_buffer (cogl_context,
|
||||
buffer,
|
||||
NULL);
|
||||
|
||||
meta_cursor_sprite_set_texture (cursor_sprite,
|
||||
texture,
|
||||
buffer->texture,
|
||||
cursor_role->hot_x * surface->scale,
|
||||
cursor_role->hot_y * surface->scale);
|
||||
meta_cursor_renderer_realize_cursor_from_wl_buffer (cursor_renderer,
|
||||
cursor_sprite,
|
||||
buffer);
|
||||
cogl_object_unref (texture);
|
||||
|
||||
if (cursor_role->buffer)
|
||||
{
|
||||
struct wl_resource *buffer_resource;
|
||||
|
||||
g_assert (cursor_role->buffer == buffer);
|
||||
buffer_resource = buffer->resource;
|
||||
meta_cursor_renderer_realize_cursor_from_wl_buffer (cursor_renderer,
|
||||
cursor_sprite,
|
||||
buffer_resource);
|
||||
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&cursor_role->buffer);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1014,8 +1017,9 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite,
|
||||
if (!meta_xwayland_is_xwayland_surface (surface))
|
||||
{
|
||||
monitor = meta_screen_get_monitor_for_point (screen, x, y);
|
||||
meta_cursor_sprite_set_texture_scale (cursor_sprite,
|
||||
(float)monitor->scale / surface->scale);
|
||||
if (monitor)
|
||||
meta_cursor_sprite_set_texture_scale (cursor_sprite,
|
||||
(float)monitor->scale / surface->scale);
|
||||
}
|
||||
meta_wayland_surface_update_outputs (surface);
|
||||
}
|
||||
@ -1134,8 +1138,7 @@ meta_wayland_pointer_can_grab_surface (MetaWaylandPointer *pointer,
|
||||
MetaWaylandSurface *surface,
|
||||
uint32_t serial)
|
||||
{
|
||||
return (pointer->button_count > 0 &&
|
||||
pointer->grab_serial == serial &&
|
||||
return (pointer->grab_serial == serial &&
|
||||
pointer->focus_surface == surface);
|
||||
}
|
||||
|
||||
@ -1262,18 +1265,53 @@ meta_wayland_pointer_get_seat (MetaWaylandPointer *pointer)
|
||||
static void
|
||||
cursor_surface_role_assigned (MetaWaylandSurfaceRole *surface_role)
|
||||
{
|
||||
MetaWaylandSurfaceRoleCursor *cursor_role =
|
||||
META_WAYLAND_SURFACE_ROLE_CURSOR (surface_role);
|
||||
MetaWaylandSurface *surface =
|
||||
meta_wayland_surface_role_get_surface (surface_role);
|
||||
MetaWaylandBuffer *buffer = meta_wayland_surface_get_buffer (surface);
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
g_set_object (&cursor_role->buffer, buffer);
|
||||
meta_wayland_surface_ref_buffer_use_count (surface);
|
||||
}
|
||||
|
||||
meta_wayland_surface_queue_pending_frame_callbacks (surface);
|
||||
}
|
||||
|
||||
static void
|
||||
cursor_surface_role_pre_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending)
|
||||
{
|
||||
MetaWaylandSurfaceRoleCursor *cursor_role =
|
||||
META_WAYLAND_SURFACE_ROLE_CURSOR (surface_role);
|
||||
MetaWaylandSurface *surface =
|
||||
meta_wayland_surface_role_get_surface (surface_role);
|
||||
|
||||
meta_wayland_surface_queue_pending_frame_callbacks (surface);
|
||||
if (pending->newly_attached && cursor_role->buffer)
|
||||
{
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&cursor_role->buffer);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
cursor_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending)
|
||||
{
|
||||
MetaWaylandSurfaceRoleCursor *cursor_role =
|
||||
META_WAYLAND_SURFACE_ROLE_CURSOR (surface_role);
|
||||
MetaWaylandSurface *surface =
|
||||
meta_wayland_surface_role_get_surface (surface_role);
|
||||
MetaWaylandBuffer *buffer = meta_wayland_surface_get_buffer (surface);
|
||||
|
||||
if (pending->newly_attached)
|
||||
{
|
||||
g_set_object (&cursor_role->buffer, buffer);
|
||||
if (cursor_role->buffer)
|
||||
meta_wayland_surface_ref_buffer_use_count (surface);
|
||||
}
|
||||
|
||||
meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending);
|
||||
|
||||
@ -1321,11 +1359,6 @@ cursor_surface_role_dispose (GObject *object)
|
||||
meta_wayland_surface_role_get_surface (META_WAYLAND_SURFACE_ROLE (object));
|
||||
MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
|
||||
MetaWaylandPointer *pointer = &compositor->seat->pointer;
|
||||
MetaCursorTracker *cursor_tracker = meta_cursor_tracker_get_for_screen (NULL);
|
||||
|
||||
g_signal_handlers_disconnect_by_func (cursor_tracker,
|
||||
(gpointer) cursor_sprite_prepare_at,
|
||||
cursor_role);
|
||||
|
||||
if (pointer->cursor_surface == surface)
|
||||
pointer->cursor_surface = NULL;
|
||||
@ -1333,6 +1366,12 @@ cursor_surface_role_dispose (GObject *object)
|
||||
|
||||
g_clear_object (&cursor_role->cursor_sprite);
|
||||
|
||||
if (cursor_role->buffer)
|
||||
{
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&cursor_role->buffer);
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (meta_wayland_surface_role_cursor_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
@ -1349,6 +1388,7 @@ meta_wayland_surface_role_cursor_class_init (MetaWaylandSurfaceRoleCursorClass *
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
surface_role_class->assigned = cursor_surface_role_assigned;
|
||||
surface_role_class->pre_commit = cursor_surface_role_pre_commit;
|
||||
surface_role_class->commit = cursor_surface_role_commit;
|
||||
surface_role_class->is_on_output = cursor_surface_role_is_on_output;
|
||||
|
||||
|
@ -374,10 +374,11 @@ meta_wayland_seat_set_input_focus (MetaWaylandSeat *seat,
|
||||
|
||||
gboolean
|
||||
meta_wayland_seat_get_grab_info (MetaWaylandSeat *seat,
|
||||
MetaWaylandSurface *surface,
|
||||
uint32_t serial,
|
||||
gfloat *x,
|
||||
gfloat *y)
|
||||
MetaWaylandSurface *surface,
|
||||
uint32_t serial,
|
||||
gboolean require_pressed,
|
||||
gfloat *x,
|
||||
gfloat *y)
|
||||
{
|
||||
ClutterEventSequence *sequence = NULL;
|
||||
gboolean can_grab_surface = FALSE;
|
||||
@ -391,7 +392,8 @@ meta_wayland_seat_get_grab_info (MetaWaylandSeat *seat,
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((seat->capabilities & WL_SEAT_CAPABILITY_POINTER) != 0)
|
||||
if ((seat->capabilities & WL_SEAT_CAPABILITY_POINTER) != 0 &&
|
||||
(!require_pressed || seat->pointer.button_count > 0))
|
||||
can_grab_surface = meta_wayland_pointer_can_grab_surface (&seat->pointer, surface, serial);
|
||||
|
||||
if (can_grab_surface)
|
||||
|
@ -60,10 +60,11 @@ void meta_wayland_seat_set_input_focus (MetaWaylandSeat *seat,
|
||||
void meta_wayland_seat_repick (MetaWaylandSeat *seat);
|
||||
|
||||
gboolean meta_wayland_seat_get_grab_info (MetaWaylandSeat *seat,
|
||||
MetaWaylandSurface *surface,
|
||||
uint32_t serial,
|
||||
gfloat *x,
|
||||
gfloat *y);
|
||||
MetaWaylandSurface *surface,
|
||||
uint32_t serial,
|
||||
gboolean require_pressed,
|
||||
gfloat *x,
|
||||
gfloat *y);
|
||||
gboolean meta_wayland_seat_can_popup (MetaWaylandSeat *seat,
|
||||
uint32_t serial);
|
||||
|
||||
|
@ -48,6 +48,7 @@
|
||||
#include "display-private.h"
|
||||
#include "window-private.h"
|
||||
#include "meta-window-wayland.h"
|
||||
#include "bell.h"
|
||||
|
||||
#include "compositor/region-utils.h"
|
||||
|
||||
@ -139,6 +140,10 @@ G_DEFINE_TYPE (MetaWaylandSurfaceRoleDND,
|
||||
static void
|
||||
meta_wayland_surface_role_assigned (MetaWaylandSurfaceRole *surface_role);
|
||||
|
||||
static void
|
||||
meta_wayland_surface_role_pre_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending);
|
||||
|
||||
static void
|
||||
meta_wayland_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending);
|
||||
@ -162,6 +167,13 @@ meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
|
||||
|
||||
meta_wayland_surface_role_assigned (surface->role);
|
||||
|
||||
/* Release the use count held on behalf of the just assigned role. */
|
||||
if (surface->unassigned.buffer)
|
||||
{
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&surface->unassigned.buffer);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else if (G_OBJECT_TYPE (surface->role) != role_type)
|
||||
@ -174,75 +186,29 @@ meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
surface_use_buffer (MetaWaylandSurface *surface)
|
||||
{
|
||||
g_return_if_fail (!surface->using_buffer);
|
||||
|
||||
meta_wayland_buffer_ref_use_count (surface->buffer);
|
||||
surface->using_buffer = TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
surface_stop_using_buffer (MetaWaylandSurface *surface)
|
||||
{
|
||||
if (!surface->using_buffer)
|
||||
return;
|
||||
|
||||
meta_wayland_buffer_unref_use_count (surface->buffer);
|
||||
surface->using_buffer = FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
surface_set_buffer (MetaWaylandSurface *surface,
|
||||
MetaWaylandBuffer *buffer)
|
||||
{
|
||||
if (surface->buffer == buffer)
|
||||
return;
|
||||
|
||||
if (surface->buffer)
|
||||
{
|
||||
wl_list_remove (&surface->buffer_destroy_listener.link);
|
||||
|
||||
surface_stop_using_buffer (surface);
|
||||
meta_wayland_buffer_unref (surface->buffer);
|
||||
}
|
||||
|
||||
surface->buffer = buffer;
|
||||
|
||||
if (surface->buffer)
|
||||
{
|
||||
meta_wayland_buffer_ref (surface->buffer);
|
||||
wl_signal_add (&surface->buffer->destroy_signal, &surface->buffer_destroy_listener);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
surface_handle_buffer_destroy (struct wl_listener *listener, void *data)
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_container_of (listener, surface, buffer_destroy_listener);
|
||||
|
||||
surface_set_buffer (surface, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
surface_process_damage (MetaWaylandSurface *surface,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
MetaWaylandBuffer *buffer = surface->buffer_ref.buffer;
|
||||
unsigned int buffer_width;
|
||||
unsigned int buffer_height;
|
||||
cairo_rectangle_int_t surface_rect;
|
||||
cairo_region_t *scaled_region;
|
||||
int i, n_rectangles;
|
||||
|
||||
if (!surface->buffer)
|
||||
/* If the client destroyed the buffer it attached before committing, but
|
||||
* still posted damage, or posted damage without any buffer, don't try to
|
||||
* process it on the non-existing buffer.
|
||||
*/
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
/* Intersect the damage region with the surface region before scaling in
|
||||
* order to avoid integer overflow when scaling a damage region is too large
|
||||
* (for example INT32_MAX which mesa passes). */
|
||||
buffer_width = cogl_texture_get_width (surface->buffer->texture);
|
||||
buffer_height = cogl_texture_get_height (surface->buffer->texture);
|
||||
buffer_width = cogl_texture_get_width (buffer->texture);
|
||||
buffer_height = cogl_texture_get_height (buffer->texture);
|
||||
surface_rect = (cairo_rectangle_int_t) {
|
||||
.width = buffer_width / surface->scale,
|
||||
.height = buffer_height / surface->scale,
|
||||
@ -254,7 +220,7 @@ surface_process_damage (MetaWaylandSurface *surface,
|
||||
scaled_region = meta_region_scale (region, surface->scale);
|
||||
|
||||
/* First update the buffer. */
|
||||
meta_wayland_buffer_process_damage (surface->buffer, scaled_region);
|
||||
meta_wayland_buffer_process_damage (buffer, scaled_region);
|
||||
|
||||
/* Now damage the actor. The actor expects damage in the unscaled texture
|
||||
* coordinate space, i.e. same as the buffer. */
|
||||
@ -308,7 +274,7 @@ calculate_surface_window_geometry (MetaWaylandSurface *surface,
|
||||
if (!CLUTTER_ACTOR_IS_VISIBLE (CLUTTER_ACTOR (surface_actor)))
|
||||
return;
|
||||
|
||||
if (!surface->buffer)
|
||||
if (!surface->buffer_ref.buffer)
|
||||
return;
|
||||
|
||||
meta_surface_actor_wayland_get_subsurface_rect (surface_actor,
|
||||
@ -344,6 +310,36 @@ destroy_window (MetaWaylandSurface *surface)
|
||||
g_assert (surface->window == NULL);
|
||||
}
|
||||
|
||||
MetaWaylandBuffer *
|
||||
meta_wayland_surface_get_buffer (MetaWaylandSurface *surface)
|
||||
{
|
||||
return surface->buffer_ref.buffer;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_ref_buffer_use_count (MetaWaylandSurface *surface)
|
||||
{
|
||||
g_return_if_fail (surface->buffer_ref.buffer);
|
||||
g_warn_if_fail (surface->buffer_ref.buffer->resource);
|
||||
|
||||
surface->buffer_ref.use_count++;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_unref_buffer_use_count (MetaWaylandSurface *surface)
|
||||
{
|
||||
MetaWaylandBuffer *buffer = surface->buffer_ref.buffer;
|
||||
|
||||
g_return_if_fail (surface->buffer_ref.use_count != 0);
|
||||
|
||||
surface->buffer_ref.use_count--;
|
||||
|
||||
g_return_if_fail (buffer);
|
||||
|
||||
if (surface->buffer_ref.use_count == 0 && buffer->resource)
|
||||
wl_resource_queue_event (buffer->resource, WL_BUFFER_RELEASE);
|
||||
}
|
||||
|
||||
static void
|
||||
queue_surface_actor_frame_callbacks (MetaWaylandSurface *surface,
|
||||
MetaWaylandPendingState *pending)
|
||||
@ -362,6 +358,7 @@ toplevel_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
{
|
||||
MetaWaylandSurface *surface =
|
||||
meta_wayland_surface_role_get_surface (surface_role);
|
||||
MetaWaylandBuffer *buffer = surface->buffer_ref.buffer;
|
||||
MetaWindow *window = surface->window;
|
||||
|
||||
queue_surface_actor_frame_callbacks (surface, pending);
|
||||
@ -377,12 +374,12 @@ toplevel_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
/* For wl_shell, it's equivalent to an unmap. Semantics
|
||||
* are poorly defined, so we can choose some that are
|
||||
* convenient for us. */
|
||||
if (surface->buffer && !window)
|
||||
if (buffer && !window)
|
||||
{
|
||||
window = meta_window_wayland_new (meta_get_display (), surface);
|
||||
meta_wayland_surface_set_window (surface, window);
|
||||
}
|
||||
else if (surface->buffer == NULL && window)
|
||||
else if (buffer == NULL && window)
|
||||
{
|
||||
destroy_window (surface);
|
||||
return;
|
||||
@ -390,7 +387,7 @@ toplevel_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (surface->buffer == NULL)
|
||||
if (buffer == NULL)
|
||||
{
|
||||
/* XDG surfaces can't commit NULL buffers */
|
||||
wl_resource_post_error (surface->resource,
|
||||
@ -408,7 +405,7 @@ toplevel_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
{
|
||||
MetaRectangle geom = { 0 };
|
||||
|
||||
CoglTexture *texture = surface->buffer->texture;
|
||||
CoglTexture *texture = buffer->texture;
|
||||
/* Update the buffer rect immediately. */
|
||||
window->buffer_rect.width = cogl_texture_get_width (texture);
|
||||
window->buffer_rect.height = cogl_texture_get_height (texture);
|
||||
@ -450,11 +447,11 @@ toplevel_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
}
|
||||
|
||||
static void
|
||||
surface_handle_pending_buffer_destroy (struct wl_listener *listener, void *data)
|
||||
pending_buffer_resource_destroyed (MetaWaylandBuffer *buffer,
|
||||
MetaWaylandPendingState *pending)
|
||||
{
|
||||
MetaWaylandPendingState *state = wl_container_of (listener, state, buffer_destroy_listener);
|
||||
|
||||
state->buffer = NULL;
|
||||
g_signal_handler_disconnect (buffer, pending->buffer_destroy_handler_id);
|
||||
pending->buffer = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -472,7 +469,6 @@ pending_state_init (MetaWaylandPendingState *state)
|
||||
state->opaque_region_set = FALSE;
|
||||
|
||||
state->damage = cairo_region_create ();
|
||||
state->buffer_destroy_listener.notify = surface_handle_pending_buffer_destroy;
|
||||
wl_list_init (&state->frame_callback_list);
|
||||
|
||||
state->has_new_geometry = FALSE;
|
||||
@ -488,7 +484,8 @@ pending_state_destroy (MetaWaylandPendingState *state)
|
||||
g_clear_pointer (&state->opaque_region, cairo_region_destroy);
|
||||
|
||||
if (state->buffer)
|
||||
wl_list_remove (&state->buffer_destroy_listener.link);
|
||||
g_signal_handler_disconnect (state->buffer,
|
||||
state->buffer_destroy_handler_id);
|
||||
wl_list_for_each_safe (cb, next, &state->frame_callback_list, link)
|
||||
wl_resource_destroy (cb->resource);
|
||||
}
|
||||
@ -505,7 +502,7 @@ move_pending_state (MetaWaylandPendingState *from,
|
||||
MetaWaylandPendingState *to)
|
||||
{
|
||||
if (from->buffer)
|
||||
wl_list_remove (&from->buffer_destroy_listener.link);
|
||||
g_signal_handler_disconnect (from->buffer, from->buffer_destroy_handler_id);
|
||||
|
||||
to->newly_attached = from->newly_attached;
|
||||
to->buffer = from->buffer;
|
||||
@ -524,7 +521,12 @@ move_pending_state (MetaWaylandPendingState *from,
|
||||
wl_list_insert_list (&to->frame_callback_list, &from->frame_callback_list);
|
||||
|
||||
if (to->buffer)
|
||||
wl_signal_add (&to->buffer->destroy_signal, &to->buffer_destroy_listener);
|
||||
{
|
||||
to->buffer_destroy_handler_id =
|
||||
g_signal_connect (to->buffer, "resource-destroyed",
|
||||
G_CALLBACK (pending_buffer_resource_destroyed),
|
||||
to);
|
||||
}
|
||||
|
||||
pending_state_init (from);
|
||||
}
|
||||
@ -572,7 +574,7 @@ subsurface_surface_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
|
||||
queue_surface_actor_frame_callbacks (surface, pending);
|
||||
|
||||
if (surface->buffer != NULL)
|
||||
if (surface->buffer_ref.buffer != NULL)
|
||||
clutter_actor_show (CLUTTER_ACTOR (surface_actor));
|
||||
else
|
||||
clutter_actor_hide (CLUTTER_ACTOR (surface_actor));
|
||||
@ -669,28 +671,59 @@ static void
|
||||
apply_pending_state (MetaWaylandSurface *surface,
|
||||
MetaWaylandPendingState *pending)
|
||||
{
|
||||
gboolean release_new_buffer = FALSE;
|
||||
MetaSurfaceActorWayland *surface_actor_wayland =
|
||||
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor);
|
||||
|
||||
if (surface->role)
|
||||
{
|
||||
meta_wayland_surface_role_pre_commit (surface->role, pending);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pending->newly_attached && surface->unassigned.buffer)
|
||||
{
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&surface->unassigned.buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (pending->newly_attached)
|
||||
{
|
||||
if (!surface->buffer && surface->window)
|
||||
gboolean switched_buffer;
|
||||
|
||||
if (!surface->buffer_ref.buffer && surface->window)
|
||||
meta_window_queue (surface->window, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
surface_set_buffer (surface, pending->buffer);
|
||||
/* Always release any previously held buffer. If the buffer held is same
|
||||
* as the newly attached buffer, we still need to release it here, because
|
||||
* wl_surface.attach+commit and wl_buffer.release on the attached buffer
|
||||
* is symmetric.
|
||||
*/
|
||||
if (surface->buffer_held)
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
|
||||
if (pending->buffer && !surface->using_buffer)
|
||||
switched_buffer = g_set_object (&surface->buffer_ref.buffer,
|
||||
pending->buffer);
|
||||
|
||||
if (pending->buffer)
|
||||
meta_wayland_surface_ref_buffer_use_count (surface);
|
||||
|
||||
if (switched_buffer && pending->buffer)
|
||||
{
|
||||
struct wl_shm_buffer *shm_buffer = wl_shm_buffer_get (pending->buffer->resource);
|
||||
CoglTexture *texture;
|
||||
|
||||
surface_use_buffer (surface);
|
||||
CoglTexture *texture = meta_wayland_buffer_ensure_texture (pending->buffer);
|
||||
meta_surface_actor_wayland_set_texture (META_SURFACE_ACTOR_WAYLAND (surface->surface_actor), texture);
|
||||
|
||||
/* Release the buffer as soon as possible, so the client can reuse it
|
||||
*/
|
||||
if (shm_buffer)
|
||||
release_new_buffer = TRUE;
|
||||
texture = meta_wayland_buffer_ensure_texture (pending->buffer);
|
||||
meta_surface_actor_wayland_set_texture (surface_actor_wayland,
|
||||
texture);
|
||||
}
|
||||
|
||||
/* If the newly attached buffer is going to be accessed directly without
|
||||
* making a copy, such as an EGL buffer, mark it as in-use don't release
|
||||
* it until is replaced by a subsequent wl_surface.commit or when the
|
||||
* wl_surface is destroyed.
|
||||
*/
|
||||
surface->buffer_held = (pending->buffer &&
|
||||
!wl_shm_buffer_get (pending->buffer->resource));
|
||||
}
|
||||
|
||||
if (pending->scale > 0)
|
||||
@ -699,9 +732,6 @@ apply_pending_state (MetaWaylandSurface *surface,
|
||||
if (!cairo_region_is_empty (pending->damage))
|
||||
surface_process_damage (surface, pending->damage);
|
||||
|
||||
if (release_new_buffer)
|
||||
surface_stop_using_buffer (surface);
|
||||
|
||||
surface->offset_x += pending->dx;
|
||||
surface->offset_y += pending->dy;
|
||||
|
||||
@ -739,14 +769,31 @@ apply_pending_state (MetaWaylandSurface *surface,
|
||||
wl_list_insert_list (&surface->pending_frame_callback_list,
|
||||
&pending->frame_callback_list);
|
||||
wl_list_init (&pending->frame_callback_list);
|
||||
|
||||
if (pending->newly_attached)
|
||||
{
|
||||
/* The need to keep the wl_buffer from being released depends on what
|
||||
* role the surface is given. That means we need to also keep a use
|
||||
* count for wl_buffer's that are used by unassigned wl_surface's.
|
||||
*/
|
||||
g_set_object (&surface->unassigned.buffer, surface->buffer_ref.buffer);
|
||||
if (surface->unassigned.buffer)
|
||||
meta_wayland_surface_ref_buffer_use_count (surface);
|
||||
}
|
||||
}
|
||||
|
||||
/* If we have a buffer that we are not using, decrease the use count so it may
|
||||
* be released if no-one else has a use-reference to it.
|
||||
*/
|
||||
if (pending->newly_attached &&
|
||||
!surface->buffer_held && surface->buffer_ref.buffer)
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
|
||||
g_signal_emit (pending,
|
||||
pending_state_signals[PENDING_STATE_SIGNAL_APPLIED],
|
||||
0);
|
||||
|
||||
meta_surface_actor_wayland_sync_state (
|
||||
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor));
|
||||
meta_surface_actor_wayland_sync_state (surface_actor_wayland);
|
||||
|
||||
pending_state_reset (pending);
|
||||
|
||||
@ -797,7 +844,10 @@ wl_surface_attach (struct wl_client *client,
|
||||
buffer = NULL;
|
||||
|
||||
if (surface->pending->buffer)
|
||||
wl_list_remove (&surface->pending->buffer_destroy_listener.link);
|
||||
{
|
||||
g_signal_handler_disconnect (surface->pending->buffer,
|
||||
surface->pending->buffer_destroy_handler_id);
|
||||
}
|
||||
|
||||
surface->pending->newly_attached = TRUE;
|
||||
surface->pending->buffer = buffer;
|
||||
@ -805,8 +855,12 @@ wl_surface_attach (struct wl_client *client,
|
||||
surface->pending->dy = dy;
|
||||
|
||||
if (buffer)
|
||||
wl_signal_add (&buffer->destroy_signal,
|
||||
&surface->pending->buffer_destroy_listener);
|
||||
{
|
||||
surface->pending->buffer_destroy_handler_id =
|
||||
g_signal_connect (buffer, "resource-destroyed",
|
||||
G_CALLBACK (pending_buffer_resource_destroyed),
|
||||
surface->pending);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1128,10 +1182,16 @@ wl_surface_destructor (struct wl_resource *resource)
|
||||
if (surface->window)
|
||||
destroy_window (surface);
|
||||
|
||||
g_list_free_full (surface->pointer_constraints,
|
||||
(GDestroyNotify) meta_wayland_pointer_constraint_destroy);
|
||||
if (surface->unassigned.buffer)
|
||||
{
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&surface->unassigned.buffer);
|
||||
}
|
||||
|
||||
if (surface->buffer_held)
|
||||
meta_wayland_surface_unref_buffer_use_count (surface);
|
||||
g_clear_object (&surface->buffer_ref.buffer);
|
||||
|
||||
surface_set_buffer (surface, NULL);
|
||||
g_clear_object (&surface->pending);
|
||||
|
||||
if (surface->opaque_region)
|
||||
@ -1192,7 +1252,6 @@ meta_wayland_surface_create (MetaWaylandCompositor *compositor,
|
||||
surface->resource = wl_resource_create (client, &wl_surface_interface, wl_resource_get_version (compositor_resource), id);
|
||||
wl_resource_set_implementation (surface->resource, &meta_wayland_wl_surface_interface, surface, wl_surface_destructor);
|
||||
|
||||
surface->buffer_destroy_listener.notify = surface_handle_buffer_destroy;
|
||||
surface->surface_actor = g_object_ref_sink (meta_surface_actor_wayland_new (surface));
|
||||
|
||||
wl_list_init (&surface->pending_frame_callback_list);
|
||||
@ -1279,6 +1338,9 @@ xdg_surface_set_title (struct wl_client *client,
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!g_utf8_validate (title, -1, NULL))
|
||||
title = "";
|
||||
|
||||
meta_window_set_title (surface->window, title);
|
||||
}
|
||||
|
||||
@ -1289,6 +1351,9 @@ xdg_surface_set_app_id (struct wl_client *client,
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!g_utf8_validate (app_id, -1, NULL))
|
||||
app_id = "";
|
||||
|
||||
meta_window_set_wm_class (surface->window, app_id, app_id);
|
||||
}
|
||||
|
||||
@ -1303,7 +1368,7 @@ xdg_surface_show_window_menu (struct wl_client *client,
|
||||
MetaWaylandSeat *seat = wl_resource_get_user_data (seat_resource);
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, NULL, NULL))
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, FALSE, NULL, NULL))
|
||||
return;
|
||||
|
||||
meta_window_show_menu (surface->window, META_WINDOW_MENU_WM,
|
||||
@ -1323,12 +1388,15 @@ begin_grab_op_on_surface (MetaWaylandSurface *surface,
|
||||
if (grab_op == META_GRAB_OP_NONE)
|
||||
return FALSE;
|
||||
|
||||
/* This is an input driven operation so we set frame_action to
|
||||
constrain it in the same way as it would be if the window was
|
||||
being moved/resized via a SSD event. */
|
||||
return meta_display_begin_grab_op (window->display,
|
||||
window->screen,
|
||||
window,
|
||||
grab_op,
|
||||
TRUE, /* pointer_already_grabbed */
|
||||
FALSE, /* frame_action */
|
||||
TRUE, /* frame_action */
|
||||
1, /* button. XXX? */
|
||||
0, /* modmask */
|
||||
meta_display_get_current_time_roundtrip (window->display),
|
||||
@ -1345,7 +1413,7 @@ xdg_surface_move (struct wl_client *client,
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
gfloat x, y;
|
||||
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, &x, &y))
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, TRUE, &x, &y))
|
||||
return;
|
||||
|
||||
begin_grab_op_on_surface (surface, seat, META_GRAB_OP_MOVING, x, y);
|
||||
@ -1385,7 +1453,7 @@ xdg_surface_resize (struct wl_client *client,
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
gfloat x, y;
|
||||
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, &x, &y))
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, TRUE, &x, &y))
|
||||
return;
|
||||
|
||||
begin_grab_op_on_surface (surface, seat, grab_op_for_xdg_surface_resize_edge (edges), x, y);
|
||||
@ -1728,7 +1796,7 @@ wl_shell_surface_move (struct wl_client *client,
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
gfloat x, y;
|
||||
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, &x, &y))
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, TRUE, &x, &y))
|
||||
return;
|
||||
|
||||
begin_grab_op_on_surface (surface, seat, META_GRAB_OP_MOVING, x, y);
|
||||
@ -1768,7 +1836,7 @@ wl_shell_surface_resize (struct wl_client *client,
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
gfloat x, y;
|
||||
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, &x, &y))
|
||||
if (!meta_wayland_seat_get_grab_info (seat, surface, serial, TRUE, &x, &y))
|
||||
return;
|
||||
|
||||
begin_grab_op_on_surface (surface, seat, grab_op_for_wl_shell_surface_resize_edge (edges), x, y);
|
||||
@ -1902,6 +1970,9 @@ wl_shell_surface_set_title (struct wl_client *client,
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!g_utf8_validate (title, -1, NULL))
|
||||
title = "";
|
||||
|
||||
meta_window_set_title (surface->window, title);
|
||||
}
|
||||
|
||||
@ -1912,6 +1983,9 @@ wl_shell_surface_set_class (struct wl_client *client,
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (!g_utf8_validate (class_, -1, NULL))
|
||||
class_ = "";
|
||||
|
||||
meta_window_set_wm_class (surface->window, class_, class_);
|
||||
}
|
||||
|
||||
@ -2039,17 +2113,33 @@ gtk_surface_unset_modal (struct wl_client *client,
|
||||
meta_window_set_type (surface->window, META_WINDOW_NORMAL);
|
||||
}
|
||||
|
||||
static const struct gtk_surface_interface meta_wayland_gtk_surface_interface = {
|
||||
static void
|
||||
gtk_surface_present (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
uint32_t timestamp)
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
MetaWindow *window = surface->window;
|
||||
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
meta_window_activate_full (window, timestamp,
|
||||
META_CLIENT_TYPE_APPLICATION, NULL);
|
||||
}
|
||||
|
||||
static const struct gtk_surface1_interface meta_wayland_gtk_surface_interface = {
|
||||
gtk_surface_set_dbus_properties,
|
||||
gtk_surface_set_modal,
|
||||
gtk_surface_unset_modal,
|
||||
gtk_surface_present,
|
||||
};
|
||||
|
||||
static void
|
||||
get_gtk_surface (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
guint32 id,
|
||||
struct wl_resource *surface_resource)
|
||||
gtk_shell_get_gtk_surface (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
guint32 id,
|
||||
struct wl_resource *surface_resource)
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (surface_resource);
|
||||
|
||||
@ -2061,14 +2151,17 @@ get_gtk_surface (struct wl_client *client,
|
||||
return;
|
||||
}
|
||||
|
||||
surface->gtk_surface = wl_resource_create (client, >k_surface_interface, wl_resource_get_version (resource), id);
|
||||
surface->gtk_surface = wl_resource_create (client,
|
||||
>k_surface1_interface,
|
||||
wl_resource_get_version (resource),
|
||||
id);
|
||||
wl_resource_set_implementation (surface->gtk_surface, &meta_wayland_gtk_surface_interface, surface, gtk_surface_destructor);
|
||||
}
|
||||
|
||||
static void
|
||||
set_startup_id (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
const char *startup_id)
|
||||
gtk_shell_set_startup_id (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
const char *startup_id)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
|
||||
@ -2077,9 +2170,33 @@ set_startup_id (struct wl_client *client,
|
||||
startup_id);
|
||||
}
|
||||
|
||||
static const struct gtk_shell_interface meta_wayland_gtk_shell_interface = {
|
||||
get_gtk_surface,
|
||||
set_startup_id
|
||||
static void
|
||||
gtk_shell_system_bell (struct wl_client *client,
|
||||
struct wl_resource *resource,
|
||||
struct wl_resource *gtk_surface_resource)
|
||||
{
|
||||
MetaDisplay *display = meta_get_display ();
|
||||
|
||||
if (gtk_surface_resource)
|
||||
{
|
||||
MetaWaylandSurface *surface =
|
||||
wl_resource_get_user_data (gtk_surface_resource);
|
||||
|
||||
if (!surface->window)
|
||||
return;
|
||||
|
||||
meta_bell_notify (display, surface->window);
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_bell_notify (display, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct gtk_shell1_interface meta_wayland_gtk_shell_interface = {
|
||||
gtk_shell_get_gtk_surface,
|
||||
gtk_shell_set_startup_id,
|
||||
gtk_shell_system_bell,
|
||||
};
|
||||
|
||||
static void
|
||||
@ -2091,24 +2208,13 @@ bind_gtk_shell (struct wl_client *client,
|
||||
struct wl_resource *resource;
|
||||
uint32_t capabilities = 0;
|
||||
|
||||
resource = wl_resource_create (client, >k_shell_interface, version, id);
|
||||
|
||||
if (version < 2)
|
||||
{
|
||||
wl_resource_post_error (resource,
|
||||
WL_DISPLAY_ERROR_INVALID_OBJECT,
|
||||
"Incompatible gtk-shell version "
|
||||
"(supported version: %d)",
|
||||
META_GTK_SHELL_VERSION);
|
||||
return;
|
||||
}
|
||||
|
||||
resource = wl_resource_create (client, >k_shell1_interface, version, id);
|
||||
wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface, data, NULL);
|
||||
|
||||
if (!meta_prefs_get_show_fallback_app_menu ())
|
||||
capabilities = GTK_SHELL_CAPABILITY_GLOBAL_APP_MENU;
|
||||
capabilities = GTK_SHELL1_CAPABILITY_GLOBAL_APP_MENU;
|
||||
|
||||
gtk_shell_send_capabilities (resource, capabilities);
|
||||
gtk_shell1_send_capabilities (resource, capabilities);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2371,8 +2477,8 @@ meta_wayland_shell_init (MetaWaylandCompositor *compositor)
|
||||
g_error ("Failed to register a global wl-shell object");
|
||||
|
||||
if (wl_global_create (compositor->wayland_display,
|
||||
>k_shell_interface,
|
||||
META_GTK_SHELL_VERSION,
|
||||
>k_shell1_interface,
|
||||
META_GTK_SHELL1_VERSION,
|
||||
compositor, bind_gtk_shell) == NULL)
|
||||
g_error ("Failed to register a global gtk-shell object");
|
||||
|
||||
@ -2540,39 +2646,6 @@ meta_wayland_surface_get_toplevel_window (MetaWaylandSurface *surface)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_add_pointer_constraint (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
surface->pointer_constraints = g_list_append (surface->pointer_constraints,
|
||||
constraint);
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_remove_pointer_constraint (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint)
|
||||
{
|
||||
surface->pointer_constraints = g_list_remove (surface->pointer_constraints,
|
||||
constraint);
|
||||
}
|
||||
|
||||
MetaWaylandPointerConstraint *
|
||||
meta_wayland_surface_get_pointer_constraint_for_seat (MetaWaylandSurface *surface,
|
||||
MetaWaylandSeat *seat)
|
||||
{
|
||||
GList *iter;
|
||||
|
||||
for (iter = surface->pointer_constraints; iter; iter = iter->next)
|
||||
{
|
||||
MetaWaylandPointerConstraint *constraint = iter->data;
|
||||
|
||||
if (seat == meta_wayland_pointer_constraint_get_seat (constraint))
|
||||
return constraint;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
meta_wayland_surface_get_relative_coordinates (MetaWaylandSurface *surface,
|
||||
float abs_x,
|
||||
@ -2636,6 +2709,17 @@ meta_wayland_surface_role_assigned (MetaWaylandSurfaceRole *surface_role)
|
||||
META_WAYLAND_SURFACE_ROLE_GET_CLASS (surface_role)->assigned (surface_role);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_surface_role_pre_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending)
|
||||
{
|
||||
MetaWaylandSurfaceRoleClass *klass;
|
||||
|
||||
klass = META_WAYLAND_SURFACE_ROLE_GET_CLASS (surface_role);
|
||||
if (klass->pre_commit)
|
||||
klass->pre_commit (surface_role, pending);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_wayland_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending)
|
||||
@ -2774,3 +2858,26 @@ meta_wayland_surface_role_subsurface_class_init (MetaWaylandSurfaceRoleSubsurfac
|
||||
surface_role_class->commit = subsurface_surface_commit;
|
||||
surface_role_class->is_on_output = actor_surface_is_on_output;
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_wayland_surface_calculate_input_region (MetaWaylandSurface *surface)
|
||||
{
|
||||
cairo_region_t *region;
|
||||
cairo_rectangle_int_t buffer_rect;
|
||||
CoglTexture *texture;
|
||||
|
||||
if (!surface->buffer_ref.buffer)
|
||||
return NULL;
|
||||
|
||||
texture = surface->buffer_ref.buffer->texture;
|
||||
buffer_rect = (cairo_rectangle_int_t) {
|
||||
.width = cogl_texture_get_width (texture) / surface->scale,
|
||||
.height = cogl_texture_get_height (texture) / surface->scale,
|
||||
};
|
||||
region = cairo_region_create_rectangle (&buffer_rect);
|
||||
|
||||
if (surface->input_region)
|
||||
cairo_region_intersect (region, surface->input_region);
|
||||
|
||||
return region;
|
||||
}
|
||||
|
@ -56,6 +56,8 @@ struct _MetaWaylandSurfaceRoleClass
|
||||
GObjectClass parent_class;
|
||||
|
||||
void (*assigned) (MetaWaylandSurfaceRole *surface_role);
|
||||
void (*pre_commit) (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending);
|
||||
void (*commit) (MetaWaylandSurfaceRole *surface_role,
|
||||
MetaWaylandPendingState *pending);
|
||||
gboolean (*is_on_output) (MetaWaylandSurfaceRole *surface_role,
|
||||
@ -104,7 +106,7 @@ struct _MetaWaylandPendingState
|
||||
/* wl_surface.attach */
|
||||
gboolean newly_attached;
|
||||
MetaWaylandBuffer *buffer;
|
||||
struct wl_listener buffer_destroy_listener;
|
||||
gulong buffer_destroy_handler_id;
|
||||
int32_t dx;
|
||||
int32_t dy;
|
||||
|
||||
@ -151,9 +153,6 @@ struct _MetaWaylandSurface
|
||||
MetaSurfaceActor *surface_actor;
|
||||
MetaWaylandSurfaceRole *role;
|
||||
MetaWindow *window;
|
||||
MetaWaylandBuffer *buffer;
|
||||
gboolean using_buffer;
|
||||
struct wl_listener buffer_destroy_listener;
|
||||
cairo_region_t *input_region;
|
||||
cairo_region_t *opaque_region;
|
||||
int scale;
|
||||
@ -161,11 +160,25 @@ struct _MetaWaylandSurface
|
||||
GList *subsurfaces;
|
||||
GHashTable *outputs_to_destroy_notify_id;
|
||||
|
||||
/* Buffer reference state. */
|
||||
struct {
|
||||
MetaWaylandBuffer *buffer;
|
||||
unsigned int use_count;
|
||||
} buffer_ref;
|
||||
|
||||
/* Buffer renderer state. */
|
||||
gboolean buffer_held;
|
||||
|
||||
/* List of pending frame callbacks that needs to stay queued longer than one
|
||||
* commit sequence, such as when it has not yet been assigned a role.
|
||||
*/
|
||||
struct wl_list pending_frame_callback_list;
|
||||
|
||||
/* Intermediate state for when no role has been assigned. */
|
||||
struct {
|
||||
MetaWaylandBuffer *buffer;
|
||||
} unassigned;
|
||||
|
||||
struct {
|
||||
const MetaWaylandDragDestFuncs *funcs;
|
||||
} dnd;
|
||||
@ -219,8 +232,6 @@ struct _MetaWaylandSurface
|
||||
gboolean pending_pos;
|
||||
GSList *pending_placement_ops;
|
||||
} sub;
|
||||
|
||||
GList *pointer_constraints;
|
||||
};
|
||||
|
||||
void meta_wayland_shell_init (MetaWaylandCompositor *compositor);
|
||||
@ -233,6 +244,12 @@ MetaWaylandSurface *meta_wayland_surface_create (MetaWaylandCompositor *composit
|
||||
gboolean meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
|
||||
GType role_type);
|
||||
|
||||
MetaWaylandBuffer *meta_wayland_surface_get_buffer (MetaWaylandSurface *surface);
|
||||
|
||||
void meta_wayland_surface_ref_buffer_use_count (MetaWaylandSurface *surface);
|
||||
|
||||
void meta_wayland_surface_unref_buffer_use_count (MetaWaylandSurface *surface);
|
||||
|
||||
void meta_wayland_surface_set_window (MetaWaylandSurface *surface,
|
||||
MetaWindow *window);
|
||||
|
||||
@ -265,15 +282,6 @@ void meta_wayland_surface_queue_pending_frame_callbacks (MetaWayl
|
||||
void meta_wayland_surface_queue_pending_state_frame_callbacks (MetaWaylandSurface *surface,
|
||||
MetaWaylandPendingState *pending);
|
||||
|
||||
void meta_wayland_surface_add_pointer_constraint (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint);
|
||||
|
||||
void meta_wayland_surface_remove_pointer_constraint (MetaWaylandSurface *surface,
|
||||
MetaWaylandPointerConstraint *constraint);
|
||||
MetaWaylandPointerConstraint *
|
||||
meta_wayland_surface_get_pointer_constraint_for_seat (MetaWaylandSurface *surface,
|
||||
MetaWaylandSeat *seat);
|
||||
|
||||
void meta_wayland_surface_get_relative_coordinates (MetaWaylandSurface *surface,
|
||||
float abs_x,
|
||||
float abs_y,
|
||||
@ -288,4 +296,6 @@ void meta_wayland_surface_get_absolute_coordinates (MetaWaylandSu
|
||||
|
||||
MetaWaylandSurface * meta_wayland_surface_role_get_surface (MetaWaylandSurfaceRole *role);
|
||||
|
||||
cairo_region_t * meta_wayland_surface_calculate_input_region (MetaWaylandSurface *surface);
|
||||
|
||||
#endif
|
||||
|
@ -42,7 +42,7 @@
|
||||
#define META_WL_SEAT_VERSION 5
|
||||
#define META_WL_OUTPUT_VERSION 2
|
||||
#define META_XSERVER_VERSION 1
|
||||
#define META_GTK_SHELL_VERSION 3
|
||||
#define META_GTK_SHELL1_VERSION 1
|
||||
#define META_WL_SUBCOMPOSITOR_VERSION 1
|
||||
#define META_ZWP_POINTER_GESTURES_V1_VERSION 1
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
#include "meta-window-wayland.h"
|
||||
|
||||
#include <meta/errors.h>
|
||||
#include <errno.h>
|
||||
#include <string.h> /* for strerror () */
|
||||
#include "window-private.h"
|
||||
#include "boxes-private.h"
|
||||
#include "stack-tracker.h"
|
||||
@ -109,6 +111,24 @@ meta_window_wayland_kill (MetaWindow *window)
|
||||
{
|
||||
MetaWaylandSurface *surface = window->surface;
|
||||
struct wl_resource *resource = surface->resource;
|
||||
pid_t pid;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
||||
wl_client_get_credentials (wl_resource_get_client (resource), &pid, &uid, &gid);
|
||||
if (pid > 0)
|
||||
{
|
||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
||||
"Killing %s with kill()\n",
|
||||
window->desc);
|
||||
|
||||
if (kill (pid, 9) == 0)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
||||
"Failed to signal %s: %s\n",
|
||||
window->desc, strerror (errno));
|
||||
}
|
||||
|
||||
/* Send the client an unrecoverable error to kill the client. */
|
||||
wl_resource_post_error (resource,
|
||||
@ -131,6 +151,10 @@ surface_state_changed (MetaWindow *window)
|
||||
{
|
||||
MetaWindowWayland *wl_window = META_WINDOW_WAYLAND (window);
|
||||
|
||||
/* don't send notify when the window is being unmanaged */
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
meta_wayland_surface_configure_notify (window->surface,
|
||||
wl_window->last_sent_width,
|
||||
wl_window->last_sent_height,
|
||||
@ -173,6 +197,10 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
|
||||
|
||||
g_assert (window->frame == NULL);
|
||||
|
||||
/* don't do anything if we're dropping the window, see #751847 */
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
/* The scale the window is drawn in might change depending on what monitor it
|
||||
* is mainly on. Scale the configured rectangle to be in logical pixel
|
||||
* coordinate space so that we can have a scale independent size to pass
|
||||
@ -282,6 +310,7 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
|
||||
|
||||
if (new_x != window->rect.x || new_y != window->rect.y)
|
||||
{
|
||||
*result |= META_MOVE_RESIZE_RESULT_MOVED;
|
||||
wl_window->has_pending_move = TRUE;
|
||||
wl_window->pending_move_x = new_x;
|
||||
wl_window->pending_move_y = new_y;
|
||||
@ -403,20 +432,7 @@ appears_focused_changed (GObject *object,
|
||||
gpointer user_data)
|
||||
{
|
||||
MetaWindow *window = META_WINDOW (object);
|
||||
MetaWaylandCompositor *wayland_compositor;
|
||||
|
||||
wayland_compositor = meta_wayland_compositor_get_default ();
|
||||
meta_wayland_pointer_constraint_maybe_remove_for_seat (wayland_compositor->seat,
|
||||
window);
|
||||
|
||||
/* When we're unmanaging, we remove focus from the window,
|
||||
* causing this to fire. Don't do anything in that case. */
|
||||
if (window->unmanaging)
|
||||
return;
|
||||
|
||||
surface_state_changed (window);
|
||||
|
||||
meta_wayland_pointer_constraint_maybe_enable_for_window (window);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -91,6 +91,7 @@ struct _MetaWaylandDataSourceXWayland
|
||||
|
||||
struct _MetaXWaylandSelection {
|
||||
MetaSelectionBridge clipboard;
|
||||
MetaSelectionBridge primary;
|
||||
MetaDndBridge dnd;
|
||||
};
|
||||
|
||||
@ -396,6 +397,8 @@ atom_to_selection_bridge (MetaWaylandCompositor *compositor,
|
||||
|
||||
if (selection_atom == selection_data->clipboard.selection_atom)
|
||||
return &selection_data->clipboard;
|
||||
else if (selection_atom == selection_data->primary.selection_atom)
|
||||
return &selection_data->primary;
|
||||
else if (selection_atom == selection_data->dnd.selection.selection_atom)
|
||||
return &selection_data->dnd.selection;
|
||||
else
|
||||
@ -530,6 +533,8 @@ data_device_get_active_source_for_atom (MetaWaylandDataDevice *data_device,
|
||||
{
|
||||
if (selection_atom == gdk_x11_get_xatom_by_name ("CLIPBOARD"))
|
||||
return data_device->selection_data_source;
|
||||
else if (selection_atom == gdk_x11_get_xatom_by_name ("PRIMARY"))
|
||||
return data_device->primary_data_source;
|
||||
else if (selection_atom == xdnd_atoms[ATOM_DND_SELECTION])
|
||||
return data_device->dnd_data_source;
|
||||
else
|
||||
@ -667,11 +672,17 @@ wayland_data_read_cb (GObject *object,
|
||||
res, &error);
|
||||
if (error)
|
||||
{
|
||||
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
{
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
g_warning ("Error transfering wayland clipboard to X11: %s\n",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
|
||||
if (data)
|
||||
if (data && data->stream == G_INPUT_STREAM (object))
|
||||
{
|
||||
reply_selection_request (&data->request_event, FALSE);
|
||||
g_clear_pointer (&selection->wayland_selection,
|
||||
@ -1058,6 +1069,11 @@ meta_xwayland_selection_get_x11_targets (MetaWaylandCompositor *compositor,
|
||||
meta_wayland_data_device_set_selection (&compositor->seat->data_device, data_source,
|
||||
wl_display_next_serial (compositor->wayland_display));
|
||||
}
|
||||
else if (selection->selection_atom == gdk_x11_get_xatom_by_name ("PRIMARY"))
|
||||
{
|
||||
meta_wayland_data_device_set_primary (&compositor->seat->data_device, data_source,
|
||||
wl_display_next_serial (compositor->wayland_display));
|
||||
}
|
||||
}
|
||||
else
|
||||
g_object_unref (data_source);
|
||||
@ -1529,7 +1545,8 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
|
||||
if (!selection)
|
||||
return FALSE;
|
||||
|
||||
if (selection->selection_atom == gdk_x11_get_xatom_by_name ("CLIPBOARD"))
|
||||
if (selection->selection_atom == gdk_x11_get_xatom_by_name ("CLIPBOARD") ||
|
||||
selection->selection_atom == gdk_x11_get_xatom_by_name ("PRIMARY"))
|
||||
{
|
||||
if (event->owner == None)
|
||||
{
|
||||
@ -1560,7 +1577,7 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
|
||||
gdk_x11_get_xatom_by_name ("TARGETS"),
|
||||
gdk_x11_get_xatom_by_name ("_META_SELECTION"),
|
||||
selection->window,
|
||||
selection->timestamp);
|
||||
CurrentTime);
|
||||
XFlush (xdisplay);
|
||||
}
|
||||
}
|
||||
@ -1712,6 +1729,9 @@ meta_xwayland_init_selection (void)
|
||||
init_selection_bridge (&manager->selection_data->clipboard,
|
||||
gdk_x11_get_xatom_by_name ("CLIPBOARD"),
|
||||
&compositor->seat->data_device.selection_ownership_signal);
|
||||
init_selection_bridge (&manager->selection_data->primary,
|
||||
gdk_x11_get_xatom_by_name ("PRIMARY"),
|
||||
&compositor->seat->data_device.primary_ownership_signal);
|
||||
init_selection_bridge (&manager->selection_data->dnd.selection,
|
||||
xdnd_atoms[ATOM_DND_SELECTION],
|
||||
&compositor->seat->data_device.dnd_ownership_signal);
|
||||
@ -1730,6 +1750,7 @@ meta_xwayland_shutdown_selection (void)
|
||||
|
||||
meta_xwayland_shutdown_dnd (manager);
|
||||
shutdown_selection_bridge (&selection->clipboard);
|
||||
shutdown_selection_bridge (&selection->primary);
|
||||
shutdown_selection_bridge (&selection->dnd.selection);
|
||||
|
||||
g_slice_free (MetaXWaylandSelection, selection);
|
||||
|
225
src/wayland/protocol/gtk-primary-selection.xml
Normal file
225
src/wayland/protocol/gtk-primary-selection.xml
Normal file
@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="gtk_primary_selection">
|
||||
<copyright>
|
||||
Copyright © 2015, 2016 Red Hat
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="Primary selection protocol">
|
||||
This protocol provides the ability to have a primary selection device to
|
||||
match that of the X server. This primary selection is a shortcut to the
|
||||
common clipboard selection, where text just needs to be selected in order
|
||||
to allow copying it elsewhere. The de facto way to perform this action
|
||||
is the middle mouse button, although it is not limited to this one.
|
||||
|
||||
Clients wishing to honor primary selection should create a primary
|
||||
selection source and set it as the selection through
|
||||
wp_primary_selection_device.set_selection whenever the text selection
|
||||
changes. In order to minimize calls in pointer-driven text selection,
|
||||
it should happen only once after the operation finished. Similarly,
|
||||
a NULL source should be set when text is unselected.
|
||||
|
||||
wp_primary_selection_offer objects are first announced through the
|
||||
wp_primary_selection_device.data_offer event. Immediately after this event,
|
||||
the primary data offer will emit wp_primary_selection_offer.offer events
|
||||
to let know of the mime types being offered.
|
||||
|
||||
When the primary selection changes, the client with the keyboard focus
|
||||
will receive wp_primary_selection_device.selection events. Only the client
|
||||
with the keyboard focus will receive such events with a non-NULL
|
||||
wp_primary_selection_offer. Across keyboard focus changes, previously
|
||||
focused clients will receive wp_primary_selection_device.events with a
|
||||
NULL wp_primary_selection_offer.
|
||||
|
||||
In order to request the primary selection data, the client must pass
|
||||
a recent serial pertaining to the press event that is triggering the
|
||||
operation, if the compositor deems the serial valid and recent, the
|
||||
wp_primary_selection_source.send event will happen in the other end
|
||||
to let the transfer begin. The client owning the primary selection
|
||||
should write the requested data, and close the file descriptor
|
||||
immediately.
|
||||
|
||||
If the primary selection owner client disappeared during the transfer,
|
||||
the client reading the data will receive a
|
||||
wp_primary_selection_device.selection event with a NULL
|
||||
wp_primary_selection_offer, the client should take this as a hint
|
||||
to finish the reads related to the no longer existing offer.
|
||||
|
||||
The primary selection owner should be checking for errors during
|
||||
writes, merely cancelling the ongoing transfer if any happened.
|
||||
</description>
|
||||
|
||||
<interface name="gtk_primary_selection_device_manager" version="1">
|
||||
<description summary="X primary selection emulation">
|
||||
The primary selection device manager is a singleton global object that
|
||||
provides access to the primary selection. It allows to create
|
||||
wp_primary_selection_source objects, as well as retrieving the per-seat
|
||||
wp_primary_selection_device objects.
|
||||
</description>
|
||||
|
||||
<request name="create_source">
|
||||
<description summary="create a new primary selection source">
|
||||
Create a new primary selection source.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="gtk_primary_selection_source"/>
|
||||
</request>
|
||||
|
||||
<request name="get_device">
|
||||
<description summary="create a new primary selection device">
|
||||
Create a new data device for a given seat.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="gtk_primary_selection_device"/>
|
||||
<arg name="seat" type="object" interface="wl_seat"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the primary selection device manager">
|
||||
Destroy the primary selection device manager.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="gtk_primary_selection_device" version="1">
|
||||
<request name="set_selection">
|
||||
<description summary="set the primary selection">
|
||||
Replaces the current selection. The previous owner of the primary selection
|
||||
will receive a wp_primary_selection_source.cancelled event.
|
||||
|
||||
To unset the selection, set the source to NULL.
|
||||
</description>
|
||||
<arg name="source" type="object" interface="gtk_primary_selection_source" allow-null="true"/>
|
||||
<arg name="serial" type="uint" summary="serial of the event that triggered this request"/>
|
||||
</request>
|
||||
|
||||
<event name="data_offer">
|
||||
<description summary="introduce a new wp_primary_selection_offer">
|
||||
Introduces a new wp_primary_selection_offer object that may be used
|
||||
to receive the current primary selection. Immediately following this
|
||||
event, the new wp_primary_selection_offer object will send
|
||||
wp_primary_selection_offer.offer events to describe the offered mime
|
||||
types.
|
||||
</description>
|
||||
<arg name="offer" type="new_id" interface="gtk_primary_selection_offer"/>
|
||||
</event>
|
||||
|
||||
<event name="selection">
|
||||
<description summary="advertise a new primary selection">
|
||||
The wp_primary_selection_device.selection event is sent to notify the
|
||||
client of a new primary selection. This event is sent after the
|
||||
wp_primary_selection.data_offer event introducing this object, and after
|
||||
the offer has announced its mimetypes through
|
||||
wp_primary_selection_offer.offer.
|
||||
|
||||
The data_offer is valid until a new offer or NULL is received
|
||||
or until the client loses keyboard focus. The client must destroy the
|
||||
previous selection data_offer, if any, upon receiving this event.
|
||||
</description>
|
||||
<arg name="id" type="object" interface="gtk_primary_selection_offer" allow-null="true"/>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the primary selection device">
|
||||
Destroy the primary selection device.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="gtk_primary_selection_offer" version="1">
|
||||
<description summary="offer to transfer primary selection contents">
|
||||
A wp_primary_selection_offer represents an offer to transfer the contents
|
||||
of the primary selection clipboard to the client. Similar to
|
||||
wl_data_offer, the offer also describes the mime types that the source
|
||||
will transferthat the
|
||||
data can be converted to and provides the mechanisms for transferring the
|
||||
data directly to the client.
|
||||
</description>
|
||||
|
||||
<request name="receive">
|
||||
<description summary="request that the data is transferred">
|
||||
To transfer the contents of the primary selection clipboard, the client
|
||||
issues this request and indicates the mime type that it wants to
|
||||
receive. The transfer happens through the passed file descriptor
|
||||
(typically created with the pipe system call). The source client writes
|
||||
the data in the mime type representation requested and then closes the
|
||||
file descriptor.
|
||||
|
||||
The receiving client reads from the read end of the pipe until EOF and
|
||||
closes its end, at which point the transfer is complete.
|
||||
</description>
|
||||
<arg name="mime_type" type="string"/>
|
||||
<arg name="fd" type="fd"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the primary selection offer">
|
||||
Destroy the primary selection offer.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="offer">
|
||||
<description summary="advertise offered mime type">
|
||||
Sent immediately after creating announcing the wp_primary_selection_offer
|
||||
through wp_primary_selection_device.data_offer. One event is sent per
|
||||
offered mime type.
|
||||
</description>
|
||||
<arg name="mime_type" type="string"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="gtk_primary_selection_source" version="1">
|
||||
<description summary="offer to replace the contents of the primary selection">
|
||||
The source side of a wp_primary_selection_offer, it provides a way to
|
||||
describe the offered data and respond to requests to transfer the
|
||||
requested contents of the primary selection clipboard.
|
||||
</description>
|
||||
|
||||
<request name="offer">
|
||||
<description summary="add an offered mime type">
|
||||
This request adds a mime type to the set of mime types advertised to
|
||||
targets. Can be called several times to offer multiple types.
|
||||
</description>
|
||||
<arg name="mime_type" type="string"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the primary selection source">
|
||||
Destroy the primary selection source.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="send">
|
||||
<description summary="send the primary selection contents">
|
||||
Request for the current primary selection contents from the client.
|
||||
Send the specified mime type over the passed file descriptor, then
|
||||
close it.
|
||||
</description>
|
||||
<arg name="mime_type" type="string"/>
|
||||
<arg name="fd" type="fd"/>
|
||||
</event>
|
||||
|
||||
<event name="cancelled">
|
||||
<description summary="request for primary selection contents was canceled">
|
||||
This primary selection source is no longer valid. The client should
|
||||
clean up and destroy this primary selection source.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
@ -1,12 +1,9 @@
|
||||
<protocol name="gtk">
|
||||
|
||||
<interface name="gtk_shell" version="3">
|
||||
<interface name="gtk_shell1" version="1">
|
||||
<description summary="gtk specific extensions">
|
||||
gtk_shell is a protocol extension providing additional features for
|
||||
clients implementing it. It is not backward compatible, and a client must
|
||||
always only bind to the specific version it implements. If a client binds
|
||||
to a version different from the version the server provides, an error will
|
||||
be raised.
|
||||
clients implementing it.
|
||||
</description>
|
||||
|
||||
<enum name="capability">
|
||||
@ -20,16 +17,20 @@
|
||||
</event>
|
||||
|
||||
<request name="get_gtk_surface">
|
||||
<arg name="gtk_surface" type="new_id" interface="gtk_surface"/>
|
||||
<arg name="gtk_surface" type="new_id" interface="gtk_surface1"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
|
||||
<request name="set_startup_id" since="3">
|
||||
<request name="set_startup_id">
|
||||
<arg name="startup_id" type="string" allow-null="true"/>
|
||||
</request>
|
||||
|
||||
<request name="system_bell">
|
||||
<arg name="surface" type="object" interface="gtk_surface1" allow-null="true"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="gtk_surface" version="3">
|
||||
<interface name="gtk_surface1" version="1">
|
||||
<request name="set_dbus_properties">
|
||||
<arg name="application_id" type="string" allow-null="true"/>
|
||||
<arg name="app_menu_path" type="string" allow-null="true"/>
|
||||
@ -41,6 +42,10 @@
|
||||
|
||||
<request name="set_modal"/>
|
||||
<request name="unset_modal"/>
|
||||
|
||||
<request name="present">
|
||||
<arg name="time" type="uint"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
|
@ -1162,6 +1162,30 @@ process_selection_clear (MetaDisplay *display,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
notify_bell (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent*) xkb_ev;
|
||||
MetaWindow *window;
|
||||
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
if (!window && display->focus_window && display->focus_window->frame)
|
||||
window = display->focus_window;
|
||||
|
||||
display->last_bell_time = xkb_ev->time;
|
||||
if (!meta_bell_notify (display, window) &&
|
||||
meta_prefs_bell_is_audible ())
|
||||
{
|
||||
/* Force a classic bell if the libcanberra bell failed. */
|
||||
XkbForceDeviceBell (display->xdisplay,
|
||||
xkb_bell_event->device,
|
||||
xkb_bell_event->bell_class,
|
||||
xkb_bell_event->bell_id,
|
||||
xkb_bell_event->percent);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
handle_other_xevent (MetaDisplay *display,
|
||||
XEvent *event)
|
||||
@ -1618,8 +1642,7 @@ handle_other_xevent (MetaDisplay *display,
|
||||
if (XSERVER_TIME_IS_BEFORE(display->last_bell_time,
|
||||
xkb_ev->time - 100))
|
||||
{
|
||||
display->last_bell_time = xkb_ev->time;
|
||||
meta_bell_notify (display, xkb_ev);
|
||||
notify_bell (display, xkb_ev);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -635,7 +635,10 @@ reload_wm_name (MetaWindow *window,
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
set_window_title (window, value->v.str);
|
||||
g_autofree gchar *title = g_convert (value->v.str, -1,
|
||||
"UTF-8", "LATIN1",
|
||||
NULL, NULL, NULL);
|
||||
set_window_title (window, title);
|
||||
|
||||
meta_verbose ("Using WM_NAME for new title of %s: \"%s\"\n",
|
||||
window->desc, window->title);
|
||||
@ -969,9 +972,13 @@ reload_wm_class (MetaWindow *window,
|
||||
{
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
meta_window_set_wm_class (window,
|
||||
value->v.class_hint.res_class,
|
||||
value->v.class_hint.res_name);
|
||||
g_autofree gchar *res_class = g_convert (value->v.class_hint.res_class, -1,
|
||||
"UTF-8", "LATIN1",
|
||||
NULL, NULL, NULL);
|
||||
g_autofree gchar *res_name = g_convert (value->v.class_hint.res_name, -1,
|
||||
"UTF-8", "LATIN1",
|
||||
NULL, NULL, NULL);
|
||||
meta_window_set_wm_class (window, res_class, res_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user