summaryrefslogtreecommitdiff
path: root/Userland/Applications
diff options
context:
space:
mode:
authorCaoimhe <caoimhebyrne06@gmail.com>2023-03-19 20:03:20 +0000
committerAndreas Kling <kling@serenityos.org>2023-03-21 10:10:29 +0100
commit92800cff4ae6a98bfad6b49c2ca1d8fbf5d8d90f (patch)
tree02cc58d934f4e79c2da0431344579d52611daca8 /Userland/Applications
parent72a45799e058d3a65da9e5bcbe5f08354eb98d9a (diff)
downloadserenity-92800cff4ae6a98bfad6b49c2ca1d8fbf5d8d90f.zip
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.
Diffstat (limited to 'Userland/Applications')
-rw-r--r--Userland/Applications/Presenter/PresenterWidget.cpp9
-rw-r--r--Userland/Applications/Presenter/PresenterWidget.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/Userland/Applications/Presenter/PresenterWidget.cpp b/Userland/Applications/Presenter/PresenterWidget.cpp
index f2377d3200..52d3bf7719 100644
--- a/Userland/Applications/Presenter/PresenterWidget.cpp
+++ b/Userland/Applications/Presenter/PresenterWidget.cpp
@@ -100,8 +100,17 @@ ErrorOr<void> 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 45c2958395..b23795685e 100644
--- a/Userland/Applications/Presenter/PresenterWidget.h
+++ b/Userland/Applications/Presenter/PresenterWidget.h
@@ -49,4 +49,5 @@ private:
RefPtr<GUI::Action> m_present_from_first_slide_action;
RefPtr<GUI::Action> m_full_screen_action;
+ RefPtr<GUI::Action> m_resize_to_fit_content_action;
};