diff options
author | psoffritti <psoffritti@google.com> | 2022-08-10 15:11:03 +0100 |
---|---|---|
committer | Pierfrancesco Soffritti <psoffritti@google.com> | 2022-08-15 11:34:08 +0100 |
commit | f993cf0759106a9bbfbc8c6517879ce187a9b66e (patch) | |
tree | f7a9e38d1624e31fe32f7e98cb2bb900022ccbe6 | |
parent | 639a15d9184df5fb8f408be48f91991da4c15b8b (diff) | |
download | idea-f993cf0759106a9bbfbc8c6517879ce187a9b66e.tar.gz |
Replace transformedBounds with renderBounds
This makes the code easier to read, because the reader doesn't have
to understand what all the different type of bounds are.
Test: Existing
Bug: NA
Change-Id: I448b75128c7b1e3c51774f80f847dc525aca2ac9
16 files changed, 57 insertions, 40 deletions
diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ComposeViewNode.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ComposeViewNode.kt index 83751b9fb3c..4ee65bccf4a 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ComposeViewNode.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ComposeViewNode.kt @@ -19,6 +19,7 @@ import com.android.ide.common.rendering.api.ResourceReference import com.android.tools.idea.flags.StudioFlags import com.android.tools.idea.layoutinspector.tree.TreeSettings import layoutinspector.compose.inspection.LayoutInspectorComposeProtocol +import org.jetbrains.annotations.TestOnly import java.awt.Rectangle import java.awt.Shape import kotlin.math.absoluteValue @@ -104,7 +105,7 @@ class ComposeViewNode( qualifiedName: String, layout: ResourceReference?, layoutBounds: Rectangle, - transformedBounds: Shape?, + renderBounds: Shape, viewId: ResourceReference?, textValue: String, layoutFlags: Int, @@ -132,7 +133,13 @@ class ComposeViewNode( /** The hash of an anchor which can identify the composable after a recomposition. */ var anchorHash: Int -): ViewNode(drawId, qualifiedName, layout, layoutBounds, transformedBounds, viewId, textValue, layoutFlags) { +): ViewNode(drawId, qualifiedName, layout, layoutBounds, renderBounds, viewId, textValue, layoutFlags) { + @TestOnly + constructor(drawId: Long, qualifiedName: String, layout: ResourceReference?, layoutBounds: Rectangle, viewId: ResourceReference?, + textValue: String, layoutFlags: Int, recomposeCount: Int, recomposeSkips: Int, composeFilename: String, + composePackageHash: Int, composeOffset: Int, composeLineNumber: Int, composeFlags: Int, anchorHash: Int + ) : this(drawId, qualifiedName, layout, layoutBounds, layoutBounds, viewId, textValue, layoutFlags, recomposeCount, + recomposeSkips, composeFilename, composePackageHash, composeOffset, composeLineNumber, composeFlags, anchorHash) val recompositions = RecompositionData(recomposeCount, recomposeSkips) diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/DrawViewNode.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/DrawViewNode.kt index a094449e4ed..6e9804fb0d2 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/DrawViewNode.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/DrawViewNode.kt @@ -75,7 +75,7 @@ sealed class DrawViewNode(owner: ViewNode) { unfilteredOwner.findClosestUnfilteredNode(treeSettings) val bounds: Shape - get() = unfilteredOwner.transformedBounds + get() = unfilteredOwner.renderBounds // Children at the start of the child list that have canCollapse = true will be drawn as part of the parent rather than as separate nodes. abstract fun canCollapse(treeSettings: TreeSettings): Boolean diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/InspectorModel.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/InspectorModel.kt index 4f51ab11a44..f50412108f1 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/InspectorModel.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/InspectorModel.kt @@ -394,7 +394,7 @@ class InspectorModel(val project: Project, val scheduler: ScheduledExecutorServi oldNode.layoutBounds = newNode.layoutBounds oldNode.qualifiedName = newNode.qualifiedName oldNode.layout = newNode.layout - oldNode.setTransformedBounds(newNode.transformedBounds) + oldNode.renderBounds = newNode.renderBounds oldNode.layoutFlags = newNode.layoutFlags oldNode.parent = parent if (oldNode is ComposeViewNode && newNode is ComposeViewNode) { diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ViewNode.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ViewNode.kt index 13ee026788e..87627919224 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ViewNode.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/model/ViewNode.kt @@ -54,13 +54,22 @@ open class ViewNode( var qualifiedName: String, var layout: ResourceReference?, var layoutBounds: Rectangle, - private var renderBounds: Shape?, + var renderBounds: Shape, var viewId: ResourceReference?, var textValue: String, var layoutFlags: Int ) { + @TestOnly + constructor(drawId: Long, + qualifiedName: String, + layout: ResourceReference?, + layoutBounds: Rectangle, + viewId: ResourceReference?, + textValue: String, + layoutFlags: Int) : this(drawId, qualifiedName, layout, layoutBounds, layoutBounds, viewId, textValue, layoutFlags) + /** constructor for synthetic nodes */ - constructor(qualifiedName: String): this(-1, qualifiedName, null, Rectangle(), null, null, "", 0) + constructor(qualifiedName: String): this(-1, qualifiedName, null, Rectangle(), Rectangle(), null, "", 0) @Suppress("LeakingThis") val treeNode = TreeViewNode(this) @@ -98,13 +107,6 @@ open class ViewNode( /** Returns true if the node represents a call from a parent node with a single call and it itself is making a single call */ open fun isSingleCall(treeSettings: TreeSettings): Boolean = false - val transformedBounds: Shape - get() = renderBounds ?: layoutBounds - - fun setTransformedBounds(bounds: Shape?) { - renderBounds = bounds - } - /** * The rectangular bounds of this node's transformed bounds plus the transitive bounds of all children. * [calculateTransitiveBounds] must be called before accessing this, but that should be done automatically soon after creation. @@ -164,7 +166,7 @@ open class ViewNode( fun calculateTransitiveBounds() { readAccess { flatten().forEach { - it.transitiveBounds = it.children.map(ViewNode::transitiveBounds).plus(it.transformedBounds.bounds) + it.transitiveBounds = it.children.map(ViewNode::transitiveBounds).plus(it.renderBounds.bounds) .reduce { r1, r2 -> r1.union(r2) } } } diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/compose/ComposeViewNodeCreator.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/compose/ComposeViewNodeCreator.kt index 32b00c4e231..154a94ea8fc 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/compose/ComposeViewNodeCreator.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/compose/ComposeViewNodeCreator.kt @@ -91,12 +91,14 @@ class ComposeViewNodeCreator(result: GetComposablesResult) { throw InterruptedException() } + val layoutBounds = Rectangle(bounds.layout.x, bounds.layout.y, bounds.layout.w, bounds.layout.h) + val renderBounds = bounds.render.takeIf { it != Quad.getDefaultInstance() }?.toShape() ?: layoutBounds val node = ComposeViewNode( id, stringTable[name], null, - Rectangle(bounds.layout.x, bounds.layout.y, bounds.layout.w, bounds.layout.h), - bounds.render.takeIf { it != Quad.getDefaultInstance() }?.toShape(), + layoutBounds, + renderBounds, null, "", 0, diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewAndroidWindow.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewAndroidWindow.kt index 7e4512ca972..fc71223b433 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewAndroidWindow.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewAndroidWindow.kt @@ -111,7 +111,7 @@ class ViewAndroidWindow( val surfaceOriginX = root.layoutBounds.x - event.rootOffset.x val surfaceOriginY = root.layoutBounds.y - event.rootOffset.y val requests = allNodes.mapNotNull { - val bounds = it.transformedBounds.bounds.intersection(Rectangle(0, 0, Int.MAX_VALUE, Int.MAX_VALUE)) + val bounds = it.renderBounds.bounds.intersection(Rectangle(0, 0, Int.MAX_VALUE, Int.MAX_VALUE)) if (bounds.isEmpty) null else LayoutInspectorUtils.makeRequestedNodeInfo(it.drawId, bounds.x - surfaceOriginX, bounds.y - surfaceOriginY, bounds.width, bounds.height) diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewNodeCreator.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewNodeCreator.kt index 41615082728..29735ea131f 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewNodeCreator.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/appinspection/view/ViewNodeCreator.kt @@ -70,9 +70,9 @@ class ViewNodeCreator( val layoutResource = view.layoutResource.convert().createReference(strings) val textValue = strings[view.textValue] val layoutBounds = view.bounds.layout.let { Rectangle(it.x, it.y, it.w, it.h) } - val renderBounds = view.bounds.render.takeIf { it != LayoutInspectorViewProtocol.Quad.getDefaultInstance() } + val renderBounds = view.bounds.render.takeIf { it != LayoutInspectorViewProtocol.Quad.getDefaultInstance() }?.toShape() ?: layoutBounds - val node = ViewNode(view.id, qualifiedName, layoutResource, layoutBounds, renderBounds?.toShape(), resource, + val node = ViewNode(view.id, qualifiedName, layoutResource, layoutBounds, renderBounds, resource, textValue, view.layoutFlags) val children = view.childrenList.map { it.convert(shouldInterrupt, access) }.toMutableList() diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyTreeParser.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyTreeParser.kt index ebdf0742e32..371f6e3299d 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyTreeParser.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyTreeParser.kt @@ -77,7 +77,7 @@ object LegacyTreeParser { val (name, dataWithoutName) = data.split('@', limit = 2) val (hash, properties) = dataWithoutName.split(' ', limit = 2) val hashId = hash.toLongOrNull(16) ?: 0 - val view = ViewNode(hashId, name, null, Rectangle(), null, null, "", 0) + val view = ViewNode(hashId, name, null, Rectangle(), Rectangle(), null, "", 0) ViewNode.writeAccess { view.parent = parent parent?.children?.add(view) diff --git a/layout-inspector/src/com/android/tools/idea/layoutinspector/ui/DeviceViewPanelModel.kt b/layout-inspector/src/com/android/tools/idea/layoutinspector/ui/DeviceViewPanelModel.kt index 20ca9bdabac..ee50c6b0836 100644 --- a/layout-inspector/src/com/android/tools/idea/layoutinspector/ui/DeviceViewPanelModel.kt +++ b/layout-inspector/src/com/android/tools/idea/layoutinspector/ui/DeviceViewPanelModel.kt @@ -187,7 +187,7 @@ class DeviceViewPanelModel( return if (model.isVisible(node)) sequenceOf(node) else node.children.asSequence().flatMap { lowestVisible(it) } } - rootBounds = model.root.children.flatMap { lowestVisible(it) }.map { it.transformedBounds.bounds } + rootBounds = model.root.children.flatMap { lowestVisible(it) }.map { it.renderBounds.bounds } .reduceOrNull { acc, bounds -> acc.apply { add(bounds) } } ?: Rectangle() } @@ -325,7 +325,7 @@ class DeviceViewPanelModel( viewTransform.rotate(-angle) viewTransform.translate(-rootBounds.width / 2.0, -rootBounds.height / 2.0) - val rect = viewTransform.createTransformedShape(view.unfilteredOwner.transformedBounds) + val rect = viewTransform.createTransformedShape(view.unfilteredOwner.renderBounds) newHitRects.add(ViewDrawInfo(rect, viewTransform, view, hitLevel, isCollapsed)) } } diff --git a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/appinspection/AppInspectionTreeLoaderTest.kt b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/appinspection/AppInspectionTreeLoaderTest.kt index 7582baf4d62..db6a0013195 100644 --- a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/appinspection/AppInspectionTreeLoaderTest.kt +++ b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/appinspection/AppInspectionTreeLoaderTest.kt @@ -283,8 +283,8 @@ class AppInspectionTreeLoaderTest { assertThat(node4.qualifiedName).isEqualTo("com.example.MyViewClass2") assertThat((node4.drawChildren[0] as DrawViewImage).image).isEqualTo(image4) assertThat(node4.children).isEmpty() - assertThat((node4.transformedBounds as Polygon).xpoints).isEqualTo(intArrayOf(25, 75, 23, 78)) - assertThat((node4.transformedBounds as Polygon).ypoints).isEqualTo(intArrayOf(125, 127, 250, 253)) + assertThat((node4.renderBounds as Polygon).xpoints).isEqualTo(intArrayOf(25, 75, 23, 78)) + assertThat((node4.renderBounds as Polygon).ypoints).isEqualTo(intArrayOf(125, 127, 250, 253)) val node5 = tree.children[2] assertThat(node5.drawId).isEqualTo(5) diff --git a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyPropertiesProviderTest.kt b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyPropertiesProviderTest.kt index d03deb01653..c233d111988 100644 --- a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyPropertiesProviderTest.kt +++ b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/pipeline/legacy/LegacyPropertiesProviderTest.kt @@ -103,7 +103,7 @@ class LegacyPropertiesProviderTest { fun testExample() { val lookup = Mockito.mock(ViewNodeAndResourceLookup::class.java) whenever(lookup.resourceLookup).thenReturn(Mockito.mock(ResourceLookup::class.java)) - val root = ViewNode(1234, "TextView", null, Rectangle(), null, null, "", 0) + val root = ViewNode(1234, "TextView", null, Rectangle(), null, "", 0) val provider = LegacyPropertiesProvider() val propertyLoader = LegacyPropertiesProvider.Updater(lookup) propertyLoader.parseProperties(root, example) diff --git a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/properties/InspectorPropertyItemTest.kt b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/properties/InspectorPropertyItemTest.kt index 77c5735ff20..20fefdb71da 100644 --- a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/properties/InspectorPropertyItemTest.kt +++ b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/properties/InspectorPropertyItemTest.kt @@ -94,7 +94,7 @@ abstract class InspectorPropertyItemTestBase(protected val projectRule: AndroidP } private val fakeComposeNode: ComposeViewNode = - ComposeViewNode(-2L, "Text", null, Rectangle(20, 20, 600, 200), null, null, "", + ComposeViewNode(-2L, "Text", null, Rectangle(20, 20, 600, 200), null, "", 0, 0, 0, "Text.kt", composePackageHash = 1777, composeOffset = 420, composeLineNumber = 17, 0, 0) protected fun browseProperty(attrName: String, type: Type, source: ResourceReference?) { diff --git a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupResolverTest.kt b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupResolverTest.kt index b7f8d438d75..5e0ade3e5a0 100644 --- a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupResolverTest.kt +++ b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupResolverTest.kt @@ -305,13 +305,13 @@ class ResourceLookupResolverTest { val frameId = ResourceReference(exampleNS, ResourceType.ID, "frameLayout") val titleId = ResourceReference(exampleNS, ResourceType.ID, "title") val buttonId = ResourceReference(exampleNS, ResourceType.ID, "button") - val relativeLayout = ViewNode(1, "RelativeLayout", demo, Rectangle(0, 0, 300, 900), null, relativeId, "", 0) - val title = ViewNode(2, "TextView", demo, Rectangle(30, 60, 300, 100), null, titleId, "Hello Folks", 0) - val frameLayout = ViewNode(3, "RelativeLayout", demo, Rectangle(0, 200, 300, 700), null, frameId, "", 0) - val textView1 = ViewNode(4, "TextView", demo, Rectangle(400, 60, 300, 100), null, null, "TextView without an ID", 0) - val textView2 = ViewNode(5, "TextView", demo, Rectangle(0, 200, 300, 700), null, null, "TextView without an ID", 0) - val button = ViewNode(6, "Button", demo, Rectangle(30, 400, 300, 100), null, buttonId, "OK", 0) - val singleTextView = ViewNode(7, "TextView", designText, Rectangle(0, 0, 400, 50), null, null, "Tab3", 0) + val relativeLayout = ViewNode(1, "RelativeLayout", demo, Rectangle(0, 0, 300, 900), relativeId, "", 0) + val title = ViewNode(2, "TextView", demo, Rectangle(30, 60, 300, 100), titleId, "Hello Folks", 0) + val frameLayout = ViewNode(3, "RelativeLayout", demo, Rectangle(0, 200, 300, 700), frameId, "", 0) + val textView1 = ViewNode(4, "TextView", demo, Rectangle(400, 60, 300, 100), null, "TextView without an ID", 0) + val textView2 = ViewNode(5, "TextView", demo, Rectangle(0, 200, 300, 700), null, "TextView without an ID", 0) + val button = ViewNode(6, "Button", demo, Rectangle(30, 400, 300, 100), buttonId, "OK", 0) + val singleTextView = ViewNode(7, "TextView", designText, Rectangle(0, 0, 400, 50), null, "Tab3", 0) val context = object : ViewNodeAndResourceLookup { override val resourceLookup: ResourceLookup = mock() override val selection: ViewNode? = null diff --git a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupTest.kt b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupTest.kt index d8ffc10d665..25de67380d3 100644 --- a/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupTest.kt +++ b/layout-inspector/testSrc/com/android/tools/idea/layoutinspector/resource/ResourceLookupTest.kt @@ -77,7 +77,7 @@ class ResourceLookupTest { @Test fun testSingleColorIcon() { - val title = ViewNode(1, "TextView", null, Rectangle(30, 60, 300, 100), null, null, "Hello Folks", 0) + val title = ViewNode(1, "TextView", null, Rectangle(30, 60, 300, 100), null, "Hello Folks", 0) val context = object : ViewNodeAndResourceLookup { override val resourceLookup = ResourceLookup(projectRule.project) override fun get(id: Long): ViewNode = title diff --git a/layout-inspector/testingSrc/com/android/tools/idea/layoutinspector/TestLayoutInspectorModelBuilder.kt b/layout-inspector/testingSrc/com/android/tools/idea/layoutinspector/TestLayoutInspectorModelBuilder.kt index 068c08a2e1f..3388230112f 100644 --- a/layout-inspector/testingSrc/com/android/tools/idea/layoutinspector/TestLayoutInspectorModelBuilder.kt +++ b/layout-inspector/testingSrc/com/android/tools/idea/layoutinspector/TestLayoutInspectorModelBuilder.kt @@ -177,10 +177,16 @@ class InspectorViewDescriptor(private val drawId: Long, composeSkips = composeSkips).apply(body)) fun build(): ViewNode { - val result = - if (composePackageHash == 0) ViewNode(drawId, qualifiedName, layout, Rectangle(x, y, width, height), bounds, viewId, textValue, layoutFlags) - else ComposeViewNode(drawId, qualifiedName, null, Rectangle(x, y, width, height), null, null, textValue, 0, composeCount, composeSkips, - composeFilename, composePackageHash, composeOffset, composeLineNumber, composeFlags, 0) + val layoutBounds = Rectangle(x, y, width, height) + val renderBounds = bounds ?: layoutBounds + + val result = if (composePackageHash == 0) { + ViewNode(drawId, qualifiedName, layout, layoutBounds, renderBounds, viewId, textValue, layoutFlags) + } + else { + ComposeViewNode(drawId, qualifiedName, null, layoutBounds, renderBounds, null, textValue, 0, composeCount, composeSkips, + composeFilename, composePackageHash, composeOffset, composeLineNumber, composeFlags, 0) + } ViewNode.writeAccess { children.forEach { when (it) { diff --git a/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/fixture/inspector/DeviceViewPanelFixture.kt b/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/fixture/inspector/DeviceViewPanelFixture.kt index ca42e8bcbab..085bdb05eca 100644 --- a/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/fixture/inspector/DeviceViewPanelFixture.kt +++ b/uitest-framework/testSrc/com/android/tools/idea/tests/gui/framework/fixture/inspector/DeviceViewPanelFixture.kt @@ -169,7 +169,7 @@ class DeviceViewPanelFixture( val size = GuiQuery.get { scrollPane.viewport.view.size }!! size.width -= JBUI.scale(MARGIN) size.height -= JBUI.scale(MARGIN) - val rootBounds = GuiQuery.get { contentPanel.inspectorModel.root.transformedBounds.bounds }!! + val rootBounds = GuiQuery.get { contentPanel.inspectorModel.root.renderBounds.bounds }!! return Point(((pos.x - size.getWidth() / 2.0) / scaleFraction + rootBounds.getWidth() / 2.0).toInt(), ((pos.y - size.getHeight() / 2.0) / scaleFraction + rootBounds.getHeight() / 2.0).toInt()) } @@ -179,7 +179,7 @@ class DeviceViewPanelFixture( val scrollPane = scrollPane val contentPanel = contentPanel val size = GuiQuery.get { scrollPane.viewport.view.size }!! - val rootBounds = GuiQuery.get { contentPanel.inspectorModel.root.transformedBounds.bounds }!! + val rootBounds = GuiQuery.get { contentPanel.inspectorModel.root.renderBounds.bounds }!! return Point(((pos.x - rootBounds.width / 2) * scaleFraction + size.width.toDouble() / 2.0).toInt(), ((pos.y - rootBounds.height / 2) * scaleFraction + size.height.toDouble() / 2.0).toInt()) } |