summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2016-05-25 03:24:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-05-25 03:24:11 +0000
commit7c8305bcfeef206e8bd00f20077f8106bb66fa6b (patch)
tree4ff3f0b341addb3cd93c765d9345164a0d8f1085 /core/java
parent9d4e66ece64f6b65d8a902a6f03f945a0fe88868 (diff)
parente9f54bfde27327df4b1c820a97df00546cffe1e9 (diff)
Merge "Use original theme for SuggestsionsPopupWindow" into nyc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/widget/Editor.java39
1 files changed, 33 insertions, 6 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 622567c83617..15bba3a68987 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -76,6 +76,7 @@ import android.util.SparseArray;
import android.view.ActionMode;
import android.view.ActionMode.Callback;
import android.view.ContextMenu;
+import android.view.ContextThemeWrapper;
import android.view.DisplayListCanvas;
import android.view.DragAndDropPermissions;
import android.view.DragEvent;
@@ -3004,8 +3005,16 @@ public class Editor {
protected abstract int getTextOffset();
protected abstract int getVerticalLocalPosition(int line);
protected abstract int clipVertically(int positionY);
+ protected void setUp() {
+ }
public PinnedPopupWindow() {
+ // Due to calling subclass methods in base constructor, subclass constructor is not
+ // called before subclass methods, e.g. createPopupWindow or initContentView. To give
+ // a chance to initialize subclasses, call setUp() method here.
+ // TODO: It is good to extract non trivial initialization code from constructor.
+ setUp();
+
createPopupWindow();
mPopupWindow.setWindowLayoutType(
@@ -3267,8 +3276,7 @@ public class Editor {
private boolean mCursorWasVisibleBeforeSuggestions;
private boolean mIsShowingUp = false;
private SuggestionAdapter mSuggestionsAdapter;
- private final TextAppearanceSpan mHighlightSpan = new TextAppearanceSpan(
- mTextView.getContext(), mTextView.mTextEditSuggestionHighlightStyle);
+ private TextAppearanceSpan mHighlightSpan; // TODO: Make mHighlightSpan final.
private TextView mAddToDictionaryButton;
private TextView mDeleteButton;
private ListView mSuggestionListView;
@@ -3276,8 +3284,10 @@ public class Editor {
private int mContainerMarginWidth;
private int mContainerMarginTop;
private LinearLayout mContainerView;
+ private Context mContext; // TODO: Make mContext final.
private class CustomPopupWindow extends PopupWindow {
+
@Override
public void dismiss() {
if (!isShowing()) {
@@ -3301,6 +3311,23 @@ public class Editor {
}
@Override
+ protected void setUp() {
+ mContext = applyDefaultTheme(mTextView.getContext());
+ mHighlightSpan = new TextAppearanceSpan(mContext,
+ mTextView.mTextEditSuggestionHighlightStyle);
+ }
+
+ private Context applyDefaultTheme(Context originalContext) {
+ TypedArray a = originalContext.obtainStyledAttributes(
+ new int[]{com.android.internal.R.attr.isLightTheme});
+ boolean isLightTheme = a.getBoolean(0, true);
+ int themeId = isLightTheme ? R.style.ThemeOverlay_Material_Light
+ : R.style.ThemeOverlay_Material_Dark;
+ a.recycle();
+ return new ContextThemeWrapper(originalContext, themeId);
+ }
+
+ @Override
protected void createPopupWindow() {
mPopupWindow = new CustomPopupWindow();
mPopupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
@@ -3311,8 +3338,8 @@ public class Editor {
@Override
protected void initContentView() {
- final LayoutInflater inflater = (LayoutInflater) mTextView.getContext().
- getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ final LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
mContentView = (ViewGroup) inflater.inflate(
mTextView.mTextEditSuggestionContainerLayout, null);
@@ -3405,8 +3432,8 @@ public class Editor {
}
private class SuggestionAdapter extends BaseAdapter {
- private LayoutInflater mInflater = (LayoutInflater) mTextView.getContext().
- getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ private LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
@Override
public int getCount() {