Compare commits

...

8 Commits

Author SHA1 Message Date
6ebabd50c6 Bump version to 3.22.1
Update NEWS.
2016-10-11 00:57:38 +02:00
0c22a21a24 window-tracker: Consider Flatpak ID for window matching
Our window matching currently fails frequently with Flatpak
applications, as one of the primary hints used to link windows
with .desktop files - the WM_CLASS - no longer matches when
flatpak renames the exported .desktop file. Worse, as Flatpak
applications are run in their own PID namespace, different
apps frequently share a common _NET_WM_PID, resulting in
unrelated apps being grouped together by one of the fallback
paths. To match Flatpak applications reliably, take the newly
exported Flatpak ID into account.

https://bugzilla.gnome.org/show_bug.cgi?id=772615
2016-10-10 23:40:39 +02:00
70a0c4211c Update Croatian translation 2016-10-10 18:16:38 +00:00
a21af541c4 Add Croatian translation 2016-10-09 19:23:52 +00:00
e07ba91486 Update Chinese (Taiwan) translation 2016-10-09 14:14:46 +00:00
a22e9ce9cd st: Ignore filtered selection events not meant to our clipboard window
Other windows like the mutter Xwayland selection bridges might deal with
the clipboard, which would result in events visible on st-clipboard event
filters.

In order to avoid unintended results, ignore events that are not meant for
the clipboard window.

https://bugzilla.gnome.org/show_bug.cgi?id=760745
2016-10-09 10:57:47 +02:00
d4ce51b1b7 altTab: Consider attached modals for window order
Similar to bug 667552 for the app switcher, attached modal dialogs
can result in an unexpected window order in the window switcher:
Selecting a window with an attached dialog will focus the dialog
instead, but as the dialog itself is ignored in the window list,
its last-used timestamp is not taken into account for the position
in the MRU list. Fix this by fetching the list of all NORMAL windows
and filter out skip-taskbar windows ourselves, while making sure that
windows appear in the position of their attached modal dialog where
appropriate.

https://bugzilla.gnome.org/show_bug.cgi?id=747153
2016-10-07 14:51:15 +02:00
830005069c Updated Italian translation 2016-10-06 11:48:53 +00:00
9 changed files with 2289 additions and 426 deletions

15
NEWS
View File

@ -1,3 +1,18 @@
3.22.1
======
* Fix hidden network indicator on startup [Florian; #772249]
* Fix order of windows with modal dialogs in window switcher [Florian; #747153]
* Fix feedback loop between StClipboard and X11 bridge [Carlos; #760745]
* Reliably match windows from Flatpak apps [Florian; #772615]
* Misc. bug fixes [Philip; #742249]
Contributors:
Philip Chimento, Carlos Garnacho, Florian Müllner
Translations:
Inaki Larranaga Murgoitio [eu], Khaled Hosny [ar], BM [uz@cyrillic],
Milo Casagrande [it], Cheng-Chia Tseng [zh_TW], gogo [hr]
3.22.0
======
* Misc. bug fixes [Florian, Rui; #771391, #771536] #771656]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.22.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.22.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AX_IS_RELEASE([git-directory])
AC_CONFIG_HEADERS([config.h])
@ -78,7 +78,7 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.21.5
GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1
GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.22.0
MUTTER_MIN_VERSION=3.22.1
GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.45.3
LIBECAL_MIN_VERSION=3.5.3

View File

@ -46,6 +46,19 @@ function _createWindowClone(window, size) {
y_expand: true });
};
function getWindows(workspace) {
// We ignore skip-taskbar windows in switchers, but if they are attached
// to their parent, their position in the MRU list may be more appropriate
// than the parent; so start with the complete list ...
let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL,
workspace);
// ... map windows to their parent where appropriate ...
return windows.map(w => {
return w.is_attached_dialog() ? w.get_transient_for() : w;
// ... and filter out skip-taskbar windows and duplicates
}).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) == i);
}
const AppSwitcherPopup = new Lang.Class({
Name: 'AppSwitcherPopup',
Extends: SwitcherPopup.SwitcherPopup,
@ -517,7 +530,7 @@ const WindowSwitcherPopup = new Lang.Class({
_getWindowList: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
return getWindows(workspace);
},
_keyPressHandler: function(keysym, action) {
@ -555,7 +568,7 @@ const WindowCyclerPopup = new Lang.Class({
_getWindows: function() {
let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null;
return global.display.get_tab_list(Meta.TabList.NORMAL, workspace);
return getWindows(workspace);
},
_keyPressHandler: function(keysym, action) {

View File

@ -29,6 +29,7 @@ gl
gu
he
hi
hr
hu
ia
id

1771
po/hr.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-07 09:41+0000\n"
"PO-Revision-Date: 2016-10-03 11:38+0200\n"
"POT-Creation-Date: 2016-10-03 09:39+0000\n"
"PO-Revision-Date: 2016-10-06 13:48+0200\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"Language: it\n"
@ -374,7 +374,7 @@ msgstr "Non elencato?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:854
#: js/gdm/loginDialog.js:859
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(p.e. utente o %s)"
@ -382,12 +382,12 @@ msgstr "(p.e. utente o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:859 js/ui/components/networkAgent.js:271
#: js/gdm/loginDialog.js:864 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Nome utente: "
#: js/gdm/loginDialog.js:1196
#: js/gdm/loginDialog.js:1201
msgid "Login Window"
msgstr "Finestra di accesso"
@ -778,7 +778,7 @@ msgstr "Password rete mobile"
msgid "A password is required to connect to “%s”."
msgstr "È richiesta una password per connettersi a «%s»."
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1658
#: js/ui/components/networkAgent.js:647 js/ui/status/network.js:1660
msgid "Network Manager"
msgstr "Gestore reti"
@ -804,7 +804,7 @@ msgstr "Errore nell'autenticazione. Provare di nuovo."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:760
#: js/ui/components/telepathyClient.js:765
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s ha cambiato nome in %s"
@ -1085,9 +1085,10 @@ msgstr "Artista sconosciuto"
msgid "Unknown title"
msgstr "Titolo sconosciuto"
# (ndt) non molto chiaro il suo utilizzo, arriva dal un file che implementa la specifica MPRIS.
#: js/ui/mpris.js:217
msgid "Media"
msgstr "Supporto"
msgstr "Controlli"
#: js/ui/overview.js:84
msgid "Undo"
@ -1524,11 +1525,11 @@ msgstr "VPN"
msgid "VPN Off"
msgstr "VPN spento"
#: js/ui/status/network.js:1697
#: js/ui/status/network.js:1699
msgid "Connection failed"
msgstr "Connessione non riuscita"
#: js/ui/status/network.js:1698
#: js/ui/status/network.js:1700
msgid "Activation of network connection failed"
msgstr "Attivazione della connessione di rete non riuscita"
@ -1786,12 +1787,3 @@ msgstr "La password non può essere vuota"
#: src/shell-polkit-authentication-agent.c:353
msgid "Authentication dialog was dismissed by the user"
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
#~ msgid "Show the week date in the calendar"
#~ msgstr "Mostra il numero della settimana nel calendario"
#~ msgid "If true, display the ISO week date in the calendar."
#~ msgstr "Se VERO, visualizza il giorno della settimana ISO nel calendario."
#~ msgid "Use as Internet connection"
#~ msgstr "Usa come connessione a Internet"

File diff suppressed because it is too large Load Diff

View File

@ -202,9 +202,39 @@ get_app_from_window_wmclass (MetaWindow *window)
return NULL;
}
/*
* get_app_from_id:
* @window: a #MetaWindow
*
* Looks only at the given window, and attempts to determine
* an application based on %id. If one can't be determined,
* return %NULL.
*
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/
static ShellApp *
get_app_from_id (MetaWindow *window,
const char *id)
{
ShellApp *app;
ShellAppSystem *appsys;
char *desktop_file;
g_return_val_if_fail (id != NULL, NULL);
appsys = shell_app_system_get_default ();
desktop_file = g_strconcat (id, ".desktop", NULL);
app = shell_app_system_lookup_app (appsys, desktop_file);
if (app)
g_object_ref (app);
g_free (desktop_file);
return app;
}
/*
* get_app_from_gapplication_id:
* @monitor: a #ShellWindowTracker
* @window: a #MetaWindow
*
* Looks only at the given window, and attempts to determine
@ -216,24 +246,35 @@ get_app_from_window_wmclass (MetaWindow *window)
static ShellApp *
get_app_from_gapplication_id (MetaWindow *window)
{
ShellApp *app;
ShellAppSystem *appsys;
const char *id;
char *desktop_file;
appsys = shell_app_system_get_default ();
id = meta_window_get_gtk_application_id (window);
if (!id)
return NULL;
desktop_file = g_strconcat (id, ".desktop", NULL);
app = shell_app_system_lookup_app (appsys, desktop_file);
if (app)
g_object_ref (app);
return get_app_from_id (window, id);
}
g_free (desktop_file);
return app;
/*
* get_app_from_flatpak_id:
* @window: a #MetaWindow
*
* Looks only at the given window, and attempts to determine
* an application based on its Flatpak ID. If one can't be determined,
* return %NULL.
*
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/
static ShellApp *
get_app_from_flatpak_id (MetaWindow *window)
{
const char *id;
id = meta_window_get_flatpak_id (window);
if (!id)
return NULL;
return get_app_from_id (window, id);
}
/*
@ -354,6 +395,13 @@ get_app_for_window (ShellWindowTracker *tracker,
if (meta_window_is_remote (window))
return _shell_app_new_for_window (window);
/* Check if the window was opened from within a Flatpak sandbox; if this
* is the case, a corresponding .desktop file is guaranteed to match;
*/
result = get_app_from_flatpak_id (window);
if (result != NULL)
return result;
/* Check if the window has a GApplication ID attached; this is
* canonical if it does
*/

View File

@ -117,6 +117,7 @@ st_clipboard_provider (GdkXEvent *xevent_p,
GdkDisplay *display = gdk_display_get_default ();
if (xev->type != SelectionRequest ||
xev->xany.window != clipboard->priv->clipboard_window ||
!clipboard->priv->clipboard_text)
return GDK_FILTER_CONTINUE;
@ -233,13 +234,15 @@ st_clipboard_x11_event_filter (GdkXEvent *xevent_p,
{
XEvent *xev = (XEvent *) xevent_p;
EventFilterData *filter_data = user_data;
StClipboardPrivate *priv = filter_data->clipboard->priv;
Atom actual_type;
int actual_format, result;
unsigned long nitems, bytes_after;
unsigned char *data = NULL;
GdkDisplay *display = gdk_display_get_default ();
if(xev->type != SelectionNotify)
if(xev->type != SelectionNotify ||
xev->xany.window != priv->clipboard_window)
return GDK_FILTER_CONTINUE;
if (xev->xselection.property == None)