diff options
-rw-r--r-- | release/scripts/presets/keyconfig/keymap_data/blender_default.py | 12 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_clip.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_image.py | 2 | ||||
-rw-r--r-- | source/blender/editors/include/ED_image.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_ops.c | 30 | ||||
-rw-r--r-- | source/blender/editors/space_clip/space_clip.c | 1 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_edit.c | 18 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_ops.c | 30 | ||||
-rw-r--r-- | source/blender/editors/space_image/space_image.c | 1 | ||||
-rw-r--r-- | source/blender/editors/uvedit/uvedit_ops.c | 8 |
12 files changed, 100 insertions, 8 deletions
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 1839dd5f322..fafe950dfd8 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1587,6 +1587,11 @@ def km_image(params): ("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), ]) + if params.legacy: + items.extend([ + ("image.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), + ]) + return keymap @@ -2686,6 +2691,11 @@ def km_clip_editor(params): ("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), ]) + if params.legacy: + items.extend([ + ("clip.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), + ]) + return keymap @@ -6201,7 +6211,7 @@ def generate_keymaps(params=None): km_3d_view_tool_edit_gpencil_select_box(params), km_3d_view_tool_edit_gpencil_select_circle(params), km_3d_view_tool_edit_gpencil_select_lasso(params), - km_3d_view_tool_edit_gpencil_extrude(params), + km_3d_view_tool_edit_gpencil_extrude(params), km_3d_view_tool_edit_gpencil_radius(params), km_3d_view_tool_edit_gpencil_bend(params), km_3d_view_tool_edit_gpencil_shear(params), diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index e58d5117bc3..b5154e72de6 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -1255,6 +1255,7 @@ class CLIP_MT_view(Menu): layout.operator("clip.view_selected") layout.operator("clip.view_all") layout.operator("clip.view_all", text="View Fit").fit_view = True + layout.operator("clip.view_center_cursor") layout.separator() diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 5e05c49b567..0044475d67d 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -113,6 +113,8 @@ class IMAGE_MT_view(Menu): layout.operator("image.view_all", text="Frame All") layout.operator("image.view_all", text="Frame All Fit").fit_view = True + layout.operator("image.view_center_cursor", text="Center View to Cursor") + layout.separator() if show_render: diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h index 7d69f86dbf8..69742af9f50 100644 --- a/source/blender/editors/include/ED_image.h +++ b/source/blender/editors/include/ED_image.h @@ -77,6 +77,7 @@ void ED_image_mouse_pos(struct SpaceImage *sima, struct ARegion *ar, const int mval[2], float co[2]); +void ED_image_view_center_to_point(struct SpaceImage *sima, float x, float y); void ED_image_point_pos( struct SpaceImage *sima, struct ARegion *ar, float x, float y, float *xr, float *yr); void ED_image_point_pos__reverse(struct SpaceImage *sima, @@ -94,6 +95,7 @@ bool ED_space_image_paint_curve(const struct bContext *C); bool ED_space_image_check_show_maskedit(struct SpaceImage *sima, struct ViewLayer *view_layer); bool ED_space_image_maskedit_poll(struct bContext *C); bool ED_space_image_maskedit_mask_poll(struct bContext *C); +bool ED_space_image_cursor_poll(struct bContext *C); void ED_image_draw_info(struct Scene *scene, struct ARegion *ar, diff --git a/source/blender/editors/space_clip/clip_intern.h b/source/blender/editors/space_clip/clip_intern.h index 1fae4c91a48..bd54d4f0016 100644 --- a/source/blender/editors/space_clip/clip_intern.h +++ b/source/blender/editors/space_clip/clip_intern.h @@ -94,6 +94,7 @@ void CLIP_OT_view_zoom_out(struct wmOperatorType *ot); void CLIP_OT_view_zoom_ratio(struct wmOperatorType *ot); void CLIP_OT_view_all(struct wmOperatorType *ot); void CLIP_OT_view_selected(struct wmOperatorType *ot); +void CLIP_OT_view_center_cursor(struct wmOperatorType *ot); void CLIP_OT_change_frame(wmOperatorType *ot); void CLIP_OT_rebuild_proxy(struct wmOperatorType *ot); void CLIP_OT_mode_set(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c index 446e3408d8c..192449a219d 100644 --- a/source/blender/editors/space_clip/clip_ops.c +++ b/source/blender/editors/space_clip/clip_ops.c @@ -993,6 +993,36 @@ void CLIP_OT_view_all(wmOperatorType *ot) /** \} */ /* -------------------------------------------------------------------- */ +/** \name Center View To Cursor Operator + * \{ */ + +static int view_center_cursor_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceClip *sc = CTX_wm_space_clip(C); + ARegion *ar = CTX_wm_region(C); + + clip_view_center_to_point(sc, sc->cursor[0], sc->cursor[1]); + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void CLIP_OT_view_center_cursor(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Center View to Cursor"; + ot->description = "Center the view so that the cursor is in the middle of the view"; + ot->idname = "CLIP_OT_view_center_cursor"; + + /* api callbacks */ + ot->exec = view_center_cursor_exec; + ot->poll = ED_space_clip_maskedit_poll; +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name View Selected Operator * \{ */ diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index 2964a95648a..16305a9b17b 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -443,6 +443,7 @@ static void clip_operatortypes(void) WM_operatortype_append(CLIP_OT_view_zoom_ratio); WM_operatortype_append(CLIP_OT_view_all); WM_operatortype_append(CLIP_OT_view_selected); + WM_operatortype_append(CLIP_OT_view_center_cursor); WM_operatortype_append(CLIP_OT_change_frame); WM_operatortype_append(CLIP_OT_rebuild_proxy); WM_operatortype_append(CLIP_OT_mode_set); diff --git a/source/blender/editors/space_image/image_edit.c b/source/blender/editors/space_image/image_edit.c index ccd0a2bfd79..ec2b1cc7fbe 100644 --- a/source/blender/editors/space_image/image_edit.c +++ b/source/blender/editors/space_image/image_edit.c @@ -301,6 +301,18 @@ void ED_image_mouse_pos(SpaceImage *sima, ARegion *ar, const int mval[2], float co[1] = ((mval[1] - sy) / zoomy) / height; } +void ED_image_view_center_to_point(SpaceImage *sima, float x, float y) +{ + int width, height; + float aspx, aspy; + + ED_space_image_get_size(sima, &width, &height); + ED_space_image_get_aspect(sima, &aspx, &aspy); + + sima->xof = (x - 0.5f) * width * aspx; + sima->yof = (y - 0.5f) * height * aspy; +} + void ED_image_point_pos(SpaceImage *sima, ARegion *ar, float x, float y, float *xr, float *yr) { int sx, sy, width, height; @@ -476,3 +488,9 @@ bool ED_space_image_maskedit_mask_poll(bContext *C) return false; } + +bool ED_space_image_cursor_poll(bContext *C) +{ + return ED_operator_uvedit_space_image(C) || ED_space_image_maskedit_poll(C) || + ED_space_image_paint_curve(C); +} diff --git a/source/blender/editors/space_image/image_intern.h b/source/blender/editors/space_image/image_intern.h index 1abb6715fdb..6f1ce01ceac 100644 --- a/source/blender/editors/space_image/image_intern.h +++ b/source/blender/editors/space_image/image_intern.h @@ -44,10 +44,12 @@ void draw_image_sample_line(struct SpaceImage *sima); /* image_ops.c */ bool space_image_main_region_poll(struct bContext *C); +bool space_image_view_center_cursor_poll(struct bContext *C); void IMAGE_OT_view_all(struct wmOperatorType *ot); void IMAGE_OT_view_pan(struct wmOperatorType *ot); void IMAGE_OT_view_selected(struct wmOperatorType *ot); +void IMAGE_OT_view_center_cursor(struct wmOperatorType *ot); void IMAGE_OT_view_zoom(struct wmOperatorType *ot); void IMAGE_OT_view_zoom_in(struct wmOperatorType *ot); void IMAGE_OT_view_zoom_out(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 23336e36992..bed178e5a68 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -824,6 +824,36 @@ void IMAGE_OT_view_all(wmOperatorType *ot) /** \} */ /* -------------------------------------------------------------------- */ +/** \name Center View To Cursor Operator + * \{ */ + +static int view_center_cursor_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceImage *sima = CTX_wm_space_image(C); + ARegion *ar = CTX_wm_region(C); + + ED_image_view_center_to_point(sima, sima->cursor[0], sima->cursor[1]); + + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + +void IMAGE_OT_view_center_cursor(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Center View to Cursor"; + ot->description = "Center the view so that the cursor is in the middle of the view"; + ot->idname = "IMAGE_OT_view_center_cursor"; + + /* api callbacks */ + ot->exec = view_center_cursor_exec; + ot->poll = ED_space_image_cursor_poll; +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name View Selected Operator * \{ */ diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 5fa4fe3e077..749266149c1 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -207,6 +207,7 @@ static void image_operatortypes(void) WM_operatortype_append(IMAGE_OT_view_all); WM_operatortype_append(IMAGE_OT_view_pan); WM_operatortype_append(IMAGE_OT_view_selected); + WM_operatortype_append(IMAGE_OT_view_center_cursor); WM_operatortype_append(IMAGE_OT_view_zoom); WM_operatortype_append(IMAGE_OT_view_zoom_in); WM_operatortype_append(IMAGE_OT_view_zoom_out); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 57e2a84d248..0d258ba542b 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -4872,12 +4872,6 @@ static void UV_OT_reveal(wmOperatorType *ot) /** \name Set 2D Cursor Operator * \{ */ -static bool uv_set_2d_cursor_poll(bContext *C) -{ - return ED_operator_uvedit_space_image(C) || ED_space_image_maskedit_poll(C) || - ED_space_image_paint_curve(C); -} - static int uv_set_2d_cursor_exec(bContext *C, wmOperator *op) { SpaceImage *sima = CTX_wm_space_image(C); @@ -4923,7 +4917,7 @@ static void UV_OT_cursor_set(wmOperatorType *ot) /* api callbacks */ ot->exec = uv_set_2d_cursor_exec; ot->invoke = uv_set_2d_cursor_invoke; - ot->poll = uv_set_2d_cursor_poll; + ot->poll = ED_space_image_cursor_poll; /* properties */ RNA_def_float_vector(ot->srna, |