102 #define USE_GIZMO_MOUSE_PRIORITY_HACK
111 const bool poll_only,
122 const wmEvent *event_to_add_after)
126 *
event = *event_to_add;
128 if (event_to_add_after ==
NULL) {
170 if (event->is_repeat ==
false) {
185 printf(
"%s: 'is_repeat=true' for non-keyboard event, this should not happen.\n", __func__);
236 if ((note->category | note->data | note->subtype | note->action) ==
type &&
237 note->reference == reference) {
302 if (note->reference == reference) {
333 if (new_id !=
NULL) {
345 memset(((
char *)note) +
sizeof(
Link), 0,
sizeof(*note) -
sizeof(
Link));
382 if (is_after_open_file) {
405 if (
area->do_refresh) {
448 bool do_anim =
false;
449 bool clear_info_stats =
false;
454 if (note->category ==
NC_WM) {
463 if (note->window == win) {
472 printf(
"%s: Workspace set %p\n", __func__, note->reference);
481 printf(
"%s: Workspace delete %p\n", __func__, workspace);
492 printf(
"%s: screen set %p\n", __func__, note->reference);
501 printf(
"%s: screen delete %p\n", __func__, note->reference);
507 if (note->window == win ||
508 (note->window ==
NULL && (note->reference ==
NULL || note->reference ==
scene))) {
516 clear_info_stats =
true;
520 if (clear_info_stats) {
532 if (
G.is_rendering ==
false) {
561 printf(
"notifier win %d screen %s cat %x\n",
563 win->screen->id.name + 2,
655 static bool do_wheel_ui =
true;
667 if (do_wheel_ui ==
false) {
723 bool reactivate_button)
736 event.val = reactivate_button ? 0 : 1;
737 event.is_repeat =
false;
786 #ifdef WITH_INPUT_NDOF
787 void WM_ndof_deadzone_set(
float deadzone)
789 GHOST_setNDOFDeadZone(deadzone);
917 if (
G.background == 0 && caller_owns_reports ==
false) {
924 if (win_prev ==
NULL) {
939 if (caller_owns_reports ==
false) {
944 if (
G.background == 0) {
1029 if (hud_status != NOP) {
1030 if (hud_status ==
SET) {
1036 else if (hud_status == CLEAR) {
1084 else if (repeat == 0) {
1142 op->
flag |= op_flag;
1144 op->
flag &= ~op_flag;
1150 op->
flag |= op_flag;
1152 op->
flag &= ~op_flag;
1191 return (op_prev && (op->
type == op_prev->
type));
1208 if (properties && properties->
data) {
1232 if (motherop ==
NULL) {
1243 if (otmacro ==
NULL) {
1256 opm->
opm = motherop;
1258 otmacro = otmacro->
next;
1269 opm->
opm = motherop;
1288 event->mval[0] =
event->x - region->
winrct.
xmin;
1289 event->mval[1] =
event->y - region->
winrct.
ymin;
1293 event->mval[0] = -1;
1294 event->mval[1] = -1;
1306 const bool poll_only,
1307 bool use_last_properties)
1325 if (event !=
NULL) {
1330 if (!is_nested_call && use_last_properties) {
1337 "handle evt %d win %p op %s",
1338 event ? event->
type : 0,
1385 const bool store = !is_nested_call && use_last_properties;
1396 int bounds[4] = {-1, -1, -1, -1};
1426 winrect = ®ion->
winrct;
1429 winrect = &
area->totrct;
1467 const bool poll_only,
1478 if (event ==
NULL) {
1487 if (window ==
NULL) {
1618 const char *opstring,
1659 if (!is_undo && wm) {
1715 if (handler->
op ==
NULL) {
1717 "internal error: handler (%s) has invalid area",
1736 if (region ==
NULL) {
1738 region = region_iter;
1874 if (winevent->
type != kmitype) {
1881 if (winevent->
val != kmi->
val) {
1901 if (winevent->
alt != kmi->
alt && !(winevent->
alt & kmi->
alt) &&
1980 event_match = event;
1983 event_no_dbl_click = *event;
1986 event_match = &event_no_dbl_click;
1990 if (event_match !=
NULL) {
1991 event_backup->
prevtype =
event->prevtype;
1992 event_backup->
prevval =
event->prevval;
1994 event->prevtype = event_match->
type;
1995 event->prevval = event_match->
val;
2029 event->type =
event->prevtype;
2030 event->val =
event->prevval;
2032 event->prevtype = event_backup->
prevtype;
2033 event->prevval = event_backup->
prevval;
2047 const char *kmi_idname)
2153 bool use_last_properties =
true;
2168 const bool is_tool = (keymap_tool !=
NULL);
2169 const bool use_tool_properties = is_tool;
2171 if (use_tool_properties) {
2173 keymap_tool, &tool_properties, properties,
ot);
2174 properties = &tool_properties;
2175 use_last_properties =
false;
2180 if (use_tool_properties) {
2194 if (region !=
NULL) {
2198 gzmap_type, gzgt, region);
2246 IFACE_(
"Blender File View"),
2252 U.filebrowser_display_type,
2264 sfile->
op = handler->
op;
2303 if (file_area->
full) {
2331 else if (file_area->
full) {
2342 if (!temp_win && ctx_area->
full) {
2390 if (win_prev ==
NULL) {
2471 if (do_debug_handler) \
2482 const bool do_debug_handler)
2486 if (keymap ==
NULL) {
2491 PRINT(
"%s: checking '%s' ...", __func__, keymap->
idname);
2501 PRINT(
"%s: item matched '%s'\n", __func__, kmi->idname);
2504 C, handlers, &handler->
head, event, kmi->ptr, kmi->idname);
2540 const bool do_debug_handler,
2541 bool *r_keymap_poll)
2544 bool keymap_poll =
false;
2546 PRINT(
"%s: checking '%s' ...", __func__, keymap->
idname);
2553 PRINT(
"%s: item matched '%s'\n", __func__, kmi->idname);
2559 C, handlers, &handler->
head, event, kmi->ptr, kmi->idname);
2565 printf(
"%s: handled - and pass on! '%s'\n", __func__, kmi->idname);
2571 printf(
"%s: handled - and pass on! '%s'\n", __func__, kmi->idname);
2575 PRINT(
"%s: un-handled '%s'\n", __func__, kmi->idname);
2584 if (r_keymap_poll) {
2585 *r_keymap_poll = keymap_poll;
2596 const bool do_debug_handler)
2605 const bool restore_highlight_unless_activated = is_event_drag;
2620 if (restore_highlight_unless_activated ==
false) {
2646 bool handle_highlight =
false;
2647 bool handle_keymap =
false;
2650 if ((prev.gz_modal ==
NULL) &&
2651 ((event->
type ==
MOUSEMOVE) || is_event_modifier || is_event_drag)) {
2652 handle_highlight =
true;
2653 if (is_event_modifier || is_event_drag) {
2654 handle_keymap =
true;
2658 handle_keymap =
true;
2663 if (restore_highlight_unless_activated) {
2664 if ((handle_highlight ==
true) && (handle_keymap ==
false)) {
2669 if (handle_highlight) {
2674 if (gz || prev.gz) {
2675 if ((prev.gz != gz) || (prev.part != part)) {
2692 if (handle_keymap) {
2695 bool keymap_poll =
false;
2699 C, event, handlers, handler, gzgroup, keymap, do_debug_handler, &keymap_poll);
2701 #ifdef USE_GIZMO_MOUSE_PRIORITY_HACK
2702 if (((action &
WM_HANDLER_BREAK) == 0) && !is_event_handle_all && keymap_poll) {
2705 wmEvent event_test_click = *event;
2708 wmEvent event_test_click_drag = *event;
2711 wmEvent event_test_tweak = *event;
2722 is_event_handle_all =
true;
2744 C, event, handlers, handler, gzgroup, keymap, do_debug_handler,
NULL);
2754 if (handle_highlight) {
2755 if (restore_highlight_unless_activated) {
2758 if (!(gz_modal && (gz_modal != prev.gz_modal))) {
2764 if (is_event_handle_all) {
2785 const bool do_debug_handler =
2794 if (handlers ==
NULL) {
2805 handler_base && handlers->
first;
2806 handler_base = handler_base_next) {
2807 handler_base_next = handler_base->next;
2813 else if (handler_base->poll ==
NULL || handler_base->poll(
CTX_wm_region(
C), event)) {
2827 C, event, handlers, handler, keymap, do_debug_handler);
2853 const char *tooltip =
NULL;
2854 if (drop->poll(
C, drag, event, &tooltip)) {
2859 drop->copy(drag, drop);
2865 event->customdata = &single_lb;
2868 C, drop->ot, drop->ptr,
NULL, drop->opcontext,
false, event);
2881 event->customdata =
NULL;
2975 short val =
event->val;
2976 short type =
event->type;
2978 event->x =
event->prevclickx;
2979 event->y =
event->prevclicky;
2981 event->type =
event->prevtype;
3038 event->x =
event->prevclickx;
3039 event->y =
event->prevclicky;
3133 if (screen &&
area) {
3146 for (; pc; pc = pc->
next) {
3210 event->customdata = &wm->
drags;
3211 event->customdatafree = 1;
3280 if (screen ==
NULL) {
3289 if (scene_eval !=
NULL) {
3296 else if (is_playing_sound != -1) {
3297 bool is_playing_screen;
3301 if (((is_playing_sound == 1) && (is_playing_screen == 0)) ||
3302 ((is_playing_sound == 0) && (is_playing_screen == 1))) {
3318 if (is_playing_sound == 0) {
3321 int ncfra = round(
time *
FPS);
3334 while ((event = win->event_queue.first)) {
3342 printf(
"\n%s: Handling event\n", __func__);
3410 #ifdef WITH_INPUT_NDOF
3412 win->addmousemove =
true;
3500 win->event_queue_check_click =
false;
3505 if (win->event_queue_check_drag_handled) {
3506 win->event_queue_check_drag =
false;
3507 win->event_queue_check_drag_handled =
false;
3511 win->eventstate->prevx =
event->x;
3512 win->eventstate->prevy =
event->y;
3520 if (win->addmousemove && win->eventstate) {
3521 wmEvent tevent = *(win->eventstate);
3528 win->addmousemove = 0;
3549 wmEvent event = *win->eventstate;
3552 event.val = eventval;
3553 event.customdata = ophandle;
3577 if (!is_temp_screen) {
3629 static void WM_event_set_handler_flag(
wmEventHandler *handler,
int flag)
3631 handler->
flag = flag;
3644 handler->
op = op->
opm;
3646 handler->
op->
opm = op;
3716 if (handler->
keymap == keymap) {
3725 handler->
keymap = keymap;
3749 const char *keymap_id =
NULL;
3756 if (region->gizmo_map !=
NULL) {
3757 gzmap = region->gizmo_map;
3759 if (gzgroup !=
NULL) {
3764 if (gzgroup !=
NULL) {
3769 if (highlight ==
NULL) {
3777 if (keymap_id && keymap_id[0]) {
3786 "Keymap: '%s' not found for tool '%s'\n", tref_rt->
keymap,
area->runtime.tool->idname);
3797 if (tref_rt && tref_rt->
keymap[0]) {
3798 const char *keymap_id = tref_rt->
keymap;
3808 "Keymap: '%s' not found for tool '%s'\n", tref_rt->
keymap,
area->runtime.tool->idname);
3882 if (handler ==
NULL) {
3955 const bool postpone)
4234 switch (event->
type) {
4283 .is_motion_absolute =
false,
4308 #ifdef WITH_INPUT_NDOF
4310 static void attach_ndof_data(
wmEvent *event,
const GHOST_TEventNDOFMotionData *ghost)
4312 wmNDOFMotionData *
data =
MEM_mallocN(
sizeof(wmNDOFMotionData),
"customdata NDOF");
4314 const float ts =
U.ndof_sensitivity;
4315 const float rs =
U.ndof_orbit_sensitivity;
4327 data->dt = ghost->dt;
4340 int mval[2] = {
event->x,
event->y};
4392 event->prevval = event_state->
prevval = event_state->
val;
4393 event->prevtype = event_state->
prevtype = event_state->
type;
4399 event->prevclickx = event_state->
prevclickx = event_state->
x;
4400 event->prevclicky = event_state->
prevclicky = event_state->
y;
4415 if (event_last ==
NULL) {
4428 if (event_last && event_last->
type == event->
type) {
4429 deltax += event_last->
x - event_last->
prevx;
4430 deltay += event_last->
y - event_last->
prevy;
4437 event_new->
prevx = event_new->
x - deltax;
4438 event_new->
prevy = event_new->
y - deltay;
4465 event = *event_state;
4478 event.prevtype =
event.type;
4479 event.prevval =
event.val;
4483 if ((event_state->
type || event_state->
val) &&
4486 "Non-keyboard/mouse button found in 'win->eventstate->type = %d'",
4492 "Non-keyboard/mouse button found in 'win->eventstate->prevtype = %d'",
4554 event.x = event_state->
x = pd->
x;
4555 event.y = event_state->
y = pd->
y;
4601 event_state->
val =
event.val;
4602 event_state->
type =
event.type;
4624 event_other.
type =
event.type;
4625 event_other.
val =
event.val;
4626 event_other.
tablet =
event.tablet;
4642 event.ascii = kd->
ascii;
4652 event_state->
val =
event.val;
4653 event_state->
type =
event.type;
4654 event_state->
is_repeat =
event.is_repeat;
4663 "ghost on your platform is misbehaving, utf8 events on key up!");
4665 event.utf8_buf[0] =
'\0';
4672 event.utf8_buf[0] =
'\0';
4679 "ghost detected an invalid unicode character '%d'",
4680 (
int)(
unsigned char)event.
utf8_buf[0]);
4681 event.utf8_buf[0] =
'\0';
4686 switch (event.
type) {
4690 if (event_state->
ctrl || event_state->
alt || event_state->
oskey) {
4697 event.shift = event_state->
shift = keymodifier;
4702 if (event_state->
shift || event_state->
alt || event_state->
oskey) {
4709 event.ctrl = event_state->
ctrl = keymodifier;
4714 if (event_state->
ctrl || event_state->
shift || event_state->
oskey) {
4721 event.alt = event_state->
alt = keymodifier;
4725 if (event_state->
ctrl || event_state->
alt || event_state->
shift) {
4732 event.oskey = event_state->
oskey = keymodifier;
4755 event.keymodifier = 0;
4770 (event.
shift == 0 && event.
ctrl == 0 && event.
alt == 0)) {
4790 if (wheelData->
z > 0) {
4805 event.customdata = customdata;
4807 event.keymodifier = 0;
4813 #ifdef WITH_INPUT_NDOF
4814 case GHOST_kEventNDOFMotion: {
4817 attach_ndof_data(&event, customdata);
4824 case GHOST_kEventNDOFButton: {
4825 GHOST_TEventNDOFButtonData *
e = customdata;
4829 switch (
e->action) {
4833 case GHOST_kRelease:
4839 event.customdata =
NULL;
4858 #ifdef WITH_INPUT_IME
4862 win->
ime_data->is_ime_composing =
true;
4876 win->
ime_data->is_ime_composing =
false;
4977 else if (handler_base->poll ==
NULL || handler_base->poll(
CTX_wm_region(
C), event)) {
5030 state->modifiers.shift =
event->shift;
5031 state->modifiers.ctrl =
event->ctrl;
5032 state->modifiers.alt =
event->alt;
5033 state->modifiers.oskey =
event->oskey;
5045 const char *msg = cd->
text[button_index][type_index];
5065 area_statusbar =
area;
5069 return area_statusbar;
5085 if (area_statusbar ==
NULL) {
5108 if (region ==
NULL) {
5179 for (
int button_index = 0; button_index < 3; button_index++) {
5180 cd->
text[button_index][0][0] =
'\0';
5181 cd->
text[button_index][1][0] =
'\0';
5195 for (
int data_index = 0; data_index <
ARRAY_SIZE(event_data); data_index++) {
5196 const int button_index = event_data[data_index].button_index;
5197 const int type_index = event_data[data_index].type_index;
5198 if (cd->
text[button_index][type_index][0] != 0) {
5202 test_event.
type = event_data[data_index].event_type;
5203 test_event.
val = event_data[data_index].event_value;
5206 for (
int handler_index = 0; handler_index <
ARRAY_SIZE(handlers); handler_index++) {
5215 STRNCPY(cd->
text[button_index][type_index], name);
5219 if (memcmp(&cd_prev.
text, &cd->
text,
sizeof(cd_prev.
text)) != 0) {
5240 if (handler->
op !=
NULL) {
5244 keymap = keymap_test;
5258 if (!items[i].identifier[0]) {
5266 bool show_text =
true;
5288 int available_len =
sizeof(buf);
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
void CTX_wm_region_set(bContext *C, struct ARegion *region)
struct ARegion * CTX_wm_menu(const bContext *C)
void CTX_data_scene_set(bContext *C, struct Scene *scene)
void CTX_wm_menu_set(bContext *C, struct ARegion *menu)
void CTX_wm_gizmo_group_set(bContext *C, struct wmGizmoGroup *gzgroup)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
void CTX_wm_screen_set(bContext *C, struct bScreen *screen)
void CTX_wm_window_set(bContext *C, struct wmWindow *win)
struct ReportList * CTX_wm_reports(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
void CTX_wm_area_set(bContext *C, struct ScrArea *area)
void CTX_wm_operator_poll_msg_set(struct bContext *C, const char *msg)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
CustomData interface, see also DNA_customdata_types.h.
void CustomData_MeshMasks_update(CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
void IDP_ReplaceGroupInGroup(struct IDProperty *dest, const struct IDProperty *src) ATTR_NONNULL()
struct IDProperty * IDP_New(const char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
struct IDProperty * IDP_CopyProperty(const struct IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_reports_print(ReportList *reports, ReportType level)
void BKE_report_print_level_set(ReportList *reports, ReportType level)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reports_clear(ReportList *reports)
void BKE_reports_init(ReportList *reports, int flag)
struct Depsgraph * BKE_scene_get_depsgraph(const struct Scene *scene, const struct ViewLayer *view_layer)
void BKE_scene_graph_update_tagged(struct Depsgraph *depsgraph, struct Main *bmain)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
struct ARegion * BKE_area_find_region_type(const struct ScrArea *area, int type)
void BKE_spacedata_draw_locks(bool set)
struct ARegion * BKE_area_find_region_active_win(struct ScrArea *area)
struct ARegion * BKE_area_find_region_xy(struct ScrArea *area, const int regiontype, int x, int y)
double BKE_sound_sync_scene(struct Scene *scene)
int BKE_sound_scene_playing(struct Scene *scene)
struct bScreen * BKE_workspace_layout_screen_get(const struct WorkSpaceLayout *layout) GETTER_ATTRS
#define BLI_assert_unreachable()
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, va_list args) ATTR_PRINTF_FORMAT(2
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
bool BLI_remlink_safe(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_poptail(ListBase *listbase) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE int len_manhattan_v2v2_int(const int a[2], const int b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
void BLI_rcti_translate(struct rcti *rect, int x, int y)
bool BLI_rcti_isect_pt(const struct rcti *rect, const int x, const int y)
#define STRNCPY(dst, src)
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
int BLI_str_utf8_size(const char *p) ATTR_NONNULL()
void BLI_timer_execute(void)
#define CLOG_ERROR(clg_ref,...)
#define CLOG_WARN(clg_ref,...)
#define CLOG_INFO(clg_ref, level,...)
#define CLOG_STR_INFO_N(clg_ref, level, str)
struct Depsgraph Depsgraph
void DEG_make_active(struct Depsgraph *depsgraph)
void DEG_graph_on_visible_update(struct Main *bmain, Depsgraph *depsgraph, const bool do_time)
void DEG_graph_relations_update(struct Depsgraph *graph)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
These structs are the foundation for all linked lists in the library system.
@ AREA_FLAG_ACTIONZONES_UPDATE
#define RGN_TYPE_IS_HEADER_ANY(regiontype)
@ OP_IS_MODAL_CURSOR_REGION
@ OP_IS_MODAL_GRAB_CURSOR
#define OPERATOR_RETVAL_CHECK(ret)
struct ScrArea * ED_fileselect_handler_area_find(const struct wmWindow *win, const struct wmOperator *file_operator)
void ED_fileselect_set_params_from_userdef(struct SpaceFile *sfile)
void ED_fileselect_params_to_userdef(struct SpaceFile *sfile, const int temp_win_size[], const bool is_maximized)
void ED_fileselect_window_params_get(const struct wmWindow *win, int win_size[2], bool *is_maximized)
void ED_info_stats_clear(struct ViewLayer *view_layer)
void ED_area_tag_redraw(ScrArea *area)
void ED_screen_do_listen(struct bContext *C, struct wmNotifier *note)
void ED_screen_full_prevspace(struct bContext *C, ScrArea *area)
ScrArea * ED_screen_temp_space_open(struct bContext *C, const char *title, int x, int y, int sizex, int sizey, eSpace_Type space_type, int display_type, bool dialog)
#define ED_screen_areas_iter(win, screen, area_name)
void ED_area_prevspace(struct bContext *C, ScrArea *area)
void ED_region_do_listen(struct wmRegionListenerParams *params)
int ED_screen_animation_play(struct bContext *C, int sync, int mode)
void ED_update_for_newframe(struct Main *bmain, struct Depsgraph *depsgraph)
void ED_area_exit(struct bContext *C, struct ScrArea *area)
bool ED_workspace_layout_delete(struct WorkSpace *workspace, struct WorkSpaceLayout *layout_old, struct bContext *C) ATTR_NONNULL()
bScreen * ED_screen_animation_playing(const struct wmWindowManager *wm)
void ED_screen_set_active_region(struct bContext *C, struct wmWindow *win, const int xy[2])
void ED_area_do_listen(struct wmSpaceTypeListenerParams *params)
void ED_area_type_hud_clear(struct wmWindowManager *wm, ScrArea *area_keep)
void ED_area_do_refresh(struct bContext *C, ScrArea *area)
bool ED_workspace_delete(struct WorkSpace *workspace, struct Main *bmain, struct bContext *C, struct wmWindowManager *wm) ATTR_NONNULL()
bool ED_region_contains_xy(const struct ARegion *region, const int event_xy[2])
void ED_area_type_hud_ensure(struct bContext *C, struct ScrArea *area)
struct AZone * ED_area_azones_update(ScrArea *area, const int mouse_xy[])
bool ED_screen_change(struct bContext *C, struct bScreen *screen)
Change the active screen.
bool ED_undo_is_state_valid(struct bContext *C)
void ED_undo_grouped_push_op(struct bContext *C, struct wmOperator *op)
void ED_undo_push_op(struct bContext *C, struct wmOperator *op)
void ED_spacedata_id_remap(struct ScrArea *area, struct SpaceLink *sl, struct ID *old_id, struct ID *new_id)
void ED_view3d_screen_datamask(const struct bContext *C, const struct Scene *scene, const struct bScreen *screen, struct CustomData_MeshMasks *r_cddata_masks)
GHOST C-API function and type declarations.
@ GHOST_kTrackpadEventMagnify
@ GHOST_kTrackpadEventSmartMagnify
@ GHOST_kTrackpadEventRotate
@ GHOST_kTrackpadEventScroll
@ GHOST_kEventWheel
Mouse button event.
@ GHOST_kEventImeComposition
@ GHOST_kEventButtonUp
Mouse button event.
@ GHOST_kEventTrackpad
Mouse wheel event.
@ GHOST_kEventWindowDeactivate
@ GHOST_kEventButtonDown
Mouse move event.
@ GHOST_kEventKeyDown
Trackpad event.
@ GHOST_kEventImeCompositionStart
@ GHOST_kEventImeCompositionEnd
@ GHOST_kKeyNumpadAsterisk
@ GHOST_kButtonMaskButton4
@ GHOST_kButtonMaskButton7
@ GHOST_kButtonMaskButton6
@ GHOST_kButtonMaskButton5
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Read Guarded memory(de)allocation.
Platform independent time functions.
#define RNA_STRUCT_BEGIN(sptr, prop)
uiBlock * UI_region_block_find_mouse_over(const struct ARegion *region, const int xy[2], bool only_clip)
void UI_popup_handlers_remove_all(struct bContext *C, struct ListBase *handlers)
void uiItemL(uiLayout *layout, const char *name, int icon)
void UI_popup_menu_reports(struct bContext *C, struct ReportList *reports) ATTR_NONNULL()
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
#define UI_MAX_SHORTCUT_STR
bool uiTemplateEventFromKeymapItem(struct uiLayout *layout, const char *text, const struct wmKeyMapItem *kmi, bool text_fallback)
@ WM_HANDLER_ACCEPT_DBL_CLICK
void(* wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata)
struct wmKeyMap *() wmEventHandler_KeymapDynamicFn(wmWindowManager *wm, struct wmEventHandler_Keymap *handler) ATTR_WARN_UNUSED_RESULT
bool(* EventHandlerPoll)(const ARegion *region, const struct wmEvent *event)
int(* wmUIHandlerFunc)(struct bContext *C, const struct wmEvent *event, void *userdata)
@ WM_GIZMO_EVENT_HANDLE_ALL
@ WM_GIZMO_OPERATOR_TOOL_INIT
@ WM_GIZMOGROUPTYPE_TOOL_INIT
@ WM_GIZMOGROUPTYPE_TOOL_FALLBACK_KEYMAP
#define WM_UI_HANDLER_CONTINUE
struct CLG_LogRef * WM_LOG_EVENTS
struct CLG_LogRef * WM_LOG_HANDLERS
@ WM_OP_INVOKE_REGION_WIN
@ WM_OP_EXEC_REGION_PREVIEW
@ WM_OP_INVOKE_REGION_PREVIEW
@ WM_OP_EXEC_REGION_CHANNELS
@ WM_OP_INVOKE_REGION_CHANNELS
#define ND_WORKSPACE_DELETE
#define ND_SPACE_INFO_REPORT
struct CLG_LogRef * WM_LOG_OPERATORS
#define WM_UI_HANDLER_BREAK
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
const Depsgraph * depsgraph
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static GPUContext * wrap(Context *ctx)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
const char * RNA_property_identifier(const PropertyRNA *prop)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_flag(PropertyRNA *prop)
struct SELECTID_Context context
bool clip_gizmo_events_by_ui
struct wmGizmoMap * gizmo_map
struct ARegionType * type
struct CursorKeymapInfo_State::@1153 modifiers
struct CursorKeymapInfo_State state
GHOST_TTrackpadEventSubTypes subtype
struct wmTimer * reporttimer
struct CustomData_MeshMasks customdata_mask
struct CustomData_MeshMasks customdata_mask_modal
struct wmTooltipState * tool_tip
struct ARegion * active_region
struct wmGizmoMap * gizmo_map
wmEventHandler_KeymapDynamicFn * keymap_fn
void(* post_fn)(wmKeyMap *keymap, wmKeyMapItem *kmi, void *user_data)
struct wmEventHandler_KeymapPost post
struct wmEventHandler_KeymapDynamic dynamic
struct bToolRef * keymap_tool
struct wmEventHandler_Op::@1171 context
struct wmEventHandler_UI::@1170 context
wmUIHandlerRemoveFunc remove_fn
wmUIHandlerFunc handle_fn
enum eWM_EventHandlerType type
eWM_GizmoFlagGroupTypeFlag flag
struct wmGizmoMapType_Params gzmap_params
struct wmGizmoGroupType * type
struct wmGizmoGroup * parent_gzgroup
struct wmKeyMapItem * next
bool(* poll_modal_item)(const struct wmOperator *op, int value)
const struct wmWindow * window
struct wmOperatorTypeMacro * next
struct IDProperty * properties
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
struct wmKeyMap * modalkeymap
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
void(* ui)(struct bContext *, struct wmOperator *)
bool(* check)(struct bContext *, struct wmOperator *)
bool(* pyop_poll)(struct bContext *, struct wmOperatorType *ot) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
struct wmOperatorType * type
struct wmPaintCursor * next
bool(* poll)(struct bContext *C)
struct wmMsgBus * message_bus
struct ReportList reports
struct wmKeyConfig * userconf
struct wmWindow * winactive
short pie_event_type_lock
struct wmEvent * eventstate
char event_queue_check_click
struct wmIMEData * ime_data
char event_queue_check_drag_handled
void * cursor_keymap_status
char event_queue_check_drag
double PIL_check_seconds_timer(void)
ccl_device_inline int mod(int x, int m)
#define SET(a, b, c, d, k, s, Ti)
void wm_operator_register(bContext *C, wmOperator *op)
void WM_operator_free(wmOperator *op)
bool wm_cursor_arrow_move(wmWindow *win, const wmEvent *event)
void WM_cursor_grab_enable(wmWindow *win, int wrap, bool hide, int bounds[4])
void WM_cursor_grab_disable(wmWindow *win, const int mouse_ungrab_xy[2])
void wm_drags_check_ops(bContext *C, const wmEvent *event)
void WM_drag_free_list(struct ListBase *lb)
static ListBase dropboxes
void WM_paint_cursor_tag_redraw(wmWindow *win, ARegion *UNUSED(region))
void WM_event_print(const wmEvent *event)
bool WM_event_drag_test(const wmEvent *event, const int prev_xy[2])
int WM_userdef_event_map(int kmitype)
float wm_pressure_curve(float pressure)
int WM_operator_repeat_last(bContext *C, wmOperator *op)
bool WM_operator_poll_context(bContext *C, wmOperatorType *ot, short context)
bool WM_window_modal_keymap_status_draw(bContext *C, wmWindow *win, uiLayout *layout)
wmEventHandler_UI * WM_event_add_ui_handler(const bContext *C, ListBase *handlers, wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn, void *user_data, const char flag)
static int wm_operator_exec(bContext *C, wmOperator *op, const bool repeat, const bool store)
static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHandler_Op *handler, const wmEvent *event)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
static ScrArea * area_event_inside(bContext *C, const int xy[2])
wmEventHandler_Dropbox * WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes)
void WM_menu_name_call(bContext *C, const char *menu_name, short context)
static wmKeyMapItem * wm_eventmatch_modal_keymap_items(const wmKeyMap *keymap, wmOperator *op, const wmEvent *event)
static void wm_eventemulation(wmEvent *event, bool test_only)
static bool wm_operator_register_check(wmWindowManager *wm, wmOperatorType *ot)
static void wm_event_cursor_store(struct CursorKeymapInfo_State *state, const wmEvent *event, short space_type, short region_type, const bToolRef *tref)
void WM_event_remove_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
void wm_event_do_handlers(bContext *C)
bool WM_operator_poll(bContext *C, wmOperatorType *ot)
wmKeyMap * WM_event_get_keymap_from_handler(wmWindowManager *wm, wmEventHandler_Keymap *handler)
void WM_window_status_area_tag_redraw(wmWindow *win)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
int WM_operator_name_call_with_properties(struct bContext *C, const char *opstring, short context, struct IDProperty *properties)
ScrArea * WM_window_status_area_find(wmWindow *win, bScreen *screen)
static void wm_event_prev_click_set(wmEvent *event, wmEvent *event_state)
static wmEvent * wm_event_add_mousemove(wmWindow *win, const wmEvent *event)
static int convert_key(GHOST_TKey key)
wmEvent * wm_event_add(wmWindow *win, const wmEvent *event_to_add)
void wm_event_do_refresh_wm_and_depsgraph(bContext *C)
static int wm_handlers_do_keymap_with_gizmo_handler(bContext *C, wmEvent *event, ListBase *handlers, wmEventHandler_Gizmo *handler, wmGizmoGroup *gzgroup, wmKeyMap *keymap, const bool do_debug_handler, bool *r_keymap_poll)
void WM_report_banners_cancel(Main *bmain)
static bool wm_event_inside_region(const wmEvent *event, const ARegion *region)
void WM_event_remove_area_handler(ListBase *handlers, void *area)
struct wmEventHandler_Keymap * WM_event_add_keymap_handler_dynamic(ListBase *handlers, wmEventHandler_KeymapDynamicFn *keymap_fn, void *user_data)
static bool handler_region_v2d_mask_test(const ARegion *region, const wmEvent *event)
static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
static void wm_event_modalkeymap_begin(const bContext *C, wmOperator *op, wmEvent *event, struct wmEvent_ModalMapStore *event_backup)
static int wm_action_not_handled(int action)
void wm_event_do_depsgraph(bContext *C, bool is_after_open_file)
void WM_event_add_notifier_ex(wmWindowManager *wm, const wmWindow *win, uint type, void *reference)
const char * WM_window_cursor_keymap_status_get(const wmWindow *win, int button_index, int type_index)
void WM_window_cursor_keymap_status_refresh(bContext *C, wmWindow *win)
wmKeyMapItem * WM_event_match_keymap_item(bContext *C, wmKeyMap *keymap, const wmEvent *event)
static void wm_event_modalkeymap_end(wmEvent *event, const struct wmEvent_ModalMapStore *event_backup)
static void wm_event_prev_values_set(wmEvent *event, wmEvent *event_state)
void wm_tablet_data_from_ghost(const GHOST_TabletData *tablet_data, wmTabletData *wmtab)
void WM_report_banner_show(void)
static wmOperator * wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, PointerRNA *properties, ReportList *reports)
void WM_event_free_ui_handler_all(bContext *C, ListBase *handlers, wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn)
wmKeyMapItem * WM_event_match_keymap_item_from_handlers(bContext *C, wmWindowManager *wm, ListBase *handlers, const wmEvent *event)
static int wm_handlers_do_keymap_with_keymap_handler(bContext *C, wmEvent *event, ListBase *handlers, wmEventHandler_Keymap *handler, wmKeyMap *keymap, const bool do_debug_handler)
int WM_operator_repeat(bContext *C, wmOperator *op)
void wm_event_free_all(wmWindow *win)
void WM_event_tablet_data_default_set(wmTabletData *tablet_data)
static void wm_region_mouse_co(bContext *C, wmEvent *event)
int WM_operator_name_call(bContext *C, const char *opstring, short context, PointerRNA *properties)
int WM_operator_call_notest(bContext *C, wmOperator *op)
void WM_report(ReportType type, const char *message)
bool WM_operator_check_ui_empty(wmOperatorType *ot)
void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, void *customdata)
void WM_reportf(ReportType type, const char *format,...)
wmEvent * WM_event_add_simulate(wmWindow *win, const wmEvent *event_to_add)
static void wm_handler_op_context(bContext *C, wmEventHandler_Op *handler, const wmEvent *event)
void WM_event_modal_handler_region_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
static bool wm_event_pie_filter(wmWindow *win, const wmEvent *event)
wmEvent * wm_event_add_ex(wmWindow *win, const wmEvent *event_to_add, const wmEvent *event_to_add_after)
int WM_operator_call_py(bContext *C, wmOperatorType *ot, short context, PointerRNA *properties, ReportList *reports, const bool is_undo)
static bool wm_event_is_double_click(const wmEvent *event)
static wmWindow * wm_event_cursor_other_windows(wmWindowManager *wm, wmWindow *win, wmEvent *event)
static void wm_event_free_last(wmWindow *win)
static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, PointerRNA *properties, ReportList *reports, const bool poll_only, bool use_last_properties)
void WM_operator_region_active_win_set(bContext *C)
void WM_main_remap_editor_id_reference(ID *old_id, ID *new_id)
static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers)
static ARegion * region_event_inside(bContext *C, const int xy[2])
wmEventHandler_Keymap * WM_event_add_keymap_handler_v2d_mask(ListBase *handlers, wmKeyMap *keymap)
static bool wm_operator_check_locked_interface(bContext *C, wmOperatorType *ot)
static void wm_operator_finished(bContext *C, wmOperator *op, const bool repeat, const bool store)
static void wm_paintcursor_tag(bContext *C, wmPaintCursor *pc, ARegion *region)
static void wm_event_handler_ui_cancel(bContext *C)
static int wm_operator_exec_notest(bContext *C, wmOperator *op)
static void wm_add_reports(ReportList *reports)
static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, PointerRNA *properties, ReportList *reports, const short context, const bool poll_only, wmEvent *event)
wmKeyMap * WM_event_get_keymap_from_toolsystem_fallback(wmWindowManager *wm, wmEventHandler_Keymap *handler)
void WM_event_remove_ui_handler(ListBase *handlers, wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn, void *user_data, const bool postpone)
int WM_operator_call(bContext *C, wmOperator *op)
bool WM_operator_repeat_check(const bContext *UNUSED(C), wmOperator *op)
wmEventHandler_Keymap * WM_event_add_keymap_handler_priority(ListBase *handlers, wmKeyMap *keymap, int UNUSED(priority))
static void wm_notifier_clear(wmNotifier *note)
void WM_event_modal_handler_area_replace(wmWindow *win, const ScrArea *old_area, ScrArea *new_area)
bool WM_operator_is_repeat(const bContext *C, const wmOperator *op)
static void wm_operator_reports(bContext *C, wmOperator *op, int retval, bool caller_owns_reports)
wmEventHandler_Keymap * WM_event_add_keymap_handler_poll(ListBase *handlers, wmKeyMap *keymap, EventHandlerPoll poll)
static int wm_handler_fileselect_do(bContext *C, ListBase *handlers, wmEventHandler_Op *handler, int val)
static bool wm_test_duplicate_notifier(const wmWindowManager *wm, uint type, void *reference)
void WM_main_remove_notifier_reference(const void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
static void wm_event_drag_and_drop_test(wmWindowManager *wm, wmWindow *win, wmEvent *event)
static void wm_event_execute_timers(bContext *C)
void wm_event_handler_ui_cancel_ex(bContext *C, wmWindow *win, ARegion *region, bool reactivate_button)
static int wm_handler_ui_call(bContext *C, wmEventHandler_UI *handler, const wmEvent *event, int always_pass)
static void wm_paintcursor_test(bContext *C, const wmEvent *event)
static const wmTabletData wm_event_tablet_data_default
void wm_event_free(wmEvent *event)
static bool event_or_prev_in_rect(const wmEvent *event, const rcti *rect)
static int wm_handlers_do_gizmo_handler(bContext *C, wmWindowManager *wm, wmEventHandler_Gizmo *handler, wmEvent *event, ListBase *handlers, const bool do_debug_handler)
void WM_event_set_keymap_handler_post_callback(wmEventHandler_Keymap *handler, void(keymap_tag)(wmKeyMap *keymap, wmKeyMapItem *kmi, void *user_data), void *user_data)
static bool wm_eventmatch(const wmEvent *winevent, const wmKeyMapItem *kmi)
wmKeyMap * WM_event_get_keymap_from_toolsystem(wmWindowManager *wm, wmEventHandler_Keymap *handler)
wmEventHandler_Keymap * WM_event_add_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
void WM_event_fileselect_event(wmWindowManager *wm, void *ophandle, int eventval)
void wm_event_free_handler(wmEventHandler *handler)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, short context, PointerRNA *properties)
void wm_event_do_notifiers(bContext *C)
static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHandler *handler_base, wmEvent *event, PointerRNA *properties, const char *kmi_idname)
static void wm_event_free_and_remove_from_queue_if_valid(wmEvent *event)
void WM_set_locked_interface(wmWindowManager *wm, bool lock)
int WM_operator_call_ex(bContext *C, wmOperator *op, const bool store)
static int wm_event_always_pass(const wmEvent *event)
static wmEvent * wm_event_add_trackpad(wmWindow *win, const wmEvent *event, int deltax, int deltay)
void wm_event_init_from_window(wmWindow *win, wmEvent *event)
void WM_event_remove_handlers(bContext *C, ListBase *handlers)
void WM_event_add_mousemove(wmWindow *win)
static bool wm_event_inside_rect(const wmEvent *event, const rcti *rect)
#define WM_HANDLER_HANDLED
@ WM_HANDLER_TYPE_DROPBOX
#define WM_HANDLER_CONTINUE
#define ISMOUSE_BUTTON(event_type)
#define ISTWEAK(event_type)
#define ISMOUSE_WHEEL(event_type)
#define ISKEYMODIFIER(event_type)
#define ISTIMER(event_type)
#define ISMOUSE_GESTURE(event_type)
#define ISKEYBOARD(event_type)
@ EVT_FILESELECT_FULL_OPEN
@ EVT_FILESELECT_EXTERNAL_CANCEL
#define ISMOUSE(event_type)
void wm_test_autorun_warning(bContext *C)
void wm_tweakevent_test(bContext *C, const wmEvent *event, int action)
void WM_gizmogroup_ensure_init(const bContext *C, wmGizmoGroup *gzgroup)
bool WM_gizmo_group_type_ensure_ptr_ex(wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type)
bool wm_gizmogroup_is_any_selected(const wmGizmoGroup *gzgroup)
wmGizmoGroup * WM_gizmomaptype_group_init_runtime_with_region(wmGizmoMapType *gzmap_type, wmGizmoGroupType *gzgt, ARegion *region)
wmGizmoGroupType * WM_gizmogrouptype_find(const char *idname, bool quiet)
wmGizmoMapType * WM_gizmomaptype_ensure(const struct wmGizmoMapType_Params *gzmap_params)
bool WM_gizmomap_is_any_selected(const wmGizmoMap *gzmap)
wmGizmo * wm_gizmomap_highlight_get(wmGizmoMap *gzmap)
void wm_gizmomaps_handled_modal_update(bContext *C, wmEvent *event, wmEventHandler_Op *handler)
bool wm_gizmomap_highlight_set(wmGizmoMap *gzmap, const bContext *C, wmGizmo *gz, int part)
struct ARegion * WM_gizmomap_tooltip_init(struct bContext *C, struct ARegion *region, int *UNUSED(r_pass), double *UNUSED(pass_delay), bool *r_exit_on_event)
void WM_gizmomap_tag_refresh(wmGizmoMap *gzmap)
wmGizmoGroup * WM_gizmomap_group_find(struct wmGizmoMap *gzmap, const char *idname)
wmGizmo * wm_gizmomap_highlight_find(wmGizmoMap *gzmap, bContext *C, const wmEvent *event, int *r_part)
void WM_gizmoconfig_update(struct Main *bmain)
const ListBase * WM_gizmomap_group_list(wmGizmoMap *gzmap)
wmGizmo * wm_gizmomap_modal_get(wmGizmoMap *gzmap)
void wm_gizmomap_handler_context_gizmo(bContext *UNUSED(C), wmEventHandler_Gizmo *UNUSED(handler))
void WM_keyconfig_update(wmWindowManager *wm)
wmKeyMap * WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
bool WM_keymap_poll(bContext *C, wmKeyMap *keymap)
wmKeyMap * WM_keymap_list_find_spaceid_or_empty(ListBase *lb, const char *idname, int spaceid, int regionid)
char * WM_modalkeymap_operator_items_to_string_buf(wmOperatorType *ot, const int propvalue, const bool compact, const int max_len, int *r_available_len, char **r_result)
void WM_msg_id_update(struct wmMsgBus *mbus, struct ID *id_src, struct ID *id_dst)
void WM_msg_id_remove(struct wmMsgBus *mbus, const struct ID *id)
void WM_msgbus_handle(struct wmMsgBus *mbus, struct bContext *C)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
const char * WM_operatortype_name(struct wmOperatorType *ot, struct PointerRNA *properties)
char * WM_operator_pystring(bContext *C, wmOperator *op, const bool all_args, const bool macro_args)
bool WM_operator_last_properties_store(wmOperator *op)
bool WM_operator_last_properties_init(wmOperator *op)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)
void WM_operator_properties_sanitize(PointerRNA *ptr, const bool no_context)
wmOperator * WM_operator_last_redo(const bContext *C)
void wm_stereo3d_mouse_offset_apply(wmWindow *win, int *r_mouse_xy)
void WM_event_remove_timer(wmWindowManager *wm, wmWindow *UNUSED(win), wmTimer *timer)
int WM_window_pixels_y(const wmWindow *win)
void WM_window_set_active_workspace(bContext *C, wmWindow *win, WorkSpace *workspace)
void wm_window_title(wmWindowManager *wm, wmWindow *win)
WorkSpaceLayout * WM_window_get_active_layout(const wmWindow *win)
void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win)
bScreen * WM_window_get_active_screen(const wmWindow *win)
bool WM_window_find_under_cursor(const wmWindowManager *wm, const wmWindow *win_ignore, const wmWindow *win, const int mval[2], wmWindow **r_win, int r_mval[2])
void wm_window_make_drawable(wmWindowManager *wm, wmWindow *win)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)
bool WM_window_is_temp_screen(const wmWindow *win)
int WM_window_pixels_x(const wmWindow *win)
Scene * WM_window_get_active_scene(const wmWindow *win)
wmTimer * WM_event_add_timer(wmWindowManager *wm, wmWindow *win, int event_type, double timestep)
void wm_cursor_position_get(wmWindow *win, int *r_x, int *r_y)