[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