[gnome-shell] boxpointer: Add condition checks for -arrow-rise:0px
- From: Carlos Soriano <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] boxpointer: Add condition checks for -arrow-rise:0px
- Date: Wed, 15 Jan 2014 17:40:33 +0000 (UTC)
commit cbceac4c8a7716252143fbcbb8a2153fda854921
Author: Tarun Kumar Joshi <tj joshi7 gmail com>
Date: Tue Oct 1 12:23:13 2013 +0530
boxpointer: Add condition checks for -arrow-rise:0px
This is done for properly drawing popup menu when arrow rise is 0 (in
case of background menu).
Normally, the menu with arrow rise set to 0 is drawn properly having
all four corners rounded. But when the source(click/arrowOrigin) is
near screen's edges, one of the corners (depending on source's position
and arrow alignment) is drawn right angled.
This happens because the rounded corners are skipped and right angled
arrow is drawn when arrow origin is close to the edges.(That's why when
arrow-rise is 0, it forms right angled corner).
So, a few condition checks are made to ensure that right angled corner
is not drawn.
https://bugzilla.gnome.org/show_bug.cgi?id=699608
js/ui/boxpointer.js | 66 ++++++++++++++++++++++++++------------------------
1 files changed, 34 insertions(+), 32 deletions(-)
---
diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js
index c8bae58..041884e 100644
--- a/js/ui/boxpointer.js
+++ b/js/ui/boxpointer.js
@@ -287,38 +287,40 @@ const BoxPointer = new Lang.Class({
let skipBottomLeft = false;
let skipBottomRight = false;
- switch (this._arrowSide) {
- case St.Side.TOP:
- if (this._arrowOrigin == x1)
- skipTopLeft = true;
- else if (this._arrowOrigin == x2)
- skipTopRight = true;
- break;
+ if (rise) {
+ switch (this._arrowSide) {
+ case St.Side.TOP:
+ if (this._arrowOrigin == x1)
+ skipTopLeft = true;
+ else if (this._arrowOrigin == x2)
+ skipTopRight = true;
+ break;
- case St.Side.RIGHT:
- if (this._arrowOrigin == y1)
- skipTopRight = true;
- else if (this._arrowOrigin == y2)
- skipBottomRight = true;
- break;
+ case St.Side.RIGHT:
+ if (this._arrowOrigin == y1)
+ skipTopRight = true;
+ else if (this._arrowOrigin == y2)
+ skipBottomRight = true;
+ break;
- case St.Side.BOTTOM:
- if (this._arrowOrigin == x1)
- skipBottomLeft = true;
- else if (this._arrowOrigin == x2)
- skipBottomRight = true;
- break;
+ case St.Side.BOTTOM:
+ if (this._arrowOrigin == x1)
+ skipBottomLeft = true;
+ else if (this._arrowOrigin == x2)
+ skipBottomRight = true;
+ break;
- case St.Side.LEFT:
- if (this._arrowOrigin == y1)
- skipTopLeft = true;
- else if (this._arrowOrigin == y2)
- skipBottomLeft = true;
- break;
+ case St.Side.LEFT:
+ if (this._arrowOrigin == y1)
+ skipTopLeft = true;
+ else if (this._arrowOrigin == y2)
+ skipBottomLeft = true;
+ break;
+ }
}
cr.moveTo(x1 + borderRadius, y1);
- if (this._arrowSide == St.Side.TOP) {
+ if (this._arrowSide == St.Side.TOP && rise) {
if (skipTopLeft) {
cr.moveTo(x1, y2 - borderRadius);
cr.lineTo(x1, y1 - rise);
@@ -340,7 +342,7 @@ const BoxPointer = new Lang.Class({
3*Math.PI/2, Math.PI*2);
}
- if (this._arrowSide == St.Side.RIGHT) {
+ if (this._arrowSide == St.Side.RIGHT && rise) {
if (skipTopRight) {
cr.lineTo(x2 + rise, y1);
cr.lineTo(x2 + rise, y1 + halfBase);
@@ -361,7 +363,7 @@ const BoxPointer = new Lang.Class({
0, Math.PI/2);
}
- if (this._arrowSide == St.Side.BOTTOM) {
+ if (this._arrowSide == St.Side.BOTTOM && rise) {
if (skipBottomLeft) {
cr.lineTo(x1 + halfBase, y2);
cr.lineTo(x1, y2 + rise);
@@ -382,7 +384,7 @@ const BoxPointer = new Lang.Class({
Math.PI/2, Math.PI);
}
- if (this._arrowSide == St.Side.LEFT) {
+ if (this._arrowSide == St.Side.LEFT && rise) {
if (skipTopLeft) {
cr.lineTo(x1, y1 + halfBase);
cr.lineTo(x1 - rise, y1);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]