From 73eaa90f73a22e70b4480883aba4f50bbe413b55 Mon Sep 17 00:00:00 2001 From: Dmitry Rodionov Date: Mon, 9 Oct 2023 23:01:36 +0400 Subject: [PATCH 1/2] Replace absoluteRect() calls with frame() It returns the same value for symbol masters and artboard-less symbol instances, as they are both page-level and thus only have absolute (aka page) coordinates to them --- .../Contents/Sketch/script.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js b/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js index 63eeea4..0de3d7f 100644 --- a/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js +++ b/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js @@ -106,14 +106,14 @@ var locate = function(context) { document.sketchObject.documentWindow().makeKeyAndOrderFront(null) document.sketchObject.setCurrentPage(symbolMaster.sketchObject.parentPage()) - document.sketchObject.contentDrawView().zoomToFitRect(symbolMaster.sketchObject.absoluteRect().rect()) + document.sketchObject.contentDrawView().zoomToFitRect(symbolMaster.sketchObject.frame().rect()) symbolMaster.sketchObject.select_byExtendingSelection(1,0) }) } else { document.sketchObject.currentPage().changeSelectionBySelectingLayers(nil) document.sketchObject.setCurrentPage(symbolMaster.sketchObject.parentPage()) - document.sketchObject.contentDrawView().zoomToFitRect(symbolMaster.sketchObject.absoluteRect().rect()) + document.sketchObject.contentDrawView().zoomToFitRect(symbolMaster.sketchObject.frame().rect()) symbolMaster.sketchObject.select_byExtendingSelection(1,0) } @@ -286,7 +286,7 @@ function createTarget(instance,targets,frame) { sender.layer().setBorderWidth(2) sender.layer().setBorderColor(NSColor.controlAccentColor().CGColor()) - var rect = (instance.parentArtboard()) ? instance.parentArtboard().rect() : instance.absoluteRect().rect() + var rect = (instance.parentArtboard()) ? instance.parentArtboard().rect() : instance.frame().rect() document.sketchObject.documentWindow().makeKeyAndOrderFront(null) document.sketchObject.setCurrentPage(instance.parentPage()) From 1f467ead2a8ae3207259468a8f31d0fd8bbcab1b Mon Sep 17 00:00:00 2001 From: Dmitry Rodionov Date: Mon, 9 Oct 2023 23:04:21 +0400 Subject: [PATCH 2/2] Fix createImage(): avoid absoluteInfluenceRect() and update MSExporter invocation --- .../Contents/Sketch/script.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js b/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js index 0de3d7f..50eee85 100644 --- a/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js +++ b/Symbol Instance Locator.sketchplugin/Contents/Sketch/script.js @@ -219,11 +219,11 @@ function createImage(instance,frame) { image.setWantsLayer(1) image.layer().setBackgroundColor(NSColor.controlBackgroundColor()) - var exportRequest = MSExportRequest.exportRequestsFromExportableLayer_inRect_useIDForName_( - instance, - instance.absoluteInfluenceRect(), - false - ).firstObject() + var exportRequest = MSExportRequest.exportRequestsFromLayerAncestry_(instance.ancestry()).firstObject() + var exporter = MSExporter.exporterForRequest_colorSpace_(exportRequest, null) + // This will make sure exportRequest.rect() is calculated correctly before we use it below + // See https://forum.sketch.com/t/absoluteinfluencerect-removed-in-sketch-96/1031/4 + _= exporter.trimmedBounds() exportRequest.format = 'png' @@ -232,9 +232,7 @@ function createImage(instance,frame) { exportRequest.scale = (scaleX < scaleY) ? scaleX : scaleY - var colorSpace = NSColorSpace.sRGBColorSpace() - var exporter = MSExporter.exporterForRequest_colorSpace_(exportRequest,colorSpace) - var imageRep = exporter.bitmapImageRep() + var imageRep = exporter.bitmapImageRepAndReturnError(null) var instanceImage = NSImage.alloc().init().autorelease() instanceImage.addRepresentation(imageRep)