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>2018-11-12 10:47:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-11-12 10:51:14 +0300
commitdf6530594f02969e6fae25df38d1b947411a9a82 (patch)
treebb2743a2d9eb6cb6dc33dc6ee850471a6833ebf0 /source/blender/editors/screen/area.c
parent5aeec318217729288bb16fd6ec0b09802f86f452 (diff)
Fix T57527: GP draw takes events from gizmos
Add keymap flag to the gizmo handler so events can be handled on the UI level and not get over-ridden by grease pencil.
Diffstat (limited to 'source/blender/editors/screen/area.c')
-rw-r--r--source/blender/editors/screen/area.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 66044680f10..8163959f909 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1461,6 +1461,18 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
/* user interface widgets */
UI_region_handlers_add(handlers);
}
+ if (flag & ED_KEYMAP_GIZMO) {
+ ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
+ if (ar) {
+ /* Anything else is confusing, only allow this. */
+ BLI_assert(&ar->handlers == handlers);
+ if (ar->gizmo_map == NULL) {
+ ar->gizmo_map = WM_gizmomap_new_from_type(
+ &(const struct wmGizmoMapType_Params){sa->spacetype, RGN_TYPE_WINDOW});
+ }
+ WM_gizmomap_add_handlers(ar, ar->gizmo_map);
+ }
+ }
if (flag & ED_KEYMAP_VIEW2D) {
/* 2d-viewport handling+manipulation */
wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "View2D", 0, 0);
@@ -1490,6 +1502,13 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Frames", 0, 0);
WM_event_add_keymap_handler(handlers, keymap);
}
+ if (flag & ED_KEYMAP_HEADER) {
+ /* standard keymap for headers regions */
+ wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Header", 0, 0);
+ WM_event_add_keymap_handler(handlers, keymap);
+ }
+
+ /* Keep last because of LMB/RMB handling, see: T57527. */
if (flag & ED_KEYMAP_GPENCIL) {
/* grease pencil */
/* NOTE: This is now 4 keymaps - One for basic functionality,
@@ -1519,11 +1538,6 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
wmKeyMap *keymap_sculpt = WM_keymap_ensure(wm->defaultconf, "Grease Pencil Stroke Sculpt Mode", 0, 0);
WM_event_add_keymap_handler(handlers, keymap_sculpt);
}
- if (flag & ED_KEYMAP_HEADER) {
- /* standard keymap for headers regions */
- wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Header", 0, 0);
- WM_event_add_keymap_handler(handlers, keymap);
- }
}
void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area)