diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2014-09-18 14:07:17 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2014-09-18 14:07:17 +0400 |
commit | b247e19ff10c74c756ec94b3d4f910383190f172 (patch) | |
tree | 703c16f7c890aae6a67543bf412c51a386e79eb5 | |
parent | e6271d236752b8551d8d401ff6aff8e92efde18e (diff) |
Palettes
* Remove some duplication in deletion code
* Fix crash when restoring file from last saved state.
-rw-r--r-- | source/blender/blenkernel/BKE_paint.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 28 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 1 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_ops.c | 3 |
4 files changed, 10 insertions, 23 deletions
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index a81da8c18af..4eafdae9ebd 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -100,7 +100,6 @@ void BKE_paint_set_overlay_override(enum OverlayFlags flag); void BKE_palette_free(struct Palette *palette); struct Palette *BKE_palette_add(struct Main *bmain, const char *name); struct PaletteColor *BKE_palette_color_add(struct Palette *palette); -void BKE_palette_color_delete(struct Palette *palette); bool BKE_palette_is_empty(const struct Palette *palette); void BKE_palette_color_remove(struct Palette *palette, struct PaletteColor *color); void BKE_palette_cleanup(struct Palette *palette); diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 296ca09a901..6a3062f10ae 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -315,14 +315,13 @@ void BKE_paint_curve_set(Brush *br, PaintCurve *pc) /* remove colour from palette. Must be certain color is inside the palette! */ void BKE_palette_color_remove(Palette *palette, PaletteColor *color) { - int num_items; - BLI_remlink(&palette->colors, color); - - num_items = BLI_countlist(&palette->colors); - - BLI_addhead(&palette->deleted, color); - if (palette->active_color == num_items && num_items > 0) - palette->active_color--; + if (color) { + if ((color == palette->colors.last) && (palette->colors.last != palette->colors.first)) + palette->active_color--; + + BLI_remlink(&palette->colors, color); + BLI_addhead(&palette->deleted, color); + } } void BKE_palette_cleanup(Palette *palette) @@ -356,19 +355,6 @@ PaletteColor *BKE_palette_color_add(Palette *palette) return color; } -void BKE_palette_color_delete(struct Palette *palette) -{ - PaletteColor *color = BLI_findlink(&palette->colors, palette->active_color); - - if (color) { - if ((color == palette->colors.last) && (palette->colors.last != palette->colors.first)) - palette->active_color--; - - BLI_remlink(&palette->colors, color); - BLI_addhead(&palette->deleted, color); - } -} - bool BKE_palette_is_empty(const struct Palette *palette) { diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 8561903ce04..4739718fa54 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1862,6 +1862,7 @@ static void direct_link_palette(FileData *fd, Palette *palette) { /* palette itself has been read */ link_list(fd, &palette->colors); + BLI_listbase_clear(&palette->deleted); } static void lib_link_paint_curve(FileData *UNUSED(fd), Main *main) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 90161fa87dd..9eaaf5fe122 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -228,8 +228,9 @@ static int palette_color_delete_exec(bContext *C, wmOperator *UNUSED(op)) { Paint *paint = BKE_paint_get_active_from_context(C); Palette *palette = paint->palette; + PaletteColor *color = BLI_findlink(&palette->colors, palette->active_color); - BKE_palette_color_delete(palette); + BKE_palette_color_remove(palette, color); return OPERATOR_FINISHED; } |