OpenLauncherTeam / openlauncher

Customizable and Open Source Launcher for Android
Apache License 2.0
1.41k stars 413 forks source link

Crash when dragging an icon from last row #662

Open donmerendolo opened 2 years ago

donmerendolo commented 2 years ago

General Information

Description

OpenLauncher crashes when dragging an icon from the bottom row of the app drawer.

Log

Build version: 0.7.4 Build date: 1979-11-30 01:00:00 Current date: 2021-11-23 05:36:51 Device: Xiaomi Redmi Note 7

Stack trace:
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at com.benny.openlauncher.widget.CellContainer.peekItemAndSwap(CellContainer.java:248) at com.benny.openlauncher.widget.Dock.updateIconProjection(Dock.java:84) at com.benny.openlauncher.activity.homeparts.HpDragOption$4.onMove(HpDragOption.java:290) at com.benny.openlauncher.widget.ItemOptionView.handleMovement(ItemOptionView.java:432) at com.benny.openlauncher.widget.ItemOptionView.onTouchEvent(ItemOptionView.java:328) at android.view.View.dispatchTouchEvent(View.java:14309) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3112) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2785) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1873) at android.app.Activity.dispatchTouchEvent(Activity.java:4125) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446) at android.view.View.dispatchPointerEvent(View.java:14568) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6022) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5825) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5316) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5491) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5548) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8086) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8037) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7998) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8209) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220) at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:200) at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8166) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8248) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) at android.view.Choreographer.doCallbacks(Choreographer.java:796) at android.view.Choreographer.doFrame(Choreographer.java:724) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7664) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

This is only needed for crashes or other issues you notice in your system logs from OpenLauncher.

beaver4 commented 2 years ago

I can't reproduce this bug. What settings do you have in App Drawer menu? How many apps do you have? How likely is this bug to happen?

donmerendolo commented 2 years ago

I have 57 apps, these are my drawer settings:

I've changed my phone to a different lavender since I posted the issue, and still having the problem. Reproducing the error now, I've found that the crash only happens when dragging any app (desktop or drawer) to the bottom row of the desktop. The last row just happens to be there so I have to move the icon fast to avoid the crash. These are my desktop and dock settings:

beaver4 commented 2 years ago

@donmerendolo, and what device and Android version are you using now?

donmerendolo commented 2 years ago

Redmi Note 7 and Android 11

beaver4 commented 2 years ago

Does the crash happen every time you move an icon to the bottom of the desktop?

donmerendolo commented 2 years ago

Yes

beaver4 commented 2 years ago

It doesn't happen to me. I'll try to explore this bug later.

donmerendolo commented 2 years ago

I can record a video if that's helpful. The log seems to be the same. Will try with a different phone too.

beaver4 commented 2 years ago

I can record a video if that's helpful.

Ok, do it if you want. And post one more stack trace please.

donmerendolo commented 2 years ago

`Build version: 0.7.4 Build date: 1979-11-30 01:00:00 Current date: 2022-04-27 18:51:38 Device: Xiaomi Redmi Note 7

Stack trace:
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at com.benny.openlauncher.widget.CellContainer.peekItemAndSwap(CellContainer.java:248) at com.benny.openlauncher.widget.Dock.updateIconProjection(Dock.java:84) at com.benny.openlauncher.activity.homeparts.HpDragOption$4.onMove(HpDragOption.java:290) at com.benny.openlauncher.widget.ItemOptionView.handleMovement(ItemOptionView.java:432) at com.benny.openlauncher.widget.ItemOptionView.onTouchEvent(ItemOptionView.java:328) at android.view.View.dispatchTouchEvent(View.java:14309) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3112) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2785) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1873) at android.app.Activity.dispatchTouchEvent(Activity.java:4125) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446) at android.view.View.dispatchPointerEvent(View.java:14568) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6022) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5825) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5316) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5491) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5548) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5373) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5339) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5347) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5320) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8086) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8037) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7998) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8209) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220) at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:200) at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8166) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8248) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) at android.view.Choreographer.doCallbacks(Choreographer.java:796) at android.view.Choreographer.doFrame(Choreographer.java:724) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7664) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)`

https://user-images.githubusercontent.com/16578631/165579200-215fe63e-59eb-4aec-8d64-eac4d0199d8a.mp4