[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57490] trunk/blender/source/blender/ editors/space_view3d/view3d_buttons.c: don' t show the 3d view transform panel when theres no active object.

Campbell Barton ideasman42 at gmail.com
Sun Jun 16 05:31:15 CEST 2013


Revision: 57490
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57490
Author:   campbellbarton
Date:     2013-06-16 03:31:15 +0000 (Sun, 16 Jun 2013)
Log Message:
-----------
don't show the 3d view transform panel when theres no active object.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2013-06-16 00:15:05 UTC (rev 57489)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2013-06-16 03:31:15 UTC (rev 57490)
@@ -1055,7 +1055,7 @@
 static void do_view3d_vgroup_buttons(bContext *C, void *UNUSED(arg), int event)
 {
 	Scene *scene = CTX_data_scene(C);
-	Object *ob = OBACT;
+	Object *ob = scene->basact->object;
 
 	/* XXX TODO Use operators? */
 	if (event == B_VGRP_PNL_NORMALIZE) {
@@ -1070,6 +1070,9 @@
 	else if (event >= B_VGRP_PNL_EDIT_SINGLE) {
 		vgroup_adjust_active(ob, event - B_VGRP_PNL_EDIT_SINGLE);
 	}
+	else {
+		BLI_assert(0);
+	}
 
 #if 0 /* TODO */
 	if (((Mesh *)ob->data)->editflag & ME_EDIT_MIRROR_X)
@@ -1100,7 +1103,7 @@
 {
 	uiBlock *block = uiLayoutAbsoluteBlock(pa->layout);
 	Scene *scene = CTX_data_scene(C);
-	Object *ob = OBACT;
+	Object *ob = scene->basact->object;
 
 	MDeformVert *dv;
 
@@ -1350,40 +1353,45 @@
 	WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
 }
 
-static void view3d_panel_object(const bContext *C, Panel *pa)
+static int view3d_panel_transform_poll(const bContext *C, PanelType *UNUSED(pt))
 {
+	Scene *scene = CTX_data_scene(C);
+	return (scene->basact != NULL);
+}
+
+static void view3d_panel_transform(const bContext *C, Panel *pa)
+{
 	uiBlock *block;
 	Scene *scene = CTX_data_scene(C);
 	Object *obedit = CTX_data_edit_object(C);
-	View3D *v3d = CTX_wm_view3d(C);
-	Object *ob = OBACT;
-	PointerRNA obptr;
+	Object *ob = scene->basact->object;
 	uiLayout *col;
-	float lim;
 
-	if (ob == NULL)
-		return;
-
-	lim = 10000.0f * max_ff(1.0f, v3d->grid);
-
 	block = uiLayoutGetBlock(pa->layout);
 	uiBlockSetHandleFunc(block, do_view3d_region_buttons, NULL);
 
 	col = uiLayoutColumn(pa->layout, FALSE);
-	RNA_id_pointer_create(&ob->id, &obptr);
 
 	if (ob == obedit) {
-		if (ob->type == OB_ARMATURE)
+		if (ob->type == OB_ARMATURE) {
 			v3d_editarmature_buts(col, ob);
-		else if (ob->type == OB_MBALL)
+		}
+		else if (ob->type == OB_MBALL) {
 			v3d_editmetaball_buts(col, ob);
-		else
+		}
+		else {
+			View3D *v3d = CTX_wm_view3d(C);
+			const float lim = 10000.0f * max_ff(1.0f, v3d->grid);
 			v3d_editvertex_buts(col, v3d, ob, lim);
+		}
 	}
 	else if (ob->mode & OB_MODE_POSE) {
 		v3d_posearmature_buts(col, ob);
 	}
 	else {
+		PointerRNA obptr;
+
+		RNA_id_pointer_create(&ob->id, &obptr);
 		v3d_transform_butsR(col, &obptr);
 	}
 }
@@ -1393,10 +1401,11 @@
 	PanelType *pt;
 
 	pt = MEM_callocN(sizeof(PanelType), "spacetype view3d panel object");
-	strcpy(pt->idname, "VIEW3D_PT_object");
+	strcpy(pt->idname, "VIEW3D_PT_transform");
 	strcpy(pt->label, N_("Transform"));  /* XXX C panels not  available through RNA (bpy.types)! */
 	strcpy(pt->translation_context, BLF_I18NCONTEXT_DEFAULT_BPYRNA);
-	pt->draw = view3d_panel_object;
+	pt->draw = view3d_panel_transform;
+	pt->poll = view3d_panel_transform_poll;
 	BLI_addtail(&art->paneltypes, pt);
 
 	pt = MEM_callocN(sizeof(PanelType), "spacetype view3d panel gpencil");




More information about the Bf-blender-cvs mailing list