Revision: 17699 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17699 Author: ton Date: 2008-12-03 19:14:52 +0100 (Wed, 03 Dec 2008)
Log Message: ----------- 2.5 Another view2d fix: buttons now get clipped for region and mask, so sliders will work fine, but also buttons overlapping region edges. Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/interface/interface_ops.c branches/blender2.5/blender/source/blender/editors/interface/view2d.c Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/interface/interface_ops.c 2008-12-03 17:36:50 UTC (rev 17698) +++ branches/blender2.5/blender/source/blender/editors/interface/interface_ops.c 2008-12-03 18:14:52 UTC (rev 17699) @@ -2590,28 +2590,41 @@ return NULL; } +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) { + return BLI_in_rcti(&ar->v2d.mask, x, y); + } + return 1; + } + return 0; +} + static uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y, uiBlock **rblock) { uiBlock *block, *blockover= NULL; uiBut *but, *butover= NULL; int mx, my; - for(block=ar->uiblocks.first; block; block=block->next) { - mx= x; - my= y; - ui_window_to_block(ar, block, &mx, &my); + if(inside_region(ar, x, y)) { + for(block=ar->uiblocks.first; block; block=block->next) { + mx= x; + my= y; + ui_window_to_block(ar, block, &mx, &my); - for(but=block->buttons.first; but; but= but->next) { - /* give precedence to already activated buttons */ - if(ui_but_contains_pt(but, mx, my)) { - if(!butover || (!butover->activate && but->activate)) { - butover= but; - blockover= block; + for(but=block->buttons.first; but; but= but->next) { + /* give precedence to already activated buttons */ + if(ui_but_contains_pt(but, mx, my)) { + if(!butover || (!butover->activate && but->activate)) { + butover= but; + blockover= block; + } } } } } - if(rblock) *rblock= blockover; Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/interface/view2d.c 2008-12-03 17:36:50 UTC (rev 17698) +++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c 2008-12-03 18:14:52 UTC (rev 17699) @@ -42,6 +42,8 @@ #include "BIF_gl.h" #include "BIF_glutil.h" +#include "ED_screen.h" + #include "UI_resources.h" #include "UI_view2d.h" @@ -363,17 +365,7 @@ /* Restore view matrices after drawing */ void UI_view2d_view_restore(const bContext *C) { - ARegion *region= C->region; - int winx, winy; - - /* calculate extents of region */ - winx= region->winrct.xmax - region->winrct.xmin; - winy= region->winrct.ymax - region->winrct.ymin; - - /* set default region matrix - pixel offsets (0.375) for 1:1 correspondance are not applied, - * as they were causing some unwanted offsets when drawing - */ - wmOrtho2(C->window, 0, winx, 0, winy); + ED_region_pixelspace(C, C->region); } /* *********************************************************************** */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs