Просмотр исходного кода

2048: Give the board view a nice GUI::Frame look :^)

Andreas Kling 4 лет назад
Родитель
Сommit
3bb36dbd3f
2 измененных файлов с 11 добавлено и 6 удалено
  1. 6 1
      Userland/Games/2048/BoardView.cpp
  2. 5 5
      Userland/Games/2048/BoardView.h

+ 6 - 1
Userland/Games/2048/BoardView.cpp

@@ -177,11 +177,16 @@ Gfx::Color BoardView::text_color_for_cell(u32 value)
     return Color::from_rgb(0xf9f6f2);
 }
 
-void BoardView::paint_event(GUI::PaintEvent&)
+void BoardView::paint_event(GUI::PaintEvent& event)
 {
+    Frame::paint_event(event);
+
     Color background_color = Color::from_rgb(0xbbada0);
 
     GUI::Painter painter(*this);
+    painter.add_clip_rect(event.rect());
+    painter.add_clip_rect(frame_inner_rect());
+    painter.translate(frame_thickness(), frame_thickness());
 
     if (!m_board) {
         painter.fill_rect(rect(), background_color);

+ 5 - 5
Userland/Games/2048/BoardView.h

@@ -27,20 +27,20 @@
 #pragma once
 
 #include "Game.h"
-#include <LibGUI/Widget.h>
+#include <LibGUI/Frame.h>
 
-class BoardView final : public GUI::Widget {
-    C_OBJECT(BoardView)
+class BoardView final : public GUI::Frame {
+    C_OBJECT(BoardView);
 
 public:
-    BoardView(const Game::Board*);
     virtual ~BoardView() override;
-
     void set_board(const Game::Board* board);
 
     Function<void(Game::Direction)> on_move;
 
 private:
+    explicit BoardView(const Game::Board*);
+
     virtual void resize_event(GUI::ResizeEvent&) override;
     virtual void paint_event(GUI::PaintEvent&) override;
     virtual void keydown_event(GUI::KeyEvent&) override;