From c705b64d6747fdb95a66617e9f6f9eaaf706ecee Mon Sep 17 00:00:00 2001 From: Sardem FF7 Date: Wed, 2 Feb 2011 23:38:55 +0100 Subject: [PATCH] boxpointer: Use the right source center for the arrow pointing Point the arrow to the center of the sourceActor's content box, rather than its allocation, in case it has asymmetric padding (as the rightmost message tray summary item does). https://bugzilla.gnome.org/show_bug.cgi?id=641728 --- js/ui/boxpointer.js | 5 ++++- src/st/st-theme-node.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index ecdfeb548..206221b75 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -309,9 +309,12 @@ BoxPointer.prototype = { this.actor.show(); // Position correctly relative to the sourceActor + let sourceNode = sourceActor.get_theme_node(); + let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box()); let [sourceX, sourceY] = sourceActor.get_transformed_position(); let [sourceWidth, sourceHeight] = sourceActor.get_transformed_size(); - let [sourceCenterX, sourceCenterY] = [sourceX + (sourceWidth / 2), sourceY + (sourceHeight / 2)]; + let sourceCenterX = sourceX + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) / 2; + let sourceCenterY = sourceY + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) / 2; let [minWidth, minHeight, natWidth, natHeight] = this.actor.get_preferred_size(); // We also want to keep it onscreen, and separated from the diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c index 6fb579f09..140d5d12b 100644 --- a/src/st/st-theme-node.c +++ b/src/st/st-theme-node.c @@ -3184,7 +3184,7 @@ st_theme_node_adjust_preferred_height (StThemeNode *node, * st_theme_node_get_content_box: * @node: a #StThemeNode * @allocation: the box allocated to a #ClutterAlctor - * @content_box: computed box occupied by the actor's content + * @content_box: (out): computed box occupied by the actor's content * * Gets the box within an actor's allocation that contents the content * of an actor (excluding borders and padding). This is a convenience function