mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 23:17:45 +00:00
LibGfx: Use ErrorOr<T> for Bitmap::try_load_from_file()
This was used in a lot of places, so this patch makes liberal use of ErrorOr<T>::release_value_but_fixme_should_propagate_errors().
This commit is contained in:
parent
16f064d9be
commit
235f39e449
104 changed files with 412 additions and 397 deletions
|
@ -61,7 +61,7 @@ ClockWidget::ClockWidget()
|
|||
m_prev_date = navigation_container.add<GUI::Button>();
|
||||
m_prev_date->set_button_style(Gfx::ButtonStyle::Coolbar);
|
||||
m_prev_date->set_fixed_size(24, 24);
|
||||
m_prev_date->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/go-back.png"));
|
||||
m_prev_date->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/go-back.png").release_value_but_fixme_should_propagate_errors());
|
||||
m_prev_date->on_click = [&](auto) {
|
||||
unsigned view_month = m_calendar->view_month();
|
||||
unsigned view_year = m_calendar->view_year();
|
||||
|
@ -95,7 +95,7 @@ ClockWidget::ClockWidget()
|
|||
m_next_date = navigation_container.add<GUI::Button>();
|
||||
m_next_date->set_button_style(Gfx::ButtonStyle::Coolbar);
|
||||
m_next_date->set_fixed_size(24, 24);
|
||||
m_next_date->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/go-forward.png"));
|
||||
m_next_date->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/go-forward.png").release_value_but_fixme_should_propagate_errors());
|
||||
m_next_date->on_click = [&](auto) {
|
||||
unsigned view_month = m_calendar->view_month();
|
||||
unsigned view_year = m_calendar->view_year();
|
||||
|
@ -145,7 +145,7 @@ ClockWidget::ClockWidget()
|
|||
m_jump_to_button = settings_container.add<GUI::Button>();
|
||||
m_jump_to_button->set_button_style(Gfx::ButtonStyle::Coolbar);
|
||||
m_jump_to_button->set_fixed_size(24, 24);
|
||||
m_jump_to_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/calendar-date.png"));
|
||||
m_jump_to_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/calendar-date.png").release_value_but_fixme_should_propagate_errors());
|
||||
m_jump_to_button->set_tooltip("Jump to today");
|
||||
m_jump_to_button->on_click = [this](auto) {
|
||||
jump_to_current_date();
|
||||
|
@ -154,7 +154,7 @@ ClockWidget::ClockWidget()
|
|||
m_calendar_launcher = settings_container.add<GUI::Button>();
|
||||
m_calendar_launcher->set_button_style(Gfx::ButtonStyle::Coolbar);
|
||||
m_calendar_launcher->set_fixed_size(24, 24);
|
||||
m_calendar_launcher->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-calendar.png"));
|
||||
m_calendar_launcher->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-calendar.png").release_value_but_fixme_should_propagate_errors());
|
||||
m_calendar_launcher->set_tooltip("Calendar");
|
||||
m_calendar_launcher->on_click = [](auto) {
|
||||
Core::Process::spawn("/bin/Calendar"sv);
|
||||
|
|
|
@ -63,7 +63,7 @@ ShutdownDialog::ShutdownDialog()
|
|||
icon_wrapper.set_layout<GUI::VerticalBoxLayout>();
|
||||
|
||||
auto& icon_image = icon_wrapper.add<GUI::ImageWidget>();
|
||||
icon_image.set_bitmap(Gfx::Bitmap::try_load_from_file("/res/icons/32x32/shutdown.png"));
|
||||
icon_image.set_bitmap(Gfx::Bitmap::try_load_from_file("/res/icons/32x32/shutdown.png").release_value_but_fixme_should_propagate_errors());
|
||||
|
||||
auto& right_container = content_container.add<GUI::Widget>();
|
||||
right_container.set_layout<GUI::VerticalBoxLayout>();
|
||||
|
@ -112,7 +112,7 @@ ShutdownDialog::ShutdownDialog()
|
|||
center_on_screen();
|
||||
set_resizable(false);
|
||||
set_title("Exit SerenityOS");
|
||||
set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/power.png"));
|
||||
set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/power.png").release_value_but_fixme_should_propagate_errors());
|
||||
|
||||
// Request WindowServer to re-update us on the current theme as we might've not been alive for the last notification.
|
||||
refresh_system_theme();
|
||||
|
|
|
@ -78,7 +78,7 @@ TaskbarWindow::TaskbarWindow(NonnullRefPtr<GUI::Menu> start_menu)
|
|||
m_task_button_container->set_layout<GUI::HorizontalBoxLayout>();
|
||||
m_task_button_container->layout()->set_spacing(3);
|
||||
|
||||
m_default_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window.png");
|
||||
m_default_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window.png").release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
m_applet_area_container = main_widget.add<GUI::Frame>();
|
||||
m_applet_area_container->set_frame_thickness(1);
|
||||
|
|
|
@ -113,7 +113,7 @@ NonnullRefPtr<GUI::Menu> build_system_menu()
|
|||
const Vector<String> sorted_app_categories = discover_apps_and_categories();
|
||||
auto system_menu = GUI::Menu::construct("\xE2\x9A\xA1"); // HIGH VOLTAGE SIGN
|
||||
|
||||
system_menu->add_action(GUI::Action::create("&About SerenityOS", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/ladyball.png"), [](auto&) {
|
||||
system_menu->add_action(GUI::Action::create("&About SerenityOS", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/ladyball.png").release_value_but_fixme_should_propagate_errors(), [](auto&) {
|
||||
Core::Process::spawn("/bin/About"sv);
|
||||
}));
|
||||
|
||||
|
@ -148,8 +148,9 @@ NonnullRefPtr<GUI::Menu> build_system_menu()
|
|||
auto& category_menu = parent_menu->add_submenu(child_category);
|
||||
auto category_icon_path = category_icons->read_entry("16x16", category);
|
||||
if (!category_icon_path.is_empty()) {
|
||||
auto icon = Gfx::Bitmap::try_load_from_file(category_icon_path);
|
||||
category_menu.set_icon(icon);
|
||||
auto icon_or_error = Gfx::Bitmap::try_load_from_file(category_icon_path);
|
||||
if (!icon_or_error.is_error())
|
||||
category_menu.set_icon(icon_or_error.release_value());
|
||||
}
|
||||
app_category_menus.set(category, category_menu);
|
||||
};
|
||||
|
@ -210,7 +211,7 @@ NonnullRefPtr<GUI::Menu> build_system_menu()
|
|||
g_themes_group.set_unchecking_allowed(false);
|
||||
|
||||
g_themes_menu = &system_menu->add_submenu("&Themes");
|
||||
g_themes_menu->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/themes.png"));
|
||||
g_themes_menu->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/themes.png").release_value_but_fixme_should_propagate_errors());
|
||||
|
||||
{
|
||||
Core::DirIterator dt("/res/themes", Core::DirIterator::SkipDots);
|
||||
|
@ -241,15 +242,15 @@ NonnullRefPtr<GUI::Menu> build_system_menu()
|
|||
}
|
||||
}
|
||||
|
||||
system_menu->add_action(GUI::Action::create("&Settings", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-settings.png"), [](auto&) {
|
||||
system_menu->add_action(GUI::Action::create("&Settings", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-settings.png").release_value_but_fixme_should_propagate_errors(), [](auto&) {
|
||||
Core::Process::spawn("/bin/Settings"sv);
|
||||
}));
|
||||
|
||||
system_menu->add_separator();
|
||||
system_menu->add_action(GUI::Action::create("&Help", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-help.png"), [](auto&) {
|
||||
system_menu->add_action(GUI::Action::create("&Help", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-help.png").release_value_but_fixme_should_propagate_errors(), [](auto&) {
|
||||
Core::Process::spawn("/bin/Help"sv);
|
||||
}));
|
||||
system_menu->add_action(GUI::Action::create("&Run...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-run.png"), [](auto&) {
|
||||
system_menu->add_action(GUI::Action::create("&Run...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-run.png").release_value_but_fixme_should_propagate_errors(), [](auto&) {
|
||||
posix_spawn_file_actions_t spawn_actions;
|
||||
posix_spawn_file_actions_init(&spawn_actions);
|
||||
auto home_directory = Core::StandardPaths::home_directory();
|
||||
|
@ -267,7 +268,7 @@ NonnullRefPtr<GUI::Menu> build_system_menu()
|
|||
posix_spawn_file_actions_destroy(&spawn_actions);
|
||||
}));
|
||||
system_menu->add_separator();
|
||||
system_menu->add_action(GUI::Action::create("E&xit...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/power.png"), [](auto&) {
|
||||
system_menu->add_action(GUI::Action::create("E&xit...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/power.png").release_value_but_fixme_should_propagate_errors(), [](auto&) {
|
||||
auto command = ShutdownDialog::show();
|
||||
|
||||
if (command.size() == 0)
|
||||
|
|
|
@ -807,14 +807,18 @@ bool Compositor::set_wallpaper_mode(const String& mode)
|
|||
|
||||
bool Compositor::set_wallpaper(const String& path, Function<void(bool)>&& callback)
|
||||
{
|
||||
Threading::BackgroundAction<RefPtr<Gfx::Bitmap>>::construct(
|
||||
Threading::BackgroundAction<ErrorOr<NonnullRefPtr<Gfx::Bitmap>>>::construct(
|
||||
[path](auto&) {
|
||||
return Gfx::Bitmap::try_load_from_file(path);
|
||||
},
|
||||
|
||||
[this, path, callback = move(callback)](RefPtr<Gfx::Bitmap> bitmap) {
|
||||
[this, path, callback = move(callback)](ErrorOr<NonnullRefPtr<Gfx::Bitmap>> bitmap) {
|
||||
if (bitmap.is_error()) {
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
m_wallpaper_path = path;
|
||||
m_wallpaper = move(bitmap);
|
||||
m_wallpaper = bitmap.release_value();
|
||||
invalidate_screen();
|
||||
callback(true);
|
||||
});
|
||||
|
|
|
@ -46,11 +46,11 @@ bool Cursor::load(const StringView& filename, const StringView& default_filename
|
|||
bool did_load_any = false;
|
||||
|
||||
auto load_bitmap = [&](const StringView& path, int scale_factor) {
|
||||
auto bitmap = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap) {
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap.release_nonnull());
|
||||
}
|
||||
auto bitmap_or_error = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap_or_error.is_error())
|
||||
return;
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap_or_error.release_value());
|
||||
};
|
||||
|
||||
Screen::for_each_scale_factor_in_use([&](int scale_factor) {
|
||||
|
|
|
@ -52,19 +52,20 @@ bool MultiScaleBitmaps::load(StringView const& filename, StringView const& defau
|
|||
m_bitmaps.clear(); // If we're reloading the bitmaps get rid of the old ones
|
||||
|
||||
auto add_bitmap = [&](StringView const& path, int scale_factor) {
|
||||
auto bitmap = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap) {
|
||||
auto bitmap_format = bitmap->format();
|
||||
if (m_format == Gfx::BitmapFormat::Invalid || m_format == bitmap_format) {
|
||||
if (m_format == Gfx::BitmapFormat::Invalid)
|
||||
m_format = bitmap_format;
|
||||
auto bitmap_or_error = Gfx::Bitmap::try_load_from_file(path, scale_factor);
|
||||
if (bitmap_or_error.is_error())
|
||||
return;
|
||||
auto bitmap = bitmap_or_error.release_value_but_fixme_should_propagate_errors();
|
||||
auto bitmap_format = bitmap->format();
|
||||
if (m_format == Gfx::BitmapFormat::Invalid || m_format == bitmap_format) {
|
||||
if (m_format == Gfx::BitmapFormat::Invalid)
|
||||
m_format = bitmap_format;
|
||||
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, bitmap.release_nonnull());
|
||||
} else {
|
||||
// Gracefully ignore, we have at least one bitmap already
|
||||
dbgln("Bitmap {} (scale {}) has format inconsistent with the other per-scale bitmaps", path, bitmap->scale());
|
||||
}
|
||||
did_load_any = true;
|
||||
m_bitmaps.set(scale_factor, move(bitmap));
|
||||
} else {
|
||||
// Gracefully ignore, we have at least one bitmap already
|
||||
dbgln("Bitmap {} (scale {}) has format inconsistent with the other per-scale bitmaps", path, bitmap->scale());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -28,49 +28,49 @@ static String default_window_icon_path()
|
|||
|
||||
static Gfx::Bitmap& default_window_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file(default_window_icon_path()).leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file(default_window_icon_path()).release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& minimize_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/downward-triangle.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/downward-triangle.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& maximize_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/upward-triangle.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/upward-triangle.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& restore_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-restore.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-restore.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& close_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-close.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-close.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
static Gfx::Bitmap& pin_icon()
|
||||
{
|
||||
static Gfx::Bitmap* s_icon;
|
||||
static RefPtr<Gfx::Bitmap> s_icon;
|
||||
if (!s_icon)
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-pin.png").leak_ref();
|
||||
s_icon = Gfx::Bitmap::try_load_from_file("/res/icons/16x16/window-pin.png").release_value_but_fixme_should_propagate_errors();
|
||||
return *s_icon;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue