From 92800cff4ae6a98bfad6b49c2ca1d8fbf5d8d90f Mon Sep 17 00:00:00 2001 From: Caoimhe Date: Sun, 19 Mar 2023 20:03:20 +0000 Subject: [PATCH] Presenter: Add a "Resize to Fit Content" action When resizing, it can be hard to get the content to appear nicely without a black border where the window's aspect ratio doesn't match the content's aspect ratio. With this new action, it is possible to automatically adjust the window's size to match the content's aspect ratio. When it is resizing, it will maintain the width of the window, but adjust the height to match the aspect ratio of the content. --- Userland/Applications/Presenter/PresenterWidget.cpp | 9 +++++++++ Userland/Applications/Presenter/PresenterWidget.h | 1 + 2 files changed, 10 insertions(+) diff --git a/Userland/Applications/Presenter/PresenterWidget.cpp b/Userland/Applications/Presenter/PresenterWidget.cpp index f2377d32001..52d3bf7719c 100644 --- a/Userland/Applications/Presenter/PresenterWidget.cpp +++ b/Userland/Applications/Presenter/PresenterWidget.cpp @@ -100,8 +100,17 @@ ErrorOr PresenterWidget::initialize_menubar() auto* window = this->window(); window->set_fullscreen(!window->is_fullscreen()); }); + m_resize_to_fit_content_action = GUI::Action::create("Resize to Fit &Content", { KeyModifier::Mod_Alt, KeyCode::Key_C }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/scale.png"sv)), [this](auto&) { + if (m_current_presentation) { + auto presentation_size = m_current_presentation->normative_size(); + auto* window = this->window(); + + window->resize(window->size().match_aspect_ratio(presentation_size.aspect_ratio(), Orientation::Horizontal)); + } + }); TRY(view_menu->try_add_action(*m_full_screen_action)); + TRY(view_menu->try_add_action(*m_resize_to_fit_content_action)); update_slides_actions(); diff --git a/Userland/Applications/Presenter/PresenterWidget.h b/Userland/Applications/Presenter/PresenterWidget.h index 45c29583951..b23795685ea 100644 --- a/Userland/Applications/Presenter/PresenterWidget.h +++ b/Userland/Applications/Presenter/PresenterWidget.h @@ -49,4 +49,5 @@ private: RefPtr m_present_from_first_slide_action; RefPtr m_full_screen_action; + RefPtr m_resize_to_fit_content_action; };