diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index 495b1cd3..15757039 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -10,9 +10,11 @@ import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.Toast; @@ -73,6 +75,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene private boolean _loaded; private boolean _searchSubmitted; private boolean _isRecreated; + private boolean _isDPadPressed; private List _selectedEntries; private ActionMode _actionMode; @@ -92,6 +95,8 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene setContentView(R.layout.activity_main); setSupportActionBar(findViewById(R.id.toolbar)); _loaded = false; + _isDPadPressed = false; + if (savedInstanceState != null) { _isRecreated = true; @@ -208,6 +213,21 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene super.onRequestPermissionsResult(requestCode, permissions, grantResults); } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + _isDPadPressed = isDPadKey(keyCode); + return super.onKeyDown(keyCode, event); + } + + private static boolean isDPadKey(int keyCode) { + return keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP || keyCode == KeyEvent.KEYCODE_DPAD_RIGHT || keyCode == KeyEvent.KEYCODE_DPAD_LEFT; + } + + @Override + public void onEntryListTouch() { + _isDPadPressed = false; + } + private void onPreferencesResult(Intent data) { // refresh the entire entry list if needed if (_loaded) { @@ -707,7 +727,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene @Override public void onScroll(int dx, int dy) { - _fabScrollHelper.onScroll(dx, dy); + if (!_isDPadPressed) { + _fabScrollHelper.onScroll(dx, dy); + } } @Override diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index c1a631f6..35eaab1d 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -101,6 +101,11 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { } }); + _recyclerView.setOnTouchListener((v, event) -> { + _listener.onEntryListTouch(); + return false; + }); + // set up icon preloading _preloadSizeProvider = new ViewPreloadSizeProvider<>(); IconPreloadProvider modelProvider = new IconPreloadProvider(); @@ -511,6 +516,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { void onDeselect(VaultEntry entry); void onListChange(); void onSaveGroupFilter(List groupFilter); + void onEntryListTouch(); } private class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {