[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