From 0518d69b72ecec0153a6a4fcc6cc09ce7f1708b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 10 Sep 2011 03:41:39 +0200 Subject: [PATCH] panel: Fix corner highlight The style of the top bar's corners is bound to the style of the corresponding button; we used to hardcode this association, but as the login mode does have a different layout, the button is now determined programmatically. Unfortunately, some containers take the text direction into account when ordering their children, while some don't, so the current code returned the wrong button in RTL locales. https://bugzilla.gnome.org/show_bug.cgi?id=658983 --- js/ui/panel.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index 57c5df4aa..b64a1b224 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -764,11 +764,21 @@ PanelCorner.prototype = { }, _boxStyleChanged: function() { - let button; + let side = this._side; - if (this._side == St.Side.LEFT) + let rtlAwareContainer = this._box instanceof St.BoxLayout; + if (rtlAwareContainer && + this._box.get_direction() == St.TextDirection.RTL) { + if (this._side == St.Side.LEFT) + side = St.Side.RIGHT; + else if (this._side == St.Side.RIGHT) + side = St.Side.LEFT; + } + + let button; + if (side == St.Side.LEFT) button = this._findLeftmostButton(this._box); - else if (this._side == St.Side.RIGHT) + else if (side == St.Side.RIGHT) button = this._findRightmostButton(this._box); if (button) {