<div dir="auto">Check out the video I just posted. I think it solves it albeit in a completely different way. ;-)<br><br><div data-smartmail="gmail_signature">Best,<br><br>Ico<br><br>-- <br>Ivica Ico Bukvic, D.M.A.<br>Director, Creativity + Innovation<br>Institute for Creativity, Arts, and Technology<br><br>Virginia Tech<br>Creative Technologies in Music<br>School of Performing Arts – 0141<br>Blacksburg, VA 24061<br>(540) 231-6139<br><a href="mailto:ico@vt.edu">ico@vt.edu</a><br><br><a href="http://www.icat.vt.edu">www.icat.vt.edu</a><br><a href="http://www.performingarts.vt.edu">www.performingarts.vt.edu</a><br><a href="http://l2ork.icat.vt.edu">l2ork.icat.vt.edu</a><br><a href="http://ico.bukvic.net">ico.bukvic.net</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 12, 2020, 01:19 Jonathan Wilkes <<a href="mailto:jon.w.wilkes@gmail.com">jon.w.wilkes@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">One addition-- I've tried whittling pd_canvas.html down to nothing but<br>
a single SVG, to no avail.<br>
<br>
-Jonathan<br>
<br>
On Fri, Jun 12, 2020 at 1:15 AM Jonathan Wilkes <<a href="mailto:jon.w.wilkes@gmail.com" target="_blank" rel="noreferrer">jon.w.wilkes@gmail.com</a>> wrote:<br>
><br>
> Hi list,<br>
><br>
> If anyone here can wrest the following bug from the guts of our<br>
> codebase I'll immediately add you as a maintainer of Purr Data.<br>
> (Careful, though-- there's some Tom Sawyer style mischief going on in<br>
> that offer... :)<br>
><br>
> You start your quest armed with three snippets:<br>
><br>
> 1. Trusty menu:<br>
><br>
> // Create an empty menubar<br>
> var menu = new nw.Menu({type: 'menubar'});<br>
><br>
> // Create a submenu as the 2nd level menu<br>
> var submenu = new nw.Menu();<br>
> submenu.append(new nw.MenuItem({ label: 'Item A' }));<br>
> submenu.append(new nw.MenuItem({ label: 'Item B' }));<br>
><br>
> // Create and append the 1st level menu to the menubar<br>
> menu.append(new nw.MenuItem({<br>
>   label: 'First Menu',<br>
>   submenu: submenu<br>
> }));<br>
><br>
> // Assign it to `window.menu` to get the menu displayed<br>
> nw.Window.get().menu = menu;<br>
><br>
> End trusty menu<br>
><br>
> 2. SVG-spawning potion<br>
><br>
> var w = document.documentElement.clientWidth;<br>
> var h = document.documentElement.clientHeight;<br>
> document.body.style.padding = "0px";<br>
> document.body.style.margin = "0px";<br>
> var svg_string = ['<svg width="', w, '" height="', h, '"><rect<br>
> width="20" height="20"/></svg>'].join("");<br>
> document.body.innerHTML = svg_string;<br>
><br>
> End SVG-spawning potion<br>
><br>
> 3. Lightning bolt<br>
><br>
> document.body.innerHTML = '';<br>
><br>
> End lightning bolt<br>
><br>
> Ok, let's go:<br>
><br>
> 1. Run nw directly to get the demo app (~/purr-data/pd/nw/nw/nw)<br>
> 2. Right click and choose "Inspect"<br>
> 3. Click the "Console" tab<br>
> 4. Paste the lightning bolt to erase the demo<br>
> 5. Paste your SVG-spawning potion in the console and hit <Enter><br>
><br>
> Notice that the SVG fills the entire viewport of the document<br>
> *without* creating scrollbars. You can click the "Elements" tab and<br>
> make the SVG height/width one pixel larger and that will trigger the<br>
> scrollbars. Change them back and boom-- no scrollbars anymore. Simple,<br>
> deterministic behavior which works exactly the same in any version of<br>
> Chromium.<br>
><br>
> Next:<br>
><br>
> 1. Run nw directly to get the demo app<br>
> 2. Right click and choose "Inspect"<br>
> 3. Click the "Console" tab<br>
> 4. Paste the lightning bolt to erase the demo<br>
> 5. Paste the trusty menu<br>
> 6. Paste your SVG-spawning potion in the console<br>
><br>
> Again-- notice that the viewport is is covered completely by the SVG<br>
> without spawning any scrollbars. Again you can change width/height<br>
> values to watch scrollbars appear/disappear.<br>
><br>
> Okay, now some fun:<br>
><br>
> 1. Run nw directly to get the demo app<br>
> 2. Right click and choose "Inspect"<br>
> 3. Click the "Console" tab<br>
> 4. Paste the lightning bolt to erase the demo<br>
> 5. Paste your SVG-spawning potion in the console<br>
> 6. Paste the trusty menu<br>
><br>
> Ah, now we get some scrollbars because the menu takes up some of our<br>
> viewport and pushes the SVG down.<br>
><br>
> But fear not-- we can go to the console and do this to get the new<br>
> height of the viewport minus that menubar:<br>
><br>
> window.innerHeight;<br>
><br>
> Now type that value into the height for the SVG in the "Elements" tab<br>
> and poof-- scrollbars disappear. Predictable, consistent behavior.<br>
><br>
> And now, Excalibur:<br>
><br>
> 1. Run Purr Data<br>
> 2. Open a new Patch<br>
> 3. Click "Help" then "Show DevTools" and click the "Console" tab<br>
> 4. Paste the lightning bolt<br>
> 5. Paste you SVG-spawning potion<br>
><br>
> Oops, now we have scrollbars.<br>
><br>
> Same GUI toolkit, but different behavior here.<br>
><br>
> What is responsible for the difference, and how can we get the<br>
> predictable, consistent behavior we witnessed when running the nw<br>
> demo?<br>
><br>
> Btw-- I'm on Debian Stretch on an older version of nw.js. But I've<br>
> tested the consistent, predictable behavior in a Chromium browser<br>
> and it works. Browsers obviously know how to fill a cavity with<br>
> content in 2020.<br>
><br>
> That means that somewhere in our codebase we are setting<br>
> some state that causes the window to shift the content down,<br>
> but I don't know what it could be.<br>
><br>
> Good luck on your quest,<br>
> Jonathan<br>
_______________________________________________<br>
L2Ork-dev mailing list<br>
<a href="mailto:L2Ork-dev@disis.music.vt.edu" target="_blank" rel="noreferrer">L2Ork-dev@disis.music.vt.edu</a><br>
<a href="https://disis.music.vt.edu/listinfo/l2ork-dev" rel="noreferrer noreferrer" target="_blank">https://disis.music.vt.edu/listinfo/l2ork-dev</a></blockquote></div>