Move HotCorner to chrome instead of in the panel
This prepares for there being multiple hot corners, one per monitor. https://bugzilla.gnome.org/show_bug.cgi?id=642881
This commit is contained in:
parent
196d10454a
commit
259c84ed9a
@ -48,6 +48,7 @@ DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
|
|||||||
|
|
||||||
let chrome = null;
|
let chrome = null;
|
||||||
let panel = null;
|
let panel = null;
|
||||||
|
let hotCorner = null;
|
||||||
let placesManager = null;
|
let placesManager = null;
|
||||||
let overview = null;
|
let overview = null;
|
||||||
let runDialog = null;
|
let runDialog = null;
|
||||||
@ -140,6 +141,7 @@ function start() {
|
|||||||
magnifier = new Magnifier.Magnifier();
|
magnifier = new Magnifier.Magnifier();
|
||||||
statusIconDispatcher = new StatusIconDispatcher.StatusIconDispatcher();
|
statusIconDispatcher = new StatusIconDispatcher.StatusIconDispatcher();
|
||||||
panel = new Panel.Panel();
|
panel = new Panel.Panel();
|
||||||
|
hotCorner = new Panel.HotCorner();
|
||||||
wm = new WindowManager.WindowManager();
|
wm = new WindowManager.WindowManager();
|
||||||
messageTray = new MessageTray.MessageTray();
|
messageTray = new MessageTray.MessageTray();
|
||||||
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
||||||
@ -389,6 +391,11 @@ function _getAndClearErrorStack() {
|
|||||||
|
|
||||||
function _relayout() {
|
function _relayout() {
|
||||||
let primary = global.get_primary_monitor();
|
let primary = global.get_primary_monitor();
|
||||||
|
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||||
|
hotCorner.actor.set_position(primary.x + primary.width, primary.y);
|
||||||
|
else
|
||||||
|
hotCorner.actor.set_position(primary.x, primary.y);
|
||||||
|
panel.setHotCorner(hotCorner);
|
||||||
panel.actor.set_position(primary.x, primary.y);
|
panel.actor.set_position(primary.x, primary.y);
|
||||||
panel.actor.set_size(primary.width, Panel.PANEL_HEIGHT);
|
panel.actor.set_size(primary.width, Panel.PANEL_HEIGHT);
|
||||||
overview.relayout();
|
overview.relayout();
|
||||||
|
@ -706,6 +706,8 @@ HotCorner.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Main.chrome.addActor(this.actor, { visibleInOverview: true, affectsStruts: false });
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
@ -865,16 +867,6 @@ Panel.prototype = {
|
|||||||
|
|
||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
|
|
||||||
childBox.y1 = 0;
|
|
||||||
childBox.y2 = this._hotCorner.actor.height;
|
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
|
||||||
childBox.x1 = allocWidth;
|
|
||||||
} else {
|
|
||||||
childBox.x1 = 0;
|
|
||||||
}
|
|
||||||
childBox.x2 = childBox.x1 + this._hotCorner.actor.width;
|
|
||||||
this._hotCorner.actor.allocate(childBox, flags);
|
|
||||||
|
|
||||||
childBox.y1 = 0;
|
childBox.y1 = 0;
|
||||||
childBox.y2 = allocHeight;
|
childBox.y2 = allocHeight;
|
||||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
||||||
@ -941,8 +933,7 @@ Panel.prototype = {
|
|||||||
corner.actor.set_style_pseudo_class(pseudoClass);
|
corner.actor.set_style_pseudo_class(pseudoClass);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._hotCorner = new HotCorner();
|
this._hotCorner = null;
|
||||||
this._boxContainer.add_actor(this._hotCorner.actor);
|
|
||||||
|
|
||||||
let appMenuButton = new AppMenuButton();
|
let appMenuButton = new AppMenuButton();
|
||||||
this._leftBox.add(appMenuButton.actor);
|
this._leftBox.add(appMenuButton.actor);
|
||||||
@ -1032,6 +1023,14 @@ Panel.prototype = {
|
|||||||
this.button._xdndTimeOut = 0;
|
this.button._xdndTimeOut = 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// While there can be multiple hotcorners (one per monitor), the hot corner
|
||||||
|
// that is on top of the Activities button is special since it needs special
|
||||||
|
// coordination with clicking on that button
|
||||||
|
setHotCorner: function(corner) {
|
||||||
|
this._hotCorner = corner;
|
||||||
|
},
|
||||||
|
|
||||||
startStatusArea: function() {
|
startStatusArea: function() {
|
||||||
for (let i = 0; i < STANDARD_TRAY_ICON_ORDER.length; i++) {
|
for (let i = 0; i < STANDARD_TRAY_ICON_ORDER.length; i++) {
|
||||||
let role = STANDARD_TRAY_ICON_ORDER[i];
|
let role = STANDARD_TRAY_ICON_ORDER[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user