diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-29 08:25:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-29 08:25:56 +0300 |
commit | d2859237fa108f77814a6270d592b55a2b63c255 (patch) | |
tree | 8f917ccde39ac52acf51c57a2c7e319703ef72f1 /source/blender/editors/interface/interface_region_popover.c | |
parent | 14897fb6533a6fcfdb665a215b8daf72b6550574 (diff) |
Fix T63898: "Open on Mouse Over" causes inconsistent draw-style
Diffstat (limited to 'source/blender/editors/interface/interface_region_popover.c')
-rw-r--r-- | source/blender/editors/interface/interface_region_popover.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/editors/interface/interface_region_popover.c b/source/blender/editors/interface/interface_region_popover.c index 110c8827849..f149ccd626c 100644 --- a/source/blender/editors/interface/interface_region_popover.c +++ b/source/blender/editors/interface/interface_region_popover.c @@ -257,6 +257,8 @@ static void ui_block_free_func_POPOVER(uiPopupBlockHandle *UNUSED(handle), void uiPopupBlockHandle *ui_popover_panel_create( bContext *C, ARegion *butregion, uiBut *but, uiMenuCreateFunc menu_func, void *arg) { + wmWindow *window = CTX_wm_window(C); + /* Create popover, buttons are created from callback. */ uiPopover *pup = MEM_callocN(sizeof(uiPopover), __func__); pup->but = but; @@ -271,7 +273,11 @@ uiPopupBlockHandle *ui_popover_panel_create( pup->menu_arg = arg; #ifdef USE_UI_POPOVER_ONCE - pup->is_once = true; + { + /* Ideally this would be passed in. */ + const wmEvent *event = window->eventstate; + pup->is_once = (event->type == LEFTMOUSE) && (event->val == KM_PRESS); + } #endif /* Create popup block. */ @@ -283,7 +289,6 @@ uiPopupBlockHandle *ui_popover_panel_create( /* Add handlers. If attached to a button, the button will already * add a modal handler and pass on events. */ if (!but) { - wmWindow *window = CTX_wm_window(C); UI_popup_handlers_add(C, &window->modalhandlers, handle, 0); WM_event_add_mousemove(C); handle->popup = true; |