<div dir="ltr">Hi folks, I opened an issue about this on github, but since there was no answer I'm hoping to get some attention and a possible answer here on the dev list.<div><br></div><div>In Pd, if you have graphical objects in a GOP subpatch that are out of the visible range, it's possible they get drawn, and I opened the issue to mention that [vradio], for instance, does that (here it is: <a href="https://github.com/pure-data/pure-data/issues/1053">https://github.com/pure-data/pure-data/issues/1053</a> ). I also mentioned n there how graphs inside a GOP subpatch can also do that. But I also have this issue with some GUI externals I take care of.</div><div><br></div><div>So, is there a way for an object to know if it is visible in the parent pacth so we do not tell it to get drawn?</div><div><br></div><div>What I've now just stumbled upon is our code for cyclone/scope~ - unlike [vradio], if the object is out of bounds in a GOP and I tell it to change dimensions, it won't get drawn, but trigger a tcl/tk error instead. Note that no error happens if the subpatch is opened or if it is inside bounds (or both of course). Anyway, this line is what triggers the error => <a href="https://github.com/porres/pd-cyclone/blob/cyclone_0.5-1/cyclone_objects/binaries/audio/scope.c#L495">https://github.com/porres/pd-cyclone/blob/cyclone_0.5-1/cyclone_objects/binaries/audio/scope.c#L495</a></div><div><br></div><div>The error gives me hope there's a way to check if it is possible to do it, and then not tell it to do it if it's not possible...</div><div><br></div><div>I used the "(glist_isvisible())"  function to check if it's visible. It doesn't work as a check because the object is in a GOP, so it'll say it is visible, even though the object itself is actually out of bounds. Now, in the case of scope~, it tries to delete the GUI by referring to the subpatch canvas, and I assume it doesn't work because that window isn't active/opened.</div><div><br></div><div>So if I change the lines below  </div><div><br></div><div><span class="gmail-pl-c1" style="box-sizing:border-box;color:rgb(0,92,197);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">sys_vgui</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre;background-color:rgb(255,251,221)">(</span><span class="gmail-pl-s" style="box-sizing:border-box;color:rgb(3,47,98);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre"><span class="gmail-pl-pds" style="box-sizing:border-box">"</span>.x<span class="gmail-pl-c1" style="box-sizing:border-box;color:rgb(0,92,197)">%lx</span>.c delete all<span class="gmail-pl-c1" style="box-sizing:border-box;color:rgb(0,92,197)">%lx</span><span class="gmail-pl-cce" style="box-sizing:border-box">\n</span><span class="gmail-pl-pds" style="box-sizing:border-box">"</span></span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre;background-color:rgb(255,251,221)">, x-></span><span class="gmail-pl-smi" style="box-sizing:border-box;color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">x_cv</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre;background-color:rgb(255,251,221)">, x);</span><br></div><div><span class="gmail-pl-c1" style="box-sizing:border-box;color:rgb(0,92,197);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">scope_draw</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">(x, x-></span><span class="gmail-pl-smi" style="box-sizing:border-box;color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">x_cv</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre">);</span><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre;background-color:rgb(255,251,221)"><br></span></div><div><br></div><div><div>To refer to the parent canvas (and not "x->x_cv"), I don't get an error, but I get the object getting redrawn  in the parent patch outside the graph, just like the issue I reported with [vradio].</div></div><div><br></div><div>Again, when bumping into this, I thought, since the object knows it can't delete and redraw (that is, since it gives an error), there could be a way to check it.</div><div><br></div><div>What do you say?</div><div><br></div><div>Thanks</div></div>