From 163b0d9d54d9477792e1b7cdc64bbcb5d2897b4f Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Thu, 27 Mar 2025 14:22:14 -0400
Subject: fixed drawingfill regeneration when dropping an image on another to
 honor the style of the dropped image first, then the linked images, then the
 source image.

---
 src/client/views/smartdraw/DrawingFillHandler.tsx | 24 ++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

(limited to 'src/client/views/smartdraw/DrawingFillHandler.tsx')

diff --git a/src/client/views/smartdraw/DrawingFillHandler.tsx b/src/client/views/smartdraw/DrawingFillHandler.tsx
index 34cc4f0e1..328bf3487 100644
--- a/src/client/views/smartdraw/DrawingFillHandler.tsx
+++ b/src/client/views/smartdraw/DrawingFillHandler.tsx
@@ -16,17 +16,19 @@ export class DrawingFillHandler {
     static drawingToImage = async (drawing: Doc, strength: number, user_prompt: string, styleDoc?: Doc) => {
         const tags = StrListCast(drawing.$tags).map(tag => tag.slice(1));
         const styles = tags.filter(tag => FireflyStylePresets.has(tag));
-        const styleDocs = !Doc.Links(drawing).length
-            ? styleDoc && !tags.length
-                ? [styleDoc]
-                : []
-            : Doc.Links(drawing)
-                  .map(link => Doc.getOppositeAnchor(link, drawing))
-                  .map(anchor => anchor && DocCast(anchor.embedContainer));
-        const styleUrl = await DocumentView.GetDocImage(styleDocs.filter(doc => doc?.data instanceof ImageField).lastElement())?.then(styleImg => {
-            const hrefParts = ImageCast(styleImg).url.href.split('.');
-            return `${hrefParts.slice(0, -1).join('.')}_o.${hrefParts.lastElement()}`;
-        });
+        const styleDocs = [drawing].concat(
+            ...Doc.Links(drawing)
+                .map(link => Doc.getOppositeAnchor(link, drawing))
+                .map(anchor => DocCast(anchor?.annotationOn, anchor))
+                .map(anchor => anchor!),
+            ...(styleDoc ? [styleDoc] : [])
+        );
+        const styleUrl = tags.length
+            ? undefined
+            : await DocumentView.GetDocImage(styleDocs.filter(doc => doc?.data instanceof ImageField).lastElement())?.then(styleImg => {
+                  const hrefParts = ImageCast(styleImg).url.href.split('.');
+                  return `${hrefParts.slice(0, -1).join('.')}_o.${hrefParts.lastElement()}`;
+              });
         return DocumentView.GetDocImage(drawing)?.then(imageField => {
             if (imageField) {
                 const aspectRatio = (drawing.width as number) / (drawing.height as number);
-- 
cgit v1.2.3-70-g09d2

