mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
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
This commit is contained in:
parent
bd3f8de1e3
commit
3c69cb5677
1 changed files with 9 additions and 17 deletions
|
|
@ -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, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue