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.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user