<html>
    <head>
      <base href="https://bugzilla.gnome.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - popup windows don't get touch events"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=750845#c5">Comment # 5</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - popup windows don't get touch events"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=750845">bug 750845</a>
              from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=carlosg%40gnome.org" title="Carlos Garnacho <carlosg@gnome.org>"> <span class="fn">Carlos Garnacho</span></a>
</span></b>
        <pre>(In reply to Carlos Garnacho from <a href="show_bug.cgi?id=750845#c4">comment #4</a>)
<span class="quote">> In order to fix this, I'd say we have two paths:

> - Going further forward in the "pointer emulating" approach, which involves
> sending fake crossing events, selectively silencing the pointer if there is
> a pointer emulating touch around, fixing device queries to return
> coordinates/windows relative to the touch if there's one around, etc...

> - Admitting "pointer emulating" is not something that can be honored outside
> of X11, adding an extra "first touch" flag that gestures can listen to, and
> avoid setting the "pointer emulating" flag on Wayland, so touch-aware paths
> are used within GDK.

> I guess #2 is better for the longer term, it won't help much though for
> widgets that only have pointer events mask/handlers though.</span >

I gave a go to #2, and effectively we can't get too far with it nowadays. Even
if GTK+ itself can be made to work reasonably, the vast majority of
applications have done nothing wrt the adoption of GDK_TOUCH_MASK or
GtkGesture, which causes major regressions on touch all around.

I won't dare go that way until the adoption of GtkGesture is wider (or is the
canonical way to handle input), so I'm attaching a patch that goes along the
lines of the current one. It will enforce crossing events when the user
switches between real and emulated pointer events, and only if these lie on
different windows. This makes the balance of enter and leave events right on
the GDK side.

NB, The mutter patches from <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Only pointer serials are compared when popping up a window"
   href="show_bug.cgi?id=756296">bug #756296</a> are also needed so you can trigger the
popup through touch, in addition to being able to operate with it afterwards.</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>