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>2009-02-19 22:03:53 +0300
committerTon Roosendaal <ton@blender.org>2009-02-19 22:03:53 +0300
commit2cb5af58a6cf8120275b37c063899b0234719da2 (patch)
tree393c3baacfed1186826e9a6acfd2bd90f04b4c7e /source/blender/windowmanager
parentdd78ca15c74ad16905c5ac4d4460aab502e1031e (diff)
2.5
- Mesh Rip back (Vkey). For those who keep wondering how it works: just put mouse cursor somewhere close to the selection, press V and mouse mouse away from it. Feels like real rip! - Made extrude sorta work, no menu/options yet though. But it does transform! - Added an short event->mval[2] with region coords, easier coding for the guys :) - Fill operator standard delivers 'beauty' now
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_types.h3
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c17
2 files changed, 17 insertions, 3 deletions
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index d67a31f9e42..4dc62985f53 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -66,7 +66,8 @@ typedef struct wmEvent {
short type; /* event code itself (short, is also in keymap) */
short val; /* press, release, scrollvalue */
- short x, y; /* mouse pointer position */
+ short x, y; /* mouse pointer position, screen coord */
+ short mval[2]; /* region mouse position, name convention pre 2.5 :) */
short prevx, prevy; /* previous mouse pointer position */
short unicode; /* future, ghost? */
char ascii; /* from ghost */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 9fe97f307c5..6eb71d3d314 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -322,6 +322,16 @@ static void wm_operator_print(wmOperator *op)
MEM_freeN(buf);
}
+static void wm_region_mouse_co(bContext *C, wmEvent *event)
+{
+ ARegion *ar= CTX_wm_region(C);
+ if(ar) {
+ /* compatibility convention */
+ event->mval[0]= event->x - ar->winrct.xmin;
+ event->mval[1]= event->y - ar->winrct.ymin;
+ }
+}
+
static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, PointerRNA *properties)
{
wmWindowManager *wm= CTX_wm_manager(C);
@@ -333,8 +343,10 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
if((G.f & G_DEBUG) && event && event->type!=MOUSEMOVE)
printf("handle evt %d win %d op %s\n", event?event->type:0, CTX_wm_screen(C)->subwinactive, ot->idname);
- if(op->type->invoke && event)
- retval= (*op->type->invoke)(C, op, event);
+ if(op->type->invoke && event) {
+ wm_region_mouse_co(C, event);
+ retval= op->type->invoke(C, op, event);
+ }
else if(op->type->exec)
retval= op->type->exec(C, op);
else
@@ -636,6 +648,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
wm_handler_op_context(C, handler);
+ wm_region_mouse_co(C, event);
retval= ot->modal(C, op, event);
/* putting back screen context, reval can pass trough after modal failures! */