[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27886] trunk/blender/source/blender/ editors: Fix [#21832] Add Modifier, Pinned Context
Matt Ebb
matt at mke3.net
Wed Mar 31 02:55:01 CEST 2010
Revision: 27886
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27886
Author: broken
Date: 2010-03-31 02:55:01 +0200 (Wed, 31 Mar 2010)
Log Message:
-----------
Fix [#21832] Add Modifier, Pinned Context
Added convenience function ED_object_active_context(C) to get either the
object in the data context, or if not, the active object.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/ED_object.h
trunk/blender/source/blender/editors/object/object_constraint.c
trunk/blender/source/blender/editors/object/object_edit.c
trunk/blender/source/blender/editors/object/object_modifier.c
trunk/blender/source/blender/editors/screen/screen_ops.c
Modified: trunk/blender/source/blender/editors/include/ED_object.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_object.h 2010-03-30 23:32:16 UTC (rev 27885)
+++ trunk/blender/source/blender/editors/include/ED_object.h 2010-03-31 00:55:01 UTC (rev 27886)
@@ -48,6 +48,9 @@
struct wmEvent;
/* object_edit.c */
+struct Object *ED_object_active_context(struct bContext *C);
+
+/* object_ops.c */
void ED_operatortypes_object(void);
void ED_operatormacros_object(void);
void ED_keymap_object(struct wmKeyConfig *keyconf);
Modified: trunk/blender/source/blender/editors/object/object_constraint.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_constraint.c 2010-03-30 23:32:16 UTC (rev 27885)
+++ trunk/blender/source/blender/editors/object/object_constraint.c 2010-03-31 00:55:01 UTC (rev 27886)
@@ -64,6 +64,7 @@
#include "RNA_define.h"
#include "RNA_enum_types.h"
+#include "ED_object.h"
#include "ED_screen.h"
#include "UI_interface.h"
@@ -801,7 +802,7 @@
static int object_constraints_clear_exec(bContext *C, wmOperator *op)
{
- Object *ob= CTX_data_active_object(C);
+ Object *ob= ED_object_active_context(C);
Scene *scene= CTX_data_scene(C);
/* do freeing */
@@ -835,7 +836,7 @@
/* get the Object and/or PoseChannel to use as target */
static short get_new_constraint_target(bContext *C, int con_type, Object **tar_ob, bPoseChannel **tar_pchan, short add)
{
- Object *obact= CTX_data_active_object(C);
+ Object *obact= ED_object_active_context(C);
bPoseChannel *pchanact= get_active_posechannel(obact);
short only_curve= 0, only_mesh= 0, only_ob= 0;
short found= 0;
@@ -1090,17 +1091,10 @@
/* dummy operator callback */
static int object_constraint_add_exec(bContext *C, wmOperator *op)
{
- ScrArea *sa= CTX_wm_area(C);
- Object *ob;
+ Object *ob=ED_object_active_context(C);
int type= RNA_enum_get(op->ptr, "type");
short with_targets= 0;
- /* get active object from context */
- if (sa->spacetype == SPACE_BUTS)
- ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
- else
- ob= CTX_data_active_object(C);
-
if (!ob) {
BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to.");
return OPERATOR_CANCELLED;
@@ -1118,17 +1112,10 @@
/* dummy operator callback */
static int pose_constraint_add_exec(bContext *C, wmOperator *op)
{
- ScrArea *sa= CTX_wm_area(C);
- Object *ob;
+ Object *ob= ED_object_active_context(C);
int type= RNA_enum_get(op->ptr, "type");
short with_targets= 0;
- /* get active object from context */
- if (sa->spacetype == SPACE_BUTS)
- ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
- else
- ob= CTX_data_active_object(C);
-
if (!ob) {
BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to.");
return OPERATOR_CANCELLED;
Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c 2010-03-30 23:32:16 UTC (rev 27885)
+++ trunk/blender/source/blender/editors/object/object_edit.c 2010-03-31 00:55:01 UTC (rev 27886)
@@ -120,6 +120,16 @@
static bContext *C;
static void error_libdata() {}
+
+/* find the correct active object per context */
+Object *ED_object_active_context(bContext *C)
+{
+ Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+ if (!ob) ob= CTX_data_active_object(C);
+ return ob;
+}
+
+
/* ********* clear/set restrict view *********/
static int object_restrictview_clear_exec(bContext *C, wmOperator *op)
{
Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c 2010-03-30 23:32:16 UTC (rev 27885)
+++ trunk/blender/source/blender/editors/object/object_modifier.c 2010-03-31 00:55:01 UTC (rev 27886)
@@ -499,7 +499,7 @@
static int modifier_add_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
- Object *ob = CTX_data_active_object(C);
+ Object *ob = ED_object_active_context(C);
int type= RNA_enum_get(op->ptr, "type");
if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type))
@@ -512,7 +512,7 @@
static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *ptr, int *free)
{
- Object *ob= CTX_data_active_object(C);
+ Object *ob= ED_object_active_context(C);
EnumPropertyItem *item= NULL, *md_item;
ModifierTypeInfo *mti;
int totitem= 0, a;
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c 2010-03-30 23:32:16 UTC (rev 27885)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c 2010-03-31 00:55:01 UTC (rev 27886)
@@ -199,12 +199,12 @@
int ED_operator_object_active(bContext *C)
{
- return NULL != CTX_data_active_object(C);
+ return NULL != ED_object_active_context(C);
}
int ED_operator_object_active_editable(bContext *C)
{
- Object *ob=CTX_data_active_object(C);
+ Object *ob = ED_object_active_context(C);
return ((ob != NULL) && !(ob->id.lib));
}
More information about the Bf-blender-cvs
mailing list