diff --git a/Userland/Applications/PixelPaint/Layer.cpp b/Userland/Applications/PixelPaint/Layer.cpp index 16922d2984..b1b7dd9c12 100644 --- a/Userland/Applications/PixelPaint/Layer.cpp +++ b/Userland/Applications/PixelPaint/Layer.cpp @@ -309,11 +309,12 @@ void Layer::update_cached_bitmap() } } -void Layer::create_mask() +ErrorOr Layer::create_mask() { - m_mask_bitmap = MUST(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, size())); + m_mask_bitmap = TRY(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, size())); m_mask_bitmap->fill(Gfx::Color::White); update_cached_bitmap(); + return {}; } Gfx::Bitmap& Layer::currently_edited_bitmap() diff --git a/Userland/Applications/PixelPaint/Layer.h b/Userland/Applications/PixelPaint/Layer.h index a2a4046b7f..d3b76c06ca 100644 --- a/Userland/Applications/PixelPaint/Layer.h +++ b/Userland/Applications/PixelPaint/Layer.h @@ -45,7 +45,7 @@ public: Gfx::Bitmap const* mask_bitmap() const { return m_mask_bitmap; } Gfx::Bitmap* mask_bitmap() { return m_mask_bitmap; } - void create_mask(); + ErrorOr create_mask(); Gfx::Bitmap& get_scratch_edited_bitmap(); Gfx::IntSize size() const { return content_bitmap().size(); } diff --git a/Userland/Applications/PixelPaint/MainWidget.cpp b/Userland/Applications/PixelPaint/MainWidget.cpp index 00eb19d403..6fd63d35f2 100644 --- a/Userland/Applications/PixelPaint/MainWidget.cpp +++ b/Userland/Applications/PixelPaint/MainWidget.cpp @@ -746,7 +746,12 @@ ErrorOr MainWidget::initialize_menubar(GUI::Window& window) auto active_layer = editor->active_layer(); if (!active_layer) return; - active_layer->create_mask(); + + if (auto maybe_error = active_layer->create_mask(); maybe_error.is_error()) { + GUI::MessageBox::show_error(&window, DeprecatedString::formatted("Failed to create layer mask: {}", maybe_error.release_error())); + return; + } + editor->did_complete_action("Add Mask"); editor->update(); m_layer_list_widget->repaint();