[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49210] trunk/blender/source/blender: add mask keymap to image window.

Campbell Barton ideasman42 at gmail.com
Wed Jul 25 16:46:39 CEST 2012


Revision: 49210
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49210
Author:   campbellbarton
Date:     2012-07-25 14:46:38 +0000 (Wed, 25 Jul 2012)
Log Message:
-----------
add mask keymap to image window.

debug prints for events when --debug-events is used to help track down why a key is/isnt used.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mask/mask_edit.c
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/mask/mask_edit.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_edit.c	2012-07-25 14:29:14 UTC (rev 49209)
+++ trunk/blender/source/blender/editors/mask/mask_edit.c	2012-07-25 14:46:38 UTC (rev 49210)
@@ -80,7 +80,7 @@
 			case SPACE_SEQ:
 				return ED_space_sequencer_maskedit_mask_poll(C);
 			case SPACE_IMAGE:
-				return ED_space_sequencer_maskedit_mask_poll(C);
+				return ED_space_image_maskedit_mask_poll(C);
 		}
 	}
 	return FALSE;

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-07-25 14:29:14 UTC (rev 49209)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-07-25 14:46:38 UTC (rev 49210)
@@ -1065,6 +1065,7 @@
 
 	UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
 
+	/* mask polls mode */
 	keymap = WM_keymap_find(wm->defaultconf, "Mask Editing", 0, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
 

Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c	2012-07-25 14:29:14 UTC (rev 49209)
+++ trunk/blender/source/blender/editors/space_image/space_image.c	2012-07-25 14:46:38 UTC (rev 49210)
@@ -557,6 +557,10 @@
 	// image space manages own v2d
 	// UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
 
+	/* mask polls mode */
+	keymap = WM_keymap_find(wm->defaultconf, "Mask Editing", 0, 0);
+	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
 	/* image paint polls for mode */
 	keymap = WM_keymap_find(wm->defaultconf, "Image Paint", 0, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-07-25 14:29:14 UTC (rev 49209)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2012-07-25 14:46:38 UTC (rev 49210)
@@ -1664,22 +1664,35 @@
 
 static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
 {
+#ifndef NDEBUG
+	const int do_debug_handler = (G.debug & G_DEBUG_EVENTS);
+#endif
 	wmWindowManager *wm = CTX_wm_manager(C);
 	wmEventHandler *handler, *nexthandler;
 	int action = WM_HANDLER_CONTINUE;
 	int always_pass;
 
-	if (handlers == NULL) return action;
+	if (handlers == NULL) {
+		return action;
+	}
 
+#ifndef NDEBUG
+	if (do_debug_handler) {
+		printf("%s: handling event\n", __func__);
+		WM_event_print(event);
+	}
+#endif
+
 	/* modal handlers can get removed in this loop, we keep the loop this way */
 	for (handler = handlers->first; handler; handler = nexthandler) {
 		
 		nexthandler = handler->next;
 		
 		/* during this loop, ui handlers for nested menus can tag multiple handlers free */
-		if (handler->flag & WM_HANDLER_DO_FREE) ;
-		/* optional boundbox */
-		else if (handler_boundbox_test(handler, event)) {
+		if (handler->flag & WM_HANDLER_DO_FREE) {
+			/* pass */
+		}
+		else if (handler_boundbox_test(handler, event)) { /* optional boundbox */
 			/* in advance to avoid access to freed event on window close */
 			always_pass = wm_event_always_pass(event);
 		
@@ -1690,20 +1703,60 @@
 			if (handler->keymap) {
 				wmKeyMap *keymap = WM_keymap_active(wm, handler->keymap);
 				wmKeyMapItem *kmi;
-				
+
+#ifndef NDEBUG
+				if (do_debug_handler) {
+					printf("%s:   checking '%s' ...", __func__, keymap->idname);
+				}
+#endif
+
 				if (!keymap->poll || keymap->poll(C)) {
+
+#ifndef NDEBUG
+					if (do_debug_handler) {
+						printf("pass\n");
+					}
+#endif
+
 					for (kmi = keymap->items.first; kmi; kmi = kmi->next) {
 						if (wm_eventmatch(event, kmi)) {
 
+#ifndef NDEBUG
+							if (do_debug_handler) {
+								printf("%s:     item matched '%s'\n", __func__, kmi->idname);
+							}
+#endif
+
 							/* weak, but allows interactive callback to not use rawkey */
 							event->keymap_idname = kmi->idname;
 
 							action |= wm_handler_operator_call(C, handlers, handler, event, kmi->ptr);
-							if (action & WM_HANDLER_BREAK)  /* not always_pass here, it denotes removed handler */
+							if (action & WM_HANDLER_BREAK) {
+								/* not always_pass here, it denotes removed handler */
+#ifndef NDEBUG
+								if (do_debug_handler) {
+									printf("%s:       handled! '%s'...", __func__, kmi->idname);
+								}
+#endif
 								break;
+							}
+							else {
+#ifndef NDEBUG
+								if (do_debug_handler) {
+									printf("%s:       un-handled '%s'...", __func__, kmi->idname);
+								}
+#endif
+							}
 						}
 					}
 				}
+				else {
+#ifndef NDEBUG
+					if (do_debug_handler) {
+						printf("fail\n");
+					}
+#endif
+				}
 			}
 			else if (handler->ui_handle) {
 				action |= wm_handler_ui_call(C, handler, event, always_pass);




More information about the Bf-blender-cvs mailing list