mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-21 02:08:12 +03:00
PixelPaint: Make PaletteWidget::set_image_editor take a ImageEditor*
After closing the last open ImageEditor, selecting a color would try to dereference it causing a crash. Instead make set_image_editor() take a pointer to it and set it to nullptr when closing the last tab like we do with LayerListWidget and LayerPropertiesWidget.
This commit is contained in:
parent
29bbf56286
commit
7ca4d045bd
Notes:
sideshowbarker
2024-07-17 21:18:25 +09:00
Author: https://github.com/metmo Commit: https://github.com/SerenityOS/serenity/commit/7ca4d045bd6 Pull-request: https://github.com/SerenityOS/serenity/pull/11743
@ -71,6 +71,7 @@ MainWidget::MainWidget()
|
||||
if (m_tab_widget->children().size() == 0) {
|
||||
m_layer_list_widget->set_image(nullptr);
|
||||
m_layer_properties_widget->set_layer(nullptr);
|
||||
m_palette_widget->set_image_editor(nullptr);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -78,7 +79,7 @@ MainWidget::MainWidget()
|
||||
|
||||
m_tab_widget->on_change = [&](auto& widget) {
|
||||
auto& image_editor = verify_cast<PixelPaint::ImageEditor>(widget);
|
||||
m_palette_widget->set_image_editor(image_editor);
|
||||
m_palette_widget->set_image_editor(&image_editor);
|
||||
m_layer_list_widget->set_image(&image_editor.image());
|
||||
m_layer_properties_widget->set_layer(image_editor.active_layer());
|
||||
if (auto* active_tool = m_toolbox->active_tool())
|
||||
|
@ -143,17 +143,20 @@ PaletteWidget::PaletteWidget()
|
||||
display_color_list(result.value());
|
||||
}
|
||||
|
||||
void PaletteWidget::set_image_editor(ImageEditor& editor)
|
||||
void PaletteWidget::set_image_editor(ImageEditor* editor)
|
||||
{
|
||||
m_editor = &editor;
|
||||
set_primary_color(editor.primary_color());
|
||||
set_secondary_color(editor.secondary_color());
|
||||
m_editor = editor;
|
||||
if (!m_editor)
|
||||
return;
|
||||
|
||||
editor.on_primary_color_change = [this](Color color) {
|
||||
set_primary_color(editor->primary_color());
|
||||
set_secondary_color(editor->secondary_color());
|
||||
|
||||
editor->on_primary_color_change = [this](Color color) {
|
||||
set_primary_color(color);
|
||||
};
|
||||
|
||||
editor.on_secondary_color_change = [this](Color color) {
|
||||
editor->on_secondary_color_change = [this](Color color) {
|
||||
set_secondary_color(color);
|
||||
};
|
||||
}
|
||||
@ -164,13 +167,15 @@ PaletteWidget::~PaletteWidget()
|
||||
|
||||
void PaletteWidget::set_primary_color(Color color)
|
||||
{
|
||||
m_editor->set_primary_color(color);
|
||||
if (m_editor)
|
||||
m_editor->set_primary_color(color);
|
||||
m_primary_color_widget->set_background_color(color);
|
||||
}
|
||||
|
||||
void PaletteWidget::set_secondary_color(Color color)
|
||||
{
|
||||
m_editor->set_secondary_color(color);
|
||||
if (m_editor)
|
||||
m_editor->set_secondary_color(color);
|
||||
m_secondary_color_widget->set_background_color(color);
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ public:
|
||||
static Result<void, String> save_palette_fd_and_close(Vector<Color>, int);
|
||||
static Vector<Color> fallback_colors();
|
||||
|
||||
void set_image_editor(ImageEditor&);
|
||||
void set_image_editor(ImageEditor*);
|
||||
|
||||
private:
|
||||
static Result<Vector<Color>, String> load_palette_file(Core::File&);
|
||||
|
Loading…
Reference in New Issue
Block a user