Bläddra i källkod

LibGUI: GTableView should clear the selection if clicking outside items.

Andreas Kling 6 år sedan
förälder
incheckning
62b4f39cd4
2 ändrade filer med 11 tillägg och 4 borttagningar
  1. 4 0
      Applications/ProcessManager/ProcessTableModel.cpp
  2. 7 4
      LibGUI/GTableView.cpp

+ 4 - 0
Applications/ProcessManager/ProcessTableModel.cpp

@@ -66,6 +66,10 @@ GModelIndex ProcessTableModel::selected_index() const
 
 void ProcessTableModel::set_selected_index(GModelIndex index)
 {
+    if (!index.is_valid()) {
+        m_selected_row = -1;
+        return;
+    }
     if (index.row() >= 0 && index.row() < m_pids.size())
         m_selected_row = index.row();
 }

+ 7 - 4
LibGUI/GTableView.cpp

@@ -58,12 +58,15 @@ void GTableView::mousedown_event(GMouseEvent& event)
     auto adjusted_position = event.position().translated(0, m_scrollbar->value());
     if (event.button() == GMouseButton::Left) {
         for (int i = 0; i < item_count(); ++i) {
-            if (!row_rect(i).contains(adjusted_position))
-                continue;
-            m_model->set_selected_index({ i, 0 });
-            update();
+            if (row_rect(i).contains(adjusted_position)) {
+                m_model->set_selected_index({ i, 0 });
+                update();
+                return;
+            }
         }
     }
+    m_model->set_selected_index({ });
+    update();
 }
 
 void GTableView::paint_event(GPaintEvent&)