diff options
author | Andres Vieira <anvieiravazquez@gmail.com> | 2020-04-28 15:20:07 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-28 15:22:22 +0200 |
commit | bcd5e972860e155c2ac48efd3a44cc89441a0e3b (patch) | |
tree | 297517c8449aef9074a4c1d91d9c26650d08d841 /Applications/DisplayProperties | |
parent | 19c744ab823e9b4affc2f5de21c9d87ae876d80d (diff) | |
download | serenity-bcd5e972860e155c2ac48efd3a44cc89441a0e3b.zip |
DisplayProperties: Allow going from a wallpaper to a background colour
Before this patch DisplayProperties couldn't handle correctly going from
a set wallpaper to a background color.
This patch adds a new "Use background color" as a first option for the
Wallpaper combobox as well as correct handling of setting an invalid
bitmap, thus making the WindowManager draw the background color
Diffstat (limited to 'Applications/DisplayProperties')
-rw-r--r-- | Applications/DisplayProperties/DisplayProperties.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/Applications/DisplayProperties/DisplayProperties.cpp b/Applications/DisplayProperties/DisplayProperties.cpp index 8cc95fff84..35c7410274 100644 --- a/Applications/DisplayProperties/DisplayProperties.cpp +++ b/Applications/DisplayProperties/DisplayProperties.cpp @@ -72,6 +72,8 @@ void DisplayPropertiesWidget::create_wallpaper_list() { Core::DirIterator iterator("/res/wallpapers/", Core::DirIterator::Flags::SkipDots); + m_wallpapers.append("Use background color"); + while (iterator.has_next()) { m_wallpapers.append(iterator.next_path()); } @@ -123,11 +125,15 @@ void DisplayPropertiesWidget::create_frame() m_wallpaper_combo->set_model(*ItemListModel<AK::String>::create(m_wallpapers)); m_wallpaper_combo->on_change = [this](auto& text, const GUI::ModelIndex& index) { String path = text; - if (index.is_valid()) { - StringBuilder builder; - builder.append("/res/wallpapers/"); - builder.append(path); - path = builder.to_string(); + if (index.row() == 0) { + path = ""; + } else { + if (index.is_valid()) { + StringBuilder builder; + builder.append("/res/wallpapers/"); + builder.append(path); + path = builder.to_string(); + } } this->m_monitor_widget->set_wallpaper(path); @@ -281,6 +287,8 @@ void DisplayPropertiesWidget::load_current_settings() m_wallpaper_combo->set_text(selected_wallpaper); m_wallpaper_combo->set_only_allow_values_from_model(true); } + } else { + m_wallpaper_combo->set_selected_index(0); } /// Mode ////////////////////////////////////////////////////////////////////////////////////// @@ -340,11 +348,11 @@ void DisplayPropertiesWidget::send_settings_to_window_server() if (!m_monitor_widget->wallpaper().is_empty()) { GUI::Desktop::the().set_wallpaper(m_monitor_widget->wallpaper()); + } else { + dbg() << "Setting color input: __" << m_color_input->text() << "__"; + GUI::Desktop::the().set_wallpaper(""); + GUI::Desktop::the().set_background_color(m_color_input->text()); } GUI::Desktop::the().set_wallpaper_mode(m_monitor_widget->wallpaper_mode()); - - if (m_color_input->color() != this->palette().desktop_background()) { - GUI::Desktop::the().set_background_color(m_color_input->text()); - } } |