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