1. 28 Jan, 2020 1 commit
  2. 04 Mar, 2019 1 commit
    • Vlad Zahorodnii's avatar
      Resurrect show tooltips option · 82b3e2a6
      Vlad Zahorodnii authored
      In KDE 4, there was a very handy option to disable decoration tooltips.
      Decoration tooltips were lost in transition to KDE Plasma 5, and so
      the option.
      Given that decoration tooltips were brought back to KDE Plasma 5, "Show
      decoration button tooltips" option can be still useful for people(like me)
      who may wish to disable them because of personal preference.
      Reviewers: #kwin, broulik, mart
      Reviewed By: #kwin, mart
      Subscribers: ngraham, kwin
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D19152
  3. 20 Feb, 2019 1 commit
    • Vlad Zahorodnii's avatar
      Don't destroy DecorationRenderer in setup/finish compositing · 9a68cbd9
      Vlad Zahorodnii authored
      Currently, KWin/Wayland crashes when the compositor is reinitialized.
      The reason for that is ShellClient's DecorationRenderer gets destroyed
      when the scene is already gone, thus there is no current OpenGL context.
      Client works around that issue by destroying scene-specific DecorationRender
      in finishCompositing. Such a workaround could be applied to ShellClient
      as well, but it would make code more confusing because DecoratedClientImpl
      also tries to destroy DecorationRenderer.
      A better approach would be to notify DecoratedClientImpl that
      compositing is about to be finished, so it can destroy the decoration
      renderer when the scene is still alive. This not only fixes the
      previously mentioned issue in ShellClient, but also makes code a little
      bit tidier.
      Test Plan:
      Start Plasma on Wayland session, change any compositor settings (e.g.
      animation speed).
      Reviewers: #kwin, davidedmundson
      Reviewed By: #kwin, davidedmundson
      Subscribers: davidedmundson, kwin
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D18921
  4. 07 Oct, 2018 1 commit
    • David Edmundson's avatar
      [wayland] Use pending maximize mode in decoration updates · 29a49f86
      David Edmundson authored
      The change to make maximize mode asynchronous featured the comment
      >Things are a bit complex with borders. Technically we
      >shouldn't update them till we get a response, but we also need to have
      >the correct geometry of the full size window in our request. For now
      >they behave as before, updating when we request the change.
      We call setNoBorder when we request the geometry but decoratedClient
      also checks the maximise mode, in order to follow the scheme above we
      need this to operate on the requested state not current state.
      X is unaffected.
      This fixes the borders being restored correct after maximize/restore.
      Test Plan:
      Chose a theme with visible borders
      Maximised a window and back
      They restored
      Reviewers: #kwin, zzag
      Reviewed By: #kwin, zzag
      Subscribers: zzag, kwin
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D15991
  5. 10 Jun, 2018 1 commit
  6. 22 Apr, 2018 1 commit
    • Алексей Шилин's avatar
      Improve tooltips behavior · 5a14b6a6
      Алексей Шилин authored
      Window buttons tooltips used to appear on hover immediately. As
      the result, they mostly appeared when not needed e.g. when user
      was closing a window, or when the mouse pointer slightly touched
      a button while being moved elsewhere.
      This commit changes the tooltips behavior to WakeUp-FallAsleep
      approach used by Widgets.
      BUG: 392765
      FIXED-IN: 5.13
      Reviewers: #kwin, graesslin, broulik, #plasma
      Reviewed By: #kwin, graesslin, #plasma
      Subscribers: zzag, broulik, kwin, hein
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D12404
  7. 07 Feb, 2018 1 commit
    • Martin Flöser's avatar
      Make it possible to compile 5.12 branch with a kdecoration from master · 8245a74b
      Martin Flöser authored
      KDecoration has two new pure virtual methods. Due to that one cannot
      build KWin in the stable branch. This makes bug fixing rather cumbersome
      as one also needs to switch the kdecoration branch.
      This rather unusual change for a stable branch improves the
      compatibility by adding the new virtual methods without doing anything
      and without marking them as override, so that the code can compile with
      a kdecoration from 5.12 and a kdecoration from master.
      Test Plan: 5.12 branch compiles with kdecoration master branch
      Reviewers: #kwin, #plasma
      Subscribers: plasma-devel, kwin
      Tags: #plasma
      Differential Revision: https://phabricator.kde.org/D10296
  8. 18 Jan, 2018 1 commit
  9. 01 Sep, 2017 1 commit
  10. 29 Jul, 2017 1 commit
    • Martin Flöser's avatar
      Replace Workspace::slotWindowQuickTileFoo by a quickTileWindow with argument · 64da6c8d
      Martin Flöser authored
      Thanks to std::bind we don't need that many different slots to setup the
      global shortcut connections. Instead we can have one shared
      implementation which takes the argument and passes it to the window.
      To support std::bind arguments in kwinbindings the initShortcut method
      and dependencies are adjusted as well as a new macro is added.
      As I don't want to include abstract_client.h in workspace.h a new enum
      is created for the quick tiling flags used in Workspace. This caused a
      larger refactoring as the change to an enum class also caused quite some
      Test Plan: Affected test cases still pass
      Reviewers: #kwin, #plasma
      Subscribers: plasma-devel, kwin
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D6783
  11. 11 Jan, 2017 1 commit
    • Kai Uwe Broulik's avatar
      Restore global menu support · 93938d60
      Kai Uwe Broulik authored
      This brings back global menu support in KWin.
      The DBusMenu infrastructure is different that we just read the DBus service name and
      menu object path from the windows rather than passing around window IDs on DBus which
      won't work on Wayland.
      Differential Revision: https://phabricator.kde.org/D3089
  12. 10 Aug, 2016 1 commit
    • Martin Flöser's avatar
      Cache the clientSize in DecoratedClientImpl · eed4bf32
      Martin Flöser authored
      So far whenever the window geometry changed the widthChanged and
      heightChanged signals were emitted even if they did not change.
      E.g. while moving a window this resulted in the signal being emitted
      after every step, although from decoration point of view nothing
      The decoration performed costly tasks like re-layout the window buttons.
      With this change the client size is cached and the widthChanged signal
      is only emitted if the width actually changed. Same for heightChanged.
      This results in the decoration only re-layouting the buttons if the
      window is resized horizontally. All other geometry changes no longer
      result in a re-layout.
      Reviewers: #kwin, #plasma
      Subscribers: kwin
      Tags: #kwin
      Differential Revision: https://phabricator.kde.org/D2389
  13. 09 Jun, 2016 2 commits
  14. 02 Jun, 2016 1 commit
  15. 23 May, 2016 1 commit
  16. 17 May, 2016 1 commit
    • Martin Flöser's avatar
      Make Toplevel::window() no longer virtual and introduce ::windowId() · 24bdfc63
      Martin Flöser authored
      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
      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
  17. 11 May, 2016 1 commit
    • Martin Flöser's avatar
      Delay maximize button click to next event cycle · 6cd0d5a5
      Martin Flöser authored
      The delay to next cycle dance is needed for Aurorae. Maximizing a
      window can result in the decoration being destroyed, in which case
      QtQuick can trigger a crash.
      A test case is added to simulate the situation and ensure that maximize
      still works also after the change.
      BUG: 362772
      FIXED-IN: 5.6.5
      Reviewers: #plasma
      Subscribers: plasma-devel
      Projects: #plasma
      Differential Revision: https://phabricator.kde.org/D1586
  18. 18 Jan, 2016 1 commit
  19. 18 Dec, 2015 1 commit
  20. 20 Oct, 2015 1 commit
  21. 08 May, 2015 1 commit
  22. 31 Mar, 2015 1 commit
    • Mika Allan Rauhala's avatar
      Adapt to KDecoration API changes · 3389c756
      Mika Allan Rauhala authored
      Adapt to API changes introduced by b62e8888cd39301e00ad98dfe791fa66676408fb.
      It adds DecoratedClient::color(group, role) for getting colors that are
      not included in QPalette. Breeze used to read these colors from
      kdeglobals, breaking per window color schemes. KWin now handles reading
      these colors along with QPalette loading with DecorationPalette.
      REVIEW: 122883
  23. 08 Jan, 2015 1 commit
  24. 02 Dec, 2014 3 commits
  25. 11 Nov, 2014 2 commits
  26. 23 Oct, 2014 1 commit
  27. 21 Oct, 2014 1 commit
  28. 25 Jul, 2014 4 commits
    • Martin Flöser's avatar
    • Martin Flöser's avatar
      Implement borderingScreenEdges for the DecoratedClientImpl · a903fb2c
      Martin Flöser authored
      Uses the QuickTileMode of the Client to indicate which borders to
      remove. This could be extended to be in general when a window borders
      the screen edge and not just for quick tile mode.
    • Martin Flöser's avatar
      Destroy DecorationRenderer in setup/finish compositing · c8c0bace
      Martin Flöser authored
      So far the DecorationRenderer got destroyed and recreated after
      the signal compositing toggled was emitted. But that's too late for
      e.g. the OpenGL Textures to be destroyed. So lets trigger the destroy
      directly in setup/finish compositing. The new renderer will still be
      created after the compositing toggled is emitted - we don't want to
      have it recreated for the still active compositer type.
    • Martin Flöser's avatar
      Initial import of support for new KDecoration2 based decorations · 0030eb7f
      Martin Flöser authored
      NOTE: this is not working completely yet, lots of code is still ifdefed
      other parts are still broken.
      The main difference for the new decoration API is that it is neither
      QWidget nor QWindow based. It's just a QObject which processes input
      events and has a paint method to render the decoration. This means all
      the workarounds for the QWidget interception are removed. Also the paint
      redirector is removed. Instead each compositor has now its own renderer
      which can be optimized for the specific case. E.g. the OpenGL compositor
      renders to a scratch image which gets copied into the combined texture,
      the XRender compositor copies into the XPixmaps.
      Input events are also changed. The events are composed into QMouseEvents
      and passed through the decoration, which might accept them. If they are
      not accpted we assume that it's a press on the decoration area allowing
      us to resize/move the window. Input events are not completely working
      yet, e.g. wheel events are not yet processed and double click on deco
      is not yet working.
      Overall KDecoration2 is way more stateful and KWin core needs more
      adjustments for it. E.g. borders are allowed to be disabled at any time.