[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57562] trunk/blender/source/blender/ editors/interface/interface_handlers.c: fix [#35792] Submenus not opening properly on mouse move

Campbell Barton ideasman42 at gmail.com
Wed Jun 19 08:01:39 CEST 2013


Revision: 57562
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57562
Author:   campbellbarton
Date:     2013-06-19 06:01:38 +0000 (Wed, 19 Jun 2013)
Log Message:
-----------
fix [#35792] Submenus not opening properly on mouse move
caused by own fix for [#35346], now only apply wiggle room for toplevel menus.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-06-19 05:17:31 UTC (rev 57561)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-06-19 06:01:38 UTC (rev 57562)
@@ -6581,7 +6581,8 @@
 	ui_mouse_motion_towards_init_ex(menu, xy, true);
 }
 
-static bool ui_mouse_motion_towards_check(uiBlock *block, uiPopupBlockHandle *menu, const int xy[2])
+static bool ui_mouse_motion_towards_check(uiBlock *block, uiPopupBlockHandle *menu, const int xy[2],
+                                          const bool use_wiggle_room)
 {
 	float p1[2], p2[2], p3[2], p4[2];
 	float oldp[2] = {menu->towards_xy[0], menu->towards_xy[1]};
@@ -6615,8 +6616,8 @@
 	p4[1] = rect_px.ymax + margin;
 
 	/* allow for some wiggle room, if the user moves a few pixels away,
-	 * don't immediately quit */
-	{
+	 * don't immediately quit (only for top level menus) */
+	if (use_wiggle_room) {
 		const float cent[2] = {
 		    BLI_rctf_cent_x(&rect_px),
 		    BLI_rctf_cent_y(&rect_px)};
@@ -7130,7 +7131,7 @@
 					menu->menuretval = UI_RETURN_CANCEL | UI_RETURN_POPUP_OK;
 			}
 			else {
-				ui_mouse_motion_towards_check(block, menu, &event->x);
+				ui_mouse_motion_towards_check(block, menu, &event->x, (level == 0));
 
 				/* check mouse moving outside of the menu */
 				if (inside == 0 && (block->flag & UI_BLOCK_MOVEMOUSE_QUIT)) {




More information about the Bf-blender-cvs mailing list