2.5 - Patches + Cleanups

* Some of the patches in patch #19034 - by Wolfgang W. (bender)
- outliner.patch - a small fix to make the outliner draw the last
line of the list, if the list is bigger than the window.
- scroll.patch - enables vertical scrolling in the buttons window in horizontal mode. Necessary if a panel is opened that
is higher than the buttons window.

* Also, fixed some messy comments in drivers code
This commit is contained in:
Joshua Leung 2009-09-04 11:19:12 +00:00
parent 1e6efcc965
commit 0e40abf642
3 changed files with 24 additions and 16 deletions

@ -151,33 +151,33 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla
/* create F-Curve with Driver */
fcu= verify_driver_fcurve(id, rna_path, array_index, 1);
if(fcu && fcu->driver) {
if (fcu && fcu->driver) {
fcu->driver->type= type;
/* fill in current value for python */
if(type == DRIVER_TYPE_PYTHON) {
if (type == DRIVER_TYPE_PYTHON) {
PropertyType proptype= RNA_property_type(prop);
int array= RNA_property_array_length(&ptr, prop);
char *expression= fcu->driver->expression;
int val, maxlen= sizeof(fcu->driver->expression);
float fval;
if(proptype == PROP_BOOLEAN) {
if (proptype == PROP_BOOLEAN) {
if(!array) val= RNA_property_boolean_get(&ptr, prop);
else val= RNA_property_boolean_get_index(&ptr, prop, array_index);
BLI_strncpy(expression, (val)? "True": "False", maxlen);
}
else if(proptype == PROP_INT) {
if(!array) val= RNA_property_int_get(&ptr, prop);
else if (proptype == PROP_INT) {
if (!array) val= RNA_property_int_get(&ptr, prop);
else val= RNA_property_int_get_index(&ptr, prop, array_index);
BLI_snprintf(expression, maxlen, "%d", val);
}
else if(proptype == PROP_FLOAT) {
if(!array) fval= RNA_property_float_get(&ptr, prop);
else if (proptype == PROP_FLOAT) {
if (!array) fval= RNA_property_float_get(&ptr, prop);
else fval= RNA_property_float_get_index(&ptr, prop, array_index);
BLI_snprintf(expression, maxlen, "%.3f", fval);
}
@ -232,7 +232,7 @@ static int add_driver_button_exec (bContext *C, wmOperator *op)
short success= 0;
int a, index, length, all= RNA_boolean_get(op->ptr, "all");
/* try to insert keyframe using property retrieved from UI */
/* try to create driver using property retrieved from UI */
memset(&ptr, 0, sizeof(PointerRNA));
uiAnimContextProperty(C, &ptr, &prop, &index);
@ -294,7 +294,7 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op)
short success= 0;
int a, index, length, all= RNA_boolean_get(op->ptr, "all");
/* try to insert keyframe using property retrieved from UI */
/* try to find driver using property retrieved from UI */
memset(&ptr, 0, sizeof(PointerRNA));
uiAnimContextProperty(C, &ptr, &prop, &index);

@ -1248,6 +1248,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
/* before setting the view */
if(vertical) {
/* only allow scrolling in vertical direction */
v2d->keepofs |= V2D_LOCKOFS_X|V2D_KEEPOFS_Y;
v2d->keepofs &= ~(V2D_LOCKOFS_Y|V2D_KEEPOFS_X);
@ -1258,8 +1259,12 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
y= -y;
}
else {
v2d->keepofs |= V2D_LOCKOFS_Y|V2D_KEEPOFS_X;
v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_KEEPOFS_Y);
/* for now, allow scrolling in both directions (since layouts are optimised for vertical,
* they often don't fit in horizontal layout)
*/
v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_LOCKOFS_Y|V2D_KEEPOFS_X|V2D_KEEPOFS_Y);
//v2d->keepofs |= V2D_LOCKOFS_Y|V2D_KEEPOFS_X;
//v2d->keepofs &= ~(V2D_LOCKOFS_X|V2D_KEEPOFS_Y);
// don't jump back when panels close or hide
if(!newcontext)

@ -5288,6 +5288,9 @@ void draw_outliner(const bContext *C)
sizex += OL_TOGW*3;
}
/* tweak to display last line (when list bigger than window) */
sizey += V2D_SCROLL_HEIGHT;
/* update size of tot-rect (extents of data/viewable area) */
UI_view2d_totRect_set(v2d, sizex, sizey);