[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18721] branches/blender2.5/blender/source /blender: 2.5:

Brecht Van Lommel brecht at blender.org
Wed Jan 28 20:42:49 CET 2009


Revision: 18721
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18721
Author:   blendix
Date:     2009-01-28 20:42:49 +0100 (Wed, 28 Jan 2009)

Log Message:
-----------
2.5:

* Fix using enter key for selecting item in a submenu.
* Fix some non working buttons in nodes.
* Fix memory leak when using glsl.
* Change triple buffer proxy test a bit, hopefully this succeeds
  on more cards now.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_draw.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-28 18:36:55 UTC (rev 18720)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-28 19:42:49 UTC (rev 18721)
@@ -433,8 +433,8 @@
 	if(but->rnaprop != oldbut->rnaprop)
 	if(but->rnaindex != oldbut->rnaindex) return 0;
 	if(but->func != oldbut->func) return 0;
-	if(but->func_arg1 != oldbut->func_arg1) return 0;
-	if(but->func_arg2 != oldbut->func_arg2) return 0;
+	if(oldbut->func_arg1 != oldbut && but->func_arg1 != oldbut->func_arg1) return 0;
+	if(oldbut->func_arg2 != oldbut && but->func_arg2 != oldbut->func_arg2) return 0;
 
 	return 1;
 }

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-28 18:36:55 UTC (rev 18720)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-28 19:42:49 UTC (rev 18721)
@@ -157,7 +157,52 @@
 static int ui_handler_region_menu(bContext *C, wmEvent *event, void *userdata);
 static int ui_handler_popup(bContext *C, wmEvent *event, void *userdata);
 static void ui_handler_remove_popup(bContext *C, void *userdata);
+static void ui_handle_button_activate(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type);
 
+/* ******************** menu navigation helpers ************** */
+
+static uiBut *ui_but_prev(uiBut *but)
+{
+	while(but->prev) {
+		but= but->prev;
+		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+	}
+	return NULL;
+}
+
+static uiBut *ui_but_next(uiBut *but)
+{
+	while(but->next) {
+		but= but->next;
+		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+	}
+	return NULL;
+}
+
+static uiBut *ui_but_first(uiBlock *block)
+{
+	uiBut *but;
+	
+	but= block->buttons.first;
+	while(but) {
+		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		but= but->next;
+	}
+	return NULL;
+}
+
+static uiBut *ui_but_last(uiBlock *block)
+{
+	uiBut *but;
+	
+	but= block->buttons.last;
+	while(but) {
+		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		but= but->prev;
+	}
+	return NULL;
+}
+
 /* ********************** button apply/revert ************************/
 
 static ListBase UIAfterFuncs = {NULL, NULL};
@@ -2892,8 +2937,23 @@
 
 	button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
 
-	if(type == BUTTON_ACTIVATE_OPEN)
+	if(type == BUTTON_ACTIVATE_OPEN) {
 		button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);
+
+		/* activate first button in submenu */
+		if(data->menu && data->menu->region) {
+			ARegion *subar= data->menu->region;
+			uiBlock *subblock= subar->uiblocks.first;
+			uiBut *subbut;
+			
+			if(subblock) {
+				subbut= ui_but_first(subblock);
+
+				if(subbut)
+					ui_handle_button_activate(C, subar, subbut, BUTTON_ACTIVATE);
+			}
+		}
+	}
 	else if(type == BUTTON_ACTIVATE_TEXT_EDITING)
 		button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
 	else if(type == BUTTON_ACTIVATE_APPLY)
@@ -3155,50 +3215,6 @@
 	}
 }
 
-/* ******************** menu navigation helpers ************** */
-
-static uiBut *ui_but_prev(uiBut *but)
-{
-	while(but->prev) {
-		but= but->prev;
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
-	}
-	return NULL;
-}
-
-static uiBut *ui_but_next(uiBut *but)
-{
-	while(but->next) {
-		but= but->next;
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
-	}
-	return NULL;
-}
-
-static uiBut *ui_but_first(uiBlock *block)
-{
-	uiBut *but;
-	
-	but= block->buttons.first;
-	while(but) {
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
-		but= but->next;
-	}
-	return NULL;
-}
-
-static uiBut *ui_but_last(uiBlock *block)
-{
-	uiBut *but;
-	
-	but= block->buttons.last;
-	while(but) {
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
-		but= but->prev;
-	}
-	return NULL;
-}
-
 /* ************************* menu handling *******************************/
 
 /* function used to prevent loosing the open menu when using nested pulldowns,
@@ -3474,9 +3490,11 @@
 		}
 	}
 
-	/* if we are inside the region and didn't handle the event yet, lets
-	 * pass it on to buttons inside this region */
-	if((inside && !menu->menuretval && retval == WM_UI_HANDLER_CONTINUE) || event->type == TIMER) {
+	/* if we are didn't handle the event yet, lets pass it on to
+	 * buttons inside this region. disabled inside check .. not sure
+	 * anymore why it was there? but i meant enter enter didn't work
+	 * for example when mouse was not over submenu */
+	if((/*inside &&*/ !menu->menuretval && retval == WM_UI_HANDLER_CONTINUE) || event->type == TIMER) {
 		but= ui_but_find_activated(ar);
 
 		if(but)

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_draw.c	2009-01-28 18:36:55 UTC (rev 18720)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_draw.c	2009-01-28 19:42:49 UTC (rev 18721)
@@ -365,7 +365,7 @@
 
 static int wm_triple_gen_textures(wmWindow *win, wmDrawTriple *triple)
 {
-	GLint format;
+	GLint width;
 	int x, y;
 
 	/* compute texture sizes */
@@ -402,13 +402,14 @@
 
 	for(y=0; y<triple->ny; y++) {
 		for(x=0; x<triple->nx; x++) {
+			/* disabled, does not seems to work well everywhere */
 			/* proxy texture is only guaranteed to test for the cases that
 			 * there is only one texture in use, which may not be the case */
 			glBindTexture(triple->target, triple->bind[x + y*triple->nx]);
 			glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGB8, triple->x[x], triple->y[y], 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
-			glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format);
+			glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
 
-			if(format == 0) {
+			if(width == 0) {
 				glBindTexture(triple->target, 0);
 				printf("WM: failed to allocate texture for triple buffer drawing (GL_PROXY_TEXTURE_2D).\n");
 				return 0;

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-01-28 18:36:55 UTC (rev 18720)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-01-28 19:42:49 UTC (rev 18721)
@@ -248,6 +248,8 @@
 #ifdef INTERNATIONAL
 	FTF_End();
 #endif
+
+	GPU_extensions_exit();
 	
 //	if (copybuf) MEM_freeN(copybuf);
 //	if (copybufinfo) MEM_freeN(copybufinfo);





More information about the Bf-blender-cvs mailing list