From e5e251ae72961a31506a5182d57b52b630c837c5 Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Sun, 8 Mar 2026 15:58:23 +0800 Subject: [PATCH] 6.7.0 - Alpha23 - Fine tuning --- .../autojs/ui/edit/editor/CodeEditText.kt | 21 ++++- .../keyboard/FunctionsKeyboardHelper.java | 5 +- .../FlexibleDividerDecoration.java | 89 +++++++------------ .../HorizontalDividerItemDecoration.java | 4 +- .../VerticalDividerItemDecoration.java | 4 +- version.properties | 4 +- 6 files changed, 63 insertions(+), 64 deletions(-) diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.kt b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.kt index 77b0cd4c..51b2c085 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.kt +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.kt @@ -39,6 +39,7 @@ import android.view.accessibility.AccessibilityEvent import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputConnection import android.view.inputmethod.InputConnectionWrapper +import android.view.inputmethod.InputMethodManager import android.widget.TextViewHelper import androidx.appcompat.widget.AppCompatEditText import androidx.core.graphics.withTranslation @@ -56,6 +57,7 @@ import java.util.concurrent.CopyOnWriteArrayList * Created by Administrator on Feb 11, 2018. * Modified by SuperMonster003 as of May 1, 2023. * Modified by JetBrains AI Assistant (GPT-5.2) as of Feb 8, 2026. + * Modified by JetBrains AI Assistant (GPT-5.3-Codex (xhigh)) as of Mar 8, 2026. */ class CodeEditText : AppCompatEditText { @@ -717,6 +719,9 @@ class CodeEditText : AppCompatEditText { // zh-CN: 当用户触摸文本区域 (非行号区域) 时尽早通知外层. if (event.action == MotionEvent.ACTION_DOWN && event.x >= paddingLeft) { onUserTouchInTextArea?.invoke() + // Best-effort IME wake-up for devices/ROMs where tap-to-show may be missed. + // zh-CN: 兜底唤起输入法, 兼容部分设备/ROM 点按后未自动弹出软键盘的情况. + requestSoftInputIfEditable() } // 如果行号区域被按下 @@ -749,6 +754,20 @@ class CodeEditText : AppCompatEditText { return super.onTouchEvent(event) } + private fun requestSoftInputIfEditable() { + if (mReadOnly || !showSoftInputOnFocus) return + if (!isFocusable || !isFocusableInTouchMode) return + + post { + if (mReadOnly || !showSoftInputOnFocus) return@post + if (!hasFocus()) { + requestFocus() + } + val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager ?: return@post + imm.showSoftInput(this@CodeEditText, InputMethodManager.SHOW_IMPLICIT) + } + } + fun removeBreakpoint(line: Int): Boolean { breakpoints.remove(line) ?: return false breakpointChangeListener?.onBreakpointChange(line, false) @@ -793,4 +812,4 @@ class CodeEditText : AppCompatEditText { } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/keyboard/FunctionsKeyboardHelper.java b/app/src/main/java/org/autojs/autojs/ui/edit/keyboard/FunctionsKeyboardHelper.java index f50b1144..f61899fb 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/keyboard/FunctionsKeyboardHelper.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/keyboard/FunctionsKeyboardHelper.java @@ -19,6 +19,7 @@ import java.lang.ref.WeakReference; * Created by Stardust on Dec 9, 2017. * Android-FunctionsInputDetector * Modified by JetBrains AI Assistant (GPT-5.2) as of Feb 11, 2026. + * Modified by JetBrains AI Assistant (GPT-5.3-Codex (xhigh)) as of Mar 8, 2026. */ public class FunctionsKeyboardHelper implements BackPressedHandler { @@ -97,7 +98,7 @@ public class FunctionsKeyboardHelper implements BackPressedHandler { } public FunctionsKeyboardHelper build() { - mActivityRef.get().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | + mActivityRef.get().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); hideSoftInput(); return this; @@ -229,4 +230,4 @@ public class FunctionsKeyboardHelper implements BackPressedHandler { } return false; } -} \ No newline at end of file +} diff --git a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/FlexibleDividerDecoration.java b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/FlexibleDividerDecoration.java index ed570e91..9fb3f983 100644 --- a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/FlexibleDividerDecoration.java +++ b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/FlexibleDividerDecoration.java @@ -11,6 +11,7 @@ import android.view.View; import androidx.annotation.ColorRes; import androidx.annotation.DimenRes; import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; @@ -19,6 +20,7 @@ import androidx.recyclerview.widget.RecyclerView; /** * Created by yqritc on 2015/01/08. */ +@SuppressWarnings({"rawtypes", "unused"}) public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecoration { private static final int DEFAULT_SIZE = 2; @@ -30,7 +32,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat DRAWABLE, PAINT, COLOR } - protected DividerType mDividerType = DividerType.DRAWABLE; + protected DividerType mDividerType; protected VisibilityProvider mVisibilityProvider; protected PaintProvider mPaintProvider; protected ColorProvider mColorProvider; @@ -52,15 +54,14 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } else { mDividerType = DividerType.DRAWABLE; if (builder.mDrawableProvider == null) { - TypedArray a = builder.mContext.obtainStyledAttributes(ATTRS); - final Drawable divider = a.getDrawable(0); - a.recycle(); - mDrawableProvider = new DrawableProvider() { - @Override - public Drawable drawableProvider(int position, RecyclerView parent) { - return divider; - } - }; + Drawable divider; + try (TypedArray a = builder.mContext.obtainStyledAttributes(ATTRS)) { + divider = a.getDrawable(0); + } catch (Exception e) { + divider = null; + } + Drawable finalDivider = divider; + mDrawableProvider = (position, parent) -> finalDivider; } else { mDrawableProvider = builder.mDrawableProvider; } @@ -75,17 +76,12 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat private void setSizeProvider(Builder builder) { mSizeProvider = builder.mSizeProvider; if (mSizeProvider == null) { - mSizeProvider = new SizeProvider() { - @Override - public int dividerSize(int position, RecyclerView parent) { - return DEFAULT_SIZE; - } - }; + mSizeProvider = (position, parent) -> DEFAULT_SIZE; } } @Override - public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + public void onDraw(@NonNull Canvas c, RecyclerView parent, @NonNull RecyclerView.State state) { RecyclerView.Adapter adapter = parent.getAdapter(); if (adapter == null) { return; @@ -141,9 +137,12 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } @Override - public void getItemOffsets(Rect rect, View v, RecyclerView parent, RecyclerView.State state) { + public void getItemOffsets(@NonNull Rect rect, @NonNull View v, RecyclerView parent, @NonNull RecyclerView.State state) { int position = parent.getChildAdapterPosition(v); - int itemCount = parent.getAdapter().getItemCount(); + int itemCount = 0; + if (parent.getAdapter() != null) { + itemCount = parent.getAdapter().getItemCount(); + } int lastDividerOffset = getLastDividerOffset(parent); if (!mShowLastDivider && position >= itemCount - lastDividerOffset) { // Don't set item offset for last line if mShowLastDivider = false @@ -185,11 +184,13 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat * LinearLayoutManager */ private int getLastDividerOffset(RecyclerView parent) { - if (parent.getLayoutManager() instanceof GridLayoutManager) { - GridLayoutManager layoutManager = (GridLayoutManager) parent.getLayoutManager(); + if (parent.getLayoutManager() instanceof GridLayoutManager layoutManager) { GridLayoutManager.SpanSizeLookup spanSizeLookup = layoutManager.getSpanSizeLookup(); int spanCount = layoutManager.getSpanCount(); - int itemCount = parent.getAdapter().getItemCount(); + int itemCount = 0; + if (parent.getAdapter() != null) { + itemCount = parent.getAdapter().getItemCount(); + } for (int i = itemCount - 1; i >= 0; i--) { if (spanSizeLookup.getSpanIndex(i, spanCount) == 0) { return itemCount - i; @@ -209,8 +210,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat * @return true if the divider can be skipped as it is in the same row as the previous one. */ private boolean wasDividerAlreadyDrawn(int position, RecyclerView parent) { - if (parent.getLayoutManager() instanceof GridLayoutManager) { - GridLayoutManager layoutManager = (GridLayoutManager) parent.getLayoutManager(); + if (parent.getLayoutManager() instanceof GridLayoutManager layoutManager) { GridLayoutManager.SpanSizeLookup spanSizeLookup = layoutManager.getSpanSizeLookup(); int spanCount = layoutManager.getSpanCount(); return spanSizeLookup.getSpanIndex(position, spanCount) > 0; @@ -228,8 +228,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat * @return group index of items */ private int getGroupIndex(int position, RecyclerView parent) { - if (parent.getLayoutManager() instanceof GridLayoutManager) { - GridLayoutManager layoutManager = (GridLayoutManager) parent.getLayoutManager(); + if (parent.getLayoutManager() instanceof GridLayoutManager layoutManager) { GridLayoutManager.SpanSizeLookup spanSizeLookup = layoutManager.getSpanSizeLookup(); int spanCount = layoutManager.getSpanCount(); return spanSizeLookup.getSpanGroupIndex(position, spanCount); @@ -318,20 +317,16 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat int dividerSize(int position, RecyclerView parent); } + @SuppressWarnings("unchecked") public static class Builder { - private Context mContext; + private final Context mContext; protected Resources mResources; private PaintProvider mPaintProvider; private ColorProvider mColorProvider; private DrawableProvider mDrawableProvider; private SizeProvider mSizeProvider; - private VisibilityProvider mVisibilityProvider = new VisibilityProvider() { - @Override - public boolean shouldHideDivider(int position, RecyclerView parent) { - return false; - } - }; + private VisibilityProvider mVisibilityProvider = (position, parent) -> false; private boolean mShowLastDivider = false; private boolean mPositionInsideItem = false; @@ -341,12 +336,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } public T paint(final Paint paint) { - return paintProvider(new PaintProvider() { - @Override - public Paint dividerPaint(int position, RecyclerView parent) { - return paint; - } - }); + return paintProvider((position, parent) -> paint); } public T paintProvider(PaintProvider provider) { @@ -355,12 +345,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } public T color(final int color) { - return colorProvider(new ColorProvider() { - @Override - public int dividerColor(int position, RecyclerView parent) { - return color; - } - }); + return colorProvider((position, parent) -> color); } public T colorResId(@ColorRes int colorId) { @@ -377,12 +362,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } public T drawable(final Drawable drawable) { - return drawableProvider(new DrawableProvider() { - @Override - public Drawable drawableProvider(int position, RecyclerView parent) { - return drawable; - } - }); + return drawableProvider((position, parent) -> drawable); } public T drawableProvider(DrawableProvider provider) { @@ -391,12 +371,7 @@ public abstract class FlexibleDividerDecoration extends RecyclerView.ItemDecorat } public T size(final int size) { - return sizeProvider(new SizeProvider() { - @Override - public int dividerSize(int position, RecyclerView parent) { - return size; - } - }); + return sizeProvider((position, parent) -> size); } public T sizeResId(@DimenRes int sizeId) { diff --git a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/HorizontalDividerItemDecoration.java b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/HorizontalDividerItemDecoration.java index 71bed83e..cdabba32 100644 --- a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/HorizontalDividerItemDecoration.java +++ b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/HorizontalDividerItemDecoration.java @@ -13,13 +13,14 @@ import androidx.recyclerview.widget.RecyclerView; */ public class HorizontalDividerItemDecoration extends FlexibleDividerDecoration { - private MarginProvider mMarginProvider; + private final MarginProvider mMarginProvider; protected HorizontalDividerItemDecoration(Builder builder) { super(builder); mMarginProvider = builder.mMarginProvider; } + @SuppressWarnings("deprecation") @Override protected Rect getDividerBound(int position, RecyclerView parent, View child) { Rect bounds = new Rect(0, 0, 0, 0); @@ -116,6 +117,7 @@ public class HorizontalDividerItemDecoration extends FlexibleDividerDecoration { int dividerRightMargin(int position, RecyclerView parent); } + @SuppressWarnings("unused") public static class Builder extends FlexibleDividerDecoration.Builder { private MarginProvider mMarginProvider = new MarginProvider() { diff --git a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/VerticalDividerItemDecoration.java b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/VerticalDividerItemDecoration.java index d2b0f7c3..e9634a34 100644 --- a/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/VerticalDividerItemDecoration.java +++ b/modules/recyclerview-flexibledivider/src/main/java/com/yqritc/recyclerviewflexibledivider/VerticalDividerItemDecoration.java @@ -13,13 +13,14 @@ import androidx.recyclerview.widget.RecyclerView; */ public class VerticalDividerItemDecoration extends FlexibleDividerDecoration { - private MarginProvider mMarginProvider; + private final MarginProvider mMarginProvider; protected VerticalDividerItemDecoration(Builder builder) { super(builder); mMarginProvider = builder.mMarginProvider; } + @SuppressWarnings("deprecation") @Override protected Rect getDividerBound(int position, RecyclerView parent, View child) { Rect bounds = new Rect(0, 0, 0, 0); @@ -116,6 +117,7 @@ public class VerticalDividerItemDecoration extends FlexibleDividerDecoration { int dividerBottomMargin(int position, RecyclerView parent); } + @SuppressWarnings("unused") public static class Builder extends FlexibleDividerDecoration.Builder { private MarginProvider mMarginProvider = new MarginProvider() { diff --git a/version.properties b/version.properties index 316114dd..e87f00d0 100644 --- a/version.properties +++ b/version.properties @@ -1,5 +1,5 @@ -#Sun Mar 08 15:18:59 CST 2026 -BUILD_TIME=1772954339154 +#Sun Mar 08 15:56:02 CST 2026 +BUILD_TIME=1772956562907 COMPILE_SDK_VERSION=36 IMAGE_QUANT_CMAKE_VERSION=3.22.1 IMAGE_QUANT_NDK_VERSION=26.1.10909125