diff options
author | Ton Roosendaal <ton@blender.org> | 2009-01-31 13:00:08 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-01-31 13:00:08 +0300 |
commit | 607a56cb7a0e5a7fef2214d60a723dd67e8209ab (patch) | |
tree | 7856a9d351b02dcddca5d147935ed6cdabf46f65 /source/blender/windowmanager | |
parent | b5230890ecfe3c81d4714c9ce5b367b612307293 (diff) |
2.5
- Made standard border operator calls bail out on zero sized borders
- Fixed compile warning in call to BKE_animsys_evaluate_animdata()
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 9d59e71981e..a496ebc3bea 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -519,7 +519,7 @@ void WM_paint_cursor_end(wmWindowManager *wm, void *handle) It stores 4 values (xmin, xmax, ymin, ymax) and event it ended with (event_type) */ -static void border_apply(bContext *C, wmOperator *op, int event_type) +static int border_apply(bContext *C, wmOperator *op, int event_type) { wmGesture *gesture= op->customdata; rcti *rect= gesture->customdata; @@ -529,15 +529,20 @@ static void border_apply(bContext *C, wmOperator *op, int event_type) if(rect->ymin > rect->ymax) SWAP(int, rect->ymin, rect->ymax); - /* operator arguments and storage. */ - RNA_int_set(op->ptr, "xmin", rect->xmin); - RNA_int_set(op->ptr, "ymin", rect->ymin); - RNA_int_set(op->ptr, "xmax", rect->xmax); - RNA_int_set(op->ptr, "ymax", rect->ymax); - if( RNA_struct_find_property(op->ptr, "event_type") ) - RNA_int_set(op->ptr, "event_type", event_type); - - op->type->exec(C, op); + if(rect->xmin==rect->xmax || rect->ymin==rect->ymax) + return 0; + else { + + /* operator arguments and storage. */ + RNA_int_set(op->ptr, "xmin", rect->xmin); + RNA_int_set(op->ptr, "ymin", rect->ymin); + RNA_int_set(op->ptr, "xmax", rect->xmax); + RNA_int_set(op->ptr, "ymax", rect->ymax); + if( RNA_struct_find_property(op->ptr, "event_type") ) + RNA_int_set(op->ptr, "event_type", event_type); + + op->type->exec(C, op); + } } static void wm_gesture_end(bContext *C, wmOperator *op) @@ -597,9 +602,12 @@ int WM_border_select_modal(bContext *C, wmOperator *op, wmEvent *event) } } else { - border_apply(C, op, event->type); + if(border_apply(C, op, event->type)) { + wm_gesture_end(C, op); + return OPERATOR_FINISHED; + } wm_gesture_end(C, op); - return OPERATOR_FINISHED; + return OPERATOR_CANCELLED; } break; case ESCKEY: |