From 11b87d9a5114597070d5387c5c1f3e0afe7be477 Mon Sep 17 00:00:00 2001
From: hyb1996 <946994919@qq.com>
Date: Sat, 22 Jul 2017 09:35:51 +0800
Subject: [PATCH] fix code completion bug
---
.idea/misc.xml | 2 +-
app/build.gradle | 4 ++--
.../documentation/事件与按键、触摸监听.md | 21 +++----------------
.../ui/edit/completion/CodeCompletion.java | 10 ++++++---
.../completion/InputMethodEnhanceBar.java | 4 ++++
.../stardust/autojs/runtime/api/Timers.java | 10 ++++++---
6 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index c69e71bb..274735b3 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 37d1004d..c5e6e837 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@ android {
applicationId "com.stardust.scriptdroid"
minSdkVersion 17
targetSdkVersion 23
- versionCode 154
- versionName "2.0.15 Alpha2"
+ versionCode 155
+ versionName "2.0.15 Alpha3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {
diff --git a/app/src/main/assets/help/documentation/事件与按键、触摸监听.md b/app/src/main/assets/help/documentation/事件与按键、触摸监听.md
index cb792810..2512ff83 100644
--- a/app/src/main/assets/help/documentation/事件与按键、触摸监听.md
+++ b/app/src/main/assets/help/documentation/事件与按键、触摸监听.md
@@ -89,15 +89,15 @@ loop();
返回触摸事件的最小时间间隔。
### events.onTouch(listener)
-* listener \ 参数为(x, y)的函数
+* listener \ 参数为Point的函数
注册一个触摸监听函数。
例如:
```
events.observeTouch();
-events.onTouch(function(x, y){
- log(x + ", " + y);
+events.onTouch(function(p){
+ log(p.x + ", " + p.y);
});
events.loop();
```
@@ -106,21 +106,6 @@ events.loop();
删除所有事件监听函数。
-### events.setTimeout(callback, delay)
-* callback \ 回调函数
-* delay \ 延迟
-
-延迟大约delay毫秒后执行callback。该函数只有在events.loop()被使用时才有效。
-
-返回一个整数表示这个设置的timeout, 可由clearTimeout取消。
-
-
-### events.clearTimeout(id)
-
-* id \ 由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行回调。
-
-取消由 setTimeout() 方法设置的 timeout。
-
### key事件
当有按键被按下或弹起时会触发该事件。
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/CodeCompletion.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/CodeCompletion.java
index da74edb0..e6bdae80 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/CodeCompletion.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/CodeCompletion.java
@@ -95,7 +95,6 @@ public class CodeCompletion implements TextWatcher {
@Override
public void afterTextChanged(Editable s) {
int position = mEditText.getSelectionStart();
-
String[] str = parseWordBefore(s, position);
if (str != null) {
if (str[1] != null) {
@@ -163,8 +162,13 @@ public class CodeCompletion implements TextWatcher {
private boolean searchCodeCompletionForVariable(String variable, String str) {
List properties = getPropertiesForVariable(variable);
Collection c = searchCodeCompletion(str, properties);
- mOnCodeCompletionChangeListener.OnCodeCompletionChange(c, Collections.emptyList());
- return !c.isEmpty();
+ if (c.isEmpty()) {
+ mOnCodeCompletionChangeListener.OnCodeCompletionChange(DEFAULT_CODE_COMPLETION_LIST, Collections.emptyList());
+ return false;
+ } else {
+ mOnCodeCompletionChangeListener.OnCodeCompletionChange(c, Collections.emptyList());
+ return true;
+ }
}
private List getPropertiesForVariable(String str) {
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/InputMethodEnhanceBar.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/InputMethodEnhanceBar.java
index 72c520f9..c030f5ac 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/InputMethodEnhanceBar.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/completion/InputMethodEnhanceBar.java
@@ -109,7 +109,11 @@ public class InputMethodEnhanceBar extends RecyclerView implements CodeCompletio
mCodeCompletion.setVariableProperties(variables);
}
});
+ }else {
+ mCodeCompletion.setGlobal(global);
+ mCodeCompletion.setVariableProperties(variables);
}
+
}
public void setEditTextBridge(EditTextBridge editTextBridge) {
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/Timers.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Timers.java
index ea949b0d..3746008e 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/api/Timers.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Timers.java
@@ -22,14 +22,14 @@ public class Timers {
mBridges = bridges;
}
- public int setTimeout(final Object listener, long delay, final Object... args) {
+ public int setTimeout(final Object callback, long delay, final Object... args) {
prepareLoopIfNeeded();
mCallbackMaxId++;
final int id = mCallbackMaxId;
Runnable r = new Runnable() {
@Override
public void run() {
- mBridges.callFunction(listener, null, args);
+ mBridges.callFunction(callback, null, args);
mHandlerCallbacks.remove(id);
}
};
@@ -98,7 +98,11 @@ public class Timers {
if (Looper.myLooper() != null)
return;
Looper.prepare();
- sLoopers.put(Thread.currentThread(), Looper.myLooper());
+ Looper looper = Looper.myLooper();
+ if (looper != null) {
+ // null check is not necessary, just to make Android Studio happy
+ sLoopers.put(Thread.currentThread(), looper);
+ }
mHandler = new Handler();
}