More fixes related to D&D:
authorBastien Montagne <montagne29@wanadoo.fr>
Sun, 30 Nov 2014 16:18:03 +0000 (17:18 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Sun, 30 Nov 2014 16:21:39 +0000 (17:21 +0100)
* Same issue as T42760 was also reproducible in some cases in 3DView.
* You got an error message about missing RNA prop in some drop-called operators.
* You could not drop a movie file in nodes, (some cases of) 3DView, nor ImageEditor.

source/blender/editors/mesh/mesh_data.c
source/blender/editors/object/object_add.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_node/node_add.c
source/blender/editors/space_node/space_node.c
source/blender/editors/space_view3d/space_view3d.c
source/blender/editors/space_view3d/view3d_edit.c

index d34b80e63f353cdb5516efcc770047a939137485..152d055d239d1b3234efeda5fb62158bf24b760c 100644 (file)
@@ -626,6 +626,7 @@ void MESH_OT_drop_named_image(wmOperatorType *ot)
        /* properties */
        RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME - 2, "Name", "Image name to assign");
        RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file");
+       RNA_def_boolean(ot->srna, "relative_path", true, "Relative Path", "Select the file relative to the blend file");
 }
 
 static int mesh_uv_texture_remove_exec(bContext *C, wmOperator *UNUSED(op))
index 424f2b600de0f8c0c3292b5e9f20a4ed35bcb960..0021f13e31b48a7bdc3888bc926d8d508c828905 100644 (file)
@@ -887,6 +887,8 @@ void OBJECT_OT_drop_named_image(wmOperatorType *ot)
        /* properties */
        prop = RNA_def_string(ot->srna, "filepath", NULL, FILE_MAX, "Filepath", "Path to image file");
        RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
+       RNA_def_boolean(ot->srna, "relative_path", true, "Relative Path", "Select the file relative to the blend file");
+       RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
        prop = RNA_def_string(ot->srna, "name", NULL, MAX_ID_NAME - 2, "Name", "Image name to assign");
        RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
        ED_object_add_generic_props(ot, false);
index 5dc9af2de84613acc74f585fc5918019a80f7c63..df78dfa4a14b601291833f5b7436cb6c37757392 100644 (file)
@@ -356,7 +356,7 @@ static void image_keymap(struct wmKeyConfig *keyconf)
 static int image_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event))
 {
        if (drag->type == WM_DRAG_PATH)
-               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */
+               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_MOVIE, ICON_FILE_BLANK)) /* rule might not work? */
                        return 1;
        return 0;
 }
index bb7d1f50d7bdfeb2c2762e085639dd7cdf0a743f..c3064432131666d505ee97b978f68e2a23b0d864 100644 (file)
@@ -374,7 +374,7 @@ void NODE_OT_add_file(wmOperatorType *ot)
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
-       WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE,
+       WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE | MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE,
                                       WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY);
        RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME - 2, "Name", "Datablock name to assign");
 }
index f4dc0c7e2f5aaf0e1c35504c633e4a1a573ac997..e3baddef1587ee8684947cf14555d9e49df4aeb1 100644 (file)
@@ -673,7 +673,7 @@ static int node_ima_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *
                        return 1;
        }
        else if (drag->type == WM_DRAG_PATH) {
-               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE))   /* rule might not work? */
+               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_MOVIE))   /* rule might not work? */
                        return 1;
        }
        return 0;
@@ -707,7 +707,7 @@ static void node_id_path_drop_copy(wmDrag *drag, wmDropBox *drop)
        else if (drag->path[0]) {
                RNA_string_set(drop->ptr, "filepath", drag->path);
                RNA_struct_property_unset(drop->ptr, "name");
-}
+       }
 }
 
 /* this region dropbox definition */
index 78961b0e8e040f8ad4b32c9f4cf09566ffd8e512..55d5273b198215e26dad6c47c1cb0839e6438a43 100644 (file)
@@ -599,7 +599,7 @@ static int view3d_ima_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent
                        return 1;
        }
        else if (drag->type == WM_DRAG_PATH) {
-               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE))   /* rule might not work? */
+               if (ELEM(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_MOVIE))   /* rule might not work? */
                        return 1;
        }
        return 0;
@@ -665,10 +665,14 @@ static void view3d_id_path_drop_copy(wmDrag *drag, wmDropBox *drop)
 {
        ID *id = (ID *)drag->poin;
        
-       if (id)
+       if (id) {
                RNA_string_set(drop->ptr, "name", id->name + 2);
-       if (drag->path[0])
+               RNA_struct_property_unset(drop->ptr, "filepath");
+       }
+       else if (drag->path[0]) {
                RNA_string_set(drop->ptr, "filepath", drag->path);
+               RNA_struct_property_unset(drop->ptr, "image");
+       }
 }
 
 
index d714df6ff3aabab5475ad239d643d1c6bcef9317..8ee6c7d8df459740ac5a430a95ca49ab9325e84d 100644 (file)
@@ -4374,7 +4374,7 @@ void VIEW3D_OT_background_image_add(wmOperatorType *ot)
        
        /* properties */
        RNA_def_string(ot->srna, "name", "Image", MAX_ID_NAME - 2, "Name", "Image name to assign");
-       WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE,
+       WM_operator_properties_filesel(ot, FOLDERFILE | IMAGEFILE | MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE,
                                       WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY);
 }