diff options
author | Ton Roosendaal <ton@blender.org> | 2011-03-10 14:11:26 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-03-10 14:11:26 +0300 |
commit | 476eadbcb12ca26afe0f535c5e359759d3684cf0 (patch) | |
tree | 97a3b6c3b91d548033c7c43fe819996b0f3562aa /source/blender | |
parent | 0e74ed595210373beb4d3c4beb48d99756ff0ca4 (diff) |
Bugfix #26437
- Tooltip-hanging fix made the 'active' button be removed when mouse
enters another subwindow. Caused by commit of a week ago.
- Reverted the eventsystem change that sets 'active subwindow' before
it calls modal handlers. This made editors become active on using
menus, buttons, or other modal ops.
Side effect is that for transform operators called via toolbar, the
overlay-extra draw with helplines now gets skipped. Will check on
good ways for it.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 3 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 16 |
2 files changed, 10 insertions, 9 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 7c3cb006225..91380d20f41 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4608,7 +4608,8 @@ void uiFreeActiveButtons(const bContext *C, bScreen *screen) uiHandleButtonData *data= but->active; if(data->menu==NULL && data->searchbox==NULL) - ui_button_active_free(C, but); + if(data->state == BUTTON_STATE_HIGHLIGHT) + ui_button_active_free(C, but); } } } diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index ae61b3dd98f..85d399519ad 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1738,14 +1738,6 @@ void wm_event_do_handlers(bContext *C) CTX_wm_area_set(C, area_event_inside(C, event->x, event->y)); CTX_wm_region_set(C, region_event_inside(C, event->x, event->y)); - /* XXX to solve, here screen handlers? */ - if(event->type==MOUSEMOVE) { - /* state variables in screen, cursors, also used in wm_draw.c */ - ED_screen_set_subwinactive(C, event); - /* for regions having custom cursors */ - wm_paintcursor_test(C, event); - } - /* MVC demands to not draw in event handlers... but we need to leave it for ogl selecting etc */ wm_window_make_drawable(C, win); @@ -1767,6 +1759,14 @@ void wm_event_do_handlers(bContext *C) ARegion *ar; int doit= 0; + /* Note: setting subwin active should be done here, after modal handlers have been done */ + if(event->type==MOUSEMOVE) { + /* state variables in screen, cursors. Also used in wm_draw.c, fails for modal handlers though */ + ED_screen_set_subwinactive(C, event); + /* for regions having custom cursors */ + wm_paintcursor_test(C, event); + } + for(sa= win->screen->areabase.first; sa; sa= sa->next) { if(wm_event_inside_i(event, &sa->totrct)) { CTX_wm_area_set(C, sa); |