diff --git a/app/src/main/assets/editor/index.html b/app/src/main/assets/editor/index.html index 24a4343c..5a072df4 100644 --- a/app/src/main/assets/editor/index.html +++ b/app/src/main/assets/editor/index.html @@ -32,6 +32,7 @@ + diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java index 36db8fe6..19a0d961 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java @@ -6,7 +6,9 @@ import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; +import com.stardust.autojs.script.AutoFileSource; import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.model.script.ScriptFile; import com.stardust.scriptdroid.model.script.Scripts; import com.stardust.scriptdroid.storage.file.StorageFileProvider; import com.stardust.scriptdroid.tool.SimpleObserver; @@ -53,7 +55,11 @@ public class MyScriptListFragment extends ViewPagerFragment implements BackPress ScriptList.SortConfig sortConfig = ScriptList.SortConfig.from(PreferenceManager.getDefaultSharedPreferences(getContext())); mScriptFileList.setSortConfig(sortConfig); mScriptFileList.setStorageFileProvider(StorageFileProvider.getDefault()); - mScriptFileList.setOnScriptFileClickListener((view, file) -> Scripts.edit(file)); + mScriptFileList.setOnScriptFileClickListener((view, file) -> { + if (file.getType() == ScriptFile.TYPE_JAVA_SCRIPT) { + Scripts.edit(file); + } + }); } @Override diff --git a/autojs/src/main/java/com/stardust/autojs/core/floaty/FloatyWindow.java b/autojs/src/main/java/com/stardust/autojs/core/floaty/FloatyWindow.java index f8015b49..7b0285e0 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/floaty/FloatyWindow.java +++ b/autojs/src/main/java/com/stardust/autojs/core/floaty/FloatyWindow.java @@ -1,13 +1,11 @@ package com.stardust.autojs.core.floaty; -import android.content.Intent; import android.support.annotation.Nullable; import android.view.View; import android.view.WindowManager; import android.widget.FrameLayout; import com.stardust.autojs.R; -import com.stardust.autojs.runtime.api.Floaty; import com.stardust.enhancedfloaty.FloatyService; import com.stardust.enhancedfloaty.ResizableFloaty; import com.stardust.enhancedfloaty.ResizableFloatyWindow; @@ -18,7 +16,7 @@ import com.stardust.enhancedfloaty.ResizableFloatyWindow; public class FloatyWindow extends ResizableFloatyWindow { - private static final Object LOCK = new Object(); + private final Object mLock = new Object(); private View mView; private boolean mCreated = false; private View mMoveCursor; @@ -38,12 +36,12 @@ public class FloatyWindow extends ResizableFloatyWindow { } public void waitFor() { - synchronized (LOCK) { + synchronized (mLock) { if (mCreated) { return; } try { - LOCK.wait(); + mLock.wait(); } catch (InterruptedException e) { throw new RuntimeException(e); } @@ -53,17 +51,17 @@ public class FloatyWindow extends ResizableFloatyWindow { @Override public void onCreate(FloatyService service, WindowManager manager) { super.onCreate(service, manager); - synchronized (LOCK) { - mCreated = true; - LOCK.notify(); - } View root = (View) mView.getParent().getParent(); mMoveCursor = root.findViewById(R.id.move_cursor); mResizer = root.findViewById(R.id.resizer); mCloseButton = root.findViewById(R.id.close); + synchronized (mLock) { + mCreated = true; + mLock.notify(); + } } - public void setOnCloseButtonClickListener(View.OnClickListener listener){ + public void setOnCloseButtonClickListener(View.OnClickListener listener) { mCloseButton.setOnClickListener(listener); } diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/Floaty.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Floaty.java index 25d50589..da81fcf1 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/Floaty.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Floaty.java @@ -17,9 +17,7 @@ import com.stardust.enhancedfloaty.FloatyService; import com.stardust.util.UiHandler; import com.stardust.util.ViewUtil; -import java.util.HashSet; import java.util.Iterator; -import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; /** @@ -31,7 +29,7 @@ public class Floaty { private JsLayoutInflater mJsLayoutInflater; private Context mContext; private UiHandler mUiHandler; - private Set mWindows = new CopyOnWriteArraySet<>(); + private CopyOnWriteArraySet mWindows = new CopyOnWriteArraySet<>(); private ScriptRuntime mRuntime; public Floaty(UiHandler uiHandler, UI ui, ScriptRuntime runtime) { @@ -73,7 +71,7 @@ public class Floaty { public class JsFloatyWindow { private View mView; - private FloatyWindow mWindow; + private volatile FloatyWindow mWindow; private boolean mExitOnClose = false; public JsFloatyWindow(View view) { @@ -109,31 +107,29 @@ public class Floaty { } public void setSize(int w, int h) { + runWithWindow(() -> ViewUtil.setViewMeasure(mWindow.getRootView(), w, h)); + } + + private void runWithWindow(Runnable r) { + if (mWindow == null) + return; if (Looper.myLooper() == Looper.getMainLooper()) { - ViewUtil.setViewMeasure(mWindow.getRootView(), w, h); - // mWindow.getWindowBridge().updateMeasure(w, h); - } else { - mUiHandler.post(() -> { - ViewUtil.setViewMeasure(mWindow.getRootView(), w, h); - // mWindow.getWindowBridge().updateMeasure(w, h); - }); + r.run(); + return; } + mUiHandler.post(() -> { + if (mWindow == null) + return; + r.run(); + }); } public void setPosition(int x, int y) { - if (Looper.myLooper() == Looper.getMainLooper()) { - mWindow.getWindowBridge().updatePosition(x, y); - } else { - mUiHandler.post(() -> mWindow.getWindowBridge().updatePosition(x, y)); - } + runWithWindow(() -> mWindow.getWindowBridge().updatePosition(x, y)); } public void setAdjustEnabled(boolean enabled) { - if (Looper.myLooper() == Looper.getMainLooper()) { - mWindow.setAdjustEnabled(enabled); - } else { - mUiHandler.post(() -> mWindow.setAdjustEnabled(enabled)); - } + runWithWindow(() -> mWindow.setAdjustEnabled(enabled)); } public boolean isAdjustEnabled() { @@ -145,17 +141,16 @@ public class Floaty { } public void close() { - if (!mWindows.remove(this)) { + if (mWindow == null || !mWindows.remove(this)) { return; } - if (Looper.myLooper() == Looper.getMainLooper()) { + runWithWindow(() -> { mWindow.close(); - } else { - mUiHandler.post(() -> mWindow.close()); - } - if (mExitOnClose) { - mRuntime.exit(); - } + mWindow = null; + if (mExitOnClose) { + mRuntime.exit(); + } + }); } } diff --git a/automator/src/main/java/com/stardust/automator/UiObject.java b/automator/src/main/java/com/stardust/automator/UiObject.java index 2e107b66..e43e04c3 100644 --- a/automator/src/main/java/com/stardust/automator/UiObject.java +++ b/automator/src/main/java/com/stardust/automator/UiObject.java @@ -144,6 +144,14 @@ public class UiObject extends AccessibilityNodeInfoCompat { return t == null ? "" : t.toString(); } + @Override + public CharSequence getText() { + if (isPassword()) { + return ""; + } + return super.getText(); + } + public String desc() { CharSequence d = getContentDescription(); return d == null ? null : d.toString();