diff options
author | Ton Roosendaal <ton@blender.org> | 2011-03-07 17:56:19 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-03-07 17:56:19 +0300 |
commit | 2818add58689b2c126662dc2db056a06a5f937ff (patch) | |
tree | bc7e776506d63f4a411989f07a10efb80831e26c /source | |
parent | c9685af1ffc0ee4cfb5411de04fbfd317b05af4d (diff) |
From the OFTL:
Arrows-move-cursor is back!
It now works for any running modal operator that doesn't handle own
arrow keys. Might need to become more restricted though, some modal
ops don't need it. Want to investigate that still where conflicts are.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_select.c | 20 | ||||
-rw-r--r-- | source/blender/editors/transform/transform.c | 18 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_cursors.c | 24 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 7 | ||||
-rw-r--r-- | source/blender/windowmanager/wm_cursors.h | 6 |
5 files changed, 37 insertions, 38 deletions
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 72061bdbdac..9d882f09d02 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -198,26 +198,6 @@ static void EM_backbuf_checkAndSelectTFaces(Mesh *me, int select) } } -#if 0 -void arrows_move_cursor(unsigned short event) -{ - short mval[2]; - - getmouseco_sc(mval); - - if(event==UPARROWKEY) { - warp_pointer(mval[0], mval[1]+1); - } else if(event==DOWNARROWKEY) { - warp_pointer(mval[0], mval[1]-1); - } else if(event==LEFTARROWKEY) { - warp_pointer(mval[0]-1, mval[1]); - } else if(event==RIGHTARROWKEY) { - warp_pointer(mval[0]+1, mval[1]); - } -} -#endif - - /* *********************** GESTURE AND LASSO ******************* */ static int view3d_selectable_data(bContext *C) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 64901e9ded3..e342ce6769a 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -54,22 +54,10 @@ #include "RNA_access.h" -//#include "BIF_editview.h" /* arrows_move_cursor */ #include "BIF_gl.h" #include "BIF_glutil.h" -//#include "BIF_mywindow.h" -//#include "BIF_resources.h" -//#include "BIF_screen.h" -//#include "BIF_space.h" /* undo */ -//#include "BIF_toets.h" /* persptoetsen */ -//#include "BIF_mywindow.h" /* warp_pointer */ -//#include "BIF_toolbox.h" /* notice */ -//#include "BIF_editmesh.h" -//#include "BIF_editsima.h" -//#include "BIF_editparticle.h" #include "BKE_nla.h" -//#include "BKE_bad_level_calls.h"/* popmenu and error */ #include "BKE_bmesh.h" #include "BKE_context.h" #include "BKE_constraint.h" @@ -78,8 +66,6 @@ #include "BKE_pointcache.h" #include "BKE_unit.h" -//#include "BSE_view.h" - #include "ED_image.h" #include "ED_keyframing.h" #include "ED_screen.h" @@ -551,9 +537,6 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); - WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_UP); - WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_DOWN); - WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); @@ -1070,7 +1053,6 @@ int transformEvent(TransInfo *t, wmEvent *event) // Snapping events t->redraw |= handleSnapping(t, event); - //arrows_move_cursor(event->type); } else if (event->val==KM_RELEASE) { switch (event->type){ diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index 5951393a497..32a4648c7f8 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -47,6 +47,7 @@ #include "BKE_main.h" #include "WM_api.h" +#include "WM_types.h" #include "wm_cursors.h" /* XXX this still is mess from old code */ @@ -211,6 +212,29 @@ void WM_cursor_ungrab(wmWindow *win) } } +/* give it a modal keymap one day? */ +int wm_cursor_arrow_move(wmWindow *win, wmEvent *event) +{ + if(win && event->val==KM_PRESS) { + + if(event->type==UPARROWKEY) { + WM_cursor_warp(win, event->x, event->y+1); + return 1; + } else if(event->type==DOWNARROWKEY) { + WM_cursor_warp(win, event->x, event->y-1); + return 1; + } else if(event->type==LEFTARROWKEY) { + WM_cursor_warp(win, event->x-1, event->y); + return 1; + } else if(event->type==RIGHTARROWKEY) { + WM_cursor_warp(win, event->x+1, event->y); + return 1; + } + } + return 0; +} + + /* afer this you can call restore too */ void WM_timecursor(wmWindow *win, int nr) { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 4268f192821..e013bc8fee4 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1557,6 +1557,9 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) } } } + + if(action == (WM_HANDLER_BREAK|WM_HANDLER_MODAL)) + wm_cursor_arrow_move(CTX_wm_window(C), event); return action; } @@ -1939,11 +1942,13 @@ void WM_event_add_fileselect(bContext *C, wmOperator *op) WM_event_fileselect_event(C, op, full?EVT_FILESELECT_FULL_OPEN:EVT_FILESELECT_OPEN); } +#if 0 /* lets not expose struct outside wm? */ static void WM_event_set_handler_flag(wmEventHandler *handler, int flag) { handler->flag= flag; } +#endif wmEventHandler *WM_event_add_modal_handler(bContext *C, wmOperator *op) { @@ -2089,11 +2094,13 @@ void WM_event_remove_area_handler(ListBase *handlers, void *area) } } +#if 0 static void WM_event_remove_handler(ListBase *handlers, wmEventHandler *handler) { BLI_remlink(handlers, handler); wm_event_free_handler(handler); } +#endif void WM_event_add_mousemove(bContext *C) { diff --git a/source/blender/windowmanager/wm_cursors.h b/source/blender/windowmanager/wm_cursors.h index c858b9d94f3..5f262f34724 100644 --- a/source/blender/windowmanager/wm_cursors.h +++ b/source/blender/windowmanager/wm_cursors.h @@ -116,5 +116,11 @@ enum { #define SMALL_CURSOR 0 #define BIG_CURSOR 1 +struct wmWindow; +struct wmEvent; + +int wm_cursor_arrow_move(struct wmWindow *win, struct wmEvent *event); + + #endif /* WM_CURSORS_H */ |