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/ui/space_sequencer.py2
-rw-r--r--source/blender/editors/animation/keyframing.c5
-rw-r--r--source/blender/editors/include/UI_interface.h2
-rw-r--r--source/blender/editors/interface/interface_layout.c6
-rw-r--r--source/blender/makesrna/intern/rna_ui.c33
-rw-r--r--source/blender/windowmanager/WM_types.h1
6 files changed, 44 insertions, 5 deletions
diff --git a/release/ui/space_sequencer.py b/release/ui/space_sequencer.py
index 01583e578ab..2c599fd96cd 100644
--- a/release/ui/space_sequencer.py
+++ b/release/ui/space_sequencer.py
@@ -188,7 +188,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout = self.layout
st = context.space_data
- # uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
+ layout.operator_context = 'INVOKE_REGION_WIN'
layout.column()
layout.item_enumO("TFM_OT_transform", "mode", 'TRANSLATION', text="Grab/Move")
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 4a5f9efa968..90804052370 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -1249,7 +1249,10 @@ static int insert_key_button_exec (bContext *C, wmOperator *op)
}
else if (G.f & G_DEBUG) {
printf("ptr.data = %p, prop = %p,", ptr.data, prop);
- printf("animateable = %d \n", RNA_property_animateable(&ptr, prop));
+ if(prop)
+ printf("animateable = %d \n", RNA_property_animateable(&ptr, prop));
+ else
+ printf("animateable = NULL \n");
}
if (success) {
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 14394b124c3..fad19b6063d 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -581,6 +581,8 @@ void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect);
void uiLayoutSetScaleX(uiLayout *layout, float scale);
void uiLayoutSetScaleY(uiLayout *layout, float scale);
+
+int uiLayoutGetOperatorContext(uiLayout *layout);
int uiLayoutGetActive(uiLayout *layout);
int uiLayoutGetEnabled(uiLayout *layout);
int uiLayoutGetRedAlert(uiLayout *layout);
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 7144e9b866f..723e48e5970 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -1951,6 +1951,12 @@ uiBlock *uiLayoutGetBlock(uiLayout *layout)
return layout->root->block;
}
+int uiLayoutGetOperatorContext(uiLayout *layout)
+{
+ return layout->root->opcontext;
+}
+
+
void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout)
{
block->curlayout= layout;
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index 796817e1018..b6912c44fb7 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -32,6 +32,8 @@
#include "UI_interface.h"
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
#include "MEM_guardedalloc.h"
@@ -47,7 +49,6 @@
#include "BKE_screen.h"
#include "WM_api.h"
-#include "WM_types.h"
static ARegionType *region_type_find(ReportList *reports, int space_type, int region_type)
{
@@ -418,6 +419,16 @@ static void rna_UILayout_active_set(struct PointerRNA *ptr, int value)
return uiLayoutSetActive(ptr->data, value);
}
+static void rna_UILayout_op_context_set(struct PointerRNA *ptr, int value)
+{
+ return uiLayoutSetOperatorContext(ptr->data, value);
+}
+
+static int rna_UILayout_op_context_get(struct PointerRNA *ptr)
+{
+ return uiLayoutGetOperatorContext(ptr->data);
+}
+
static int rna_UILayout_enabled_get(struct PointerRNA *ptr)
{
return uiLayoutGetEnabled(ptr->data);
@@ -478,7 +489,7 @@ static void rna_UILayout_scale_y_set(struct PointerRNA *ptr, float value)
return uiLayoutSetScaleY(ptr->data, value);
}
-#else
+#else // RNA_RUNTIME
static void rna_def_ui_layout(BlenderRNA *brna)
{
@@ -491,6 +502,18 @@ static void rna_def_ui_layout(BlenderRNA *brna)
{UI_LAYOUT_ALIGN_CENTER, "CENTER", "Center", ""},
{UI_LAYOUT_ALIGN_RIGHT, "RIGHT", "RIght", ""},
{0, NULL, NULL, NULL}};
+
+ /* see WM_types.h */
+ static EnumPropertyItem operator_context_items[] = {
+ {WM_OP_INVOKE_DEFAULT, "INVOKE_DEFAULT", "Invoke Default", ""},
+ {WM_OP_INVOKE_REGION_WIN, "INVOKE_REGION_WIN", "Invoke Region Window", ""},
+ {WM_OP_INVOKE_AREA, "INVOKE_AREA", "Invoke Area", ""},
+ {WM_OP_INVOKE_SCREEN, "INVOKE_SCREEN", "Invoke Screen", ""},
+ {WM_OP_EXEC_DEFAULT, "EXEC_DEFAULT", "Exec Default", ""},
+ {WM_OP_EXEC_REGION_WIN, "EXEC_REGION_WIN", "Exec Region Window", ""},
+ {WM_OP_EXEC_AREA, "EXEC_AREA", "Exec Area", ""},
+ {WM_OP_EXEC_SCREEN, "EXEC_SCREEN", "Exec Screen", ""},
+ {0, NULL, NULL, NULL}};
srna= RNA_def_struct(brna, "UILayout", NULL);
RNA_def_struct_sdna(srna, "uiLayout");
@@ -498,6 +521,10 @@ static void rna_def_ui_layout(BlenderRNA *brna)
prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_UILayout_active_get", "rna_UILayout_active_set");
+
+ prop= RNA_def_property(srna, "operator_context", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, operator_context_items);
+ RNA_def_property_enum_funcs(prop, "rna_UILayout_op_context_get", "rna_UILayout_op_context_set", NULL);
prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_UILayout_enabled_get", "rna_UILayout_enabled_set");
@@ -661,5 +688,5 @@ void RNA_def_ui(BlenderRNA *brna)
rna_def_menu(brna);
}
-#endif
+#endif // RNA_RUNTIME
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 2a68a9980de..739cfbcc1ac 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -44,6 +44,7 @@ struct wmWindowManager;
#define OPTYPE_UNDO 2
/* context to call operator in for WM_operator_name_call */
+/* rna_ui.c contains EnumPropertyItem's of these, keep in sync */
enum {
/* if there's invoke, call it, otherwise exec */
WM_OP_INVOKE_DEFAULT,