diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-11-28 05:50:15 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-11-28 05:50:15 +0300 |
commit | ba8c21989c9b75bc8ec3bcacc381b2787fb07704 (patch) | |
tree | 51972d261605ac59a66d4975ac042545c06d7bf9 /source/blender/editors | |
parent | dcf0860dabf326e3a4b37ae15baae491e661cbf8 (diff) |
WM: avoid re-initializing tools while resizing areas
Every update caused the gizmo to be recreated.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/screen/area.c | 9 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 3a6cac5d958..0f024b02c43 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1640,9 +1640,12 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa) } - if ((1 << sa->spacetype) & WM_TOOLSYSTEM_SPACE_MASK) { - WM_toolsystem_refresh_screen_area(workspace, view_layer, sa); - sa->flag |= AREA_FLAG_ACTIVE_TOOL_UPDATE; + /* Avoid re-initializing tools while resizing the window. */ + if ((G.moving & G_TRANSFORM_WM) == 0) { + if ((1 << sa->spacetype) & WM_TOOLSYSTEM_SPACE_MASK) { + WM_toolsystem_refresh_screen_area(workspace, view_layer, sa); + sa->flag |= AREA_FLAG_ACTIVE_TOOL_UPDATE; + } } } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 2305ce8f5fe..812455333e9 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1541,6 +1541,8 @@ static void area_move_exit(bContext *C, wmOperator *op) /* this makes sure aligned edges will result in aligned grabbing */ BKE_screen_remove_double_scrverts(CTX_wm_screen(C)); BKE_screen_remove_double_scredges(CTX_wm_screen(C)); + + G.moving &= ~G_TRANSFORM_WM; } static int area_move_exec(bContext *C, wmOperator *op) @@ -1563,6 +1565,8 @@ static int area_move_invoke(bContext *C, wmOperator *op, const wmEvent *event) if (!area_move_init(C, op)) return OPERATOR_PASS_THROUGH; + G.moving |= G_TRANSFORM_WM; + /* add temp handler */ WM_event_add_modal_handler(C, op); |