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-14 02:46:13 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-11-14 02:48:59 +0300
commit91d0c7f9793e4a4a72a959c921b654faa795b17e (patch)
tree19a7bbdcd4d81f91a07173ad89ba4f360811fa2f
parent79fa8f193b70f37c58c915dd7792d26925061250 (diff)
Fix gizmo handler initialization w/ quad-view
It's not enough to get the active window region, now the region is passed in as an argument.
-rw-r--r--source/blender/editors/screen/area.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 8163959f909..98a59292473 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1449,8 +1449,13 @@ static void region_subwindow(ARegion *ar)
ar->visible = !hidden;
}
-static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *handlers, int flag)
+/**
+ * \param ar: Region, may be NULL when adding handlers for \a sa.
+ */
+static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ARegion *ar, ListBase *handlers, int flag)
{
+ BLI_assert(ar ? (&ar->handlers == handlers) : (&sa->handlers == handlers));
+
/* note, add-handler checks if it already exists */
/* XXX it would be good to have boundbox checks for some of these... */
@@ -1462,13 +1467,13 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
UI_region_handlers_add(handlers);
}
if (flag & ED_KEYMAP_GIZMO) {
- ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
+ BLI_assert(ar && ar->type->regionid == 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});
+ &(const struct wmGizmoMapType_Params){sa->spacetype, ar->type->regionid});
}
WM_gizmomap_add_handlers(ar, ar->gizmo_map);
}
@@ -1483,14 +1488,11 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
wmKeyMap *keymap = WM_keymap_ensure(wm->defaultconf, "Markers", 0, 0);
/* use a boundbox restricted map */
- ARegion *ar;
/* same local check for all areas */
static rcti rect = {0, 10000, 0, -1};
rect.ymax = UI_MARKER_MARGIN_Y;
- ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
- if (ar) {
- WM_event_add_keymap_handler_bb(handlers, keymap, &rect, &ar->winrct);
- }
+ BLI_assert(ar->type->regionid == RGN_TYPE_WINDOW);
+ WM_event_add_keymap_handler_bb(handlers, keymap, &rect, &ar->winrct);
}
if (flag & ED_KEYMAP_ANIMATION) {
/* frame changing and timeline operators (for time spaces) */
@@ -1605,7 +1607,7 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa)
sa->flag &= ~AREA_FLAG_REGION_SIZE_UPDATE;
/* default area handlers */
- ed_default_handlers(wm, sa, &sa->handlers, sa->type->keymapflag);
+ ed_default_handlers(wm, sa, NULL, &sa->handlers, sa->type->keymapflag);
/* checks spacedata, adds own handlers */
if (sa->type->init)
sa->type->init(wm, sa);
@@ -1619,7 +1621,7 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa)
if (ar->visible) {
/* default region handlers */
- ed_default_handlers(wm, sa, &ar->handlers, ar->type->keymapflag);
+ ed_default_handlers(wm, sa, ar, &ar->handlers, ar->type->keymapflag);
/* own handlers */
if (ar->type->init) {
ar->type->init(wm, ar);