[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26363] trunk/blender/source/blender: Properties window: try to keep showing shading related tabs as you switch
Brecht Van Lommel
brecht at blender.org
Thu Jan 28 11:57:31 CET 2010
Revision: 26363
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26363
Author: blendix
Date: 2010-01-28 11:57:31 +0100 (Thu, 28 Jan 2010)
Log Message:
-----------
Properties window: try to keep showing shading related tabs as you switch
between active objects, e.g. switch from lamp to material tab when you are
selecting a lamp instead of a mesh.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_buttons/buttons_context.c
trunk/blender/source/blender/makesdna/DNA_space_types.h
Modified: trunk/blender/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_context.c 2010-01-28 10:56:35 UTC (rev 26362)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_context.c 2010-01-28 10:57:31 UTC (rev 26363)
@@ -474,6 +474,32 @@
return found;
}
+static int buttons_shading_context(const bContext *C, int mainb)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if(ELEM3(mainb, BCONTEXT_MATERIAL, BCONTEXT_WORLD, BCONTEXT_TEXTURE))
+ return 1;
+ if(mainb == BCONTEXT_DATA && ob && ELEM(ob->type, OB_LAMP, OB_CAMERA))
+ return 1;
+
+ return 0;
+}
+
+static int buttons_shading_new_context(const bContext *C, int flag, int mainb)
+{
+ Object *ob= CTX_data_active_object(C);
+
+ if(flag & (1 << BCONTEXT_MATERIAL))
+ return BCONTEXT_MATERIAL;
+ else if(ob && ELEM(ob->type, OB_LAMP, OB_CAMERA) && (flag & (1 << BCONTEXT_DATA)))
+ return BCONTEXT_DATA;
+ else if(flag & (1 << BCONTEXT_WORLD))
+ return BCONTEXT_WORLD;
+
+ return BCONTEXT_RENDER;
+}
+
void buttons_context_compute(const bContext *C, SpaceButs *sbuts)
{
ButsContextPath *path;
@@ -511,7 +537,11 @@
/* in case something becomes invalid, change */
if((flag & (1 << sbuts->mainb)) == 0) {
- if(flag & BCONTEXT_OBJECT) {
+ if(sbuts->flag & SB_SHADING_CONTEXT) {
+ /* try to keep showing shading related buttons */
+ sbuts->mainb= buttons_shading_new_context(C, flag, sbuts->mainb);
+ }
+ else if(flag & BCONTEXT_OBJECT) {
sbuts->mainb= BCONTEXT_OBJECT;
}
else {
@@ -533,6 +563,11 @@
sbuts->mainb= BCONTEXT_SCENE;
}
+ if(buttons_shading_context(C, sbuts->mainb))
+ sbuts->flag |= SB_SHADING_CONTEXT;
+ else
+ sbuts->flag &= ~SB_SHADING_CONTEXT;
+
sbuts->pathflag= flag;
}
Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h 2010-01-28 10:56:35 UTC (rev 26362)
+++ trunk/blender/source/blender/makesdna/DNA_space_types.h 2010-01-28 10:57:31 UTC (rev 26363)
@@ -126,8 +126,8 @@
short preview; /* preview is signal to refresh */
char flag, pad[3];
- void *path; /* runtime */
- int pathflag, dataicon; /* runtime */
+ void *path; /* runtime */
+ int pathflag, dataicon; /* runtime */
ID *pinid;
} SpaceButs;
@@ -577,7 +577,6 @@
#define TAB_SCENE_SOUND 3
#define TAB_SCENE_SEQUENCER 4
-
/* buts->mainb new */
#define BCONTEXT_RENDER 0
#define BCONTEXT_SCENE 1
@@ -599,6 +598,7 @@
#define SB_PIN_CONTEXT 2
#define SB_WORLD_TEX 4
#define SB_BRUSH_TEX 8
+#define SB_SHADING_CONTEXT 16
/* sbuts->align */
#define BUT_FREE 0
More information about the Bf-blender-cvs
mailing list