Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-65680

Fast popup switching results in protocol error

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.11.1
    • 5.9.4, 5.10.1, 5.11.0 Beta 1, 5.11.0
    • QPA: Wayland
    • gtk3-3.22.26-1.fc27.x86_64
      gnome-shell-3.26.2-3.fc27.x86_64
      mutter-3.26.2-2.fc27.x86_64

      weston-3.0.0-1.fc27.x86_64

      qt5-qtwayland-5.10.0-1.fc28.x86_64
      kcalc-17.08.1-1.fc27.x86_64

    Description

      Happens in both Mutter and Weston.

      Open any application with a menubar (KCalc in this case). Start clicking multiple buttons in the menubar rapidly. The easiest way is to put your mouse cursor on the boundary of two buttons and start clicking - sometimes you'll click the button on the left, then on the right.
      In a few seconds (in Weston) you'll get

       zxdg_shell_v6@20: error 2: xdg_popup was not created on the topmost popup

      In Mutter with WAYLAND_DEBUG=1, that is

       wl_display@1.error(zxdg_shell_v6@24, 2, "parent not top most surface") 

       The problem here is QWaylandWindow::setVisible(true) on the new popup is called before QWaylandWindow::setVisible(false) on the old one has returned, hence QWaylandWindow::reset() has not been called yet. This makes the strict compositors think the previous popup is the topmost window which means that's the window that should be the parent of the new one.
      I tried to write a patch but I was unable to find a stable solution... yet.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              johanhelsing Johan Helsing
              Bizon Martin Bříza
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes