diff --git a/src/GUIHolder.cpp b/src/GUIHolder.cpp index dd54a57..855450e 100644 --- a/src/GUIHolder.cpp +++ b/src/GUIHolder.cpp @@ -117,10 +117,7 @@ float GUIHolder::final_gui_scale() { } void GUIHolder::calculate_final_gui_scale() { - finalCalculatedGuiScale = final_gui_scale_not_fit(); - //Vector2f maxWindowSizeBeforeForcedFit = final_gui_scale_not_fit() * Vector2f{700.0f, 700.0f}; - //Vector2f fitRatio = {main.window.size.x() / maxWindowSizeBeforeForcedFit.x(), main.window.size.y() / maxWindowSizeBeforeForcedFit.y()}; - //finalCalculatedGuiScale = final_gui_scale_not_fit() * std::min(std::min(fitRatio.x(), fitRatio.y()), 1.0f); + finalCalculatedGuiScale = main.calculate_gui_scale(); } float GUIHolder::final_gui_scale_not_fit() { diff --git a/src/GUIHolder.hpp b/src/GUIHolder.hpp index 7da824f..67d2d8a 100644 --- a/src/GUIHolder.hpp +++ b/src/GUIHolder.hpp @@ -55,9 +55,10 @@ class GUIHolder { std::optional get_text_box_start_info(); float final_gui_scale(); + float final_gui_scale_not_fit(); + private: void calculate_final_gui_scale(); - float final_gui_scale_not_fit(); float finalCalculatedGuiScale; diff --git a/src/MainProgram.cpp b/src/MainProgram.cpp index d5f40c0..ca0650a 100755 --- a/src/MainProgram.cpp +++ b/src/MainProgram.cpp @@ -557,6 +557,10 @@ void MainProgram::run_new_screen_func() { } } +float MainProgram::calculate_gui_scale() { + return screen->calculate_gui_scale(); +} + void MainProgram::set_screen(std::function(std::unique_ptr)> screenFunc) { newScreenFunc = screenFunc; } diff --git a/src/MainProgram.hpp b/src/MainProgram.hpp index e7d6fe6..81194df 100644 --- a/src/MainProgram.hpp +++ b/src/MainProgram.hpp @@ -201,6 +201,8 @@ class MainProgram { std::shared_ptr versionFile; } updateCheckerData; + float calculate_gui_scale(); + private: std::unordered_set tabsToClose; void close_set_to_close_tabs(); diff --git a/src/Screens/DesktopDrawingProgramScreen.cpp b/src/Screens/DesktopDrawingProgramScreen.cpp index 4bc4120..5de5f75 100644 --- a/src/Screens/DesktopDrawingProgramScreen.cpp +++ b/src/Screens/DesktopDrawingProgramScreen.cpp @@ -94,3 +94,9 @@ void DesktopDrawingProgramScreen::on_tab_close() { else main.switch_to_tab(0); } + +float DesktopDrawingProgramScreen::calculate_gui_scale() { + Vector2f maxWindowSizeBeforeForcedFit = main.g.final_gui_scale_not_fit() * Vector2f{700.0f, 700.0f}; + Vector2f fitRatio = {main.window.size.x() / maxWindowSizeBeforeForcedFit.x(), main.window.size.y() / maxWindowSizeBeforeForcedFit.y()}; + return main.g.final_gui_scale_not_fit() * std::min(std::min(fitRatio.x(), fitRatio.y()), 1.0f); +} diff --git a/src/Screens/DesktopDrawingProgramScreen.hpp b/src/Screens/DesktopDrawingProgramScreen.hpp index 0658f82..b717dc5 100644 --- a/src/Screens/DesktopDrawingProgramScreen.hpp +++ b/src/Screens/DesktopDrawingProgramScreen.hpp @@ -30,6 +30,7 @@ class DesktopDrawingProgramScreen : public DrawingProgramScreen { virtual void input_text_key_callback(const InputManager::KeyCallbackArgs& key) override; virtual void open_file_selector(const std::string& filePickerName, const std::vector& extensionFilters, OpenFileSelectorCallback postSelectionFunc, const std::string& fileName = "", bool isSaving = false) override; virtual void on_tab_close() override; + virtual float calculate_gui_scale() override; private: Toolbar toolbar; diff --git a/src/Screens/Screen.cpp b/src/Screens/Screen.cpp index 97cb3ee..50189f8 100644 --- a/src/Screens/Screen.cpp +++ b/src/Screens/Screen.cpp @@ -85,6 +85,7 @@ void Screen::input_window_scale_callback(const InputManager::WindowScaleCallback void Screen::input_app_about_to_go_to_background_callback() {} void Screen::input_app_about_to_go_to_foreground_callback() {} void Screen::on_tab_close() {} +float Screen::calculate_gui_scale() { return main.g.final_gui_scale_not_fit(); } std::optional Screen::get_text_box_start_info() { return std::nullopt; } Screen::~Screen() {} diff --git a/src/Screens/Screen.hpp b/src/Screens/Screen.hpp index e391053..3ab9f55 100644 --- a/src/Screens/Screen.hpp +++ b/src/Screens/Screen.hpp @@ -66,6 +66,7 @@ class Screen { virtual void input_window_scale_callback(const InputManager::WindowScaleCallbackArgs& w); virtual void input_app_about_to_go_to_background_callback(); virtual void input_app_about_to_go_to_foreground_callback(); + virtual float calculate_gui_scale(); virtual void on_tab_close(); virtual std::optional get_text_box_start_info();