mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 767597 - Part 1: Unset AwesomeBar inputType:textUri when using Swype. r=blassey f=mbrubeck
This commit is contained in:
parent
eb67617fdf
commit
ba64e0a887
@ -11,14 +11,13 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
@ -27,34 +26,31 @@ import android.view.ContextMenu;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ExpandableListView;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TabWidget;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
||||
import org.mozilla.gecko.db.BrowserContract.Bookmarks;
|
||||
import org.mozilla.gecko.db.BrowserContract.Combined;
|
||||
import org.mozilla.gecko.db.BrowserDB.URLColumns;
|
||||
import org.mozilla.gecko.db.BrowserDB;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
public class AwesomeBar extends GeckoActivity {
|
||||
private static final String LOGTAG = "GeckoAwesomeBar";
|
||||
|
||||
private static final Collection<String> sSwypeInputMethods = Arrays.asList(new String[] {
|
||||
InputMethods.METHOD_SWYPE,
|
||||
InputMethods.METHOD_SWYPE_BETA,
|
||||
});
|
||||
|
||||
static final String URL_KEY = "url";
|
||||
static final String CURRENT_URL_KEY = "currenturl";
|
||||
static final String TARGET_KEY = "target";
|
||||
@ -68,6 +64,7 @@ public class AwesomeBar extends GeckoActivity {
|
||||
private ImageButton mGoButton;
|
||||
private ContentResolver mResolver;
|
||||
private ContextMenuSubject mContextMenuSubject;
|
||||
private boolean mIsUsingSwype;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@ -206,6 +203,33 @@ public class AwesomeBar extends GeckoActivity {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
|
||||
// The Awesome Bar will receive focus when the Awesome Screen first opens or after the user
|
||||
// closes the "Select Input Method" window. If the input method changes to or from Swype,
|
||||
// then toggle the URL mode flag. Swype's URL mode disables the automatic word spacing that
|
||||
// Swype users expect when entering search queries, but does not add any special VKB keys
|
||||
// like ".com" or "/" that would be useful for entering URLs.
|
||||
|
||||
if (!hasFocus)
|
||||
return;
|
||||
|
||||
boolean wasUsingSwype = mIsUsingSwype;
|
||||
mIsUsingSwype = sSwypeInputMethods.contains(InputMethods.getCurrentInputMethod(this));
|
||||
|
||||
if (mIsUsingSwype == wasUsingSwype)
|
||||
return;
|
||||
|
||||
int currentInputType = mText.getInputType();
|
||||
int newInputType = mIsUsingSwype
|
||||
? (currentInputType & ~InputType.TYPE_TEXT_VARIATION_URI) // URL=OFF
|
||||
: (currentInputType | InputType.TYPE_TEXT_VARIATION_URI); // URL=ON
|
||||
|
||||
mText.setRawInputType(newInputType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfiguration) {
|
||||
super.onConfigurationChanged(newConfiguration);
|
||||
@ -589,5 +613,4 @@ public class AwesomeBar extends GeckoActivity {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
55
mobile/android/base/InputMethods.java
Normal file
55
mobile/android/base/InputMethods.java
Normal file
@ -0,0 +1,55 @@
|
||||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
final class InputMethods {
|
||||
|
||||
public static final String METHOD_SWYPE = "com.swype.android.inputmethod/.SwypeInputMethod";
|
||||
public static final String METHOD_SWYPE_BETA = "com.nuance.swype.input/.IME";
|
||||
|
||||
/* These input method names are currently unused, but kept here for future reference:
|
||||
public static final String METHOD_EYES_FREE_KEYBOARD = "com.googlecode.eyesfree.inputmethod.latin/.LatinIME";
|
||||
public static final String METHOD_GO_KEYBOARD = "com.jb.gokeyboard/.GoKeyboard";
|
||||
public static final String METHOD_GOOGLE_JAPANESE_INPUT = "com.google.android.inputmethod.japanese/.MozcService";
|
||||
public static final String METHOD_GOOGLE_PINYIN = "com.google.android.inputmethod.pinyin/.PinyinIME";
|
||||
public static final String METHOD_GOOGLE_TALKBACK = "com.google.android.marvin.talkback/com.googlecode.eyesfree.inputmethod.latin.LatinIME";
|
||||
public static final String METHOD_HACKERS_KEYBOARD = "org.pocketworkstation.pckeyboard/.LatinIME";
|
||||
public static final String METHOD_OPENWNN_PLUS = "com.owplus.ime.openwnnplus/.OpenWnnJAJP";
|
||||
public static final String METHOD_SAMSUNG_GALAXY_NOTE = "com.samsung.sec.android.inputmethod.axt9/.AxT9IME";
|
||||
public static final String METHOD_SIMEJI = "com.adamrocker.android.input.simeji/.OpenWnnSimeji";
|
||||
public static final String METHOD_SLIDE_IT_KEYBOARD = "com.dasur.slideit.vt.lite/com.dasur.slideit.SlideITIME";
|
||||
public static final String METHOD_SWIFTKEY_TRIAL = "com.touchtype.swiftkey.phone.trial/com.touchtype.KeyboardService";
|
||||
public static final String METHOD_TOUCHPAL_KEYBOARD = "com.cootek.smartinputv5/.TouchPalIME";
|
||||
*/
|
||||
|
||||
private InputMethods() {}
|
||||
|
||||
public static String getCurrentInputMethod(Context context) {
|
||||
return Secure.getString(context.getContentResolver(), Secure.DEFAULT_INPUT_METHOD);
|
||||
}
|
||||
|
||||
public static InputMethodInfo getInputMethodInfo(Context context, String inputMethod) {
|
||||
InputMethodManager imm = getInputMethodManager(context);
|
||||
Collection<InputMethodInfo> infos = imm.getEnabledInputMethodList();
|
||||
for (InputMethodInfo info : infos) {
|
||||
if (info.getId().equals(inputMethod)) {
|
||||
return info;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static InputMethodManager getInputMethodManager(Context context) {
|
||||
return (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
}
|
||||
}
|
@ -79,6 +79,7 @@ FENNEC_JAVA_FILES = \
|
||||
GeckoViewsFactory.java \
|
||||
INIParser.java \
|
||||
INISection.java \
|
||||
InputMethods.java \
|
||||
LinkPreference.java \
|
||||
LinkTextView.java \
|
||||
MenuItemActionBar.java \
|
||||
|
Loading…
Reference in New Issue
Block a user