mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:37:43 +00:00
PaintBrush: Allow canceling a line by pressing the Escape key
Sometimes you change your mind mid-line, and just want to get out of the situation. You can now do that :^)
This commit is contained in:
parent
4e6cd541c9
commit
b09ac26311
6 changed files with 21 additions and 1 deletions
|
@ -58,6 +58,15 @@ void LineTool::on_second_paint(GPaintEvent& event)
|
||||||
painter.draw_line(m_line_start_position, m_line_end_position, m_widget->color_for(m_drawing_button), m_thickness);
|
painter.draw_line(m_line_start_position, m_line_end_position, m_widget->color_for(m_drawing_button), m_thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LineTool::on_keydown(GKeyEvent& event)
|
||||||
|
{
|
||||||
|
if (event.key() == Key_Escape && m_drawing_button != GMouseButton::None) {
|
||||||
|
m_drawing_button = GMouseButton::None;
|
||||||
|
m_widget->update();
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LineTool::on_contextmenu(GContextMenuEvent& event)
|
void LineTool::on_contextmenu(GContextMenuEvent& event)
|
||||||
{
|
{
|
||||||
if (!m_context_menu) {
|
if (!m_context_menu) {
|
||||||
|
|
|
@ -15,6 +15,7 @@ public:
|
||||||
virtual void on_mouseup(GMouseEvent&) override;
|
virtual void on_mouseup(GMouseEvent&) override;
|
||||||
virtual void on_contextmenu(GContextMenuEvent&) override;
|
virtual void on_contextmenu(GContextMenuEvent&) override;
|
||||||
virtual void on_second_paint(GPaintEvent&) override;
|
virtual void on_second_paint(GPaintEvent&) override;
|
||||||
|
virtual void on_keydown(GKeyEvent&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual const char* class_name() const override { return "LineTool"; }
|
virtual const char* class_name() const override { return "LineTool"; }
|
||||||
|
|
|
@ -96,6 +96,13 @@ void PaintableWidget::second_paint_event(GPaintEvent& event)
|
||||||
GWidget::second_paint_event(event);
|
GWidget::second_paint_event(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PaintableWidget::keydown_event(GKeyEvent& event)
|
||||||
|
{
|
||||||
|
if (m_tool)
|
||||||
|
m_tool->on_keydown(event);
|
||||||
|
GWidget::keydown_event(event);
|
||||||
|
}
|
||||||
|
|
||||||
void PaintableWidget::set_primary_color(Color color)
|
void PaintableWidget::set_primary_color(Color color)
|
||||||
{
|
{
|
||||||
if (m_primary_color == color)
|
if (m_primary_color == color)
|
||||||
|
|
|
@ -32,11 +32,13 @@ public:
|
||||||
Function<void(Color)> on_secondary_color_change;
|
Function<void(Color)> on_secondary_color_change;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual bool accepts_focus() const override { return true; }
|
||||||
virtual void paint_event(GPaintEvent&) override;
|
virtual void paint_event(GPaintEvent&) override;
|
||||||
virtual void second_paint_event(GPaintEvent&) override;
|
virtual void second_paint_event(GPaintEvent&) override;
|
||||||
virtual void mousedown_event(GMouseEvent&) override;
|
virtual void mousedown_event(GMouseEvent&) override;
|
||||||
virtual void mouseup_event(GMouseEvent&) override;
|
virtual void mouseup_event(GMouseEvent&) override;
|
||||||
virtual void mousemove_event(GMouseEvent&) override;
|
virtual void mousemove_event(GMouseEvent&) override;
|
||||||
|
virtual void keydown_event(GKeyEvent&) override;
|
||||||
|
|
||||||
RefPtr<GraphicsBitmap> m_bitmap;
|
RefPtr<GraphicsBitmap> m_bitmap;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "PaintableWidget.h"
|
#include "PaintableWidget.h"
|
||||||
class GMouseEvent;
|
|
||||||
|
|
||||||
class Tool {
|
class Tool {
|
||||||
public:
|
public:
|
||||||
|
@ -14,6 +13,7 @@ public:
|
||||||
virtual void on_mouseup(GMouseEvent&) {}
|
virtual void on_mouseup(GMouseEvent&) {}
|
||||||
virtual void on_contextmenu(GContextMenuEvent&) {}
|
virtual void on_contextmenu(GContextMenuEvent&) {}
|
||||||
virtual void on_second_paint(GPaintEvent&) {}
|
virtual void on_second_paint(GPaintEvent&) {}
|
||||||
|
virtual void on_keydown(GKeyEvent&) {}
|
||||||
|
|
||||||
void clear() { m_widget = nullptr; }
|
void clear() { m_widget = nullptr; }
|
||||||
void setup(PaintableWidget& widget) { m_widget = widget.make_weak_ptr(); }
|
void setup(PaintableWidget& widget) { m_widget = widget.make_weak_ptr(); }
|
||||||
|
|
|
@ -33,6 +33,7 @@ int main(int argc, char** argv)
|
||||||
vertical_container->layout()->set_spacing(0);
|
vertical_container->layout()->set_spacing(0);
|
||||||
|
|
||||||
auto paintable_widget = PaintableWidget::construct(vertical_container);
|
auto paintable_widget = PaintableWidget::construct(vertical_container);
|
||||||
|
paintable_widget->set_focus(true);
|
||||||
PaletteWidget::construct(*paintable_widget, vertical_container);
|
PaletteWidget::construct(*paintable_widget, vertical_container);
|
||||||
|
|
||||||
window->show();
|
window->show();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue