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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to