Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/startup/bl_operators/wm.py25
-rw-r--r--source/blender/editors/screen/screen_ops.c7
-rw-r--r--source/blender/windowmanager/intern/wm_files_link.c11
3 files changed, 32 insertions, 11 deletions
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 4e2cea5e4db..5ba430ab9f5 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -2677,6 +2677,30 @@ class WM_MT_splash(Menu):
layout.separator()
+class WM_OT_drop_blend_file(Operator):
+ bl_idname = "wm.drop_blend_file"
+ bl_label = "Handle dropped .blend file"
+ bl_options = {'INTERNAL'}
+
+ filepath: StringProperty()
+
+ def invoke(self, context, event):
+ context.window_manager.popup_menu(self.draw_menu, title=bpy.path.basename(self.filepath), icon='QUESTION')
+ return {"FINISHED"}
+
+ def draw_menu(self, menu, context):
+ layout = menu.layout
+
+ col = layout.column()
+ col.operator_context = 'EXEC_DEFAULT'
+ col.operator("wm.open_mainfile", text="Open", icon='FILE_FOLDER').filepath = self.filepath
+
+ layout.separator()
+ col = layout.column()
+ col.operator_context = 'INVOKE_DEFAULT'
+ col.operator("wm.link", text="Link...", icon='LINK_BLEND').filepath = self.filepath
+ col.operator("wm.append", text="Append...", icon='APPEND_BLEND').filepath = self.filepath
+
classes = (
BRUSH_OT_active_index_set,
WM_OT_addon_disable,
@@ -2710,6 +2734,7 @@ classes = (
WM_OT_copy_prev_settings,
WM_OT_doc_view,
WM_OT_doc_view_manual,
+ WM_OT_drop_blend_file,
WM_OT_keyconfig_activate,
WM_OT_keyconfig_export,
WM_OT_keyconfig_import,
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 27c9f522c54..150e1b1f5a5 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -4855,7 +4855,7 @@ static void keymap_modal_set(wmKeyConfig *keyconf)
}
-static bool open_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event), const char **UNUSED(tooltip))
+static bool blend_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event), const char **UNUSED(tooltip))
{
if (drag->type == WM_DRAG_PATH) {
if (drag->icon == ICON_FILE_BLEND)
@@ -4864,11 +4864,10 @@ static bool open_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent
return 0;
}
-static void open_file_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void blend_file_drop_copy(wmDrag *drag, wmDropBox *drop)
{
/* copy drag path to properties */
RNA_string_set(drop->ptr, "filepath", drag->path);
- drop->opcontext = WM_OP_EXEC_DEFAULT;
}
@@ -5055,7 +5054,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
/* dropbox for entire window */
lb = WM_dropboxmap_find("Window", 0, 0);
- WM_dropbox_add(lb, "WM_OT_open_mainfile", open_file_drop_poll, open_file_drop_copy);
+ WM_dropbox_add(lb, "WM_OT_drop_blend_file", blend_file_drop_poll, blend_file_drop_copy);
WM_dropbox_add(lb, "UI_OT_drop_color", UI_drop_color_poll, UI_drop_color_copy);
keymap_modal_set(keyconf);
diff --git a/source/blender/windowmanager/intern/wm_files_link.c b/source/blender/windowmanager/intern/wm_files_link.c
index f8beb2ef80b..a1e298b91d0 100644
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@ -106,11 +106,7 @@ static bool wm_link_append_poll(bContext *C)
static int wm_link_append_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
{
- if (RNA_struct_property_is_set(op->ptr, "filepath")) {
- return WM_operator_call_notest(C, op);
- }
- else {
- /* XXX TODO solve where to get last linked library from */
+ if (!RNA_struct_property_is_set(op->ptr, "filepath")) {
if (G.lib[0] != '\0') {
RNA_string_set(op->ptr, "filepath", G.lib);
}
@@ -120,9 +116,10 @@ static int wm_link_append_invoke(bContext *C, wmOperator *op, const wmEvent *UNU
BLI_parent_dir(path);
RNA_string_set(op->ptr, "filepath", path);
}
- WM_event_add_fileselect(C, op);
- return OPERATOR_RUNNING_MODAL;
}
+
+ WM_event_add_fileselect(C, op);
+ return OPERATOR_RUNNING_MODAL;
}
static short wm_link_append_flag(wmOperator *op)