From 636ceed094635ab80867d062377d9a8e6ddacfcb Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Tue, 22 Mar 2011 15:20:25 +0000 Subject: 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. --- source/blender/editors/space_image/image_ops.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'source/blender/editors/space_image') 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; } -- cgit v1.2.3