mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 20:28:11 +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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (!m_context_menu) {
|
||||
|
|
|
@ -15,6 +15,7 @@ public:
|
|||
virtual void on_mouseup(GMouseEvent&) override;
|
||||
virtual void on_contextmenu(GContextMenuEvent&) override;
|
||||
virtual void on_second_paint(GPaintEvent&) override;
|
||||
virtual void on_keydown(GKeyEvent&) override;
|
||||
|
||||
private:
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (m_primary_color == color)
|
||||
|
|
|
@ -32,11 +32,13 @@ public:
|
|||
Function<void(Color)> on_secondary_color_change;
|
||||
|
||||
private:
|
||||
virtual bool accepts_focus() const override { return true; }
|
||||
virtual void paint_event(GPaintEvent&) override;
|
||||
virtual void second_paint_event(GPaintEvent&) override;
|
||||
virtual void mousedown_event(GMouseEvent&) override;
|
||||
virtual void mouseup_event(GMouseEvent&) override;
|
||||
virtual void mousemove_event(GMouseEvent&) override;
|
||||
virtual void keydown_event(GKeyEvent&) override;
|
||||
|
||||
RefPtr<GraphicsBitmap> m_bitmap;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "PaintableWidget.h"
|
||||
class GMouseEvent;
|
||||
|
||||
class Tool {
|
||||
public:
|
||||
|
@ -14,6 +13,7 @@ public:
|
|||
virtual void on_mouseup(GMouseEvent&) {}
|
||||
virtual void on_contextmenu(GContextMenuEvent&) {}
|
||||
virtual void on_second_paint(GPaintEvent&) {}
|
||||
virtual void on_keydown(GKeyEvent&) {}
|
||||
|
||||
void clear() { m_widget = nullptr; }
|
||||
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);
|
||||
|
||||
auto paintable_widget = PaintableWidget::construct(vertical_container);
|
||||
paintable_widget->set_focus(true);
|
||||
PaletteWidget::construct(*paintable_widget, vertical_container);
|
||||
|
||||
window->show();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue