Bug 404986 - [Wayland] Popups and app launchers triggered via Plasma panel flicker when dismissed by click outside them
Summary: [Wayland] Popups and app launchers triggered via Plasma panel flicker when di...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: effects-various (other bugs)
Version First Reported In: 5.20.90
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-02 12:02 UTC by Patrick Silva
Modified: 2021-05-13 22:07 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:
vlad.zahorodnii: Wayland+
vlad.zahorodnii: X11-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick Silva 2019-03-02 12:02:01 UTC
STEPS TO REPRODUCE
1. start Wayland session
2. open kicker and hover over some submenu (internet, multimedia, etc)
3. while the submenu is open, click on your desktop or another window

OBSERVED RESULT
kicker closes but its fade animation is not smooth, tt appears to flash.
Such behavior does not occur if I dismiss kicker by pressing meta key.

EXPECTED RESULT
Smooth fade animation when kicker closes.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 5.15.2
KDE Frameworks Version: 5.55.0
Qt Version: 5.12.1

ADDITIONAL INFORMATION
Also reproducible on neon dev unstable.
The same happens with kickoff, but I can't reproduce consistently.
Comment 1 Vlad Zahorodnii 2019-03-04 10:36:39 UTC
What do you mean by "tt appears to flash."? Does Kicker disappear instantly? or there are visual artifacts left behind?
Comment 2 Patrick Silva 2019-03-04 12:03:07 UTC
Sorry, maybe "flash" was not the better description.
I meant that fade effect flickers.
Comment 3 Vlad Zahorodnii 2019-03-04 12:41:46 UTC
> I meant that fade effect flickers.

How exactly it flickers? A video would perfectly describe the problem.
Comment 4 Patrick Silva 2019-03-04 12:42:51 UTC
screen recording is still impossible on Wayland.
Comment 5 Vlad Zahorodnii 2019-03-04 12:47:44 UTC
(In reply to Patrick Silva from comment #4)
> screen recording is still impossible on Wayland.

Not entirely correct, there's Pipewire thing. I just need to see the problem, a video recorded with your phone would be good as well. :-)
Comment 6 Patrick Silva 2019-03-04 12:50:27 UTC
I don't know as an end user can use pipewire to record the screen.

I will try to record a video using a camera.
Comment 7 Patrick Silva 2019-03-04 13:16:28 UTC
ops, I meant "I don't kwow how..." lol

Here is the video.
https://www.youtube.com/watch?v=v2h-Ptt-K4w
Comment 8 Vlad Zahorodnii 2019-03-04 13:21:11 UTC
Hmm, looks like a conflict between two effects. Could you please post output of `qdbus org.kde.KWin /KWin supportInformation`?
Comment 9 Patrick Silva 2019-03-04 13:32:18 UTC
Version
=======
KWin version: 5.15.2
Qt Version: 5.12.1
Qt compile version: 5.12.1
XCB compile version: 1.13.1

Operation Mode: Xwayland

Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_DRM: yes
HAVE_GBM: yes
HAVE_X11_XCB: yes
HAVE_EPOXY_GLX: yes
HAVE_WAYLAND_EGL: yes

X11
===
Vendor: The X.Org Foundation
Vendor Release: 12004000
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
DAMAGE: yes; Version: 0x11
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
GLX: yes; Version: 0x0

Decoration
==========
Plugin: org.kde.breeze
Theme: 
Blur: 0
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 0, 9, 2
decorationButtonsRight: 6, 3, 4, 5
borderSize: 3
gridUnit: 10
font: Roboto,10,-1,5,75,0,0,0,0,0,Bold
smallSpacing: 2
largeSpacing: 10

Platform
==========
Name: DRM
Active: true
Atomic Mode Setting: true

Options
=======
focusPolicy: 0
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 4
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
rollOverDesktops: true
focusStealingPreventionLevel: 1
legacyFullscreenSupport: false
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: 0
commandActiveTitlebar2: 30
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 30
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 31
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
showGeometryTip: false
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
inactiveTabsSkipTaskbar: false
autogroupSimilarWindows: false
autogroupInForeground: true
compositingMode: 1
useCompositing: true
compositingInitialized: true
hiddenPreviews: 2
glSmoothScale: 2
xrenderSmoothScale: false
maxFpsInterval: 16666666
refreshRate: 0
vBlankTime: 6000000
glStrictBinding: false
glStrictBindingFollowsDriver: true
glCoreProfile: false
glPreferBufferSwap: 101
glPlatformInterface: 2
windowsBlockCompositing: true

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
timeThreshold: 150
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Multi-Head: no
Active screen follows mouse:  no
Number of Screens: 1

Screen 0:
---------
Name: GSM HDMI-A-1-23MP55
Geometry: 0,0,1920x1080
Scale: 1
Refresh Rate: 59.883


Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Desktop 
OpenGL version string: 3.0 Mesa 18.3.4
OpenGL platform interface: EGL
OpenGL shading language version string: 1.30
Driver: Intel
GPU class: Haswell
OpenGL version: 3.0
GLSL version: 1.30
Mesa version: 18.3.4
Linux kernel version: 4.20.13
Direct rendering: Requires strict binding: no
GLSL shaders:  yes
Texture NPOT support:  yes
Virtual Machine:  no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace:  no

Loaded Effects:
---------------
zoom
trackmouse
kwin4_effect_fadingpopups
kwin4_effect_translucency
kwin4_effect_maximize
kwin4_effect_dialogparent
kwin4_effect_windowaperture
kwin4_effect_frozenapp
kwin4_effect_fade
kwin4_effect_morphingpopups
kwin4_effect_logout
kwin4_effect_squash
kwin4_effect_login
slidingpopups
screenshot
flipswitch
desktopgrid
cubeslide
coverswitch
colorpicker
presentwindows
highlightwindow
blur
contrast
startupfeedback
screenedge
kscreen

Currently Active Effects:
-------------------------
blur
contrast

Effect Settings:
----------------
zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
enableFocusTracking: false
followFocus: true
focusDelay: 350
moveFactor: 20
targetZoom: 1

trackmouse:
modifiers: 335544320
mousePolling: true

kwin4_effect_fadingpopups:
isActiveFullScreenEffect: false

kwin4_effect_translucency:
isActiveFullScreenEffect: false

kwin4_effect_maximize:
isActiveFullScreenEffect: false

kwin4_effect_dialogparent:
isActiveFullScreenEffect: false

kwin4_effect_windowaperture:
isActiveFullScreenEffect: false

kwin4_effect_frozenapp:
isActiveFullScreenEffect: false

kwin4_effect_fade:
isActiveFullScreenEffect: false

kwin4_effect_morphingpopups:
isActiveFullScreenEffect: false

kwin4_effect_logout:
isActiveFullScreenEffect: false

kwin4_effect_squash:
isActiveFullScreenEffect: false

kwin4_effect_login:
isActiveFullScreenEffect: false

slidingpopups:
slideInDuration: 150
slideOutDuration: 250

screenshot:

flipswitch:
tabBox: false
tabBoxAlternative: false
duration: 200
angle: 30
xPosition: 0.33000001311302185
yPosition: 1
windowTitle: true

desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true

cubeslide:
rotationDuration: 500
dontSlidePanels: true
dontSlideStickyWindows: false
usePagerLayout: true
useWindowMoving: false

coverswitch:
animationDuration: 200
animateSwitch: true
animateStart: true
animateStop: true
reflection: true
windowTitle: true
zPosition: 900
primaryTabBox: false
secondaryTabBox: false

colorpicker:

presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: true
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: false
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0

highlightwindow:

blur:

contrast:

startupfeedback:
type: 1

screenedge:

kscreen:
Comment 10 Vlad Zahorodnii 2019-03-04 13:37:44 UTC
Okay, nothing special... If you disable either the Fade or the Fading Popups effect, does the bug occur?
Comment 11 Patrick Silva 2019-03-04 13:45:42 UTC
the bug occurs even when both effects are disabled and when only one of them is disabled.
Comment 12 Vlad Zahorodnii 2019-03-04 17:53:47 UTC
Looks like something fishy is going on with the sliding popups effect.
Comment 13 Vlad Zahorodnii 2019-03-06 14:01:23 UTC
This is a stacking order related problem.

Plasma tries to put panel popups in the Above layer.

On X11, it's achievable by setting _NET_WM_STATE_ABOVE.

On Wayland, the whole situation is very sad. As far as I know, only wlr-layer-shell protocol allows clients to assign themselves to specific layers.

If I recall correctly, David has a patch that adds keep-above functionality to the plasma shell protocol.
Comment 14 Martin Flöser 2019-03-06 16:20:47 UTC
The problem is not that we don't have keep above. The problem is lacking of semantics. If a window sets keep above we don't know anything. If the window instead tells us that it's a plasma dialog we actually know something which we can work with and do sane things.

What was done on X11 we're just hacks without addressing the issue. Let's not repeat the semantic errors.
Comment 15 tromzy 2019-05-23 08:00:21 UTC
I'm affected by this bug too.
Comment 16 Patrick Silva 2020-04-18 14:57:56 UTC
This behavior affects popups and app lunchers triggered via Plasma panel.

1. start Wayland session
2. open any app (Dolphin, for example) and maximize its window
3. open kickoff, kicker, any applet in systray or the calendar
4. dismiss the clicked item by clicking on the maximized window

Result: the clicked item almost always flickers when dismissed

Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.18.80
KDE Frameworks Version: 5.70.0
Qt Version: 5.14.1
Comment 17 Vlad Zahorodnii 2020-09-23 11:44:27 UTC
> As far as I know, only wlr-layer-shell protocol

Just for the record, kwin now supports the layer-shell protocol.
Comment 18 Patrick Silva 2021-05-13 22:07:27 UTC
Fixed on Arch (Plasma 5.22 beta) and neon unstable. :)