diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2016-04-19 17:04:44 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2016-04-19 17:17:34 +0300 |
commit | 37493fb9fefca6a090bea689de11b4b995b7bdb0 (patch) | |
tree | 47718ca5d285bb60abde3d96b3d35fce3ea43e29 /source/blender/editors/interface/interface_regions.c | |
parent | 9b48f2b27c0f64c7f8cc452ad3820f705c15495d (diff) |
Toggle to standard cursor when opening menus/popups
Cursor is now set to standard arrow-cursor when opening menu, and reset to previous one when closing it. Previously it just stayed as it was before, e.g. the edit mode cross-cursor stayed active even if a menu was opened.
Fixes T48192.
Diffstat (limited to 'source/blender/editors/interface/interface_regions.c')
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 821d8b15595..b3972bebd96 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1788,10 +1788,20 @@ void ui_popup_block_scrolltest(uiBlock *block) static void ui_popup_block_remove(bContext *C, uiPopupBlockHandle *handle) { - ui_region_temp_remove(C, CTX_wm_screen(C), handle->region); + wmWindow *win = CTX_wm_window(C); + bScreen *sc = CTX_wm_screen(C); + + ui_region_temp_remove(C, sc, handle->region); + + /* reset to region cursor (only if there's not another menu open) */ + if (BLI_listbase_is_empty(&sc->regionbase)) { + ED_region_cursor_set(win, CTX_wm_area(C), CTX_wm_region(C)); + /* in case cursor needs to be changed again */ + WM_event_add_mousemove(C); + } if (handle->scrolltimer) - WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), handle->scrolltimer); + WM_event_remove_timer(CTX_wm_manager(C), win, handle->scrolltimer); } /** @@ -1975,6 +1985,8 @@ uiPopupBlockHandle *ui_popup_block_create( if (activebut) { UI_but_tooltip_timer_remove(C, activebut); } + /* standard cursor by default */ + WM_cursor_set(window, CURSOR_STD); /* create handle */ handle = MEM_callocN(sizeof(uiPopupBlockHandle), "uiPopupBlockHandle"); |