am 085639c9: am a3c7d237: am 3c0baabd: am fc0bbdca: Merge "More keyboard polish" into ub-gmail-ur14-dev
* commit '085639c902bc0d6f6929980656ad70debdaab18a':
More keyboard polish
diff --git a/src/com/android/mail/browse/ConversationContainer.java b/src/com/android/mail/browse/ConversationContainer.java
index 091de9c..e2db625 100644
--- a/src/com/android/mail/browse/ConversationContainer.java
+++ b/src/com/android/mail/browse/ConversationContainer.java
@@ -1013,8 +1013,7 @@
@Override
protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) {
if (mOverlayAdapter != null) {
- mOverlayAdapter.focusFirstMessageHeader();
- return true;
+ return mOverlayAdapter.focusFirstMessageHeader();
}
return false;
}
diff --git a/src/com/android/mail/browse/ConversationViewAdapter.java b/src/com/android/mail/browse/ConversationViewAdapter.java
index 60abb7c..afa3dbc 100644
--- a/src/com/android/mail/browse/ConversationViewAdapter.java
+++ b/src/com/android/mail/browse/ConversationViewAdapter.java
@@ -737,14 +737,15 @@
// This should be a safe call since all containers should have at least a conv header and a
// message header.
- // TODO: what to do when the first header is off the screen and recycled?
- public void focusFirstMessageHeader() {
+ public boolean focusFirstMessageHeader() {
if (mItems.size() > 1) {
final View v = mItems.get(1).getFocusableView();
- if (v != null) {
+ if (v != null && v.isShown() && v.isFocusable()) {
v.requestFocus();
+ return true;
}
}
+ return false;
}
/**
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index a087369..05cd435 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -2951,7 +2951,7 @@
mConversationListCursor.moveFailedIntoDrafts(mTarget);
undoEnabled = false;
}
- if (undoEnabled) {
+ if (undoEnabled && mTarget.size() > 0) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
@@ -3750,7 +3750,7 @@
if (isPerformed()) {
return;
}
- if (mIsDestructive && mShowUndo) {
+ if (mIsDestructive && mShowUndo && mTarget.size() > 0) {
ToastBarOperation undoOp = new ToastBarOperation(mTarget.size(), mAction,
ToastBarOperation.UNDO, mIsSelectedSet, mActionFolder);
onUndoAvailable(undoOp);
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index ddeb3a5..f2bb863 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -679,7 +679,19 @@
if (KeyboardUtils.isKeycodeDirectionEnd(keyCode, ViewUtils.isViewRtl(list))) {
if (keyEvent.getAction() == KeyEvent.ACTION_UP) {
if (mKeyInitiatedFromList) {
- onListItemSelected(list.getSelectedView(), list.getSelectedItemPosition());
+ int currentPos = list.getSelectedItemPosition();
+ if (currentPos < 0) {
+ // Find the activated item if the focused item is non-existent.
+ // This can happen when the user transitions from touch mode.
+ currentPos = list.getCheckedItemPosition();
+ }
+ if (currentPos >= 0) {
+ // We don't use onListItemSelected because right arrow should always
+ // view the conversation even in CAB/no_sender_image mode.
+ viewConversation(currentPos);
+ commitDestructiveActions(Utils.useTabletUI(
+ mActivity.getActivityContext().getResources()));
+ }
}
mKeyInitiatedFromList = false;
} else if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 5cd8629..9c3ded7 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -335,9 +335,11 @@
}
private void showCurrentConversationInPager() {
- mPagerController.show(mAccount, mFolder, mConversationToShow,
- false /* changeVisibility */);
- mConversationToShow = null;
+ if (mConversationToShow != null) {
+ mPagerController.show(mAccount, mFolder, mConversationToShow,
+ false /* changeVisibility */);
+ mConversationToShow = null;
+ }
}
@Override