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>2008-11-17 21:54:03 +0300
committerTon Roosendaal <ton@blender.org>2008-11-17 21:54:03 +0300
commit8c84a4338597b8b17bca5b1ffbe819f6d71fbf83 (patch)
tree94939c5adcfde1f3e32e661db892a9ca48520e3e /source/blender/windowmanager/intern
parent623421d580277f6e1f5404c019d4f807cf1645e9 (diff)
2.5 getting-back-into-coding commit :)
- cleaned up join and split operations. Most noticable is operator callback design, which should make a design based on user-less exec() first, then wrap invoke() and modal() around it. The exec() should be callable with only Context and properties. - split now works again; and inversed as previously, if you drag from a triangle (action zone) inside area it subdivides area as expected. - dragging from triangle outside area, over an edge, joins areas - split has been simplified, it had too many options... it could just work simpler (now) - 'action zone' now is an operator itself, a widget sending an ACTIONZONE event, which can be handled by others (so other gestures can be added in action zone too) Still evaluating: - context gets set where? - code structure confuses... what are proper functions for operators? - what is WM... should low level screen stuff more there? - when do you send event, notifier? - files grow to large, will clean Oh yeah and docs, docs, docs. Coming! :)
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 700ac04603d..73186d7e41d 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -442,8 +442,8 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
for(km= handler->keymap->first; km; km= km->next) {
if(wm_eventmatch(event, km)) {
- /*if(event->type!=MOUSEMOVE)
- printf("handle evt %d win %d op %s\n", event->type, C->window->winid, km->idname);*/
+ /* if(event->type!=MOUSEMOVE)
+ printf("handle evt %d win %d op %s\n", event->type, C->window->winid, km->idname); */
event->keymap_idname= km->idname; /* weak, but allows interactive callback to not use rawkey */
@@ -470,6 +470,17 @@ static int wm_event_inside_i(wmEvent *event, rcti *rect)
return BLI_in_rcti(rect, event->x, event->y);
}
+static ScrArea *area_event_inside(bContext *C, wmEvent *event)
+{
+ ScrArea *sa;
+
+ if(C->screen)
+ for(sa= C->screen->areabase.first; sa; sa= sa->next)
+ if(wm_event_inside_i(event, &sa->totrct))
+ return sa;
+ return NULL;
+}
+
/* called in main loop */
/* goes over entire hierarchy: events -> window -> screen -> area -> region */
@@ -488,7 +499,8 @@ void wm_event_do_handlers(bContext *C)
C->window= win;
C->screen= win->screen;
-
+ C->area= area_event_inside(C, event);
+
/* MVC demands to not draw in event handlers... for now we leave it */
wm_window_make_drawable(C, win);