Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-02-20 06:29:29 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-02-20 06:37:15 +0300
commiteffe750ec103d56ff96f12ce64ac977a8ae51909 (patch)
treefd081fdade0458fa388b55d277034aa38588d146 /source/blender/editors
parent855b3e68ef272f6ddb3b496cf8e6d074733e99d4 (diff)
WM: support dynamic keymap handlers
Add getter callback support for 'WM_HANDLER_TYPE_KEYMAP' type handlers this is needed for key-maps which change based on the active tool. Replaces 'sneaky_handler' hack which temporarily inserted a handler.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/ED_screen.h13
-rw-r--r--source/blender/editors/screen/area.c3
-rw-r--r--source/blender/editors/space_image/space_image.c2
-rw-r--r--source/blender/editors/space_node/space_node.c2
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c2
5 files changed, 13 insertions, 9 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index c20d8e0555f..5d4f0919c44 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -356,12 +356,13 @@ void ED_area_type_hud_ensure(struct bContext *C, struct ScrArea *sa);
enum {
ED_KEYMAP_UI = (1 << 1),
ED_KEYMAP_GIZMO = (1 << 2),
- ED_KEYMAP_VIEW2D = (1 << 3),
- ED_KEYMAP_MARKERS = (1 << 4),
- ED_KEYMAP_ANIMATION = (1 << 5),
- ED_KEYMAP_FRAMES = (1 << 6),
- ED_KEYMAP_HEADER = (1 << 7),
- ED_KEYMAP_GPENCIL = (1 << 8),
+ ED_KEYMAP_TOOL = (1 << 3),
+ ED_KEYMAP_VIEW2D = (1 << 4),
+ ED_KEYMAP_MARKERS = (1 << 5),
+ ED_KEYMAP_ANIMATION = (1 << 6),
+ ED_KEYMAP_FRAMES = (1 << 7),
+ ED_KEYMAP_HEADER = (1 << 8),
+ ED_KEYMAP_GPENCIL = (1 << 9),
};
/* SCREEN_OT_space_context_cycle direction */
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 6df0702b126..32b85b40950 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1474,6 +1474,9 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ARegion *ar, L
WM_gizmomap_add_handlers(ar, ar->gizmo_map);
}
}
+ if (flag & ED_KEYMAP_TOOL) {
+ WM_event_add_keymap_handler_dynamic(&ar->handlers, WM_event_get_keymap_from_toolsystem, sa);
+ }
if (flag & ED_KEYMAP_VIEW2D) {
/* 2d-viewport handling+manipulation */
wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "View2D", 0, 0);
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 9171b923bad..6ae4eb9767b 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -1028,7 +1028,7 @@ void ED_spacetype_image(void)
/* regions: main window */
art = MEM_callocN(sizeof(ARegionType), "spacetype image region");
art->regionid = RGN_TYPE_WINDOW;
- art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL;
+ art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_TOOL | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL;
art->init = image_main_region_init;
art->draw = image_main_region_draw;
art->listener = image_main_region_listener;
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 0c15a6c2a7d..0039fb1e2ab 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -975,7 +975,7 @@ void ED_spacetype_node(void)
art->regionid = RGN_TYPE_WINDOW;
art->init = node_main_region_init;
art->draw = node_main_region_draw;
- art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_GIZMO | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL;
+ art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_GIZMO | ED_KEYMAP_TOOL | ED_KEYMAP_VIEW2D | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL;
art->listener = node_region_listener;
art->cursor = node_cursor;
art->event_cursor = true;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index f312dc971f3..10fadd9aaec 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -1473,7 +1473,7 @@ void ED_spacetype_view3d(void)
/* regions: main window */
art = MEM_callocN(sizeof(ARegionType), "spacetype view3d main region");
art->regionid = RGN_TYPE_WINDOW;
- art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_GPENCIL;
+ art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_TOOL | ED_KEYMAP_GPENCIL;
art->draw = view3d_main_region_draw;
art->init = view3d_main_region_init;
art->exit = view3d_main_region_exit;