diff options
author | Ton Roosendaal <ton@blender.org> | 2011-03-22 18:20:25 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-03-22 18:20:25 +0300 |
commit | 636ceed094635ab80867d062377d9a8e6ddacfcb (patch) | |
tree | ba8bfebbd065ded59a75997de9051e6ccdce2f7e /source/blender/editors/space_image | |
parent | 287a185e909bf833414e14a50864e8cd0f80f0b8 (diff) |
Bugfix #26562
Keymap fix for UV/Image editor: the modal zoom/pan functions were checking
for hardcoded events to end. Now it uses the key from keymap.
Diffstat (limited to 'source/blender/editors/space_image')
-rw-r--r-- | source/blender/editors/space_image/image_ops.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 93e5465cd64..3aa509ab998 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -176,6 +176,7 @@ int space_image_main_area_poll(bContext *C) typedef struct ViewPanData { float x, y; float xof, yof; + int event_type; } ViewPanData; static void view_pan_init(bContext *C, wmOperator *op, wmEvent *event) @@ -190,6 +191,7 @@ static void view_pan_init(bContext *C, wmOperator *op, wmEvent *event) vpd->y= event->y; vpd->xof= sima->xof; vpd->yof= sima->yof; + vpd->event_type= event->type; WM_event_add_modal_handler(C, op); } @@ -266,9 +268,8 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event) RNA_float_set_array(op->ptr, "offset", offset); view_pan_exec(C, op); break; - case MIDDLEMOUSE: - case LEFTMOUSE: - if(event->val==KM_RELEASE) { + default: + if(event->type==vpd->event_type && event->val==KM_RELEASE) { view_pan_exit(C, op, 0); return OPERATOR_FINISHED; } @@ -310,6 +311,7 @@ void IMAGE_OT_view_pan(wmOperatorType *ot) typedef struct ViewZoomData { float x, y; float zoom; + int event_type; } ViewZoomData; static void view_zoom_init(bContext *C, wmOperator *op, wmEvent *event) @@ -323,7 +325,8 @@ static void view_zoom_init(bContext *C, wmOperator *op, wmEvent *event) vpd->x= event->x; vpd->y= event->y; vpd->zoom= sima->zoom; - + vpd->event_type= event->type; + WM_event_add_modal_handler(C, op); } @@ -396,9 +399,8 @@ static int view_zoom_modal(bContext *C, wmOperator *op, wmEvent *event) sima_zoom_set(sima, ar, vpd->zoom*factor); ED_region_tag_redraw(CTX_wm_region(C)); break; - case MIDDLEMOUSE: - case LEFTMOUSE: - if(event->val==KM_RELEASE) { + default: + if(event->type==vpd->event_type && event->val==KM_RELEASE) { view_zoom_exit(C, op, 0); return OPERATOR_FINISHED; } |