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


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to