Fix T51845
authorraa <roaoao@gmail.com>
Fri, 23 Jun 2017 08:04:58 +0000 (11:04 +0300)
committerraa <roaoao@gmail.com>
Fri, 23 Jun 2017 08:05:54 +0000 (11:05 +0300)
source/blender/blenlib/BLI_rect.h
source/blender/blenlib/intern/rct.c
source/blender/editors/interface/interface.c

index 041679ef8764db1e9e13c391ebb6e1f54d362c9d..21b9c75ac35d6b18d12cb27a17f19dfa128a7ced 100644 (file)
@@ -97,6 +97,7 @@ void BLI_rctf_union(struct rctf *rctf1, const struct rctf *rctf2);
 void BLI_rcti_rctf_copy(struct rcti *dst, const struct rctf *src);
 void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src);
 void BLI_rcti_rctf_copy_floor(struct rcti *dst, const struct rctf *src);
+void BLI_rcti_rctf_copy_round(struct rcti *dst, const struct rctf *src);
 
 void BLI_rctf_rotate_expand(rctf *dst, const rctf *src, const float angle);
 
index fd24a00156d90114d26adecb488e13da8a80b473..e0c4cbe999055bf572fc0dc849c02c5fc291c231 100644 (file)
@@ -693,6 +693,14 @@ void BLI_rcti_rctf_copy_floor(rcti *dst, const rctf *src)
        dst->ymax = floorf(src->ymax);
 }
 
+void BLI_rcti_rctf_copy_round(rcti *dst, const rctf *src)
+{
+       dst->xmin = floorf(src->xmin + 0.5f);
+       dst->xmax = floorf(src->xmax + 0.5f);
+       dst->ymin = floorf(src->ymin + 0.5f);
+       dst->ymax = floorf(src->ymax + 0.5f);
+}
+
 void BLI_rctf_rcti_copy(rctf *dst, const rcti *src)
 {
        dst->xmin = src->xmin;
index 64b26406f8453297eacd29ed3765c369423d5979..2ebdf6d214e0fd2fb6e02a5c088c9fb10ca4b614 100644 (file)
@@ -1337,7 +1337,7 @@ static void ui_but_to_pixelrect(rcti *rect, const ARegion *ar, uiBlock *block, u
        rctf rectf;
 
        ui_block_to_window_rctf(ar, block, &rectf, (but) ? &but->rect : &block->rect);
-       BLI_rcti_rctf_copy(rect, &rectf);
+       BLI_rcti_rctf_copy_round(rect, &rectf);
        BLI_rcti_translate(rect, -ar->winrct.xmin, -ar->winrct.ymin);
 }