diff options
-rw-r--r-- | source/blender/editors/include/ED_markers.h | 7 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_time/time_ops.c | 17 | ||||
-rw-r--r-- | source/blender/editors/util/ed_markers.c (renamed from source/blender/editors/space_time/ed_markers.c) | 23 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 47 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 2 |
6 files changed, 54 insertions, 50 deletions
diff --git a/source/blender/editors/include/ED_markers.h b/source/blender/editors/include/ED_markers.h index cad985ce37c..49f805e4ddb 100644 --- a/source/blender/editors/include/ED_markers.h +++ b/source/blender/editors/include/ED_markers.h @@ -34,13 +34,14 @@ enum { DRAW_MARKERS_LOCAL = (1<<1) }; - +struct wmWindowManager; void draw_markers_time(const bContext *C, int flag); -/* register operators, called in ED_operatortypes_screen() */ +/* called in screen_ops.c:ED_operatortypes_screen() */ void ED_marker_operatortypes(void); - +/* called in screen_ops.c:ED_keymap_screen() */ +void ED_marker_keymap(struct wmWindowManager *wm); #endif /* ED_MARKERS_H */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index d16ad075bf3..2ad839997db 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -271,7 +271,7 @@ void ED_SCR_OT_area_rip(wmOperatorType *ot) ot->name= "Rip Area into New Window"; ot->idname= "ED_SCR_OT_area_rip"; - ot->invoke= NULL; //WM_operator_confirm; + ot->invoke= WM_operator_confirm; ot->exec= screen_area_rip_op; ot->poll= ED_operator_areaactive; } @@ -1124,6 +1124,7 @@ void ED_SCR_OT_repeat_last(wmOperatorType *ot) ot->idname= "ED_SCR_OT_repeat_last"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= repeat_last_exec; ot->poll= ED_operator_screenactive; @@ -1161,6 +1162,7 @@ void ED_SCR_OT_region_split(wmOperatorType *ot) ot->idname= "ED_SCR_OT_region_split"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= region_split_exec; ot->poll= ED_operator_areaactive; @@ -1196,6 +1198,7 @@ void ED_SCR_OT_region_flip(wmOperatorType *ot) ot->idname= "ED_SCR_OT_region_flip"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= region_flip_exec; ot->poll= ED_operator_areaactive; @@ -1299,5 +1302,8 @@ void ED_keymap_screen(wmWindowManager *wm) RNA_enum_set(WM_keymap_add_item(keymap, "ED_SCR_OT_region_split", SKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "dir", 'v'); WM_keymap_add_item(keymap, "ED_SCR_OT_region_flip", F5KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ED_SCR_OT_repeat_last", F4KEY, KM_PRESS, 0, 0); + + /* screen level global keymaps */ + ED_marker_keymap(wm); } diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index c95e7fd7e9d..599594a3ec0 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -217,22 +217,5 @@ void time_keymap(wmWindowManager *wm) WM_keymap_verify_item(keymap, "ED_TIME_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ED_TIME_OT_toggle_time", TKEY, KM_PRESS, 0, 0); - - /* markers (XXX move to function?) */ - keymap= WM_keymap_listbase(wm, "Markers", 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0); - - /* generates event, in end to make select work */ - WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0); - } diff --git a/source/blender/editors/space_time/ed_markers.c b/source/blender/editors/util/ed_markers.c index 0dc68fb4b27..843a81e7086 100644 --- a/source/blender/editors/space_time/ed_markers.c +++ b/source/blender/editors/util/ed_markers.c @@ -197,6 +197,7 @@ static int ed_marker_add(bContext *C, wmOperator *op) sprintf(marker->name, "Frame %d", frame); // XXX - temp code only BLI_addtail(markers, marker); + WM_event_add_notifier(C, WM_NOTE_MARKERS_CHANGED, 0, NULL); //BIF_undo_push("Add Marker"); return OPERATOR_FINISHED; @@ -824,6 +825,7 @@ static void ED_MARKER_OT_delete(wmOperatorType *ot) ot->idname= "ED_MARKER_OT_delete"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->exec= ed_marker_delete_exec; ot->poll= ED_operator_areaactive; @@ -831,7 +833,7 @@ static void ED_MARKER_OT_delete(wmOperatorType *ot) /* ************************** registration **********************************/ -/* called in ED_operatortypes_screen() */ +/* called in screen_ops.c:ED_operatortypes_screen() */ void ED_marker_operatortypes(void) { WM_operatortype_append(ED_MARKER_OT_add); @@ -844,4 +846,23 @@ void ED_marker_operatortypes(void) WM_operatortype_append(ED_MARKER_OT_delete); } +/* called in screen_ops.c:ED_keymap_screen() */ +void ED_marker_keymap(wmWindowManager *wm) +{ + ListBase *keymap= WM_keymap_listbase(wm, "Markers", 0, 0); + + WM_keymap_verify_item(keymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0); + + /* generates event, in end to make select work */ + WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0); + +} diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index e87451c2a8e..897b7b23a0e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -47,6 +47,7 @@ #include "RNA_define.h" #include "UI_interface.h" +#include "UI_resources.h" #include "WM_api.h" #include "WM_types.h" @@ -88,13 +89,24 @@ void WM_operatortype_append(void (*opfunc)(wmOperatorType*)) /* ************ default op callbacks, exported *********** */ +static void operator_callback(bContext *C, void *arg, int retval) +{ + wmOperator *op= arg; + + if(retval > 0) + op->type->exec(C, op); +} + int WM_operator_confirm(bContext *C, wmOperator *op, wmEvent *event) { -// if(okee(op->type->name)) { -// return op->type->exec(C, op); -// } - return 0; + char buf[512]; + + sprintf(buf, "OK? %%i%d%%t|%s", ICON_HELP, op->type->name); + pupmenu(C, buf, event->x, event->y, operator_callback, op); + + return 1; } + int WM_operator_winactive(bContext *C) { if(C->window==NULL) return 0; @@ -108,7 +120,7 @@ static void WM_OT_window_duplicate(wmOperatorType *ot) ot->name= "Duplicate Window"; ot->idname= "WM_OT_window_duplicate"; - ot->invoke= NULL; //WM_operator_confirm; + ot->invoke= WM_operator_confirm; ot->exec= wm_window_duplicate_op; ot->poll= WM_operator_winactive; } @@ -118,7 +130,7 @@ static void WM_OT_save_homefile(wmOperatorType *ot) ot->name= "Save User Settings"; ot->idname= "WM_OT_save_homefile"; - ot->invoke= NULL; //WM_operator_confirm; + ot->invoke= WM_operator_confirm; ot->exec= WM_write_homefile; ot->poll= WM_operator_winactive; @@ -130,7 +142,7 @@ static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot) ot->name= "Toggle Fullscreen"; ot->idname= "WM_OT_window_fullscreen_toggle"; - ot->invoke= NULL; + ot->invoke= WM_operator_confirm; ot->exec= wm_window_fullscreen_toggle_op; ot->poll= WM_operator_winactive; } @@ -140,27 +152,11 @@ static void WM_OT_exit_blender(wmOperatorType *ot) ot->name= "Exit Blender"; ot->idname= "WM_OT_exit_blender"; - ot->invoke= NULL; /* do confirm stuff */ + ot->invoke= WM_operator_confirm; ot->exec= wm_exit_blender_op; ot->poll= WM_operator_winactive; } -static int exit_okee_blender_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - okee_operator(C, "WM_OT_exit_blender", "Quit Blender"); - - return OPERATOR_FINISHED; -} - -static void WM_OT_exit_okee_blender(wmOperatorType *ot) -{ - ot->name= "Exit Blender"; - ot->idname= "WM_OT_exit_okee_blender"; - - ot->invoke= exit_okee_blender_invoke; - ot->poll= WM_operator_winactive; -} - /* ************ window gesture operator-callback definitions ************** */ /* * These are default callbacks for use in operators requiring gesture input @@ -366,7 +362,6 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_save_homefile); WM_operatortype_append(WM_OT_window_fullscreen_toggle); WM_operatortype_append(WM_OT_exit_blender); - WM_operatortype_append(WM_OT_exit_okee_blender); WM_operatortype_append(WM_OT_tweak_gesture); } @@ -379,6 +374,6 @@ void wm_window_keymap(wmWindowManager *wm) WM_keymap_verify_item(keymap, "WM_OT_window_duplicate", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", FKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "WM_OT_exit_okee_blender", QKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_verify_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 6f723d02f30..84c003c8a00 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -474,8 +474,6 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) break; } default: - if(type==GHOST_kEventKeyDown) // XXX debug - WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL); wm_event_add_ghostevent(win, type, data); break; } |