Compare commits
32 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
18f958d06d | ||
![]() |
3efbb96119 | ||
![]() |
e5d97666af | ||
![]() |
83d7e932d6 | ||
![]() |
f858f66fe0 | ||
![]() |
fffb863f37 | ||
![]() |
adf7c0e730 | ||
![]() |
bbcee174ce | ||
![]() |
9c6e6ea381 | ||
![]() |
db9645fcb3 | ||
![]() |
6af48d75a4 | ||
![]() |
6234f7d1db | ||
![]() |
301a65e05a | ||
![]() |
376d4911b6 | ||
![]() |
0559d2c19f | ||
![]() |
54e482bc7b | ||
![]() |
37c3b79551 | ||
![]() |
78d8525699 | ||
![]() |
23c00688b4 | ||
![]() |
438410c22c | ||
![]() |
59f348eb11 | ||
![]() |
cbad65f657 | ||
![]() |
1e8e107dd9 | ||
![]() |
8631bf2bbb | ||
![]() |
b9b41c20a6 | ||
![]() |
2d3deccd8e | ||
![]() |
68289a5d61 | ||
![]() |
adccbc9b7b | ||
![]() |
94b111cf6c | ||
![]() |
7303955618 | ||
![]() |
5e8bb9cc9d | ||
![]() |
accfdf7936 |
19
NEWS
19
NEWS
@@ -1,3 +1,22 @@
|
||||
3.15.91
|
||||
=======
|
||||
* wayland: Fix nested compositor mode [Jonas; #745401]
|
||||
* wayland: Fix pointer constraining [Marek; #727337]
|
||||
* wayland: Fix input region on HiDPI [Jonas; #744933]
|
||||
* Allow themes to style buttons differently based on function [Horst; #745108]
|
||||
* Misc. bug fixes and cleanups [Ray, Rui, Alban; #745141, #745118, #745476,
|
||||
#745442]
|
||||
|
||||
Contributors:
|
||||
Jonas Ådahl, Alban Browaeys, Marek Chalupa, Horst, Rui Matos,
|
||||
Jasper St. Pierre, Ray Strode
|
||||
|
||||
Translations:
|
||||
Chao-Hsiung Liao [zh_TW], Efstathios Iosifidis [el], Dušan Kazik [sk],
|
||||
Balázs Úr [hu], Daniel Mustieles [es], Claude Paroz [fr], Stas Solovey [ru],
|
||||
Yosef Or Boczko [he], Rafael Ferreira [pt_BR], Aurimas Černius [lt],
|
||||
Fran Dieguez [gl], Anders Jonsson [sv], Мирослав Николић [sr, sr@latin]
|
||||
|
||||
3.15.90
|
||||
=======
|
||||
* Initialize MetaOutput even when we can't get the EDID [Rui; #743412]
|
||||
|
@@ -4,7 +4,6 @@
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="mutter"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.11
|
||||
|
||||
(test -f $srcdir/configure.ac \
|
||||
@@ -19,4 +18,4 @@ which gnome-autogen.sh || {
|
||||
echo "your distribution's package manager)."
|
||||
exit 1
|
||||
}
|
||||
USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
|
||||
. gnome-autogen.sh
|
||||
|
@@ -2,7 +2,7 @@ AC_PREREQ(2.62)
|
||||
|
||||
m4_define([mutter_major_version], [3])
|
||||
m4_define([mutter_minor_version], [15])
|
||||
m4_define([mutter_micro_version], [90])
|
||||
m4_define([mutter_micro_version], [91])
|
||||
|
||||
m4_define([mutter_version],
|
||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||
|
44
po/es.po
44
po/es.po
@@ -14,8 +14,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-01-11 22:56+0000\n"
|
||||
"PO-Revision-Date: 2015-01-12 12:14+0100\n"
|
||||
"POT-Creation-Date: 2015-02-23 11:10+0000\n"
|
||||
"PO-Revision-Date: 2015-02-23 19:07+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@@ -444,22 +444,47 @@ msgstr "Cambiar al VT 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Cambiar al VT 7"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:351
|
||||
#: ../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
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla integrada"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:378
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:380
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
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:388
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -504,7 +529,7 @@ msgstr "_Esperar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forzar la salida"
|
||||
|
||||
#: ../src/core/display.c:561
|
||||
#: ../src/core/display.c:562
|
||||
#, 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"
|
||||
@@ -571,9 +596,6 @@ msgstr "Área de trabajo %d"
|
||||
|
||||
#: ../src/core/screen.c:525
|
||||
#, 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."
|
||||
@@ -598,7 +620,7 @@ msgstr ""
|
||||
"Estas ventanas no soportan «guardar la configuración actual» y tendrán que "
|
||||
"reiniciarse manualmente la próxima vez que inicie una sesión."
|
||||
|
||||
#: ../src/x11/window-props.c:558
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (on %s)"
|
||||
|
818
po/fr.po
818
po/fr.po
@@ -1,5 +1,5 @@
|
||||
# French translation of mutter.
|
||||
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2015 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the metacity package.
|
||||
#
|
||||
# Christophe Fergeau <teuf@users.sourceforge.net>, 2002.
|
||||
@@ -11,17 +11,16 @@
|
||||
# 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-2014.
|
||||
# Claude Paroz <claude@2xlibre.net>, 2008-2015.
|
||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mutter masterReport-Msgid-Bugs-To: http://bugzilla.gnome."
|
||||
"org/enter_bug.cgi?product=mutter&component=general\n"
|
||||
"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: 2014-08-29 21:52+0000\n"
|
||||
"PO-Revision-Date: 2014-08-30 11:59+0200\n"
|
||||
"POT-Creation-Date: 2015-02-23 23:11+0000\n"
|
||||
"PO-Revision-Date: 2015-02-24 10:08+0100\n"
|
||||
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
|
||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
@@ -408,8 +407,8 @@ msgid ""
|
||||
"When true, the new windows will always be put in the center of the active "
|
||||
"screen of the monitor."
|
||||
msgstr ""
|
||||
"Si true (vrai), les nouvelles fenêtres seront toujours placées au centre "
|
||||
"de l'écran actif du moniteur."
|
||||
"Si true (vrai), les nouvelles fenêtres seront toujours placées au centre de "
|
||||
"l'écran actif du moniteur."
|
||||
|
||||
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
|
||||
msgid "Select window from tab popup"
|
||||
@@ -449,29 +448,49 @@ msgstr "Passer à l'émulateur de terminal 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Passer à l'émulateur de terminal 7"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:412
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Passer à l'émulateur de terminal 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Passer à l'émulateur de terminal 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Passer à l'émulateur de terminal 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Passer à l'émulateur de terminal 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Passer à l'émulateur de terminal 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
msgid "Built-in display"
|
||||
msgstr "Affichage intégré"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:437
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:439
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
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:447
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#, 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:443
|
||||
#: ../src/compositor/compositor.c:456
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Another compositing manager is already running on screen %i on display \"%s"
|
||||
@@ -480,10 +499,6 @@ msgstr ""
|
||||
"Un autre gestionnaire de composition est déjà lancé sur l'écran %i de "
|
||||
"l'affichage « %s »."
|
||||
|
||||
#: ../src/compositor/meta-background.c:1044
|
||||
msgid "background texture could not be created from file"
|
||||
msgstr "la texture d'arrière-plan n'a pas pu être créée depuis le fichier"
|
||||
|
||||
#: ../src/core/bell.c:185
|
||||
msgid "Bell event"
|
||||
msgstr "Évènement sonore"
|
||||
@@ -513,7 +528,7 @@ msgstr "_Attendre"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forcer à quitter"
|
||||
|
||||
#: ../src/core/display.c:547
|
||||
#: ../src/core/display.c:562
|
||||
#, 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"
|
||||
@@ -550,19 +565,6 @@ msgstr "Lancer comme un compositeur wayland"
|
||||
msgid "Run as a full display server, rather than nested"
|
||||
msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué"
|
||||
|
||||
#: ../src/core/main.c:459
|
||||
#, c-format
|
||||
msgid "Failed to scan themes directory: %s\n"
|
||||
msgstr "Le parcours du répertoire de thèmes a échoué : %s\n"
|
||||
|
||||
#: ../src/core/main.c:475
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
|
||||
msgstr ""
|
||||
"Impossible de trouver un thème ! Assurez-vous que %s existe et contient les "
|
||||
"thèmes habituels.\n"
|
||||
|
||||
#: ../src/core/mutter.c:39
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -587,759 +589,29 @@ msgstr "Afficher la version"
|
||||
msgid "Mutter plugin to use"
|
||||
msgstr "Greffon de Mutter à utiliser"
|
||||
|
||||
#: ../src/core/prefs.c:2101
|
||||
#: ../src/core/prefs.c:2004
|
||||
#, c-format
|
||||
msgid "Workspace %d"
|
||||
msgstr "Espace de travail %d"
|
||||
|
||||
#: ../src/core/screen.c:548
|
||||
#: ../src/core/screen.c:525
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Display \"%s\" already has a window manager; try using the --replace option "
|
||||
"to replace the current window manager."
|
||||
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
|
||||
#, 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/screen.c:564
|
||||
#, 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"
|
||||
msgstr ""
|
||||
"L'écran %d sur 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.\n"
|
||||
|
||||
#: ../src/core/screen.c:657
|
||||
#, c-format
|
||||
msgid "Screen %d on display \"%s\" already has a window manager\n"
|
||||
msgstr "L'écran %d sur l'affichage « %s » a déjà un gestionnaire de fenêtres\n"
|
||||
|
||||
#: ../src/core/util.c:118
|
||||
msgid "Mutter was compiled without support for verbose mode\n"
|
||||
msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#.
|
||||
#: ../src/ui/resizepopup.c:134
|
||||
#, c-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
|
||||
#: ../src/ui/theme.c:233
|
||||
msgid "top"
|
||||
msgstr "haut"
|
||||
|
||||
#: ../src/ui/theme.c:235
|
||||
msgid "bottom"
|
||||
msgstr "bas"
|
||||
|
||||
#: ../src/ui/theme.c:237
|
||||
msgid "left"
|
||||
msgstr "gauche"
|
||||
|
||||
#: ../src/ui/theme.c:239
|
||||
msgid "right"
|
||||
msgstr "droite"
|
||||
|
||||
#: ../src/ui/theme.c:267
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify \"%s\" dimension"
|
||||
msgstr "la géométrie du cadre n'indique pas la dimension « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:286
|
||||
#, c-format
|
||||
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
|
||||
msgstr ""
|
||||
"la géométrie du cadre n'indique pas la dimension « %s » pour la bordure "
|
||||
"« %s »"
|
||||
|
||||
#: ../src/ui/theme.c:323
|
||||
#, c-format
|
||||
msgid "Button aspect ratio %g is not reasonable"
|
||||
msgstr "La proportion du bouton %g n'est pas raisonnable"
|
||||
|
||||
#: ../src/ui/theme.c:335
|
||||
#, c-format
|
||||
msgid "Frame geometry does not specify size of buttons"
|
||||
msgstr "La géométrie du cadre n'indique pas la taille des boutons"
|
||||
|
||||
#: ../src/ui/theme.c:1061
|
||||
#, c-format
|
||||
msgid "Gradients should have at least two colors"
|
||||
msgstr "Les dégradés doivent comporter au moins deux couleurs"
|
||||
|
||||
#: ../src/ui/theme.c:1211
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK custom color specification must have color name and fallback in "
|
||||
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
|
||||
msgstr ""
|
||||
"Une spécification de couleur personnalisée GTK doit comporter un nom de "
|
||||
"couleur et un substitut entre parenthèses, par ex. gtk:custom(foo,bar) ; "
|
||||
"impossible d'analyser « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:1227
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
|
||||
"_ are valid"
|
||||
msgstr ""
|
||||
"Caractère « %c » non valide dans le paramètre color_name de gtk:custom, "
|
||||
"seuls A-Za-z0-9-_ sont acceptés"
|
||||
|
||||
#: ../src/ui/theme.c:1241
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
|
||||
"fit the format"
|
||||
msgstr ""
|
||||
"Le format de gtk:custom est « gtk:custom(nom_couleur,substitut) », « %s » ne "
|
||||
"correspond pas à ce format"
|
||||
|
||||
#: ../src/ui/theme.c:1286
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
|
||||
"where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr ""
|
||||
"La spécification de couleur GTK doit présenter l'état entre crochets, p. ex. "
|
||||
"gtk:fg[NORMAL] où NORMAL est l'état ; impossible d'analyser « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:1300
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK color specification must have a close bracket after the state, e.g. gtk:"
|
||||
"fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
|
||||
msgstr ""
|
||||
"La spécification de couleur GTK doit comporter un crochet de fermeture après "
|
||||
"l'état, p. ex. gtk:fg[NORMAL] où NORMAL est l'état ; impossible d'analyser "
|
||||
"« %s »"
|
||||
|
||||
#: ../src/ui/theme.c:1311
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" in color specification"
|
||||
msgstr ""
|
||||
"Impossible de comprendre l'état « %s » dans la spécification de couleur"
|
||||
|
||||
#: ../src/ui/theme.c:1324
|
||||
#, c-format
|
||||
msgid "Did not understand color component \"%s\" in color specification"
|
||||
msgstr ""
|
||||
"Impossible de comprendre le composant de couleur « %s » dans la "
|
||||
"spécification de couleur"
|
||||
|
||||
#: ../src/ui/theme.c:1352
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
|
||||
"format"
|
||||
msgstr ""
|
||||
"Le format de mélange est « blend/bg_color/fg_color/alpha », « %s » ne "
|
||||
"correspond pas à ce format ."
|
||||
|
||||
#: ../src/ui/theme.c:1363
|
||||
#, c-format
|
||||
msgid "Could not parse alpha value \"%s\" in blended color"
|
||||
msgstr "Impossible d'analyser la valeur alpha « %s » en couleur mélangée"
|
||||
|
||||
#: ../src/ui/theme.c:1373
|
||||
#, c-format
|
||||
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
|
||||
msgstr ""
|
||||
"La valeur alpha « %s » en couleur mélangée n'est pas comprise entre 0,0 et "
|
||||
"1,0"
|
||||
|
||||
#: ../src/ui/theme.c:1419
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
|
||||
msgstr ""
|
||||
"Le format d'ombre est « shade/base_color/factor », « %s » ne correspond pas "
|
||||
"au format"
|
||||
|
||||
#: ../src/ui/theme.c:1430
|
||||
#, c-format
|
||||
msgid "Could not parse shade factor \"%s\" in shaded color"
|
||||
msgstr "Impossible d'analyser le facteur d'ombre « %s » en couleur ombrée"
|
||||
|
||||
#: ../src/ui/theme.c:1440
|
||||
#, c-format
|
||||
msgid "Shade factor \"%s\" in shaded color is negative"
|
||||
msgstr "Le facteur d'ombre « %s » en couleur ombrée est négatif"
|
||||
|
||||
#: ../src/ui/theme.c:1469
|
||||
#, c-format
|
||||
msgid "Could not parse color \"%s\""
|
||||
msgstr "Impossible d'analyser la couleur « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:1778
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains character '%s' which is not allowed"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée contient le caractère « %s » qui n'est pas "
|
||||
"autorisé"
|
||||
|
||||
#: ../src/ui/theme.c:1805
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contains floating point number '%s' which could not be "
|
||||
"parsed"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée contient la valeur en virgule flottante « %s » "
|
||||
"qui ne peut pas être analysée"
|
||||
|
||||
#: ../src/ui/theme.c:1819
|
||||
#, c-format
|
||||
msgid "Coordinate expression contains integer '%s' which could not be parsed"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée contient l'entier « %s » qui n'a pas pu être "
|
||||
"analysé"
|
||||
|
||||
#: ../src/ui/theme.c:1940
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression contained unknown operator at the start of this text: "
|
||||
"\"%s\""
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée contenait un opérateur inconnu au début de ce "
|
||||
"texte : « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:1997
|
||||
#, c-format
|
||||
msgid "Coordinate expression was empty or not understood"
|
||||
msgstr "L'expression de la coordonnée était vide ou incomprise"
|
||||
|
||||
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
|
||||
#, c-format
|
||||
msgid "Coordinate expression results in division by zero"
|
||||
msgstr "L'expression de la coordonnée entraîne une division par zéro"
|
||||
|
||||
#: ../src/ui/theme.c:2162
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression tries to use mod operator on a floating-point number"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée tente d'utiliser l'opérateur mod sur une "
|
||||
"valeur en virgule flottante"
|
||||
|
||||
#: ../src/ui/theme.c:2218
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has an operator \"%s\" where an operand was expected"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée a un opérateur « %s » là où un opérande était "
|
||||
"attendu"
|
||||
|
||||
#: ../src/ui/theme.c:2227
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an operand where an operator was expected"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée a un opérande là où un opérateur était attendu"
|
||||
|
||||
#: ../src/ui/theme.c:2235
|
||||
#, c-format
|
||||
msgid "Coordinate expression ended with an operator instead of an operand"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée était terminée par un opérateur au lieu d'un "
|
||||
"opérande"
|
||||
|
||||
#: ../src/ui/theme.c:2245
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
|
||||
"operand in between"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée a un opérateur « %c » suivant l'opérateur "
|
||||
"« %c » sans opérande entre eux"
|
||||
|
||||
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
|
||||
#, c-format
|
||||
msgid "Coordinate expression had unknown variable or constant \"%s\""
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée possède une variable ou constante inconnue "
|
||||
"« %s »"
|
||||
|
||||
#: ../src/ui/theme.c:2495
|
||||
#, c-format
|
||||
msgid "Coordinate expression parser overflowed its buffer."
|
||||
msgstr ""
|
||||
"L'analyseur d'expression de coordonnées a dépassé la capacité de son tampon."
|
||||
|
||||
#: ../src/ui/theme.c:2524
|
||||
#, c-format
|
||||
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée comporte une parenthèse de fermeture, mais pas "
|
||||
"de parenthèse d'ouverture"
|
||||
|
||||
#: ../src/ui/theme.c:2588
|
||||
#, c-format
|
||||
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée comporte une parenthèse d'ouverture, mais pas "
|
||||
"de parenthèse de fermeture"
|
||||
|
||||
#: ../src/ui/theme.c:2599
|
||||
#, c-format
|
||||
msgid "Coordinate expression doesn't seem to have any operators or operands"
|
||||
msgstr ""
|
||||
"L'expression de la coordonnée ne semble pas comprendre d'opérateur ni "
|
||||
"d'opérande"
|
||||
|
||||
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
|
||||
#, c-format
|
||||
msgid "Theme contained an expression that resulted in an error: %s\n"
|
||||
msgstr "Le thème contient une expression qui a entraîné une erreur : %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:4455
|
||||
#, c-format
|
||||
msgid ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
|
||||
"specified for this frame style"
|
||||
msgstr ""
|
||||
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> doit être "
|
||||
"indiqué pour ce style de cadre"
|
||||
|
||||
#: ../src/ui/theme.c:4970 ../src/ui/theme.c:4995
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
|
||||
msgstr ""
|
||||
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> manquant"
|
||||
|
||||
#: ../src/ui/theme.c:5041
|
||||
#, c-format
|
||||
msgid "Failed to load theme \"%s\": %s\n"
|
||||
msgstr "Impossible de charger le thème « %s » : %s\n"
|
||||
|
||||
#: ../src/ui/theme.c:5177 ../src/ui/theme.c:5184 ../src/ui/theme.c:5191
|
||||
#: ../src/ui/theme.c:5198 ../src/ui/theme.c:5205
|
||||
#, c-format
|
||||
msgid "No <%s> set for theme \"%s\""
|
||||
msgstr "Aucun <%s> défini pour le thème « %s »"
|
||||
|
||||
#: ../src/ui/theme.c:5213
|
||||
#, c-format
|
||||
msgid ""
|
||||
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
|
||||
"type=\"%s\" style_set=\"whatever\"/> element"
|
||||
msgstr ""
|
||||
"Aucun style de cadre défini pour le type de fenêtre « %s » dans le thème "
|
||||
"« %s », ajoutez un élément <window type=\"%s\" style_set=\"whatever\"/>"
|
||||
|
||||
#: ../src/ui/theme.c:5620 ../src/ui/theme.c:5682 ../src/ui/theme.c:5745
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-defined constants must begin with a capital letter; \"%s\" does not"
|
||||
msgstr ""
|
||||
"Les constantes définies par l'utilisateur doivent commencer par une "
|
||||
"majuscule ; « %s » commence par une minuscule"
|
||||
|
||||
#: ../src/ui/theme.c:5628 ../src/ui/theme.c:5690 ../src/ui/theme.c:5753
|
||||
#, c-format
|
||||
msgid "Constant \"%s\" has already been defined"
|
||||
msgstr "La constante « %s » a déjà été définie"
|
||||
|
||||
#. Translators: This means that an attribute which should have been found
|
||||
#. * on an XML element was not in fact found.
|
||||
#.
|
||||
#: ../src/ui/theme-parser.c:234
|
||||
#, c-format
|
||||
msgid "No \"%s\" attribute on element <%s>"
|
||||
msgstr "Aucun attribut « %s » sur l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:263 ../src/ui/theme-parser.c:281
|
||||
#, c-format
|
||||
msgid "Line %d character %d: %s"
|
||||
msgstr "Ligne %d caractère %d: %s"
|
||||
|
||||
#: ../src/ui/theme-parser.c:481
|
||||
#, c-format
|
||||
msgid "Attribute \"%s\" repeated twice on the same <%s> element"
|
||||
msgstr "Attribut « %s » répété deux fois sur le même élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:505 ../src/ui/theme-parser.c:554
|
||||
#, c-format
|
||||
msgid "Attribute \"%s\" is invalid on <%s> element in this context"
|
||||
msgstr "Attribut « %s » non valide sur l'élément <%s> dans ce contexte"
|
||||
|
||||
#: ../src/ui/theme-parser.c:596
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as an integer"
|
||||
msgstr "Impossible d'analyser « %s » en tant qu'entier"
|
||||
|
||||
#: ../src/ui/theme-parser.c:605 ../src/ui/theme-parser.c:660
|
||||
#, c-format
|
||||
msgid "Did not understand trailing characters \"%s\" in string \"%s\""
|
||||
msgstr "Caractères de fin « %s » non compris dans la chaîne « %s »"
|
||||
|
||||
#: ../src/ui/theme-parser.c:615
|
||||
#, c-format
|
||||
msgid "Integer %ld must be positive"
|
||||
msgstr "L'entier %ld doit être positif"
|
||||
|
||||
#: ../src/ui/theme-parser.c:623
|
||||
#, c-format
|
||||
msgid "Integer %ld is too large, current max is %d"
|
||||
msgstr "L'entier %ld est trop élevé, le max. actuel est %d"
|
||||
|
||||
#: ../src/ui/theme-parser.c:651 ../src/ui/theme-parser.c:767
|
||||
#, c-format
|
||||
msgid "Could not parse \"%s\" as a floating point number"
|
||||
msgstr "Impossible d'analyser « %s » en tant que valeur en virgule flottante"
|
||||
|
||||
#: ../src/ui/theme-parser.c:682 ../src/ui/theme-parser.c:710
|
||||
#, c-format
|
||||
msgid "Boolean values must be \"true\" or \"false\" not \"%s\""
|
||||
msgstr ""
|
||||
"Les valeurs booléennes doivent être « true » ou « false » et non « %s »"
|
||||
|
||||
#: ../src/ui/theme-parser.c:737
|
||||
#, c-format
|
||||
msgid "Angle must be between 0.0 and 360.0, was %g\n"
|
||||
msgstr "L'angle doit être compris entre 0,0 et 360,0. Il était de %g\n"
|
||||
|
||||
#: ../src/ui/theme-parser.c:800
|
||||
#, c-format
|
||||
msgid "Alpha must be between 0.0 (invisible) and 1.0 (fully opaque), was %g\n"
|
||||
msgstr ""
|
||||
"La valeur alpha doit être comprise entre 0,0 (invisible) et 1,0 (entièrement "
|
||||
"opaque). Elle était de %g\n"
|
||||
|
||||
#: ../src/ui/theme-parser.c:865
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Invalid title scale \"%s\" (must be one of xx-small,x-small,small,medium,"
|
||||
"large,x-large,xx-large)\n"
|
||||
msgstr ""
|
||||
"Échelle de titre non valide « %s » (elle doit avoir l'une des valeurs "
|
||||
"suivantes : xx-small, x-small, small, medium,large, x-large, xx-large)\n"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1021 ../src/ui/theme-parser.c:1084
|
||||
#: ../src/ui/theme-parser.c:1118 ../src/ui/theme-parser.c:1221
|
||||
#, c-format
|
||||
msgid "<%s> name \"%s\" used a second time"
|
||||
msgstr "<%s> - nom « %s » utilisé une deuxième fois"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1033 ../src/ui/theme-parser.c:1130
|
||||
#: ../src/ui/theme-parser.c:1233
|
||||
#, c-format
|
||||
msgid "<%s> parent \"%s\" has not been defined"
|
||||
msgstr "<%s> - parent « %s » non défini"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1143
|
||||
#, c-format
|
||||
msgid "<%s> geometry \"%s\" has not been defined"
|
||||
msgstr "<%s> - géométrie « %s » non définie"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1156
|
||||
#, c-format
|
||||
msgid "<%s> must specify either a geometry or a parent that has a geometry"
|
||||
msgstr "<%s> doit indiquer une géométrie ou un parent qui en possède une"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1198
|
||||
msgid "You must specify a background for an alpha value to be meaningful"
|
||||
msgstr ""
|
||||
"Vous devez indiquer un arrière-plan pour qu'une valeur alpha ait du sens."
|
||||
|
||||
#: ../src/ui/theme-parser.c:1266
|
||||
#, c-format
|
||||
msgid "Unknown type \"%s\" on <%s> element"
|
||||
msgstr "Type inconnu « %s » sur l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1277
|
||||
#, c-format
|
||||
msgid "Unknown style_set \"%s\" on <%s> element"
|
||||
msgstr "style_set inconnu « %s » sur l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1285
|
||||
#, c-format
|
||||
msgid "Window type \"%s\" has already been assigned a style set"
|
||||
msgstr "Le type de fenêtre « %s » s'est déjà vu attribuer un jeu de styles"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1315 ../src/ui/theme-parser.c:1379
|
||||
#: ../src/ui/theme-parser.c:1605 ../src/ui/theme-parser.c:2840
|
||||
#: ../src/ui/theme-parser.c:2886 ../src/ui/theme-parser.c:3036
|
||||
#: ../src/ui/theme-parser.c:3272 ../src/ui/theme-parser.c:3310
|
||||
#: ../src/ui/theme-parser.c:3348 ../src/ui/theme-parser.c:3386
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed below <%s>"
|
||||
msgstr "L'élément <%s> n'est pas autorisé sous <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1429 ../src/ui/theme-parser.c:1443
|
||||
#: ../src/ui/theme-parser.c:1488
|
||||
msgid ""
|
||||
"Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" "
|
||||
"for buttons"
|
||||
msgstr ""
|
||||
"Impossible d'indiquer à la fois « button_width » / "
|
||||
"« button_height » (largeur/hauteur) et « aspect_ratio » (proportion) pour "
|
||||
"les boutons"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1452
|
||||
#, c-format
|
||||
msgid "Distance \"%s\" is unknown"
|
||||
msgstr "Distance « %s » inconnue"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1497
|
||||
#, c-format
|
||||
msgid "Aspect ratio \"%s\" is unknown"
|
||||
msgstr "Proportion « %s » inconnue"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1559
|
||||
#, c-format
|
||||
msgid "Border \"%s\" is unknown"
|
||||
msgstr "Bordure « %s » inconnue"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1870
|
||||
#, c-format
|
||||
msgid "No \"start_angle\" or \"from\" attribute on element <%s>"
|
||||
msgstr ""
|
||||
"Aucun attribut « start_angle » (« début d'angle ») ou « from » (« depuis ») "
|
||||
"sur l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:1877
|
||||
#, c-format
|
||||
msgid "No \"extent_angle\" or \"to\" attribute on element <%s>"
|
||||
msgstr ""
|
||||
"Aucun attribut « extent_angle » (« extension d'angle ») ou « to » (« vers ») "
|
||||
"sur l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2117
|
||||
#, c-format
|
||||
msgid "Did not understand value \"%s\" for type of gradient"
|
||||
msgstr "Impossible de comprendre la valeur « %s » pour le type de dégradé"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2195 ../src/ui/theme-parser.c:2570
|
||||
#, c-format
|
||||
msgid "Did not understand fill type \"%s\" for <%s> element"
|
||||
msgstr ""
|
||||
"Impossible de comprendre le type de remplissage « %s » pour l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2362 ../src/ui/theme-parser.c:2445
|
||||
#: ../src/ui/theme-parser.c:2508
|
||||
#, c-format
|
||||
msgid "Did not understand state \"%s\" for <%s> element"
|
||||
msgstr "Impossible de comprendre l'état « %s » pour l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2372 ../src/ui/theme-parser.c:2455
|
||||
#, c-format
|
||||
msgid "Did not understand shadow \"%s\" for <%s> element"
|
||||
msgstr "Impossible de comprendre l'ombre « %s » pour l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2382
|
||||
#, c-format
|
||||
msgid "Did not understand arrow \"%s\" for <%s> element"
|
||||
msgstr "Impossible de comprendre la flèche « %s » pour l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2696 ../src/ui/theme-parser.c:2792
|
||||
#, c-format
|
||||
msgid "No <draw_ops> called \"%s\" has been defined"
|
||||
msgstr "Aucun <draw_ops> appelé « %s » n'a été défini"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2708 ../src/ui/theme-parser.c:2804
|
||||
#, c-format
|
||||
msgid "Including draw_ops \"%s\" here would create a circular reference"
|
||||
msgstr "L'inclusion du draw_ops « %s » ici créerait une référence circulaire"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2919
|
||||
#, c-format
|
||||
msgid "Unknown position \"%s\" for frame piece"
|
||||
msgstr "Position inconnue « %s » de la pièce du cadre"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2927
|
||||
#, c-format
|
||||
msgid "Frame style already has a piece at position %s"
|
||||
msgstr "Le style de cadre a déjà une pièce à la position %s"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2944 ../src/ui/theme-parser.c:3021
|
||||
#, c-format
|
||||
msgid "No <draw_ops> with the name \"%s\" has been defined"
|
||||
msgstr "Aucun <draw_ops> avec le nom « %s » n'a été défini"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2974
|
||||
#, c-format
|
||||
msgid "Unknown function \"%s\" for button"
|
||||
msgstr "Fonction inconnue « %s » pour le bouton"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2984
|
||||
#, c-format
|
||||
msgid "Button function \"%s\" does not exist in this version (%d, need %d)"
|
||||
msgstr ""
|
||||
"La fonction « %s » du bouton n'existe pas dans la version (%d, a besoin de "
|
||||
"%d)"
|
||||
|
||||
#: ../src/ui/theme-parser.c:2996
|
||||
#, c-format
|
||||
msgid "Unknown state \"%s\" for button"
|
||||
msgstr "État inconnu « %s » pour le bouton"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3004
|
||||
#, c-format
|
||||
msgid "Frame style already has a button for function %s state %s"
|
||||
msgstr "Le style de cadre a déjà un bouton pour la fonction %s, état %s"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3075
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for focus attribute"
|
||||
msgstr "« %s » n'est pas une valeur valide pour l'attribut de focus"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3084
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for state attribute"
|
||||
msgstr "« %s » n'est pas une valeur valide pour l'attribut d'état"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3094
|
||||
#, c-format
|
||||
msgid "A style called \"%s\" has not been defined"
|
||||
msgstr "Aucun style appelé « %s » n'a été défini"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3115 ../src/ui/theme-parser.c:3138
|
||||
#, c-format
|
||||
msgid "\"%s\" is not a valid value for resize attribute"
|
||||
msgstr ""
|
||||
"« %s » n'est pas une valeur valide pour l'attribut de redimensionnement"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3149
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Should not have \"resize\" attribute on <%s> element for maximized/shaded "
|
||||
"states"
|
||||
msgstr ""
|
||||
"L'attribut « resize » (« redimensionnement ») ne devrait pas figurer sur "
|
||||
"l'élément <%s> pour les états maximisé/réduit dans la barre de titre"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3163
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Should not have \"resize\" attribute on <%s> element for maximized states"
|
||||
msgstr ""
|
||||
"L'attribut « resize » (« redimensionnement ») ne devrait pas figurer sur "
|
||||
"l'élément <%s> pour l'état maximisé"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3177 ../src/ui/theme-parser.c:3221
|
||||
#, c-format
|
||||
msgid "Style has already been specified for state %s resize %s focus %s"
|
||||
msgstr ""
|
||||
"Le style a déjà été indiqué pour l'état %s, redimensionnement %s, focus %s"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3188 ../src/ui/theme-parser.c:3199
|
||||
#: ../src/ui/theme-parser.c:3210 ../src/ui/theme-parser.c:3232
|
||||
#: ../src/ui/theme-parser.c:3243 ../src/ui/theme-parser.c:3254
|
||||
#, c-format
|
||||
msgid "Style has already been specified for state %s focus %s"
|
||||
msgstr "Le style a déjà été indiqué pour l'état %s, focus %s"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3293
|
||||
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 ""
|
||||
"Impossible d'avoir deux attributs draw_ops pour un élément <piece> (le thème "
|
||||
"indiquait un attribut draw_ops et un élément <draw_ops> ou deux éléments)"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3331
|
||||
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 ""
|
||||
"Impossible d'avoir deux attributs draw_ops pour un élément <button> (le "
|
||||
"thème indiquait un attribut draw_ops et un élément <draw_ops> ou deux "
|
||||
"éléments)"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3369
|
||||
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 ""
|
||||
"Impossible d'avoir deux attributs draw_ops pour un élément <menu_icon> (le "
|
||||
"thème indiquait un attribut draw_ops et un élément <draw_ops> ou deux "
|
||||
"éléments)"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3433
|
||||
#, c-format
|
||||
msgid "Bad version specification '%s'"
|
||||
msgstr "Mauvaise spécification de version « %s »"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3506
|
||||
msgid ""
|
||||
"\"version\" attribute cannot be used in metacity-theme-1.xml or metacity-"
|
||||
"theme-2.xml"
|
||||
msgstr ""
|
||||
"L'attribut « version » ne peut pas être utilisé dans metacity-theme-1.xml or "
|
||||
"metacity-theme-2.xml"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3529
|
||||
#, c-format
|
||||
msgid "Theme requires version %s but latest supported theme version is %d.%d"
|
||||
msgstr ""
|
||||
"Le thème nécessite la version %s mais la version de thème la plus récente "
|
||||
"prise en charge est %d.%d"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3561
|
||||
#, c-format
|
||||
msgid "Outermost element in theme must be <metacity_theme> not <%s>"
|
||||
msgstr ""
|
||||
"L'élément le plus extérieur dans le thème doit être <metacity_theme> et non <"
|
||||
"%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3581
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Element <%s> is not allowed inside a name/author/date/description element"
|
||||
msgstr ""
|
||||
"L'élément <%s> n'est pas autorisé dans un élément name/author/date/"
|
||||
"description"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3586
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed inside a <constant> element"
|
||||
msgstr "L'élément <%s> n'est pas autorisé dans un élément <constant>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3598
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
|
||||
msgstr ""
|
||||
"L'élément <%s> n'est pas autorisé dans un élément distance/border/"
|
||||
"aspect_ratio"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3620
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed inside a draw operation element"
|
||||
msgstr ""
|
||||
"L'élément <%s> n'est pas autorisé dans un élément d'opération de dessin"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3630 ../src/ui/theme-parser.c:3660
|
||||
#: ../src/ui/theme-parser.c:3665 ../src/ui/theme-parser.c:3670
|
||||
#, c-format
|
||||
msgid "Element <%s> is not allowed inside a <%s> element"
|
||||
msgstr "L'élément <%s> n'est pas autorisé dans un élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3898
|
||||
msgid "No draw_ops provided for frame piece"
|
||||
msgstr "Aucun attribut draw_ops fourni pour la pièce du cadre"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3913
|
||||
msgid "No draw_ops provided for button"
|
||||
msgstr "Aucun attribut draw_ops fourni pour le bouton"
|
||||
|
||||
#: ../src/ui/theme-parser.c:3967
|
||||
#, c-format
|
||||
msgid "No text is allowed inside element <%s>"
|
||||
msgstr "Aucun texte autorisé dans l'élément <%s>"
|
||||
|
||||
#: ../src/ui/theme-parser.c:4025 ../src/ui/theme-parser.c:4037
|
||||
#: ../src/ui/theme-parser.c:4049 ../src/ui/theme-parser.c:4061
|
||||
#: ../src/ui/theme-parser.c:4073
|
||||
#, c-format
|
||||
msgid "<%s> specified twice for this theme"
|
||||
msgstr "<%s> indiqué deux fois pour ce thème"
|
||||
|
||||
#: ../src/ui/theme-parser.c:4335
|
||||
#, c-format
|
||||
msgid "Failed to find a valid file for theme %s\n"
|
||||
msgstr "Impossible de trouver un fichier valide pour le thème %s\n"
|
||||
|
||||
#: ../src/x11/session.c:1815
|
||||
msgid ""
|
||||
"These windows do not support "save current setup" and will have to "
|
||||
@@ -1349,7 +621,7 @@ msgstr ""
|
||||
"configuration actuelle » et devront être redémarrées manuellement à la "
|
||||
"prochaine connexion."
|
||||
|
||||
#: ../src/x11/window-props.c:515
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (sur %s)"
|
||||
|
41
po/gl.po
41
po/gl.po
@@ -10,20 +10,21 @@
|
||||
# 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.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gl\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-13 00:23+0100\n"
|
||||
"PO-Revision-Date: 2015-01-13 00:24+0200\n"
|
||||
"POT-Creation-Date: 2015-02-28 22:43+0100\n"
|
||||
"PO-Revision-Date: 2015-02-28 22:42+0100\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||
"Language-Team: Galician <>\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: Virtaal 0.7.1\n"
|
||||
"X-Generator: Gtranslator 2.91.6\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@@ -440,22 +441,42 @@ msgstr "Cambiar á VT 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Cambiar á VT 7"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:351
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Cambiar á VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Cambiar á VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Cambiar á VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Cambiar á VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Cambiar á VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
msgid "Built-in display"
|
||||
msgstr "Pantalla embebida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:378
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:380
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
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:388
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s %s"
|
||||
@@ -500,7 +521,7 @@ msgstr "Espe_rar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forzar a saída"
|
||||
|
||||
#: ../src/core/display.c:561
|
||||
#: ../src/core/display.c:562
|
||||
#, 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"
|
||||
@@ -591,7 +612,7 @@ msgstr ""
|
||||
"Estas xanelas non soportan "save current setup" e terán que "
|
||||
"reiniciarse manualmente a próxima vez que inicie a sesión."
|
||||
|
||||
#: ../src/x11/window-props.c:558
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (en %s)"
|
||||
|
26
po/he.po
26
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-01-26 22:19+0200\n"
|
||||
"PO-Revision-Date: 2015-01-26 22:20+0200\n"
|
||||
"POT-Creation-Date: 2015-02-24 19:33+0200\n"
|
||||
"PO-Revision-Date: 2015-02-24 19:34+0200\n"
|
||||
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
|
||||
"Language-Team: עברית <>\n"
|
||||
"Language: he\n"
|
||||
@@ -433,6 +433,26 @@ msgstr "מעבר ל־VT 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "מעבר ל־VT 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "מעבר ל־VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "מעבר ל־VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "מעבר ל־VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "מעבר ל־VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "מעבר ל־VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
msgid "Built-in display"
|
||||
msgstr "תצוגה מובנית"
|
||||
@@ -580,7 +600,7 @@ msgstr ""
|
||||
"חלונות אלו אינם תומכים ב"שמירת ההגדרות הנוכחיות", ויהיה צורך "
|
||||
"באתחול ידני בכניסה הבאה שלך."
|
||||
|
||||
#: ../src/x11/window-props.c:558
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (מעל %s)"
|
||||
|
38
po/pt_BR.po
38
po/pt_BR.po
@@ -21,8 +21,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-01-08 22:56+0000\n"
|
||||
"PO-Revision-Date: 2015-01-08 23:54-0300\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"
|
||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -30,7 +30,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.1\n"
|
||||
"X-Generator: Poedit 1.7.4\n"
|
||||
|
||||
#: ../data/50-mutter-navigation.xml.in.h:1
|
||||
msgid "Navigation"
|
||||
@@ -452,22 +452,42 @@ msgstr "Trocar para o VT 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Trocar para o VT 7"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:351
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Trocar para o VT 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Trocar para o VT 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Trocar para o VT 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Trocar para o VT 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Trocar para o VT 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
msgid "Built-in display"
|
||||
msgstr "Tela embutida"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:378
|
||||
#: ../src/backends/meta-monitor-manager.c:391
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:380
|
||||
#: ../src/backends/meta-monitor-manager.c:393
|
||||
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:388
|
||||
#: ../src/backends/meta-monitor-manager.c:401
|
||||
#, c-format
|
||||
msgid "%s %s"
|
||||
msgstr "%s de %s"
|
||||
@@ -511,7 +531,7 @@ msgstr "_Esperar"
|
||||
msgid "_Force Quit"
|
||||
msgstr "_Forçar sair"
|
||||
|
||||
#: ../src/core/display.c:561
|
||||
#: ../src/core/display.c:562
|
||||
#, 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"
|
||||
@@ -604,7 +624,7 @@ msgstr ""
|
||||
"atual" e precisarão ser reiniciadas manualmente quando você reiniciar a "
|
||||
"sessão."
|
||||
|
||||
#: ../src/x11/window-props.c:558
|
||||
#: ../src/x11/window-props.c:549
|
||||
#, c-format
|
||||
msgid "%s (on %s)"
|
||||
msgstr "%s (em %s)"
|
||||
|
35
po/ru.po
35
po/ru.po
@@ -7,18 +7,18 @@
|
||||
# Andrew w. Nosenko <awn@bcs.zp.ua>, 2003.
|
||||
# Leonid Kanter <leon@asplinux.ru>, 2004, 2005, 2006.
|
||||
# Yuri Kozlov <yuray@komyakino.ru>, 2011.
|
||||
# Ivan Komaritsyn <vantu5z@mail.ru>, 2015.
|
||||
# Yuri Myasoedov <ymyasoedov@yandex.ru>, 2012-2014, 2015.
|
||||
# Ivan Komaritsyn <vantu5z@mail.ru>, 2015.
|
||||
#
|
||||
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-13 23:49+0000\n"
|
||||
"PO-Revision-Date: 2015-02-14 17:12+0300\n"
|
||||
"Last-Translator: Yuri Myasoedov <ymyasoedov@yandex.ru>\n"
|
||||
"Language-Team: русский <gnome-cyr@gnome.org>\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"
|
||||
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -440,6 +440,31 @@ msgstr "Переключиться на виртуальный терминал
|
||||
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
|
||||
msgid "Built-in display"
|
||||
msgstr "Встроенный дисплей"
|
||||
|
24
po/sk.po
24
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-18 11:12+0000\n"
|
||||
"PO-Revision-Date: 2015-02-18 16:54+0100\n"
|
||||
"POT-Creation-Date: 2015-02-21 23:27+0000\n"
|
||||
"PO-Revision-Date: 2015-02-22 11:11+0100\n"
|
||||
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
|
||||
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
|
||||
"Language: sk\n"
|
||||
@@ -522,6 +522,26 @@ msgstr "Prepnúť na VT č. 6"
|
||||
msgid "Switch to VT 7"
|
||||
msgstr "Prepnúť na VT č. 7"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
|
||||
msgid "Switch to VT 8"
|
||||
msgstr "Prepnúť na VT č. 8"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
|
||||
msgid "Switch to VT 9"
|
||||
msgstr "Prepnúť na VT č. 9"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
|
||||
msgid "Switch to VT 10"
|
||||
msgstr "Prepnúť na VT č. 10"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
|
||||
msgid "Switch to VT 11"
|
||||
msgstr "Prepnúť na VT č. 11"
|
||||
|
||||
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
|
||||
msgid "Switch to VT 12"
|
||||
msgstr "Prepnúť na VT č. 12"
|
||||
|
||||
#: ../src/backends/meta-monitor-manager.c:364
|
||||
msgid "Built-in display"
|
||||
msgstr "Vstavaný displej"
|
||||
|
1252
po/sr@latin.po
1252
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
1184
po/zh_TW.po
1184
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@@ -96,6 +96,7 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
||||
manager->outputs[0].backlight_min = 0;
|
||||
manager->outputs[0].backlight_max = 0;
|
||||
manager->outputs[0].connector_type = META_CONNECTOR_TYPE_LVDS;
|
||||
manager->outputs[0].scale = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -100,7 +100,7 @@ check_all_screen_monitors(MetaMonitorInfo *monitors,
|
||||
left = monitor->rect.x;
|
||||
right = left + monitor->rect.width;
|
||||
top = monitor->rect.y;
|
||||
bottom = left + monitor->rect.height;
|
||||
bottom = top + monitor->rect.height;
|
||||
|
||||
if ((x >= left) && (x < right) && (y >= top) && (y < bottom))
|
||||
return TRUE;
|
||||
@@ -118,25 +118,25 @@ constrain_all_screen_monitors (ClutterInputDevice *device,
|
||||
{
|
||||
ClutterPoint current;
|
||||
unsigned int i;
|
||||
float cx, cy;
|
||||
|
||||
clutter_input_device_get_coords (device, NULL, ¤t);
|
||||
|
||||
cx = current.x;
|
||||
cy = current.y;
|
||||
|
||||
/* if we're trying to escape, clamp to the CRTC we're coming from */
|
||||
for (i = 0; i < n_monitors; i++)
|
||||
{
|
||||
MetaMonitorInfo *monitor = &monitors[i];
|
||||
int left, right, top, bottom;
|
||||
float nx, ny;
|
||||
|
||||
left = monitor->rect.x;
|
||||
right = left + monitor->rect.width;
|
||||
top = monitor->rect.y;
|
||||
bottom = left + monitor->rect.height;
|
||||
bottom = top + monitor->rect.height;
|
||||
|
||||
nx = current.x;
|
||||
ny = current.y;
|
||||
|
||||
if ((nx >= left) && (nx < right) && (ny >= top) && (ny < bottom))
|
||||
if ((cx >= left) && (cx < right) && (cy >= top) && (cy < bottom))
|
||||
{
|
||||
if (*x < left)
|
||||
*x = left;
|
||||
|
@@ -307,7 +307,7 @@ get_kms_fd (Login1Session *session_proxy,
|
||||
MetaLauncher *
|
||||
meta_launcher_new (void)
|
||||
{
|
||||
MetaLauncher *self;
|
||||
MetaLauncher *self = NULL;
|
||||
Login1Session *session_proxy;
|
||||
GError *error = NULL;
|
||||
int kms_fd;
|
||||
@@ -317,14 +317,14 @@ meta_launcher_new (void)
|
||||
{
|
||||
g_warning ("Could not take control: %s", error->message);
|
||||
g_error_free (error);
|
||||
return NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!get_kms_fd (session_proxy, &kms_fd))
|
||||
return NULL;
|
||||
goto out;
|
||||
|
||||
self = g_slice_new0 (MetaLauncher);
|
||||
self->session_proxy = session_proxy;
|
||||
self->session_proxy = g_object_ref (session_proxy);
|
||||
self->seat_proxy = get_seat_proxy (NULL);
|
||||
|
||||
self->session_active = TRUE;
|
||||
@@ -336,6 +336,9 @@ meta_launcher_new (void)
|
||||
|
||||
g_signal_connect (self->session_proxy, "notify::active", G_CALLBACK (on_active_changed), self);
|
||||
|
||||
out:
|
||||
g_object_unref (session_proxy);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@@ -66,12 +66,9 @@ struct _MetaMonitorManagerKms
|
||||
drmModeConnector **connectors;
|
||||
unsigned int n_connectors;
|
||||
|
||||
drmModeEncoder **encoders;
|
||||
unsigned int n_encoders;
|
||||
|
||||
drmModeEncoder *current_encoder;
|
||||
|
||||
GUdevClient *udev;
|
||||
|
||||
GSettings *desktop_settings;
|
||||
};
|
||||
|
||||
struct _MetaMonitorManagerKmsClass
|
||||
@@ -86,12 +83,9 @@ free_resources (MetaMonitorManagerKms *manager_kms)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < manager_kms->n_encoders; i++)
|
||||
drmModeFreeEncoder (manager_kms->encoders[i]);
|
||||
for (i = 0; i < manager_kms->n_connectors; i++)
|
||||
drmModeFreeConnector (manager_kms->connectors[i]);
|
||||
|
||||
g_free (manager_kms->encoders);
|
||||
g_free (manager_kms->connectors);
|
||||
}
|
||||
|
||||
@@ -269,11 +263,77 @@ find_output_by_id (MetaOutput *outputs,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* The minimum resolution at which we turn on a window-scale of 2 */
|
||||
#define HIDPI_LIMIT 192
|
||||
|
||||
/* The minimum screen height at which we turn on a window-scale of 2;
|
||||
* below this there just isn't enough vertical real estate for GNOME
|
||||
* apps to work, and it's better to just be tiny */
|
||||
#define HIDPI_MIN_HEIGHT 1200
|
||||
|
||||
/* From http://en.wikipedia.org/wiki/4K_resolution#Resolutions_of_common_formats */
|
||||
#define SMALLEST_4K_WIDTH 3656
|
||||
|
||||
/* Based on code from gnome-settings-daemon */
|
||||
static int
|
||||
compute_scale (MetaOutput *output)
|
||||
{
|
||||
int scale = 1;
|
||||
|
||||
if (!output->crtc)
|
||||
goto out;
|
||||
|
||||
/* Scaling makes no sense */
|
||||
if (output->crtc->rect.width < HIDPI_MIN_HEIGHT)
|
||||
goto out;
|
||||
|
||||
/* 4K TV */
|
||||
if (output->name != NULL && strstr(output->name, "HDMI") != NULL &&
|
||||
output->crtc->rect.width >= SMALLEST_4K_WIDTH)
|
||||
goto out;
|
||||
|
||||
/* Somebody encoded the aspect ratio (16/9 or 16/10)
|
||||
* instead of the physical size */
|
||||
if ((output->width_mm == 160 && output->height_mm == 90) ||
|
||||
(output->width_mm == 160 && output->height_mm == 100) ||
|
||||
(output->width_mm == 16 && output->height_mm == 9) ||
|
||||
(output->width_mm == 16 && output->height_mm == 10))
|
||||
goto out;
|
||||
|
||||
if (output->width_mm > 0 && output->height_mm > 0)
|
||||
{
|
||||
double dpi_x, dpi_y;
|
||||
dpi_x = (double)output->crtc->rect.width / (output->width_mm / 25.4);
|
||||
dpi_y = (double)output->crtc->rect.height / (output->height_mm / 25.4);
|
||||
/* We don't completely trust these values so both
|
||||
must be high, and never pick higher ratio than
|
||||
2 automatically */
|
||||
if (dpi_x > HIDPI_LIMIT && dpi_y > HIDPI_LIMIT)
|
||||
scale = 2;
|
||||
}
|
||||
|
||||
out:
|
||||
return scale;
|
||||
}
|
||||
|
||||
static int
|
||||
get_output_scale (MetaMonitorManager *manager,
|
||||
MetaOutput *output)
|
||||
{
|
||||
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||
int scale = g_settings_get_uint (manager_kms->desktop_settings, "scaling-factor");
|
||||
if (scale > 0)
|
||||
return scale;
|
||||
else
|
||||
return compute_scale (output);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
{
|
||||
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
|
||||
drmModeRes *resources;
|
||||
drmModeEncoder **encoders;
|
||||
GHashTable *modes;
|
||||
GHashTableIter iter;
|
||||
drmModeModeInfo *mode;
|
||||
@@ -309,7 +369,7 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
connector = drmModeGetConnector (manager_kms->fd, resources->connectors[i]);
|
||||
manager_kms->connectors[i] = connector;
|
||||
|
||||
if (connector->connection == DRM_MODE_CONNECTED)
|
||||
if (connector && connector->connection == DRM_MODE_CONNECTED)
|
||||
{
|
||||
/* Collect all modes for this connector */
|
||||
for (j = 0; j < (unsigned)connector->count_modes; j++)
|
||||
@@ -317,13 +377,9 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
}
|
||||
}
|
||||
|
||||
manager_kms->n_encoders = resources->count_encoders;
|
||||
manager_kms->encoders = g_new (drmModeEncoder *, manager_kms->n_encoders);
|
||||
for (i = 0; i < manager_kms->n_encoders; i++)
|
||||
{
|
||||
manager_kms->encoders[i] = drmModeGetEncoder (manager_kms->fd,
|
||||
resources->encoders[i]);
|
||||
}
|
||||
encoders = g_new (drmModeEncoder *, resources->count_encoders);
|
||||
for (i = 0; i < (unsigned)resources->count_encoders; i++)
|
||||
encoders[i] = drmModeGetEncoder (manager_kms->fd, resources->encoders[i]);
|
||||
|
||||
manager->n_modes = g_hash_table_size (modes);
|
||||
manager->modes = g_new0 (MetaMonitorMode, manager->n_modes);
|
||||
@@ -407,7 +463,7 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
connector = manager_kms->connectors[i];
|
||||
meta_output = &manager->outputs[n_actual_outputs];
|
||||
|
||||
if (connector->connection == DRM_MODE_CONNECTED)
|
||||
if (connector && connector->connection == DRM_MODE_CONNECTED)
|
||||
{
|
||||
meta_output->driver_private = output_kms = g_slice_new0 (MetaOutputKms);
|
||||
meta_output->driver_notify = (GDestroyNotify)meta_output_destroy_notify;
|
||||
@@ -456,6 +512,8 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
for (j = 0; j < output_kms->n_encoders; j++)
|
||||
{
|
||||
output_kms->encoders[j] = drmModeGetEncoder (manager_kms->fd, connector->encoders[j]);
|
||||
if (!output_kms->encoders[j])
|
||||
continue;
|
||||
|
||||
/* We only list CRTCs as supported if they are supported by all encoders
|
||||
for this connectors.
|
||||
@@ -518,6 +576,8 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
/* MetaConnectorType matches DRM's connector types */
|
||||
meta_output->connector_type = (MetaConnectorType) connector->connector_type;
|
||||
|
||||
meta_output->scale = get_output_scale (manager, meta_output);
|
||||
|
||||
/* FIXME: backlight is a very driver specific thing unfortunately,
|
||||
every DDX does its own thing, and the dumb KMS API does not include it.
|
||||
|
||||
@@ -559,9 +619,10 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
|
||||
for (j = 0; j < output_kms->n_encoders; j++)
|
||||
{
|
||||
for (k = 0; k < manager_kms->n_encoders; k++)
|
||||
for (k = 0; k < (unsigned)resources->count_encoders; k++)
|
||||
{
|
||||
if (output_kms->encoders[j]->encoder_id == manager_kms->encoders[k]->encoder_id)
|
||||
if (output_kms->encoders[j] && encoders[k] &&
|
||||
output_kms->encoders[j]->encoder_id == encoders[k]->encoder_id)
|
||||
{
|
||||
output_kms->encoder_mask |= (1 << k);
|
||||
break;
|
||||
@@ -608,6 +669,10 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < (unsigned)resources->count_encoders; i++)
|
||||
drmModeFreeEncoder (encoders[i]);
|
||||
g_free (encoders);
|
||||
|
||||
drmModeFreeResources (resources);
|
||||
}
|
||||
|
||||
@@ -919,6 +984,8 @@ meta_monitor_manager_kms_init (MetaMonitorManagerKms *manager_kms)
|
||||
manager_kms->udev = g_udev_client_new (subsystems);
|
||||
g_signal_connect (manager_kms->udev, "uevent",
|
||||
G_CALLBACK (on_uevent), manager_kms);
|
||||
|
||||
manager_kms->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -927,6 +994,7 @@ meta_monitor_manager_kms_dispose (GObject *object)
|
||||
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (object);
|
||||
|
||||
g_clear_object (&manager_kms->udev);
|
||||
g_clear_object (&manager_kms->desktop_settings);
|
||||
|
||||
G_OBJECT_CLASS (meta_monitor_manager_kms_parent_class)->dispose (object);
|
||||
}
|
||||
|
@@ -115,7 +115,7 @@ typedef enum {
|
||||
#define FRAGMENT_SHADER_CODE \
|
||||
"float t = 2.0 * length(position);\n" \
|
||||
"t = min(t, 1.0);\n" \
|
||||
"float pixel_brightness = 1 - t * vignette_sharpness;\n" \
|
||||
"float pixel_brightness = 1.0 - t * vignette_sharpness;\n" \
|
||||
"cogl_color_out.rgb = cogl_color_out.rgb * pixel_brightness;\n" \
|
||||
|
||||
typedef struct _MetaBackgroundLayer MetaBackgroundLayer;
|
||||
|
@@ -31,6 +31,8 @@
|
||||
|
||||
#include "wayland/meta-wayland-private.h"
|
||||
|
||||
#include "compositor/region-utils.h"
|
||||
|
||||
struct _MetaSurfaceActorWaylandPrivate
|
||||
{
|
||||
MetaWaylandSurface *surface;
|
||||
@@ -126,12 +128,68 @@ meta_surface_actor_wayland_get_scale (MetaSurfaceActorWayland *actor)
|
||||
}
|
||||
|
||||
void
|
||||
meta_surface_actor_wayland_scale_texture (MetaSurfaceActorWayland *actor)
|
||||
meta_surface_actor_wayland_sync_state (MetaSurfaceActorWayland *self)
|
||||
{
|
||||
MetaShapedTexture *stex = meta_surface_actor_get_texture (META_SURFACE_ACTOR (actor));
|
||||
double output_scale = meta_surface_actor_wayland_get_scale (actor);
|
||||
MetaWaylandSurface *surface = meta_surface_actor_wayland_get_surface (self);
|
||||
MetaShapedTexture *stex =
|
||||
meta_surface_actor_get_texture (META_SURFACE_ACTOR (self));
|
||||
double texture_scale;
|
||||
|
||||
clutter_actor_set_scale (CLUTTER_ACTOR (stex), output_scale, output_scale);
|
||||
/* Given the surface's window type and what output the surface actor has the
|
||||
* largest region, scale the actor with the determined scale. */
|
||||
texture_scale = meta_surface_actor_wayland_get_scale (self);
|
||||
|
||||
/* Actor scale. */
|
||||
clutter_actor_set_scale (CLUTTER_ACTOR (stex), texture_scale, texture_scale);
|
||||
|
||||
/* Input region */
|
||||
if (surface->input_region)
|
||||
{
|
||||
cairo_region_t *scaled_input_region;
|
||||
int region_scale;
|
||||
|
||||
/* The input region from the Wayland surface is in the Wayland surface
|
||||
* coordinate space, while the surface actor input region is in the
|
||||
* physical pixel coordinate space. */
|
||||
region_scale = (int)(surface->scale * texture_scale);
|
||||
scaled_input_region = meta_region_scale (surface->input_region,
|
||||
region_scale);
|
||||
meta_surface_actor_set_input_region (META_SURFACE_ACTOR (self),
|
||||
scaled_input_region);
|
||||
cairo_region_destroy (scaled_input_region);
|
||||
}
|
||||
|
||||
/* Opaque region */
|
||||
if (surface->opaque_region)
|
||||
{
|
||||
cairo_region_t *scaled_opaque_region;
|
||||
|
||||
/* The opaque region from the Wayland surface is in Wayland surface
|
||||
* coordinate space, while the surface actor opaque region is in the
|
||||
* same coordinate space as the unscaled buffer texture. */
|
||||
scaled_opaque_region = meta_region_scale (surface->opaque_region,
|
||||
surface->scale);
|
||||
meta_surface_actor_set_opaque_region (META_SURFACE_ACTOR (self),
|
||||
scaled_opaque_region);
|
||||
cairo_region_destroy (scaled_opaque_region);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_surface_actor_wayland_sync_state_recursive (MetaSurfaceActorWayland *self)
|
||||
{
|
||||
MetaWaylandSurface *surface = meta_surface_actor_wayland_get_surface (self);
|
||||
GList *iter;
|
||||
|
||||
meta_surface_actor_wayland_sync_state (self);
|
||||
|
||||
for (iter = surface->subsurfaces; iter != NULL; iter = iter->next)
|
||||
{
|
||||
MetaWaylandSurface *subsurf = iter->data;
|
||||
|
||||
meta_surface_actor_wayland_sync_state_recursive (
|
||||
META_SURFACE_ACTOR_WAYLAND (subsurf->surface_actor));
|
||||
}
|
||||
}
|
||||
|
||||
static MetaWindow *
|
||||
|
@@ -63,7 +63,10 @@ void meta_surface_actor_wayland_set_texture (MetaSurfaceActorWayland *self,
|
||||
|
||||
double meta_surface_actor_wayland_get_scale (MetaSurfaceActorWayland *actor);
|
||||
|
||||
void meta_surface_actor_wayland_scale_texture (MetaSurfaceActorWayland *actor);
|
||||
void meta_surface_actor_wayland_sync_state (MetaSurfaceActorWayland *self);
|
||||
|
||||
void meta_surface_actor_wayland_sync_state_recursive (MetaSurfaceActorWayland *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __META_SURFACE_ACTOR_WAYLAND_H__ */
|
||||
|
@@ -172,6 +172,35 @@ meta_region_iterator_next (MetaRegionIterator *iter)
|
||||
}
|
||||
}
|
||||
|
||||
cairo_region_t *
|
||||
meta_region_scale (cairo_region_t *region, int scale)
|
||||
{
|
||||
int n_rects, i;
|
||||
cairo_rectangle_int_t *rects;
|
||||
cairo_region_t *scaled_region;
|
||||
|
||||
if (scale == 1)
|
||||
return cairo_region_copy (region);
|
||||
|
||||
n_rects = cairo_region_num_rectangles (region);
|
||||
|
||||
rects = g_malloc (sizeof(cairo_rectangle_int_t) * n_rects);
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
cairo_region_get_rectangle (region, i, &rects[i]);
|
||||
rects[i].x *= scale;
|
||||
rects[i].y *= scale;
|
||||
rects[i].width *= scale;
|
||||
rects[i].height *= scale;
|
||||
}
|
||||
|
||||
scaled_region = cairo_region_create_rectangles (rects, n_rects);
|
||||
|
||||
g_free (rects);
|
||||
|
||||
return scaled_region;
|
||||
}
|
||||
|
||||
static void
|
||||
add_expanded_rect (MetaRegionBuilder *builder,
|
||||
int x,
|
||||
|
@@ -92,6 +92,8 @@ void meta_region_iterator_init (MetaRegionIterator *iter,
|
||||
gboolean meta_region_iterator_at_end (MetaRegionIterator *iter);
|
||||
void meta_region_iterator_next (MetaRegionIterator *iter);
|
||||
|
||||
cairo_region_t *meta_region_scale (cairo_region_t *region, int scale);
|
||||
|
||||
cairo_region_t *meta_make_border_region (cairo_region_t *region,
|
||||
int x_amount,
|
||||
int y_amount,
|
||||
|
@@ -482,6 +482,8 @@ struct _MetaWindowClass
|
||||
gboolean (*update_icon) (MetaWindow *window,
|
||||
cairo_surface_t **icon,
|
||||
cairo_surface_t **mini_icon);
|
||||
void (*main_monitor_changed) (MetaWindow *window,
|
||||
const MetaMonitorInfo *old);
|
||||
};
|
||||
|
||||
/* These differ from window->has_foo_func in that they consider
|
||||
|
@@ -761,6 +761,20 @@ meta_window_update_desc (MetaWindow *window)
|
||||
window->desc = g_strdup_printf ("0x%lx", window->xwindow);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_main_monitor_changed (MetaWindow *window,
|
||||
const MetaMonitorInfo *old)
|
||||
{
|
||||
META_WINDOW_GET_CLASS (window)->main_monitor_changed (window, old);
|
||||
|
||||
if (old)
|
||||
g_signal_emit_by_name (window->screen, "window-left-monitor",
|
||||
old->number, window);
|
||||
if (window->monitor)
|
||||
g_signal_emit_by_name (window->screen, "window-entered-monitor",
|
||||
window->monitor->number, window);
|
||||
}
|
||||
|
||||
MetaWindow *
|
||||
_meta_window_shared_new (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
@@ -1128,7 +1142,7 @@ _meta_window_shared_new (MetaDisplay *display,
|
||||
meta_window_update_struts (window);
|
||||
}
|
||||
|
||||
g_signal_emit_by_name (window->screen, "window-entered-monitor", window->monitor->number, window);
|
||||
meta_window_main_monitor_changed (window, NULL);
|
||||
|
||||
/* Must add window to stack before doing move/resize, since the
|
||||
* window might have fullscreen size (i.e. should have been
|
||||
@@ -1369,9 +1383,10 @@ meta_window_unmanage (MetaWindow *window,
|
||||
|
||||
if (window->monitor)
|
||||
{
|
||||
g_signal_emit_by_name (window->screen, "window-left-monitor",
|
||||
window->monitor->number, window);
|
||||
const MetaMonitorInfo *old = window->monitor;
|
||||
|
||||
window->monitor = NULL;
|
||||
meta_window_main_monitor_changed (window, old);
|
||||
}
|
||||
|
||||
if (!window->override_redirect)
|
||||
@@ -3568,9 +3583,7 @@ meta_window_update_monitor (MetaWindow *window,
|
||||
window->screen->active_workspace != window->workspace)
|
||||
meta_window_change_workspace (window, window->screen->active_workspace);
|
||||
|
||||
if (old)
|
||||
g_signal_emit_by_name (window->screen, "window-left-monitor", old->number, window);
|
||||
g_signal_emit_by_name (window->screen, "window-entered-monitor", window->monitor->number, window);
|
||||
meta_window_main_monitor_changed (window, old);
|
||||
|
||||
/* If we're changing monitors, we need to update the has_maximize_func flag,
|
||||
* as the working area has changed. */
|
||||
|
@@ -662,6 +662,22 @@ get_button_rect (MetaButtonType type,
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_class_from_button_type (MetaButtonType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case META_BUTTON_TYPE_CLOSE:
|
||||
return "close";
|
||||
case META_BUTTON_TYPE_MAXIMIZE:
|
||||
return "maximize";
|
||||
case META_BUTTON_TYPE_MINIMIZE:
|
||||
return "minimize";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_frame_layout_draw_with_style (MetaFrameLayout *layout,
|
||||
MetaStyleInfo *style_info,
|
||||
@@ -740,6 +756,10 @@ meta_frame_layout_draw_with_style (MetaFrameLayout *layout,
|
||||
state = gtk_style_context_get_state (style);
|
||||
for (button_type = META_BUTTON_TYPE_CLOSE; button_type < META_BUTTON_TYPE_LAST; button_type++)
|
||||
{
|
||||
const char *button_class = get_class_from_button_type (button_type);
|
||||
if (button_class)
|
||||
gtk_style_context_add_class (style, button_class);
|
||||
|
||||
get_button_rect (button_type, fgeom, &button_rect);
|
||||
|
||||
if (button_states[button_type] == META_BUTTON_STATE_PRELIGHT)
|
||||
@@ -822,6 +842,8 @@ meta_frame_layout_draw_with_style (MetaFrameLayout *layout,
|
||||
}
|
||||
}
|
||||
cairo_restore (cr);
|
||||
if (button_class)
|
||||
gtk_style_context_remove_class (style, button_class);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -40,17 +40,6 @@ typedef struct {
|
||||
GList *resources;
|
||||
} MetaWaylandOutput;
|
||||
|
||||
/* The minimum resolution at which we turn on a window-scale of 2 */
|
||||
#define HIDPI_LIMIT 192
|
||||
|
||||
/* The minimum screen height at which we turn on a window-scale of 2;
|
||||
* below this there just isn't enough vertical real estate for GNOME
|
||||
* apps to work, and it's better to just be tiny */
|
||||
#define HIDPI_MIN_HEIGHT 1200
|
||||
|
||||
/* From http://en.wikipedia.org/wiki/4K_resolution#Resolutions_of_common_formats */
|
||||
#define SMALLEST_4K_WIDTH 3656
|
||||
|
||||
static void
|
||||
output_resource_destroy (struct wl_resource *res)
|
||||
{
|
||||
@@ -60,45 +49,6 @@ output_resource_destroy (struct wl_resource *res)
|
||||
wayland_output->resources = g_list_remove (wayland_output->resources, res);
|
||||
}
|
||||
|
||||
/* Based on code from gnome-settings-daemon */
|
||||
static int
|
||||
compute_scale (MetaOutput *output)
|
||||
{
|
||||
int scale = 1;
|
||||
|
||||
/* Scaling makes no sense */
|
||||
if (output->crtc->rect.width < HIDPI_MIN_HEIGHT)
|
||||
goto out;
|
||||
|
||||
/* 4K TV */
|
||||
if (output->name != NULL && strstr(output->name, "HDMI") != NULL &&
|
||||
output->crtc->rect.width >= SMALLEST_4K_WIDTH)
|
||||
goto out;
|
||||
|
||||
/* Somebody encoded the aspect ratio (16/9 or 16/10)
|
||||
* instead of the physical size */
|
||||
if ((output->width_mm == 160 && output->height_mm == 90) ||
|
||||
(output->width_mm == 160 && output->height_mm == 100) ||
|
||||
(output->width_mm == 16 && output->height_mm == 9) ||
|
||||
(output->width_mm == 16 && output->height_mm == 10))
|
||||
goto out;
|
||||
|
||||
if (output->width_mm > 0 && output->height_mm > 0)
|
||||
{
|
||||
double dpi_x, dpi_y;
|
||||
dpi_x = (double)output->crtc->rect.width / (output->width_mm / 25.4);
|
||||
dpi_y = (double)output->crtc->rect.height / (output->height_mm / 25.4);
|
||||
/* We don't completely trust these values so both
|
||||
must be high, and never pick higher ratio than
|
||||
2 automatically */
|
||||
if (dpi_x > HIDPI_LIMIT && dpi_y > HIDPI_LIMIT)
|
||||
scale = 2;
|
||||
}
|
||||
|
||||
out:
|
||||
return scale;
|
||||
}
|
||||
|
||||
static void
|
||||
bind_output (struct wl_client *client,
|
||||
void *data,
|
||||
@@ -146,7 +96,6 @@ bind_output (struct wl_client *client,
|
||||
(int)output->crtc->current_mode->height,
|
||||
(int)output->crtc->current_mode->refresh_rate);
|
||||
|
||||
output->scale = compute_scale (output);
|
||||
if (version >= WL_OUTPUT_SCALE_SINCE_VERSION)
|
||||
wl_output_send_scale (resource, output->scale);
|
||||
|
||||
@@ -199,24 +148,22 @@ wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
||||
wayland_output->y != output->crtc->rect.y ||
|
||||
wayland_output->transform != wl_transform)
|
||||
{
|
||||
wl_resource_post_event (resource,
|
||||
WL_OUTPUT_GEOMETRY,
|
||||
(int)output->crtc->rect.x,
|
||||
(int)output->crtc->rect.y,
|
||||
output->width_mm,
|
||||
output->height_mm,
|
||||
output->subpixel_order,
|
||||
output->vendor,
|
||||
output->product,
|
||||
wl_transform);
|
||||
wl_output_send_geometry (resource,
|
||||
(int)output->crtc->rect.x,
|
||||
(int)output->crtc->rect.y,
|
||||
output->width_mm,
|
||||
output->height_mm,
|
||||
output->subpixel_order,
|
||||
output->vendor,
|
||||
output->product,
|
||||
wl_transform);
|
||||
}
|
||||
|
||||
wl_resource_post_event (resource,
|
||||
WL_OUTPUT_MODE,
|
||||
mode_flags,
|
||||
(int)output->crtc->current_mode->width,
|
||||
(int)output->crtc->current_mode->height,
|
||||
(int)output->crtc->current_mode->refresh_rate);
|
||||
wl_output_send_mode (resource,
|
||||
mode_flags,
|
||||
(int)output->crtc->current_mode->width,
|
||||
(int)output->crtc->current_mode->height,
|
||||
(int)output->crtc->current_mode->refresh_rate);
|
||||
}
|
||||
|
||||
/* It's very important that we change the output pointer here, as
|
||||
|
@@ -48,6 +48,8 @@
|
||||
#include "window-private.h"
|
||||
#include "window-wayland.h"
|
||||
|
||||
#include "compositor/region-utils.h"
|
||||
|
||||
#include "meta-surface-actor.h"
|
||||
#include "meta-surface-actor-wayland.h"
|
||||
|
||||
@@ -119,8 +121,8 @@ static void
|
||||
surface_process_damage (MetaWaylandSurface *surface,
|
||||
cairo_region_t *region)
|
||||
{
|
||||
cairo_region_t *scaled_region;
|
||||
cairo_rectangle_int_t buffer_rect;
|
||||
int scale = surface->scale;
|
||||
int i, n_rectangles;
|
||||
|
||||
if (!surface->buffer)
|
||||
@@ -131,24 +133,30 @@ surface_process_damage (MetaWaylandSurface *surface,
|
||||
buffer_rect.width = cogl_texture_get_width (surface->buffer->texture);
|
||||
buffer_rect.height = cogl_texture_get_height (surface->buffer->texture);
|
||||
|
||||
/* The region will get destroyed after this call anyway so we can
|
||||
* just modify it here to avoid a copy. */
|
||||
cairo_region_intersect_rectangle (region, &buffer_rect);
|
||||
/* The damage region must be in the same coordinate space as the buffer,
|
||||
* i.e. scaled with surface->scale. */
|
||||
scaled_region = meta_region_scale (region, surface->scale);
|
||||
|
||||
cairo_region_intersect_rectangle (scaled_region, &buffer_rect);
|
||||
|
||||
/* First update the buffer. */
|
||||
meta_wayland_buffer_process_damage (surface->buffer, region);
|
||||
meta_wayland_buffer_process_damage (surface->buffer, scaled_region);
|
||||
|
||||
/* Now damage the actor. */
|
||||
/* Now damage the actor. The actor expects damage in the unscaled texture
|
||||
* coordinate space, i.e. same as the buffer. */
|
||||
/* XXX: Should this be a signal / callback on MetaWaylandBuffer instead? */
|
||||
n_rectangles = cairo_region_num_rectangles (region);
|
||||
n_rectangles = cairo_region_num_rectangles (scaled_region);
|
||||
for (i = 0; i < n_rectangles; i++)
|
||||
{
|
||||
cairo_rectangle_int_t rect;
|
||||
cairo_region_get_rectangle (region, i, &rect);
|
||||
cairo_region_get_rectangle (scaled_region, i, &rect);
|
||||
|
||||
meta_surface_actor_process_damage (surface->surface_actor,
|
||||
rect.x * scale, rect.y * scale, rect.width * scale, rect.height * scale);
|
||||
rect.x, rect.y,
|
||||
rect.width, rect.height);
|
||||
}
|
||||
|
||||
cairo_region_destroy (scaled_region);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -356,36 +364,6 @@ parent_surface_committed (gpointer data, gpointer user_data)
|
||||
subsurface_parent_surface_committed (data);
|
||||
}
|
||||
|
||||
static cairo_region_t*
|
||||
scale_region (cairo_region_t *region, int scale)
|
||||
{
|
||||
int n_rects, i;
|
||||
cairo_rectangle_int_t *rects;
|
||||
cairo_region_t *scaled_region;
|
||||
|
||||
if (scale == 1)
|
||||
return region;
|
||||
|
||||
n_rects = cairo_region_num_rectangles (region);
|
||||
|
||||
rects = g_malloc (sizeof(cairo_rectangle_int_t) * n_rects);
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
cairo_region_get_rectangle (region, i, &rects[i]);
|
||||
rects[i].x *= scale;
|
||||
rects[i].y *= scale;
|
||||
rects[i].width *= scale;
|
||||
rects[i].height *= scale;
|
||||
}
|
||||
|
||||
scaled_region = cairo_region_create_rectangles (rects, n_rects);
|
||||
|
||||
g_free (rects);
|
||||
cairo_region_destroy (region);
|
||||
|
||||
return scaled_region;
|
||||
}
|
||||
|
||||
static void
|
||||
commit_pending_state (MetaWaylandSurface *surface,
|
||||
MetaWaylandPendingState *pending)
|
||||
@@ -426,18 +404,20 @@ commit_pending_state (MetaWaylandSurface *surface,
|
||||
|
||||
if (pending->opaque_region)
|
||||
{
|
||||
pending->opaque_region = scale_region (pending->opaque_region, surface->scale);
|
||||
meta_surface_actor_set_opaque_region (surface->surface_actor, pending->opaque_region);
|
||||
}
|
||||
if (pending->input_region)
|
||||
{
|
||||
pending->input_region = scale_region (pending->input_region,
|
||||
meta_surface_actor_wayland_get_scale (META_SURFACE_ACTOR_WAYLAND (surface->surface_actor)));
|
||||
meta_surface_actor_set_input_region (surface->surface_actor, pending->input_region);
|
||||
if (surface->opaque_region)
|
||||
cairo_region_destroy (surface->opaque_region);
|
||||
surface->opaque_region = cairo_region_reference (pending->opaque_region);
|
||||
}
|
||||
|
||||
/* scale surface texture */
|
||||
meta_surface_actor_wayland_scale_texture (META_SURFACE_ACTOR_WAYLAND (surface->surface_actor));
|
||||
if (pending->input_region)
|
||||
{
|
||||
if (surface->input_region)
|
||||
cairo_region_destroy (surface->input_region);
|
||||
surface->input_region = cairo_region_reference (pending->input_region);
|
||||
}
|
||||
|
||||
meta_surface_actor_wayland_sync_state (
|
||||
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor));
|
||||
|
||||
/* wl_surface.frame */
|
||||
wl_list_insert_list (&compositor->frame_callbacks, &pending->frame_callback_list);
|
||||
@@ -692,6 +672,11 @@ wl_surface_destructor (struct wl_resource *resource)
|
||||
surface_set_buffer (surface, NULL);
|
||||
pending_state_destroy (&surface->pending);
|
||||
|
||||
if (surface->opaque_region)
|
||||
cairo_region_destroy (surface->opaque_region);
|
||||
if (surface->input_region)
|
||||
cairo_region_destroy (surface->input_region);
|
||||
|
||||
g_object_unref (surface->surface_actor);
|
||||
|
||||
if (surface->resource)
|
||||
@@ -1021,6 +1006,12 @@ xdg_popup_destructor (struct wl_resource *resource)
|
||||
{
|
||||
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
|
||||
|
||||
if (surface->popup.parent)
|
||||
{
|
||||
wl_list_remove (&surface->popup.parent_destroy_listener.link);
|
||||
surface->popup.parent = NULL;
|
||||
}
|
||||
|
||||
if (surface->popup.popup)
|
||||
meta_wayland_popup_dismiss (surface->popup.popup);
|
||||
|
||||
@@ -1038,6 +1029,20 @@ static const struct xdg_popup_interface meta_wayland_xdg_popup_interface = {
|
||||
xdg_popup_destroy,
|
||||
};
|
||||
|
||||
static void
|
||||
handle_popup_parent_destroyed (struct wl_listener *listener, void *data)
|
||||
{
|
||||
MetaWaylandSurface *surface =
|
||||
wl_container_of (listener, surface, popup.parent_destroy_listener);
|
||||
|
||||
wl_resource_post_error (surface->xdg_popup,
|
||||
XDG_POPUP_ERROR_NOT_THE_TOPMOST_POPUP,
|
||||
"destroyed popup not top most popup");
|
||||
surface->popup.parent = NULL;
|
||||
|
||||
destroy_window (surface);
|
||||
}
|
||||
|
||||
static void
|
||||
handle_popup_destroyed (struct wl_listener *listener, void *data)
|
||||
{
|
||||
@@ -1130,14 +1135,17 @@ xdg_shell_get_xdg_popup (struct wl_client *client,
|
||||
surface->xdg_popup = popup_resource;
|
||||
surface->xdg_shell_resource = resource;
|
||||
|
||||
surface->popup.parent = parent_surf;
|
||||
surface->popup.parent_destroy_listener.notify = handle_popup_parent_destroyed;
|
||||
wl_resource_add_destroy_listener (parent_surf->resource,
|
||||
&surface->popup.parent_destroy_listener);
|
||||
|
||||
window = meta_window_wayland_new (display, surface);
|
||||
meta_window_move_frame (window, FALSE,
|
||||
parent_surf->window->rect.x + x,
|
||||
parent_surf->window->rect.y + y);
|
||||
window->showing_for_first_time = FALSE;
|
||||
window->placed = TRUE;
|
||||
meta_window_set_transient_for (window, parent_surf->window);
|
||||
meta_window_set_type (window, META_WINDOW_DROPDOWN_MENU);
|
||||
|
||||
meta_wayland_surface_set_window (surface, window);
|
||||
|
||||
|
@@ -81,6 +81,8 @@ struct _MetaWaylandSurface
|
||||
MetaWindow *window;
|
||||
MetaWaylandBuffer *buffer;
|
||||
struct wl_listener buffer_destroy_listener;
|
||||
cairo_region_t *input_region;
|
||||
cairo_region_t *opaque_region;
|
||||
int scale;
|
||||
int32_t offset_x, offset_y;
|
||||
GList *subsurfaces;
|
||||
@@ -102,8 +104,11 @@ struct _MetaWaylandSurface
|
||||
|
||||
/* xdg_popup */
|
||||
struct {
|
||||
MetaWaylandPopup *popup;
|
||||
struct wl_listener destroy_listener;
|
||||
MetaWaylandSurface *parent;
|
||||
struct wl_listener parent_destroy_listener;
|
||||
|
||||
MetaWaylandPopup *popup;
|
||||
struct wl_listener destroy_listener;
|
||||
} popup;
|
||||
|
||||
/* wl_subsurface stuff. */
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "boxes-private.h"
|
||||
#include "stack-tracker.h"
|
||||
#include "meta-wayland-surface.h"
|
||||
#include "compositor/meta-surface-actor-wayland.h"
|
||||
|
||||
struct _MetaWindowWayland
|
||||
{
|
||||
@@ -64,6 +65,16 @@ meta_window_wayland_manage (MetaWindow *window)
|
||||
window->stamp,
|
||||
0);
|
||||
}
|
||||
|
||||
if (window->surface->role == META_WAYLAND_SURFACE_ROLE_XDG_POPUP)
|
||||
{
|
||||
MetaWaylandSurface *parent = window->surface->popup.parent;
|
||||
|
||||
g_assert (parent);
|
||||
|
||||
meta_window_set_transient_for (window, parent->window);
|
||||
meta_window_set_type (window, META_WINDOW_DROPDOWN_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -260,6 +271,21 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_wayland_main_monitor_changed (MetaWindow *window,
|
||||
const MetaMonitorInfo *old)
|
||||
{
|
||||
MetaWaylandSurface *surface = window->surface;
|
||||
|
||||
if (surface)
|
||||
{
|
||||
MetaSurfaceActorWayland *actor =
|
||||
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor);
|
||||
|
||||
meta_surface_actor_wayland_sync_state_recursive (actor);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
appears_focused_changed (GObject *object,
|
||||
GParamSpec *pspec,
|
||||
@@ -298,6 +324,7 @@ meta_window_wayland_class_init (MetaWindowWaylandClass *klass)
|
||||
window_class->grab_op_began = meta_window_wayland_grab_op_began;
|
||||
window_class->grab_op_ended = meta_window_wayland_grab_op_ended;
|
||||
window_class->move_resize_internal = meta_window_wayland_move_resize_internal;
|
||||
window_class->main_monitor_changed = meta_window_wayland_main_monitor_changed;
|
||||
}
|
||||
|
||||
MetaWindow *
|
||||
|
@@ -1470,6 +1470,12 @@ meta_window_x11_update_icon (MetaWindow *window,
|
||||
META_MINI_ICON_WIDTH, META_MINI_ICON_HEIGHT);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_x11_main_monitor_changed (MetaWindow *window,
|
||||
const MetaMonitorInfo *old)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
meta_window_x11_class_init (MetaWindowX11Class *klass)
|
||||
{
|
||||
@@ -1488,6 +1494,7 @@ meta_window_x11_class_init (MetaWindowX11Class *klass)
|
||||
window_class->update_struts = meta_window_x11_update_struts;
|
||||
window_class->get_default_skip_hints = meta_window_x11_get_default_skip_hints;
|
||||
window_class->update_icon = meta_window_x11_update_icon;
|
||||
window_class->main_monitor_changed = meta_window_x11_main_monitor_changed;
|
||||
}
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user