[gnome-shell/wip/carlosg/pad-osd-fixes: 3/4] padOsd: Keep label coordinates in image coordinates
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/pad-osd-fixes: 3/4] padOsd: Keep label coordinates in image coordinates
- Date: Fri, 29 May 2020 17:01:31 +0000 (UTC)
commit 4a78c95f1c76de06cd2dbb5ca8990e9fb1011138
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri May 29 16:59:46 2020 +0200
padOsd: Keep label coordinates in image coordinates
Apply the necessary transforms to map those coordinates to actor
positions in the allocate phase. This all fits since it's the place
where we do know the size the actor will have.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1290
js/ui/padOsd.js | 26 +++++++++-----------------
1 file changed, 9 insertions(+), 17 deletions(-)
---
diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js
index e6423462e7..85576b50e7 100644
--- a/js/ui/padOsd.js
+++ b/js/ui/padOsd.js
@@ -411,9 +411,6 @@ var PadDiagram = GObject.registerClass({
}
_updateDiagramScale() {
- if (this._handle == null)
- return;
-
[this._actorWidth, this._actorHeight] = this.get_size();
let dimensions = this._handle.get_dimensions();
let scaleX = this._actorWidth / dimensions.width;
@@ -426,6 +423,11 @@ var PadDiagram = GObject.registerClass({
let [, natWidth] = child.get_preferred_width(natHeight);
let childBox = new Clutter.ActorBox();
+ // I miss Cairo.Matrix
+ let dimensions = this._handle.get_dimensions();
+ x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
+ y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
+
if (direction == LTR) {
childBox.x1 = x;
childBox.x2 = x + natWidth;
@@ -441,6 +443,9 @@ var PadDiagram = GObject.registerClass({
vfunc_allocate(box) {
super.vfunc_allocate(box);
+ if (this._handle === null)
+ return;
+
this._updateDiagramScale();
for (let i = 0; i < this._labels.length; i++) {
@@ -476,17 +481,6 @@ var PadDiagram = GObject.registerClass({
cr.$dispose();
}
- _transformPoint(x, y) {
- if (this._handle == null || this._scale == null)
- return [x, y];
-
- // I miss Cairo.Matrix
- let dimensions = this._handle.get_dimensions();
- x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
- y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
- return [Math.round(x), Math.round(y)];
- }
-
_getItemLabelCoords(labelName, leaderName) {
if (this._handle == null)
return [false];
@@ -514,9 +508,7 @@ var PadDiagram = GObject.registerClass({
pos.y = this._imageHeight - pos.y;
}
- let [x, y] = this._transformPoint(pos.x, pos.y);
-
- return [true, x, y, direction];
+ return [true, pos.x, pos.y, direction];
}
_getButtonLabels(button) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]