Via a button I n a dialog box, I invoke the colorPicker. I want to have the button background recoloured to match the selected colour (a la the foreground/background colours tool icon in PS).
Over on the InDesign Scipting forum there is a very old threat (C2009, IRRC) about colouring buttons (background and text). Dirk Beker posted the following code:
function customDraw()
{ with( this ) {
graphics.drawOSControl();
graphics.rectPath(0,0,size[0],size[1]);
graphics.fillPath(fillBrush);
if( text ) graphics.drawString(text,textPen,(size[0]-graphics.measureString (text,graphics.font,size[0])[0])/2,3,graphics.font);
}}
var dlg = new Window('dialog', 'Test');
var pnl = dlg.add('panel', undefined, 'My Panel');
var btn = pnl.add('button', undefined, 'My Button', {name:'ok'});
var btn2 = pnl.add('iconbutton', undefined, undefined, {name:'orange', style: 'toolbutton'});
btn2.size = [200,20];
btn2.fillBrush = btn2.graphics.newBrush( btn2.graphics.BrushType.SOLID_COLOR, [1, 0.7, 0, 0.5] );
btn2.text = "Hello, Harbs";
btn2.textPen = btn2.graphics.newPen (btn2.graphics.PenType.SOLID_COLOR,[0,0.5,0,1], 1);
btn2.onDraw = customDraw;
dlg.show();
This seems to work in PS CC2019 (under Win10 and High Sierra) but sometimes the background colour isn't updated and sometimes there is a (variable) delay before the colour changes. I can (almost) live with that.
What puzzles me is why ' customDraw() ' appears to be invoked on mouseover - every time. There is no scriptListener running, and nothing set anywhere - that I can determine - which might explain this behaviour.
Any thoughts, please?