Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_clip/space_clip.c
| Show First 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | |||||
| #include "IMB_imbuf_types.h" | #include "IMB_imbuf_types.h" | ||||
| #include "ED_anim_api.h" /* for timeline cursor drawing */ | #include "ED_anim_api.h" /* for timeline cursor drawing */ | ||||
| #include "ED_mask.h" | #include "ED_mask.h" | ||||
| #include "ED_space_api.h" | #include "ED_space_api.h" | ||||
| #include "ED_screen.h" | #include "ED_screen.h" | ||||
| #include "ED_select_utils.h" | #include "ED_select_utils.h" | ||||
| #include "ED_keymap_templates.h" | |||||
| #include "ED_clip.h" | #include "ED_clip.h" | ||||
| #include "ED_transform.h" | #include "ED_transform.h" | ||||
| #include "ED_uvedit.h" /* just for ED_image_draw_cursor */ | #include "ED_uvedit.h" /* just for ED_image_draw_cursor */ | ||||
| #include "IMB_imbuf.h" | #include "IMB_imbuf.h" | ||||
| #include "GPU_glew.h" | #include "GPU_glew.h" | ||||
| #include "GPU_matrix.h" | #include "GPU_matrix.h" | ||||
| ▲ Show 20 Lines • Show All 466 Lines • ▼ Show 20 Lines | #endif | ||||
| /* ** clip_dopesheet_ops.c ** */ | /* ** clip_dopesheet_ops.c ** */ | ||||
| WM_operatortype_append(CLIP_OT_dopesheet_select_channel); | WM_operatortype_append(CLIP_OT_dopesheet_select_channel); | ||||
| WM_operatortype_append(CLIP_OT_dopesheet_view_all); | WM_operatortype_append(CLIP_OT_dopesheet_view_all); | ||||
| } | } | ||||
| static void clip_keymap(struct wmKeyConfig *keyconf) | static void clip_keymap(struct wmKeyConfig *keyconf) | ||||
| { | { | ||||
| wmKeyMap *keymap; | |||||
| wmKeyMapItem *kmi; | |||||
| /* ******** Global hotkeys avalaible for all regions ******** */ | /* ******** Global hotkeys avalaible for all regions ******** */ | ||||
| WM_keymap_ensure(keyconf, "Clip", SPACE_CLIP, 0); | |||||
| keymap = WM_keymap_ensure(keyconf, "Clip", SPACE_CLIP, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_open", OKEY, KM_PRESS, KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_tools", TKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_properties", NKEY, KM_PRESS, 0, 0); | |||||
| /* 2d tracking */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "backwards", true); | |||||
| RNA_boolean_set(kmi->ptr, "sequence", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "backwards", false); | |||||
| RNA_boolean_set(kmi->ptr, "sequence", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", TKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "backwards", false); | |||||
| RNA_boolean_set(kmi->ptr, "sequence", true); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", TKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "backwards", true); | |||||
| RNA_boolean_set(kmi->ptr, "sequence", true); | |||||
| /* mode */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", TABKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.mode"); | |||||
| RNA_string_set(kmi->ptr, "value_1", "TRACKING"); | |||||
| RNA_string_set(kmi->ptr, "value_2", "MASK"); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_solve_camera", SKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_set_solver_keyframe", QKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "keyframe", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_set_solver_keyframe", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "keyframe", 1); | |||||
| /* io/playback */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_prefetch", PKEY, KM_PRESS, 0, 0); | |||||
| /* ******** Hotkeys avalaible for main region only ******** */ | /* ******** Hotkeys avalaible for main region only ******** */ | ||||
| WM_keymap_ensure(keyconf, "Clip Editor", SPACE_CLIP, 0); | |||||
| keymap = WM_keymap_ensure(keyconf, "Clip Editor", SPACE_CLIP, 0); | |||||
| // keymap->poll = ED_space_clip_tracking_poll; | // keymap->poll = ED_space_clip_tracking_poll; | ||||
| /* ** View/navigation ** */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MOUSEPAN, 0, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MOUSEZOOM, 0, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MOUSEPAN, 0, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_in", WHEELINMOUSE, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_out", WHEELOUTMOUSE, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_out", PADMINUS, KM_PRESS, 0, 0); | |||||
| /* ctrl now works as well, shift + numpad works as arrow keys on Windows */ | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 8.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 4.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 2.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); | |||||
| RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_view_all", FKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "fit_view", true); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); | |||||
| #ifdef WITH_INPUT_NDOF | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_view_ndof", NDOF_MOTION, 0, 0, 0); | |||||
| #endif | |||||
| /* jump to special frame */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "position", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "position", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "position", 2); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "position", 3); | |||||
| /* "timeline" */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| /* selection */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", true); | |||||
| ED_keymap_template_select_all(keymap, "CLIP_OT_select_all"); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_select_box", BKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_select_circle", CKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_menu(keymap, "CLIP_MT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT | KM_ALT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "deselect", true); | |||||
| /* marker */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_add_marker_slide", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_delete_marker", XKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_delete_marker", DELKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_slide_marker", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_disable_markers", DKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", 2); /* toggle */ | |||||
| /* tracks */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_delete_track", XKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_delete_track", DELKEY, KM_PRESS, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_lock_tracks", LKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", 0); /* lock */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_lock_tracks", LKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", 1); /* unlock */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks", HKEY, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "unselected", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks", HKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "unselected", true); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks_clear", HKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* plane tracks */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_slide_plane_marker", ACTIONMOUSE, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0); | |||||
| /* clean-up */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_join_tracks", JKEY, KM_PRESS, KM_CTRL, 0); | |||||
| /* menus */ | |||||
| WM_keymap_add_menu(keymap, "CLIP_MT_tracking_specials", WKEY, KM_PRESS, 0, 0); | |||||
| /* display */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.lock_selection"); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", DKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.show_disabled"); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.show_marker_search"); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.use_mute_footage"); | |||||
| transform_keymap_for_space(keyconf, keymap, SPACE_CLIP); | |||||
| /* clean-up */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_REMAINED); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_UPTO); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_ALL); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", false); | |||||
| /* Cursor */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0); | |||||
| /* pivot point */ | |||||
| WM_keymap_add_menu_pie(keymap, "CLIP_MT_pivot_pie", PERIODKEY, KM_PRESS, 0, 0); | |||||
| /* Copy-paste */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_copy_tracks", CKEY, KM_PRESS, KM_CTRL, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_paste_tracks", VKEY, KM_PRESS, KM_CTRL, 0); | |||||
| /* ******** Hotkeys avalaible for preview region only ******** */ | /* ******** Hotkeys avalaible for preview region only ******** */ | ||||
| WM_keymap_ensure(keyconf, "Clip Graph Editor", SPACE_CLIP, 0); | |||||
| keymap = WM_keymap_ensure(keyconf, "Clip Graph Editor", SPACE_CLIP, 0); | |||||
| /* "timeline" */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_change_frame", ACTIONMOUSE, KM_PRESS, 0, 0); | |||||
| /* selection */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select", SELECTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", false); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", true); | |||||
| ED_keymap_template_select_all(keymap, "CLIP_OT_graph_select_all_markers"); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_select_box", BKEY, KM_PRESS, 0, 0); | |||||
| /* delete */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_curve", XKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_curve", DELKEY, KM_PRESS, 0, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", XKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", DELKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| /* view */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_view_all", HOMEKEY, KM_PRESS, 0, 0); | |||||
| #ifdef WITH_INPUT_NDOF | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); | |||||
| #endif | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_graph_center_current_frame", PAD0, KM_PRESS, 0, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path", "space_data.lock_time_cursor"); | |||||
| /* clean-up */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_REMAINED); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", true); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_UPTO); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", true); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_ALL); | |||||
| RNA_boolean_set(kmi->ptr, "clear_active", true); | |||||
| /* tracks */ | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_disable_markers", DKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "action", 2); /* toggle */ | |||||
| transform_keymap_for_space(keyconf, keymap, SPACE_CLIP); | |||||
| /* ******** Hotkeys avalaible for channels region only ******** */ | /* ******** Hotkeys avalaible for channels region only ******** */ | ||||
| WM_keymap_ensure(keyconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); | |||||
| keymap = WM_keymap_ensure(keyconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); | |||||
| kmi = WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_select_channel", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "extend", true); /* toggle */ | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_view_all", HOMEKEY, KM_PRESS, 0, 0); | |||||
| #ifdef WITH_INPUT_NDOF | |||||
| WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); | |||||
| #endif | |||||
| } | } | ||||
| /* DO NOT make this static, this hides the symbol and breaks API generation script. */ | /* DO NOT make this static, this hides the symbol and breaks API generation script. */ | ||||
| const char *clip_context_dir[] = {"edit_movieclip", "edit_mask", NULL}; | const char *clip_context_dir[] = {"edit_movieclip", "edit_mask", NULL}; | ||||
| static int clip_context(const bContext *C, const char *member, bContextDataResult *result) | static int clip_context(const bContext *C, const char *member, bContextDataResult *result) | ||||
| { | { | ||||
| SpaceClip *sc = CTX_wm_space_clip(C); | SpaceClip *sc = CTX_wm_space_clip(C); | ||||
| ▲ Show 20 Lines • Show All 797 Lines • Show Last 20 Lines | |||||