[Bf-blender-cvs] [c6f727c] pie-menus: Set the area rectangle to the whole screen area that spawned the pie menu.

Antony Riakiotakis noreply at git.blender.org
Mon Jun 2 22:58:17 CEST 2014


Commit: c6f727c667172361ee0cc928faeb5c2b1138ce33
Author: Antony Riakiotakis
Date:   Mon Jun 2 23:53:34 2014 +0300
https://developer.blender.org/rBc6f727c667172361ee0cc928faeb5c2b1138ce33

Set the area rectangle to the whole screen area that spawned the pie
menu.

This means menus are now clipped correctly and their events are handled
in the whole area too, not only inside the bounding box of the buttons.

===================================================================

M	source/blender/editors/interface/interface_regions.c

===================================================================

diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 8e9b6d5..421e95e 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1579,14 +1579,22 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
 	/* clip block with window boundary */
 	ui_popup_block_clip(window, block);
 	
-	/* the block and buttons were positioned in window space as in 2.4x, now
-	 * these menu blocks are regions so we bring it back to region space.
-	 * additionally we add some padding for the menu shadow or rounded menus */
-	ar->winrct.xmin = block->rect.xmin - width;
-	ar->winrct.xmax = block->rect.xmax + width;
-	ar->winrct.ymin = block->rect.ymin - width;
-	ar->winrct.ymax = block->rect.ymax + MENU_TOP;
-	
+	if (block->flag & UI_BLOCK_RADIAL) {
+		/* find area that spawned this menu, keep it inside */
+		ScrArea *sa = CTX_wm_area(C);
+
+		ar->winrct = sa->totrct;
+	}
+	else {
+		/* the block and buttons were positioned in window space as in 2.4x, now
+		 * these menu blocks are regions so we bring it back to region space.
+		 * additionally we add some padding for the menu shadow or rounded menus */
+		ar->winrct.xmin = block->rect.xmin - width;
+		ar->winrct.xmax = block->rect.xmax + width;
+		ar->winrct.ymin = block->rect.ymin - width;
+		ar->winrct.ymax = block->rect.ymax + MENU_TOP;
+	}
+
 	ui_block_translate(block, -ar->winrct.xmin, -ar->winrct.ymin);
 
 	/* adds subwindow */




More information about the Bf-blender-cvs mailing list