<html>
    <head>
      <base href="https://bugzilla.gnome.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GtkSourceView completion popup window not shown, no grabbed seat found"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=771694#c23">Comment # 23</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GtkSourceView completion popup window not shown, no grabbed seat found"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=771694">bug 771694</a>
              from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=ofourdan%40redhat.com" title="Olivier Fourdan <ofourdan@redhat.com>"> <span class="fn">Olivier Fourdan</span></a>
</span></b>
        <pre>(In reply to Marinus Schraal from <a href="show_bug.cgi?id=771694#c22">comment #22</a>)
<span class="quote">> Created <span class=""><a href="attachment.cgi?id=337998" name="attach_337998" title="focus break log">attachment 337998</a> <a href="attachment.cgi?id=337998&action=edit" title="focus break log">[details]</a></span>
> focus break log

> With this patch the popup indeed show in wayland, however I've been getting
> focus issues. In some circumstances it seems focus on the application window
> is completely lost.

> If I type fast and don't use the completion suggestions, sometimes the popup
> is dismissed (b/c there are no suggestions anymore?) and the main
> application (builder) loses focus completely. This is more game breaking
> than having no popup.

> Attached a wayland debug log where this behaviour is observed once (and I
> quit the application after). I can't pinpoint the exact occurrence however.</span >

Yes, I can reproduce that, but this looks like an issue in mutter focus
management rather than a bug in gtk+ xdg_popup code.

Using MUTTER_VERBOSE shows the issue:

  STARTUP: Applying startup props to W5 id "(none)"
  STARTUP: Window W5 has _NET_WM_USER_TIME of 76886753
  PLACEMENT: Putting window W5 on same workspace as parent W1 (lt-test-co)
  WINDOW_STATE: Putting W5 in the move_resize queue
  WINDOW_STATE: Putting W5 in the calc_showing queue
  PLACEMENT: Putting window W5 on active workspace
  STACK: Adding window W5 to the stack
  STACK: Window W5 has stack_position initialized to 1
  STACK: Syncing window stack to server
  STACK: Adding 1 windows to sorted list
  STACK: Recomputing layers
  STACK: Window W5 on layer 7 type = 9 has_focus = 0
  STACK: Window W5 moved from layer 8 to 7
  STACK: Window W1 (lt-test-co) on layer 2 type = 0 has_focus = 1
  STACK: Reapplying constraints
  STACK: Constraining W5 above W1 (lt-test-co) due to transiency
  STACK: W5 above at 1 > W1 (lt-test-co) below at 0
  STACK: Sorting stack list
  STACK: Bottom to top: 2:0 - W1 (lt-test-co) 7:1 - W5 
  STACK: Restacking 2 windows

(W5 is the popup, W1 the test-completion window from gtksourceview)

  [...]

  STARTUP: COMPARISON (continued):
    focus_window             : W1 (lt-test-co)
    fw->net_wm_user_time_set : 1
    fw->net_wm_user_time     : 76886786
  STARTUP: window W5 focus prevented by other activity; 76886753 < 76886786
  WINDOW_STATE: Window W5 does not focus on map, and does not place on top on
map.
  STARTUP: The focus window W1 (lt-test-co) is an ancestor of the newly mapped
window W5 which isn't being focused.  Unfocusing the ancestor.

This is where things start to go wrong ^^^^

  FOCUS: W1 (lt-test-co) is now the previous focus window due to being focused
out or unmapped
  VERBOSE: Grabbing unfocused window buttons for W1 (lt-test-co)
  FOCUS: * Focus --> NULL with serial 500
  STACK: Syncing window stack to server
  STACK: Bottom to top: 2:0 - W1 (lt-test-co) 7:1 - W5 
  STACK: Restacking 2 windows
  STACK: MetaStackTracker state
    xserver_serial: 339
    verified_stack:   0x200013  0x200001  0x200002  0x200003  0x200004 
0x200005  0x200006  0x200007  0x200008  0x20000d  0x20000e (mutter)  0x200012 
0x200016  0x100000001 (lt-test-co)  0x100000005
  unverified_predictions: []
  FOCUS: Focus out event received on  0x270 (root window) mode NotifyNormal
detail NotifyAncestor serial 500
  FOCUS: Ignoring focus event generated by a grab or other weirdness
  mutter-Message: xdg_popup_destructor
  mutter-Message: xdg_surface_destroy
  mutter-Message: xdg_surface_destructor
  mutter-Message: xdg_popup_role_finalize
  mutter-Message: xdg_surface_role_finalize
  VERBOSE: Unmanaging W5
  FOCUS: Unmanaging window W5 which doesn't currently have focus

And from now on, the test-completion window has lost focus...

So, IMHO, we should clone this bug for mutter and continue from there.</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>