Small fix: in the ghost part of WM event handling, a function was
setting 'active subwindow' and registering headers to be drawn active
for this or not. It should be nicely inside the handler queue, so
it doesnt get executed on modal window-handlers. 

(This solves flashing area headers while dragging area edges)

Still needed to resolve how screen handling goes... via handlers
with operators? On my list to keep track of. :)
This commit is contained in:
Ton Roosendaal
2008-12-14 19:04:20 +00:00
parent 5858ce4495
commit b1e07d13ec
3 changed files with 4 additions and 9 deletions

View File

@@ -1026,10 +1026,6 @@ void ED_screen_set_subwinactive(wmWindow *win)
ScrArea *sa;
int oldswin= win->screen->subwinactive;
/* XXX prevent this call for modal menus now */
if(win->screen->regionbase.first)
return;
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
if(event->x > sa->totrct.xmin && event->x < sa->totrct.xmax)
if(event->y > sa->totrct.ymin && event->y < sa->totrct.ymax)

View File

@@ -277,7 +277,6 @@ static int screen_cursor_test(bContext *C, wmOperator *op, wmEvent *event)
} else {
WM_set_cursor(C, CURSOR_X_MOVE);
}
return OPERATOR_FINISHED;
}
else {
ScrArea *sa= NULL;

View File

@@ -635,14 +635,16 @@ void wm_event_do_handlers(bContext *C)
/* MVC demands to not draw in event handlers... for now we leave it */
wm_window_make_drawable(C, win);
action= wm_handlers_do(C, event, &win->handlers);
if(wm_event_always_pass(event) || action==WM_HANDLER_CONTINUE) {
ScrArea *sa;
ARegion *ar;
int doit= 0;
ED_screen_set_subwinactive(win); /* state variables in screen */
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
if(wm_event_always_pass(event) || wm_event_prev_inside_i(event, &sa->totrct)) {
doit= 1;
@@ -896,8 +898,6 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata)
event.x= evt->x= cx;
event.y= evt->y= (win->sizey-1) - cy;
ED_screen_set_subwinactive(win); /* state variables in screen */
update_tablet_data(win, &event);
wm_event_add(win, &event);
}