[Bf-blender-cvs] [66c6cf0d712] retopo_transform: Added operator to determine if operator is actively modal
jon denning
noreply at git.blender.org
Fri Jul 29 20:00:47 CEST 2022
Commit: 66c6cf0d7120737a90c9762a38188f7d4d49ad01
Author: jon denning
Date: Tue Jul 26 09:50:35 2022 -0400
Branches: retopo_transform
https://developer.blender.org/rB66c6cf0d7120737a90c9762a38188f7d4d49ad01
Added operator to determine if operator is actively modal
===================================================================
M source/blender/makesrna/intern/rna_wm_api.c
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/intern/wm_window.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index b82458c4442..c57583d0969 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -714,6 +714,11 @@ void RNA_api_window(StructRNA *srna)
FunctionRNA *func;
PropertyRNA *parm;
+ func = RNA_def_function(srna, "is_operator_modal", "WM_active_modal_operator_test");
+ RNA_def_function_ui_description(func, "Test if an operator is actively running modal.");
+ parm = RNA_def_boolean(func, "result", 0, "", "Operator running modal");
+ RNA_def_function_return(func, parm);
+
func = RNA_def_function(srna, "cursor_warp", "WM_cursor_warp");
parm = RNA_def_int(func, "x", 0, INT_MIN, INT_MAX, "", "", INT_MIN, INT_MAX);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 44c5b86857d..f7d67274766 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -310,6 +310,11 @@ void WM_paint_cursor_remove_by_type(struct wmWindowManager *wm,
void (*free)(void *));
void WM_paint_cursor_tag_redraw(struct wmWindow *win, struct ARegion *region);
+/**
+ * Determines whether an operator is actively running modal.
+ */
+bool WM_active_modal_operator_test(struct wmWindow *win);
+
/**
* This function requires access to the GHOST_SystemHandle (g_system).
*/
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index a1ebe1fc76f..148b4419aaf 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -2000,6 +2000,22 @@ void WM_init_native_pixels(bool do_it)
/** \} */
+/* -------------------------------------------------------------------- */
+/** \name Operator API
+ * \{ */
+
+bool WM_active_modal_operator_test(struct wmWindow *win)
+{
+ LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
+ if (handler_base->type == WM_HANDLER_TYPE_OP) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/** \} */
+
/* -------------------------------------------------------------------- */
/** \name Cursor API
* \{ */
More information about the Bf-blender-cvs
mailing list