Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_nla/space_nla.c
| Show First 20 Lines • Show All 318 Lines • ▼ Show 20 Lines | static void nla_buttons_region_init(wmWindowManager *wm, ARegion *region) | ||||
| WM_event_add_keymap_handler_v2d_mask(®ion->handlers, keymap); | WM_event_add_keymap_handler_v2d_mask(®ion->handlers, keymap); | ||||
| } | } | ||||
| static void nla_buttons_region_draw(const bContext *C, ARegion *region) | static void nla_buttons_region_draw(const bContext *C, ARegion *region) | ||||
| { | { | ||||
| ED_region_panels(C, region); | ED_region_panels(C, region); | ||||
| } | } | ||||
| static void nla_region_listener(wmWindow *UNUSED(win), | static void nla_region_listener(const wmRegionListenerParams *params) | ||||
| ScrArea *UNUSED(area), | |||||
| ARegion *region, | |||||
| wmNotifier *wmn, | |||||
| const Scene *UNUSED(scene)) | |||||
| { | { | ||||
| ARegion *region = params->region; | |||||
| wmNotifier *wmn = params->notifier; | |||||
| /* context changes */ | /* context changes */ | ||||
| switch (wmn->category) { | switch (wmn->category) { | ||||
| case NC_ANIMATION: | case NC_ANIMATION: | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| break; | break; | ||||
| case NC_SCENE: | case NC_SCENE: | ||||
| switch (wmn->data) { | switch (wmn->data) { | ||||
| case ND_OB_ACTIVE: | case ND_OB_ACTIVE: | ||||
| Show All 18 Lines | switch (wmn->category) { | ||||
| default: | default: | ||||
| if (wmn->data == ND_KEYS) { | if (wmn->data == ND_KEYS) { | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| static void nla_main_region_listener(wmWindow *UNUSED(win), | static void nla_main_region_listener(const wmRegionListenerParams *params) | ||||
| ScrArea *UNUSED(area), | |||||
| ARegion *region, | |||||
| wmNotifier *wmn, | |||||
| const Scene *UNUSED(scene)) | |||||
| { | { | ||||
| ARegion *region = params->region; | |||||
| wmNotifier *wmn = params->notifier; | |||||
| /* context changes */ | /* context changes */ | ||||
| switch (wmn->category) { | switch (wmn->category) { | ||||
| case NC_ANIMATION: | case NC_ANIMATION: | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| break; | break; | ||||
| case NC_SCENE: | case NC_SCENE: | ||||
| switch (wmn->data) { | switch (wmn->data) { | ||||
| case ND_RENDER_OPTIONS: | case ND_RENDER_OPTIONS: | ||||
| Show All 37 Lines | switch (wmn->category) { | ||||
| default: | default: | ||||
| if (wmn->data == ND_KEYS) { | if (wmn->data == ND_KEYS) { | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| static void nla_main_region_message_subscribe(const struct bContext *UNUSED(C), | static void nla_main_region_message_subscribe(const wmRegionMessageSubscribeParams *params) | ||||
| struct WorkSpace *UNUSED(workspace), | |||||
| struct Scene *scene, | |||||
| struct bScreen *screen, | |||||
| struct ScrArea *area, | |||||
| struct ARegion *region, | |||||
| struct wmMsgBus *mbus) | |||||
| { | { | ||||
| struct wmMsgBus *mbus = params->message_bus; | |||||
| Scene *scene = params->scene; | |||||
| bScreen *screen = params->screen; | |||||
| ScrArea *area = params->area; | |||||
| ARegion *region = params->region; | |||||
| PointerRNA ptr; | PointerRNA ptr; | ||||
| RNA_pointer_create(&screen->id, &RNA_SpaceNLA, area->spacedata.first, &ptr); | RNA_pointer_create(&screen->id, &RNA_SpaceNLA, area->spacedata.first, &ptr); | ||||
| wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { | wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { | ||||
| .owner = region, | .owner = region, | ||||
| .user_data = region, | .user_data = region, | ||||
| .notify = ED_region_do_msg_notify_tag_redraw, | .notify = ED_region_do_msg_notify_tag_redraw, | ||||
| }; | }; | ||||
| Show All 18 Lines | /* Timeline depends on scene properties. */ | ||||
| RNA_id_pointer_create(&scene->id, &idptr); | RNA_id_pointer_create(&scene->id, &idptr); | ||||
| for (int i = 0; i < ARRAY_SIZE(props); i++) { | for (int i = 0; i < ARRAY_SIZE(props); i++) { | ||||
| WM_msg_subscribe_rna(mbus, &idptr, props[i], &msg_sub_value_region_tag_redraw, __func__); | WM_msg_subscribe_rna(mbus, &idptr, props[i], &msg_sub_value_region_tag_redraw, __func__); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void nla_channel_region_listener(wmWindow *UNUSED(win), | static void nla_channel_region_listener(const wmRegionListenerParams *params) | ||||
| ScrArea *UNUSED(area), | |||||
| ARegion *region, | |||||
| wmNotifier *wmn, | |||||
| const Scene *UNUSED(scene)) | |||||
| { | { | ||||
| ARegion *region = params->region; | |||||
| wmNotifier *wmn = params->notifier; | |||||
| /* context changes */ | /* context changes */ | ||||
| switch (wmn->category) { | switch (wmn->category) { | ||||
| case NC_ANIMATION: | case NC_ANIMATION: | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| break; | break; | ||||
| case NC_SCENE: | case NC_SCENE: | ||||
| switch (wmn->data) { | switch (wmn->data) { | ||||
| case ND_OB_ACTIVE: | case ND_OB_ACTIVE: | ||||
| Show All 21 Lines | switch (wmn->category) { | ||||
| default: | default: | ||||
| if (wmn->data == ND_KEYS) { | if (wmn->data == ND_KEYS) { | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| static void nla_channel_region_message_subscribe(const struct bContext *UNUSED(C), | static void nla_channel_region_message_subscribe(const wmRegionMessageSubscribeParams *params) | ||||
| struct WorkSpace *UNUSED(workspace), | |||||
| struct Scene *UNUSED(scene), | |||||
| struct bScreen *screen, | |||||
| struct ScrArea *area, | |||||
| struct ARegion *region, | |||||
| struct wmMsgBus *mbus) | |||||
| { | { | ||||
| struct wmMsgBus *mbus = params->message_bus; | |||||
| bScreen *screen = params->screen; | |||||
| ScrArea *area = params->area; | |||||
| ARegion *region = params->region; | |||||
| PointerRNA ptr; | PointerRNA ptr; | ||||
| RNA_pointer_create(&screen->id, &RNA_SpaceNLA, area->spacedata.first, &ptr); | RNA_pointer_create(&screen->id, &RNA_SpaceNLA, area->spacedata.first, &ptr); | ||||
| wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { | wmMsgSubscribeValue msg_sub_value_region_tag_redraw = { | ||||
| .owner = region, | .owner = region, | ||||
| .user_data = region, | .user_data = region, | ||||
| .notify = ED_region_do_msg_notify_tag_redraw, | .notify = ED_region_do_msg_notify_tag_redraw, | ||||
| }; | }; | ||||
| Show All 11 Lines | for (int i = 0; i < ARRAY_SIZE(type_array); i++) { | ||||
| msg_key_params.ptr.type = type_array[i]; | msg_key_params.ptr.type = type_array[i]; | ||||
| WM_msg_subscribe_rna_params( | WM_msg_subscribe_rna_params( | ||||
| mbus, &msg_key_params, &msg_sub_value_region_tag_redraw, __func__); | mbus, &msg_key_params, &msg_sub_value_region_tag_redraw, __func__); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* editor level listener */ | /* editor level listener */ | ||||
| static void nla_listener(wmWindow *UNUSED(win), | static void nla_listener(const wmSpaceTypeListenerParams *params) | ||||
| ScrArea *area, | |||||
| wmNotifier *wmn, | |||||
| Scene *UNUSED(scene)) | |||||
| { | { | ||||
| ScrArea *area = params->area; | |||||
| wmNotifier *wmn = params->notifier; | |||||
| /* context changes */ | /* context changes */ | ||||
| switch (wmn->category) { | switch (wmn->category) { | ||||
| case NC_ANIMATION: | case NC_ANIMATION: | ||||
| /* TODO: filter specific types of changes? */ | /* TODO: filter specific types of changes? */ | ||||
| ED_area_tag_refresh(area); | ED_area_tag_refresh(area); | ||||
| break; | break; | ||||
| case NC_SCENE: | case NC_SCENE: | ||||
| #if 0 | #if 0 | ||||
| ▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines | |||||