Commit: ea8026438104f7be178fcb06562932e4e3d2f094 Author: Jacques Lucke Date: Wed Apr 24 17:34:48 2019 +0200 Branches: master https://developer.blender.org/rBea8026438104f7be178fcb06562932e4e3d2f094
Refactor: allow event handlers to have a poll function Previously only a fixed bounding box could be used. This was not flexible enough. T63193 will benefit from this refactor. Reviewers: brecht, campbellbarton =================================================================== M source/blender/editors/screen/area.c M source/blender/editors/space_action/space_action.c M source/blender/editors/space_clip/space_clip.c M source/blender/editors/space_console/space_console.c M source/blender/editors/space_file/space_file.c M source/blender/editors/space_graph/space_graph.c M source/blender/editors/space_image/space_image.c M source/blender/editors/space_nla/space_nla.c M source/blender/editors/space_node/space_node.c M source/blender/editors/space_outliner/space_outliner.c M source/blender/editors/space_script/space_script.c M source/blender/editors/space_sequencer/space_sequencer.c M source/blender/editors/space_text/space_text.c M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/intern/wm_event_system.c M source/blender/windowmanager/wm_event_system.h =================================================================== diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 5cd5153b060..a06674bd8b8 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1550,6 +1550,13 @@ static void region_subwindow(ARegion *ar) ar->visible = !hidden; } +static bool event_in_markers_region(const ARegion *ar, const wmEvent *event) +{ + rcti rect = ar->winrct; + rect.ymax = rect.ymin + UI_MARKER_MARGIN_Y; + return BLI_rcti_isect_pt(&rect, event->x, event->y); +} + /** * \param ar: Region, may be NULL when adding handlers for \a sa. */ @@ -1591,13 +1598,7 @@ static void ed_default_handlers( if (flag & ED_KEYMAP_MARKERS) { /* time-markers */ wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Markers", 0, 0); - - /* use a boundbox restricted map */ - /* same local check for all areas */ - static rcti rect = {0, 10000, 0, -1}; - rect.ymax = UI_MARKER_MARGIN_Y; - BLI_assert(ar->type->regionid == RGN_TYPE_WINDOW); - WM_event_add_keymap_handler_bb(handlers, keymap, &rect, &ar->winrct); + WM_event_add_keymap_handler_poll(handlers, keymap, event_in_markers_region); } if (flag & ED_KEYMAP_ANIMATION) { /* frame changing and timeline operators (for time spaces) */ diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index d6d46904db3..5a9c3a66f2b 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -166,7 +166,7 @@ static void action_main_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Dopesheet", SPACE_ACTION, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Dopesheet Generic", SPACE_ACTION, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -271,7 +271,7 @@ static void action_channel_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Animation Channels", 0, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Dopesheet Generic", SPACE_ACTION, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index f176763abf5..aa58e4cbe54 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -859,14 +859,14 @@ static void clip_main_region_init(wmWindowManager *wm, ARegion *ar) /* mask polls mode */ keymap = WM_keymap_ensure(wm->defaultconf, "Mask Editing", 0, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Clip", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Clip Editor", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void clip_main_region_draw(const bContext *C, ARegion *ar) @@ -1002,13 +1002,13 @@ static void clip_preview_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Clip", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Clip Graph Editor", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void graph_region_draw(const bContext *C, ARegion *ar) @@ -1140,7 +1140,7 @@ static void clip_channels_region_init(wmWindowManager *wm, ARegion *ar) UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy); keymap = WM_keymap_ensure(wm->defaultconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void clip_channels_region_draw(const bContext *C, ARegion *ar) diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 2cf8f6c46b9..834ede2a927 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -136,7 +136,7 @@ static void console_main_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Console", SPACE_CONSOLE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); /* add drop boxes */ lb = WM_dropboxmap_find("Console", SPACE_CONSOLE, RGN_TYPE_WINDOW); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index e0d370cdde2..1216755151b 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -316,10 +316,10 @@ static void file_main_region_init(wmWindowManager *wm, ARegion *ar) /* own keymaps */ keymap = WM_keymap_ensure(wm->defaultconf, "File Browser", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "File Browser Main", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void file_main_region_listener(wmWindow *UNUSED(win), @@ -498,7 +498,7 @@ static void file_tools_region_init(wmWindowManager *wm, ARegion *ar) /* own keymaps */ keymap = WM_keymap_ensure(wm->defaultconf, "File Browser", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void file_tools_region_draw(const bContext *C, ARegion *ar) @@ -528,7 +528,7 @@ static void file_header_region_init(wmWindowManager *wm, ARegion *ar) ED_region_header_init(ar); keymap = WM_keymap_ensure(wm->defaultconf, "File Browser", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void file_header_region_draw(const bContext *C, ARegion *ar) @@ -545,10 +545,10 @@ static void file_ui_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "File Browser", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "File Browser Buttons", SPACE_FILE, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void file_ui_region_draw(const bContext *C, ARegion *ar) diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index e45a27a08fb..c02021591db 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -186,7 +186,7 @@ static void graph_main_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Graph Editor", SPACE_GRAPH, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Graph Editor Generic", SPACE_GRAPH, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -353,7 +353,7 @@ static void graph_channel_region_init(wmWindowManager *wm, ARegion *ar) /* own keymap */ keymap = WM_keymap_ensure(wm->defaultconf, "Animation Channels", 0, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); keymap = WM_keymap_ensure(wm->defaultconf, "Graph Editor Generic", SPACE_GRAPH, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } @@ -406,7 +406,7 @@ static void graph_buttons_region_init(wmWindowManager *wm, ARegion *ar) ED_region_panels_init(wm, ar); keymap = WM_keymap_ensure(wm->defaultconf, "Graph Editor Generic", SPACE_GRAPH, 0); - WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + WM_event_add_keymap_handler_v2d_mask(&ar->handlers, keymap); } static void graph_buttons_region_draw(const bContext *C, ARegion *ar) diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 1e1d1e570b3..ebecd474621 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -536,17 +536,17 @@ static void image_main_region_init(wmWindowManager *wm, ARegion *ar) /* mask polls mode */ keymap = WM_keymap_ensure(wm->defaultconf, "Mask Editing", 0, 0); - WM_event_add_k @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs