Summary: | Touch screen swipe gestures interferes with Latte dock's ability to show itself if hidden (even without a touch screen). | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | libookami |
Component: | input | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED NOT A BUG | ||
Severity: | minor | CC: | mvourlakos |
Priority: | NOR | ||
Version: | 5.10.3 | ||
Target Milestone: | --- | ||
Platform: | Neon | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
libookami
2017-07-10 21:34:14 UTC
Latte dock should use the functionality provided by KWin for auto hiding on screen edges. I see, thanks a lot for your answer. (In reply to Martin Flöser from comment #1) > Latte dock should use the functionality provided by KWin for auto hiding on > screen edges. Ok, let's discuss this. The thing is that I just tried to use the KWin+Plasma way for informing KWin (under wayland) and xcb(under X11) but I had the following issues... 1. Because Qt considers the window out-of-screen when it is hidden all the animations for tasks are played after the window is shown... So animations that are not needed any more create a confusion to the user. Latte to workaround that Qt behavior isnt hidding the dock when it is hidden (it just sets a very small mask) 2. The issue isnt solved even with plasma panels usage under X11. For plasma panels if at a specific edge a gesture has been set and the panel is auto-hidden then the slide-in animation is played twice. By tracking this down there is a following bug: a. When the user is touching the edge of a hidden panel then a QEvent::Enter is received b. but immediately afterwards it receives also a QEvent::Leave, this is because the gesture possibly creates a small window on top of everything even on top of panels of docks [2] is happening only on X11, for Wayland everything works as expected... So concerning Latte, I would consider to support this because it works just fine under Wayland and I could forward the users to disable the Gestures if they dont need them under X11 BUT because of [1] the Latte experience is broken and that prevents me from doing so. IIRC the auto hiding is done in a way that Qt doesn't notice it. Are you sure you implemented it correctly? It's important to not do QWindow::hide on the window See https://community.kde.org/KWin/Screen_Edges and https://cgit.kde.org/kwin.git/tree/tests/screenedgeshowtest.cpp (In reply to Martin Flöser from comment #5) > See https://community.kde.org/KWin/Screen_Edges and > https://cgit.kde.org/kwin.git/tree/tests/screenedgeshowtest.cpp Martin I dont think the issue is with the screen edge window but rather with the gesture window, arent they different? Just to observe it yourself, under X11. ---- Plasma issue (left panel - auto hidden - gesture enabled for left edge): https://drive.google.com/file/d/1UTR5QLQLA3sxBNKkgmscm3QGo5Wjs4YT/view What I am doing is forcing the mouse continuously to the left edge. ---- Latte issue (left dock - auto hidden - gesture enabled for left edge: https://drive.google.com/file/d/1SI7NnIJ8biBZT6VAuTSAYWRW4QM3bMHW/view?usp=sharing For Latte in order to show the dock the mouse must leave that 1px wide area at the left edge. ---- Probably this is happening because it gets QEvent::Leave after QEvent::Enter so containsMouse flag which is set through (QEvent::Enter and QEvent::Leave events) is faulty. There is something 1px wide in the left edge at all cases under X11. The screenedge is a toggle. If you constantly move your mouse there you show and hide the edge. I don't see a bug in the plasma case, but expected behavior. In the latte case the problem is that you still do things wrong. There's the shaped window and it steals the events. Remove it. > The screenedge is a toggle. If you constantly move your mouse there you show and hide the edge. I don't see a bug in the plasma case, but expected behavior.
but if the mouse didnt leave the panel that is sliding in I cant understand why the edge should be activated. The panel is shown so the edge shouldnt be valid.
reported also here for the plasma case: https://bugs.kde.org/show_bug.cgi?id=392464 (In reply to Martin Flöser from comment #4) > IIRC the auto hiding is done in a way that Qt doesn't notice it. Are you > sure you implemented it correctly? It's important to not do QWindow::hide on > the window Just to conclude in this ;) the good news is that I managed to activate kwin edges with Latte and overcome also the [1] issue (when the dock becomes hidden in an edge the animations arent played). To workaround this I created a ghostWindow per dock with 1px thickness that is responsible to make the communication with KWin concerning KWin edges activation/deactivation. I will make this the default behavior for the upcoming v0.8 because it fixed issues and also it demonstrates fantastic possibilities: a. in !compositing mode when the dock isHidden there is no more 1px appearance at the edge of the screen b. kwin screen edges provide the beautiful indicator when the mouse approachs the edge c. I managed to orchestrate it with upcoming multiple running layouts in different activities. The user changes activities and as such layouts and the corner edges are updated according to the current activity d. works just fine with wayland e. the user can de-activate this behaviour if prefers to use the old way of hiding and showing docks Sounds good |