[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23316] trunk/blender/source/blender: Keymaps now have a poll() function, rather than adding/removing
Brecht Van Lommel
brecht at blender.org
Thu Sep 17 23:36:02 CEST 2009
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. @@
More information about the Bf-blender-cvs
mailing list