[Bf-blender-cvs] [0767b63f1b8] master: WM: move wmEventHandler.type to a boolean

Campbell Barton noreply at git.blender.org
Tue Feb 19 06:26:14 CET 2019


Commit: 0767b63f1b81c664a18603f056d3952357d84484
Author: Campbell Barton
Date:   Tue Feb 19 12:33:01 2019 +1100
Branches: master
https://developer.blender.org/rB0767b63f1b81c664a18603f056d3952357d84484

WM: move wmEventHandler.type to a boolean

Currently it's effectively a boolean for file-select handlers.

Prepare for refactoring event handlers into their own types (keymap,
operator, gizmo, ui & dropbox) to help make logic easier to follow.

===================================================================

M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/wm_event_system.h

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 54f6e040c4a..a307cd5d0f0 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2393,7 +2393,7 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers
 					action |= wm_handler_ui_call(C, handler, event, always_pass);
 				}
 			}
-			else if (handler->type == WM_HANDLER_FILESELECT) {
+			else if (handler->op_is_fileselect) {
 				if (!wm->is_interface_locked) {
 					/* screen context changes here */
 					action |= wm_handler_fileselect_call(C, handlers, handler, event);
@@ -3220,7 +3220,7 @@ void WM_event_add_fileselect(bContext *C, wmOperator *op)
 	for (handler = win->modalhandlers.first; handler; handler = handlernext) {
 		handlernext = handler->next;
 
-		if (handler->type == WM_HANDLER_FILESELECT) {
+		if (handler->op_is_fileselect) {
 			bScreen *screen = CTX_wm_screen(C);
 			bool cancel_handler = true;
 
@@ -3247,7 +3247,7 @@ void WM_event_add_fileselect(bContext *C, wmOperator *op)
 
 	handler = MEM_callocN(sizeof(wmEventHandler), "fileselect handler");
 
-	handler->type = WM_HANDLER_FILESELECT;
+	handler->op_is_fileselect = true;
 	handler->op = op;
 	handler->op_area = CTX_wm_area(C);
 	handler->op_region = CTX_wm_region(C);
@@ -3307,7 +3307,7 @@ void WM_event_modal_handler_area_replace(wmWindow *win, const ScrArea *old_area,
 {
 	for (wmEventHandler *handler = win->modalhandlers.first; handler; handler = handler->next) {
 		/* fileselect handler is quite special... it needs to keep old area stored in handler, so don't change it */
-		if ((handler->op_area == old_area) && (handler->type != WM_HANDLER_FILESELECT)) {
+		if ((handler->op_area == old_area) && (handler->op_is_fileselect == false)) {
 			handler->op_area = new_area;
 		}
 	}
@@ -3492,7 +3492,7 @@ void WM_event_remove_area_handler(ListBase *handlers, void *area)
 
 	for (handler = handlers->first; handler; handler = nexthandler) {
 		nexthandler = handler->next;
-		if (handler->type != WM_HANDLER_FILESELECT) {
+		if (handler->op_is_fileselect == false) {
 			if (handler->ui_area == area) {
 				BLI_remlink(handlers, handler);
 				wm_event_free_handler(handler);
diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h
index d5942ba8682..8b245d05612 100644
--- a/source/blender/windowmanager/wm_event_system.h
+++ b/source/blender/windowmanager/wm_event_system.h
@@ -43,7 +43,6 @@ struct wmEventHandler_KeymapFn {
 typedef struct wmEventHandler {
 	struct wmEventHandler *next, *prev;
 
-	char type;                          /* WM_HANDLER_DEFAULT, ... */
 	char flag;                          /* WM_HANDLER_BLOCKING, ... */
 
 	/* keymap handler */
@@ -55,6 +54,7 @@ typedef struct wmEventHandler {
 	struct bToolRef *keymap_tool;
 
 	/* modal operator handler */
+	bool op_is_fileselect;
 	wmOperator *op;                     /* for derived/modal handlers */
 	struct ScrArea *op_area;            /* for derived/modal handlers */
 	struct ARegion *op_region;          /* for derived/modal handlers */
@@ -77,7 +77,6 @@ typedef struct wmEventHandler {
 /* custom types for handlers, for signaling, freeing */
 enum {
 	WM_HANDLER_DEFAULT,
-	WM_HANDLER_FILESELECT,
 };
 
 /* wm_event_system.c */



More information about the Bf-blender-cvs mailing list