59 {0,
nullptr, 0,
nullptr,
nullptr},
105static void rna_Operator_report(
wmOperator *op,
int type,
const char *msg)
129 if (win ==
nullptr) {
153 if (gzgt ==
nullptr) {
167 if (gzgt !=
nullptr) {
172static void rna_gizmo_group_type_unlink_delayed(
ReportList *
reports,
const char *idname)
175 if (gzgt !=
nullptr) {
181static struct wmStaticProgress {
185} wm_progress_state = {0, 0,
false};
191 wm_progress_state.min =
min;
192 wm_progress_state.max =
max;
193 wm_progress_state.is_valid =
true;
196 wm_progress_state.is_valid =
false;
202 if (wm_progress_state.is_valid) {
206 int val = int(10000 * (value - wm_progress_state.min) /
207 (wm_progress_state.max - wm_progress_state.min));
215 if (wm_progress_state.is_valid) {
219 wm_progress_state.is_valid =
false;
225static int rna_Operator_confirm(
bContext *
C,
230 const char *confirm_text,
232 const char *text_ctxt,
233 const bool translate)
236 title, text_ctxt,
nullptr,
nullptr, translate);
238 message, text_ctxt,
nullptr,
nullptr, translate);
240 confirm_text, text_ctxt,
nullptr,
nullptr, translate);
243 title_str ? title_str->c_str() :
nullptr,
244 message_str ? message_str->c_str() :
nullptr,
245 confirm_text_str ? confirm_text_str->c_str() :
nullptr,
254static int rna_Operator_props_dialog_popup(
bContext *
C,
258 const char *confirm_text,
259 const bool cancel_default,
260 const char *text_ctxt,
261 const bool translate)
264 title, text_ctxt,
nullptr,
nullptr, translate);
266 confirm_text, text_ctxt,
nullptr,
nullptr, translate);
271 title_str ? std::make_optional<std::string>(*title_str) : std::nullopt,
272 confirm_text_str ? std::make_optional<std::string>(*confirm_text_str) : std::nullopt,
276static int16_t keymap_item_modifier_flag_from_args(
277 bool any,
int shift,
int ctrl,
int alt,
int oskey,
int hyper)
284# define MOD_VAR_ASSIGN_FLAG(mod_var, mod_flag) \
285 if (mod_var == KM_MOD_HELD) { \
286 modifier |= mod_flag; \
288 else if (mod_var == KM_ANY) { \
289 modifier |= KMI_PARAMS_MOD_TO_ANY(mod_flag); \
293 MOD_VAR_ASSIGN_FLAG(shift,
KM_SHIFT);
294 MOD_VAR_ASSIGN_FLAG(ctrl,
KM_CTRL);
295 MOD_VAR_ASSIGN_FLAG(alt,
KM_ALT);
296 MOD_VAR_ASSIGN_FLAG(oskey,
KM_OSKEY);
297 MOD_VAR_ASSIGN_FLAG(hyper,
KM_HYPER);
299# undef MOD_VAR_ASSIGN_FLAG
335 params.modifier = keymap_item_modifier_flag_from_args(
any, shift, ctrl, alt, oskey, hyper);
336 params.keymodifier = keymodifier;
337 params.direction = direction;
380 const char *propvalue_str,
405 params.modifier = keymap_item_modifier_flag_from_args(
any, shift, ctrl, alt, oskey, hyper);
406 params.keymodifier = keymodifier;
407 params.direction = direction;
454static PointerRNA rna_KeyMap_item_find_from_operator(
ID *
id,
465 km, idname_bl,
static_cast<IDProperty *
>(properties->
data), include_mask, exclude_mask);
507 if (keymap && tool) {
535 return ot->modalkeymap;
545 "KeyMap '%s' not found in KeyConfig '%s'",
555static void rna_KeyMaps_clear(
wmKeyConfig *keyconfig)
601static void rna_KeyConfig_update(
wmWindowManager *wm,
bool keep_properties)
622 if (!rna_popup_context_ok_or_report(
C,
reports)) {
639 const int ui_units_x,
640 const bool from_active_button)
642 if (!rna_popup_context_ok_or_report(
C,
reports)) {
660 if (!rna_popup_context_ok_or_report(
C,
reports)) {
665 C, title, icon,
static_cast<const wmEvent *
>(event->
data));
681static void rna_WindowManager_tag_script_reload()
687static PointerRNA rna_WindoManager_operator_properties_last(
const char *idname)
733 if (unicode !=
nullptr) {
741 if (unicode !=
nullptr) {
743 if (
len == -1 || unicode[
len] !=
'\0') {
773 e.utf8_buf[0] =
'\0';
774 if (unicode !=
nullptr) {
786# define WM_GEN_INVOKE_EVENT (1 << 0)
787# define WM_GEN_INVOKE_SIZE (1 << 1)
788# define WM_GEN_INVOKE_RETURN (1 << 2)
795 parm =
RNA_def_pointer(func,
"operator",
"Operator",
"",
"Operator to call");
804 RNA_def_int(func,
"width", 300, 0, INT_MAX,
"",
"Width of the popup", 0, INT_MAX);
820 parm =
RNA_def_int(func,
"x", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
822 parm =
RNA_def_int(func,
"y", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
838 func =
RNA_def_function(srna,
"cursor_modal_restore",
"WM_cursor_modal_restore");
840 func,
"Restore the previous cursor after calling ``cursor_modal_set``");
843 func =
RNA_def_function(srna,
"event_simulate",
"rna_Window_event_add_simulate");
852 RNA_def_int(func,
"x", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
853 RNA_def_int(func,
"y", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
860 parm =
RNA_def_pointer(func,
"event",
"Event",
"Item",
"Added key map item");
870 {0,
nullptr, 0,
nullptr,
nullptr},
884 func =
RNA_def_function(srna,
"modal_handler_add",
"rna_event_modal_handler_add");
887 "Add a modal handler to the window manager, for the given modal operator "
888 "(called by invoke() with self, just before returning {'RUNNING_MODAL'})");
890 parm =
RNA_def_pointer(func,
"operator",
"Operator",
"",
"Operator to call");
894 RNA_def_boolean(func,
"handle",
true,
"",
"Whether adding the handler was successful"));
898 func,
"Add a timer to the given window, to generate periodic 'TIMER' events");
903 RNA_def_pointer(func,
"window",
"Window",
"",
"Window to attach the timer to, or None");
907 func =
RNA_def_function(srna,
"event_timer_remove",
"rna_event_timer_remove");
911 func =
RNA_def_function(srna,
"gizmo_group_type_ensure",
"rna_gizmo_group_type_ensure");
913 func,
"Activate an existing widget group (when the persistent option isn't set)");
915 parm =
RNA_def_string(func,
"identifier",
nullptr, 0,
"",
"Gizmo group type name");
919 srna,
"gizmo_group_type_unlink_delayed",
"rna_gizmo_group_type_unlink_delayed");
921 "Unlink a widget group (when the persistent option is set)");
923 parm =
RNA_def_string(func,
"identifier",
nullptr, 0,
"",
"Gizmo group type name");
941 parm,
"value",
"Any value between min and max as set in progress_begin()");
947 func =
RNA_def_function(srna,
"invoke_props_popup",
"rna_Operator_props_popup");
950 "Operator popup invoke "
951 "(show operator properties and execute it automatically on changes)");
955 func =
RNA_def_function(srna,
"invoke_props_dialog",
"rna_Operator_props_dialog_popup");
958 "Operator dialog (non-autoexec popup) invoke "
959 "(show operator properties and only execute it on click on OK button)");
968 "Optional text to show instead to the default \"OK\" confirmation button text");
973 func =
RNA_def_function(srna,
"invoke_search_popup",
"rna_Operator_enum_search_invoke");
976 "Operator search popup invoke which "
977 "searches values of the operator's :class:`bpy.types.Operator.bl_property` "
978 "(which must be an EnumProperty), executing it on confirmation");
984 "Operator popup invoke "
985 "(only shows operator's properties, without executing it)");
991 "Operator confirmation popup "
992 "(only to let user confirm the execution, no operator properties shown)");
1005 "Optional text to show instead to the default \"OK\" confirmation button text");
1015 func =
RNA_def_function(srna,
"popmenu_begin__internal",
"rna_PopMenuBegin");
1033 func =
RNA_def_function(srna,
"popover_begin__internal",
"rna_PopoverBegin");
1041 func,
"from_active_button",
false,
"Use Button",
"Use the active button for positioning");
1048 RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Active key map");
1051 func =
RNA_def_function(srna,
"piemenu_begin__internal",
"rna_PieMenuBegin");
1072 srna,
"operator_properties_last",
"rna_WindoManager_operator_properties_last");
1081 RNA_def_function(srna,
"print_undo_steps",
"rna_WindowManager_print_undo_steps");
1084 func =
RNA_def_function(srna,
"tag_script_reload",
"rna_WindowManager_tag_script_reload");
1086 func,
"Tag for refreshing the interface after scripts have been reloaded");
1093 "Is Interface Locked",
1094 "If true, the interface is currently locked by a running job and data shouldn't be modified "
1095 "from application timers. Otherwise, the running job might conflict with the handler "
1096 "causing unexpected results or even crashes.");
1109 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
1144 func,
"Check the operator settings, return True to signal a change to redraw");
1197 parm =
RNA_def_string(func,
"result",
nullptr, 4096,
"result",
"");
1203 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1216 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
1250 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Active key map");
1253 func =
RNA_def_function(srna,
"restore_to_default",
"rna_keymap_restore_to_default");
1256 func =
RNA_def_function(srna,
"restore_item_to_default",
"rna_keymap_restore_item_to_default");
1270 parm =
RNA_def_boolean(func,
"result",
false,
"Comparison result",
"");
1287 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1301 RNA_def_boolean(func,
"repeat",
false,
"Repeat",
"When set, accept key-repeat events");
1306 "Force item to be added at start (not end) of key map so that "
1307 "it doesn't get blocked by an existing key map item");
1308 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Added key map item");
1313 parm =
RNA_def_string(func,
"propvalue",
nullptr, 0,
"Property Value",
"");
1327 RNA_def_boolean(func,
"repeat",
false,
"Repeat",
"When set, accept key-repeat events");
1328 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Added key map item");
1331 func =
RNA_def_function(srna,
"new_from_item",
"rna_KeyMap_item_new_from_item");
1333 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Item to use as a reference");
1336 parm =
RNA_def_pointer(func,
"result",
"KeyMapItem",
"Item",
"Added key map item");
1354 func =
RNA_def_function(srna,
"find_from_operator",
"rna_KeyMap_item_find_from_operator");
1356 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1358 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1369 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"",
"The matching keymap");
1371 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"",
"The matching keymap item");
1377 "The keymap item from this keymap which matches the keymap item from the "
1378 "arguments passed in");
1382 func =
RNA_def_function(srna,
"match_event",
"rna_KeyMap_item_match_event");
1400 "Ensure the keymap exists. This will return the one with the given name/space type/region "
1401 "type, or create a new one if it does not exist yet.");
1408 RNA_def_boolean(func,
"modal",
false,
"Modal",
"Keymap for modal operators");
1409 RNA_def_boolean(func,
"tool",
false,
"Tool",
"Keymap for active tools");
1410 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Added key map");
1415 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Removed key map");
1428 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Corresponding key map");
1432 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"The key map for comparison");
1434 parm =
RNA_def_pointer(func,
"result",
"KeyMap",
"Key Map",
"Corresponding key map");
1438 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Operator Name",
"");
1440 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Corresponding key map");
1453 func,
"keyconfig",
"KeyConfig",
"Key Configuration",
"Added key configuration");
1459 func,
"keyconfig",
"KeyConfig",
"Key Configuration",
"Removed key configuration");
1467 srna,
"find_item_from_operator",
"rna_KeyConfig_find_item_from_operator");
1469 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1473 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1490 "Operator properties are kept to allow the operators to be registered again in the future");
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_undosys_print(UndoStack *ustack)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addhead(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
const char int BLI_str_utf8_size_or_error(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void UI_popover_end(bContext *C, uiPopover *pup, wmKeyMap *keymap)
uiPopover * UI_popover_begin(bContext *C, int ui_menu_width, bool from_active_button) ATTR_NONNULL(1)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
uiPieMenu * UI_pie_menu_begin(bContext *C, const char *title, int icon, const wmEvent *event) ATTR_NONNULL()
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
void UI_pie_menu_end(bContext *C, uiPieMenu *pie)
#define UI_MAX_SHORTCUT_STR
@ WM_GIZMOGROUPTYPE_PERSISTENT
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
bool any(VecOp< bool, D >) RET
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
const PointerRNA PointerRNA_NULL
std::optional< blender::StringRefNull > RNA_translate_ui_text(const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, int translate)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void api_ui_item_common_translation(FunctionRNA *func)
const EnumPropertyItem rna_enum_region_type_items[]
const EnumPropertyItem rna_enum_space_type_items[]
const EnumPropertyItem rna_enum_operator_context_items[]
const EnumPropertyItem rna_enum_icon_items[]
const EnumPropertyItem rna_enum_event_direction_items[]
const EnumPropertyItem rna_enum_event_value_items[]
const EnumPropertyItem rna_enum_event_type_mask_items[]
const EnumPropertyItem rna_enum_event_type_items[]
const EnumPropertyItem rna_enum_wm_report_items[]
const EnumPropertyItem rna_enum_operator_return_items[]
void RNA_api_keymapitem(StructRNA *srna)
#define WM_GEN_INVOKE_EVENT
void RNA_api_window(StructRNA *srna)
void RNA_api_wm(StructRNA *srna)
#define WM_GEN_INVOKE_SIZE
void RNA_api_keyconfigs(StructRNA *srna)
const EnumPropertyItem rna_operator_popup_icon_items[]
void RNA_api_macro(StructRNA *srna)
void RNA_api_keymap(StructRNA *srna)
void RNA_api_keymapitems(StructRNA *srna)
#define WM_GEN_INVOKE_RETURN
void RNA_api_keyconfig(StructRNA *)
void RNA_api_keymaps(StructRNA *srna)
const EnumPropertyItem rna_enum_window_cursor_items[]
static void rna_generic_op_invoke(FunctionRNA *func, int flag)
void RNA_api_operator(StructRNA *srna)
eWM_GizmoFlagGroupTypeFlag flag
struct ReportList * reports
struct UndoStack * undo_stack
struct wmWindow * winactive
struct wmKeyConfig * addonconf
struct wmEvent * eventstate
void WM_cursor_modal_restore(wmWindow *win)
void WM_cursor_time(wmWindow *win, int nr)
wmEvent * WM_event_add_simulate(wmWindow *win, const wmEvent *event_to_add)
void WM_main_add_notifier(uint type, void *reference)
void WM_event_tablet_data_default_set(wmTabletData *tablet_data)
wmEventHandler_Op * WM_event_add_modal_handler_ex(wmWindow *win, ScrArea *area, ARegion *region, wmOperator *op)
bool WM_operator_is_repeat(const bContext *C, const wmOperator *op)
wmKeyMapItem * WM_event_match_keymap_item(bContext *C, wmKeyMap *keymap, const wmEvent *event)
#define ISMOUSE_BUTTON(event_type)
#define ISMOUSE_MOTION(event_type)
#define ISKEYBOARD(event_type)
#define EVT_TYPE_MASK_ALL
bool WM_gizmo_group_type_ensure_ptr(wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_unlink_delayed_ptr(wmGizmoGroupType *gzgt)
wmGizmoGroupType * WM_gizmogrouptype_find(const StringRef idname, bool quiet)
void WM_script_tag_reload()
void WM_keyconfig_clear(wmKeyConfig *keyconf)
void WM_keymap_item_restore_to_default(wmWindowManager *wm, wmKeyMap *keymap, wmKeyMapItem *kmi)
wmKeyMapItem * WM_key_event_operator(const bContext *C, const char *opname, wmOperatorCallContext opcontext, IDProperty *properties, const short include_mask, const short exclude_mask, wmKeyMap **r_keymap)
void WM_keymap_restore_to_default(wmKeyMap *keymap, wmWindowManager *wm)
wmKeyMapItem * WM_keymap_add_item_copy(wmKeyMap *keymap, wmKeyMapItem *kmi_src)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
wmKeyMapItem * WM_key_event_operator_from_keymap(wmKeyMap *keymap, const char *opname, IDProperty *properties, const short include_mask, const short exclude_mask)
wmKeyMapItem * WM_modalkeymap_add_item(wmKeyMap *km, const KeyMapItem_Params *params, int value)
void WM_keyconfig_update_ex(wmWindowManager *wm, bool keep_properties)
wmKeyConfig * WM_keyconfig_ensure(wmWindowManager *wm, const char *idname, bool user_defined)
wmKeyMap * WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
wmKeyMapItem * WM_keymap_item_find_match(wmKeyMap *km_base, wmKeyMap *km_match, wmKeyMapItem *kmi_match, ReportList *reports)
wmKeyMapItem * WM_keymap_add_item(wmKeyMap *keymap, const char *idname, const KeyMapItem_Params *params)
std::optional< std::string > WM_keymap_item_to_string(const wmKeyMapItem *kmi, const bool compact)
void WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
wmKeyMap * WM_keymap_list_find(ListBase *lb, const char *idname, int spaceid, int regionid)
wmKeyMapItem * WM_modalkeymap_add_item_str(wmKeyMap *km, const KeyMapItem_Params *params, const char *value)
void WM_keyconfig_remove(wmWindowManager *wm, wmKeyConfig *keyconf)
void WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi)
bool WM_keymap_item_compare(const wmKeyMapItem *k1, const wmKeyMapItem *k2)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_last_properties_ensure(wmOperatorType *ot, PointerRNA *ptr)
size_t WM_operator_bl_idname(char *dst, const char *src)
wmOperatorStatus WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
wmOperatorStatus WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
wmOperatorStatus WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)
wmOperatorStatus WM_operator_ui_popup(bContext *C, wmOperator *op, int width)
wmOperatorStatus WM_operator_props_popup(bContext *C, wmOperator *op, const wmEvent *)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const wmEventType event_type, const double time_step)
void WM_event_timer_remove(wmWindowManager *wm, wmWindow *, wmTimer *timer)