[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57500] trunk/blender/source/blender/ editors/space_buttons: Complete fix for [#35769] The ?\226?\128? \156show texture in texture tab?\226?\128? \157 button in a modifier does not show up until the user manually shows the texture in the Texture tab (and better fix for [#35741] Material shows WORLD texture_context by default).

Bastien Montagne montagne29 at wanadoo.fr
Sun Jun 16 15:13:42 CEST 2013


Revision: 57500
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57500
Author:   mont29
Date:     2013-06-16 13:13:42 +0000 (Sun, 16 Jun 2013)
Log Message:
-----------
Complete fix for [#35769] The ?\226?\128?\156show texture in texture tab?\226?\128?\157 button in a modifier does not show up until the user manually shows the texture in the Texture tab (and better fix for [#35741] Material shows WORLD texture_context by default).

Simply recompute texture context on every redraw, like already done for sbuts->texuser (also called texture context :/ ).

Also allows simplification, buttons_check_texture_context can be merged back into set_texture_context...

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_buttons/buttons_header.c
    trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
    trunk/blender/source/blender/editors/space_buttons/buttons_texture.c

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_header.c	2013-06-16 12:05:39 UTC (rev 57499)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_header.c	2013-06-16 13:13:42 UTC (rev 57500)
@@ -59,53 +59,6 @@
 
 #define B_CONTEXT_SWITCH    101
 
-static void set_texture_context(const bContext *C, SpaceButs *sbuts)
-{
-	Scene *scene = CTX_data_scene(C);
-
-	if (BKE_scene_use_new_shading_nodes(scene)) {
-		return;  /* No texture context in new shading mode */
-	}
-
-	if ((sbuts->mainb == BCONTEXT_WORLD) && ED_texture_context_check_world(C)) {
-		sbuts->texture_context = SB_TEXC_WORLD;
-	}
-	else if ((sbuts->mainb == BCONTEXT_MATERIAL) && ED_texture_context_check_material(C)) {
-		sbuts->texture_context = SB_TEXC_MATERIAL;
-	}
-	else if ((sbuts->mainb == BCONTEXT_DATA) && ED_texture_context_check_lamp(C)) {
-		sbuts->texture_context = SB_TEXC_LAMP;
-	}
-	else if ((sbuts->mainb == BCONTEXT_PARTICLE) && ED_texture_context_check_particles(C)) {
-		sbuts->texture_context = SB_TEXC_PARTICLES;
-	}
-	else if ((ELEM(sbuts->mainb, BCONTEXT_MODIFIER, BCONTEXT_PHYSICS)) && ED_texture_context_check_others(C)) {
-		sbuts->texture_context = SB_TEXC_OTHER;
-	}
-	/* Second pass: sbuts->mainbuser still contains the previous button context.
-	 * Useful e.g. when we switch to material, no material present, add a material, switch to texture.
-	 * See #35741. */
-	else if ((sbuts->mainbuser == BCONTEXT_WORLD) && ED_texture_context_check_world(C)) {
-		sbuts->texture_context = SB_TEXC_WORLD;
-	}
-	else if ((sbuts->mainbuser == BCONTEXT_MATERIAL) && ED_texture_context_check_material(C)) {
-		sbuts->texture_context = SB_TEXC_MATERIAL;
-	}
-	else if ((sbuts->mainbuser == BCONTEXT_DATA) && ED_texture_context_check_lamp(C)) {
-		sbuts->texture_context = SB_TEXC_LAMP;
-	}
-	else if ((sbuts->mainbuser == BCONTEXT_PARTICLE) && ED_texture_context_check_particles(C)) {
-		sbuts->texture_context = SB_TEXC_PARTICLES;
-	}
-	else if ((ELEM(sbuts->mainbuser, BCONTEXT_MODIFIER, BCONTEXT_PHYSICS)) && ED_texture_context_check_others(C)) {
-		sbuts->texture_context = SB_TEXC_OTHER;
-	}
-	/* Else, just be sure that current context is valid! */
-	else {
-		buttons_check_texture_context(C, sbuts);
-	}
-}
-
 static void do_buttons_buttons(bContext *C, void *UNUSED(arg), int event)
 {
 	SpaceButs *sbuts = CTX_wm_space_buts(C);
@@ -117,8 +70,6 @@
 		case B_CONTEXT_SWITCH:
 			ED_area_tag_redraw(CTX_wm_area(C));
 
-			set_texture_context(C, sbuts);
-
 			sbuts->preview = 1;
 			break;
 	}

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_intern.h	2013-06-16 12:05:39 UTC (rev 57499)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_intern.h	2013-06-16 13:13:42 UTC (rev 57500)
@@ -111,7 +111,6 @@
 
 /* buttons_texture.c */
 void buttons_texture_context_compute(const struct bContext *C, struct SpaceButs *sbuts);
-void buttons_check_texture_context(const struct bContext *C, struct SpaceButs *sbuts);
 
 /* buttons_ops.c */
 void BUTTONS_OT_file_browse(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_texture.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_texture.c	2013-06-16 12:05:39 UTC (rev 57499)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_texture.c	2013-06-16 13:13:42 UTC (rev 57500)
@@ -135,8 +135,7 @@
 	return false;
 }
 
-/* Only change texture context if current one is invalid! */
-void buttons_check_texture_context(const bContext *C, SpaceButs *sbuts)
+static void set_texture_context(const bContext *C, SpaceButs *sbuts)
 {
 	Scene *scene = CTX_data_scene(C);
 
@@ -151,11 +150,27 @@
 		bool valid_particles = ED_texture_context_check_particles(C);
 		bool valid_others = ED_texture_context_check_others(C);
 
-		if (((sbuts->texture_context == SB_TEXC_WORLD) && !valid_world) ||
-			((sbuts->texture_context == SB_TEXC_MATERIAL) && !valid_material) ||
-			((sbuts->texture_context == SB_TEXC_LAMP) && !valid_lamp) ||
-			((sbuts->texture_context == SB_TEXC_PARTICLES) && !valid_particles) ||
-			((sbuts->texture_context == SB_TEXC_OTHER) && !valid_others))
+		if ((sbuts->mainb == BCONTEXT_WORLD) && valid_world) {
+			sbuts->texture_context = SB_TEXC_WORLD;
+		}
+		else if ((sbuts->mainb == BCONTEXT_MATERIAL) && valid_material) {
+			sbuts->texture_context = SB_TEXC_MATERIAL;
+		}
+		else if ((sbuts->mainb == BCONTEXT_DATA) && valid_lamp) {
+			sbuts->texture_context = SB_TEXC_LAMP;
+		}
+		else if ((sbuts->mainb == BCONTEXT_PARTICLE) && valid_particles) {
+			sbuts->texture_context = SB_TEXC_PARTICLES;
+		}
+		else if ((ELEM(sbuts->mainb, BCONTEXT_MODIFIER, BCONTEXT_PHYSICS)) && valid_others) {
+			sbuts->texture_context = SB_TEXC_OTHER;
+		}
+		/* Else, just be sure that current context is valid! */
+		else if (((sbuts->texture_context == SB_TEXC_WORLD) && !valid_world) ||
+		         ((sbuts->texture_context == SB_TEXC_MATERIAL) && !valid_material) ||
+		         ((sbuts->texture_context == SB_TEXC_LAMP) && !valid_lamp) ||
+		         ((sbuts->texture_context == SB_TEXC_PARTICLES) && !valid_particles) ||
+		         ((sbuts->texture_context == SB_TEXC_OTHER) && !valid_others))
 		{
 			if (valid_others) {
 				sbuts->texture_context = SB_TEXC_OTHER;
@@ -368,7 +383,7 @@
 	Scene *scene = CTX_data_scene(C);
 	ID *pinid = sbuts->pinid;
 
-	buttons_check_texture_context(C, sbuts);
+	set_texture_context(C, sbuts);
 
 	if (!(BKE_scene_use_new_shading_nodes(scene) || (sbuts->texture_context == SB_TEXC_OTHER))) {
 		if (ct) {




More information about the Bf-blender-cvs mailing list