Blender  V3.3
wm_event_system.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2007 Blender Foundation. All rights reserved. */
3 
8 #pragma once
9 
10 /* return value of handler-operator call */
11 #define WM_HANDLER_CONTINUE 0
12 #define WM_HANDLER_BREAK 1
13 #define WM_HANDLER_HANDLED 2
14 #define WM_HANDLER_MODAL 4 /* MODAL|BREAK means unhandled */
15 
16 struct ARegion;
17 struct GHOST_TabletData;
18 struct ScrArea;
20 
21 #ifdef WITH_XR_OPENXR
22 struct wmXrActionData;
23 #endif
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 /* wmKeyMap is in DNA_windowmanager.h, it's saveable */
30 
38 };
39 
40 typedef bool (*EventHandlerPoll)(const ARegion *region, const wmEvent *event);
41 
42 typedef struct wmEventHandler {
44 
46  char flag; /* WM_HANDLER_BLOCKING, ... */
47 
50 
53  void (*post_fn)(wmKeyMap *keymap, wmKeyMapItem *kmi, void *user_data);
54  void *user_data;
55 };
56 
60  void *user_data;
61 };
62 
64 typedef struct wmEventHandler_Keymap {
66 
69 
72 
75 
77 typedef struct wmEventHandler_Gizmo {
79 
83 
85 typedef struct wmEventHandler_UI {
87 
88  wmUIHandlerFunc handle_fn; /* callback receiving events */
89  wmUIHandlerRemoveFunc remove_fn; /* callback when handler is removed */
90  void *user_data; /* user data pointer */
91 
93  struct {
94  struct ScrArea *area;
95  struct ARegion *region;
96  struct ARegion *menu;
99 
101 typedef struct wmEventHandler_Op {
103 
106 
109 
111  struct {
112  /* To override the window, and hence the screen. Set for few cases only, usually window/screen
113  * can be taken from current context. */
114  struct wmWindow *win;
115 
116  struct ScrArea *area;
117  struct ARegion *region;
118  short region_type;
121 
123 typedef struct wmEventHandler_Dropbox {
125 
129 
130 /* wm_event_system.c */
131 
132 void wm_event_free_all(wmWindow *win);
133 void wm_event_free(wmEvent *event);
135 
142 
146 void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, void *customdata);
147 #ifdef WITH_XR_OPENXR
148 void wm_event_add_xrevent(wmWindow *win, struct wmXrActionData *actiondata, short val);
149 #endif
150 
151 void wm_event_do_depsgraph(bContext *C, bool is_after_open_file);
162 
164  wmWindow *win,
165  ARegion *region,
166  bool reactivate_button);
167 
168 /* wm_event_query.c */
169 
173 float wm_pressure_curve(float raw_pressure);
174 void wm_tablet_data_from_ghost(const struct GHOST_TabletData *tablet_data, wmTabletData *wmtab);
175 
176 /* wm_dropbox.c */
177 
178 void wm_dropbox_free(void);
184 void wm_drags_exit(wmWindowManager *wm, wmWindow *win);
185 void wm_drop_prepare(bContext *C, wmDrag *drag, wmDropBox *drop);
186 void wm_drop_end(bContext *C, wmDrag *drag, wmDropBox *drop);
190 void wm_drags_check_ops(bContext *C, const wmEvent *event);
200 void wm_drags_draw(bContext *C, wmWindow *win);
201 
202 #ifdef __cplusplus
203 }
204 #endif
_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
#define C
Definition: RandGen.cpp:25
void() wmEventHandler_KeymapDynamicFn(wmWindowManager *wm, struct wmWindow *win, struct wmEventHandler_Keymap *handler, struct wmEventHandler_KeymapResult *km_result)
Definition: WM_api.h:339
void(* wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata)
Definition: WM_api.h:379
int(* wmUIHandlerFunc)(struct bContext *C, const struct wmEvent *event, void *userdata)
Definition: WM_api.h:378
wmOperatorCallContext
Definition: WM_types.h:199
SyclQueue void void size_t num_bytes void
wmEventHandler head
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
wmEventHandler head
struct wmWindow * win
struct ScrArea * area
struct ARegion * region
struct wmEventHandler_Op::@1207 context
wmUIHandlerRemoveFunc remove_fn
struct wmEventHandler_UI::@1206 context
struct ARegion * menu
wmUIHandlerFunc handle_fn
struct ScrArea * area
struct ARegion * region
wmEventHandler head
struct wmEventHandler * prev
EventHandlerPoll poll
struct wmEventHandler * next
enum eWM_EventHandlerType type
float wm_pressure_curve(float raw_pressure)
void wm_drop_prepare(bContext *C, wmDrag *drag, wmDropBox *drop)
Definition: wm_dragdrop.cc:458
void wm_drop_end(bContext *C, wmDrag *drag, wmDropBox *drop)
struct wmEventHandler_Op wmEventHandler_Op
void wm_event_do_handlers(bContext *C)
void wm_dropbox_free(void)
Definition: wm_dragdrop.cc:121
eWM_EventHandlerType
@ WM_HANDLER_TYPE_UI
@ WM_HANDLER_TYPE_OP
@ WM_HANDLER_TYPE_KEYMAP
@ WM_HANDLER_TYPE_GIZMO
@ WM_HANDLER_TYPE_DROPBOX
void wm_event_do_refresh_wm_and_depsgraph(bContext *C)
void wm_event_do_depsgraph(bContext *C, bool is_after_open_file)
void wm_drags_draw(bContext *C, wmWindow *win)
Definition: wm_dragdrop.cc:966
void wm_event_free_all(wmWindow *win)
void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, void *customdata)
wmOperatorCallContext wm_drop_operator_context_get(const wmDropBox *drop)
void wm_drags_check_ops(bContext *C, const wmEvent *event)
Definition: wm_dragdrop.cc:481
struct wmEventHandler wmEventHandler
struct wmEventHandler_Dropbox wmEventHandler_Dropbox
struct wmEventHandler_UI wmEventHandler_UI
void wm_drags_exit(wmWindowManager *wm, wmWindow *win)
Definition: wm_dragdrop.cc:244
void wm_event_handler_ui_cancel_ex(bContext *C, wmWindow *win, ARegion *region, bool reactivate_button)
void wm_event_free(wmEvent *event)
bool(* EventHandlerPoll)(const ARegion *region, const wmEvent *event)
void wm_tablet_data_from_ghost(const struct GHOST_TabletData *tablet_data, wmTabletData *wmtab)
struct wmEventHandler_Keymap wmEventHandler_Keymap
void wm_event_free_handler(wmEventHandler *handler)
void wm_event_do_notifiers(bContext *C)
struct wmEventHandler_Gizmo wmEventHandler_Gizmo