Skip to main content
Ivan Zajats
Inspiring
December 16, 2022
Open for Voting

Toggle the Blend if visibility in 1 click

  • December 16, 2022
  • 6 replies
  • 1519 views

If the Blend if is applied to a layer, we have to double click to open the Layer style window and turn off (uncheck) the Preview to see the layer without the effect.

Firstly, it's 3 clicks (at least).

Secondly, the window is too big and partially overlaps the image.

Thirdly, if we changed (and applied) the sliders values more than once, the unchecked Preview shows the previous state. So, if we want to see the layer without the effect, we have to move the sliders back to their default position.

 

My suggestion is to toggle the visibility of the effect in 1 click by clicking its icon.

 

 

6 replies

Ivan Zajats
Inspiring
December 17, 2022

My second comment was a separate topic, because it's another idea for another function.

Any adequate moderators here? why are my topics merged?

 

upd. I've created a separate topic again. Hopefully, the moderators will be more attentive to the community rules and wouldn't merge the topics with different requests.

Stephen Marsh
Community Expert
Community Expert
December 17, 2022

No, I'm not a mod. The topic was merged as I was writing the script to reset the blend if sliders. My reply failed as the topic no longer existed. I then had to go searching for it. When I was replying I didn't even know about the other idea/request to toggle visibility.

Ivan Zajats
Inspiring
December 17, 2022

@Stephen Marsh are you a moderator here? somebody has combined 2 my ideas in 1 topic, I don't like that... Although they are about the same filter, toggling on/off and deleting are different functions with different solutions.

There's a clear RULE: ONE request per thread.

Stephen Marsh
Community Expert
Community Expert
December 17, 2022
quote

That's not worth creating an action, it should be simplified by Adobe. IMHO 🙂


By @Ivan Zajats

 

I voted. I agree. It would be nice to have a native feature to reset the sliders. I am not disagreeing with the idea/request. That being said, I am pragmatic.

 

It is worth it if you don't want to wait for it to be possibly included in Photoshop (if ever?). It is worth it if you need to do this more than once and it is a PITA to do this manually.

 

Actions can only use F-Key shortcuts. Scripts allow more flexible keyboard shortcuts.

 

Stephen Marsh
Community Expert
Community Expert
December 17, 2022

Here it is in a script to reset the blend if sliders. Once installed, the script can have a custom keyboard shortcut applied.

 

/*
Reset Blend If Sliders.jsx
https://community.adobe.com/t5/photoshop-ecosystem-ideas/toggle-the-blend-if-visibility-in-1-click/idi-p/13427036
v1.0, 17th December 2022, Stephen Marsh
*/

#target photoshop

if (activeDocument.mode === DocumentMode.GRAYSCALE || activeDocument.mode === DocumentMode.DUOTONE) {
	resetGRAYblendif(0, 0, 255, 255, 0, 0, 255, 255);
} else if (activeDocument.mode === DocumentMode.RGB) {
	resetRGBblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
} else if (activeDocument.mode === DocumentMode.LAB) {
	resetLABblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
} else (activeDocument.mode === DocumentMode.CMYK) {
	resetCMYKblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
}


/* Functions */

function resetGRAYblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate) {
	function s2t(s) {
		return app.stringIDToTypeID(s);
	}
	var descriptor = new ActionDescriptor();
	var descriptor2 = new ActionDescriptor();
	var descriptor3 = new ActionDescriptor();
	var list = new ActionList();
	var reference = new ActionReference();
	var reference2 = new ActionReference();
	reference.putEnumerated( s2t( "layer" ), s2t( "ordinal" ), s2t( "targetEnum" ));
	descriptor.putReference( s2t( "null" ), reference );
	reference2.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "black" ));
	descriptor3.putReference( s2t( "channel" ), reference2 );
	descriptor3.putInteger( s2t( "srcBlackMin" ), srcBlackMin );
	descriptor3.putInteger( s2t( "srcBlackMax" ), srcBlackMax );
	descriptor3.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin );
	descriptor3.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax );
	descriptor3.putInteger( s2t( "destBlackMin" ), destBlackMin );
	descriptor3.putInteger( s2t( "destBlackMax" ), destBlackMax );
	descriptor3.putInteger( s2t( "destWhiteMin" ), destWhiteMin );
	descriptor3.putInteger( s2t( "desaturate" ), desaturate );
	list.putObject( s2t( "blendRange" ), descriptor3 );
	descriptor2.putList( s2t( "blendRange" ), list );
	descriptor.putObject( s2t( "to" ), s2t( "layer" ), descriptor2 );
	executeAction( s2t( "set" ), descriptor, DialogModes.NO );
}

function resetRGBblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3, srcBlackMin4, srcBlackMax4, srcWhiteMin4, srcWhiteMax4, destBlackMin4, destBlackMax4, destWhiteMin4, desaturate4) {
	function s2t(s) {
		return app.stringIDToTypeID(s);
	}
	var descriptor = new ActionDescriptor();
	var descriptor2 = new ActionDescriptor();
	var descriptor3 = new ActionDescriptor();
	var descriptor4 = new ActionDescriptor();
	var descriptor5 = new ActionDescriptor();
	var descriptor6 = new ActionDescriptor();
	var list = new ActionList();
	var reference = new ActionReference();
	var reference2 = new ActionReference();
	var reference3 = new ActionReference();
	var reference4 = new ActionReference();
	var reference5 = new ActionReference();
	reference.putEnumerated( s2t( "layer" ), s2t( "ordinal" ), s2t( "targetEnum" ));
	descriptor.putReference( s2t( "null" ), reference );
	reference2.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "gray" ));
	descriptor3.putReference( s2t( "channel" ), reference2 );
	descriptor3.putInteger( s2t( "srcBlackMin" ), srcBlackMin );
	descriptor3.putInteger( s2t( "srcBlackMax" ), srcBlackMax );
	descriptor3.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin );
	descriptor3.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax );
	descriptor3.putInteger( s2t( "destBlackMin" ), destBlackMin );
	descriptor3.putInteger( s2t( "destBlackMax" ), destBlackMax );
	descriptor3.putInteger( s2t( "destWhiteMin" ), destWhiteMin );
	descriptor3.putInteger( s2t( "desaturate" ), desaturate );
	list.putObject( s2t( "blendRange" ), descriptor3 );
	reference3.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "red" ));
	descriptor4.putReference( s2t( "channel" ), reference3 );
	descriptor4.putInteger( s2t( "srcBlackMin" ), srcBlackMin2 );
	descriptor4.putInteger( s2t( "srcBlackMax" ), srcBlackMax2 );
	descriptor4.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin2 );
	descriptor4.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax2 );
	descriptor4.putInteger( s2t( "destBlackMin" ), destBlackMin2 );
	descriptor4.putInteger( s2t( "destBlackMax" ), destBlackMax2 );
	descriptor4.putInteger( s2t( "destWhiteMin" ), destWhiteMin2 );
	descriptor4.putInteger( s2t( "desaturate" ), desaturate2 );
	list.putObject( s2t( "blendRange" ), descriptor4 );
	reference4.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "grain" ));
	descriptor5.putReference( s2t( "channel" ), reference4 );
	descriptor5.putInteger( s2t( "srcBlackMin" ), srcBlackMin3 );
	descriptor5.putInteger( s2t( "srcBlackMax" ), srcBlackMax3 );
	descriptor5.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin3 );
	descriptor5.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax3 );
	descriptor5.putInteger( s2t( "destBlackMin" ), destBlackMin3 );
	descriptor5.putInteger( s2t( "destBlackMax" ), destBlackMax3 );
	descriptor5.putInteger( s2t( "destWhiteMin" ), destWhiteMin3 );
	descriptor5.putInteger( s2t( "desaturate" ), desaturate3 );
	list.putObject( s2t( "blendRange" ), descriptor5 );
	reference5.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "blue" ));
	descriptor6.putReference( s2t( "channel" ), reference5 );
	descriptor6.putInteger( s2t( "srcBlackMin" ), srcBlackMin4 );
	descriptor6.putInteger( s2t( "srcBlackMax" ), srcBlackMax4 );
	descriptor6.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin4 );
	descriptor6.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax4 );
	descriptor6.putInteger( s2t( "destBlackMin" ), destBlackMin4 );
	descriptor6.putInteger( s2t( "destBlackMax" ), destBlackMax4 );
	descriptor6.putInteger( s2t( "destWhiteMin" ), destWhiteMin4 );
	descriptor6.putInteger( s2t( "desaturate" ), desaturate4 );
	list.putObject( s2t( "blendRange" ), descriptor6 );
	descriptor2.putList( s2t( "blendRange" ), list );
	descriptor.putObject( s2t( "to" ), s2t( "layer" ), descriptor2 );
	executeAction( s2t( "set" ), descriptor, DialogModes.NO );
}

function resetLABblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3) {
	function s2t(s) {
		return app.stringIDToTypeID(s);
	}
	var descriptor = new ActionDescriptor();
	var descriptor2 = new ActionDescriptor();
	var descriptor3 = new ActionDescriptor();
	var descriptor4 = new ActionDescriptor();
	var descriptor5 = new ActionDescriptor();
	var list = new ActionList();
	var reference = new ActionReference();
	var reference2 = new ActionReference();
	var reference3 = new ActionReference();
	var reference4 = new ActionReference();
	reference.putEnumerated( s2t( "layer" ), s2t( "ordinal" ), s2t( "targetEnum" ));
	descriptor.putReference( s2t( "null" ), reference );
	reference2.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "lightness" ));
	descriptor3.putReference( s2t( "channel" ), reference2 );
	descriptor3.putInteger( s2t( "srcBlackMin" ), srcBlackMin );
	descriptor3.putInteger( s2t( "srcBlackMax" ), srcBlackMax );
	descriptor3.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin );
	descriptor3.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax );
	descriptor3.putInteger( s2t( "destBlackMin" ), destBlackMin );
	descriptor3.putInteger( s2t( "destBlackMax" ), destBlackMax );
	descriptor3.putInteger( s2t( "destWhiteMin" ), destWhiteMin );
	descriptor3.putInteger( s2t( "desaturate" ), desaturate );
	list.putObject( s2t( "blendRange" ), descriptor3 );
	reference3.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "a" ));
	descriptor4.putReference( s2t( "channel" ), reference3 );
	descriptor4.putInteger( s2t( "srcBlackMin" ), srcBlackMin2 );
	descriptor4.putInteger( s2t( "srcBlackMax" ), srcBlackMax2 );
	descriptor4.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin2 );
	descriptor4.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax2 );
	descriptor4.putInteger( s2t( "destBlackMin" ), destBlackMin2 );
	descriptor4.putInteger( s2t( "destBlackMax" ), destBlackMax2 );
	descriptor4.putInteger( s2t( "destWhiteMin" ), destWhiteMin2 );
	descriptor4.putInteger( s2t( "desaturate" ), desaturate2 );
	list.putObject( s2t( "blendRange" ), descriptor4 );
	reference4.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "b" ));
	descriptor5.putReference( s2t( "channel" ), reference4 );
	descriptor5.putInteger( s2t( "srcBlackMin" ), srcBlackMin3 );
	descriptor5.putInteger( s2t( "srcBlackMax" ), srcBlackMax3 );
	descriptor5.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin3 );
	descriptor5.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax3 );
	descriptor5.putInteger( s2t( "destBlackMin" ), destBlackMin3 );
	descriptor5.putInteger( s2t( "destBlackMax" ), destBlackMax3 );
	descriptor5.putInteger( s2t( "destWhiteMin" ), destWhiteMin3 );
	descriptor5.putInteger( s2t( "desaturate" ), desaturate3 );
	list.putObject( s2t( "blendRange" ), descriptor5 );
	descriptor2.putList( s2t( "blendRange" ), list );
	descriptor.putObject( s2t( "to" ), s2t( "layer" ), descriptor2 );
	executeAction( s2t( "set" ), descriptor, DialogModes.NO );
}

function resetCMYKblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3, srcBlackMin4, srcBlackMax4, srcWhiteMin4, srcWhiteMax4, destBlackMin4, destBlackMax4, destWhiteMin4, desaturate4, srcBlackMin5, srcBlackMax5, srcWhiteMin5, srcWhiteMax5, destBlackMin5, destBlackMax5, destWhiteMin5, desaturate5) {
	var s2t = function (s) {
		return app.stringIDToTypeID(s);
	};
	var descriptor = new ActionDescriptor();
	var descriptor2 = new ActionDescriptor();
	var descriptor3 = new ActionDescriptor();
	var descriptor4 = new ActionDescriptor();
	var descriptor5 = new ActionDescriptor();
	var descriptor6 = new ActionDescriptor();
	var descriptor7 = new ActionDescriptor();
	var list = new ActionList();
	var reference = new ActionReference();
	var reference2 = new ActionReference();
	var reference3 = new ActionReference();
	var reference4 = new ActionReference();
	var reference5 = new ActionReference();
	var reference6 = new ActionReference();
	reference.putEnumerated( s2t( "layer" ), s2t( "ordinal" ), s2t( "targetEnum" ));
	descriptor.putReference( s2t( "null" ), reference );
	reference2.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "gray" ));
	descriptor3.putReference( s2t( "channel" ), reference2 );
	descriptor3.putInteger( s2t( "srcBlackMin" ), srcBlackMin );
	descriptor3.putInteger( s2t( "srcBlackMax" ), srcBlackMax );
	descriptor3.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin );
	descriptor3.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax );
	descriptor3.putInteger( s2t( "destBlackMin" ), destBlackMin );
	descriptor3.putInteger( s2t( "destBlackMax" ), destBlackMax );
	descriptor3.putInteger( s2t( "destWhiteMin" ), destWhiteMin );
	descriptor3.putInteger( s2t( "desaturate" ), desaturate );
	list.putObject( s2t( "blendRange" ), descriptor3 );
	reference3.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "cyan" ));
	descriptor4.putReference( s2t( "channel" ), reference3 );
	descriptor4.putInteger( s2t( "srcBlackMin" ), srcBlackMin2 );
	descriptor4.putInteger( s2t( "srcBlackMax" ), srcBlackMax2 );
	descriptor4.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin2 );
	descriptor4.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax2 );
	descriptor4.putInteger( s2t( "destBlackMin" ), destBlackMin2 );
	descriptor4.putInteger( s2t( "destBlackMax" ), destBlackMax2 );
	descriptor4.putInteger( s2t( "destWhiteMin" ), destWhiteMin2 );
	descriptor4.putInteger( s2t( "desaturate" ), desaturate2 );
	list.putObject( s2t( "blendRange" ), descriptor4 );
	reference4.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "magenta" ));
	descriptor5.putReference( s2t( "channel" ), reference4 );
	descriptor5.putInteger( s2t( "srcBlackMin" ), srcBlackMin3 );
	descriptor5.putInteger( s2t( "srcBlackMax" ), srcBlackMax3 );
	descriptor5.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin3 );
	descriptor5.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax3 );
	descriptor5.putInteger( s2t( "destBlackMin" ), destBlackMin3 );
	descriptor5.putInteger( s2t( "destBlackMax" ), destBlackMax3 );
	descriptor5.putInteger( s2t( "destWhiteMin" ), destWhiteMin3 );
	descriptor5.putInteger( s2t( "desaturate" ), desaturate3 );
	list.putObject( s2t( "blendRange" ), descriptor5 );
	reference5.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "yellow" ));
	descriptor6.putReference( s2t( "channel" ), reference5 );
	descriptor6.putInteger( s2t( "srcBlackMin" ), srcBlackMin4 );
	descriptor6.putInteger( s2t( "srcBlackMax" ), srcBlackMax4 );
	descriptor6.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin4 );
	descriptor6.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax4 );
	descriptor6.putInteger( s2t( "destBlackMin" ), destBlackMin4 );
	descriptor6.putInteger( s2t( "destBlackMax" ), destBlackMax4 );
	descriptor6.putInteger( s2t( "destWhiteMin" ), destWhiteMin4 );
	descriptor6.putInteger( s2t( "desaturate" ), desaturate4 );
	list.putObject( s2t( "blendRange" ), descriptor6 );
	reference6.putEnumerated( s2t( "channel" ), s2t( "channel" ), s2t( "black" ));
	descriptor7.putReference( s2t( "channel" ), reference6 );
	descriptor7.putInteger( s2t( "srcBlackMin" ), srcBlackMin5 );
	descriptor7.putInteger( s2t( "srcBlackMax" ), srcBlackMax5 );
	descriptor7.putInteger( s2t( "srcWhiteMin" ), srcWhiteMin5 );
	descriptor7.putInteger( s2t( "srcWhiteMax" ), srcWhiteMax5 );
	descriptor7.putInteger( s2t( "destBlackMin" ), destBlackMin5 );
	descriptor7.putInteger( s2t( "destBlackMax" ), destBlackMax5 );
	descriptor7.putInteger( s2t( "destWhiteMin" ), destWhiteMin5 );
	descriptor7.putInteger( s2t( "desaturate" ), desaturate5 );
	list.putObject( s2t( "blendRange" ), descriptor7 );
	descriptor2.putList( s2t( "blendRange" ), list );
	descriptor.putObject( s2t( "to" ), s2t( "layer" ), descriptor2 );
	executeAction( s2t( "set" ), descriptor, DialogModes.NO );
}

 

Ivan Zajats
Inspiring
December 16, 2022

Now we have to double click to open the Layer style window, move the sliders back to their default position, click OK. That's 4-5 clicks. I suggest deleting the effect in 1 click, but the Adobe should assign a hotkey for that.

 

For instance, Ctrl+click or Shift+click or Alt+click.

 

Yep, we can use the Clear layer style option (just in 2 clicks).

BUT if there are also some effects, it removes all of them.

 

Stephen Marsh
Community Expert
Community Expert
December 17, 2022

Voted!

 

Removing the sliders can be performed via an action.

 

This can also be scripted which may be more flexible... I'll give it a look!