- // Get an array of the selected bookmarks.
- long[] selectedBookmarksLongArray = bookmarksListView.getCheckedItemIds();
-
- // Calculate the number of selected bookmarks.
- int numberOfSelectedBookmarks = selectedBookmarksLongArray.length;
-
- // Adjust the `mode` and the menu for the number of selected bookmarks.
- if (numberOfSelectedBookmarks == 0) {
- mode.finish();
- } else if (numberOfSelectedBookmarks == 1) {
- // List the number of selected bookmarks in the subtitle.
- mode.setSubtitle(getString(R.string.one_selected));
-
- // Show the `Move Up`, `Move Down`, and `Edit` options.
- moveBookmarkUpMenuItem.setVisible(true);
- moveBookmarkDownMenuItem.setVisible(true);
- editBookmarkMenuItem.setVisible(true);
-
- // Get the database IDs for the bookmarks.
- int selectedBookmarkDatabaseId = (int) selectedBookmarksLongArray[0];
- int firstBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(0);
- // bookmarksListView is 0 indexed.
- int lastBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(bookmarksListView.getCount() - 1);
-
- // Disable `moveBookmarkUpMenuItem` if the selected bookmark is at the top of the ListView.
- if (selectedBookmarkDatabaseId == firstBookmarkDatabaseId) {
- moveBookmarkUpMenuItem.setEnabled(false);
- moveBookmarkUpMenuItem.setIcon(R.drawable.move_up_disabled);
- } else { // Otherwise enable `moveBookmarkUpMenuItem`.
- moveBookmarkUpMenuItem.setEnabled(true);
-
- // Set the icon according to the theme.
- if (MainWebViewActivity.darkTheme) {
- moveBookmarkUpMenuItem.setIcon(R.drawable.move_up_enabled_dark);
- } else {
- moveBookmarkUpMenuItem.setIcon(R.drawable.move_up_enabled_light);
- }
- }
-
- // Disable `moveBookmarkDownMenuItem` if the selected bookmark is at the bottom of the ListView.
- if (selectedBookmarkDatabaseId == lastBookmarkDatabaseId) {
- moveBookmarkDownMenuItem.setEnabled(false);
- moveBookmarkDownMenuItem.setIcon(R.drawable.move_down_disabled);
- } else { // Otherwise enable `moveBookmarkDownMenuItem`.
- moveBookmarkDownMenuItem.setEnabled(true);
-
- // Set the icon according to the theme.
- if (MainWebViewActivity.darkTheme) {
- moveBookmarkDownMenuItem.setIcon(R.drawable.move_down_enabled_dark);
- } else {
- moveBookmarkDownMenuItem.setIcon(R.drawable.move_down_enabled_light);
- }
+ // Get the number of selected bookmarks.
+ int numberOfSelectedBookmarks = bookmarksListView.getCheckedItemCount();
+
+ // Only process commands if at least one bookmark is selected. Otherwise, a context menu with 0 selected bookmarks is briefly displayed.
+ if (numberOfSelectedBookmarks > 0) {
+ // Adjust the ActionMode and the menu according to the number of selected bookmarks.
+ if (numberOfSelectedBookmarks == 1) { // One bookmark is selected.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(getString(R.string.selected) + " 1");
+
+ // Show the `Move Up`, `Move Down`, and `Edit` options.
+ moveBookmarkUpMenuItem.setVisible(true);
+ moveBookmarkDownMenuItem.setVisible(true);
+ editBookmarkMenuItem.setVisible(true);
+
+ // Update the enabled status of the move icons.
+ updateMoveIcons();
+ } else { // More than one bookmark is selected.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(getString(R.string.selected) + " " + numberOfSelectedBookmarks);
+
+ // Hide non-applicable `MenuItems`.
+ moveBookmarkUpMenuItem.setVisible(false);
+ moveBookmarkDownMenuItem.setVisible(false);
+ editBookmarkMenuItem.setVisible(false);