From 5352a89e8a633e348c450aaee835d2a2d72e8ae0 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Wed, 20 Aug 2014 17:33:24 -0700 Subject: [PATCH 1/2] Unify code paths for collapsing action views in action bars This reverts a well-intentioned bugfix that made ActionBarOverlayLayout focusable in touch mode and caused issues with some activity layouts. Removes the associated key handling code for the Back key in ActionBarOverlayLayout and handles it at a higher level in Activity instead. (This same code path was already in use by ToolbarActionBar.) Bug 17105724 Change-Id: I57e4cace44a6d11f25a2549644b565446d616a52 --- .../internal/app/WindowDecorActionBar.java | 9 ++++++++ .../widget/ActionBarOverlayLayout.java | 23 ------------------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java index b5ff0cc779b84..b58e1dbe25b44 100644 --- a/core/java/com/android/internal/app/WindowDecorActionBar.java +++ b/core/java/com/android/internal/app/WindowDecorActionBar.java @@ -925,6 +925,15 @@ public class WindowDecorActionBar extends ActionBar implements public void onContentScrollStopped() { } + @Override + public boolean collapseActionView() { + if (mDecorToolbar != null && mDecorToolbar.hasExpandedActionView()) { + mDecorToolbar.collapseActionView(); + return true; + } + return false; + } + /** * @hide */ diff --git a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java index 5709f6591158a..cca48d39bb779 100644 --- a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java +++ b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java @@ -184,8 +184,6 @@ public class ActionBarOverlayLayout extends ViewGroup implements DecorContentPar Build.VERSION_CODES.KITKAT; mFlingEstimator = new OverScroller(context); - - setFocusableInTouchMode(true); } @Override @@ -660,27 +658,6 @@ public class ActionBarOverlayLayout extends ViewGroup implements DecorContentPar return finalY > mActionBarTop.getHeight(); } - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - if (super.dispatchKeyEvent(event)) { - return true; - } - - if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { - final int action = event.getAction(); - - // Collapse any expanded action views. - if (mDecorToolbar != null && mDecorToolbar.hasExpandedActionView()) { - if (action == KeyEvent.ACTION_UP) { - mDecorToolbar.collapseActionView(); - } - return true; - } - } - - return false; - } - @Override public void setWindowCallback(Window.Callback cb) { pullChildren(); From 3bad5cc0f5b8ac3018e413ce480692e40039027c Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 19 Aug 2014 17:44:32 -0700 Subject: [PATCH 2/2] Fixing issue with inconsistent icon filename. (Bug 16992882) --- .../java/com/android/server/am/ActivityRecord.java | 9 +++++---- .../core/java/com/android/server/am/TaskRecord.java | 13 +++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index abacb2d7dd3a7..24b7cb3c5f753 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -1054,8 +1054,8 @@ final class ActivityRecord { return null; } - private static String createImageFilename(ActivityRecord r, int taskId) { - return String.valueOf(taskId) + ACTIVITY_ICON_SUFFIX + r.createTime + + private static String createImageFilename(long createTime, int taskId) { + return String.valueOf(taskId) + ACTIVITY_ICON_SUFFIX + createTime + TaskPersister.IMAGE_EXTENSION; } @@ -1072,7 +1072,7 @@ final class ActivityRecord { out.attribute(null, ATTR_USERID, String.valueOf(userId)); if (taskDescription != null) { - task.saveTaskDescription(taskDescription, createImageFilename(this, task.taskId), + task.saveTaskDescription(taskDescription, createImageFilename(createTime, task.taskId), out); } @@ -1165,7 +1165,8 @@ final class ActivityRecord { r.persistentState = persistentState; if (createTime >= 0) { - taskDescription.setIcon(TaskPersister.restoreImage(createImageFilename(r, taskId))); + taskDescription.setIcon(TaskPersister.restoreImage(createImageFilename(createTime, + taskId))); } r.taskDescription = taskDescription; r.createTime = createTime; diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index ccca657904e79..755171ded66ac 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -764,6 +764,11 @@ final class TaskRecord { return true; } + private static String createLastTaskDescriptionIconFilename(int taskId, long lastActiveTime) { + return String.valueOf(taskId) + LAST_ACTIVITY_ICON_SUFFIX + lastActiveTime + + TaskPersister.IMAGE_EXTENSION; + } + void saveToXml(XmlSerializer out) throws IOException, XmlPullParserException { Slog.i(TAG, "Saving task=" + this); @@ -790,8 +795,8 @@ final class TaskRecord { out.attribute(null, ATTR_LASTDESCRIPTION, lastDescription.toString()); } if (lastTaskDescription != null) { - saveTaskDescription(lastTaskDescription, String.valueOf(taskId) + - LAST_ACTIVITY_ICON_SUFFIX + lastActiveTime, out); + saveTaskDescription(lastTaskDescription, createLastTaskDescriptionIconFilename(taskId, + lastActiveTime), out); } out.attribute(null, ATTR_TASK_AFFILIATION_COLOR, String.valueOf(mAffiliatedTaskColor)); out.attribute(null, ATTR_TASK_AFFILIATION, String.valueOf(mAffiliatedTaskId)); @@ -933,8 +938,8 @@ final class TaskRecord { } if (lastActiveTime >= 0) { - taskDescription.setIcon(TaskPersister.restoreImage(String.valueOf(taskId) + - LAST_ACTIVITY_ICON_SUFFIX + lastActiveTime + TaskPersister.IMAGE_EXTENSION)); + taskDescription.setIcon(TaskPersister.restoreImage( + createLastTaskDescriptionIconFilename(taskId, lastActiveTime))); } final TaskRecord task = new TaskRecord(stackSupervisor.mService, taskId, intent,