-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimized navigation with the three buttons #69
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* it is very expensive for grid types of views (considering we have qs tiles count settings), especially when animating the QS panel expansion. Signed-off-by: str-br <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
android_os_MessageQueue_nativeDestroy leaves a cyclic reference between its Looper instance and its NativeMessageQueue instance, resulting in a memory and fd leak. Solution: break the cyclic reference with weak pointer wp<>. Bug: 244478726 Signed-off-by: Jintao Zhu <[email protected]> Change-Id: Ic2a183b5cc7c05f9ade95a0602d425badd3d97b1 Signed-off-by: str-br <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
If an app with a uid of Process.SYSTEM_UID calls view.startDragAndDrop, IllegalStateException will be thrown in Session.performDrag, which makes the drag-and-drop feature unavailable in this app. And we don't need this check either, because validateAndResolveDragMimeTypeExtras and validateDragFlags are indeed called before Binder.clearCallingIdentity. Bug: 245626682 Change-Id: I1c27287e51a956284dae0f61bfa0cac14dd28a27 Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: Roxor-007 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
SystemUI may crash sometimes in monkey test due to exception. Catch the exception to avoid the crash. Change-Id: I548be5c6465f3c7a81c33d1cfa9b30e7269fd86d Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Signed-off-by: Pranav Vashi <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
E DatabaseUtils: Writing exception to parcel E DatabaseUtils: java.lang.SecurityException: No permission to access APN settings E DatabaseUtils: at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:4799) Signed-off-by: spezi77 <[email protected]> Change-Id: I648bcf6d3bff5672bd69e8b10782a0a1431b5f82 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
…ptions Change-Id: I9402a9668c046f29024793d473aed90b74a008a3 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Throwing an exception crashes development settings Change-Id: Idf76112ce98f1b3002bb68d6ed245fafdc7e1505 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
https://code.google.com/p/android/issues/detail?id=331471 not only mPackageName.equals("android") run in system_server, but also contains the following package: - com.android.providers.settings, - com.android.server.telecom, - com.android.location.fused. when make application for these package will modify system_server classloader which is not we want. Test: intern stability test Change-Id: I831f6d6ec1d63edad592b05df7c1c2493afeff10 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
11-10 17:26:32.914 2574 2574 E GmsApplication: /system/etc/sysconfig/google.xml must have <allow-in-power-save package="com.google.android.gms"/>. 11-10 17:26:32.919 2574 2574 E GmsApplication: Unable to re-add to doze whitelist 11-10 17:26:32.919 2574 2574 E GmsApplication: java.lang.SecurityException: Calling app u0a106 is not on whitelist 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Parcel.createException(Parcel.java:2071) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Parcel.readException(Parcel.java:2039) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Parcel.readException(Parcel.java:1987) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.usage.IUsageStatsManager$Stub$Proxy.whitelistAppTemporarily(IUsageStatsManager.java:995) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.usage.UsageStatsManager.whitelistAppTemporarily(UsageStatsManager.java:1036) 11-10 17:26:32.919 2574 2574 E GmsApplication: at rrc.startService(:com.google.android.gms@[email protected] (120400-271418971):5) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at dzh.a(:com.google.android.gms@[email protected] (120400-271418971):11) 11-10 17:26:32.919 2574 2574 E GmsApplication: at dzh.onReceive(:com.google.android.gms@[email protected] (120400-271418971):7) 11-10 17:26:32.919 2574 2574 E GmsApplication: at qlz.onReceive(:com.google.android.gms@[email protected] (120400-271418971):8) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.handleReceiver(ActivityThread.java:3788) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.access$1400(ActivityThread.java:219) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Handler.dispatchMessage(Handler.java:107) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Looper.loop(Looper.java:214) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.main(ActivityThread.java:7356) 11-10 17:26:32.919 2574 2574 E GmsApplication: at java.lang.reflect.Method.invoke(Native Method) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 11-10 17:26:32.919 2574 2574 E GmsApplication: Caused by: android.os.RemoteException: Remote stack trace: 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppDirectInternal(DeviceIdleController.java:2378) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppInternal(DeviceIdleController.java:2360) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppChecked(DeviceIdleController.java:2324) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController$BinderService.addPowerSaveTempWhitelistApp(DeviceIdleController.java:1561) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.usage.UsageStatsService$BinderService.whitelistAppTemporarily(UsageStatsService.java:1334)va:1987) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.usage.IUsageStatsManager$Stub$Proxy.whitelistAppTemporarily(IUsageStatsManager.java:995) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.usage.UsageStatsManager.whitelistAppTemporarily(UsageStatsManager.java:1036) 11-10 17:26:32.919 2574 2574 E GmsApplication: at rrc.startService(:com.google.android.gms@[email protected] (120400-271418971):5) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.content.ContextWrapper.startService(ContextWrapper.java:669) 11-10 17:26:32.919 2574 2574 E GmsApplication: at dzh.a(:com.google.android.gms@[email protected] (120400-271418971):11) 11-10 17:26:32.919 2574 2574 E GmsApplication: at dzh.onReceive(:com.google.android.gms@[email protected] (120400-271418971):7) 11-10 17:26:32.919 2574 2574 E GmsApplication: at qlz.onReceive(:com.google.android.gms@[email protected] (120400-271418971):8) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.handleReceiver(ActivityThread.java:3788) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.access$1400(ActivityThread.java:219) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Handler.dispatchMessage(Handler.java:107) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.os.Looper.loop(Looper.java:214) 11-10 17:26:32.919 2574 2574 E GmsApplication: at android.app.ActivityThread.main(ActivityThread.java:7356) 11-10 17:26:32.919 2574 2574 E GmsApplication: at java.lang.reflect.Method.invoke(Native Method) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 11-10 17:26:32.919 2574 2574 E GmsApplication: Caused by: android.os.RemoteException: Remote stack trace: 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppDirectInternal(DeviceIdleController.java:2378) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppInternal(DeviceIdleController.java:2360) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController.addPowerSaveTempWhitelistAppChecked(DeviceIdleController.java:2324) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.DeviceIdleController$BinderService.addPowerSaveTempWhitelistApp(DeviceIdleController.java:1561) 11-10 17:26:32.919 2574 2574 E GmsApplication: at com.android.server.usage.UsageStatsService$BinderService.whitelistAppTemporarily(UsageStatsService.java:1334) Change-Id: I114fd5ef4ea4d72120b4fd73385f808ae2d7f3a5 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Change-Id: Id9035e9cfb02009688fbf1e0ae592caee6965d24 Signed-off-by: Pranav Vashi <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Relying on finalize method to call destroy method will result in memory leak because there is no guarantee when or whether finalize will be executed. Solution: let recycle method call destroy method. Signed-off-by: Jintao Zhu <[email protected]> Change-Id: I1db38e8ae89f06cc2fd460a5c9b5d18d434438e3 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
When click “Video” button in camera view, the mediaRecorder will run prepare(). With the same time, screenDecoration in statusbar will run hideDotView() as an animation. It will make “mediaRecorder run prepare()” cost more time than S load. As in android S, the animation of hideDotView() will not run. So suggest not to run hideDotView() as an animation, but run function directly. Bug: 240375342 Test:Manual 1. Open camera app. 2. Let the camera pattern be Picture. 3. Click the “Video” button in camera view, let the pattern change from Picture to Video. Change-Id: I76f310fd96a1c07c1c3739c7d671b00a9301a19f Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Bug: http://b/196856709 Test: treehugger Change-Id: I90ccb32df5ef841a02e9b759891552291142979f Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
…CreateNativeInterface. The only difference is the former returns a sk_sp instead of a bare pointer. Bug: skia:13087 Change-Id: I8d0931b9c1b942fa5c33bc36deaf2710a3409488 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Since the kill is asynchronously scheduled in the Handler, logically, before scheduling, the process may be operated by the user to the foreground or raising to an important ADJ and then be killed abnormally. Bug: 235565625 Change-Id: Ied40d3ad22caa4d6c89055fdf85affb905d44d23 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Sometimes lmkd kills an app process, and a new thread of system_server reuses the pid of the former and kills the same app process again by some policies immediately, then system_server will die. Bug:238734636 Change-Id: Ieb47a16eb209866691aad04cd4b518ba8162de58 Test: Monkey test Signed-off-by: minaripenguin37 <[email protected]> Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
If a pre-created user is removed before it becomes a full user, the ACTION_USER_REMOVED intent is never sent, so UsageStatsService is never notified that the user's pending events should be discarded. It will eventually try to persist the events. As the first step, it tries to create /data/system_de/$userId/usagestats and the parent directory /data/system_de/$userId if it doesn't already exist. However, due to https://r.android.com/2078213 the SELinux policy no longer allows system_server to create /data/system_de/$userId. The failure to create this directory is causing UsageStatsService to throw an IllegalStateException which crashes system_server. (Before the sepolicy change, system_server could create /data/system_de/$userId, so the crash wouldn't have happened. But problems still might have occurred if the user ID was reused.) The underlying user state tracking bug still needs to be fixed. For now, just avoid crashing system_server unnecessarily, and avoid an SELinux denial by using mkdir() instead of mkdirs(). Test: pm create-user --pre-create-only pm remove-user 10 # Wait 20 minutes and check logcat. Bug: 234059731 Change-Id: Ic5efc19cda6b820a2c07f77b4f316d501acb9e80 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Method isServiceTokenValidLocked should be called with mNotificationLock held, otherwise there will be race condition. Bug: 236512598 Test: Manual Change-Id: I7e24b5afe3d0a5233debf9da45200c2f4e1f570f Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
The ACTION_BATTERY_CHANGED Broadcast is a sticky broadcast, and the registerReceiver method will return null when the first sticky intent found that not matches filter. However, the constructor of BatteryTrigger does not check whether batteryStatus is null and uses it directly. In SystemServer, PowerStatsService is started earlier than BatteryService. If SystemServer is blocked for a few seconds for some reason, then the NullPointerException will be thrown by BatteryTrigger. Bug: N/A Test: atest FrameworksServicesTests:PowerStatsServiceTest Change-Id: I0e29e4a2c7e1298065d8b43c3b4b2bf2afb975e1 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
This potential NPE can cause Launcher crash. In applyAnimationUnchecked(), sources is annotated with @nullable so we need a null check before dispatching callbacks. Bug: 248274834 Test: atest Change-Id: I98b9b6cc9832745ed0ce6a85915dcedc63a5b9c8 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Test: manual Change-Id: I71773b3ca49d306bb00b9e90712ee48ede5e4b24 Signed-off-by: darkphnx <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
…ng permissions and appops. PackageManagerInternal#getPackageList can only receive the installed notify when the package added first on device, No callback is received when new user app installed. So the sync time maybe later then permisison check. It led to CTS case fail by accident in CtsAppSecurityHostTestCases.android.appsecurity.cts.ExternalStorageHostTest#testExternalStorageWrite. Change-Id: If75e3b4ceb239fd1e2d663ceba920898b41f0f04 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Test:Immediately start a new process after killing the process. When startProcessLocked method was called before appDiedLocked , the process uid was first added to mActiveUids and then removed again. allowRestart=false means app.mSuccessor != null and so the new process has already started so we should not call removeProcessNameLocked again. Change-Id: If5bb2d27c51eba03403405022162f2c23f272804 Signed-off-by: tanxiaoyan <[email protected]> Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
This removes a race condition where ContentObserver is initialized while mHandler is null which causes the ContentObserver#onChange() callback to run on a different thread and can cause an NPE. Bug: 246843362 Test: manual Test: atest BrightnessSynchronizerTest Merged-In: Ib8e192c3961390ece721fa473d5c09323c30bafe Change-Id: Ia7443efb9e8020d46b251c7f7100adbf58072345 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
When journal mode is WAL ,the default sync mode is FULL. In Android S when journal mode is WAL,the default sync mode is NORMAL. In the annotation of google it's said when journal mode is WAL, the best sync mode should be NORMAL. Incorrect sync mode cause performance drop. Bug: 246753316 Test: run fs benchmark Change-Id: I8110d66091cd443db9b09f6e8564f9d97f5e7297 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
MessageQueue: remove leaked on-fd-event-listener upon quitting Signed-off-by: Jintao Zhu <[email protected]> Change-Id: I1c0892524de1c3e66af111840c398b63facb43c9 Signed-off-by: revolwoc <[email protected]> Signed-off-by: darkphnx <[email protected]>
Cloudflare DNS has a better privacy policy than Google Public DNS while still supporting DNS over TLS. Signed-off-by: darkphnx <[email protected]>
Unlike turning the screen off, turning it on is a time-critical operation that should be done as fast as possible without a slow animation. It's not only noticeable when using capacitive fingerprint sensors. Signed-off-by: darkphnx <[email protected]>
Calling Camera API needs attention to avoid RuntimeException. This change reoriganizes initCamera code. Bug: 253940087 Test: manual and atest Change-Id: Id46826d030c3001c71acd696f384e4b848e9bec2 Signed-off-by: minaripenguin37 <[email protected]> Signed-off-by: darkphnx <[email protected]>
Change-Id: I6e075886baa4827a7782e180a78c8f16455b53f8 Signed-off-by: Pranav Vashi <[email protected]> Signed-off-by: PainKiller3 <[email protected]> Signed-off-by: karthik1896 <[email protected]> Signed-off-by: Dmitrii <[email protected]>
Avoid crashes like E AndroidRuntime: java.lang.ClassCastException: com.android.systemui.statusbar.StatusBarBluetoothView cannot be cast to com.android.systemui.statusbar.StatusBarIconView Change-Id: I8306205be42f1bc1ab5e7be790ccedae9f42111c
* Stop turning on the audio hardware and playing silence. * Kind of annoying with certain types of Bluetooth headphones that don't actually play silence very well (hissssssssss). Not to mention power usage. Change-Id: I6985db8710f8b0f61619ac57e8efb9e4e01cc31a Signed-off-by: Joe Maples <[email protected]>
* it kinda looks awkard when its too close to the battery icon Signed-off-by: minaripenguin <[email protected]>
* shipped ogg file taken from nothingOS qssi 13 fw [1] [1]https://dumps.tadiphone.dev/dumps/nothing/spacewar/-/blob/qssi-user-13-TKQ1.220915.002-1671077980-release-keys/product/media/audio/ui/screenshot.ogg Signed-off-by: minaripenguin <[email protected]>
Signed-off-by: str143 <[email protected]> Signed-off-by: minaripenguin <[email protected]>
Example: E AndroidRuntime: java.lang.ClassCastException: com.android.systemui.statusbar.StatusBarBluetoothView cannot be cast to com.android.systemui.statusbar.StatusBarIconView Change-Id: I984bb7d74b4110ce43cac2b98267b55ae37f5f04 Signed-off-by: Pranav Vashi <[email protected]>
Add DeviceExtras for pre oplus devices (6 series) while we're here Signed-off-by: AnierinB <[email protected]>
avoid get wrong intent extra when start suspended app's widget Bug: 263768644 Change-Id: I06ba867c06429a5c58ec573458edcbf8654b7ad9 Test: Build Signed-off-by: minaripenguin <[email protected]>
In some low end device, avoid iterating packages by checkOperation can optimize ~100ms. Bug:258771872 Test: manual Change-Id: I13dc0b8c4a6a07fcf3663ddf0fe8d8c6599c9756 Signed-off-by: minaripenguin <[email protected]>
FoldStateListener is non-static inner class and keeps reference to the outer class which is CameraManager. As CameraManager also keeps context with mContext, memory leak could exist. Changing FoldStateListener to static inner class, so that the class won't keep the reference. Bug: 242264787 Test: Manual test with memory profiling Change-Id: I77652bd94b50eabc80041e13274b619c0da36601
Signed-off-by: minaripenguin37 <[email protected]>
Signed-off-by: strwbrry143 <[email protected]>
Signed-off-by: strwbrry143 <[email protected]>
* for system shapes to be effective Signed-off-by: minaripenguin <[email protected]>
Navbar 3 buttons compact layout
more usable and better
Update home icone with md2
spkal01
force-pushed
the
pyro
branch
3 times, most recently
from
February 12, 2023 12:30
fa6f785
to
d49ac00
Compare
too many conflicts, however the commits that are in issue #62 are always valid |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Optimized and improved the experience for the user using the 3 buttons, both in terms of usability and appearance.
Fix #62
thanks to [AndyCGYan]