]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryActivity.java
Fix jumping to row from clicking on a link in the HTMLView.
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivity.java
index 4425a0b0f3d7cc2276ba5679d7df7e956b68ef20..14cbcdadb8b5f4b0d944eff1350472a773e51668 100644 (file)
@@ -604,7 +604,8 @@ public class DictionaryActivity extends SherlockListActivity {
             currentSearchOperation.interrupted.set(true);
             currentSearchOperation = null;
         }
-        setIndexAndSearchText((indexIndex + 1) % dictionary.indices.size(), searchView.getQuery().toString());
+        setIndexAndSearchText((indexIndex + 1) % dictionary.indices.size(), 
+                searchView.getQuery().toString());
     }
 
     void onLanguageButtonLongClick(final Context context) {
@@ -902,7 +903,15 @@ public class DictionaryActivity extends SherlockListActivity {
         if (indexToUse == -1) {
             indexToUse = defaultIndexToUse;
         }
-        setIndexAndSearchText(indexToUse, selectedText);
+        // Without this extra indirection, the call to jumpToRow that this
+        // invokes didn't actually have any effect.
+        final int actualIndexToUse = indexToUse;
+        getListView().post(new Runnable() {
+            @Override
+            public void run() {
+                setIndexAndSearchText(actualIndexToUse, selectedText);
+            }
+        });
     }
     
     /**
@@ -1009,14 +1018,13 @@ public class DictionaryActivity extends SherlockListActivity {
     }
 
     private void setSearchText(final String text, final boolean triggerSearch) {
-        if (!triggerSearch) {
-            searchView.setOnQueryTextListener(null);
-        }
+        Log.d(LOG, "setSearchText, text=" + text + ", triggerSearch=" + triggerSearch);
+        // Disable the listener, because sometimes it doesn't work.
+        searchView.setOnQueryTextListener(null);
         searchView.setQuery(text, false);
         moveCursorToRight();
-        if (!triggerSearch) {
-            searchView.setOnQueryTextListener(onQueryTextListener);            
-        } else {
+        searchView.setOnQueryTextListener(onQueryTextListener);
+        if (triggerSearch) {
             onQueryTextListener.onQueryTextChange(text);
         }
     }