From 81aed78a1f28d77bed604ecc5a9c28e6b5eb687b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 19 Jun 2010 01:02:50 +0200 Subject: [PATCH] [panel] Flip left and right group in RTL locales While the contents of the left and right group in the panel are flipped correctly, the groups themselves have to be swapped as well. The location of the hot corner has to be corrected as well. https://bugzilla.gnome.org/show_bug.cgi?id=622243 --- js/ui/panel.js | 56 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index 48dabc825..e2d493ccf 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -702,10 +702,39 @@ Panel.prototype = { sideWidth = (allocWidth - centerWidth) / 2; let childBox = new Clutter.ActorBox(); - childBox.x1 = 0; childBox.y1 = 0; - childBox.x2 = childBox.x1 + Math.floor(sideWidth); + childBox.y2 = this._hotCornerEnvirons.height; + if (this.actor.get_direction() == St.TextDirection.RTL) { + childBox.x1 = allocWidth - this._hotCornerEnvirons.width; + childBox.x2 = allocWidth; + } else { + childBox.x1 = 0; + childBox.x2 = this._hotCornerEnvirons.width; + } + this._hotCornerEnvirons.allocate(childBox, flags); + + childBox.y1 = 0; + childBox.y2 = this._hotCorner.height; + if (this.actor.get_direction() == St.TextDirection.RTL) { + childBox.x1 = allocWidth - this._hotCorner.width; + childBox.x2 = allocWidth; + } else { + childBox.x1 = 0; + childBox.x2 = this._hotCorner.width; + } + this._hotCorner.allocate(childBox, flags); + + childBox.y1 = 0; childBox.y2 = allocHeight; + if (this.actor.get_direction() == St.TextDirection.RTL) { + childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth), + leftNaturalWidth); + childBox.x2 = allocWidth; + } else { + childBox.x1 = 0; + childBox.x2 = Math.min(Math.floor(sideWidth), + leftNaturalWidth); + } this._leftBox.allocate(childBox, flags); childBox.x1 = Math.ceil(sideWidth); @@ -714,10 +743,17 @@ Panel.prototype = { childBox.y2 = allocHeight; this._centerBox.allocate(childBox, flags); - childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth), rightNaturalWidth); childBox.y1 = 0; - childBox.x2 = allocWidth; childBox.y2 = allocHeight; + if (this.actor.get_direction() == St.TextDirection.RTL) { + childBox.x1 = 0; + childBox.x2 = Math.min(Math.floor(sideWidth), + rightNaturalWidth); + } else { + childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth), + rightNaturalWidth); + childBox.x2 = allocWidth; + } this._rightBox.allocate(childBox, flags); })); @@ -737,16 +773,12 @@ Panel.prototype = { // multiple times due to an accidental jitter. this._hotCornerEntered = false; - this._hotCornerEnvirons = new Clutter.Rectangle({ x: 0, - y: 0, - width: 3, + this._hotCornerEnvirons = new Clutter.Rectangle({ width: 3, height: 3, opacity: 0, reactive: true }); - this._hotCorner = new Clutter.Rectangle({ x: 0, - y: 0, - width: 1, + this._hotCorner = new Clutter.Rectangle({ width: 1, height: 1, opacity: 0, reactive: true }); @@ -770,8 +802,8 @@ Panel.prototype = { this._hotCorner.connect('leave-event', Lang.bind(this, this._onHotCornerLeft)); - this._leftBox.add(this._hotCornerEnvirons); - this._leftBox.add(this._hotCorner); + this._boxContainer.add_actor(this._hotCornerEnvirons); + this._boxContainer.add_actor(this._hotCorner); let appMenuButton = new AppMenuButton(); this._leftBox.add(appMenuButton.actor);