From e53ccd399c14cc3c85efff5233abf8668e634036 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Sat, 31 Aug 2019 16:37:16 -0400 Subject: [PATCH] Adjust vertical allocations --- appIcons.js | 21 ++++-- panel.js | 162 +++++++++++++++++++++++++++-------------------- stylesheet.css | 5 -- taskbar.js | 88 +++++++++++++++---------- windowPreview.js | 8 +-- 5 files changed, 169 insertions(+), 115 deletions(-) diff --git a/appIcons.js b/appIcons.js index da69ab9..fdab0b6 100644 --- a/appIcons.js +++ b/appIcons.js @@ -131,7 +131,7 @@ var taskbarAppIcon = Utils.defineClass({ this._container = new St.Widget({ style_class: 'dtp-container', layout_manager: new Clutter.BinLayout() }); this._dotsContainer = new St.Widget({ layout_manager: new Clutter.BinLayout() }); - this._dtpIconContainer = new St.Widget({ style_class: 'dtp-icon-container', layout_manager: new Clutter.BinLayout()}); + this._dtpIconContainer = new St.Widget({ style: 'padding: ' + (Taskbar.checkIfVertical() ? '4px 0' : '0 4px'), layout_manager: new Clutter.BinLayout()}); this.actor.remove_actor(this._iconContainer); @@ -512,8 +512,8 @@ var taskbarAppIcon = Utils.defineClass({ _setAppIconPadding: function() { let padding = getIconPadding(Me.settings); let margin = Me.settings.get_int('appicon-margin'); - - this.actor.set_style('padding: 0 ' + margin + 'px;'); + + this.actor.set_style('padding:' + (Taskbar.checkIfVertical() ? margin + 'px 0' : '0 ' + margin + 'px;')); this._iconContainer.set_style('padding: ' + padding + 'px;'); }, @@ -1434,7 +1434,8 @@ function ItemShowLabel() { let labelOffset = node.get_length('-x-offset'); let xOffset = Math.floor((itemWidth - labelWidth) / 2); - let x = stageX + xOffset, y; + let x = stageX + xOffset + let y = stageY + (itemHeight - labelHeight) * .5; switch(position) { case St.Side.TOP: @@ -1443,6 +1444,12 @@ function ItemShowLabel() { case St.Side.BOTTOM: y = stageY - labelHeight - labelOffset; break; + case St.Side.LEFT: + x = stageX + labelOffset + itemWidth; + break; + case St.Side.RIGHT: + x = stageX - labelWidth - labelOffset; + break; } // keep the label inside the screen border @@ -1497,6 +1504,7 @@ var ShowAppsIconWrapper = Utils.defineClass({ /* the variable equivalent to toggleButton has a different name in the appIcon class (actor): duplicate reference to easily reuse appIcon methods */ this.actor = this.realShowAppsIcon.toggleButton; + this.realShowAppsIcon.actor.x_align = Clutter.ActorAlign.START; this.realShowAppsIcon.actor.y_align = Clutter.ActorAlign.START; this.realShowAppsIcon.show(false); @@ -1554,9 +1562,10 @@ var ShowAppsIconWrapper = Utils.defineClass({ setShowAppsPadding: function() { let padding = getIconPadding(Me.settings); - let sidePadding = Me.settings.get_int('show-apps-icon-side-padding') + let sidePadding = Me.settings.get_int('show-apps-icon-side-padding'); + let isVertical = Taskbar.checkIfVertical(); - this.actor.set_style('padding:' + padding + 'px ' + (padding + sidePadding) + 'px;'); + this.actor.set_style('padding:' + (padding + (isVertical ? sidePadding : 0)) + 'px ' + (padding + (isVertical ? 0 : sidePadding)) + 'px;'); }, popupMenu: function() { diff --git a/panel.js b/panel.js index 74f7cf0..e3368bf 100644 --- a/panel.js +++ b/panel.js @@ -57,6 +57,9 @@ const Transparency = Me.imports.transparency; const _ = imports.gettext.domain(Me.imports.utils.TRANSLATION_DOMAIN).gettext; let tracker = Shell.WindowTracker.get_default(); +var sizeFunc; +var fixedCoord; +var varCoord; var dtpPanelWrapper = Utils.defineClass({ Name: 'DashToPanel.PanelWrapper', @@ -72,6 +75,18 @@ var dtpPanelWrapper = Utils.defineClass({ Utils.wrapActor(this.panel); Utils.wrapActor(this.panel.statusArea.activities || 0); + + if (!isSecondary) { + if (Taskbar.checkIfVertical()) { + sizeFunc = 'get_preferred_height', + fixedCoord = { c1: 'x1', c2: 'x2' }, + varCoord = { c1: 'y1', c2: 'y2' }; + } else { + sizeFunc = 'get_preferred_width'; + fixedCoord = { c1: 'y1', c2: 'y2' }; + varCoord = { c1: 'x1', c2: 'x2' }; + } + } }, enable : function() { @@ -337,6 +352,8 @@ var dtpPanelWrapper = Utils.defineClass({ if (!this.isSecondary) { this.panel.actor.set_height(this._oldPanelHeight); + this.panel.actor.set_width(-1); + this._setVertical(this.panel.actor, false); Main.overview._panelGhost.set_height(this._oldPanelHeight); this._setActivitiesButtonVisible(true); @@ -436,93 +453,91 @@ var dtpPanelWrapper = Utils.defineClass({ this.panel.set_allocation(box, flags); this._allocate(null, box, flags); }, - - _allocate: function(actor, box, flags) { - let panelAllocWidth = box.x2 - box.x1; - let panelAllocHeight = box.y2 - box.y1; - let [leftMinWidth, leftNaturalWidth] = this.panel._leftBox.get_preferred_width(-1); - let [centerMinWidth, centerNaturalWidth] = this.panel._centerBox.get_preferred_width(-1); - let [rightMinWidth, rightNaturalWidth] = this.panel._rightBox.get_preferred_width(-1); + _allocate: function(actor, box, flags) { + let panelAllocVarSize = box[varCoord.c2] - box[varCoord.c1]; + let panelAllocFixedSize = box[fixedCoord.c2] - box[fixedCoord.c1]; + let [, leftNaturalSize] = this.panel._leftBox[sizeFunc](-1); + let [, centerNaturalSize] = this.panel._centerBox[sizeFunc](-1); + let [, rightNaturalSize] = this.panel._rightBox[sizeFunc](-1); let taskbarPosition = Me.settings.get_string('taskbar-position'); // The _rightBox is always allocated the same, regardless of taskbar position setting - let rightAllocWidth = rightNaturalWidth; + let rightAllocSize = rightNaturalSize; // Now figure out how large the _leftBox and _centerBox should be. // The box with the taskbar is always the one that is forced to be smaller as the other boxes grow - let leftAllocWidth, centerStartPosition, centerEndPosition; - if (taskbarPosition == 'CENTEREDMONITOR') { - leftAllocWidth = leftNaturalWidth; - - centerStartPosition = Math.max(leftNaturalWidth, Math.floor((panelAllocWidth - centerNaturalWidth)/2)); - centerEndPosition = Math.min(panelAllocWidth-rightNaturalWidth, Math.ceil((panelAllocWidth+centerNaturalWidth))/2); - } else if (taskbarPosition == 'CENTEREDCONTENT') { - leftAllocWidth = leftNaturalWidth; - - centerStartPosition = Math.max(leftNaturalWidth, Math.floor((panelAllocWidth - centerNaturalWidth + leftNaturalWidth - rightNaturalWidth) / 2)); - centerEndPosition = Math.min(panelAllocWidth-rightNaturalWidth, Math.ceil((panelAllocWidth + centerNaturalWidth + leftNaturalWidth - rightNaturalWidth) / 2)); - } else if (taskbarPosition == 'LEFTPANEL_FIXEDCENTER') { - leftAllocWidth = Math.floor((panelAllocWidth - centerNaturalWidth) / 2); - centerStartPosition = leftAllocWidth; - centerEndPosition = centerStartPosition + centerNaturalWidth; - } else if (taskbarPosition == 'LEFTPANEL_FLOATCENTER') { - let leftAllocWidthMax = panelAllocWidth - rightNaturalWidth - centerNaturalWidth; - leftAllocWidth = Math.min(leftAllocWidthMax, leftNaturalWidth); - - let freeSpace = panelAllocWidth - leftAllocWidth - rightAllocWidth - centerNaturalWidth; - - centerStartPosition = leftAllocWidth + Math.floor(freeSpace / 2); - centerEndPosition = centerStartPosition + centerNaturalWidth; - } else { // LEFTPANEL - leftAllocWidth = panelAllocWidth - rightNaturalWidth - centerNaturalWidth; - centerStartPosition = leftAllocWidth; - centerEndPosition = centerStartPosition + centerNaturalWidth; - } - + let leftAllocSize, centerStartPosition, centerEndPosition; let childBoxLeft = new Clutter.ActorBox(); let childBoxCenter = new Clutter.ActorBox(); let childBoxRight = new Clutter.ActorBox(); - childBoxLeft.y1 = childBoxCenter.y1 = childBoxRight.y1 = 0; - childBoxLeft.y2 = childBoxCenter.y2 = childBoxRight.y2 = panelAllocHeight; + + if (taskbarPosition == 'CENTEREDMONITOR') { + leftAllocSize = leftNaturalSize; + + centerStartPosition = Math.max(leftNaturalSize, Math.floor((panelAllocVarSize - centerNaturalSize)/2)); + centerEndPosition = Math.min(panelAllocVarSize-rightNaturalSize, Math.ceil((panelAllocVarSize+centerNaturalSize))/2); + } else if (taskbarPosition == 'CENTEREDCONTENT') { + leftAllocSize = leftNaturalSize; + + centerStartPosition = Math.max(leftNaturalSize, Math.floor((panelAllocVarSize - centerNaturalSize + leftNaturalSize - rightNaturalSize) / 2)); + centerEndPosition = Math.min(panelAllocVarSize-rightNaturalSize, Math.ceil((panelAllocVarSize + centerNaturalSize + leftNaturalSize - rightNaturalSize) / 2)); + } else if (taskbarPosition == 'LEFTPANEL_FIXEDCENTER') { + leftAllocSize = Math.floor((panelAllocVarSize - centerNaturalSize) / 2); + centerStartPosition = leftAllocSize; + centerEndPosition = centerStartPosition + centerNaturalSize; + } else if (taskbarPosition == 'LEFTPANEL_FLOATCENTER') { + let leftAllocSizeMax = panelAllocVarSize - rightNaturalSize - centerNaturalSize; + leftAllocSize = Math.min(leftAllocSizeMax, leftNaturalSize); + + let freeSpace = panelAllocVarSize - leftAllocSize - rightAllocSize - centerNaturalSize; + + centerStartPosition = leftAllocSize + Math.floor(freeSpace / 2); + centerEndPosition = centerStartPosition + centerNaturalSize; + } else { // LEFTPANEL + leftAllocSize = panelAllocVarSize - rightNaturalSize - centerNaturalSize; + centerStartPosition = leftAllocSize; + centerEndPosition = centerStartPosition + centerNaturalSize; + } + + childBoxLeft[fixedCoord.c1] = childBoxCenter[fixedCoord.c1] = childBoxRight[fixedCoord.c1] = 0; + childBoxLeft[fixedCoord.c2] = childBoxCenter[fixedCoord.c2] = childBoxRight[fixedCoord.c2] = panelAllocFixedSize; // if it is a RTL language, the boxes are switched around, and we need to invert the coordinates if (this.panel.actor.get_text_direction() == Clutter.TextDirection.RTL) { - childBoxLeft.x1 = panelAllocWidth - leftAllocWidth; - childBoxLeft.x2 = panelAllocWidth; + childBoxLeft[varCoord.c1] = panelAllocVarSize - leftAllocSize; + childBoxLeft[varCoord.c2] = panelAllocVarSize; - childBoxCenter.x1 = panelAllocWidth - centerEndPosition; - childBoxCenter.x2 = panelAllocWidth - centerStartPosition; + childBoxCenter[varCoord.c1] = panelAllocVarSize - centerEndPosition; + childBoxCenter[varCoord.c2] = panelAllocVarSize - centerStartPosition; - childBoxRight.x1 = 0; - childBoxRight.x2 = rightAllocWidth; + childBoxRight[varCoord.c1] = 0; + childBoxRight[varCoord.c2] = rightAllocSize; } else { - childBoxLeft.x1 = 0; - childBoxLeft.x2 = leftAllocWidth; + childBoxLeft[varCoord.c1] = 0; + childBoxLeft[varCoord.c2] = leftAllocSize; - childBoxCenter.x1 = centerStartPosition; - childBoxCenter.x2 = centerEndPosition; + childBoxCenter[varCoord.c1] = centerStartPosition; + childBoxCenter[varCoord.c2] = centerEndPosition; - childBoxRight.x1 = panelAllocWidth - rightAllocWidth; - childBoxRight.x2 = panelAllocWidth; + childBoxRight[varCoord.c1] = panelAllocVarSize - rightAllocSize; + childBoxRight[varCoord.c2] = panelAllocVarSize; } - + let childBoxLeftCorner = new Clutter.ActorBox(); - let [cornerMinWidth, cornerWidth] = this.panel._leftCorner.actor.get_preferred_width(-1); - let [cornerMinHeight, cornerHeight] = this.panel._leftCorner.actor.get_preferred_width(-1); - childBoxLeftCorner.x1 = 0; - childBoxLeftCorner.x2 = cornerWidth; - childBoxLeftCorner.y1 = panelAllocHeight; - childBoxLeftCorner.y2 = panelAllocHeight + cornerHeight; + let [ , cornerSize] = this.panel._leftCorner.actor[sizeFunc](-1); + childBoxLeftCorner[varCoord.c1] = 0; + childBoxLeftCorner[varCoord.c2] = cornerSize; + childBoxLeftCorner[fixedCoord.c1] = panelAllocFixedSize; + childBoxLeftCorner[fixedCoord.c2] = panelAllocFixedSize + cornerSize; let childBoxRightCorner = new Clutter.ActorBox(); - [cornerMinWidth, cornerWidth] = this.panel._rightCorner.actor.get_preferred_width(-1); - [cornerMinHeight, cornerHeight] = this.panel._rightCorner.actor.get_preferred_width(-1); - childBoxRightCorner.x1 = panelAllocWidth - cornerWidth; - childBoxRightCorner.x2 = panelAllocWidth; - childBoxRightCorner.y1 = panelAllocHeight; - childBoxRightCorner.y2 = panelAllocHeight + cornerHeight; + [ , cornerSize] = this.panel._rightCorner.actor[sizeFunc](-1); + childBoxRightCorner[varCoord.c1] = panelAllocVarSize - cornerSize; + childBoxRightCorner[varCoord.c2] = panelAllocVarSize; + childBoxRightCorner[fixedCoord.c1] = panelAllocFixedSize; + childBoxRightCorner[fixedCoord.c2] = panelAllocFixedSize + cornerSize; this.panel._leftBox.allocate(childBoxLeft, flags, true); this.panel._centerBox.allocate(childBoxCenter, flags, true); @@ -539,19 +554,22 @@ var dtpPanelWrapper = Utils.defineClass({ if(scaleFactor) size = size*scaleFactor; - this.panel.actor.set_height(size); - let position = Taskbar.getPosition(); + let isLeftOrRight = position == St.Side.LEFT || position == St.Side.LEFT; let isTop = position == St.Side.TOP; + this.panel.actor.set_size(isLeftOrRight ? size : -1, isLeftOrRight ? -1 : size); + + this._setVertical(this.panel.actor, isLeftOrRight); + Main.overview._panelGhost.set_height(isTop ? size : 0); this._myPanelGhost.set_height(isTop ? 0 : size); - if (isTop) { + if (!isTop) { this._removeTopLimit(); } else { if (!this._topLimit) { - this._topLimit = new St.BoxLayout({ name: 'topLimit', vertical: true }); + this._topLimit = new St.BoxLayout({ name: 'topLimit' }); Main.layoutManager.addChrome(this._topLimit, { affectsStruts: true, trackFullscreen: true }); } @@ -578,6 +596,14 @@ var dtpPanelWrapper = Utils.defineClass({ Main.layoutManager._updatePanelBarrier(this); }, + _setVertical: function(actor, isVertical) { + if ('vertical' in actor) { + actor.vertical = isVertical; + } + + actor.get_children().forEach(c => this._setVertical(c, isVertical)); + }, + _removeTopLimit: function() { if (this._topLimit) { Main.layoutManager.removeChrome(this._topLimit); diff --git a/stylesheet.css b/stylesheet.css index 6cbbf6a..7a39578 100644 --- a/stylesheet.css +++ b/stylesheet.css @@ -33,10 +33,6 @@ padding: 0; } -#dashtopanelScrollview .dtp-icon-container { - padding: 0 4px; -} - #dashtopanelScrollview .app-well-app .overview-label { padding-right: 8px; } @@ -64,7 +60,6 @@ } #dashtopanelTaskbar .scrollview-fade { - background-gradient-direction: horizontal; background-gradient-end: rgba(0, 0, 0, 0); } diff --git a/taskbar.js b/taskbar.js index 5deffb0..4bc23d5 100644 --- a/taskbar.js +++ b/taskbar.js @@ -44,9 +44,10 @@ const Tweener = imports.ui.tweener; const Workspace = imports.ui.workspace; const Me = imports.misc.extensionUtils.getCurrentExtension(); +const AppIcons = Me.imports.appIcons; +const Panel = Me.imports.panel; const Utils = Me.imports.utils; const WindowPreview = Me.imports.windowPreview; -const AppIcons = Me.imports.appIcons; var DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME / (Dash.DASH_ANIMATION_TIME > 1 ? 1000 : 1); var DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT; @@ -65,6 +66,17 @@ function getPosition() { return St.Side.LEFT; } + +function checkIfVertical() { + let position = getPosition(); + + return (position == St.Side.LEFT || position == St.Side.RIGHT); +} + +function getOrientation() { + return (checkIfVertical() ? 'vertical' : 'horizontal'); +} + /** * Extend DashItemContainer * @@ -92,57 +104,67 @@ var taskbarActor = Utils.defineClass({ this._delegate = delegate; this._currentBackgroundColor = 0; this.callParent('_init', { name: 'dashtopanelTaskbar', - layout_manager: new Clutter.BoxLayout({ orientation: Clutter.Orientation.HORIZONTAL }), + layout_manager: new Clutter.BoxLayout({ orientation: Clutter.Orientation[getOrientation().toUpperCase()] }), clip_to_allocation: true }); }, vfunc_allocate: function(box, flags)  { this.set_allocation(box, flags); - let availHeight = box.y2 - box.y1; + let availSize = box[Panel.fixedCoord.c2] - box[Panel.fixedCoord.c1]; let [, showAppsButton, scrollview, leftFade, rightFade] = this.get_children(); - let [, showAppsNatWidth] = showAppsButton.get_preferred_width(availHeight); + let [, showAppsNatSize] = showAppsButton[Panel.sizeFunc](availSize); let childBox = new Clutter.ActorBox(); + let orientation = getOrientation().toLowerCase(); - childBox.x1 = box.x1; - childBox.x2 = box.x1 + showAppsNatWidth; - childBox.y1 = box.y1; - childBox.y2 = box.y2; + childBox[Panel.varCoord.c1] = box[Panel.varCoord.c1]; + childBox[Panel.fixedCoord.c1] = box[Panel.fixedCoord.c1]; + + childBox[Panel.varCoord.c2] = box[Panel.varCoord.c1] + showAppsNatSize; + childBox[Panel.fixedCoord.c2] = box[Panel.fixedCoord.c2]; showAppsButton.allocate(childBox, flags); - childBox.x1 = box.x1 + showAppsNatWidth; - childBox.x2 = box.x2; + childBox[Panel.varCoord.c1] = box[Panel.varCoord.c1] + showAppsNatSize; + childBox[Panel.varCoord.c2] = box[Panel.varCoord.c2]; scrollview.allocate(childBox, flags); - let [hvalue, , hupper, , , hpageSize] = scrollview.hscroll.adjustment.get_values(); + let [hvalue, , hupper, , , hpageSize] = scrollview[orientation[0] + 'scroll'].adjustment.get_values(); hupper = Math.floor(hupper); scrollview._dtpFadeSize = hupper > hpageSize ? this._delegate.iconSize : 0; if (this._delegate.panelWrapper.dynamicTransparency && this._currentBackgroundColor !== this._delegate.panelWrapper.dynamicTransparency.currentBackgroundColor) { this._currentBackgroundColor = this._delegate.panelWrapper.dynamicTransparency.currentBackgroundColor; - let gradientStart = 'background-gradient-start: ' + this._currentBackgroundColor; - leftFade.set_style(gradientStart); - rightFade.set_style(gradientStart); + let gradientStyle = 'background-gradient-start: ' + this._currentBackgroundColor + ';' + + 'background-gradient-direction: ' + orientation; + + leftFade.set_style(gradientStyle); + rightFade.set_style(gradientStyle); } - childBox.x1 = box.x1 + showAppsNatWidth; - childBox.x2 = childBox.x1 + (hvalue > 0 ? scrollview._dtpFadeSize : 0); + childBox[Panel.varCoord.c1] = box[Panel.varCoord.c1] + showAppsNatSize; + childBox[Panel.varCoord.c2] = childBox[Panel.varCoord.c1] + (hvalue > 0 ? scrollview._dtpFadeSize : 0); leftFade.allocate(childBox, flags); - childBox.x1 = box.x2 - (hvalue + hpageSize < hupper ? scrollview._dtpFadeSize : 0); - childBox.x2 = box.x2; + childBox[Panel.varCoord.c1] = box[Panel.varCoord.c2] - (hvalue + hpageSize < hupper ? scrollview._dtpFadeSize : 0); + childBox[Panel.varCoord.c2] = box[Panel.varCoord.c2]; rightFade.allocate(childBox, flags); }, + // We want to request the natural size of all our children + // as our natural width, so we chain up to StWidget (which + // then calls BoxLayout) vfunc_get_preferred_width: function(forHeight) { - // We want to request the natural width of all our children - // as our natural width, so we chain up to StWidget (which - // then calls BoxLayout) let [, natWidth] = St.Widget.prototype.vfunc_get_preferred_width.call(this, forHeight); return [0, natWidth]; }, + + vfunc_get_preferred_height: function(forWidth) { + let [, natHeight] = St.Widget.prototype.vfunc_get_preferred_height.call(this, forWidth); + + return [0, natHeight]; + }, }); /* This class is a fork of the upstream dash class (ui.dash.js) @@ -170,7 +192,6 @@ var taskbar = Utils.defineClass({ this._shownInitially = false; - this._position = getPosition(); this._signalsHandler = new Utils.GlobalSignalsHandler(); this._showLabelTimeoutId = 0; @@ -178,7 +199,7 @@ var taskbar = Utils.defineClass({ this._ensureAppIconVisibilityTimeoutId = 0; this._labelShowing = false; - this._box = new St.BoxLayout({ vertical: false, + this._box = new St.BoxLayout({ vertical: checkIfVertical(), clip_to_allocation: false, x_align: Clutter.ActorAlign.START, y_align: Clutter.ActorAlign.START }); @@ -212,16 +233,19 @@ var taskbar = Utils.defineClass({ this._container.add_child(new St.Widget({ width: 0, reactive: false })); this._container.add_actor(this._showAppsIcon); this._container.add_actor(this._scrollView); - this._container.add_actor(new St.Widget({ style_class: 'scrollview-fade', reactive: false })); - this._container.add_actor(new St.Widget({ style_class: 'scrollview-fade', - reactive: false, - pivot_point: new Clutter.Point({ x: .5, y: .5 }), - rotation_angle_z: 180 })); + + let fadeStyle = 'background-gradient-direction:' + getOrientation(); + let fade1 = new St.Widget({ style_class: 'scrollview-fade', reactive: false }); + let fade2 = new St.Widget({ style_class: 'scrollview-fade', + reactive: false, + pivot_point: new Clutter.Point({ x: .5, y: .5 }), + rotation_angle_z: 180 }); - this.showAppsButton.add_constraint(new Clutter.BindConstraint({ - source: this._container, - coordinate: Clutter.BindCoordinate.HEIGHT - })); + fade1.set_style(fadeStyle); + fade2.set_style(fadeStyle); + + this._container.add_actor(fade1); + this._container.add_actor(fade2); this.previewMenu = new WindowPreview.PreviewMenu(panelWrapper); this.previewMenu.enable(); diff --git a/windowPreview.js b/windowPreview.js index 826be3c..992b8a2 100644 --- a/windowPreview.js +++ b/windowPreview.js @@ -493,7 +493,7 @@ var PreviewMenu = Utils.defineClass({ }, _getScrollAdjustmentValues: function() { - let [value , , upper, , , pageSize] = this._scrollView[this.isLeftOrRight ? 'v' : 'h' + 'scroll'].adjustment.get_values(); + let [value , , upper, , , pageSize] = this._scrollView[(this.isLeftOrRight ? 'v' : 'h') + 'scroll'].adjustment.get_values(); return [value, upper, pageSize]; }, @@ -504,15 +504,15 @@ var PreviewMenu = Utils.defineClass({ let x = 0, y = 0; let startBg = Utils.getrgbaColor(this._panelWrapper.dynamicTransparency.backgroundColorRgb, Math.min(alphaBg + .1, 1)); let endBg = Utils.getrgbaColor(this._panelWrapper.dynamicTransparency.backgroundColorRgb, 0) - let fadeStyle = 'background-gradient-start:' + startBg + 'background-gradient-end: ' + endBg + ' background-gradient-direction:'; + let fadeStyle = 'background-gradient-start:' + startBg + + 'background-gradient-end:' + endBg + + 'background-gradient-direction:' + Taskbar.getOrientation(); if (this.isLeftOrRight) { - fadeStyle += 'vertical;' rotation = end ? 270 : 90; y = end ? this._panelWrapper.monitor.height - FADE_SIZE : 0; size = this.width; } else { - fadeStyle += 'horizontal;' rotation = end ? 180 : 0; x = end ? this._panelWrapper.monitor.width - FADE_SIZE : 0; size = this.height;