[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50498] trunk/blender/source/blender/ editors/interface/interface_regions.c: make alphanumeric key shortcuts work for submenu' s so you can chain keys together to select items in a menu.

Campbell Barton ideasman42 at gmail.com
Mon Sep 10 08:44:26 CEST 2012


Revision: 50498
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50498
Author:   campbellbarton
Date:     2012-09-10 06:44:25 +0000 (Mon, 10 Sep 2012)
Log Message:
-----------
make alphanumeric key shortcuts work for submenu's so you can chain keys together to select items in a menu.

eg: 'Ctrl+V, E, S'
for - Vertex, Separate, Selection

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

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2012-09-10 06:18:20 UTC (rev 50497)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2012-09-10 06:44:25 UTC (rev 50498)
@@ -1648,6 +1648,18 @@
 
 	ar->regiondata = handle;
 
+	/* set UI_BLOCK_NUMSELECT before uiEndBlock() so we get alphanumeric keys assigned */
+	if (but) {
+		if (but->type == PULLDOWN) {
+			block->flag |= UI_BLOCK_NUMSELECT;
+		}
+	}
+	else {
+		block->flag |= UI_BLOCK_POPUP | UI_BLOCK_NUMSELECT;
+	}
+
+	block->flag |= UI_BLOCK_LOOP;
+
 	if (!block->endblock)
 		uiEndBlock(C, block);
 
@@ -1665,7 +1677,6 @@
 		saferct = MEM_callocN(sizeof(uiSafetyRct), "uiSafetyRct");
 		saferct->safety = block->safety;
 		BLI_addhead(&block->saferct, saferct);
-		block->flag |= UI_BLOCK_POPUP | UI_BLOCK_NUMSELECT;
 	}
 
 	/* clip block with window boundary */
@@ -1680,8 +1691,6 @@
 	ar->winrct.ymax = block->rect.ymax + MENU_TOP;
 	
 	ui_block_translate(block, -ar->winrct.xmin, -ar->winrct.ymin);
-	
-	block->flag |= UI_BLOCK_LOOP;
 
 	/* adds subwindow */
 	ED_region_init(C, ar);
@@ -2427,6 +2436,7 @@
 	uiPopupMenu *pup;
 	pup = MEM_callocN(sizeof(uiPopupMenu), __func__);
 	pup->block = uiBeginBlock(C, NULL, __func__, UI_EMBOSSP);
+	pup->block->flag |= UI_BLOCK_NUMSELECT;  /* default menus to numselect */
 	pup->layout = uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 0, 0, 200, 0, style);
 	pup->slideout = (but && (but->block->flag & UI_BLOCK_LOOP));
 	pup->but = but;




More information about the Bf-blender-cvs mailing list