[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