* make function to map mouse into region coords
authorNathan Letwory <nathan@letworyinteractive.com>
Wed, 3 Dec 2008 20:57:23 +0000 (20:57 +0000)
committerNathan Letwory <nathan@letworyinteractive.com>
Wed, 3 Dec 2008 20:57:23 +0000 (20:57 +0000)
source/blender/editors/interface/interface.c
source/blender/editors/interface/interface.h
source/blender/editors/interface/interface_ops.c

index be36b2a..84525fc 100644 (file)
@@ -185,6 +185,12 @@ void ui_window_to_block(const ARegion *ar, uiBlock *block, int *x, int *y)
        *y= (int)(fy+0.5f);
 }
 
+void ui_window_to_region(const ARegion *ar, int *x, int *y)
+{
+       *x-= ar->winrct.xmin;
+       *y-= ar->winrct.ymin;
+}
+
 /* ******************* block calc ************************* */
 
 /* only for pulldowns */
index 2df65e3..4233e63 100644 (file)
@@ -244,6 +244,7 @@ extern void ui_block_to_window(const struct ARegion *ar, uiBlock *block, int *x,
 extern void ui_block_to_window_rct(const struct ARegion *ar, uiBlock *block, rctf *graph, rcti *winr);
 extern void ui_window_to_block_fl(const struct ARegion *ar, uiBlock *block, float *x, float *y);
 extern void ui_window_to_block(const struct ARegion *ar, uiBlock *block, int *x, int *y);
+extern void ui_window_to_region(const ARegion *ar, int *x, int *y);
 
 extern double ui_get_but_val(uiBut *but);
 extern void ui_set_but_val(uiBut *but, double value);
index d96deef..32bebab 100644 (file)
@@ -2595,8 +2595,10 @@ static int inside_region(ARegion *ar, int x, int y)
        if(BLI_in_rcti(&ar->winrct, x, y)) {
                /* XXX still can be zero */
                if(ar->v2d.mask.xmin!=ar->v2d.mask.xmax) {
-                       /* mask is in different coord space - take that in account */
-                       return BLI_in_rcti(&ar->v2d.mask, x-ar->winrct.xmin, y-ar->winrct.ymin);
+                       int arx = x;
+                       int ary = y;
+                       ui_window_to_region(ar, &arx, &ary);
+                       return BLI_in_rcti(&ar->v2d.mask, arx, ary);
                }
                return 1;
        }