Revision: 23316
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23316
Author:   blendix
Date:     2009-09-17 23:36:02 +0200 (Thu, 17 Sep 2009)

Log Message:
-----------
Keymaps now have a poll() function, rather than adding/removing
their handlers based on notifiers, which is simpler and more
reliable.

This fixes for example editmode or uv edit keymaps not working
when creating a new 3dview or image space.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/animation/anim_channels_edit.c
    trunk/blender/source/blender/editors/animation/anim_markers.c
    trunk/blender/source/blender/editors/animation/anim_ops.c
    trunk/blender/source/blender/editors/armature/armature_ops.c
    trunk/blender/source/blender/editors/curve/curve_ops.c
    trunk/blender/source/blender/editors/gpencil/gpencil_ops.c
    trunk/blender/source/blender/editors/include/ED_transform.h
    trunk/blender/source/blender/editors/interface/view2d_ops.c
    trunk/blender/source/blender/editors/mesh/mesh_ops.c
    trunk/blender/source/blender/editors/metaball/mball_ops.c
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/physics/ed_pointcache.c
    trunk/blender/source/blender/editors/physics/editparticle.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_action/action_ops.c
    trunk/blender/source/blender/editors/space_action/space_action.c
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c
    trunk/blender/source/blender/editors/space_console/space_console.c
    trunk/blender/source/blender/editors/space_file/space_file.c
    trunk/blender/source/blender/editors/space_graph/graph_ops.c
    trunk/blender/source/blender/editors/space_graph/space_graph.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_logic/space_logic.c
    trunk/blender/source/blender/editors/space_nla/nla_ops.c
    trunk/blender/source/blender/editors/space_nla/space_nla.c
    trunk/blender/source/blender/editors/space_node/node_ops.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/space_outliner/outliner_ops.c
    trunk/blender/source/blender/editors/space_outliner/space_outliner.c
    trunk/blender/source/blender/editors/space_script/script_ops.c
    trunk/blender/source/blender/editors/space_script/space_script.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
    trunk/blender/source/blender/editors/space_sound/space_sound.c
    trunk/blender/source/blender/editors/space_text/space_text.c
    trunk/blender/source/blender/editors/space_time/space_time.c
    trunk/blender/source/blender/editors/space_time/time_ops.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
    trunk/blender/source/blender/editors/transform/transform_ops.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c
    trunk/blender/source/blender/windowmanager/wm_event_system.h

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2009-09-17 
21:36:02 UTC (rev 23316)
@@ -4826,7 +4826,6 @@
                        rv3d->ri= NULL;
                        rv3d->sms= NULL;
                        rv3d->smooth_timer= NULL;
-                       rv3d->lastmode= 0;
                }
        }
        

Modified: trunk/blender/source/blender/editors/animation/anim_channels_edit.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_channels_edit.c 
2009-09-17 18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/animation/anim_channels_edit.c 
2009-09-17 21:36:02 UTC (rev 23316)
@@ -1572,7 +1572,7 @@
 
 void ED_keymap_animchannels(wmWindowManager *wm)
 {
-       ListBase *keymap = WM_keymap_listbase(wm, "Animation_Channels", 0, 0);
+       wmKeyMap *keymap = WM_keymap_find(wm, "Animation_Channels", 0, 0);
        
        /* selection */
                /* click-select */

Modified: trunk/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_markers.c       
2009-09-17 18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/animation/anim_markers.c       
2009-09-17 21:36:02 UTC (rev 23316)
@@ -992,7 +992,7 @@
 /* called in screen_ops.c:ED_keymap_screen() */
 void ED_marker_keymap(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Markers", 0, 0);
+       wmKeyMap *keymap= WM_keymap_find(wm, "Markers", 0, 0);
        
        WM_keymap_verify_item(keymap, "MARKER_OT_add", MKEY, KM_PRESS, 0, 0);
        WM_keymap_verify_item(keymap, "MARKER_OT_move", EVT_TWEAK_S, KM_ANY, 0, 
0);

Modified: trunk/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_ops.c   2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/animation/anim_ops.c   2009-09-17 
21:36:02 UTC (rev 23316)
@@ -406,7 +406,7 @@
 
 void ED_keymap_anim(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Animation", 0, 0);
+       wmKeyMap *keymap= WM_keymap_find(wm, "Animation", 0, 0);
        
        /* frame management */
                /* NOTE: 'ACTIONMOUSE' not 'LEFTMOUSE', as user may have 
swapped mouse-buttons */

Modified: trunk/blender/source/blender/editors/armature/armature_ops.c
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_ops.c        
2009-09-17 18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/armature/armature_ops.c        
2009-09-17 21:36:02 UTC (rev 23316)
@@ -202,11 +202,12 @@
 
 void ED_keymap_armature(wmWindowManager *wm)
 {
-       ListBase *keymap;
+       wmKeyMap *keymap;
        wmKeymapItem *kmi;
        
        /* Armature ------------------------ */
-       keymap= WM_keymap_listbase(wm, "Armature", 0, 0);
+       keymap= WM_keymap_find(wm, "Armature", 0, 0);
+       keymap->poll= ED_operator_editarmature;
        
        /* only set in editmode armature, by space_view3d listener */
 //     WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0);
@@ -280,7 +281,8 @@
 
        /* Pose ------------------------ */
        /* only set in posemode, by space_view3d listener */
-       keymap= WM_keymap_listbase(wm, "Pose", 0, 0);
+       keymap= WM_keymap_find(wm, "Pose", 0, 0);
+       keymap->poll= ED_operator_posemode;
        
        WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, 0, 0);
        kmi= WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, 
KM_SHIFT, 0);

Modified: trunk/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_ops.c      2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/curve/curve_ops.c      2009-09-17 
21:36:02 UTC (rev 23316)
@@ -163,8 +163,11 @@
 
 void ED_keymap_curve(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Font", 0, 0);
+       wmKeyMap *keymap;
        
+       keymap= WM_keymap_find(wm, "Font", 0, 0);
+       keymap->poll= ED_operator_editfont;
+       
        /* only set in editmode font, by space_view3d listener */
        RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, 
KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_BOLD);
        RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, 
KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_ITALIC);
@@ -212,7 +215,8 @@
        WM_keymap_add_item(keymap, "FONT_OT_text_insert", KM_TEXTINPUT, KM_ANY, 
KM_ANY, 0); // last!
 
        /* only set in editmode curve, by space_view3d listener */
-       keymap= WM_keymap_listbase(wm, "Curve", 0, 0);
+       keymap= WM_keymap_find(wm, "Curve", 0, 0);
+       keymap->poll= ED_operator_editsurfcurve;
        
        WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, 
KM_SHIFT, 0);
        WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, 
KM_PRESS, KM_CTRL, 0);

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_ops.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_ops.c  2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_ops.c  2009-09-17 
21:36:02 UTC (rev 23316)
@@ -47,7 +47,7 @@
 
 void ED_keymap_gpencil(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Grease Pencil", 0, 0);
+       wmKeyMap *keymap= WM_keymap_find(wm, "Grease Pencil", 0, 0);
        wmKeymapItem *kmi;
        
        /* Draw */

Modified: trunk/blender/source/blender/editors/include/ED_transform.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_transform.h 2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/include/ED_transform.h 2009-09-17 
21:36:02 UTC (rev 23316)
@@ -41,8 +41,9 @@
 struct uiLayout;
 struct EnumPropertyItem;
 struct wmOperatorType;
+struct wmKeyMap;
 
-void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase 
*keymap, int spaceid);
+void transform_keymap_for_space(struct wmWindowManager *wm, struct wmKeyMap 
*keymap, int spaceid);
 void transform_operatortypes(void);
 
 /* ******************** Macros & Prototypes *********************** */

Modified: trunk/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/view2d_ops.c 2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/interface/view2d_ops.c 2009-09-17 
21:36:02 UTC (rev 23316)
@@ -1409,7 +1409,7 @@
 
 void UI_view2d_keymap(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "View2D", 0, 0);
+       wmKeyMap *keymap= WM_keymap_find(wm, "View2D", 0, 0);
        
        /* pan/scroll */
        WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 
0);
@@ -1445,7 +1445,7 @@
        WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE, 
KM_PRESS, 0, 0);
 
        /* Alternative keymap for buttons listview */
-       keymap= WM_keymap_listbase(wm, "View2D Buttons List", 0, 0);
+       keymap= WM_keymap_find(wm, "View2D Buttons List", 0, 0);
        WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 
0);
        WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE, 
KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", WHEELUPMOUSE, 
KM_PRESS, 0, 0);

Modified: trunk/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_ops.c        2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/mesh/mesh_ops.c        2009-09-17 
21:36:02 UTC (rev 23316)
@@ -349,9 +349,12 @@
 /* note mesh keymap also for other space? */
 void ED_keymap_mesh(wmWindowManager *wm)
 {      
-       ListBase *keymap= WM_keymap_listbase(wm, "EditMesh", 0, 0);
+       wmKeyMap *keymap;
        wmKeymapItem *kmi;
        
+       keymap= WM_keymap_find(wm, "EditMesh", 0, 0);
+       keymap->poll= ED_operator_editmesh;
+       
        WM_keymap_add_item(keymap, "MESH_OT_loopcut", ACTIONMOUSE, KM_PRESS, 
KM_CTRL, RKEY);
 
        /* selecting */

Modified: trunk/blender/source/blender/editors/metaball/mball_ops.c
===================================================================
--- trunk/blender/source/blender/editors/metaball/mball_ops.c   2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/metaball/mball_ops.c   2009-09-17 
21:36:02 UTC (rev 23316)
@@ -34,6 +34,8 @@
 #include "DNA_listBase.h"
 #include "DNA_windowmanager_types.h"
 
+#include "ED_screen.h"
+
 #include "mball_intern.h"
 
 void ED_operatortypes_metaball(void)
@@ -51,7 +53,10 @@
 
 void ED_keymap_metaball(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Metaball", 0, 0);
+       wmKeyMap *keymap;
+       
+       keymap= WM_keymap_find(wm, "Metaball", 0, 0);
+       keymap->poll= ED_operator_editmball;
 
        WM_keymap_add_item(keymap, "OBJECT_OT_metaball_add", AKEY, KM_PRESS, 
KM_SHIFT, 0);
        

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c    2009-09-17 
18:40:37 UTC (rev 23315)
+++ trunk/blender/source/blender/editors/object/object_ops.c    2009-09-17 
21:36:02 UTC (rev 23316)
@@ -184,11 +184,19 @@
        }
 }
 
+static int object_mode_poll(bContext *C)
+{
+       Object *ob= CTX_data_active_object(C);
+       return (!ob || ob->mode == OB_MODE_OBJECT);
+}
+
 void ED_keymap_object(wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Object Non-modal", 0, 0);
+       wmKeyMap *keymap;
        wmKeymapItem *kmi;
        
+       keymap= WM_keymap_find(wm, "Object Non-modal", 0, 0);
+       
        /* Note: this keymap works disregarding mode */
        WM_keymap_add_item(keymap, "OBJECT_OT_editmode_toggle", TABKEY, 
KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "OBJECT_OT_posemode_toggle", TABKEY, 
KM_PRESS, KM_CTRL, 0);
@@ -203,7 +211,8 @@
        WM_keymap_add_item(keymap, "OBJECT_OT_center_set", CKEY, KM_PRESS, 
KM_ALT|KM_SHIFT|KM_CTRL, 0);
 
        /* Note: this keymap gets disabled in non-objectmode,  */
-       keymap= WM_keymap_listbase(wm, "Object Mode", 0, 0);
+       keymap= WM_keymap_find(wm, "Object Mode", 0, 0);
+       keymap->poll= object_mode_poll;
        
        WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, 
KM_PRESS, 0, 0);

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to