fix(xwayland): sync active prelaunch stacking on handoff - #1216
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: LFRon The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideSynchronizes stacking between Treeland’s prelaunch wrapper and the native XWayland window when the real surface takes over, ensuring active managed XWayland windows are raised correctly during splash transition. Sequence diagram for synchronized XWayland prelaunch stacking on splash transitionsequenceDiagram
participant SurfaceWrapper
participant WXWaylandSurface
participant TreelandItem as Treeland_surfaceItem
participant X11 as Native_X11_stack
SurfaceWrapper->>SurfaceWrapper: completeSplashTransition(targetImplicitSize)
SurfaceWrapper->>TreelandItem: m_decoration->stackBefore(m_surfaceItem)
alt [m_isActivated && m_type == Type::XWayland]
SurfaceWrapper->>WXWaylandSurface: qobject_cast<WXWaylandSurface *>(m_shellSurface)
alt [xwaylandSurface && !xwaylandSurface->isBypassManager()]
SurfaceWrapper->>SurfaceWrapper: stackToLast()
SurfaceWrapper->>WXWaylandSurface: restack(nullptr, XCB_STACK_MODE_ABOVE)
WXWaylandSurface->>X11: apply restack above
end
end
SurfaceWrapper->>TreelandItem: m_surfaceItem->setVisible(true)
SurfaceWrapper->>TreelandItem: m_prelaunchSplash->setVisible(false)
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Hi @LFRon. Thanks for your PR. I'm waiting for a linuxdeepin member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
|
@zzxyb 大佬, 我那个Xwayland修复分支的两个提交其实是互相独立的, 没有一定的commit顺序就是( |
76fa5ee to
e4cab5c
Compare
我没backport全, 我明天完整backport一下 |
e4cab5c to
566a47f
Compare
cb3218e to
21a1e78
Compare
21a1e78 to
c2063fb
Compare
|
TAG Bot New tag: 0.8.17 |
c2063fb to
c6ae5a5
Compare
356ad2b to
684ca76
Compare
|
TAG Bot New tag: 0.8.18 |
1941335 to
5990fa8
Compare
|
TAG Bot New tag: 0.9.0 |
5990fa8 to
3e15e3c
Compare
A prelaunch wrapper may already be active when its managed XWayland surface is attached. Waylib's user event handler runs before wlroots handles MapNotify, and wlroots initially restacks the managed X11 window below. Raising it during the Splash handoff can therefore be overwritten, leaving Treeland's active window visually on top while X11 input targets an older window underneath. Track X11 MapNotify and UnmapNotify state in WXWaylandSurface, then emit a queued completion signal after wlroots has handled the map. Defer the active prelaunch wrapper's one-shot Treeland and native X11 stack synchronization until that point, preserve stale work across temporary deactivation, retry it when the wrapper is reactivated, cancel it on lifecycle changes, and exclude proxy and override-redirect surfaces. Log: 修复XWayland预启动窗口切换后点击穿透的问题 Influence: XWayland预启动Splash切换到真实窗口时的堆叠顺序
3e15e3c to
7fc6992
Compare
Prelaunch wrappers can already be active when their managed XWayland surface is attached. Because the activated wrapper does not change, the normal activation path does not raise the new native X11 window. Treeland then reports the app as active while X11 input can remain stacked behind another window.
Before exposing the real surface, raise both the Treeland item and native X11 window. Limit this to active managed surfaces so inactive and override-redirect windows are unaffected.
Log: 修复XWayland预启动窗口切换后点击穿透的问题
Influence: XWayland预启动Splash切换到真实窗口时的堆叠顺序
Summary by Sourcery
Synchronize stacking for active prelaunch XWayland surfaces when handing off from the prelaunch wrapper to the mapped native window.
Bug Fixes:
Enhancements: