<html>
    <head>
      <base href="https://bugzilla.gnome.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - wayland: Warn when an application tries to map popup incorrectly"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=770745#c7">Comment # 7</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - wayland: Warn when an application tries to map popup incorrectly"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=770745">bug 770745</a>
              from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=jadahl%40gmail.com" title="Jonas Ådahl <jadahl@gmail.com>"> <span class="fn">Jonas Ådahl</span></a>
</span></b>
        <pre>(In reply to Eric Williams from <a href="show_bug.cgi?id=770745#c6">comment #6</a>)
<span class="quote">> What protocol does this violate? And why only on Wayland and not X11? </span >

The xdg-shell protocol. It doesn't violate anything on X11 because X11 is more
of a "you're on your own" windowing system, while Wayland is much less so.

<span class="quote">> 
> I am dealing with a bug in SWT that is related to this fix -- if you could
> explain the logic here it would help understand the issue further.</span >

The warning should happen when you map a popup (i.e. a popup menu that grabs
input) above some other window that is not the top most popup or the toplevel.

For example, lets say you have a toplevel window (e.g. the "main" window of
your application) and an already open popup menu with the toplevel as a parent.
Then you open another popup menu before closing the first one, but the new
popup menu also has the toplevel window as the parent. In xdg-shell (the
Wayland protocol that provides methods for creating "windows", "menus" etc),
this is now allowed, since that would mean two menus would "grab" the same
input device at the same time, which makes no sense.

If you need to have multi level menus, what you need to do is to make sure that
each new child menu is mapped with the old top most child menu as parent. If
you are not using GtkMenu, you might be interested in <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Make gdk_window_move_to_rect() public"
   href="show_bug.cgi?id=791845">bug 791845</a>.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>