Skip to content
  • Martin Flöser's avatar
    Make Toplevel::window() no longer virtual and introduce ::windowId() · 24bdfc63
    Martin Flöser authored
    Summary:
    Toplevel::window() is the actual X11 window. This makes it difficult
    to use as the generic identifier for both X11 and Wayland. The Wayland
    ShellClient already had a windowId() which is now added to Toplevel as
    a virtual method. On X11 (Toplevel default) it returns the window().
    
    The method window() now returns XCB_WINDOW_NONE for classes without
    the Toplevel::m_client, such as ShellClient. Thus it allows to properly
    check whether we are on Wayland or X11.
    
    The code is adjusted to use windowId where a generic id is needed and
    to properly check whether the window is valid before using it where
    a window() is used.
    
    This also fixes at least one additional unknown issue in
    Workspace::setActiveClient
    
    where the windowId of a Wayland client was passed to X11.
    
    Reviewers: #plasma
    
    Subscribers: plasma-devel
    
    Projects: #plasma
    
    Differential Revision: https://phabricator.kde.org/D1527
    24bdfc63