diff --git a/js/ui/layout.js b/js/ui/layout.js index 3a20f923c..8e59383aa 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -124,7 +124,7 @@ const LayoutManager = new Lang.Class({ this.addChrome(this.panelBox, { affectsStruts: true, trackFullscreen: true }); this.panelBox.connect('allocation-changed', - Lang.bind(this, this._updatePanelBarriers)); + Lang.bind(this, this._panelBoxChanged)); this.trayBox = new St.Widget({ name: 'trayBox', layout_manager: new Clutter.BinLayout() }); @@ -256,6 +256,11 @@ const LayoutManager = new Lang.Class({ this.bottomMonitor.width, this.bottomMonitor.height); }, + _panelBoxChanged: function() { + this.emit('panel-box-changed'); + this._updatePanelBarriers(); + }, + _updatePanelBarriers: function() { if (this._leftPanelBarrier) global.destroy_pointer_barrier(this._leftPanelBarrier); @@ -387,6 +392,7 @@ const LayoutManager = new Lang.Class({ }, _startupAnimationComplete: function() { + this.emit('panel-box-changed'); this._chrome.thawUpdateRegions(); }, diff --git a/js/ui/panel.js b/js/ui/panel.js index 7ff528446..3e7f38b65 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -655,6 +655,13 @@ const ActivitiesButton = new Lang.Class({ })); this._xdndTimeOut = 0; + + // Since the hot corner uses stage coordinates, Clutter won't + // queue relayouts for us when the panel moves. Queue a relayout + // when that happens. + Main.layoutManager.connect('panel-box-changed', Lang.bind(this, function() { + container.queue_relayout(); + })); }, _containerGetPreferredWidth: function(actor, forHeight, alloc) {