summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2016-02-10 12:15:41 -0800
committerTony Wickham <twickham@google.com>2016-02-10 15:28:18 -0800
commitfb78856466f425af729a5a3d52b1b05a87be33d7 (patch)
tree63207a5b5e4e9e9ea46434bc823c26fb96da1f38 /src
parent6362683acb884ec72fe10f1cf394d178d3918a96 (diff)
downloadandroid_packages_apps_Trebuchet-fb78856466f425af729a5a3d52b1b05a87be33d7.tar.gz
android_packages_apps_Trebuchet-fb78856466f425af729a5a3d52b1b05a87be33d7.tar.bz2
android_packages_apps_Trebuchet-fb78856466f425af729a5a3d52b1b05a87be33d7.zip
Change widget host view background when giving focus to child.
Before, the FocusIndicatorView stayed on the widget host unless the widget had its own focus change listener, which caused a couple of problems, namely (1) it was hard to know where the focus was from a user's standpoint, and (2) the focus indicator could get stuck on the screen if you entered a widget and then long-pressed workspace. Now, the focus indicator goes away and instead the widget is framed with a white border to indicate that the focus is inside it. The frame goes away when pressing ESC or when touching the screen. Bug: 26744224 Change-Id: I14025576fd7a9f901b4d969b878af0bebad79a70
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/LauncherAppWidgetHostView.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/com/android/launcher3/LauncherAppWidgetHostView.java b/src/com/android/launcher3/LauncherAppWidgetHostView.java
index 18ae753c9..418525758 100644
--- a/src/com/android/launcher3/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/LauncherAppWidgetHostView.java
@@ -57,6 +57,8 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDragLayer = ((Launcher) context).getDragLayer();
setAccessibilityDelegate(LauncherAppState.getInstance().getAccessibilityDelegate());
+
+ setBackgroundResource(R.drawable.widget_internal_focus_bg);
}
@Override
@@ -241,6 +243,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
if (gainFocus) {
mChildrenFocused = false;
+ dispatchChildFocus(false);
}
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
}
@@ -249,6 +252,9 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
public void requestChildFocus(View child, View focused) {
super.requestChildFocus(child, focused);
dispatchChildFocus(focused != null);
+ if (focused != null) {
+ focused.setFocusableInTouchMode(false);
+ }
}
@Override
@@ -262,10 +268,9 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
return mChildrenFocused;
}
- private void dispatchChildFocus(boolean focused) {
- if (getOnFocusChangeListener() != null) {
- getOnFocusChangeListener().onFocusChange(this, focused || isFocused());
- }
+ private void dispatchChildFocus(boolean childIsFocused) {
+ // The host view's background changes when selected, to indicate the focus is inside.
+ setSelected(childIsFocused);
}
@Override