Compare commits

...

10 Commits

Author SHA1 Message Date
Florian Müllner
a8b06afba6 Bump version to 3.22.4
Update NEWS.
2017-04-11 02:31:57 +02:00
Daniel Stone
5b232a80cd xwayland: Fix lockfile size confusion
Similarly to Weston (where this code originated), there were two errors
in the X11 lockfile handling.

Firstly, after reading 11 characters from the lock file (which could
have been placed by any process), there was no guarantee of
NUL-termination, meaning strtol could've theoretically run off the end
of the string.

Secondly, whilst writing the new lock, the trailing NUL byte was not
correctly accounted for. The size passed as an input to snprintf takes
the maximum size of the string including the trailing NUL, whilst the
return (and the input to write) gives the actual size of the string
without the trailing NUL.

The code did attempt to check the return value, however snprintf returns
the size of the _potential_ string written, before snprintf culls it, so
this was off by one, and the LF was not being written.

Signed-off-by: Daniel Stone <daniels@collabora.com>

https://bugzilla.gnome.org/show_bug.cgi?id=774613
2017-04-11 02:29:49 +02:00
Shantanu Goel
50c8ee9490 frames: use correct variable in for loop assignment
update_context_styles is using the wrong variable when advancing
to the next key in the hash table which can cause an infinite
loop if # of variants is ever greater than 1.

This problem was originally reported here:

https://github.com/linuxmint/Cinnamon/issues/5254

The following patch was commited in Mint:

https://github.com/linuxmint/muffin/commit/6120bdde

This patch is just a shorter version of the Mint patch
and they deserve all the credit for the idea.

https://bugzilla.gnome.org/show_bug.cgi?id=780254
2017-04-11 00:55:51 +02:00
Olivier Fourdan
406e1c3577 xwayland: Raise the dnd window each time
If the dnd window ends up lower in the overall stack than the window
it's supposed to fence, the drop might end up in some other window
underneath the expected target window.

Maps and raises the dnd window each time it's shown so that it's always
placed above.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=779800
2017-03-11 15:31:12 +01:00
Carlos Garnacho
68b4d1e462 xwayland: Use timestamp from XdndPosition/Drop on XConvertSelection
QT apps reject DnD if the timestamp received in the SelectionRequest
event isn't the same it gave in XdndPosition/Drop client messages.
Bookkeeping and using it in XConvertSelection makes it happy again.

https://bugzilla.gnome.org/show_bug.cgi?id=779757
2017-03-11 15:30:41 +01:00
Carlos Garnacho
3378547aa2 xwayland: Check MetaDndBridge focus_window when updating X11 proxy window
We are keeping accounting of the focus window as seen by the DnD bridge
right here, so use it instead of the MetaWaylandDragGrab focus as it may
lag behind the real focus (i.e. till the drag source notices the window
and sends XdndEnter to it).

This leads to the window trying to be repositioned more often than
necessary when the drag source takes long to send the XdndEnter client
message, and maybe not repositioned at all if the pointer leaves the
surface while no XdndEnter message was received.

https://bugzilla.gnome.org/show_bug.cgi?id=763246
2017-03-11 15:30:31 +01:00
Carlos Garnacho
9bd4fd7b98 xwayland: Release xdnd grabs ASAP
We currently wait for the selection being cleared by the drag source,
which might not happen on not quite educated clients. This may leave
a stuck XDND grab in the compositor side.

We can actually do a bit better, and clear the grab if:
1) The drag source sent XdndDrop to the wayland drag destination.
2) There's no accepting drag destination and all pointer buttons are
   released.
3) As usual, whenever the drag source clears the selection data

https://bugzilla.gnome.org/show_bug.cgi?id=763246
2017-03-11 15:30:24 +01:00
GNOME Translation Robot
a27f8debca Update Scottish Gaelic translation 2017-03-07 12:00:31 +00:00
Rui Matos
cc8d61e5cf clutter-clone: Unset source when source actor is destroyed
Otherwise we might be holding on to a source actor that's no longer
fully functioning and cause crashes if for example we try to paint it.

https://bugzilla.gnome.org/show_bug.cgi?id=779483
2017-03-06 13:59:48 +01:00
Sveinn í Felli
bc567cfca7 Update Icelandic translation 2017-03-02 11:36:36 +00:00
8 changed files with 1118 additions and 2754 deletions

14
NEWS
View File

@@ -1,3 +1,17 @@
3.22.4
======
* Fix crash when a window closes during Alt+Tab [Rui; #779483]
* Fix mouse input stopping to work in applications [Carlos; #763246]
* Fix DnD between QT5 and GTK3 applications on wayland [Carlos; #779757]
* Fix lock-up when using additional theme variants [Shantanu; #780254]
* Fix lockfile size confusion [Daniel; #774613]
Contributors:
Olivier Fourdan, Carlos Garnacho, Shantanu Goel, Rui Matos, Daniel Stone
Translations:
Sveinn í Felli [is], GNOME Translation Robot [gd]
3.22.3 3.22.3
====== ======
* Fix switching between two finger- and edge scrolling on wayland [Rui; #771744] * Fix switching between two finger- and edge scrolling on wayland [Rui; #771744]

View File

@@ -54,6 +54,7 @@
struct _ClutterClonePrivate struct _ClutterClonePrivate
{ {
ClutterActor *clone_source; ClutterActor *clone_source;
gulong source_destroy_id;
}; };
G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR) G_DEFINE_TYPE_WITH_PRIVATE (ClutterClone, clutter_clone, CLUTTER_TYPE_ACTOR)
@@ -376,6 +377,13 @@ clutter_clone_new (ClutterActor *source)
return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL); return g_object_new (CLUTTER_TYPE_CLONE, "source", source, NULL);
} }
static void
on_source_destroyed (ClutterActor *source,
ClutterClone *self)
{
clutter_clone_set_source_internal (self, NULL);
}
static void static void
clutter_clone_set_source_internal (ClutterClone *self, clutter_clone_set_source_internal (ClutterClone *self,
ClutterActor *source) ClutterActor *source)
@@ -387,6 +395,8 @@ clutter_clone_set_source_internal (ClutterClone *self,
if (priv->clone_source != NULL) if (priv->clone_source != NULL)
{ {
g_signal_handler_disconnect (priv->clone_source, priv->source_destroy_id);
priv->source_destroy_id = 0;
_clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self)); _clutter_actor_detach_clone (priv->clone_source, CLUTTER_ACTOR (self));
g_object_unref (priv->clone_source); g_object_unref (priv->clone_source);
priv->clone_source = NULL; priv->clone_source = NULL;
@@ -396,6 +406,8 @@ clutter_clone_set_source_internal (ClutterClone *self,
{ {
priv->clone_source = g_object_ref (source); priv->clone_source = g_object_ref (source);
_clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self)); _clutter_actor_attach_clone (priv->clone_source, CLUTTER_ACTOR (self));
priv->source_destroy_id = g_signal_connect (priv->clone_source, "destroy",
G_CALLBACK (on_source_destroyed), self);
} }
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_SOURCE]);

View File

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

297
po/gd.po
View File

@@ -1,14 +1,14 @@
# Scottish Gaelic translation for mutter. # Scottish Gaelic translation for mutter.
# Copyright (C) 2016 mutter's COPYRIGHT HOLDER # Copyright (C) 2016 mutter's COPYRIGHT HOLDER
# This file is distributed under the same license as the mutter package. # This file is distributed under the same license as the mutter package.
# GunChleoc <fios@foramnagaidhlig.net>, 2016. # GunChleoc <fios@foramnagaidhlig.net>, 2016, 2017.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutte"
"&keywords=I18N+L10N&component=general\n" "r&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-04-28 14:01+0000\n" "POT-Creation-Date: 2017-03-02 11:37+0000\n"
"PO-Revision-Date: 2016-04-28 15:57+0100\n" "PO-Revision-Date: 2017-03-07 11:59+0100\n"
"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n" "Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n"
"Language-Team: Fòram na Gàidhlig\n" "Language-Team: Fòram na Gàidhlig\n"
"Language: gd\n" "Language: gd\n"
@@ -20,255 +20,255 @@ msgstr ""
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
msgstr "Seòladaireachd" msgstr "Seòladaireachd"
#: ../data/50-mutter-navigation.xml.in.h:2 #: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1" msgid "Move window to workspace 1"
msgstr "Gluais an uinneag gu rum-obrach 1" msgstr "Gluais an uinneag gu rum-obrach 1"
#: ../data/50-mutter-navigation.xml.in.h:3 #: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2" msgid "Move window to workspace 2"
msgstr "Gluais an uinneag gu rum-obrach 2" msgstr "Gluais an uinneag gu rum-obrach 2"
#: ../data/50-mutter-navigation.xml.in.h:4 #: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3" msgid "Move window to workspace 3"
msgstr "Gluais an uinneag gu rum-obrach 3" msgstr "Gluais an uinneag gu rum-obrach 3"
#: ../data/50-mutter-navigation.xml.in.h:5 #: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4" msgid "Move window to workspace 4"
msgstr "Gluais an uinneag gu rum-obrach 4" msgstr "Gluais an uinneag gu rum-obrach 4"
#: ../data/50-mutter-navigation.xml.in.h:6 #: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace" msgid "Move window to last workspace"
msgstr "Gluais an uinneag gun rum-obrach mu dheireadh" msgstr "Gluais an uinneag gun rum-obrach mu dheireadh"
#: ../data/50-mutter-navigation.xml.in.h:7 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left" msgid "Move window one workspace to the left"
msgstr "Gluais an uinneag gun rum-obrach ris an taobh chlì" msgstr "Gluais an uinneag gun rum-obrach ris an taobh chlì"
#: ../data/50-mutter-navigation.xml.in.h:8 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right" msgid "Move window one workspace to the right"
msgstr "Gluais an uinneag gun rum-obrach ris an taobh deas" msgstr "Gluais an uinneag gun rum-obrach ris an taobh deas"
#: ../data/50-mutter-navigation.xml.in.h:9 #: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Gluais an uinneag gun rum-obrach os a chionn" msgstr "Gluais an uinneag gun rum-obrach os a chionn"
#: ../data/50-mutter-navigation.xml.in.h:10 #: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Gluais an uinneag gun rum-obrach foidhe" msgstr "Gluais an uinneag gun rum-obrach foidhe"
#: ../data/50-mutter-navigation.xml.in.h:11 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Gluais an uinneag gun sgrìn aig an taobh chlì" msgstr "Gluais an uinneag gun sgrìn aig an taobh chlì"
#: ../data/50-mutter-navigation.xml.in.h:12 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Gluais an uinneag gun sgrìn aig an taobh deas" msgstr "Gluais an uinneag gun sgrìn aig an taobh deas"
#: ../data/50-mutter-navigation.xml.in.h:13 #: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Gluais an uinneag gun sgrìn os a chionn" msgstr "Gluais an uinneag gun sgrìn os a chionn"
#: ../data/50-mutter-navigation.xml.in.h:14 #: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Gluais an uinneag gun sgrìn foidhe" msgstr "Gluais an uinneag gun sgrìn foidhe"
#: ../data/50-mutter-navigation.xml.in.h:15 #: data/50-mutter-navigation.xml:49
msgid "Switch applications" msgid "Switch applications"
msgstr "Gearr leum gu aplacaid eile" msgstr "Gearr leum gu aplacaid eile"
#: ../data/50-mutter-navigation.xml.in.h:16 #: data/50-mutter-navigation.xml:54
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Gearr leum gun aplacaid roimhpe" msgstr "Gearr leum gun aplacaid roimhpe"
#: ../data/50-mutter-navigation.xml.in.h:17 #: data/50-mutter-navigation.xml:58
msgid "Switch windows" msgid "Switch windows"
msgstr "Gearr leum gu uinneag eile" msgstr "Gearr leum gu uinneag eile"
#: ../data/50-mutter-navigation.xml.in.h:18 #: data/50-mutter-navigation.xml:63
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Gearr leum gun uinneag roimhpe" msgstr "Gearr leum gun uinneag roimhpe"
#: ../data/50-mutter-navigation.xml.in.h:19 #: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Gearr leum gu uinneag eile na h-aplacaid" msgstr "Gearr leum gu uinneag eile na h-aplacaid"
#: ../data/50-mutter-navigation.xml.in.h:20 #: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Gearr leum gu uinneag roimhpe na h-aplacaid" msgstr "Gearr leum gu uinneag roimhpe na h-aplacaid"
#: ../data/50-mutter-navigation.xml.in.h:21 #: data/50-mutter-navigation.xml:76
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Gearr leum gu inneal-smachd siostaim eile" msgstr "Gearr leum gu inneal-smachd siostaim eile"
#: ../data/50-mutter-navigation.xml.in.h:22 #: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Gearr leum gun inneal-smachd siostaim roimhe" msgstr "Gearr leum gun inneal-smachd siostaim roimhe"
#: ../data/50-mutter-navigation.xml.in.h:23 #: data/50-mutter-navigation.xml:85
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Gearr leum gu uinneag eile sa bhad" msgstr "Gearr leum gu uinneag eile sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:24 #: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Gearr leum gun uinneag roimhpe sa bhad" msgstr "Gearr leum gun uinneag roimhpe sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:25 #: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Gearr leum gu uinneag eile na h-aplacaid sa bhad" msgstr "Gearr leum gu uinneag eile na h-aplacaid sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:26 #: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Gearr leum gu uinneag roimphe na h-aplacaid sa bhad" msgstr "Gearr leum gu uinneag roimphe na h-aplacaid sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:27 #: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Gearr leum gu inneal-smachd siostaim eile sa bhad" msgstr "Gearr leum gu inneal-smachd siostaim eile sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:28 #: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Gearr leum gun inneal-smachd siostaim roimhe sa bhad" msgstr "Gearr leum gun inneal-smachd siostaim roimhe sa bhad"
#: ../data/50-mutter-navigation.xml.in.h:29 #: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Cuir gach uinneag àbhaisteach am falach" msgstr "Cuir gach uinneag àbhaisteach am falach"
#: ../data/50-mutter-navigation.xml.in.h:30 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Gearr leum gu rum-obrach 1" msgstr "Gearr leum gu rum-obrach 1"
#: ../data/50-mutter-navigation.xml.in.h:31 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Gearr leum gu rum-obrach 2" msgstr "Gearr leum gu rum-obrach 2"
#: ../data/50-mutter-navigation.xml.in.h:32 #: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Gearr leum gu rum-obrach 3" msgstr "Gearr leum gu rum-obrach 3"
#: ../data/50-mutter-navigation.xml.in.h:33 #: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Gearr leum gu rum-obrach 4" msgstr "Gearr leum gu rum-obrach 4"
#: ../data/50-mutter-navigation.xml.in.h:34 #: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Gearr leum gun rum-obrach mu dheireadh" msgstr "Gearr leum gun rum-obrach mu dheireadh"
#: ../data/50-mutter-navigation.xml.in.h:35 #: data/50-mutter-navigation.xml:129
msgid "Move to workspace left" msgid "Move to workspace left"
msgstr "Gluais dhan rum-obrach air an taobh chlì" msgstr "Gluais dhan rum-obrach air an taobh chlì"
#: ../data/50-mutter-navigation.xml.in.h:36 #: data/50-mutter-navigation.xml:132
msgid "Move to workspace right" msgid "Move to workspace right"
msgstr "Gluais dhan rum-obrach air an taobh deas" msgstr "Gluais dhan rum-obrach air an taobh deas"
#: ../data/50-mutter-navigation.xml.in.h:37 #: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Gluais dhan rum-obrach aig a' bharr" msgstr "Gluais dhan rum-obrach aig a' bharr"
#: ../data/50-mutter-navigation.xml.in.h:38 #: data/50-mutter-navigation.xml:138
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Gluais dhan rum-obrach aig a' bhonn" msgstr "Gluais dhan rum-obrach aig a' bhonn"
#: ../data/50-mutter-system.xml.in.h:1 #: data/50-mutter-system.xml:6
msgid "System" msgid "System"
msgstr "An siostam" msgstr "An siostam"
#: ../data/50-mutter-system.xml.in.h:2 #: data/50-mutter-system.xml:8
msgid "Show the run command prompt" msgid "Show the run command prompt"
msgstr "" msgstr ""
#: ../data/50-mutter-system.xml.in.h:3 #: data/50-mutter-system.xml:10
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Foir-shealladh air na gnìomhachdan" msgstr "Foir-shealladh air na gnìomhachdan"
#: ../data/50-mutter-windows.xml.in.h:1 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Uinneagan" msgstr "Uinneagan"
#: ../data/50-mutter-windows.xml.in.h:2 #: data/50-mutter-windows.xml:8
msgid "Activate the window menu" msgid "Activate the window menu"
msgstr "Gnìomhaich clàr-taice na h-uinneige" msgstr "Gnìomhaich clàr-taice na h-uinneige"
#: ../data/50-mutter-windows.xml.in.h:3 #: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode" msgid "Toggle fullscreen mode"
msgstr "Toglaich am modh làn-sgrìn" msgstr "Toglaich am modh làn-sgrìn"
#: ../data/50-mutter-windows.xml.in.h:4 #: data/50-mutter-windows.xml:12
msgid "Toggle maximization state" msgid "Toggle maximization state"
msgstr "Toglaich staid an làn-mheudachaidh" msgstr "Toglaich staid an làn-mheudachaidh"
#: ../data/50-mutter-windows.xml.in.h:5 #: data/50-mutter-windows.xml:14
msgid "Maximize window" msgid "Maximize window"
msgstr "Làn-mheudaich an uinneag" msgstr "Làn-mheudaich an uinneag"
#: ../data/50-mutter-windows.xml.in.h:6 #: data/50-mutter-windows.xml:16
msgid "Restore window" msgid "Restore window"
msgstr "Aisig an uinneag" msgstr "Aisig an uinneag"
#: ../data/50-mutter-windows.xml.in.h:7 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state" msgid "Toggle shaded state"
msgstr "Toglaich staid an sgàileachaidh" msgstr "Toglaich staid an sgàileachaidh"
#: ../data/50-mutter-windows.xml.in.h:8 #: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Dùin an uinneag" msgstr "Dùin an uinneag"
#: ../data/50-mutter-windows.xml.in.h:9 #: data/50-mutter-windows.xml:22
msgid "Hide window" msgid "Hide window"
msgstr "Cuir an uinneag am falach" msgstr "Cuir an uinneag am falach"
#: ../data/50-mutter-windows.xml.in.h:10 #: data/50-mutter-windows.xml:24
msgid "Move window" msgid "Move window"
msgstr "Gluais an uinneag" msgstr "Gluais an uinneag"
#: ../data/50-mutter-windows.xml.in.h:11 #: data/50-mutter-windows.xml:26
msgid "Resize window" msgid "Resize window"
msgstr "Atharraich meud na h-uinneige" msgstr "Atharraich meud na h-uinneige"
#: ../data/50-mutter-windows.xml.in.h:12 #: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Toglaich an uinneag air a h-uile rum-obrach no aonan" msgstr "Toglaich an uinneag air a h-uile rum-obrach no aonan"
#: ../data/50-mutter-windows.xml.in.h:13 #: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Tog an uinneag nuair a thèid a còmhdachadh air neo ìslich i" msgstr "Tog an uinneag nuair a thèid a còmhdachadh air neo ìslich i"
#: ../data/50-mutter-windows.xml.in.h:14 #: data/50-mutter-windows.xml:33
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Tog an uinneag os cionn càich" msgstr "Tog an uinneag os cionn càich"
#: ../data/50-mutter-windows.xml.in.h:15 #: data/50-mutter-windows.xml:35
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Ìslich an uinneag fo na h-uinneagan eile" msgstr "Ìslich an uinneag fo na h-uinneagan eile"
#: ../data/50-mutter-windows.xml.in.h:16 #: data/50-mutter-windows.xml:37
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Làn-mheudaich an uinneag gu h-ingearach" msgstr "Làn-mheudaich an uinneag gu h-ingearach"
#: ../data/50-mutter-windows.xml.in.h:17 #: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Làn-mheudaich an uinneag air a' chòmhnard" msgstr "Làn-mheudaich an uinneag air a' chòmhnard"
#: ../data/50-mutter-windows.xml.in.h:18 #: data/50-mutter-windows.xml:43
msgid "View split on left" msgid "View split on left"
msgstr "" msgstr "Sgoilt an t-sealladh air an taobh chì"
#: ../data/50-mutter-windows.xml.in.h:19 #: data/50-mutter-windows.xml:47
msgid "View split on right" msgid "View split on right"
msgstr "" msgstr "Sgoilt an t-sealladh air an taobh deas"
#: ../data/mutter.desktop.in.h:1 #: data/mutter.desktop.in:4
msgid "Mutter" msgid "Mutter"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:1 #: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations" msgid "Modifier to use for extended window management operations"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:2 #: data/org.gnome.mutter.gschema.xml.in:8
msgid "" msgid ""
"This key will initiate the \"overlay\", which is a combination window " "This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the " "overview and application launching system. The default is intended to be the "
@@ -276,254 +276,266 @@ msgid ""
"default or set to the empty string." "default or set to the empty string."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:3 #: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:4 #: data/org.gnome.mutter.gschema.xml.in:21
msgid "" msgid ""
"When true, instead of having independent titlebars, modal dialogs appear " "When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with " "attached to the titlebar of the parent window and are moved together with "
"the parent window." "the parent window."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:5 #: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:6 #: data/org.gnome.mutter.gschema.xml.in:31
msgid "" msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them " "If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available " "vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely." "area. Dropping windows on the top screen edge maximizes them completely."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:7 #: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:8 #: data/org.gnome.mutter.gschema.xml.in:41
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether there's a " "Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:9 #: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary" msgid "Workspaces only on primary"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:10 #: data/org.gnome.mutter.gschema.xml.in:51
msgid "" msgid ""
"Determines whether workspace switching should happen for windows on all " "Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor." "monitors or only for windows on the primary monitor."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:11 #: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup" msgid "No tab popup"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:12 #: data/org.gnome.mutter.gschema.xml.in:60
msgid "" msgid ""
"Determines whether the use of popup and highlight frame should be disabled " "Determines whether the use of popup and highlight frame should be disabled "
"for window cycling." "for window cycling."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:13 #: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving" msgid "Delay focus changes until the pointer stops moving"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:14 #: data/org.gnome.mutter.gschema.xml.in:69
msgid "" msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"the focus will not be changed immediately when entering a window, but only " "the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving." "after the pointer stops moving."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:15 #: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width" msgid "Draggable border width"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:16 #: data/org.gnome.mutter.gschema.xml.in:80
msgid "" msgid ""
"The amount of total draggable borders. If the theme's visible borders are " "The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:17 #: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:18 #: data/org.gnome.mutter.gschema.xml.in:90
msgid "" msgid ""
"If enabled, new windows that are initially the size of the monitor " "If enabled, new windows that are initially the size of the monitor "
"automatically get maximized." "automatically get maximized."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:19 #: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center" msgid "Place new windows in the center"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:20 #: data/org.gnome.mutter.gschema.xml.in:99
msgid "" msgid ""
"When true, the new windows will always be put in the center of the active " "When true, the new windows will always be put in the center of the active "
"screen of the monitor." "screen of the monitor."
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:21 #: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:22 #: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 #: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 #: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2" msgid "Switch to VT 2"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 #: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3" msgid "Switch to VT 3"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 #: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4" msgid "Switch to VT 4"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 #: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5" msgid "Switch to VT 5"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 #: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6" msgid "Switch to VT 6"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 #: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7" msgid "Switch to VT 7"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 #: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8" msgid "Switch to VT 8"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 #: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9" msgid "Switch to VT 9"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 #: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10" msgid "Switch to VT 10"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 #: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11" msgid "Switch to VT 11"
msgstr "" msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 #: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "" msgstr ""
#: ../src/backends/meta-monitor-manager.c:515 #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1913
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Gearr leum gu monatair eile"
#: src/backends/meta-input-settings.c:1915
msgid "Show on-screen help"
msgstr "Seall a' chobhair air an sgrìn"
#: src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "" msgstr "Uidheam-taisbeanaidh 'na broinn"
#: ../src/backends/meta-monitor-manager.c:538 #: src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "" msgstr "Chan eil fhios"
#: ../src/backends/meta-monitor-manager.c:540 #: src/backends/meta-monitor-manager.c:540
msgid "Unknown Display" msgid "Unknown Display"
msgstr "" msgstr "Uidheam-taisbeanaidh nach aithne dhuinn"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: ../src/backends/meta-monitor-manager.c:548 #: src/backends/meta-monitor-manager.c:548
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456 #: src/compositor/compositor.c:471
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display \"%s" "Another compositing manager is already running on screen %i on display \"%s"
"\"." "\"."
msgstr "" msgstr ""
#: ../src/core/bell.c:194 #: src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "" msgstr ""
#: ../src/core/delete.c:127 #: src/core/delete.c:127
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "" msgstr ""
#: ../src/core/delete.c:129 #: src/core/delete.c:129
msgid "Application is not responding." msgid "Application is not responding."
msgstr "" msgstr ""
#: ../src/core/delete.c:134 #: src/core/delete.c:134
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
#: ../src/core/delete.c:141 #: src/core/delete.c:141
msgid "_Wait" msgid "_Wait"
msgstr "" msgstr "_Fuirich"
#: ../src/core/delete.c:141 #: src/core/delete.c:141
msgid "_Force Quit" msgid "_Force Quit"
msgstr "" msgstr "Sparr _fàgail air"
#: ../src/core/display.c:555 #: src/core/display.c:590
#, c-format #, c-format
msgid "Failed to open X Window System display '%s'\n" msgid "Failed to open X Window System display '%s'\n"
msgstr "" msgstr ""
#: ../src/core/main.c:181 #: src/core/main.c:182
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "" msgstr ""
#: ../src/core/main.c:187 #: src/core/main.c:188
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "" msgstr ""
#: ../src/core/main.c:193 #: src/core/main.c:194
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "" msgstr ""
#: ../src/core/main.c:198 #: src/core/main.c:199
msgid "X Display to use" msgid "X Display to use"
msgstr "" msgstr ""
#: ../src/core/main.c:204 #: src/core/main.c:205
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "" msgstr ""
#: ../src/core/main.c:210 #: src/core/main.c:211
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "" msgstr ""
#: ../src/core/main.c:217 #: src/core/main.c:218
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "" msgstr ""
#: ../src/core/main.c:223 #: src/core/main.c:224
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "" msgstr ""
#: ../src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "" msgstr ""
#: ../src/core/mutter.c:39 #: src/core/mutter.c:39
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
@@ -533,42 +545,47 @@ msgid ""
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: ../src/core/mutter.c:53 #: src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "" msgstr ""
#: ../src/core/mutter.c:59 #: src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "" msgstr ""
#: ../src/core/prefs.c:1997 #: src/core/prefs.c:1997
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "" msgstr "Rum-obrach %d"
#: ../src/core/screen.c:521 #: src/core/screen.c:521
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display \"%s\" already has a window manager; try using the --replace option "
"to replace the current window manager." "to replace the current window manager."
msgstr "" msgstr ""
#: ../src/core/screen.c:603 #: src/core/screen.c:606
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "" msgstr ""
#: ../src/core/util.c:121 #: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "" msgstr ""
#: ../src/x11/session.c:1815 #: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Suidse nam modh: Modh %d"
#: src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in." "be restarted manually next time you log in."
msgstr "" msgstr ""
#: ../src/x11/window-props.c:549 #: src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "" msgstr "%s (air %s)"

3494
po/is.po

File diff suppressed because it is too large Load Diff

View File

@@ -181,7 +181,7 @@ update_style_contexts (MetaFrames *frames)
frames->normal_style = meta_theme_create_style_info (screen, NULL); frames->normal_style = meta_theme_create_style_info (screen, NULL);
variants = g_hash_table_get_keys (frames->style_variants); variants = g_hash_table_get_keys (frames->style_variants);
for (variant = variants; variant; variant = variants->next) for (variant = variants; variant; variant = variant->next)
{ {
style_info = meta_theme_create_style_info (screen, (char *)variant->data); style_info = meta_theme_create_style_info (screen, (char *)variant->data);
g_hash_table_insert (frames->style_variants, g_hash_table_insert (frames->style_variants,

View File

@@ -67,6 +67,7 @@ typedef struct {
Window window; Window window;
Window owner; Window owner;
Time timestamp; Time timestamp;
Time client_message_timestamp;
MetaWaylandDataSource *source; /* owned by MetaWaylandDataDevice */ MetaWaylandDataSource *source; /* owned by MetaWaylandDataDevice */
WaylandSelectionData *wayland_selection; WaylandSelectionData *wayland_selection;
X11SelectionData *x11_selection; X11SelectionData *x11_selection;
@@ -388,6 +389,20 @@ meta_xwayland_shutdown_dnd (MetaXWaylandManager *manager)
dnd->dnd_window = None; dnd->dnd_window = None;
} }
static void
meta_xwayland_end_dnd_grab (MetaWaylandDataDevice *data_device)
{
Display *xdisplay = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
MetaXWaylandManager *manager = &compositor->xwayland_manager;
MetaDndBridge *dnd = &manager->selection_data->dnd;
meta_wayland_data_device_end_drag (data_device);
XMoveResizeWindow (xdisplay, dnd->dnd_window, -1, -1, 1, 1);
XUnmapWindow (xdisplay, dnd->dnd_window);
}
/* X11/Wayland data bridges */ /* X11/Wayland data bridges */
static MetaSelectionBridge * static MetaSelectionBridge *
@@ -820,7 +835,7 @@ meta_x11_source_send (MetaWaylandDataSource *source,
selection->selection_atom, type_atom, selection->selection_atom, type_atom,
gdk_x11_get_xatom_by_name ("_META_SELECTION"), gdk_x11_get_xatom_by_name ("_META_SELECTION"),
selection->window, selection->window,
CurrentTime); selection->client_message_timestamp);
XFlush (xdisplay); XFlush (xdisplay);
} }
@@ -1345,15 +1360,15 @@ repick_drop_surface (MetaWaylandCompositor *compositor,
MetaWaylandSurface *focus = NULL; MetaWaylandSurface *focus = NULL;
focus = pick_drop_surface (compositor, event); focus = pick_drop_surface (compositor, event);
dnd->focus_surface = focus; if (dnd->focus_surface == focus)
if (meta_wayland_drag_grab_get_focus (drag_grab) == focus)
return; return;
dnd->focus_surface = focus;
if (focus && if (focus &&
focus->window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND) focus->window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
{ {
XMapWindow (xdisplay, dnd->dnd_window); XMapRaised (xdisplay, dnd->dnd_window);
XMoveResizeWindow (xdisplay, dnd->dnd_window, XMoveResizeWindow (xdisplay, dnd->dnd_window,
focus->window->rect.x, focus->window->rect.x,
focus->window->rect.y, focus->window->rect.y,
@@ -1400,8 +1415,16 @@ drag_xgrab_button (MetaWaylandPointerGrab *grab,
{ {
MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default (); MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
MetaWaylandSeat *seat = compositor->seat; MetaWaylandSeat *seat = compositor->seat;
MetaWaylandDataSource *data_source;
meta_wayland_pointer_send_button (seat->pointer, event); meta_wayland_pointer_send_button (seat->pointer, event);
data_source = compositor->seat->data_device.dnd_data_source;
if (seat->pointer->button_count == 0 &&
(!meta_wayland_drag_grab_get_focus ((MetaWaylandDragGrab *) grab) ||
meta_wayland_data_source_get_current_action (data_source) ==
WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE))
meta_xwayland_end_dnd_grab (&seat->data_device);
} }
static const MetaWaylandPointerGrabInterface drag_xgrab_interface = { static const MetaWaylandPointerGrabInterface drag_xgrab_interface = {
@@ -1511,6 +1534,8 @@ meta_xwayland_selection_handle_client_message (MetaWaylandCompositor *compositor
ClutterPoint pos; ClutterPoint pos;
uint32_t action = 0; uint32_t action = 0;
dnd->selection.client_message_timestamp = event->data.l[3];
motion = clutter_event_new (CLUTTER_MOTION); motion = clutter_event_new (CLUTTER_MOTION);
clutter_input_device_get_coords (seat->pointer->device, NULL, &pos); clutter_input_device_get_coords (seat->pointer->device, NULL, &pos);
clutter_event_set_coords (motion, pos.x, pos.y); clutter_event_set_coords (motion, pos.x, pos.y);
@@ -1536,7 +1561,9 @@ meta_xwayland_selection_handle_client_message (MetaWaylandCompositor *compositor
} }
else if (event->message_type == xdnd_atoms[ATOM_DND_DROP]) else if (event->message_type == xdnd_atoms[ATOM_DND_DROP])
{ {
dnd->selection.client_message_timestamp = event->data.l[2];
meta_wayland_surface_drag_dest_drop (drag_focus); meta_wayland_surface_drag_dest_drop (drag_focus);
meta_xwayland_end_dnd_grab (&seat->data_device);
return TRUE; return TRUE;
} }
} }
@@ -1596,7 +1623,6 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
else if (selection->selection_atom == xdnd_atoms[ATOM_DND_SELECTION]) else if (selection->selection_atom == xdnd_atoms[ATOM_DND_SELECTION])
{ {
MetaWaylandDataDevice *data_device = &compositor->seat->data_device; MetaWaylandDataDevice *data_device = &compositor->seat->data_device;
MetaXWaylandSelection *selection_data = compositor->xwayland_manager.selection_data;
MetaWaylandSurface *focus; MetaWaylandSurface *focus;
selection->owner = event->owner; selection->owner = event->owner;
@@ -1605,6 +1631,7 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
if (event->owner != None && event->owner != selection->window && if (event->owner != None && event->owner != selection->window &&
focus && meta_xwayland_is_xwayland_surface (focus)) focus && meta_xwayland_is_xwayland_surface (focus))
{ {
selection->client_message_timestamp = CurrentTime;
selection->source = meta_wayland_data_source_xwayland_new (selection); selection->source = meta_wayland_data_source_xwayland_new (selection);
meta_wayland_data_device_set_dnd_source (&compositor->seat->data_device, meta_wayland_data_device_set_dnd_source (&compositor->seat->data_device,
selection->source); selection->source);
@@ -1617,8 +1644,7 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
} }
else if (event->owner == None) else if (event->owner == None)
{ {
meta_wayland_data_device_end_drag (data_device); meta_xwayland_end_dnd_grab (data_device);
XUnmapWindow (xdisplay, selection_data->dnd.dnd_window);
} }
} }

View File

@@ -224,6 +224,7 @@ try_display (int display,
close (fd); close (fd);
fd = -1; fd = -1;
pid[10] = '\0';
other = strtol (pid, &end, 0); other = strtol (pid, &end, 0);
if (end != pid + 10) if (end != pid + 10)
{ {
@@ -277,7 +278,7 @@ create_lock_file (int display, int *display_out)
char *filename; char *filename;
int fd; int fd;
char pid[11]; char pid[12];
int size; int size;
int number_of_tries = 0; int number_of_tries = 0;
@@ -293,8 +294,10 @@ create_lock_file (int display, int *display_out)
} }
/* Subtle detail: we use the pid of the wayland compositor, not the xserver /* Subtle detail: we use the pid of the wayland compositor, not the xserver
* in the lock file. */ * in the lock file. Another subtlety: snprintf returns the number of bytes
size = snprintf (pid, 11, "%10d\n", getpid ()); * it _would've_ written without either the NUL or the size clamping, hence
* the disparity in size. */
size = snprintf (pid, 12, "%10d\n", getpid ());
if (size != 11 || write (fd, pid, 11) != 11) if (size != 11 || write (fd, pid, 11) != 11)
{ {
unlink (filename); unlink (filename);