[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12849] trunk/blender/source/blender: for button popups, dont close unless you click or press escape, this would often close when dragging a button value ( or when using a tablet I am told)

Campbell Barton ideasman42 at gmail.com
Wed Dec 12 00:05:12 CET 2007


Revision: 12849
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12849
Author:   campbellbarton
Date:     2007-12-12 00:05:10 +0100 (Wed, 12 Dec 2007)

Log Message:
-----------
for button popups, dont close unless you click or press escape, this would often close when dragging a button value (or when using a tablet I am told)

Modified Paths:
--------------
    trunk/blender/source/blender/include/BIF_interface.h
    trunk/blender/source/blender/python/api2_2x/Draw.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editaction.c
    trunk/blender/source/blender/src/editimasel.c
    trunk/blender/source/blender/src/editnla.c
    trunk/blender/source/blender/src/editnode.c
    trunk/blender/source/blender/src/editscreen.c
    trunk/blender/source/blender/src/editsound.c
    trunk/blender/source/blender/src/edittime.c
    trunk/blender/source/blender/src/filesel.c
    trunk/blender/source/blender/src/interface.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/toolbox.c

Modified: trunk/blender/source/blender/include/BIF_interface.h
===================================================================
--- trunk/blender/source/blender/include/BIF_interface.h	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/include/BIF_interface.h	2007-12-11 23:05:10 UTC (rev 12849)
@@ -188,7 +188,7 @@
 void uiComposeLinks(uiBlock *block);
 void uiSetButLock(int val, char *lockstr);
 void uiClearButLock(void);
-int uiDoBlocks(struct ListBase *lb, int event);
+int uiDoBlocks(struct ListBase *lb, int event, int movemouse_quit);
 void uiSetCurFont(uiBlock *block, int index);
 void uiDefFont(unsigned int index, void *xl, void *large, void *medium, void *small);
 void uiFreeBlock(uiBlock *block);

Modified: trunk/blender/source/blender/python/api2_2x/Draw.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Draw.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/python/api2_2x/Draw.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -730,7 +730,7 @@
 
 	if (val) {
 
-		if (uiDoBlocks( &curarea->uiblocks, event ) != UI_NOTHING) event = 0;
+		if (uiDoBlocks( &curarea->uiblocks, event, 1 ) != UI_NOTHING) event = 0;
 
 		if (event == UI_BUT_EVENT) {
 			/* check that event is in free range for script button events;
@@ -1117,7 +1117,7 @@
 		/* Done clearing events */
 		
 		uiBoundsBlock(uiblock, 5);
-		uiDoBlocks(&listb, 0);
+		uiDoBlocks(&listb, 0, 1);
 	}
 	uiFreeBlocks(&listb);
 	uiblock = NULL;

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/drawview.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -2807,6 +2807,7 @@
 
 static void draw_viewport_fps(ScrArea *sa);
 
+
 void drawview3dspace(ScrArea *sa, void *spacedata)
 {
 	View3D *v3d= spacedata;
@@ -3288,11 +3289,12 @@
 {
 	float fps;
 	char printable[16];
-	printable[0] = '\0';
 
+	
 	if (lredrawtime == redrawtime)
 		return;
 	
+	printable[0] = '\0';
 	fps = (float)(1.0/(lredrawtime-redrawtime));
 	
 	/* is this more then half a frame behind? */

Modified: trunk/blender/source/blender/src/editaction.c
===================================================================
--- trunk/blender/source/blender/src/editaction.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editaction.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -2668,7 +2668,7 @@
 	data= get_action_context(&datatype);
 	
 	if (val) {
-		if ( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+		if ( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 		
 		/* swap mouse buttons based on user preference */
 		if (U.flag & USER_LMOUSESELECT) {

Modified: trunk/blender/source/blender/src/editimasel.c
===================================================================
--- trunk/blender/source/blender/src/editimasel.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editimasel.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -859,7 +859,7 @@
 	if(val) {
 
 		if( event!=RETKEY && event!=PADENTER)
-			if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+			if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 
 		switch(event) {
 		

Modified: trunk/blender/source/blender/src/editnla.c
===================================================================
--- trunk/blender/source/blender/src/editnla.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editnla.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -1717,7 +1717,7 @@
 	if (!snla) return;
 	
 	if(val) {
-		if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+		if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 		
 		/* swap mouse buttons based on user preference */
 		if (U.flag & USER_LMOUSESELECT) {

Modified: trunk/blender/source/blender/src/editnode.c
===================================================================
--- trunk/blender/source/blender/src/editnode.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editnode.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -2073,7 +2073,7 @@
 				((struct Link *)block)->next= NULL;
 				
 				lb->first= lb->last= block;
-				retval= uiDoBlocks(lb, event);
+				retval= uiDoBlocks(lb, event, 1);
 				
 				((struct Link *)block)->prev= prev;
 				((struct Link *)block)->next= next;

Modified: trunk/blender/source/blender/src/editscreen.c
===================================================================
--- trunk/blender/source/blender/src/editscreen.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editscreen.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -531,7 +531,7 @@
 	
 	while(bwin_qread(sa->headwin, &evt)) {
 		if(evt.val) {
-			if( uiDoBlocks(&curarea->uiblocks, evt.event)!=UI_NOTHING ) evt.event= 0;
+			if( uiDoBlocks(&curarea->uiblocks, evt.event, 1)!=UI_NOTHING ) evt.event= 0;
 
 			switch(evt.event) {
 			case UI_BUT_EVENT:

Modified: trunk/blender/source/blender/src/editsound.c
===================================================================
--- trunk/blender/source/blender/src/editsound.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/editsound.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -123,7 +123,7 @@
 
 	if(val) {
 		
-		if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+		if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 
 		/* swap mouse buttons based on user preference */
 		if (U.flag & USER_LMOUSESELECT) {

Modified: trunk/blender/source/blender/src/edittime.c
===================================================================
--- trunk/blender/source/blender/src/edittime.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/edittime.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -836,7 +836,7 @@
 
 	if(val) {
 		
-		if( uiDoBlocks(&sa->uiblocks, event)!=UI_NOTHING ) event= 0;
+		if( uiDoBlocks(&sa->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 
 		/* swap mouse buttons based on user preference */
 		if (U.flag & USER_LMOUSESELECT) {

Modified: trunk/blender/source/blender/src/filesel.c
===================================================================
--- trunk/blender/source/blender/src/filesel.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/filesel.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -1812,7 +1812,7 @@
 	if(val) {
 
 		if( event!=RETKEY && event!=PADENTER)
-			if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+			if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 
 		switch(event) {
 		

Modified: trunk/blender/source/blender/src/interface.c
===================================================================
--- trunk/blender/source/blender/src/interface.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/interface.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -1304,7 +1304,7 @@
 	for(bt= block->buttons.first; bt; bt= bt->next) bt->win= block->win;
 	bwin_getsinglematrix(block->win, block->winmat);
 
-	event= uiDoBlocks(&listb, 0);
+	event= uiDoBlocks(&listb, 0, 1);
 	
 	menudata_free(md);
 	
@@ -2351,7 +2351,7 @@
 	   this is needs better implementation */
 	block->win= G.curscreen->mainwin;
 	
-	uiDoBlocks(&listb, 0);
+	uiDoBlocks(&listb, 0, 1);
 
 	but->flag &= ~UI_SELECT;
 	ui_check_but(but);
@@ -2424,7 +2424,7 @@
 
 	uiBoundsBlock(block, 3);
 
-	uiDoBlocks(&listb, 0);
+	uiDoBlocks(&listb, 0, 1);
 	
 	menudata_free(md);
 
@@ -3302,7 +3302,7 @@
 	for(bt= block->buttons.first; bt; bt= bt->next) bt->win= block->win;
 	bwin_getsinglematrix(block->win, block->winmat);
 
-	event= uiDoBlocks(&listb, 0);
+	event= uiDoBlocks(&listb, 0, 1);
 	
 	if(but->pointype==CHA) ui_set_but_vectorf(but, colstore);
 	
@@ -4306,7 +4306,7 @@
  * UI_CONT		don't pass event to other ui's
  * UI_RETURN	something happened, return, swallow event
  */
-static int ui_do_block(uiBlock *block, uiEvent *uevent)
+static int ui_do_block(uiBlock *block, uiEvent *uevent, int movemouse_quit)
 {
 	uiBut *but, *bt;
 	int butevent, event, retval=UI_NOTHING, count, act=0;
@@ -4793,7 +4793,7 @@
 		if((uevent->event==RETKEY || uevent->event==PADENTER) && uevent->val==1) return UI_RETURN_OK;
 		
 		/* check outside */
-		if(inside==0) {
+		if(inside==0 && movemouse_quit) {
 			uiBlock *tblock= NULL;
 			
 			/* check for all parent rects, enables arrowkeys to be used */
@@ -4935,7 +4935,7 @@
 }
 
 /* returns UI_NOTHING, if nothing happened */
-int uiDoBlocks(ListBase *lb, int event)
+int uiDoBlocks(ListBase *lb, int event, int movemouse_quit)
 {
 	/* return when:  firstblock != BLOCK_LOOP
 	 * 
@@ -4990,7 +4990,7 @@
 			}
 			
 			block->in_use= 1; // bit awkward, but now we can detect if frontbuf flush should be set
-			retval |= ui_do_block(block, &uevent); /* we 'or' because 2nd loop can return to here, and we we want 'out' to return */
+			retval |= ui_do_block(block, &uevent, movemouse_quit); /* we 'or' because 2nd loop can return to here, and we we want 'out' to return */
 			block->in_use= 0;
 			if(retval & UI_EXIT_LOOP) break;
 			
@@ -5034,7 +5034,7 @@
 
 			if(uevent.event) {
 				block->in_use= 1; // bit awkward, but now we can detect if frontbuf flush should be set
-				retval= ui_do_block(block, &uevent);
+				retval= ui_do_block(block, &uevent, movemouse_quit);
 				block->in_use= 0;
 			
 				if(block->needflush) { // flush (old menu) now, maybe new menu was opened
@@ -6530,7 +6530,7 @@
 	
 	uiBoundsBlock(block, 1);
 
-	event= uiDoBlocks(&listb, 0);
+	event= uiDoBlocks(&listb, 0, 1);
 
 	/* calculate last selected */
 	if(event & UI_RETURN_OK) {
@@ -6688,7 +6688,7 @@
 	
 	uiBoundsBlock(block, 1);
 
-	event= uiDoBlocks(&listb, 0);
+	event= uiDoBlocks(&listb, 0, 1);
 	
 	menudata_free(md);
 	

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c	2007-12-11 21:39:31 UTC (rev 12848)
+++ trunk/blender/source/blender/src/space.c	2007-12-11 23:05:10 UTC (rev 12849)
@@ -1173,7 +1173,7 @@
 	
 	if(val) {
 
-		if( uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
+		if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 		
 		if(event==UI_BUT_EVENT) do_butspace(val); /* temporal, view3d deserves own queue? */
 		
@@ -2761,7 +2761,7 @@
 	if(sa->win==0) return;
 
 	if(val) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list