diff --git a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp index 62a7f3614e..8eb56fd787 100644 --- a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp +++ b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp @@ -28,12 +28,23 @@ namespace rsx } home_menu_checkbox::home_menu_checkbox(cfg::_bool* setting, const std::string& text) : home_menu_setting(setting, text) - { - m_background.set_size(menu_entry_margin, menu_entry_margin); - m_background.set_pos(overlay::virtual_width / 2 + menu_entry_margin, 0); + {} - m_checkbox.set_size(m_background.w - 2, m_background.h - 2); - m_checkbox.set_pos(m_background.x, m_background.y); + void home_menu_checkbox::set_size(u16 w, u16 h) + { + set_reserved_width(w / 2 + menu_entry_margin); + home_menu_setting::set_size(w, h); + + auto box = std::make_unique(); + m_background = box->add_element(); + m_checkbox = box->add_element(); + + m_background->set_size(menu_checkbox_size, menu_checkbox_size); + m_checkbox->set_size(m_background->w - 2, m_background->h - 2); + m_checkbox->set_pos(1, 1); + + box->set_pos(0, 16); + add_element(box); } compiled_resource& home_menu_checkbox::get_compiled() @@ -42,21 +53,14 @@ namespace rsx if (!is_compiled()) { - const f32 col = m_last_value ? 1.0f : 0.3f; - const f32 bkg = m_last_value ? 0.3f : 1.0f; - m_background.back_color.r = bkg; - m_background.back_color.g = bkg; - m_background.back_color.b = bkg; - m_checkbox.back_color.r = col; - m_checkbox.back_color.g = col; - m_checkbox.back_color.b = col; - - m_background.set_pos(m_background.x, y + (h - m_background.h) / 2); - m_checkbox.set_pos(m_background.x + 1, m_background.y + 1); + m_background->back_color = { 1.f }; + m_checkbox->back_color = { 0.3f }; + m_checkbox->back_color.a = 1.f; + m_checkbox->set_visible(!m_last_value); compiled_resources = horizontal_layout::get_compiled(); - compiled_resources.add(m_background.get_compiled()); - compiled_resources.add(m_checkbox.get_compiled()); + compiled_resources.add(m_background->get_compiled()); + compiled_resources.add(m_checkbox->get_compiled()); } return compiled_resources; diff --git a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.h b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.h index 3061184066..2b5ce943f0 100644 --- a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.h +++ b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.h @@ -9,7 +9,8 @@ namespace rsx namespace overlays { static constexpr u16 menu_entry_height = 40; - static constexpr u16 menu_entry_margin = 20; + static constexpr u16 menu_entry_margin = 30; + static constexpr u16 menu_checkbox_size = 20; static constexpr u16 element_height = 25; enum class page_navigation @@ -31,30 +32,50 @@ namespace rsx struct home_menu_setting : horizontal_layout { public: - home_menu_setting(C* setting, const std::string& text) : m_setting(setting) + home_menu_setting(C* setting, const std::string& text) + : m_setting(setting) + , m_label_text(text) { - std::unique_ptr layout = std::make_unique(); + update_value(true); + auto_resize = false; + } + + void set_reserved_width(u16 size) + { + m_reserved_width = size; + } + + void set_size(u16 w, u16 h = menu_entry_height) override + { + clear_items(); + + std::unique_ptr layout = std::make_unique(); std::unique_ptr padding = std::make_unique(); - std::unique_ptr title = std::make_unique