Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
a91c1caf42 | |||
90f14d0762 | |||
77f2e3abde | |||
a02019cf9e | |||
a341b74aeb | |||
9e0a5fa3a9 | |||
49856d4961 | |||
4db34fca36 |
9
NEWS
9
NEWS
@ -1,3 +1,12 @@
|
|||||||
|
3.16.3
|
||||||
|
======
|
||||||
|
* Handle touch events in OSK on wayland [Rui; #750287]
|
||||||
|
* Misc. bug fixes [Florian, Rui, Ray; #749383, #749529, #750714, #751517,
|
||||||
|
#751541]
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Rui Matos, Florian Müllner, Ray Strode
|
||||||
|
|
||||||
3.16.2
|
3.16.2
|
||||||
======
|
======
|
||||||
* Make event highlight in calendar more prominent [Jakub; #747715]
|
* Make event highlight in calendar more prominent [Jakub; #747715]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[3.16.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[3.16.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
|
@ -584,7 +584,14 @@ const LoginDialog = new Lang.Class({
|
|||||||
// try a different layout, or if we have what extra space we
|
// try a different layout, or if we have what extra space we
|
||||||
// can hand out
|
// can hand out
|
||||||
if (bannerAllocation) {
|
if (bannerAllocation) {
|
||||||
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
|
let bannerSpace;
|
||||||
|
|
||||||
|
if (authPromptAllocation)
|
||||||
|
bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1;
|
||||||
|
else
|
||||||
|
bannerSpace = 0;
|
||||||
|
|
||||||
|
let leftOverYSpace = bannerSpace - bannerHeight;
|
||||||
|
|
||||||
if (leftOverYSpace > 0) {
|
if (leftOverYSpace > 0) {
|
||||||
// First figure out how much left over space is up top
|
// First figure out how much left over space is up top
|
||||||
|
@ -753,7 +753,8 @@ const AllView = new Lang.Class({
|
|||||||
let fadeOffset = Math.min(this._grid.topPadding,
|
let fadeOffset = Math.min(this._grid.topPadding,
|
||||||
this._grid.bottomPadding);
|
this._grid.bottomPadding);
|
||||||
this._scrollView.update_fade_effect(fadeOffset, 0);
|
this._scrollView.update_fade_effect(fadeOffset, 0);
|
||||||
this._scrollView.get_effect('fade').fade_edges = true;
|
if (fadeOffset > 0)
|
||||||
|
this._scrollView.get_effect('fade').fade_edges = true;
|
||||||
|
|
||||||
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
||||||
this._adjustment.value = 0;
|
this._adjustment.value = 0;
|
||||||
|
@ -114,6 +114,35 @@ const Key = new Lang.Class({
|
|||||||
key.release();
|
key.release();
|
||||||
return Clutter.EVENT_PROPAGATE;
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}));
|
}));
|
||||||
|
button.connect('touch-event', Lang.bind(this,
|
||||||
|
function (actor, event) {
|
||||||
|
let device = event.get_device();
|
||||||
|
let sequence = event.get_event_sequence();
|
||||||
|
|
||||||
|
// We only handle touch events here on wayland. On X11
|
||||||
|
// we do get emulated pointer events, which already works
|
||||||
|
// for single-touch cases. Besides, the X11 passive touch grab
|
||||||
|
// set up by Mutter will make us see first the touch events
|
||||||
|
// and later the pointer events, so it will look like two
|
||||||
|
// unrelated series of events, we want to avoid double handling
|
||||||
|
// in these cases.
|
||||||
|
if (!Meta.is_wayland_compositor())
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
|
||||||
|
if (!this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||||
|
device.sequence_grab(sequence, actor);
|
||||||
|
this._touchPressed = true;
|
||||||
|
key.press();
|
||||||
|
} else if (this._touchPressed &&
|
||||||
|
event.type() == Clutter.EventType.TOUCH_END &&
|
||||||
|
device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||||
|
device.sequence_ungrab(sequence);
|
||||||
|
this._touchPressed = false;
|
||||||
|
key.release();
|
||||||
|
}
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}));
|
||||||
|
|
||||||
return button;
|
return button;
|
||||||
},
|
},
|
||||||
|
@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
// need to connect to 'destroy' too.
|
// need to connect to 'destroy' too.
|
||||||
|
|
||||||
this._trackedActors.push(actorData);
|
this._trackedActors.push(actorData);
|
||||||
|
this._updateActorVisibility(actorData);
|
||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
|
|||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateActorVisibility: function(actorData) {
|
||||||
|
if (!actorData.trackFullscreen)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let monitor = this.findMonitorForActor(actorData.actor);
|
||||||
|
actorData.actor.visible = !(global.window_group.visible &&
|
||||||
|
monitor &&
|
||||||
|
monitor.inFullscreen);
|
||||||
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||||
|
|
||||||
global.window_group.visible = windowsVisible;
|
global.window_group.visible = windowsVisible;
|
||||||
global.top_window_group.visible = windowsVisible;
|
global.top_window_group.visible = windowsVisible;
|
||||||
|
|
||||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||||
let actorData = this._trackedActors[i], visible;
|
|
||||||
if (!actorData.trackFullscreen)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!windowsVisible)
|
|
||||||
visible = true;
|
|
||||||
else if (this.findMonitorForActor(actorData.actor).inFullscreen)
|
|
||||||
visible = false;
|
|
||||||
else
|
|
||||||
visible = true;
|
|
||||||
actorData.actor.visible = visible;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getWorkAreaForMonitor: function(monitorIndex) {
|
getWorkAreaForMonitor: function(monitorIndex) {
|
||||||
|
@ -167,6 +167,10 @@ const WindowMenuManager = new Lang.Class({
|
|||||||
menu.connect('activate', function() {
|
menu.connect('activate', function() {
|
||||||
window.check_alive(global.get_current_time());
|
window.check_alive(global.get_current_time());
|
||||||
});
|
});
|
||||||
|
let destroyId = window.connect('unmanaged',
|
||||||
|
function() {
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
|
||||||
this._sourceActor.set_size(rect.width, rect.height);
|
this._sourceActor.set_size(rect.width, rect.height);
|
||||||
this._sourceActor.set_position(rect.x, rect.y);
|
this._sourceActor.set_position(rect.x, rect.y);
|
||||||
@ -180,6 +184,7 @@ const WindowMenuManager = new Lang.Class({
|
|||||||
|
|
||||||
this._sourceActor.hide();
|
this._sourceActor.hide();
|
||||||
menu.destroy();
|
menu.destroy();
|
||||||
|
window.disconnect(destroyId);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -181,7 +181,6 @@ shell_prefs_init (void)
|
|||||||
|
|
||||||
g_object_get (G_OBJECT (settings), "schema-id", &schema_id, NULL);
|
g_object_get (G_OBJECT (settings), "schema-id", &schema_id, NULL);
|
||||||
|
|
||||||
keys = g_settings_list_keys (settings);
|
|
||||||
for (keys = k = g_settings_list_keys (settings); *k; k++)
|
for (keys = k = g_settings_list_keys (settings); *k; k++)
|
||||||
meta_prefs_override_preference_schema (*k, schema_id);
|
meta_prefs_override_preference_schema (*k, schema_id);
|
||||||
|
|
||||||
|
@ -83,12 +83,18 @@ scan_startup_wm_class_to_id (ShellAppSystem *self)
|
|||||||
for (l = apps; l != NULL; l = l->next)
|
for (l = apps; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
GAppInfo *info = l->data;
|
GAppInfo *info = l->data;
|
||||||
const char *startup_wm_class, *id;
|
const char *startup_wm_class, *id, *old_id;
|
||||||
|
|
||||||
id = g_app_info_get_id (info);
|
id = g_app_info_get_id (info);
|
||||||
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
|
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
|
||||||
|
|
||||||
if (startup_wm_class != NULL)
|
if (startup_wm_class == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* In case multiple .desktop files set the same StartupWMClass, prefer
|
||||||
|
* the one where ID and StartupWMClass match */
|
||||||
|
old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, startup_wm_class);
|
||||||
|
if (old_id == NULL || strcmp (id, startup_wm_class) == 0)
|
||||||
g_hash_table_insert (priv->startup_wm_class_to_id,
|
g_hash_table_insert (priv->startup_wm_class_to_id,
|
||||||
g_strdup (startup_wm_class), g_strdup (id));
|
g_strdup (startup_wm_class), g_strdup (id));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user