<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 10, 2017 at 2:49 PM, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
how does this work when windows are reparented? Does reparenting force<br>
them to go through the unrealize/realize steps again?<br></blockquote><div><br></div><div>I assumed this because it is described this way for the XLib function XReparentWindow:</div><div><a href="https://linux.die.net/man/3/xreparentwindow" target="_blank">https://linux.die.net/man/3/<wbr>xreparentwindow</a><br></div><div><br></div><div>Thanks Adam for confirming this.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Assuming the theory is sound, how about you kept the old names and<br>
semantics of xwl_window_get() and xwl_window_from_window() but just<br>
used the stored private in xwl_window_from_window()? You would need to<br>
have a xwl_window_find_from_window() for the single use in<br>
xwl_realize_window(), but I think that would allow you to put the test<br>
<br>
        if (win != xwl_window->window)<br>
<br>
in xwl_window_get() rather than open-coding it in the users. I believe<br>
keeping the semantics would be less surprising to the reader,<br>
especially if they know the old code.<br></blockquote><div> </div><div>It's a good idea to not open-code the condition for the users. I would prefer though to risk the short-term confusion for the users, because otherwise in the long term the naming is ambiguous:<br></div><div><br></div><div>A Window has exactly one xwl_window associated (or none): The one in its private field. Calling xwl_window_get() therefore is the natural way to receive this one xwl_window. The function naming becomes really confusing when we call xwl_window_from_window() inside xwl_window_get() to receive the private field and afterwards do the test or when we call xwl_window_from_window() in xwl_window_find_from_window() on the Window's parent Window.</div><div><br></div><div>How do you like this approach:</div><div>* xwl_window_get(WindowPtr) returns the private field<br>* New function xwl_window_own(WindowPtr win) calls xwl_window_get and forwards the xwl_window if (win == xwl_window->window), otherwise NULL. Maybe there is a better name than xwl_window_own though for this function?</div><div>* xwl_window_from_window() is renamed to xwl_window_find() and as it's now will only be called in xwl_realize_window.</div><div><br></div><div>But if you prefer the other naming, it's also fine with me.</div><div><br></div><div>Cheers,</div><div>Roman</div></div></div></div>