|
@@ -0,0 +1,125 @@
|
|
|
+diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
|
|
|
+index 775b687..f4ea781 100644
|
|
|
+--- a/data/theme/gnome-shell.css
|
|
|
++++ b/data/theme/gnome-shell.css
|
|
|
+@@ -2312,6 +2312,7 @@ StScrollBar StButton#vhandle:active {
|
|
|
+ font-weight: bold;
|
|
|
+ color: #666666;
|
|
|
+ padding-top: 1em;
|
|
|
++ padding-left: 2px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .login-dialog-not-listed-button:focus .login-dialog-not-listed-label,
|
|
|
+diff --git a/js/gdm/util.js b/js/gdm/util.js
|
|
|
+index 6075e66..cae3e1b 100644
|
|
|
+--- a/js/gdm/util.js
|
|
|
++++ b/js/gdm/util.js
|
|
|
+@@ -164,6 +164,7 @@ const ShellUserVerifier = new Lang.Class({
|
|
|
+
|
|
|
+ answerQuery: function(serviceName, answer) {
|
|
|
+ if (!this._userVerifier.hasPendingMessages) {
|
|
|
++ this._clearMessageQueue();
|
|
|
+ this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
|
|
+ } else {
|
|
|
+ let signalId = this._userVerifier.connect('no-more-messages',
|
|
|
+diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js
|
|
|
+index b07ea95..72bc010 100644
|
|
|
+--- a/js/ui/components/telepathyClient.js
|
|
|
++++ b/js/ui/components/telepathyClient.js
|
|
|
+@@ -18,7 +18,7 @@ const Params = imports.misc.params;
|
|
|
+ const PopupMenu = imports.ui.popupMenu;
|
|
|
+
|
|
|
+ // See Notification.appendMessage
|
|
|
+-const SCROLLBACK_IMMEDIATE_TIME = 60; // 1 minute
|
|
|
++const SCROLLBACK_IMMEDIATE_TIME = 3 * 60; // 3 minutes
|
|
|
+ const SCROLLBACK_RECENT_TIME = 15 * 60; // 15 minutes
|
|
|
+ const SCROLLBACK_RECENT_LENGTH = 20;
|
|
|
+ const SCROLLBACK_IDLE_LENGTH = 5;
|
|
|
+@@ -967,7 +967,8 @@ const ChatNotification = new Lang.Class({
|
|
|
+ let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
|
|
|
+ group: 'meta',
|
|
|
+ styles: ['chat-meta-message'],
|
|
|
+- childProps: { expand: true, x_fill: false },
|
|
|
++ childProps: { expand: true, x_fill: false,
|
|
|
++ x_align: St.Align.END },
|
|
|
+ noTimestamp: true,
|
|
|
+ timestamp: lastMessageTime });
|
|
|
+
|
|
|
+diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
|
|
|
+index d322581..ed61bf7 100644
|
|
|
+--- a/js/ui/endSessionDialog.js
|
|
|
++++ b/js/ui/endSessionDialog.js
|
|
|
+@@ -420,6 +420,7 @@ const EndSessionDialog = new Lang.Class({
|
|
|
+ _startTimer: function() {
|
|
|
+ let startTime = GLib.get_monotonic_time();
|
|
|
+ this._secondsLeft = this._totalSecondsToStayOpen;
|
|
|
++ this._updateDescription();
|
|
|
+
|
|
|
+ this._timerId = Mainloop.timeout_add_seconds(1, Lang.bind(this,
|
|
|
+ function() {
|
|
|
+diff --git a/js/ui/layout.js b/js/ui/layout.js
|
|
|
+index 0bb887e..e25b3bd 100644
|
|
|
+--- a/js/ui/layout.js
|
|
|
++++ b/js/ui/layout.js
|
|
|
+@@ -728,6 +728,8 @@ const LayoutManager = new Lang.Class({
|
|
|
+ // and shown otherwise)
|
|
|
+ addChrome: function(actor, params) {
|
|
|
+ this.uiGroup.add_actor(actor);
|
|
|
++ if (this.uiGroup.contains(global.top_window_group))
|
|
|
++ this.uiGroup.set_child_below_sibling(actor, global.top_window_group);
|
|
|
+ this._trackActor(actor, params);
|
|
|
+ },
|
|
|
+
|
|
|
+diff --git a/js/ui/osdWindow.js b/js/ui/osdWindow.js
|
|
|
+index 7e7b536..7fa052e 100644
|
|
|
+--- a/js/ui/osdWindow.js
|
|
|
++++ b/js/ui/osdWindow.js
|
|
|
+@@ -167,14 +167,17 @@ const OsdWindow = new Lang.Class({
|
|
|
+ { opacity: 0,
|
|
|
+ time: FADE_TIME,
|
|
|
+ transition: 'easeOutQuad',
|
|
|
+- onComplete: Lang.bind(this, this._reset) });
|
|
|
++ onComplete: Lang.bind(this, function() {
|
|
|
++ this._reset();
|
|
|
++ Meta.enable_unredirect_for_screen(global.screen);
|
|
|
++ })
|
|
|
++ });
|
|
|
+ },
|
|
|
+
|
|
|
+ _reset: function() {
|
|
|
+ this.actor.hide();
|
|
|
+ this.setLabel(null);
|
|
|
+ this.setLevel(null);
|
|
|
+- Meta.enable_unredirect_for_screen(global.screen);
|
|
|
+ },
|
|
|
+
|
|
|
+ _monitorsChanged: function() {
|
|
|
+diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
|
|
|
+index fe9cd31..4264f01 100644
|
|
|
+--- a/js/ui/screenShield.js
|
|
|
++++ b/js/ui/screenShield.js
|
|
|
+@@ -709,6 +709,8 @@ const ScreenShield = new Lang.Class({
|
|
|
+ },
|
|
|
+
|
|
|
+ _onDragEnd: function(action, actor, eventX, eventY, modifiers) {
|
|
|
++ if (this._lockScreenState != MessageTray.State.HIDING)
|
|
|
++ return;
|
|
|
+ if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
|
|
+ // Complete motion automatically
|
|
|
+ let [velocity, velocityX, velocityY] = this._dragAction.get_velocity(0);
|
|
|
+diff --git a/src/st/st-widget.c b/src/st/st-widget.c
|
|
|
+index 42992ec..4875acc 100644
|
|
|
+--- a/src/st/st-widget.c
|
|
|
++++ b/src/st/st-widget.c
|
|
|
+@@ -608,8 +608,9 @@ st_widget_get_theme_node (StWidget *widget)
|
|
|
+
|
|
|
+ if (stage == NULL)
|
|
|
+ {
|
|
|
+- g_error ("st_widget_get_theme_node called on the widget %s which is not in the stage.",
|
|
|
+- st_describe_actor (CLUTTER_ACTOR (widget)));
|
|
|
++ g_critical ("st_widget_get_theme_node called on the widget %s which is not in the stage.",
|
|
|
++ st_describe_actor (CLUTTER_ACTOR (widget)));
|
|
|
++ return g_object_new (ST_TYPE_THEME_NODE, NULL);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (parent_node == NULL)
|