[Bf-blender-cvs] [e53676a5c7f] master: Cleanup: use iterator macros for event handlers

Campbell Barton noreply at git.blender.org
Tue Feb 19 23:39:27 CET 2019


Commit: e53676a5c7f1b58628afe37b648caa43f5c7a907
Author: Campbell Barton
Date:   Wed Feb 20 09:19:07 2019 +1100
Branches: master
https://developer.blender.org/rBe53676a5c7f1b58628afe37b648caa43f5c7a907

Cleanup: use iterator macros for event handlers

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

M	source/blender/windowmanager/intern/wm.c
M	source/blender/windowmanager/intern/wm_dragdrop.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_files.c
M	source/blender/windowmanager/intern/wm_keymap.c

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

diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index 72b906ce853..ac65bf6a888 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -198,7 +198,7 @@ void WM_operator_handlers_clear(wmWindowManager *wm, wmOperatorType *ot)
 	for (win = wm->windows.first; win; win = win->next) {
 		ListBase *lb[2] = {&win->handlers, &win->modalhandlers};
 		for (int i = 0; i < ARRAY_SIZE(lb); i++) {
-			for (wmEventHandler *handler_base = lb[i]->first; handler_base; handler_base = handler_base->next) {
+			LISTBASE_FOREACH (wmEventHandler *, handler_base, lb[i]) {
 				if (handler_base->type == WM_HANDLER_TYPE_OP) {
 					wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 					if (handler->op && handler->op->type == ot) {
diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c
index 7a066ef4282..fcfc9c8b0ae 100644
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@ -194,7 +194,7 @@ void WM_drag_free_list(struct ListBase *lb)
 
 static const char *dropbox_active(bContext *C, ListBase *handlers, wmDrag *drag, const wmEvent *event)
 {
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_DROPBOX) {
 			wmEventHandler_Dropbox *handler = (wmEventHandler_Dropbox *)handler_base;
 			if (handler->dropboxes) {
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 53c4d4fa5e6..b439d41d063 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -614,11 +614,7 @@ static void wm_handler_ui_cancel(bContext *C)
 	if (!ar)
 		return;
 
-	for (wmEventHandler *handler_base = ar->handlers.first, *handler_base_next;
-	     handler_base;
-	     handler_base = handler_base_next)
-	{
-		handler_base_next = handler_base->next;
+	LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, &ar->handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_UI) {
 			wmEventHandler_UI *handler = (wmEventHandler_UI *)handler_base;
 			BLI_assert(handler->handle_fn != NULL);
@@ -3246,11 +3242,7 @@ void WM_event_add_fileselect(bContext *C, wmOperator *op)
 	UI_popup_handlers_remove_all(C, &win->modalhandlers);
 
 	/* only allow 1 file selector open per window */
-	for (wmEventHandler *handler_base = win->modalhandlers.first, *handler_base_next;
-	     handler_base;
-	     handler_base = handler_base_next)
-	{
-		handler_base_next = handler_base->next;
+	LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, &win->modalhandlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_OP) {
 			wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 			if (handler->is_fileselect == false) {
@@ -3343,7 +3335,7 @@ wmEventHandler_Op *WM_event_add_modal_handler(bContext *C, wmOperator *op)
  */
 void WM_event_modal_handler_area_replace(wmWindow *win, const ScrArea *old_area, ScrArea *new_area)
 {
-	for (wmEventHandler *handler_base = win->modalhandlers.first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_OP) {
 			wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 			/* fileselect handler is quite special... it needs to keep old area stored in handler, so don't change it */
@@ -3360,7 +3352,7 @@ void WM_event_modal_handler_area_replace(wmWindow *win, const ScrArea *old_area,
  */
 void WM_event_modal_handler_region_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
 {
-	for (wmEventHandler *handler_base = win->modalhandlers.first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_OP) {
 			wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 			if (handler->context.region == old_region) {
@@ -3379,7 +3371,7 @@ wmEventHandler_Keymap *WM_event_add_keymap_handler(ListBase *handlers, wmKeyMap
 	}
 
 	/* only allow same keymap once */
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_KEYMAP) {
 			wmEventHandler_Keymap *handler = (wmEventHandler_Keymap *)handler_base;
 			if (handler->keymap == keymap) {
@@ -3423,7 +3415,7 @@ wmEventHandler_Keymap *WM_event_add_keymap_handler_bb(ListBase *handlers, wmKeyM
 
 void WM_event_remove_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
 {
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_KEYMAP) {
 			wmEventHandler_Keymap *handler = (wmEventHandler_Keymap *)handler_base;
 			if (handler->keymap == keymap) {
@@ -3479,9 +3471,7 @@ void WM_event_remove_ui_handler(
         wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn,
         void *user_data, const bool postpone)
 {
-	wmEventHandler *handler_base;
-
-	for (handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_UI) {
 			wmEventHandler_UI *handler = (wmEventHandler_UI *)handler_base;
 			if ((handler->handle_fn == handle_fn) &&
@@ -3506,11 +3496,7 @@ void WM_event_free_ui_handler_all(
         bContext *C, ListBase *handlers,
         wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn)
 {
-	for (wmEventHandler *handler_base = handlers->first, *handler_base_next;
-	     handler_base;
-	     handler_base = handler_base_next)
-	{
-		handler_base_next = handler_base->next;
+	LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_UI) {
 			wmEventHandler_UI *handler = (wmEventHandler_UI *)handler_base;
 			if ((handler->handle_fn == handle_fn) &&
@@ -3527,7 +3513,7 @@ void WM_event_free_ui_handler_all(
 wmEventHandler_Dropbox *WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes)
 {
 	/* only allow same dropbox once */
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_DROPBOX) {
 			wmEventHandler_Dropbox *handler = (wmEventHandler_Dropbox *)handler_base;
 			if (handler->dropboxes == dropboxes) {
@@ -3549,12 +3535,7 @@ wmEventHandler_Dropbox *WM_event_add_dropbox_handler(ListBase *handlers, ListBas
 /* XXX solution works, still better check the real cause (ton) */
 void WM_event_remove_area_handler(ListBase *handlers, void *area)
 {
-
-	for (wmEventHandler *handler_base = handlers->first, *handler_base_next;
-	     handler_base;
-	     handler_base = handler_base_next)
-	{
-		handler_base_next = handler_base->next;
+	LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_UI) {
 			wmEventHandler_UI *handler = (wmEventHandler_UI *)handler_base;
 			if (handler->context.area == area) {
@@ -4489,7 +4470,7 @@ static wmKeyMapItem *wm_kmi_from_event(
         bContext *C, wmWindowManager *wm,
         ListBase *handlers, const wmEvent *event)
 {
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		/* during this loop, ui handlers for nested menus can tag multiple handlers free */
 		if (handler_base->flag & WM_HANDLER_DO_FREE) {
 			/* pass */
@@ -4760,7 +4741,7 @@ bool WM_window_modal_keymap_status_draw(
 {
 	wmKeyMap *keymap = NULL;
 	wmOperator *op = NULL;
-	for (wmEventHandler *handler_base = win->modalhandlers.first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_OP) {
 			wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 			if (handler->op != NULL) {
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 670c6604dd0..927a0411c3b 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -1399,7 +1399,7 @@ void wm_autosave_timer(const bContext *C, wmWindowManager *wm, wmTimer *UNUSED(w
 
 	/* if a modal operator is running, don't autosave, but try again in 10 seconds */
 	for (wmWindow *win = wm->windows.first; win; win = win->next) {
-		for (wmEventHandler *handler_base = win->modalhandlers.first; handler_base; handler_base = handler_base->next) {
+		LISTBASE_FOREACH (wmEventHandler *, handler_base, &win->modalhandlers) {
 			if (handler_base->type == WM_HANDLER_TYPE_OP) {
 				wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
 				if (handler->op) {
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index c170f0589c0..c522378ae32 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -1229,7 +1229,7 @@ static wmKeyMapItem *wm_keymap_item_find_handlers(
 	wmKeyMap *keymap;
 
 	/* find keymap item in handlers */
-	for (wmEventHandler *handler_base = handlers->first; handler_base; handler_base = handler_base->next) {
+	LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers) {
 		if (handler_base->type == WM_HANDLER_TYPE_KEYMAP) {
 			wmEventHandler_Keymap *handler = (wmEventHandler_Keymap *)handler_base;
 			keymap = WM_keymap_active(wm, handler->keymap);



More information about the Bf-blender-cvs mailing list