Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7d89dee authored by Vaibhav Devmurari's avatar Vaibhav Devmurari
Browse files

Fix: Global DnD not working

As part of global DnD feature we expect secondary touches to go to
other windows and not get blocked by drag window. With the
refactoring in InputDispatcher, we don't allow splitting touch if
the current window has a pointer and has PREVENT_SPLITTING config
even if that window has no touchable region.

Removing PREVENT_SPLITTING config doesn't affect any behavior with
focus, etc. Seems like legacy code that can be removed. Need extra
work to make Esc key work to cancel DnD, which was already broken
before this change. (To be handled in a separate CL)

Test: manual
Bug: 266705421

DD: go/global_drag_and_drop
Change-Id: Id98b1687489bc29155a76d452a626b134189b576
parent 610ef28a
Loading
Loading
Loading
Loading
+1 −6
Original line number Original line Diff line number Diff line
@@ -377,15 +377,10 @@ class DragState {
            mDragWindowHandle.ownerUid = MY_UID;
            mDragWindowHandle.ownerUid = MY_UID;
            mDragWindowHandle.scaleFactor = 1.0f;
            mDragWindowHandle.scaleFactor = 1.0f;


            // InputConfig.PREVENT_SPLITTING: To keep the default behavior of this window to be
            // focusable, which allows the system to consume keys when dragging is active. This can
            // also be used to modify the drag state on key press. For example, cancel drag on
            // escape key.
            // InputConfig.TRUSTED_OVERLAY: To not block any touches while D&D ongoing and allowing
            // InputConfig.TRUSTED_OVERLAY: To not block any touches while D&D ongoing and allowing
            // touches to pass through to windows underneath. This allows user to interact with the
            // touches to pass through to windows underneath. This allows user to interact with the
            // UI to navigate while dragging.
            // UI to navigate while dragging.
            mDragWindowHandle.inputConfig =
            mDragWindowHandle.inputConfig = InputConfig.TRUSTED_OVERLAY;
                    InputConfig.PREVENT_SPLITTING | InputConfig.TRUSTED_OVERLAY;


            // The drag window cannot receive new touches.
            // The drag window cannot receive new touches.
            mDragWindowHandle.touchableRegion.setEmpty();
            mDragWindowHandle.touchableRegion.setEmpty();