mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 07:17:35 +00:00
PixelPaint: Allow panning when right-clicking with MoveTool
The MoveTool now lets you pan if you're dragging with a right click. Previously, right-clicking did not perform any actions at all, so this isn't removing any old functionality.
This commit is contained in:
parent
abefe2391d
commit
dd0cc58d6c
2 changed files with 26 additions and 0 deletions
|
@ -25,6 +25,14 @@ MoveTool::~MoveTool()
|
||||||
|
|
||||||
void MoveTool::on_mousedown(Layer* layer, MouseEvent& event)
|
void MoveTool::on_mousedown(Layer* layer, MouseEvent& event)
|
||||||
{
|
{
|
||||||
|
if (event.image_event().button() == GUI::MouseButton::Right && !m_is_panning) {
|
||||||
|
m_is_panning = true;
|
||||||
|
m_event_origin = event.raw_event().position();
|
||||||
|
m_saved_pan_origin = m_editor->pan_origin();
|
||||||
|
m_editor->set_override_cursor(Gfx::StandardCursor::Drag);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!layer)
|
if (!layer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -41,6 +49,15 @@ void MoveTool::on_mousedown(Layer* layer, MouseEvent& event)
|
||||||
|
|
||||||
void MoveTool::on_mousemove(Layer* layer, MouseEvent& event)
|
void MoveTool::on_mousemove(Layer* layer, MouseEvent& event)
|
||||||
{
|
{
|
||||||
|
if (m_is_panning) {
|
||||||
|
auto& raw_event = event.raw_event();
|
||||||
|
auto delta = raw_event.position() - m_event_origin;
|
||||||
|
m_editor->set_pan_origin(m_saved_pan_origin.translated(
|
||||||
|
-delta.x(),
|
||||||
|
-delta.y()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!layer)
|
if (!layer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -54,6 +71,12 @@ void MoveTool::on_mousemove(Layer* layer, MouseEvent& event)
|
||||||
|
|
||||||
void MoveTool::on_mouseup(Layer* layer, MouseEvent& event)
|
void MoveTool::on_mouseup(Layer* layer, MouseEvent& event)
|
||||||
{
|
{
|
||||||
|
if (event.image_event().button() == GUI::MouseButton::Right && m_is_panning) {
|
||||||
|
m_is_panning = false;
|
||||||
|
m_editor->set_override_cursor(cursor());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!layer)
|
if (!layer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,9 @@ private:
|
||||||
RefPtr<Layer> m_layer_being_moved;
|
RefPtr<Layer> m_layer_being_moved;
|
||||||
Gfx::IntPoint m_event_origin;
|
Gfx::IntPoint m_event_origin;
|
||||||
Gfx::IntPoint m_layer_origin;
|
Gfx::IntPoint m_layer_origin;
|
||||||
|
|
||||||
|
bool m_is_panning { false };
|
||||||
|
Gfx::FloatPoint m_saved_pan_origin;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue