[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32378] trunk/blender/source/blender/ editors: bugfix [#24179] Button "Loop Cut and Slide" on Mesh Tools not work

Campbell Barton ideasman42 at gmail.com
Fri Oct 8 13:33:10 CEST 2010


Revision: 32378
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32378
Author:   campbellbarton
Date:     2010-10-08 13:33:10 +0200 (Fri, 08 Oct 2010)

Log Message:
-----------
bugfix [#24179] Button "Loop Cut and Slide" on Mesh Tools not work

also added a message in the tooltip to say `why` a buttons disabled.
depends on the operators poll setting the message.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_regions.c
    trunk/blender/source/blender/editors/mesh/editmesh_mods.c
    trunk/blender/source/blender/editors/mesh/loopcut.c
    trunk/blender/source/blender/editors/screen/screen_ops.c

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2010-10-08 10:39:26 UTC (rev 32377)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2010-10-08 11:33:10 UTC (rev 32378)
@@ -27,6 +27,7 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
+#include <assert.h>
 
 #include "MEM_guardedalloc.h"
 
@@ -300,7 +301,7 @@
 	rcti bbox;
 	uiFontStyle fstyle;
 	char lines[MAX_TOOLTIP_LINES][512];
-	int linedark[MAX_TOOLTIP_LINES];
+	unsigned int color[MAX_TOOLTIP_LINES];
 	int totline;
 	int toth, spaceh, lineh;
 } uiTooltipData;
@@ -320,9 +321,7 @@
 	bbox.ymin= bbox.ymax - data->lineh;
 
 	for(a=0; a<data->totline; a++) {
-		if(!data->linedark[a]) glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
-		else glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
-
+		cpack(data->color[a]);
 		uiStyleFontDraw(&data->fstyle, &bbox, data->lines[a]);
 		bbox.ymin -= data->lineh + data->spaceh;
 		bbox.ymax -= data->lineh + data->spaceh;
@@ -358,6 +357,7 @@
 
 	if(but->tip && strlen(but->tip)) {
 		BLI_strncpy(data->lines[data->totline], but->tip, sizeof(data->lines[0]));
+		data->color[data->totline]= 0xFFFFFF;
 		data->totline++;
 	}
 
@@ -367,7 +367,7 @@
 
 		if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
 			BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Shortcut: %s", buf);
-			data->linedark[data->totline]= 1;
+			data->color[data->totline]= 0x888888;
 			data->totline++;
 		}
 	}
@@ -377,7 +377,7 @@
 		ui_get_but_string(but, buf, sizeof(buf));
 		if(buf[0]) {
 			BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Value: %s", buf);
-			data->linedark[data->totline]= 1;
+			data->color[data->totline]= 0x888888;
 			data->totline++;
 		}
 	}
@@ -388,7 +388,7 @@
 		if (unit_type == PROP_UNIT_ROTATION) {
 			if (RNA_property_type(but->rnaprop) == PROP_FLOAT) {
 				BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Radians: %f", RNA_property_float_get_index(&but->rnapoin, but->rnaprop, but->rnaindex));
-				data->linedark[data->totline]= 1;
+				data->color[data->totline]= 0x888888;
 				data->totline++;
 			}
 		}
@@ -397,21 +397,21 @@
 			if(ui_but_anim_expression_get(but, buf, sizeof(buf))) {
 				/* expression */
 				BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Expression: %s", buf);
-				data->linedark[data->totline]= 1;
+				data->color[data->totline]= 0x888888;
 				data->totline++;
 			}
 		}
 
 		/* rna info */
 		BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s.%s", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop));
-		data->linedark[data->totline]= 1;
+		data->color[data->totline]= 0x888888;
 		data->totline++;
 		
 		if(but->rnapoin.id.data) {
 			ID *id= but->rnapoin.id.data;
 			if(id->lib && id->lib->name) {
 				BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Library: %s", id->lib->name);
-				data->linedark[data->totline]= 1;
+				data->color[data->totline]= 0x888888;
 				data->totline++;
 			}
 		}
@@ -425,12 +425,27 @@
 
 		/* operator info */
 		BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s", str);
-		data->linedark[data->totline]= 1;
+		data->color[data->totline]= 0x888888;
 		data->totline++;
 
 		MEM_freeN(str);
+
+		/* second check if we are disabled - why */
+		if(but->flag & UI_BUT_DISABLED) {
+			const char *poll_msg;
+			CTX_wm_operator_poll_msg_set(C, NULL);
+			WM_operator_poll(C, but->optype);
+			poll_msg= CTX_wm_operator_poll_msg_get(C);
+			if(poll_msg) {
+				BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Disabled: %s", poll_msg);
+				data->color[data->totline]= 0x6666ff; /* alert */
+				data->totline++;			
+			}
+		}
 	}
 
+	assert(data->totline < MAX_TOOLTIP_LINES);
+	
 	if(data->totline == 0) {
 		MEM_freeN(data);
 		return NULL;

Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-10-08 10:39:26 UTC (rev 32377)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2010-10-08 11:33:10 UTC (rev 32378)
@@ -2113,7 +2113,7 @@
 	
 	/* api callbacks */
 	ot->invoke= mesh_select_loop_invoke;
-	ot->poll= ED_operator_editmesh_region_view3d;
+	ot->poll= ED_operator_editmesh_view3d;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;

Modified: trunk/blender/source/blender/editors/mesh/loopcut.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/loopcut.c	2010-10-08 10:39:26 UTC (rev 32377)
+++ trunk/blender/source/blender/editors/mesh/loopcut.c	2010-10-08 11:33:10 UTC (rev 32378)
@@ -506,7 +506,7 @@
 	ot->invoke= ringcut_invoke;
 	ot->modal= ringcut_modal;
 	ot->cancel= ringcut_cancel;
-	ot->poll= ED_operator_editmesh_region_view3d;
+	ot->poll= ED_operator_editmesh_view3d;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-10-08 10:39:26 UTC (rev 32377)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-10-08 11:33:10 UTC (rev 32378)
@@ -244,7 +244,11 @@
 
 int ED_operator_editmesh_region_view3d(bContext *C)
 {
-	return ED_operator_editmesh(C) && CTX_wm_region_view3d(C);
+	if(ED_operator_editmesh(C) && CTX_wm_region_view3d(C))
+		return 1;
+
+	CTX_wm_operator_poll_msg_set(C, "expected a view3d region & editmesh");
+	return 0;
 }
 
 int ED_operator_editarmature(bContext *C)





More information about the Bf-blender-cvs mailing list