Compare commits

...

19 Commits

Author SHA1 Message Date
83bddd75a6 Bump version to 3.20.3
Update NEWS.
2016-06-29 00:33:29 +02:00
1169ccc331 xwayland: Use CurrentTime on all XConvertSelection calls
The call fetching the targets mistakenly used the timestamp meant
to back up the TIMESTAMP atom (hence, it's the timestamp at which
the selection is *owned* by the compositor, on behalf of a wayland
client).

This timestamp is actually only updated when the compositor gets
to own the selection, so it's a randomly late timestamp to retrieve
the TARGETS atom content, which certain clients might end up
ignoring.

https://bugzilla.gnome.org/show_bug.cgi?id=768007
2016-06-28 18:25:53 +02:00
d934cdee4f ui/frames: Drop the current grab info on button release
This was added in commit d05b750b8d and
later removed inadvertently in commit
d561b3b18f .

https://bugzilla.gnome.org/show_bug.cgi?id=767969
2016-06-23 18:49:40 +02:00
9ec231f603 frames: "Initialize" frame background
Frames are painted on the frame window according to the GTK+ theme.
Depending on the target's visual, this means either drawing over
a black destination or a fully transparent one. So in cases where
the theme doesn't paint decorations with full opacity, decorations
for windows with an rgba visual look different from those with a
non-rgba visual. Using an rgba visual for all frames independent
from the client's visual can potentially break clients, so our
only option for a consistent appearance is to explicitly initialize
the frame background to black before painting the theme's decoration
on top.

https://bugzilla.gnome.org/show_bug.cgi?id=745060
2016-06-23 16:52:17 +02:00
9b5daf9094 frames: Don't clip out "invisible" parts of frames
The GTK+ theme may draw parts of the decorations outside the actual
frame. Since commit f9db65f47f we make sure that the frame is big
enough to account for any overdrawing, however as we still clip the
cairo context to the actual frame before drawing the decorations,
those parts aren't actually painted.
This issue is not very obvious for most frames, as they use a non-rgba
visual where the unpainted parts appear black, which gives the expected
result with many themes once the shape mask is applied (as the mask does
include any overdrawn parts). For frames using an rgba visual however,
unpainted parts are transparent, so any overdrawn decorations are clearly
missing.
Fix this by only clipping out the client area when drawing decorations.

https://bugzilla.gnome.org/show_bug.cgi?id=745060
2016-06-23 16:52:17 +02:00
bd1297f35c Updated Indonesian translation 2016-06-22 21:19:43 +00:00
15aa1a5140 surface-actor: Keep track of ignored damage
We ignore all damage while a surface is frozen and queue a full
update instead once it's thawed. While not super efficient, this
isn't overly bad for the intended case of catching up with any
updates that happened during a compositor effect. However when
extended frame sync is used, surfaces are also frozen while the
client is drawing a frame, in which case the current behavior is
pretty damaging (pun intended), as we end up redrawing the entire
window each frame. To address this, keep track of the actual damage
we ignore and apply it when the surface is thawed.

https://bugzilla.gnome.org/show_bug.cgi?id=767798
2016-06-17 21:40:38 +02:00
b2bf30165f wayland: Mark pending moved as moved
The result flag needs to be marked as moved even for pending moves,
otherwise the window's unconstrained_rect doesn't get updated in
meta_window_move_resize_internal() and the anchor grab is wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=764180
2016-06-13 14:03:44 +02:00
e75d9a5237 wayland: Implement force-quit using kill()
The X11 backend uses EWMH's _NET_WM_PID to get the PID of an offending
client and kill its PID to force the client to terminate.

The Wayland backend is using a Wayland protocol error, but if the client
is hung, that will not be sufficient to kill the client.

Retrieve the client PID under Wayland using the Wayland client API
wl_client_get_credentials() and kill() the client the same way the X11
backend does.

https://bugzilla.gnome.org/show_bug.cgi?id=767464
2016-06-10 11:50:17 +02:00
aa65fc8b85 wayland-surface: UTF-8 validate title, class and app ID strings
The protocol says these must be UTF-8 so let's ensure they are.

https://bugzilla.gnome.org/show_bug.cgi?id=752788
2016-06-07 20:14:13 +02:00
a15f33ac9c x11/window-props: Convert WM_NAME and WM_CLASS to UTF-8
gjs throws exceptions on non UTF-8 strings which, in some cases, crash
gnome-shell. ICCCM string properties are defined to be Latin-1 encoded
so we can try to convert them to avoid it.

Note that _NET_WM_NAME is defined to be UTF-8 and we already validate
it in utf8_string_from_results() .

https://bugzilla.gnome.org/show_bug.cgi?id=752788
2016-06-07 20:10:40 +02:00
0b4cd7ed92 window: Don't create invalid UTF-8 window description strings
printf string precision counts bytes so we may end up creating invalid
UTF-8 strings here. Instead, use glib's unicode aware methods to clip
the title.

https://bugzilla.gnome.org/show_bug.cgi?id=765535
2016-06-07 20:10:39 +02:00
69086f8daa Updated Turkish translation 2016-05-26 19:27:56 +00:00
ae8ce15587 Updated Norwegian bokmål translation. 2016-05-23 19:00:34 +02:00
16e2953c6f wayland-outputs: Refactor event sending to ensure we're consistent
This makes us behave the same both on bind and when an output
changes. In particular, we were not sending scale and done events on
output changes. We were also unconditionally sending mode events on
output changes even though these should only be sent if there is an
actual mode change.

https://bugzilla.gnome.org/show_bug.cgi?id=766528
2016-05-20 15:46:07 +02:00
dc257ee1c1 wayland: don't send notify when window is being unmanaged
If we try to send notify event (either from surface_state_changed()
or from meta_window_wayland_move_resize_internal()),
we will crash, because we don't have a sufrace anymore.
There's no reason why to resize the window that is being
unmanaged anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=751847
2016-05-12 20:08:48 +02:00
4baf217d74 keybindings: Avoid using unitialized memory and grabbing random keys
meta_parse_accelerator() considers 0 length accelerator strings as
valid, meaning that the keybinding should be disabled. Unfortunately,
it doesn't initialize the MetaKeyCombo so if the caller doesn't
initialize it either, we end up using random values and possibly
grabbing random keys.

https://bugzilla.gnome.org/show_bug.cgi?id=766270
2016-05-12 20:08:33 +02:00
7631ba5208 Bump version to 3.20.2
Update NEWS.
2016-05-10 22:15:58 +02:00
b31eddd208 Updated Portuguese translation 2016-04-30 15:15:52 +00:00
17 changed files with 354 additions and 640 deletions

33
NEWS
View File

@ -1,3 +1,36 @@
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]

View File

@ -2,7 +2,7 @@ AC_PREREQ(2.62)
m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [20])
m4_define([mutter_micro_version], [1])
m4_define([mutter_micro_version], [3])
m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version])

View File

@ -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"

432
po/nb.po
View File

@ -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"

View File

@ -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"

View File

@ -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ıı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"

View File

@ -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;
};
@ -261,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
@ -271,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;
}
@ -332,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);
}
}

View File

@ -1379,8 +1379,8 @@ meta_display_grab_accelerator (MetaDisplay *display,
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))
{

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;
};

View File

@ -1338,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);
}
@ -1348,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);
}
@ -1964,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);
}
@ -1974,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_);
}

View File

@ -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,12 +432,6 @@ appears_focused_changed (GObject *object,
gpointer user_data)
{
MetaWindow *window = META_WINDOW (object);
/* 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);
}

View File

@ -1577,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);
}
}

View File

@ -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
{