[Bf-blender-cvs] [b247e19] master: Palettes
Antony Riakiotakis
noreply at git.blender.org
Thu Sep 18 12:20:43 CEST 2014
Commit: b247e19ff10c74c756ec94b3d4f910383190f172
Author: Antony Riakiotakis
Date: Thu Sep 18 12:07:17 2014 +0200
Branches: master
https://developer.blender.org/rBb247e19ff10c74c756ec94b3d4f910383190f172
Palettes
* Remove some duplication in deletion code
* Fix crash when restoring file from last saved state.
===================================================================
M source/blender/blenkernel/BKE_paint.h
M source/blender/blenkernel/intern/paint.c
M source/blender/blenloader/intern/readfile.c
M source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index a81da8c..4eafdae 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 296ca09..6a3062f 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 8561903..4739718 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 90161fa..9eaaf5f 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;
}
More information about the Bf-blender-cvs
mailing list