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();