Compare commits
8 Commits
wip/ptomat
...
3.22.1
Author | SHA1 | Date | |
---|---|---|---|
6ebabd50c6 | |||
0c22a21a24 | |||
70a0c4211c | |||
a21af541c4 | |||
e07ba91486 | |||
a22e9ce9cd | |||
d4ce51b1b7 | |||
830005069c |
15
NEWS
15
NEWS
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -29,6 +29,7 @@ gl
|
||||
gu
|
||||
he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
ia
|
||||
id
|
||||
|
30
po/it.po
30
po/it.po
@ -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"
|
||||
|
800
po/zh_TW.po
800
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
*/
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user