From b48b8c372edb8b2d070bec92c557f63809295e43 Mon Sep 17 00:00:00 2001 From: Jagger De Leo Date: Thu, 15 Apr 2021 21:09:25 -0400 Subject: [PATCH] PixelPaint: Add Zoom Reset button to new View Menubar. If you lose your image while panning and zooming around, it is handy to have a reset function to get back home. :^) --- Userland/Applications/PixelPaint/ImageEditor.cpp | 9 +++++++++ Userland/Applications/PixelPaint/ImageEditor.h | 1 + Userland/Applications/PixelPaint/main.cpp | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/Userland/Applications/PixelPaint/ImageEditor.cpp b/Userland/Applications/PixelPaint/ImageEditor.cpp index e91cbcf2754..7fc67a9d59d 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.cpp +++ b/Userland/Applications/PixelPaint/ImageEditor.cpp @@ -393,6 +393,15 @@ void ImageEditor::scale_centered_on_position(const Gfx::IntPoint& position, floa relayout(); } +void ImageEditor::reset_scale_and_position() +{ + if (m_scale != 1.0f) + m_scale = 1.0f; + + m_pan_origin = Gfx::FloatPoint(0, 0); + relayout(); +} + void ImageEditor::relayout() { if (!image()) diff --git a/Userland/Applications/PixelPaint/ImageEditor.h b/Userland/Applications/PixelPaint/ImageEditor.h index ab5de26bff8..ae4576ff4b6 100644 --- a/Userland/Applications/PixelPaint/ImageEditor.h +++ b/Userland/Applications/PixelPaint/ImageEditor.h @@ -64,6 +64,7 @@ public: Layer* layer_at_editor_position(const Gfx::IntPoint&); void scale_centered_on_position(const Gfx::IntPoint&, float); + void reset_scale_and_position(); Color primary_color() const { return m_primary_color; } void set_primary_color(Color); diff --git a/Userland/Applications/PixelPaint/main.cpp b/Userland/Applications/PixelPaint/main.cpp index eba74da9ce2..0b49c8ea63c 100644 --- a/Userland/Applications/PixelPaint/main.cpp +++ b/Userland/Applications/PixelPaint/main.cpp @@ -217,6 +217,14 @@ int main(int argc, char** argv) image_editor.redo(); }); edit_menu.add_action(redo_action); + + auto& view_menu = menubar->add_menu("&View"); + view_menu.add_action(GUI::Action::create( + "&Reset Zoom", { Mod_Ctrl, Key_0 }, [&](auto&) { + image_editor.reset_scale_and_position(); + return; + }, + window)); auto& tool_menu = menubar->add_menu("&Tool"); toolbox.for_each_tool([&](auto& tool) {