Photoshop: linked smart objects - can I automatically update children of children?

  • 1
  • Problem
  • Updated 1 year ago
  • (Edited)
Is there any way, that photoshop shows the edited smartobject, that was linked in a second linked smartobject in my masterfile?

example: i have a weblayout with a footer as a linked smartobject inside. inside this footer i have a linked logo as a smartobject. person b edits the logo. how can i see, that the logo is edited when i open my weblayout?

Thx! Sebo
Photo of Sebastian Bung

Sebastian Bung

  • 1 Post
  • 0 Reply Likes
  • frustrated

Posted 4 years ago

  • 1
Photo of Darya

Darya

  • 3 Posts
  • 0 Reply Likes
+1 It would be very useful !!!
Photo of Chris Cox

Chris Cox

  • 20280 Posts
  • 765 Reply Likes
What exactly are you asking for?
Photoshop has had linked smart objects for a couple versions now...
Photo of Darya

Darya

  • 3 Posts
  • 0 Reply Likes
Imagine main PSD file "A" with linked smart object "B". In "B" in it's turn is inserted linked smart object "C".  A(B(C)). Now, when I change C and then open A without opening B - I will not see changes in A.

For example -  I have dozens of button C in multiple files B (B1-B12)  of different screens of mobile app inserted in one main A.psd. And I decided to change colour of all this C buttons through the whole project. Now I need to change file C itself and then open all B1-B12 manually and update all modified content, and only after that open main A.psd to see changes.

If it possible to update changes in A without opening and updating B1-B12 in my example? Or may be a script to open and update all .psds in a certain folder?

I hope it wasn't too sophisticated explanation.
Photo of Chris Cox

Chris Cox

  • 20280 Posts
  • 764 Reply Likes
No, that is not possible, because Photoshop would have to open and change (invisibly) file B to make that happen.  And quietly changing your files without your permission or knowledge is not a good thing.

Smart Objects can be quite powerful. But you have to give explicit permission to update (change/alter) your files (which is when all the hard work of color conversion, transformation, filtering, etc. gets done).
Photo of Darya

Darya

  • 3 Posts
  • 0 Reply Likes
Ok... I suspected this.) Thanks for a quick answer.
Photo of Max Johnson

Max Johnson, Champion

  • 399 Posts
  • 171 Reply Likes
I don't have actual code handy, but if I ever get the chance it seems like a worthwhile script. Here's some *pseudocode* that could be a breakdown of how to get there. I know all of that is possible. I would recommend exclusively using action manager code or it will take a long time to loop through layers:


doc = activeDocument;

updatedIDs = [];


function updateAllTheSmartThings(){


allLayers = layers in doc;

for myLayer in allLayers

{

if( myLayer == SmartObject)

{

mySOID = myLayer's smart-object link hash... thingie that points to the embedded or linked file

if( mySOID is NOT in updatedIDs )

{

updateModifiedContent on this layer

updatedIDs.push ( )

open the smart object;

doc = activeDocument;

updateAllTheSmartThings();// recursion! So dangerous! So useful!

save activeDocument;

close activeDocument;

doc = activeDocument;

}

}

}


}


updateAllTheSmartThings();
(Edited)