Commit Graph

18426 Commits (c3e1b1daa879213a6d9bb95dbdffb977f415ec34)

Author SHA1 Message Date
l10n daemon script c3e1b1daa8 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-10-12 09:43:16 +02:00
l10n daemon script f5ee562fd5 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-10-11 09:42:33 +02:00
l10n daemon script 74411356bb 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-10-10 09:49:13 +02:00
Vlad Zahorodnii 5df72c6613 Safely remove all internal clients and override-redirect windows
When we destroy all internal clients and override-redirect windows, we
assume that corresponding lists will be implicitly detached.

However, in some cases, that might be not the case. For example, if the
list is not shared, neither begin() nor end() will detach. Therefore, it
is possible to hit invalidated iterators if the list is modified inside
the loop.

This change prevents hitting invalidated iterators by making explicit
list copies.

CCBUG: 427373


(cherry picked from commit 08263b534d)
2020-10-09 16:35:45 +00:00
Vlad Zahorodnii bba28ff9e8 Rename the variable where override-redirect windows are stored
Prepend m_ to unmanaged so no one has to come up with original names if
they want to iterate over a shadow copy of it.


(cherry picked from commit a5b811dadb)
2020-10-09 16:35:19 +00:00
l10n daemon script a5ec0bbdc9 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-10-09 10:21:35 +02:00
Jonathan Riddell 895acfc93e Update version number for 5.20.0
GIT_SILENT
2020-10-08 15:52:53 +01:00
Vlad Zahorodnii e200caf011 wayland: Fix initialization of dmabuf textures
Commit e459c8bf54 added a sanity check to
prevent recomputing the texture matrix if the y-inverted hint hasn't been
changed, which is totally reasonable!

However, code that initializes dmabuf textures implicitly assumes that
calling setYInverted() always results in updating the matrix. But it may
be not the case if the passed value matches current isYInverted().

This change adds missing calls to force updating the texture matrix.

Note that we don't need to check the buffer size every time the dmabuf
image has been modified externally because the window pixmap is going to
be re-created if the dimensions of the attached buffer have changed.

I've seen some reports on the internet about Firefox displaying garbage
instead of videos. 99% that bug is caused by this issue. But it seems
like Firefox no longer displays corrupted videos on my machine, so it's
hard to tell.


(cherry picked from commit f247e35c6d)
2020-10-07 11:44:32 +00:00
l10n daemon script 593ed60d72 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-10-06 09:24:38 +02:00
l10n daemon script 115489bcf8 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-10-05 10:04:35 +02:00
l10n daemon script 49c7d9b70a 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-10-04 09:47:59 +02:00
Vlad Zahorodnii dac3c29da6 3rdparty: Synchronize xcursor.{c,h}
(cherry picked from commit bf4c67678f)
2020-10-01 11:08:25 +00:00
Albert Astals Cid 1dfbac7348 Fix kwin_rules_dialog not showing translated strings
BUGS: 427172


(cherry picked from commit 743b06d3a1)
2020-10-01 10:34:55 +00:00
Vlad Zahorodnii ec70d35426 scripting: Fix initialization of WorkspaceWrapper
Workspace::clientList() only returns X11 clients, while allClientList()
returns all managed clients (both X11 and Wayland).

(cherry picked from commit 1e9bd43368)
2020-10-01 13:24:00 +03:00
Vlad Zahorodnii 3a50ce01f8 scripting: Make ClientFilterModel work for Wayland windows
(cherry picked from commit 1251b2cbb3)
2020-10-01 10:21:56 +00:00
Vlad Zahorodnii e249d08765 scripting: Properly initialize clients model for Wayland windows
In some cases, a ClientLevel model may not contain all Wayland windows
because of missing if (waylandServer()) {} code path in init() method.


(cherry picked from commit faf6b8e049)
2020-10-01 10:21:33 +00:00
Aleix Pol ba2aab2f04 scene: prefer calling mapToGlobal just once
It's the same top mapToGlobal()+operator& than the other way around and
we get to skip 1 call.
This path is the most common so we better save it.

(cherry picked from commit f558115def)
2020-09-29 17:34:21 +03:00
Vlad Zahorodnii 6e56d5741d Place internal osd windows according to placement policies
Currently, internal on screen display windows have the bypass window
manager hint set. If that hint is set, the osds must place themselves,
but they don't do it.

As far as I know, there is no any reason why internal OSDs have that
flag set.

By removing the Qt::BypassWindowManagerHint flag, we let kwin core
know that it's okay to place internal OSD windows.

BUG: 400675


(cherry picked from commit 4559d30399)
2020-09-29 14:10:01 +00:00
Vlad Zahorodnii 491930c49b Properly test internal window flags
Qt::Popup is a mask, so we cannot use the `&` operator to test the window
type. We need to use QFlags::testFlag() for that purpose instead.


(cherry picked from commit 70700b868a)
2020-09-29 14:09:33 +00:00
Vlad Zahorodnii ef65a34017 Use better window placement heuristics for internal clients
Currently, we do some sort of window placement only for decorated
internal windows, which feels hacky.

With this change, all internal clients will go through the window
placement code, unless it's a popup or the BypassWindowManagerHint
flag is set.

If the BypassWindowManagerHint flag is set, the window must have
valid position.

CCBUG: 400675


(cherry picked from commit bc34736534)
2020-09-29 14:08:59 +00:00
Vlad Zahorodnii 02490c2086 screencast: Replace EGLFence with a glFinish()
The way EGLFence is used is equivalent to calling glFinish().

CCBUG: 425869


(cherry picked from commit 6546ac2cae)
2020-09-29 13:58:09 +00:00
Vlad Zahorodnii dfa08f2259 Allow calling setFrameGeometry() while the client is being resized
Currently, if some script attempts to resize a window while it's being
interactively resized, the corresponding change won't be propagated to
the X server.

The main reason for that is that we don't want to configure the frame
window, the wrapper window, and the client window twice. However, since
Xcb::Window keeps track of the last configured geometry, we can adjust
X11Client::updateServerGeometry() so it only configures windows that
have mismatching geometry.

By doing so, the setFrameGeometry() function can be called by scripts
even when the associated X11 window is being interactively resized.

Note that this bug doesn't affect Wayland windows.

BUG: 426988


(cherry picked from commit 6f153552da)
2020-09-29 13:56:56 +00:00
Vlad Zahorodnii f53d90a9f9 Fix ghost shadows left by context menus
If the shadow is destroyed immediately before the window is destroyed,
we need to schedule a workspace repaint in order to prevent showing a
"ghost" shadow.

BUG: 425294


(cherry picked from commit ddb24eaf0a)
2020-09-29 13:55:14 +00:00
Vlad Zahorodnii e056406951 Schedule workspace repaint for destroyed clients
We need to schedule a workspace repaint in case no effect is going to
animate the window.

The workspace repaint is issued before creating a Deleted because the
latter takes the owner of the effect window, which means that after an
instance of Deleted has been created, visibleRect() returns the frame
geometry.

CCBUG: 425294


(cherry picked from commit 12e59f9af8)
2020-09-29 13:54:36 +00:00
Vlad Zahorodnii c5880833d9 x11: Make removal of X11 event filters safe
If an X11 event filter has been activated and it unregisters another X11
event filter, then the window manager may crash because the foreach macro
in Workspace::workspaceEvent() makes a copy of m_genericEventFilters or
m_eventFilters and we can call the event() method for an already defunct
filter.

With this change, X11 event filters can be safely removed and installed
at any particular moment.

BUG: 423319


(cherry picked from commit a433fb08a3)
2020-09-29 08:27:16 +00:00
l10n daemon script c8c0c57c0c 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-09-29 09:36:49 +02:00
l10n daemon script f4b9ecb897 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-09-28 09:59:55 +02:00
l10n daemon script 5e4c52c9a9 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-09-26 09:21:28 +02:00
Vlad Zahorodnii 6b91b07059 Enable shadow protocol support for all Wayland clients
The main motivation for this change is to enable support for our
proprietary shadow protocol in LayerShellV1Client.

Previously we couldn't move code that handles shadows in WaylandClient
because WaylandClient::bufferGeometry() was a pure virtual method.


(cherry picked from commit f24f2bd509)
2020-09-25 07:33:18 +00:00
Vlad Zahorodnii 5b46e01c45 screencast: Ensure that there is current OpenGL context when recording a window
We need an OpenGL context otherwise we may hit an assert in libepoxy.

BUG: 425869


(cherry picked from commit 989e0987d7)
2020-09-24 13:00:09 +00:00
Vlad Zahorodnii 895ec1ad12 Expose KWIN_XWL logging category to kdebugsettings
(cherry picked from commit 80554a3e12)
2020-09-24 12:30:09 +00:00
David Edmundson 23b85e2b85 Revert "[effects/slidingpopups] Start the animation on only windowAdded or windowClosed"
This reverts commit 9d4c8fda09.

Unlike other effects this wasn't using hide/show as a hack for not
having a created/destroyed signal but because the window is internally
hidden when it's in auto-hide mode despite being still mapped.

BUG: 426686


(cherry picked from commit 095cdcd374)
2020-09-24 11:16:57 +00:00
Vlad Zahorodnii 98882a0962 Fix invalidation of cached x stacking order in wayland only mode
Currently, if kwin/wayland runs without xwayland, the order in which
windows are painted doesn't actually reflect the true stacking order.

If the stacking order has been changed, we need to invalidate the
cached x stacking order. But it's done only when RootInfo is present.

If Xwayland doesn't run, RootInfo is not available and thus window
raising is completely broken.

With this change, the x stacking order will be invalidated every time
some window has been raised, no matter what mode kwin operates in.


(cherry picked from commit 75cad57cd9)
2020-09-24 09:49:01 +00:00
Andreas Haratzis 60fd537684 Fix for PlasmaSurfaceTest broken in a3b50500
TestPanelWindowsCanCover now needs to wait for the event queue to process the hover event.


(cherry picked from commit 6f53f62741)
2020-09-24 09:35:56 +00:00
Andreas Haratzis 7a4df745f6 Fix for potential use-after-free introduced in a3b50500
If showOnScreenEdge is called, immediately followed by the client's destruction, it's possible that the next event queue process will call raiseClient with a destroyed client.
We avoid this by using singleShot that is lifetime-aware.


(cherry picked from commit 1dbe3708f5)
2020-09-24 09:35:26 +00:00
l10n daemon script 23c031ce54 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-09-24 10:04:18 +02:00
l10n daemon script 48a69e77f8 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-09-22 09:55:45 +02:00
l10n daemon script 9fc1f82700 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-09-21 09:44:18 +02:00
Vlad Zahorodnii e9eb8c725d effects/flipswitch: Port away from deprecated QTimeline curve shape prop
QTimeline::CurveShape has been deprecated in Qt 5.15.


(cherry picked from commit 5f7d23fd07)
2020-09-21 06:19:00 +00:00
Vlad Zahorodnii 6046a67396 effects/cubeslide: Port away from deprecated QTimeline curve shape prop
QTimeline::CurveShape has been deprecated in Qt 5.15.


(cherry picked from commit 99dd5d94c5)
2020-09-21 06:18:32 +00:00
Vlad Zahorodnii 1630ce053a effects/desktopgrid: Port away from deprecated QTimeline curve shape prop
QTimeline::CurveShape has been deprecated in Qt 5.15.


(cherry picked from commit 3d0042e05b)
2020-09-21 06:17:59 +00:00
l10n daemon script fc5a553eb0 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-09-19 09:45:44 +02:00
Andreas Haratzis a3b50500fc Fix use-after-free when the user hovers over an auto-hide plasma panel in wayland...
Edge::handle calls showOnScreenEdge, which (on wayland) eventually calls internalShow, which eventually calls ScreenEdges::reserve, which destroys the same edge.
When showScreenOnEdge returns, 'this' has been freed.
Using a singleshot timer allows Edge::handle to return before the Edge is destroyed.


(cherry picked from commit 71dfd60284)
2020-09-18 16:03:08 +00:00
Vlad Zahorodnii 965b20abb8 libkwineffects: Bump API version
The API version must be bumped because a new virtual method in the
EffectWindow class had been introduced that breaks BC.


(cherry picked from commit 79c667ea67)
2020-09-18 11:01:25 +00:00
Bhushan Shah c5a90a158c Update version number for 5.19.90
GIT_SILENT
2020-09-17 15:05:23 +05:30
Bhushan Shah 8ae28df622 Update qt5 version requirement to 5.15.0
GIT_SILENT
2020-09-17 10:32:13 +05:30
Bhushan Shah b416e204ee Update kf5 version requirement to 5.74
GIT_SILENT
2020-09-17 10:32:13 +05:30
l10n daemon script 54b654dcad 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-09-17 06:21:21 +02:00
Aleix Pol 6f1e72886a simple for -> foreach on a hot path 2020-09-17 03:12:59 +02:00
Aleix Pol 06e26212a2 Add missing const-referenece
I assume it was a typo
2020-09-17 03:12:59 +02:00