1. 30 Sep, 2017 1 commit
  2. 20 Aug, 2017 1 commit
    • Martin Flöser's avatar
      Only send active window changes to X11 root window if the X11 window changed · 0455fa9e
      Martin Flöser authored
      Summary:
      So far KWin always updated the active window property even if the actual
      window id hasn't changed. E.g. if a Wayland window was active and another
      Wayland window gets activated the window id was and stays 0.
      
      Nevertheless KWin updated the property causing wakeups in X server and
      any application listening to property changes on the root window.
      
      Futhermore this situation is an information leak: we leak when a Wayland
      window gets activated to X11.
      
      To solve this problem RootInfo caches the active window id and only
      updates if it changes.
      
      Test Plan:
      Verified with xev -root that the active window does not get
      updated needlessly.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7096
      0455fa9e
  3. 25 Mar, 2014 1 commit
    • Martin Flöser's avatar
      [kwin] Remove support for _NET_WM_TAKE_ACTIVITY protocol · 970e8765
      Martin Flöser authored
      As can be seen in [1] the patches to KWin were in CVS HEAD before the
      protocol got standardized and it never got any adoption. It's neither in
      the NETWM spec, nor implemented in Qt4 nor in Qt5. KWin did not even add
      the protocol to the NET::Supported property.
      
      Thus it doesn't make much sense to keep a protocol which nobody speaks.
      
      Still the code around the protocol is kept and also the names are kept.
      Only difference is that Client::takeActivity got removed and the code
      moved to the only calling place in Workspace. Motivated by that change
      the enum defined in utils.h is moved into Workspace, it's turned into
      a proper QFlags class and used as a type in the method argument instead
      of a generic long.
      
      [1] https://mail.gnome.org/archives/wm-spec-list/2004-April/msg00013.html
      
      REVIEW: 116922
      970e8765
  4. 18 Mar, 2014 1 commit
  5. 17 Mar, 2014 3 commits
  6. 05 Feb, 2014 1 commit
  7. 18 Nov, 2013 2 commits
  8. 17 Sep, 2013 1 commit
  9. 01 May, 2013 1 commit
    • Martin Flöser's avatar
      Turn RootInfo into a KWIN_SINGLETON · b6681ddc
      Martin Flöser authored
      It's not a typical singleton as the ctor is not taking a Workspace* and
      needs addtional data to be passed to NETRootInfo.
      
      All the initialization code is moved to RootInfo::create() and the tear-
      down code is moved to RootInfo::destroyed(). This includes the support
      window which used to be a member of Workspace. It's only needed by
      RootInfo, so there is no need to have the ownership inside Workspace.
      
      Instead of using a QWidget we just create a normal window through xcb.
      It gets destroyed again in the tear-down code after the RootInfo got
      destroyed.
      
      REVIEW: 110238
      b6681ddc
  10. 30 Apr, 2013 1 commit
    • Martin Flöser's avatar
      Move RootInfo and WinInfo into an own header and impl file · db18c08d
      Martin Flöser authored
      Main motivation for this change is that it's unhandy to have the class
      definition in workspace.h and client.h while the implementation is in
      events.cpp although nothing in events.cpp uses it directly.
      
      By getting it out of workspace.h we get the header a little bit smaller
      which should improve compile time given that it's included almost
      everywhere.
      
      In events.cpp the enum usage is changed to NETWinInfo as that's the class
      where they are defined.
      
      RootInfo does no longer hold a workspace pointer. Where it's needed it
      uses the singleton accessor of Workspace.
      
      REVIEW: 110199
      db18c08d