• Vlad Zahorodnii's avatar
    Fix mouse pointer disappearing after using zoom effect on X11 · 43caf253
    Vlad Zahorodnii authored
    Currently, the Cursors::currentCursorChanged signal is wired to the
    updateCursor() function which calls xcb_xfixes_hide_cursor() or
    xcb_xfixes_show_cursor() depending if the cursor is hidden. However, the
    currentCursorChanged signal can be emitted if the cursor changed, e.g. a
    new pixmap attached, or its visibility status changes.
    
    The zoom effect hides the pointer, but when user hovers ui elements, it
    will most likely change and result in more than one xcb_xfixes_hide_cursor()
    calls.
    
    It appears like xcb_xfixes_hide_cursor() is implemented as a reference
    counter, i.e. if xcb_xfixes_hide_cursor() is called two times, then you
    must call xcb_xfixes_show_cursor() two times as well.
    
    This change adds a dedicated signal to indicate whether the cursor is
    hidden to avoid calling xcb_xfixes_hide_cursor() multiple times while
    the screen is scaled.
    
    BUG: 448537
    
    
    (cherry picked from commit 0ad239a9)
    43caf253