aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml3
-rw-r--r--src/eu/siacs/conversations/ui/ManageAccountActivity.java25
-rw-r--r--src/eu/siacs/conversations/ui/XmppActivity.java4
3 files changed, 24 insertions, 8 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 62ea4035..d196be7f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -40,7 +40,8 @@
android:name="eu.siacs.conversations.ui.ConversationActivity"
android:configChanges="orientation|screenSize"
android:label="@string/title_activity_conversations"
- android:windowSoftInputMode="stateHidden" >
+ android:windowSoftInputMode="stateHidden"
+ android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/src/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/eu/siacs/conversations/ui/ManageAccountActivity.java
index 6fd87473..8a26d907 100644
--- a/src/eu/siacs/conversations/ui/ManageAccountActivity.java
+++ b/src/eu/siacs/conversations/ui/ManageAccountActivity.java
@@ -398,18 +398,31 @@ public class ManageAccountActivity extends XmppActivity {
case R.id.action_add_account:
addAccount();
break;
- case android.R.id.home:
- if (xmppConnectionService.getConversations().size() == 0) {
- startActivity(new Intent(getApplicationContext(),
- ContactsActivity.class));
- }
- break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
+ @Override
+ public boolean onNavigateUp() {
+ if (xmppConnectionService.getConversations().size() == 0) {
+ Intent contactsIntent = new Intent(this, ContactsActivity.class);
+ contactsIntent.setFlags(
+ // if activity exists in stack, pop the stack and go back to it
+ Intent.FLAG_ACTIVITY_CLEAR_TOP |
+ // otherwise, make a new task for it
+ Intent.FLAG_ACTIVITY_NEW_TASK |
+ // don't use the new activity animation; finish animation runs instead
+ Intent.FLAG_ACTIVITY_NO_ANIMATION);
+ startActivity(contactsIntent);
+ finish();
+ return true;
+ } else {
+ return super.onNavigateUp();
+ }
+ }
+
private void editAccount(Account account) {
EditAccount dialog = new EditAccount();
dialog.setAccount(account);
diff --git a/src/eu/siacs/conversations/ui/XmppActivity.java b/src/eu/siacs/conversations/ui/XmppActivity.java
index 7c8c46b2..81092b22 100644
--- a/src/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/eu/siacs/conversations/ui/XmppActivity.java
@@ -156,7 +156,9 @@ public abstract class XmppActivity extends Activity {
}
viewConversationIntent.setType(ConversationActivity.VIEW_CONVERSATION);
if (newTask) {
- viewConversationIntent.setFlags(viewConversationIntent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_TASK_ON_HOME );
+ viewConversationIntent.setFlags(viewConversationIntent.getFlags()
+ | Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_SINGLE_TOP);
} else {
viewConversationIntent.setFlags(viewConversationIntent.getFlags()
| Intent.FLAG_ACTIVITY_CLEAR_TOP);