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:
authorTon Roosendaal <ton@blender.org>2011-03-10 14:11:26 +0300
committerTon Roosendaal <ton@blender.org>2011-03-10 14:11:26 +0300
commit476eadbcb12ca26afe0f535c5e359759d3684cf0 (patch)
tree97a3b6c3b91d548033c7c43fe819996b0f3562aa /source/blender
parent0e74ed595210373beb4d3c4beb48d99756ff0ca4 (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.c3
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c16
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);