- 02 Apr, 2020 1 commit
-
-
Aleix Pol Gonzalez authored
Summary: As is KWin only had 1 Cursor which was a singleton. This made it impossible for us to properly implement the tablet (as in drawing tablets) support and show where we're drawing. This patch makes it possible to have different Cursors in KWin, it makes all the current code still follow the mouse but the tablet can still render a cursor. Test Plan: Tests pass, been using it and works as well as before but with beautiful tablet cursors. Reviewers: #kwin, cblack, davidedmundson Reviewed By: #kwin, cblack, davidedmundson Subscribers: davidedmundson, cblack, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D28155
-
- 01 Apr, 2020 1 commit
-
-
Aleix Pol Gonzalez authored
Summary: We build some objects several times which makes it uncomfortable to develop KWin since every time we modify something a lot of things get rebuilt. This should help a bit although it doesn't solve all the problems. Test Plan: Builds, tests pass Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: davidedmundson, zzag, anthonyfieroni, iasensio, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D28445
-
- 26 Mar, 2020 1 commit
-
-
Aleix Pol Gonzalez authored
-
- 18 Mar, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: xdg-shell stable has been around for quite a while. A quick analysis showed that many distros ship GTK and Qt that support both xdg-shell v6 and stable. Therefore, we can drop support for legacy v6 protocol. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: apol, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D28118
-
- 17 Mar, 2020 1 commit
-
-
Yuri Chornoivan authored
Summary: inital -> initial Test Plan: none Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D28092
-
- 14 Mar, 2020 1 commit
-
-
Yuri Chornoivan authored
Summary: The code contains duplicate includes. Test Plan: Open the files from the patch Reviewers: #kwin, apol Reviewed By: apol Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D28048
-
- 04 Mar, 2020 2 commits
-
-
Niccolò Venerandi authored
Summary: See https://invent.kde.org/websites/hig-kde-org/-/merge_requests/70 Reviewers: #kwin, ngraham Reviewed By: ngraham Subscribers: ngraham, zzag, apol, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27827
-
Vlad Zahorodnii authored
Summary: Currently, we have only one shell client type - XdgShellClient. We use it when we are dealing with Wayland clients. But it isn't really a good idea because we may need to support shell surfaces other than xdg-shell ones, for example input panel surfaces. In order to make kwin more extensible, this change replaces all usages of the XdgShellClient class with the AbstractClient class. Test Plan: Existing tests pass. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27778
-
- 02 Mar, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: Since Qt::KeypadModifier is set only for keypad keys and not the NumLock key, we need to press at least one keypad key to determine whether numlock is actually on. On the other hand, we know that when numlock is on, the corresponding LED is also on. So we could check the LED rather than press two keys. Test Plan: testKeyboardLayout passes. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27789
-
- 28 Feb, 2020 3 commits
-
-
Vlad Zahorodnii authored
Summary: FAIL! : KWin::PointerInputTest::testCursorImage() Compared QImages differ in device pixel ratio. Actual (((p->cursorImage()))): 2 Expected (blueScaled): 1 Loc: [/home/vlad/Workspace/KDE/src/kde/workspace/kwin/autotests/integration/pointer_input.cpp(1058)] Test Plan: The test passes. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27725
-
Vlad Zahorodnii authored
Summary: Currently, there are a couple of issues with sizeForClientSize(). First of all, we have a method called clientSizeToFrameSize() which does similar thing except applying geometry constraints and checking window rules. The other issue is that sizeForClientSize() is doing a bit too much, it checks window rules, it applies a bunch of geometry constrains. Sometimes it does not perform conversion between client sizes and frame sizes! This change attempts to address those issues by replacing sizeForClientSize with two similar methods and changing semantics of some methods of the X11Client class. The most significant difference between sizeForClientSize() and the new methods is that neither constrainClientSize() nor constrainFrameSize() check window rules. This is up to users of those methods. In many places, we don't have to check window rules because we check isResizable(), which returns false if the frame size is enforced by a window rule. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, romangg, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D26828
-
Vlad Zahorodnii authored
Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27400
-
- 22 Feb, 2020 4 commits
-
-
Nicolas Fella authored
Bad merge This reverts commit b7130442.
-
Nicolas Fella authored
Summary: Otherwise the content overflows the frame when scrolling. QQC2 scrollview docs say "ScrollView does not automatically clip its contents. If it is not used as a full-screen item, you should consider setting the clip property to true" Test Plan: Before: {F8121150} After: {F8121152} Reviewers: #kwin, #plasma, ngraham Reviewed By: ngraham Subscribers: ngraham, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27558
-
Nicolas Fella authored
Bad merge This reverts commit 5babf52d.
-
Nicolas Fella authored
Summary: Otherwise the content overflows the frame when scrolling. QQC2 scrollview docs say "ScrollView does not automatically clip its contents. If it is not used as a full-screen item, you should consider setting the clip property to true" Test Plan: Before: {F8121150} After: {F8121152} Reviewers: #kwin, #plasma, ngraham Reviewed By: ngraham Subscribers: ngraham, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27558
-
- 14 Feb, 2020 1 commit
-
-
Vlad Zahorodnii authored
-
- 13 Feb, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: We need to provide the input geometry and the input transformation matrix for Xwayland clients in order to make sure that input events are correctly mapped from the global screen coordinates to the screen-local coordinates. BUG: 417444 FIXED-IN: 5.18.1 Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27375
-
- 12 Feb, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: Currently we have two signals that are emitted when the Toplevel's geometry changes - geometryShapeChanged() and geometryChanged(). The former signal is used primarily to invalidate cached window quads and the latter is sort of emitted when the frame geometry changes. But it's not that easy. We have a bunch of connects that link those signals together... The worst part about all of this is that the window quads cache gets invalidated every time a geometry update occurs, for example when user moves a window around on the screen. This change introduces a new signal and deprecates the existing geometryChanged signal. frameGeometryChanged is similar to geometryChanged except that it is emitted when an _actual_ geometry change has occurred. We do still emit geometryShapeChanged signal. However, in long term, we need to get rid of this signal or come up with something that makes sense and doesn't require us to waste computational resources. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, romangg, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D26863
-
- 31 Jan, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: Since we send the initial configure event after placing xdg-popups, we can finally implement resize_x and resize_y constraint adjustments. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D27049
-
- 23 Jan, 2020 1 commit
-
-
Vlad Zahorodnii authored
Summary: According to the xdg-shell spec, configure events carry the maximum window geometry size. If a client wants to enforce aspect ratio, it may attach a buffer with smaller size. We need to account for that when determining frame geometry in the commit handler. I'm targeting 5.18 branch. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D26886
-
- 14 Jan, 2020 1 commit
-
-
Vlad Zahorodnii authored
-
- 02 Dec, 2019 1 commit
-
-
David Edmundson authored
Reviewers: apol, zzag Reviewed By: apol, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D25667
-
- 27 Nov, 2019 2 commits
-
-
Vlad Zahorodnii authored
Summary: Qt has its own thing where a type might also have corresponding list alias, e.g. QObject and QObjectList, QWidget and QWidgetList. I don't know why Qt does that, maybe for some historical reasons, but what matters is that we copy this pattern here in KWin. While this pattern might be useful with some long list types, for example QList<QWeakPointer<TabBoxClient>> TabBoxClientList in general, it causes more harm than good. For example, we've got two new client types, do we need corresponding list typedefs for them? If no, why do we have ClientList and so on? Another problem with these typedefs is that you need to include utils.h header in order to use them. A better way to handle such things is to just forward declare a client class (if that's possible) and use it directly with QList or QVector. This way translation units don't get "bloated" with utils.h stuff for no apparent reason. So, in order to make code more consistent and easier to follow, this change drops some of our custom typedefs. Namely ConstClientList, ClientList, DeletedList, UnmanagedList, ToplevelList, and GroupList. Test Plan: Compiles. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24950
-
Vlad Zahorodnii authored
Summary: So far the window geometry from xdg-shell wasn't implemented as it should be. A toplevel must have two geometries assigned to it - frame and buffer. The frame geometry describes bounds of the client excluding server-side and client-side drop-shadows. The buffer geometry specifies rectangle on the screen occupied by the main surface. State and geometry handling in XdgShellClient is still a bit broken. This change doesn't intend to fix that, it must be done in another patch asap. Test Plan: New tests pass. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, romangg, kwin Tags: #kwin Maniphest Tasks: T10867 Differential Revision: https://phabricator.kde.org/D24455
-
- 26 Nov, 2019 1 commit
-
-
Yuri Chornoivan authored
-
- 25 Oct, 2019 1 commit
-
-
Vlad Zahorodnii authored
Summary: If no conversion functions are provided for a QObject-subclass, then QScriptEngine will use QScriptEngine::newQObject() method without any special options to convert an instance of that QObject-subclass to a QScriptValue. However, it's very important that every client object is wrapped with PreferExistingWrapperObject option. We need that option because a script may set a property on a client object and that property must remain until it's deleted by the script. BUG: 413044 FIXED-IN: 5.17.2 Test Plan: New test. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24944
-
- 11 Oct, 2019 1 commit
-
-
Marco Martin authored
Summary: on X11, setFullScreen is always called after Placement::place() so they always have the correct geometry. on wayland, the window if is shown directly as fullscren, is set fullscreen in init() then place() is evecuted, potentially moving it to a wrong position and potentially even size (which happens with maximiziong placement strategy) so instead of place() the client needs to be explicitly set at fullscreen geometry Test Plan: fullscreen windows always appear with the proper geometry autotests still pass Reviewers: #kwin, #plasma, davidedmundson Reviewed By: #kwin, #plasma, davidedmundson Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24542
-
- 02 Oct, 2019 1 commit
-
-
Vlad Zahorodnii authored
Summary: In order to properly implement xdg_surface.set_window_geometry we need two kinds of geometry - frame and buffer. The frame geometry specifies visible bounds of the client on the screen, excluding client-side drop shadows. The buffer geometry specifies rectangle on the screen that the attached buffer or x11 pixmap occupies on the screen. This change renames the geometry property to frameGeometry in order to reflect the new meaning assigned to it as well to make it easier to differentiate between frame geometry and buffer geometry in the future. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24334
-
- 29 Sep, 2019 1 commit
-
-
Vlad Zahorodnii authored
-
- 25 Sep, 2019 1 commit
-
-
Vlad Zahorodnii authored
Summary: Currently each managed X11 client is represented with an instance of Client class, however the name of that class is very generic and the only reason why it's called that way is because historically kwin was created as an x11 window manager, so "Client" was a sensible choice. With introduction of wayland support, things had changed and therefore Client needs to be renamed to X11Client in order to better reflect what that class stands for. Renaming of Client to X11Client was agreed upon during the last KWin sprint. Test Plan: Compiles, the test suite is still green. Reviewers: #kwin, romangg Reviewed By: #kwin, romangg Subscribers: romangg, davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24184
-
- 24 Sep, 2019 1 commit
-
-
Vlad Zahorodnii authored
-
- 23 Sep, 2019 5 commits
-
-
Vlad Zahorodnii authored
-
Vlad Zahorodnii authored
Summary: Rename ShellClient to XdgShellClient in order to reflect that it represents only xdg-shell clients. Test Plan: Compiles, tests still pass. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D23589
-
Vlad Zahorodnii authored
Summary: Drop xdg-shell v5 support since this protocol is obsolete and all popular wayland compositors already did that. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D23573
-
Vlad Zahorodnii authored
Summary: This change removes all traces of wl-shell in the test suite. That's a prerequisite for dropping wl-shell support in KWin. Given that wl-shell and xdg-shell are not interchangeable, some tests were removed and initialization sequence in some tests was adjusted. The most notable change is ensuring that each plasmashell window sets its role and initial position before committing the surface. Setting those properties before the first surface commit is important because our window placement code needs to know window type in order to avoid maximizing panels, popups, etc. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D23561
-
Vlad Zahorodnii authored
Summary: So far wayland was used by internal clients to submit raster buffers and position themselves on the screen. While we didn't have issues with submitting raster buffers, there were some problems with positioning task switchers. Mostly, because we had effectively two paths that may alter geometry. A better approach to deal with internal clients is to let our QPA use kwin core api directly. This way we can eliminate unnecessary roundtrips as well make geometry handling much easier and comprehensible. The last missing piece is shadows. Both Plasma::Dialog and Breeze widget style use platform-specific APIs to set and unset shadows. We need to add shadows API to KWindowSystem. Even though some internal clients lack drop-shadows at the moment, I don't consider it to be a blocker. We can add shadows back later on. CCBUG: 386304 Reviewers: #kwin, davidedmundson, romangg Reviewed By: #kwin, romangg Subscribers: romangg, kwin Tags: #kwin Maniphest Tasks: T9600 Differential Revision: https://phabricator.kde.org/D22810
-
- 12 Sep, 2019 3 commits
-
-
Vlad Zahorodnii authored
-
Vlad Zahorodnii authored
-
Vlad Zahorodnii authored
-