<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 9, 2016 at 6:10 PM, Dima Ryazanov <span dir="ltr"><<a href="mailto:dima@gmail.com" target="_blank">dima@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Overall, I like the idea - it seems to solve the issues with raise/lower, etc.<div><br></div><div>I wonder, though, if removing the explicit move/resize/etc. requests makes it too restrictive. Suppose that, for whatever reason, the client wants to trigger a move or a resize using the right or middle button. Maybe it's a weirdly-shaped surface (like weston-flower) where all of it is draggable, or some other strange case. As far as I can tell, it's possible in v6, but not v7.</div><div><br></div></div></blockquote><div><br></div><div>If all of it is draggable, then it seems like the entire surface is a custom-shaped titlebar? It's a bit of a stretch. I played with weston-flower and looked at the code. I see what you mean, it is a bit of a custom thing.</div><div><br></div><div>Maybe we don't want to call this "titlebar" in the protocol. I don't know what else to call it though.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div></div><div>Another, more real use case: nautilus has a bunch of buttons in the titlebar. If you click them, they work as usual - but dragging a button triggers a shell move. That means, at the time the client receives a mouse down event, it doesn't know yet what it should do. Once it gets a mouse move, it sends a shell move request. Would that still be possible in v7?</div><div><br></div></div></blockquote><div><br></div><div>Ah, I was wondering about some of the details of the in-titlebar widgets in GNOME. I tried it out in Nautlus, and dragging on the buttons does indeed turn into move requests, in most cases. (The folder widget in Nautilus seems to not do this.) As another aside, the behavior does seem a bit surprising to me, since I am used to dragging away from a clicked button to cancel the click. (There are some inconsistencies there between GNOME Terminal and Nautilus.)</div><div><br></div><div>Anyway, if the client decides that a mouse down event was actually on the titlebar (because the mouse moved or whatever), then it can tell the compositor that the original mouse down event was a titlebar interaction and give that original seat and serial to the compositor. Then the compositor can implement its policy as before.</div><div><br></div><div>This is pretty much the "<a href="https://www.google.com/search?q=gui+event+chaining">gui event chaining</a>" model (called different things in different systems). If you don't know how to handle a particular event, you call out to the next handler. In this case, it's the client calling out to the compositor to handle a click on the titlebar where there isn't a client widget.</div><div><br></div><div><br></div><div>Adam</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Fri, Dec 9, 2016 at 2:20 PM, Adam Goode <span dir="ltr"><<a href="mailto:agoode@google.com" target="_blank">agoode@google.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">Hi,<br>
<br>
There were many different opinions and suggestions for how to allow<br>
for raise and lower to be bound to mouse clicks in titlebars. This<br>
is one possible way forward. It removes some of the semantic requests<br>
in xdg-shell and replaces it with a "interact_with_decoration"<br>
request that lets more window management logic move into the compositor.<br>
<br>
Comments welcome. I know this is a tricky issue, but I hope this<br>
is leading somewhat in the right direction.<br>
<br>
<br>
Adam<br>
<br>
<br>
<br>
Adam Goode (2):<br>
  xdg-shell: Introduce protocol v7<br>
  xdg-shell: Fold several client-side decoration requests into a generic<br>
    request<br>
<br>
 COPYING                                      |    1 +<br>
 unstable/xdg-shell/xdg-shell-<wbr>unstable-v7.xml | 1012 ++++++++++++++++++++++++++<br>
 2 files changed, 1013 insertions(+)<br>
 create mode 100644 unstable/xdg-shell/xdg-shell-u<wbr>nstable-v7.xml<br>
</div></div><span class="HOEnZb"><font color="#888888"><span class="m_-4809382356348926524HOEnZb"><font color="#888888"><br>
--<br>
2.8.0.rc3.226.g39d4020<br>
<br>
______________________________<wbr>_________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.freedeskto<wbr>p.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/wayland-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/wayland-devel</a><br>
</font></span></font></span></blockquote></div><br></div>
</blockquote></div><br></div></div>