Bladeren bron

LibGUI: Paint a focus rect around the cursor index in TableView

Andreas Kling 4 jaren geleden
bovenliggende
commit
c0076681ad
2 gewijzigde bestanden met toevoegingen van 11 en 2 verwijderingen
  1. 9 1
      Libraries/LibGUI/TableView.cpp
  2. 2 1
      Libraries/LibGUI/TableView.h

+ 9 - 1
Libraries/LibGUI/TableView.cpp

@@ -99,7 +99,9 @@ void TableView::paint_event(PaintEvent& event)
                 key_column_background_color = widget_background_color.darkened(0.9f);
             }
         }
-        painter.fill_rect(row_rect(painted_item_index), background_color);
+
+        auto row_rect = this->row_rect(painted_item_index);
+        painter.fill_rect(row_rect, background_color);
 
         int x = x_offset;
         for (int column_index = 0; column_index < model()->column_count(); ++column_index) {
@@ -152,6 +154,12 @@ void TableView::paint_event(PaintEvent& event)
 
             x += column_width + horizontal_padding() * 2;
         }
+
+
+        if (is_focused() && cursor_style() == CursorStyle::Row && row_index == cursor_index().row()) {
+            painter.draw_rect(row_rect, widget_background_color);
+            painter.draw_focus_rect(row_rect, palette().focus_outline());
+        }
         ++painted_item_index;
     };
 

+ 2 - 1
Libraries/LibGUI/TableView.h

@@ -45,6 +45,7 @@ public:
     enum class CursorStyle {
         None,
         Item,
+        Row,
     };
 
     GridStyle grid_style() const { return m_grid_style; }
@@ -63,7 +64,7 @@ protected:
 
 private:
     GridStyle m_grid_style { GridStyle::None };
-    CursorStyle m_cursor_style { CursorStyle::None };
+    CursorStyle m_cursor_style { CursorStyle::Row };
 };
 
 }