[Bf-blender-cvs] [a97607dcfa2] master: Cleanup: use typed enum for the handler flag in wm_event_system
Campbell Barton
noreply at git.blender.org
Sun Feb 5 11:52:46 CET 2023
Commit: a97607dcfa25149c70972ad868fbc1eee9f88b9a
Author: Campbell Barton
Date: Sun Feb 5 21:21:04 2023 +1100
Branches: master
https://developer.blender.org/rBa97607dcfa25149c70972ad868fbc1eee9f88b9a
Cleanup: use typed enum for the handler flag in wm_event_system
===================================================================
M source/blender/windowmanager/intern/wm_event_system.cc
===================================================================
diff --git a/source/blender/windowmanager/intern/wm_event_system.cc b/source/blender/windowmanager/intern/wm_event_system.cc
index 590b0c72b79..406ca7f16d4 100644
--- a/source/blender/windowmanager/intern/wm_event_system.cc
+++ b/source/blender/windowmanager/intern/wm_event_system.cc
@@ -99,13 +99,15 @@
/**
* Return value of handler-operator call.
*/
-enum {
- WM_HANDLER_CONTINUE = 0,
+using eHandlerActionFlag = enum eHandlerActionFlag {
WM_HANDLER_BREAK = 1 << 0,
WM_HANDLER_HANDLED = 1 << 1,
/** `WM_HANDLER_MODAL | WM_HANDLER_BREAK` means unhandled. */
WM_HANDLER_MODAL = 1 << 2,
};
+ENUM_OPERATORS(eHandlerActionFlag, WM_HANDLER_MODAL);
+/** Comparison, for readability. */
+#define WM_HANDLER_CONTINUE ((eHandlerActionFlag)0)
static void wm_notifier_clear(wmNotifier *note);
static bool wm_notifier_is_clear(const wmNotifier *note);
@@ -740,7 +742,7 @@ static bool wm_event_always_pass(const wmEvent *event)
*/
BLI_INLINE void wm_event_handler_return_value_check(const bContext *C,
const wmEvent *event,
- const int action)
+ const eHandlerActionFlag action)
{
#ifndef NDEBUG
if (C == nullptr || CTX_wm_window(C)) {
@@ -757,10 +759,10 @@ BLI_INLINE void wm_event_handler_return_value_check(const bContext *C,
/** \name UI Handling
* \{ */
-static int wm_handler_ui_call(bContext *C,
- wmEventHandler_UI *handler,
- const wmEvent *event,
- int always_pass)
+static eHandlerActionFlag wm_handler_ui_call(bContext *C,
+ wmEventHandler_UI *handler,
+ const wmEvent *event,
+ int always_pass)
{
ScrArea *area = CTX_wm_area(C);
ARegion *region = CTX_wm_region(C);
@@ -789,7 +791,7 @@ static int wm_handler_ui_call(bContext *C,
/* Don't block file-select events. Those are triggered by a separate file browser window.
* See T75292. */
if (event->type == EVT_FILESELECT) {
- return WM_UI_HANDLER_CONTINUE;
+ return WM_HANDLER_CONTINUE;
}
/* We set context to where UI handler came from. */
@@ -2405,12 +2407,12 @@ static void wm_event_modalkeymap_end(wmEvent *event, const wmEvent_ModalMapStore
/**
* \warning this function removes a modal handler, when finished.
*/
-static int wm_handler_operator_call(bContext *C,
- ListBase *handlers,
- wmEventHandler *handler_base,
- wmEvent *event,
- PointerRNA *properties,
- const char *kmi_idname)
+static eHandlerActionFlag wm_handler_operator_call(bContext *C,
+ ListBase *handlers,
+ wmEventHandler *handler_base,
+ wmEvent *event,
+ PointerRNA *properties,
+ const char *kmi_idname)
{
int retval = OPERATOR_PASS_THROUGH;
@@ -2616,13 +2618,13 @@ static void wm_operator_free_for_fileselect(wmOperator *file_operator)
* File-select handlers are only in the window queue,
* so it's safe to switch screens or area types.
*/
-static int wm_handler_fileselect_do(bContext *C,
- ListBase *handlers,
- wmEventHandler_Op *handler,
- int val)
+static eHandlerActionFlag wm_handler_fileselect_do(bContext *C,
+ ListBase *handlers,
+ wmEventHandler_Op *handler,
+ int val)
{
wmWindowManager *wm = CTX_wm_manager(C);
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
switch (val) {
case EVT_FILESELECT_FULL_OPEN: {
@@ -2841,12 +2843,12 @@ static int wm_handler_fileselect_do(bContext *C,
return action;
}
-static int wm_handler_fileselect_call(bContext *C,
- ListBase *handlers,
- wmEventHandler_Op *handler,
- const wmEvent *event)
+static eHandlerActionFlag wm_handler_fileselect_call(bContext *C,
+ ListBase *handlers,
+ wmEventHandler_Op *handler,
+ const wmEvent *event)
{
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
if (event->type != EVT_FILESELECT) {
return action;
@@ -2858,12 +2860,12 @@ static int wm_handler_fileselect_call(bContext *C,
return wm_handler_fileselect_do(C, handlers, handler, event->val);
}
-static bool wm_action_not_handled(int action)
+static bool wm_action_not_handled(const eHandlerActionFlag action)
{
return action == WM_HANDLER_CONTINUE || action == (WM_HANDLER_BREAK | WM_HANDLER_MODAL);
}
-static const char *keymap_handler_log_action_str(const int action)
+static const char *keymap_handler_log_action_str(const eHandlerActionFlag action)
{
if (action & WM_HANDLER_BREAK) {
return "handled";
@@ -2912,7 +2914,7 @@ static const char *keymap_handler_log_kmi_op_str(bContext *C,
if (do_debug_handler) \
printf
-static int wm_handlers_do_keymap_with_keymap_handler(
+static eHandlerActionFlag wm_handlers_do_keymap_with_keymap_handler(
/* From 'wm_handlers_do_intern'. */
bContext *C,
wmEvent *event,
@@ -2922,7 +2924,7 @@ static int wm_handlers_do_keymap_with_keymap_handler(
wmKeyMap *keymap,
const bool do_debug_handler)
{
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
if (keymap == nullptr) {
/* Only callback is allowed to have nullptr key-maps. */
@@ -2970,7 +2972,7 @@ static int wm_handlers_do_keymap_with_keymap_handler(
return action;
}
-static int wm_handlers_do_keymap_with_gizmo_handler(
+static eHandlerActionFlag wm_handlers_do_keymap_with_gizmo_handler(
/* From 'wm_handlers_do_intern' */
bContext *C,
wmEvent *event,
@@ -2982,7 +2984,7 @@ static int wm_handlers_do_keymap_with_gizmo_handler(
const bool do_debug_handler,
bool *r_keymap_poll)
{
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
bool keymap_poll = false;
PRINT("%s: checking '%s' ...", __func__, keymap->idname);
@@ -3030,12 +3032,12 @@ static int wm_handlers_do_keymap_with_gizmo_handler(
return action;
}
-static int wm_handlers_do_gizmo_handler(bContext *C,
- wmWindowManager *wm,
- wmEventHandler_Gizmo *handler,
- wmEvent *event,
- ListBase *handlers,
- const bool do_debug_handler)
+static eHandlerActionFlag wm_handlers_do_gizmo_handler(bContext *C,
+ wmWindowManager *wm,
+ wmEventHandler_Gizmo *handler,
+ wmEvent *event,
+ ListBase *handlers,
+ const bool do_debug_handler)
{
/* Drag events use the previous click location to highlight the gizmos,
* Get the highlight again in case the user dragged off the gizmo. */
@@ -3046,7 +3048,7 @@ static int wm_handlers_do_gizmo_handler(bContext *C,
* was initiated over a gizmo. */
const bool restore_highlight_unless_activated = is_event_drag;
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
ScrArea *area = CTX_wm_area(C);
ARegion *region = CTX_wm_region(C);
wmGizmoMap *gzmap = handler->gizmo_map;
@@ -3217,7 +3219,10 @@ static int wm_handlers_do_gizmo_handler(bContext *C,
/** \name Handle Single Event (All Handler Types)
* \{ */
-static int wm_handlers_do_intern(bContext *C, wmWindow *win, wmEvent *event, ListBase *handlers)
+static eHandlerActionFlag wm_handlers_do_intern(bContext *C,
+ wmWindow *win,
+ wmEvent *event,
+ ListBase *handlers)
{
const bool do_debug_handler =
(G.debug & G_DEBUG_HANDLERS) &&
@@ -3225,7 +3230,7 @@ static int wm_handlers_do_intern(bContext *C, wmWindow *win, wmEvent *event, Lis
!ISMOUSE_MOTION(event->type);
wmWindowManager *wm = CTX_wm_manager(C);
- int action = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action = WM_HANDLER_CONTINUE;
if (handlers == nullptr) {
wm_event_handler_return_value_check(C, event, action);
@@ -3262,7 +3267,7 @@ static int wm_handlers_do_intern(bContext *C, wmWindow *win, wmEvent *event, Lis
wmEventHandler_Keymap *handler = (wmEventHandler_Keymap *)handler_base;
wmEventHandler_KeymapResult km_result;
WM_event_get_keymaps_from_handler(wm, win, handler, &km_result);
- int action_iter = WM_HANDLER_CONTINUE;
+ eHandlerActionFlag action_iter = WM_HANDLER_CONTINUE;
for (int km_index = 0; km_index < km_result.keymaps_len; km_index++) {
wmKeyMap *keymap = km_result.keymaps[km_index];
action_iter |= wm_handlers_do_keymap_with_keymap_handler(
@@ -3401,9 +3406,9 @@ static int wm_handlers_do_intern(bContext *C, wmWindow *win, wmEvent *event, Lis
#undef PRINT
/* This calls handlers twice - to solve (double-)click events. */
-static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
+static eHandlerActionFlag wm_handlers_do(bContext *C, wmEven
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list