diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-10-20 07:41:13 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-10-20 07:42:30 +0300 |
commit | 8bcc68b21c7b6a3ffbaa777416360cbb9737a597 (patch) | |
tree | 77a4b09b044988f52c0dfd5fc742f4b0b3f3f8cb /source/blender/windowmanager | |
parent | 0173116117858ae60fb33bf37707278f1721f980 (diff) |
Add operator to close a window
Useful for Python scripts, which could duplicate but not close windows.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 12 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 8 | ||||
-rw-r--r-- | source/blender/windowmanager/wm_window.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 2e039d815f6..eabc8614c80 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2247,6 +2247,17 @@ static int wm_operator_winactive_normal(bContext *C) return 1; } +/* included for script-access */ +static void WM_OT_window_close(wmOperatorType *ot) +{ + ot->name = "Close Window"; + ot->idname = "WM_OT_window_close"; + ot->description = "Close the current Blender window"; + + ot->exec = wm_window_close_exec; + ot->poll = WM_operator_winactive; +} + static void WM_OT_window_duplicate(wmOperatorType *ot) { ot->name = "Duplicate Window"; @@ -5250,6 +5261,7 @@ void wm_operatortype_init(void) /* reserve size is set based on blender default setup */ global_ops_hash = BLI_ghash_str_new_ex("wm_operatortype_init gh", 2048); + WM_operatortype_append(WM_OT_window_close); WM_operatortype_append(WM_OT_window_duplicate); WM_operatortype_append(WM_OT_read_history); WM_operatortype_append(WM_OT_read_homefile); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 51feea55654..d8e6671afda 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -712,6 +712,14 @@ wmWindow *WM_window_open_temp(bContext *C, const rcti *rect_init, int type) /* ****************** Operators ****************** */ +int wm_window_close_exec(bContext *C, wmOperator *UNUSED(op)) +{ + wmWindowManager *wm = CTX_wm_manager(C); + wmWindow *win = CTX_wm_window(C); + wm_window_close(C, wm, win); + return OPERATOR_FINISHED; +} + /* operator callback */ int wm_window_duplicate_exec(bContext *C, wmOperator *UNUSED(op)) { diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h index 75ccca1a5ec..c106f9d7851 100644 --- a/source/blender/windowmanager/wm_window.h +++ b/source/blender/windowmanager/wm_window.h @@ -77,6 +77,7 @@ void wm_window_IME_end (wmWindow *win); #endif /* *************** window operators ************** */ +int wm_window_close_exec(bContext *C, struct wmOperator *op); int wm_window_duplicate_exec(bContext *C, struct wmOperator *op); int wm_window_fullscreen_toggle_exec(bContext *C, struct wmOperator *op); |