diff --git a/dockedDash.js b/dockedDash.js index f1c603093..a5466b090 100644 --- a/dockedDash.js +++ b/dockedDash.js @@ -265,6 +265,7 @@ dockedDash.prototype = { this._settings.connect('changed::autohide', Lang.bind(this, function(){ this.emit('box-changed'); })); + this._settings.connect('changed::shift-panel', Lang.bind(this, this._updateYPosition)); this._settings.connect('changed::extend-height', Lang.bind(this, this._updateYPosition)); this._settings.connect('changed::preferred-monitor', Lang.bind(this,this._resetPosition)); this._settings.connect('changed::height-fraction', Lang.bind(this,this._updateYPosition)); @@ -512,12 +513,14 @@ dockedDash.prototype = { let unavailableTopSpace = 0; let unavailableBottomSpace = 0; + let shiftPanel = this._settings.get_boolean('shift-panel'); let extendHeight = this._settings.get_boolean('extend-height'); let dockFixed = this._settings.get_boolean('dock-fixed'); // check if the dock is on the primary monitor if (this._isPrimaryMonitor()){ - if (!extendHeight || !dockFixed) { + // removed dockfixed, makes no sense in my eyes + if(!shiftPanel && extendHeight){ unavailableTopSpace = Main.panel.actor.height; } } @@ -548,19 +551,35 @@ dockedDash.prototype = { // Shift panel position to extend the dash to the full monitor height _updateMainPanel: function() { + let shiftPanel = this._settings.get_boolean('shift-panel'); let extendHeight = this._settings.get_boolean('extend-height'); let dockFixed = this._settings.get_boolean('dock-fixed'); + let panelActor = Main.panel.actor; + let trayActor = Main.messageTray.actor; - if (this._isPrimaryMonitor() && extendHeight && dockFixed) { - panelActor.set_width(this._monitor.width - this._box.width); + if (this._isPrimaryMonitor() && extendHeight) { + if (shiftPanel) { + panelActor.set_width(this._monitor.width - this._box.width); + if (this._rtl) { + panelActor.set_margin_right(this._box.width - 1); + } else { + panelActor.set_margin_left(this._box.width - 1); + } + }else{ + this._revertMainPanel(); + } + + // changes the width of the message tray, to prevent an overlay + trayActor.set_width(this._monitor.width - this._box.width); if (this._rtl) { - panelActor.set_margin_right(this._box.width - 1); + trayActor.set_margin_right(this._box.width - 1); } else { - panelActor.set_margin_left(this._box.width - 1); + trayActor.set_margin_left(this._box.width - 1); } } else { this._revertMainPanel(); + this._revertMessageTray(); } }, @@ -571,6 +590,13 @@ dockedDash.prototype = { panelActor.set_margin_left(0); }, + _revertMessageTray: function() { + let trayActor = Main.messageTray.actor; + trayActor.set_width(this._monitor.width); + trayActor.set_margin_right(0); + trayActor.set_margin_left(0); + }, + _updateStaticBox: function() { this.staticBox.init_rect( diff --git a/prefs.js b/prefs.js index d3a252b75..88c1b23e7 100644 --- a/prefs.js +++ b/prefs.js @@ -192,16 +192,27 @@ const WorkspaceSettingsWidget = new GObject.Class({ })); dockMaxHeight.connect('format-value', function(scale, value) {return value + '%'}); - let extendHeight = new Gtk.CheckButton({label: _("Expand (experimental and buggy)")}); + + let extendHeight = new Gtk.CheckButton({label: _("Expand\n(experimental and buggy)")}); extendHeight.set_active(this.settings.get_boolean('extend-height')); extendHeight.connect('toggled', Lang.bind(this, function(check){ this.settings.set_boolean('extend-height', check.get_active()); })); + // setting for shifting the main panel (true means the panel is shifted) + let shiftPanel = new Gtk.CheckButton({label: _("Shift Panel")}); + shiftPanel.set_active(this.settings.get_boolean('shift-panel')); + shiftPanel.connect('toggled', Lang.bind(this, function(check){ + this.settings.set_boolean('shift-panel', check.get_active()); + })); + dockHeightMain.add(dockMaxHeightLabel); dockHeightMain.add(dockMaxHeight); dockHeightMain.add(extendHeight); + dockHeightMain.add(shiftPanel); + // extend-height must be activated + this.settings.bind('extend-height', shiftPanel, 'sensitive', Gio.SettingsBindFlags.DEFAULT); this.settings.bind('extend-height', dockMaxHeightLabel, 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN); this.settings.bind('extend-height', dockMaxHeight, 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN); diff --git a/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml b/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml index 2d1bddeee..5b6ae33e5 100644 --- a/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml +++ b/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml @@ -110,6 +110,10 @@ false Extend the dock container to all the available height + + false + Sets if the extended dock should move the main panel + -1 Monitor on which putting the dock