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:
authorTon Roosendaal <ton@blender.org>2008-12-11 18:38:16 +0300
committerTon Roosendaal <ton@blender.org>2008-12-11 18:38:16 +0300
commitd39b43aa2010c9b5262428b4afedebd1686307ba (patch)
tree92fb3ad78b42bb9c858af84c7887e850bc68f65d /source/blender/windowmanager
parent045306ae499661d585bf989f7b6504caadd2a219 (diff)
2.5
TimeLine window pulldowns work sorta (for the options that were coded :) Still trying to bring back code without recoding uiDefButs. In future these will get directly operator stuff linked. For time being made a simple operator call function, like: WM_operator_call(C, "ED_MARKER_OT_add"); and for forcing operator to run in the main region-window: WM_operator_call_rwin(C, "ED_MARKER_OT_add"); These calls also work for modal operators, like marker grab in this case.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_api.h2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c43
2 files changed, 45 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 08c6a786f69..908070d33fa 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -105,6 +105,8 @@ wmOperatorType *WM_operatortype_find(const char *idname);
void WM_operatortype_append (void (*opfunc)(wmOperatorType*));
int WM_operator_invoke (struct bContext *C, wmOperatorType *ot, struct wmEvent *event);
+int WM_operator_call (struct bContext *C, const char *opstring);
+int WM_operator_call_rwin (struct bContext *C, const char *opstring);
/* default operator callbacks for border/lasso */
int WM_border_select_invoke (struct bContext *C, wmOperator *op, struct wmEvent *event);
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 54fbbacfaaa..ff0d6b83b34 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -305,6 +305,49 @@ int WM_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event)
return retval;
}
+/* forces event to go to the region window, for header menus */
+int WM_operator_call_rwin(bContext *C, const char *opstring)
+{
+ wmOperatorType *ot= WM_operatortype_find(opstring);
+
+ /* dummie test */
+ if(ot && C && C->window) {
+ ARegion *ar= C->region;
+ int retval;
+
+ if(C->area) {
+ ARegion *ar1= C->area->regionbase.first;
+ for(; ar1; ar1= ar1->next)
+ if(ar1->regiontype==RGN_TYPE_WINDOW)
+ break;
+ if(ar1)
+ C->region= ar1;
+ }
+
+ retval= WM_operator_invoke(C, ot, C->window->eventstate);
+
+ /* set region back */
+ C->region= ar;
+
+ return retval;
+ }
+
+ return 0;
+}
+
+/* invokes operator in context */
+int WM_operator_call(bContext *C, const char *opstring)
+{
+ wmOperatorType *ot= WM_operatortype_find(opstring);
+
+ /* dummie test */
+ if(ot && C && C->window) {
+ return WM_operator_invoke(C, ot, C->window->eventstate);
+ }
+
+ return 0;
+}
+
/* ********************* handlers *************** */