1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:07:35 +00: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:
Marcus Nilsson 2022-01-09 11:59:32 +01:00 committed by Linus Groh
parent 29bbf56286
commit 7ca4d045bd
3 changed files with 16 additions and 10 deletions

View file

@ -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);
}