Explorar el Código

LibGUI: Fix invalid ModelIndices during shift-click multiselection

Previously, If the widget was unfocused, the selection start index
would be invalid. This would result in invalid selections when doing
shift+click on the widget (while it is unfocused).

Now, we reassign the selection start index to current index
before we initiate multiselection, if selection start index is invalid.

Should Fix SerenityOS#11999 and the same bug inside FileManager.
Aayush hace 2 años
padre
commit
7a4b912ece
Se han modificado 1 ficheros con 2 adiciones y 0 borrados
  1. 2 0
      Userland/Libraries/LibGUI/AbstractView.cpp

+ 2 - 0
Userland/Libraries/LibGUI/AbstractView.cpp

@@ -493,6 +493,8 @@ void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update
             if (!m_selection.contains(index))
             if (!m_selection.contains(index))
                 clear_selection();
                 clear_selection();
         } else if (selection_update == SelectionUpdate::Shift) {
         } else if (selection_update == SelectionUpdate::Shift) {
+            if (!selection_start_index().is_valid())
+                set_selection_start_index(index);
             select_range(index);
             select_range(index);
         }
         }