Commit graph

17898 commits

Author SHA1 Message Date
Vlad Zahorodnii
85c099936e Use QRect::moveRight() and QRect::moveBottom() in XdgShellClient::transientPlacement()
Summary: It's more intuitive.

Test Plan: Relevant tests pass.

Reviewers: #kwin

Subscribers: davidedmundson, broulik, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D27050
2020-02-03 14:07:48 +02:00
Vlad Zahorodnii
98634e0193 Merge branch 'Plasma/5.18' 2020-02-03 14:01:53 +02:00
Vlad Zahorodnii
56d5f3a4f6 [x11] Fix visual artifacts during interactive resize
Summary:
When a window is being interactively resized, its contents may jump. The
reason why that happens is because KWin renders partially resized client
window. Composite extension spec says that a window will get a new pixmap
each time it is resized or mapped. This applies to the frame window, but
not to the client window itself. If the client window is resized,
off-screen storage for the frame window won't be reallocated. Therefore,
KWin may render partially resized client window if the client doesn't
attempt to be in sync with our rendering loop. Currently, the only way
to do that is to use extended frame counters, which are not supported by
KWin.

So, in order to fix visual artifacts during interactive resize, we need
somehow forcefully re-allocate off-screen storage for the frame window.
Unfortunately, Composite extension doesn't provide any request to do
that, so the only option we have is to resize the frame window.

BUG: 415839
FIXED-IN: 5.18.0

Reviewers: #kwin

Subscribers: davidedmundson, ngraham, alexde, fredrik, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26914
2020-02-03 13:56:35 +02:00
Arjen Hiemstra
665bff70e5 Merge branch 'Plasma/5.18' 2020-02-03 12:27:56 +01:00
Arjen Hiemstra
9b3d9e58a4 ScreenEdge: Do not use localtime for measuring duration
Summary:
QDateTime::fromMSecSinceEpoch uses Qt::LocalTime by default. This involves an
expensive localtime conversion. So instead force things to use UTC, as there
is no need for timezone information when tracking durations.

This is especially noticeable on Bedrock Linux, which uses a Fuse mounted
/etc, which is slower than a plain /etc and causes quite some slowdown there.
See https://github.com/bedrocklinux/bedrocklinux-userland/issues/140 for
details.

Test Plan: The screenedge unit test still passes.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: zzag, anthonyfieroni, davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D27114
2020-02-03 12:26:17 +01:00
Vlad Zahorodnii
c9c3c3ad65 Introduce coding-conventions.md
Summary:
Hopefully, the new document makes it clear when one can use QRect::right()
and QRect::bottom().

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D27060
2020-02-03 12:45:47 +02:00
Vlad Zahorodnii
6dd6bdb57d [wayland] Implement resize_x/resize_y constraint adjustment
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
2020-01-31 12:17:45 +02:00
l10n daemon script
9ca27c6690 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-31 09:47:38 +01:00
l10n daemon script
40dfbb82a7 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-31 05:53:55 +01:00
Vlad Zahorodnii
ea8e28337e Merge branch 'Plasma/5.18' 2020-01-29 17:15:59 +02:00
Vlad Zahorodnii
76297196e8 [scripting] Expose Workspace::sendClientToDesktop()
Summary:
BUG: 416093
FIXED-IN: 5.18.0

Test Plan: Only compile-time check.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26988
2020-01-29 17:14:41 +02:00
Vlad Zahorodnii
74e04949d7 Merge branch 'Plasma/5.18' 2020-01-29 13:11:32 +02:00
Vlad Zahorodnii
c43b25bd55 Fix minor issues in XdgShellClient::updateClientOutputs
Fix minor coding style issues and drop redundant qAsConst (const
containers don't detach).
2020-01-29 13:04:51 +02:00
Vlad Zahorodnii
35fe3cb6c5 Drop Toplevel::decorationRect()
Summary: It's identical to Toplevel::rect().

Test Plan: Compiles.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26971
2020-01-29 12:58:54 +02:00
Vlad Zahorodnii
07553d209d s/m_xdgShellSurface/m_xdgShellToplevel/g
Summary: m_xdgShellSurface represents an xdg-toplevel, not an xdg-surface.

Test Plan: Compiles.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26975
2020-01-29 12:58:54 +02:00
Vlad Zahorodnii
2cf832cf29 [wayland] Get rid of some duplicated code
Summary:
We duplicate ping code in a few places. This change introduces a dedicated
method for sending ping events to an xdg-toplevel. In long term, it can be
used for sending "test" ping messages at random interval.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26974
2020-01-29 12:58:54 +02:00
l10n daemon script
ec2204fbe1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-29 09:28:27 +01:00
l10n daemon script
64786630a5 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-29 05:45:29 +01:00
Vlad Zahorodnii
3399a7db8a Document AbstractClient::isResize() and AbstractClient::isMove() 2020-01-28 22:18:57 +02:00
Vlad Zahorodnii
c36a5bf423 Merge branch 'Plasma/5.18' 2020-01-28 22:01:03 +02:00
Vlad Zahorodnii
34fc962ff1 Move definition of X11Client::damageNotifyEvent() to x11client.cpp
One step closer to the bright future where one can disable X11 support
at build time.
2020-01-28 21:58:00 +02:00
Vlad Zahorodnii
68ef6bcd7a Rename X11Client::getSyncRequest() to X11Client::syncRequest()
Getter methods should not have "get" prefix.
2020-01-28 21:46:09 +02:00
Vlad Zahorodnii
a073a79a97 Merge branch 'Plasma/5.18' 2020-01-28 18:42:35 +02:00
Vlad Zahorodnii
bd52b6791e Schedule a decoration repaint when client is resized
Summary:
If a client has been resized, it doesn't necessarily mean that the
decoration theme will schedule full repaint of the window frame. In
OpenGL and Xrender scene, we have a little hack that forces a full
repaint of window borders. However, we don't have one in QPainter
scene which causes all sorts of weird looking artifacts when resizing
a server-side decorated client.

We could add yet another hack in the QPainter scene, but a better
approach to tackle this problem would be to make DecoratedClient
schedule a full repaint of the decoration. It makes code in scene
plugins more straightforward and prevents us from repeating the same
mistake again.

Test Plan:
No longer able to see invisible decoration borders when
using QPainter render backend.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26927
2020-01-28 18:42:17 +02:00
Vlad Zahorodnii
827578577f [decoration] Implement the size property
Summary: See D26937

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26939
2020-01-28 18:42:17 +02:00
l10n daemon script
1b31bb23d6 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-28 09:42:15 +01:00
l10n daemon script
f859c2184a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-28 05:51:43 +01:00
Fabian Vogt
383cec583e Merge branch 'Plasma/5.18' 2020-01-27 16:12:24 +01:00
Fabian Vogt
53af330d8f Fix kwin.upd not running if python 2 not installed
Summary:
If the listed interpreter does not exist, kconf_update skips the update.
The update script uses python3, so declare that properly.

Test Plan: Saw the error by accident, it's gone now.

Reviewers: #plasma, zzag

Reviewed By: #plasma, zzag

Subscribers: kwin, plasma-devel

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26942
2020-01-27 16:11:46 +01:00
Vlad Zahorodnii
ad10a25001 Merge branch 'Plasma/5.18' 2020-01-25 23:15:19 +02:00
Vlad Zahorodnii
bc0fbf137d Port away from a deprecated signal
Summary:
QProcess::error() has been deprecated since Qt 5.6. It is highly advised
to use QProcess::errorOccurred() instead.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26922
2020-01-25 23:13:53 +02:00
l10n daemon script
491d78ec40 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-25 09:49:24 +01:00
l10n daemon script
2df9cfbf3a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-25 06:01:40 +01:00
Vlad Zahorodnii
03ae441e23 Change project name to "KWin"
Summary: It's not "KWIN" nor "kWin" nor "kWIN" nor "kwin"

Test Plan: Qt Creator displays "KWin" with correct capitalization.

Reviewers: #kwin, meven

Reviewed By: meven

Subscribers: apol, meven, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26500
2020-01-25 03:05:02 +02:00
David Edmundson
6cff9072d6 [effects] Port from deprecated method KCModule::changed 2020-01-24 01:18:48 +00:00
Vlad Zahorodnii
6db34379b5 Merge branch 'Plasma/5.18' 2020-01-24 01:10:56 +02:00
Vlad Zahorodnii
d079f5daed [wayland] Keep the opposite corner still when resizing a window
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
2020-01-24 01:05:40 +02:00
Vlad Zahorodnii
72ca9268ce [wayland] Provide correct input geometry for client-side decorated clients
Summary:
Currently, the input geometry for client-side decorated clients matches
the frame geometry, which makes it impossible for a user to resize such
clients by just dragging invisible area near window borders.

BUG: 416346

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: cblack, ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26716
2020-01-24 00:49:50 +02:00
Vlad Zahorodnii
4d161bec48 Use less Toplevel::isClient()
Summary:
Prefer qobject_cast<> over Toplevel::isClient() because it's more type
safer and makes code a bit more readable.

Hopefully, one day we will be able to get rid of isClient() altogether.

Test Plan: Compiles.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26541
2020-01-23 11:55:54 +02:00
Vlad Zahorodnii
80d06c347b Merge branch 'Plasma/5.18' 2020-01-23 11:48:12 +02:00
Vlad Zahorodnii
7b910c51b1 [effects/morphingpopups] Don't animate popups when only shape changes
Summary:
The frame geometry stays still when only shape changes.

BUG: 416531

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26809
2020-01-23 11:47:49 +02:00
David Edmundson
8cedb797f9 Port DesktopGrid QtQuickWindow to EffectQuickView
Summary:
Lots of red, does the same thing in a simplified way avoiding creating a
real window and having to hack round it.

Test Plan: Click add and remove, remove button disables appropriately

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: meven, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26381
2020-01-22 13:16:45 +00:00
David Edmundson
996e840172 Drop kdeinit linking
Summary:
This wasn't used on startup (ksmserver calls KProcess)
Nor for the rules dialog (kwin invokes it with QProcess)

We may as well simplify the code and drop the dependency

See also T12140

Test Plan:
Restarted
Opened the rules dialog

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26835
2020-01-22 12:46:10 +00:00
Vlad Zahorodnii
4979afbf7c Fix doxygen style
Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26827
2020-01-22 11:54:07 +02:00
Vlad Zahorodnii
f57470d1fd Capitilize "mode" in Sizemode enum
Summary: Capitalize "mode" to improve readability.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26826
2020-01-22 11:53:49 +02:00
Vlad Zahorodnii
fb598c65b8 Provide a KWindowShadow implementation for internal clients
Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Maniphest Tasks: T12496

Differential Revision: https://phabricator.kde.org/D26459
2020-01-22 02:21:36 +02:00
David Edmundson
e0df390dbc [kcms/kwindecoration] Fix saving of window decoration plugin
Summary:
In the KCFG autogenerated code we check for HAVE_BREEZE_DECO without
including the relevant file. This always fails, and so we save the
default plugin name/library as org.kde.kwin.aurorae

This doesn't match kwin's concept of the default and so we just fail to
load it.

BUG: 416525

Test Plan:
Reproduced
Saved a config

Reviewers: #kwin, ngraham

Reviewed By: ngraham

Subscribers: ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D26814
2020-01-21 18:41:59 +00:00
l10n daemon script
9bdb9229c0 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2020-01-20 06:00:39 +01:00
Vlad Zahorodnii
01b8832688 Merge branch 'Plasma/5.18' 2020-01-19 18:29:56 +02:00
Vlad Zahorodnii
fe0946c616 [nightcolor] Check whether Night Color is inhibited by a D-Bus service more efficiently 2020-01-19 18:28:42 +02:00