Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2008-12-08 18:02:57 +0300
committerTon Roosendaal <ton@blender.org>2008-12-08 18:02:57 +0300
commit02e23c16dd9e403deb1694829c11d16dc47392ee (patch)
treef5ec9e3f68bad13137bdeafa326281c74387327e /source/blender/editors
parent11e15bf68979670b2257814aa296886222b3ee40 (diff)
2.5
Part one of wrapping up area/region management. Read design doc here: http://wiki.blender.org/index.php/BlenderDev/Blender2.5/AreaManager This commit: - brings keymap storage to WM, based on names/types. This structure allows rna-ifying it too, so you can browse keymaps etc. - creating areas and regions works slightly different now, wich regiontypes stored in areatype. Todo: - better callbacks and structure for defining which handlers need to be added. - using region types to validate regions - proper implementation of local region data - code method for customizing keymaps. Current idea is that you have to indicate an entire keymap to be custom, to prevent too complicated merging problems of default and custom maps (like order, multiple keys for same operator, disabling options, etc).
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/ED_screen.h3
-rw-r--r--source/blender/editors/interface/interface_ops.c4
-rw-r--r--source/blender/editors/interface/interface_regions.c9
-rw-r--r--source/blender/editors/interface/view2d_ops.c24
-rw-r--r--source/blender/editors/screen/screen_ops.c16
-rw-r--r--source/blender/editors/screen/spacetypes.c20
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c80
-rw-r--r--source/blender/editors/space_time/space_time.c101
-rw-r--r--source/blender/editors/space_time/time_ops.c26
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c20
10 files changed, 175 insertions, 128 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 2514c4c90fd..2c86b5076b0 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -36,6 +36,8 @@
struct wmWindowManager;
struct wmWindow;
struct wmNotifier;
+struct SpaceType;
+struct AreagionType;
/* regions */
void ED_region_initialize(struct wmWindowManager *wm, struct wmWindow *win, struct ARegion *ar);
@@ -48,6 +50,7 @@ void ED_region_pixelspace(const struct bContext *C, ARegion *ar);
/* spaces */
void ED_spacetypes_init(void);
void ED_spacetypes_keymap(struct wmWindowManager *wm);
+struct ARegionType *ED_regiontype_from_id(struct SpaceType *st, int regionid);
/* areas */
void ED_area_initialize(struct wmWindowManager *wm, struct wmWindow *win, struct ScrArea *sa);
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 32bebab2180..a256a207e70 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -3511,8 +3511,8 @@ void ui_operatortypes(void)
void UI_keymap(wmWindowManager *wm)
{
- ui_operatortypes();
+ ListBase *keymap= WM_keymap_listbase(wm, "Interface", 0, 0);
- WM_keymap_add_item(&wm->uikeymap, "ED_UI_OT_button_activate", MOUSEMOVE, 0, 0, 0);
+ WM_keymap_add_item(keymap, "ED_UI_OT_button_activate", MOUSEMOVE, 0, 0, 0);
}
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index f7029700f9c..fec3038ca88 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -277,7 +277,7 @@ static void ui_tooltip_region_free(ARegion *ar)
ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
{
- static ARegionType type={NULL, NULL, NULL, NULL, NULL};
+ static ARegionType type;
ARegion *ar;
uiTooltipData *data;
int x1, x2, y1, y2, winx, winy;
@@ -288,6 +288,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
/* create area region */
ar= ui_add_temporary_region(C->window->screen);
+ memset(&type, 0, sizeof(ARegionType));
type.draw= ui_tooltip_region_draw;
type.free= ui_tooltip_region_free;
ar->type= &type;
@@ -596,7 +597,8 @@ static void ui_block_region_free(ARegion *ar)
uiMenuBlockHandle *ui_menu_block_create(bContext *C, ARegion *butregion, uiBut *but, uiBlockFuncFP block_func, void *arg)
{
- static ARegionType type={NULL, NULL, NULL, NULL, NULL};
+ static ARegionType type;
+ ListBase *keymap= WM_keymap_listbase(C->wm, "Interface", 0, 0);
ARegion *ar;
uiBlock *block;
uiBut *bt;
@@ -609,11 +611,12 @@ uiMenuBlockHandle *ui_menu_block_create(bContext *C, ARegion *butregion, uiBut *
/* create area region */
ar= ui_add_temporary_region(C->window->screen);
+ memset(&type, 0, sizeof(ARegionType));
type.draw= ui_block_region_draw;
type.free= ui_block_region_free;
ar->type= &type;
- WM_event_add_keymap_handler(&ar->handlers, &C->wm->uikeymap);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
handle->region= ar;
ar->regiondata= handle;
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index d784b1c7743..57264bb1342 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -1160,27 +1160,27 @@ void ui_view2d_operatortypes(void)
void UI_view2d_keymap(wmWindowManager *wm)
{
- ui_view2d_operatortypes();
+ ListBase *keymap= WM_keymap_listbase(wm, "View2D", 0, 0);
/* pan/scroll */
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_ANY, KM_CTRL, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_ANY, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_ANY, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_ANY, KM_CTRL, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_ANY, KM_SHIFT, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_ANY, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_ANY, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_ANY, KM_SHIFT, 0);
/* zoom - single step */
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_ANY, 0, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_ANY, 0, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", PADMINUS, KM_PRESS, 0, 0);
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", PADPLUSKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_ANY, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_ANY, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_zoomout", PADMINUS, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_zoomin", PADPLUSKEY, KM_PRESS, 0, 0);
/* zoom - drag */
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0);
/* scrollers */
- WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_scroller_activate", LEFTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ED_View2D_OT_scroller_activate", LEFTMOUSE, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index da26b3dc297..e78beec3488 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -1327,14 +1327,16 @@ void ED_operatortypes_screen(void)
/* called in spacetypes.c */
void ED_keymap_screen(wmWindowManager *wm)
{
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_cursor_type", MOUSEMOVE, 0, 0, 0);
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0);
+ ListBase *keymap= WM_keymap_listbase(wm, "Screen", 0, 0);
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_area_split", EVT_ACTIONZONE, 0, 0, 0); /* action tria */
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_area_join", EVT_ACTIONZONE, 0, 0, 0); /* action tria */
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_area_rip", RKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_cursor_type", MOUSEMOVE, 0, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0);
+
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_area_split", EVT_ACTIONZONE, 0, 0, 0); /* action tria */
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_area_join", EVT_ACTIONZONE, 0, 0, 0); /* action tria */
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_area_rip", RKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_verify_item(&wm->screenkeymap, "ED_SCR_OT_repeat_last", F4KEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_SCR_OT_repeat_last", F4KEY, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/screen/spacetypes.c b/source/blender/editors/screen/spacetypes.c
index a74b3a20e4e..bafb8aef94f 100644
--- a/source/blender/editors/screen/spacetypes.c
+++ b/source/blender/editors/screen/spacetypes.c
@@ -43,8 +43,20 @@
#include "screen_intern.h" /* own module include */
+ARegionType *ED_regiontype_from_id(SpaceType *st, int regionid)
+{
+ ARegionType *art;
+
+ for(art= st->regiontypes.first; art; art= art->next)
+ if(art->regionid==regionid)
+ return art;
+
+ printf("Error, region type missing in %s\n", st->name);
+ return st->regiontypes.first;
+}
-/* only call once on startup, storage is static data (no malloc!) in kernel listbase */
+
+/* only call once on startup, storage is global in BKE kernel listbase */
void ED_spacetypes_init(void)
{
const ListBase *spacetypes;
@@ -59,13 +71,17 @@ void ED_spacetypes_init(void)
/* register operator types for screen and all spaces */
ED_operatortypes_screen();
-
+ ui_operatortypes();
+ ui_view2d_operatortypes();
+
spacetypes = BKE_spacetypes_list();
for(type=spacetypes->first; type; type=type->next)
type->operatortypes();
}
/* called in wm.c */
+/* keymap definitions are registered only once per WM initialize, usually on file read,
+ using the keymap the actual areas/regions add the handlers */
void ED_spacetypes_keymap(wmWindowManager *wm)
{
const ListBase *spacetypes;
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 07f6253feb3..399a7f08205 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -52,6 +52,7 @@
#include "BKE_utildefines.h"
#include "ED_area.h"
+#include "ED_screen.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -496,37 +497,27 @@ static void outliner_init(wmWindowManager *wm, ScrArea *sa)
ARegion *ar;
/* link area to SpaceXXX struct */
+ sa->type= BKE_spacetype_from_id(SPACE_OOPS);
/* add handlers to area */
/* define how many regions, the order and types */
- /* add types to regions */
+ /* add types to regions, check handlers */
for(ar= sa->regionbase.first; ar; ar= ar->next) {
- if(ar->regiontype == RGN_TYPE_WINDOW) {
- static ARegionType mainart={NULL, NULL, NULL, NULL, NULL};
+
+ ar->type= ED_regiontype_from_id(sa->type, ar->regiontype); /* XXX fix type and id */
+
+ if(ar->handlers.first==NULL) {
+ ListBase *keymap;
+
+ /* XXX fixme, should be smarter */
+
+ keymap= WM_keymap_listbase(wm, "Interface", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+
+ keymap= WM_keymap_listbase(wm, "View2D", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
- mainart.draw= outliner_main_area_draw;
- mainart.free= outliner_main_area_free;
-
- ar->type= &mainart;
-
- WM_event_add_keymap_handler(&ar->handlers, &wm->uikeymap);
- WM_event_add_keymap_handler(&ar->handlers, &wm->view2dkeymap);
- }
- else if(ar->regiontype == RGN_TYPE_HEADER) {
- static ARegionType headerart={NULL, NULL, NULL, NULL, NULL};
-
- headerart.draw= outliner_header_area_draw;
- headerart.free= outliner_header_area_free;
-
- ar->type= &headerart;
-
- WM_event_add_keymap_handler(&ar->handlers, &wm->uikeymap);
- WM_event_add_keymap_handler(&ar->handlers, &wm->view2dkeymap);
- }
- else {
- static ARegionType headerart={NULL, NULL, NULL, NULL, NULL};
- ar->type= &headerart;
}
}
}
@@ -551,18 +542,37 @@ static SpaceLink *outliner_duplicate(SpaceLink *sl)
/* only called once, from screen/spacetypes.c */
void ED_spacetype_outliner(void)
{
- static SpaceType st;
+ SpaceType *st= MEM_callocN(sizeof(SpaceType), "spacetype time");
+ ARegionType *art;
+
+ st->spaceid= SPACE_OOPS;
+ strncpy(st->name, "Outliner", BKE_ST_MAXNAME);
+
+ st->new= outliner_new;
+ st->free= outliner_free;
+ st->init= outliner_init;
+ st->refresh= outliner_refresh;
+ st->duplicate= outliner_duplicate;
+ st->operatortypes= outliner_operatortypes;
+ st->keymap= outliner_keymap;
+
+ /* regions: main window */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
+ art->regionid = RGN_TYPE_WINDOW;
+
+ art->draw= outliner_main_area_draw;
+ art->free= outliner_main_area_free;
+ BLI_addhead(&st->regiontypes, art);
+
+ /* regions: header */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
+ art->regionid = RGN_TYPE_HEADER;
- st.spaceid= SPACE_OOPS;
+ art->draw= outliner_header_area_draw;
+ art->free= outliner_header_area_free;
+ BLI_addhead(&st->regiontypes, art);
- st.new= outliner_new;
- st.free= outliner_free;
- st.init= outliner_init;
- st.refresh= outliner_refresh;
- st.duplicate= outliner_duplicate;
- st.operatortypes= outliner_operatortypes;
- st.keymap= outliner_keymap;
- BKE_spacetype_register(&st);
+ BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c
index bb9a99ec577..29b3b4559cb 100644
--- a/source/blender/editors/space_time/space_time.c
+++ b/source/blender/editors/space_time/space_time.c
@@ -36,10 +36,13 @@
#include "MEM_guardedalloc.h"
+#include "BLI_blenlib.h"
+
#include "BKE_global.h"
#include "BKE_screen.h"
#include "ED_area.h"
+#include "ED_screen.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -226,52 +229,38 @@ static void time_free(SpaceLink *sl)
{
}
+
/* spacetype; init callback */
+/* init is called to (re)initialize an existing editor (file read, screen changes) */
static void time_init(wmWindowManager *wm, ScrArea *sa)
{
ARegion *ar;
/* link area to SpaceXXX struct */
+ sa->type= BKE_spacetype_from_id(SPACE_TIME);
/* add handlers to area */
/* define how many regions, the order and types */
- /* add types to regions */
+ /* add types to regions, check handlers */
for(ar= sa->regionbase.first; ar; ar= ar->next) {
- if(ar->regiontype == RGN_TYPE_WINDOW) {
- static ARegionType mainart={NULL, NULL, NULL, NULL, NULL};
-
- mainart.init= time_main_area_init;
- mainart.refresh= time_main_area_refresh;
- mainart.draw= time_main_area_draw;
- mainart.listener= time_main_area_listener;
-
- ar->type= &mainart;
-
- /* XXX the windowmanager may not be the best place to keep these
- * keymaps, and this function callback may not be the best one
- * to add the keymap handler, also will need to take care of
- * area type changes, etc, basically space callbacks need to
- * be looked at further */
- WM_event_remove_keymap_handler(&ar->handlers, &wm->timekeymap);
- WM_event_add_keymap_handler(&ar->handlers, &wm->timekeymap);
- WM_event_add_keymap_handler(&ar->handlers, &wm->view2dkeymap); // XXX this should be added automatically!
- }
- else if(ar->regiontype == RGN_TYPE_HEADER) {
- static ARegionType headerart={NULL, NULL, NULL, NULL, NULL};
-
- headerart.draw= time_header_area_draw;
- headerart.free= time_header_area_free;
-
- ar->type= &headerart;
- WM_event_add_keymap_handler(&ar->handlers, &wm->uikeymap);
- WM_event_add_keymap_handler(&ar->handlers, &wm->view2dkeymap); // XXX this should be added automatically!
- }
- else {
- static ARegionType art={NULL, NULL, NULL, NULL, NULL};
-
- /* for time being; register 1 type */
- ar->type= &art;
+
+ ar->type= ED_regiontype_from_id(sa->type, ar->regiontype); /* XXX fix type and id */
+
+ if(ar->handlers.first==NULL) {
+ ListBase *keymap;
+
+ /* XXX fixme, should be smarter */
+
+ keymap= WM_keymap_listbase(wm, "Interface", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+
+ /* own keymap */
+ keymap= WM_keymap_listbase(wm, "TimeLine", sa->spacetype, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+
+ keymap= WM_keymap_listbase(wm, "View2D", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
}
}
}
@@ -291,20 +280,42 @@ static SpaceLink *time_duplicate(SpaceLink *sl)
}
/* only called once, from screen/spacetypes.c */
+/* it defines all callbacks to maintain spaces */
void ED_spacetype_time(void)
{
- static SpaceType st;
+ SpaceType *st= MEM_callocN(sizeof(SpaceType), "spacetype time");
+ ARegionType *art;
+
+ st->spaceid= SPACE_TIME;
+ strncpy(st->name, "Timeline", BKE_ST_MAXNAME);
+
+ st->new= time_new;
+ st->free= time_free;
+ st->init= time_init;
+ st->refresh= time_refresh;
+ st->duplicate= time_duplicate;
+ st->operatortypes= time_operatortypes;
+ st->keymap= time_keymap;
+
+ /* regions: main window */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
+ art->regionid = RGN_TYPE_WINDOW;
+
+ art->init= time_main_area_init;
+ art->refresh= time_main_area_refresh;
+ art->draw= time_main_area_draw;
+ art->listener= time_main_area_listener;
+ BLI_addhead(&st->regiontypes, art);
+
+ /* regions: header */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype time region");
+ art->regionid = RGN_TYPE_HEADER;
- st.spaceid= SPACE_TIME;
+ art->draw= time_header_area_draw;
+ art->free= time_header_area_free;
+ BLI_addhead(&st->regiontypes, art);
- st.new= time_new;
- st.free= time_free;
- st.init= time_init;
- st.refresh= time_refresh;
- st.duplicate= time_duplicate;
- st.operatortypes= time_operatortypes;
- st.keymap= time_keymap;
- BKE_spacetype_register(&st);
+ BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c
index 9b7af8b3f45..bc0ed1634da 100644
--- a/source/blender/editors/space_time/time_ops.c
+++ b/source/blender/editors/space_time/time_ops.c
@@ -213,24 +213,26 @@ void time_operatortypes(void)
void time_keymap(wmWindowManager *wm)
{
- WM_keymap_verify_item(&wm->timekeymap, "ED_TIME_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_TIME_OT_toggle_time", TKEY, KM_PRESS, 0, 0);
+ ListBase *keymap= WM_keymap_listbase(wm, "TimeLine", SPACE_TIME, 0);
+
+ WM_keymap_verify_item(keymap, "ED_TIME_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_TIME_OT_toggle_time", TKEY, KM_PRESS, 0, 0);
/* markers (XXX move to function?) */
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0);
- WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_add", MKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_move", EVT_TWEAK_R, KM_ANY, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect", RIGHTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_mouseselect_extend", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_border_select", BKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ED_MARKER_OT_delete", XKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(&wm->timekeymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ED_MARKER_OT_move", GKEY, KM_PRESS, 0, 0);
/* generates event, in end to make select work */
- WM_keymap_verify_item(&wm->timekeymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "WM_OT_tweak_gesture", RIGHTMOUSE, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index d60dd6a4062..81911a510ae 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -185,18 +185,18 @@ void view3d_keymap(struct wmWindowManager *wm)
/* only called once, from screen/spacetypes.c */
void ED_spacetype_view3d(void)
{
- static SpaceType st;
+ SpaceType *st= MEM_callocN(sizeof(SpaceType), "spacetype time");
- st.spaceid= SPACE_VIEW3D;
+ st->spaceid= SPACE_VIEW3D;
- st.new= view3d_new;
- st.free= view3d_free;
- st.init= view3d_init;
- st.refresh= view3d_refresh;
- st.duplicate= view3d_duplicate;
- st.operatortypes= view3d_operatortypes;
- st.keymap= view3d_keymap;
+ st->new= view3d_new;
+ st->free= view3d_free;
+ st->init= view3d_init;
+ st->refresh= view3d_refresh;
+ st->duplicate= view3d_duplicate;
+ st->operatortypes= view3d_operatortypes;
+ st->keymap= view3d_keymap;
- BKE_spacetype_register(&st);
+ BKE_spacetype_register(st);
}