Browse Source

make sure array is created if not existing, as noted by Guilherme Felipe

Juan Linietsky 10 years ago
parent
commit
b0be30d9ef

+ 2 - 3
core/ustring.cpp

@@ -3057,12 +3057,11 @@ String String::world_wrap(int p_chars_per_line) const {
 		if (i-from>=p_chars_per_line) {
 			if (last_space==-1) {
 				ret+=substr(from,i-from+1)+"\n";
-				from=i+1;
 			} else {
 				ret+=substr(from,last_space-from)+"\n";
-				i=last_space;
-				from=i+1;
+				i=last_space; //rewind
 			}
+			from=i+1;
 			last_space=-1;
 		} else if (operator[](i)==' ' || operator[](i)=='\t') {
 			last_space=i;

+ 9 - 2
tools/editor/array_property_edit.cpp

@@ -9,7 +9,12 @@ Variant ArrayPropertyEdit::get_array() const{
 	Object*o = ObjectDB::get_instance(obj);
 	if (!o)
 		return Array();
-	return o->get(property);
+	Variant arr=o->get(property);
+	if (!arr.is_array()) {
+		Variant::CallError ce;
+		arr=Variant::construct(default_type,NULL,0,ce);
+	}
+	return arr;
 }
 
 void ArrayPropertyEdit::_notif_change() {
@@ -195,11 +200,12 @@ void ArrayPropertyEdit::_get_property_list( List<PropertyInfo> *p_list) const{
 
 }
 
-void ArrayPropertyEdit::edit(Object* p_obj,const StringName& p_prop) {
+void ArrayPropertyEdit::edit(Object* p_obj,const StringName& p_prop,Variant::Type p_deftype) {
 
 	page=0;
 	property=p_prop;
 	obj=p_obj->get_instance_ID();
+	default_type=p_deftype;
 
 }
 
@@ -220,5 +226,6 @@ ArrayPropertyEdit::ArrayPropertyEdit()
 			vtypes+=",";
 		vtypes+=Variant::get_type_name( Variant::Type(i) );
 	}
+	default_type=Variant::NIL;
 
 }

+ 2 - 1
tools/editor/array_property_edit.h

@@ -12,6 +12,7 @@ class ArrayPropertyEdit : public Reference {
 	StringName property;
 	String vtypes;
 	Variant get_array() const;
+	Variant::Type default_type;
 
 	void _notif_change();
 	void _notif_changev(const String& p_v);
@@ -27,7 +28,7 @@ protected:
 
 public:
 
-	void edit(Object* p_obj,const StringName& p_prop);
+	void edit(Object* p_obj, const StringName& p_prop, Variant::Type p_deftype);
 
 	ArrayPropertyEdit();
 };

+ 1 - 1
tools/editor/property_editor.cpp

@@ -3143,7 +3143,7 @@ void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
 			}
 
 			Ref<ArrayPropertyEdit> ape = memnew( ArrayPropertyEdit );
-			ape->edit(obj,n);
+			ape->edit(obj,n,Variant::Type(t));
 
 			EditorNode::get_singleton()->push_item(ape.ptr());
 		}