[Bf-blender-cvs] [d60804b] pie-menus: Fixes:

Antony Riakiotakis noreply at git.blender.org
Wed Jul 30 19:02:03 CEST 2014


Commit: d60804b72d9e8ddcda414a89de576abfb191c2e5
Author: Antony Riakiotakis
Date:   Wed Jul 30 19:01:48 2014 +0200
Branches: pie-menus
https://developer.blender.org/rBd60804b72d9e8ddcda414a89de576abfb191c2e5

Fixes:

* Space sticky did not call search menu
* Cancelling and confirming with no active button would respawn the pie
menu immediately in drag style interaction
* Area now covers the whole screen, collision with pie buttons is done
always.

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

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

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

diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index be2eb90..bb5872f 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -8560,7 +8560,15 @@ static int ui_pie_menu_apply(bContext *C, uiPopupBlockHandle *menu, uiBut *but,
 		}
 	}
 	else {
-		menu->menuretval = UI_RETURN_CANCEL;
+		uiBlock *block = menu->region->uiblocks.first;
+
+		if (!(click_style || force_close)) {
+			block->pie_data.flags |= UI_PIE_FINISHED;
+		}
+		else
+			menu->menuretval = UI_RETURN_CANCEL;
+
+		ED_region_tag_redraw(menu->region);
 	}
 
 	return retval;
@@ -8676,12 +8684,12 @@ static int ui_handler_pie(bContext *C, const wmEvent *event, uiPopupBlockHandle
 
 	if (block->pie_data.flags & UI_PIE_FINISHED) {
 		if ((event->type == block->pie_data.event && event->val == KM_RELEASE) ||
-		    event->type == RIGHTMOUSE ||
-		    event->type == ESCKEY)
+		     ((event->type == RIGHTMOUSE || event->type == ESCKEY) && (event->val == KM_PRESS)))
 		{
 			menu->menuretval = UI_RETURN_OK;
 		}
 
+		ED_region_tag_redraw(ar);
 		return WM_UI_HANDLER_BREAK;
 	}
 
@@ -8728,7 +8736,13 @@ static int ui_handler_pie(bContext *C, const wmEvent *event, uiPopupBlockHandle
 
 			case ESCKEY:
 			case RIGHTMOUSE:
-				menu->menuretval = UI_RETURN_CANCEL;
+				if (!is_click_style) {
+					block->pie_data.flags |= UI_PIE_FINISHED;
+					menu->menuretval = 0;
+					ED_region_tag_redraw(ar);
+				}
+				else
+					menu->menuretval = UI_RETURN_CANCEL;
 				break;
 
 			case AKEY:
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 00f7b7a..fe0644b 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1740,19 +1740,10 @@ uiBlock *ui_popup_block_refresh(
 				block->pie_data.flags |= UI_PIE_INITIAL_DIRECTION;
 		}
 
-		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 + width;
-
-		ui_block_translate(block, -ar->winrct.xmin, -ar->winrct.ymin);
-
-		/* spawned coordinates still in window space, convert to screen */
-		block->pie_data.pie_center_spawned[0] -= ar->winrct.xmin;
-		block->pie_data.pie_center_spawned[1] -= ar->winrct.ymin;
-		block->pie_data.pie_center_init[0] -= ar->winrct.xmin;
-		block->pie_data.pie_center_init[1] -= ar->winrct.ymin;
-
+		ar->winrct.xmin = 0;
+		ar->winrct.xmax = winx;
+		ar->winrct.ymin = 0;
+		ar->winrct.ymax = winy;
 
 		ui_block_calculate_pie_segment(block, block->pie_data.pie_center_init[0], block->pie_data.pie_center_init[1]);




More information about the Bf-blender-cvs mailing list