aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-12-16 16:13:12 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-12-16 17:06:23 +0900
commit7f8345d59a82a9b1d458b8e55ffd12c2a0d466a7 (patch)
tree6379dab8105878584d9863fb55c3377f20dc27ae /java/src
parent1b5b0a3ebc80c24120a8fd5ba45497127b93d238 (diff)
downloadlatinime-7f8345d59a82a9b1d458b8e55ffd12c2a0d466a7.tar.gz
latinime-7f8345d59a82a9b1d458b8e55ffd12c2a0d466a7.tar.xz
latinime-7f8345d59a82a9b1d458b8e55ffd12c2a0d466a7.zip
Fix IllegalStateException of ViewGroup
Bug: 10629042 Change-Id: I111d092fb2f7dca47328127a155c981aa1c55906
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java8
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java12
3 files changed, 29 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 1400e05c8..4b6e12f8e 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -932,11 +932,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
@Override
public void onShowMoreKeysPanel(final MoreKeysPanel panel) {
locatePreviewPlacerView();
- // TODO: Remove this check
- if (panel.isShowingInParent()) {
- panel.dismissMoreKeysPanel();
- }
- mPreviewPlacerView.addView(panel.getContainerView());
+ panel.showInParent(mPreviewPlacerView);
mMoreKeysPanel = panel;
dimEntireKeyboard(true /* dimmed */);
}
@@ -954,7 +950,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
public void onDismissMoreKeysPanel(final MoreKeysPanel panel) {
dimEntireKeyboard(false /* dimmed */);
if (isShowingMoreKeysPanel()) {
- mPreviewPlacerView.removeView(mMoreKeysPanel.getContainerView());
+ mMoreKeysPanel.removeFromParent();
mMoreKeysPanel = null;
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index a7c468538..5b13e9a41 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
@@ -216,12 +217,26 @@ public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel
return true;
}
- @Override
- public View getContainerView() {
+ private View getContainerView() {
return (View)getParent();
}
@Override
+ public void showInParent(final ViewGroup parentView) {
+ removeFromParent();
+ parentView.addView(getContainerView());
+ }
+
+ @Override
+ public void removeFromParent() {
+ final View containerView = getContainerView();
+ final ViewGroup currentParent = (ViewGroup)containerView.getParent();
+ if (currentParent != null) {
+ currentParent.removeView(containerView);
+ }
+ }
+
+ @Override
public boolean isShowingInParent() {
return (getContainerView().getParent() != null);
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
index 886c6286f..4a33e6536 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.keyboard;
import android.view.View;
+import android.view.ViewGroup;
public interface MoreKeysPanel {
public interface Controller {
@@ -119,9 +120,16 @@ public interface MoreKeysPanel {
public int translateY(int y);
/**
- * Return the view containing the more keys panel.
+ * Show this {@link MoreKeysPanel} in the parent view.
+ *
+ * @param parentView the {@link ViewGroup} that hosts this {@link MoreKeysPanel}.
+ */
+ public void showInParent(ViewGroup parentView);
+
+ /**
+ * Remove this {@link MoreKeysPanel} from the parent view.
*/
- public View getContainerView();
+ public void removeFromParent();
/**
* Return whether the panel is currently being shown.