Revision: 24873
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24873
Author:   broken
Date:     2009-11-25 09:28:57 +0100 (Wed, 25 Nov 2009)

Log Message:
-----------
Fix for [#20008] In the Graph Editor, clicking on the eye doesn't update the GUI

As part of this, fixed a typo in rna flags which was causing some strange 
behaviour with icons earlier. Reverted the workaround for this, too.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/fmodifier_ui.c
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_utils.c
    trunk/blender/source/blender/makesrna/RNA_types.h
    trunk/blender/source/blender/makesrna/intern/rna_fcurve.c

Modified: trunk/blender/source/blender/editors/animation/fmodifier_ui.c
===================================================================
--- trunk/blender/source/blender/editors/animation/fmodifier_ui.c       
2009-11-24 23:24:56 UTC (rev 24872)
+++ trunk/blender/source/blender/editors/animation/fmodifier_ui.c       
2009-11-25 08:28:57 UTC (rev 24873)
@@ -111,16 +111,6 @@
                fmi->verify_data(fcm);
 }
 
-/* callback to set the active modifier */
-static void activate_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
-{
-       ListBase *modifiers = (ListBase *)fmods_v;
-       FModifier *fcm= (FModifier *)fcm_v;
-       
-       /* call API function to set the active modifier for active 
modifier-stack */
-       set_active_fmodifier(modifiers, fcm);
-}
-
 /* callback to remove the given modifier  */
 static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v)
 {
@@ -636,7 +626,11 @@
        uiBlock *block;
        uiBut *but;
        short width= 314;
+       PointerRNA ptr;
        
+       /* init the RNA-pointer */
+       RNA_pointer_create(id, &RNA_FModifierFunctionGenerator, fcm, &ptr);
+       
        /* draw header */
        {
                /* get layout-row + UI-block for this */
@@ -645,32 +639,34 @@
                row= uiLayoutRow(box, 0);
                block= uiLayoutGetBlock(row); // err...
                
-               uiBlockSetEmboss(block, UI_EMBOSSN);
-               
                /* left-align -------------------------------------------- */
                subrow= uiLayoutRow(row, 0);
                uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
                
+               uiBlockSetEmboss(block, UI_EMBOSSN);
+               
                /* expand */
-               uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_EXPANDED, 
B_REDR, ICON_TRIA_RIGHT,      0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 
0.0, 0, 0, "Modifier is expanded.");
+               uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY);
                
                /* checkbox for 'active' status (for now) */
-               but= uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_ACTIVE, 
B_REDR, ICON_RADIOBUT_OFF, 0, -1, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 
0, 0, "Modifier is active one.");
-               uiButSetFunc(but, activate_fmodifier_cb, modifiers, fcm);
+               uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY);
                
                /* name */
                if (fmi)
-                       uiDefBut(block, LABEL, 1, fmi->name,    0, 0, 150, 
UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make modifier 
active one.");
+                       uiItemL(subrow, fmi->name, 0);
                else
-                       uiDefBut(block, LABEL, 1, "<Unknown Modifier>", 0, 0, 
150, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "F-Curve Modifier Type. Click to make 
modifier active one.");
+                       uiItemL(subrow, "<Unknown Modifier>", 0);
                
                /* right-align ------------------------------------------- */
                subrow= uiLayoutRow(row, 0);
                uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
                
+               
                /* 'mute' button */
-               uiDefIconButBitS(block, ICONTOG, FMODIFIER_FLAG_MUTED, B_REDR, 
ICON_MUTE_IPO_OFF,       0, 0, UI_UNIT_X, UI_UNIT_Y, &fcm->flag, 0.0, 0.0, 0, 
0, "Modifier is temporarily muted (not evaluated).");
+               uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY);
                
+               uiBlockSetEmboss(block, UI_EMBOSSN);
+               
                /* delete button */
                but= uiDefIconBut(block, BUT, B_REDR, ICON_X, 0, 0, UI_UNIT_X, 
UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete F-Curve Modifier.");
                uiButSetFunc(but, delete_fmodifier_cb, modifiers, fcm);

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c  2009-11-24 
23:24:56 UTC (rev 24872)
+++ trunk/blender/source/blender/editors/interface/interface.c  2009-11-25 
08:28:57 UTC (rev 24873)
@@ -2235,6 +2235,7 @@
        but->bit= type & BIT;
        but->bitnr= type & 31;
        but->icon = 0;
+       but->iconadd=0;
 
        but->retval= retval;
        if( strlen(str)>=UI_MAX_NAME_STR-1 ) {

Modified: trunk/blender/source/blender/editors/interface/interface_utils.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_utils.c    
2009-11-24 23:24:56 UTC (rev 24872)
+++ trunk/blender/source/blender/editors/interface/interface_utils.c    
2009-11-25 08:28:57 UTC (rev 24873)
@@ -69,11 +69,10 @@
                        else
                                value= RNA_property_boolean_get(ptr, prop);
                        
-                       // XXX: when to do TOG, and when to do ICONTOG? for 
now, let's just do TOG, since ICONTOG causes too much trouble everywhere else
                        if(icon && name && strcmp(name, "") == 0)
-                               but= uiDefIconButR(block, TOG, 0, icon, x1, y1, 
x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+                               but= uiDefIconButR(block, ICONTOG, 0, icon, x1, 
y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
                        else if(icon)
-                               but= uiDefIconTextButR(block, TOG, 0, icon, 
name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
+                               but= uiDefIconTextButR(block, ICONTOG, 0, icon, 
name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
                        else
                                but= uiDefButR(block, OPTION, 0, name, x1, y1, 
x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
                        break;

Modified: trunk/blender/source/blender/makesrna/RNA_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_types.h   2009-11-24 23:24:56 UTC 
(rev 24872)
+++ trunk/blender/source/blender/makesrna/RNA_types.h   2009-11-25 08:28:57 UTC 
(rev 24873)
@@ -140,7 +140,7 @@
        PROP_ANIMATEABLE = 1<<1,
 
        /* icon */
-       PROP_ICONS_CONSECUTIVE = 1<12,
+       PROP_ICONS_CONSECUTIVE = 1<<12,
 
        /* hidden in  the user interface */
        PROP_HIDDEN = 1<<19,

Modified: trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_fcurve.c   2009-11-24 
23:24:56 UTC (rev 24872)
+++ trunk/blender/source/blender/makesrna/intern/rna_fcurve.c   2009-11-25 
08:28:57 UTC (rev 24873)
@@ -252,6 +252,30 @@
        return remove_fmodifier_index(&fcu->modifiers, index);
 }
 
+static void rna_Fmodifier_active_set(PointerRNA *ptr, int value)
+{
+       FModifier *fm= (FModifier*)ptr->data;
+
+       /* don't toggle, always switch on */
+       fm->flag |= FMODIFIER_FLAG_ACTIVE;
+}
+
+static void rna_Fmodifier_active_update(bContext *C, PointerRNA *ptr)
+{
+       FModifier *fm, *fmo= (FModifier*)ptr->data;
+
+       /* clear active state of other FModifiers in this list */
+       for (fm=fmo->prev; fm; fm=fm->prev)
+       {
+               fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+       }
+       for (fm=fmo->next; fm; fm=fm->next)
+       {
+               fm->flag &= ~FMODIFIER_FLAG_ACTIVE;
+       }
+       
+}
+
 #else
 
 static void rna_def_fmodifier_generator(BlenderRNA *brna)
@@ -629,12 +653,13 @@
        prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", 
FMODIFIER_FLAG_EXPANDED);
        RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is 
expanded in UI.");
+       RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
        
        prop= RNA_def_property(srna, "muted", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_MUTED);
        RNA_def_property_ui_text(prop, "Muted", "F-Curve Modifier will not be 
evaluated.");
        RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+       RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1);
        
                // XXX this is really an internal flag, but it may be useful 
for some tools to be able to access this...
        prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
@@ -647,7 +672,9 @@
        prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", 
FMODIFIER_FLAG_ACTIVE);
        RNA_def_property_ui_text(prop, "Active", "F-Curve Modifier is the one 
being edited ");
-       RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
+       RNA_def_property_boolean_funcs(prop, NULL, "rna_Fmodifier_active_set");
+       RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, 
"rna_Fmodifier_active_update");
+       RNA_def_property_ui_icon(prop, ICON_RADIOBUT_OFF, 1);
 }      
 
 /* *********************** */
@@ -809,7 +836,6 @@
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Active fcurve modifier", "Active fcurve 
modifier.");
 
-
        /* Constraint collection */
        func= RNA_def_function(srna, "new", "rna_FCurve_modifiers_new");
        RNA_def_function_flag(func, FUNC_USE_CONTEXT);


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

Reply via email to