mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-25 14:05:15 +00:00
I originally put it in FormWidget because CursorTool was clueless about painting. This patch adds Tool::on_second_paint() which allows all the tools to hook into the second paint pass.
35 lines
733 B
C++
35 lines
733 B
C++
#pragma once
|
|
|
|
#include <AK/Noncopyable.h>
|
|
|
|
class FormEditorWidget;
|
|
class GKeyEvent;
|
|
class GMouseEvent;
|
|
class GPaintEvent;
|
|
class GPainter;
|
|
|
|
class Tool {
|
|
AK_MAKE_NONCOPYABLE(Tool)
|
|
AK_MAKE_NONMOVABLE(Tool)
|
|
public:
|
|
virtual ~Tool() {}
|
|
|
|
virtual void on_mousedown(GMouseEvent&) = 0;
|
|
virtual void on_mouseup(GMouseEvent&) = 0;
|
|
virtual void on_mousemove(GMouseEvent&) = 0;
|
|
virtual void on_keydown(GKeyEvent&) = 0;
|
|
virtual void on_second_paint(GPainter&, GPaintEvent&) {}
|
|
|
|
virtual const char* class_name() const = 0;
|
|
|
|
virtual void attach() {}
|
|
virtual void detach() {}
|
|
|
|
protected:
|
|
explicit Tool(FormEditorWidget& editor)
|
|
: m_editor(editor)
|
|
{
|
|
}
|
|
|
|
FormEditorWidget& m_editor;
|
|
};
|