Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesrna / intern / rna_vfont.c
index ad9c91b3623aa8d4dfe74b2c13e152b2ce9f2439..78d46d35246eaf18c8f9f28eadbaef617d2e8fa9 100644 (file)
 
 #include "DNA_vfont_types.h"
 
+#include "WM_types.h"
+
+
 #ifdef RNA_RUNTIME
 
+#include "BKE_font.h"
+#include "DNA_object_types.h"
+
+#include "DEG_depsgraph.h"
+
+#include "WM_api.h"
+
 /* matching fnction in rna_ID.c */
-static int rna_VectorFont_filepath_editable(PointerRNA *ptr)
+static int rna_VectorFont_filepath_editable(PointerRNA *ptr, const char **UNUSED(r_info))
 {
-       VFont *vf = (VFont *)ptr->data;
-       if (strcmp(vf->name, FO_BUILTIN_NAME) == 0) {
+       VFont *vfont = ptr->id.data;
+       if (BKE_vfont_is_builtin(vfont)) {
                return 0;
        }
+       return PROP_EDITABLE;
+}
+
+static void rna_VectorFont_reload_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+       VFont *vf = ptr->id.data;
+       BKE_vfont_free_data(vf);
 
-       return 1;
+       /* update */
+       WM_main_add_notifier(NC_GEOM | ND_DATA, NULL);
+       DEG_id_tag_update(&vf->id, OB_RECALC_OB | OB_RECALC_DATA);
 }
 
 #else
@@ -61,10 +80,13 @@ void RNA_def_vfont(BlenderRNA *brna)
        RNA_def_property_string_sdna(prop, NULL, "name");
        RNA_def_property_editable_func(prop, "rna_VectorFont_filepath_editable");
        RNA_def_property_ui_text(prop, "File Path", "");
+       RNA_def_property_update(prop, NC_GEOM | ND_DATA, "rna_VectorFont_reload_update");
 
        prop = RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "packedfile");
        RNA_def_property_ui_text(prop, "Packed File", "");
+
+       RNA_api_vfont(srna);
 }
 
 #endif