From 674325e96ccbf3aafbaf158be5743fb17884baa7 Mon Sep 17 00:00:00 2001
From: Meet Parikh <meetprkh.gnome@gmail.com>
Date: Thu, 23 Apr 2015 16:13:03 +0530
Subject: [PATCH] panel: Move notification banners below time+date dropdown

As notifications appear in the time+date dropdown's message list, there's
a strong relationship between notification banners and the menu. However
while the time+date menu is centered by default, which matches the banner
position, its actual position depends on the session mode - in particular
it is moved to the right in classic mode.
Reinforce the relationship in these cases by moving notification banners
underneath the time+date menu.

https://bugzilla.gnome.org/show_bug.cgi?id=745910
---
 js/ui/messageTray.js | 8 ++++++++
 js/ui/panel.js       | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 7d2c3c836..4a949d4b0 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -976,6 +976,14 @@ const MessageTray = new Lang.Class({
         Shell.util_set_hidden_from_pick(this.actor, false);
     },
 
+    get bannerAlignment() {
+        return this._bannerBin.get_x_align();
+    },
+
+    set bannerAlignment(align) {
+        this._bannerBin.set_x_align(align);
+    },
+
     _onNotificationKeyRelease: function(actor, event) {
         if (event.get_key_symbol() == Clutter.KEY_Escape && event.get_state() == 0) {
             this._expireNotification();
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 8e7fa3ea0..2a951368f 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -933,6 +933,14 @@ const Panel = new Lang.Class({
         this._updateBox(panel.center, this._centerBox);
         this._updateBox(panel.right, this._rightBox);
 
+        if (panel.left.indexOf('dateMenu') != -1)
+            Main.messageTray.bannerAlignment = Clutter.ActorAlign.START;
+        else if (panel.right.indexOf('dateMenu') != -1)
+            Main.messageTray.bannerAlignment = Clutter.ActorAlign.END;
+        // Default to center if there is no dateMenu
+        else
+            Main.messageTray.bannerAlignment = Clutter.ActorAlign.CENTER;
+
         if (this._sessionStyle)
             this._removeStyleClassName(this._sessionStyle);