2.5
Another keymap goodie for test fun: Tweak events allow to be limited to a direction, like North, South-West, etc. Tested with View3D keymap for border, circle & lasso. Issue to look at still is whether a border should start immediate, or first draw a cross... this can be an operator property of course. Note that tweak code can be extended to corner-gestures too (so you can do a north+east, north+west, and so on... nice for later). Time to get keymap saving work! :) (Fixed bug in Mesh edit circle select, missing notifier)
This commit is contained in:
@@ -5081,6 +5081,28 @@ static char *keymap_tweak_menu(void)
|
||||
return string;
|
||||
}
|
||||
|
||||
static char *keymap_tweak_dir_menu(void)
|
||||
{
|
||||
static char string[500];
|
||||
static char formatstr[] = "|%s %%x%d";
|
||||
char *str= string;
|
||||
|
||||
str += sprintf(str, "Tweak Direction %%t");
|
||||
|
||||
str += sprintf(str, formatstr, "Any", KM_ANY);
|
||||
str += sprintf(str, formatstr, "North", EVT_GESTURE_N);
|
||||
str += sprintf(str, formatstr, "North-East", EVT_GESTURE_NE);
|
||||
str += sprintf(str, formatstr, "East", EVT_GESTURE_E);
|
||||
str += sprintf(str, formatstr, "Sout-East", EVT_GESTURE_SE);
|
||||
str += sprintf(str, formatstr, "South", EVT_GESTURE_S);
|
||||
str += sprintf(str, formatstr, "South-West", EVT_GESTURE_SW);
|
||||
str += sprintf(str, formatstr, "West", EVT_GESTURE_W);
|
||||
str += sprintf(str, formatstr, "North-West", EVT_GESTURE_NW);
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
|
||||
static void keymap_type_cb(bContext *C, void *kmi_v, void *unused_v)
|
||||
{
|
||||
wmKeymapItem *kmi= kmi_v;
|
||||
@@ -5158,6 +5180,9 @@ static void outliner_draw_keymapbuts(uiBlock *block, ARegion *ar, SpaceOops *soo
|
||||
str= keymap_tweak_menu();
|
||||
uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, OL_H-1, &kmi->type, 0, 0, 0, 0, "Tweak gesture");
|
||||
xstart+= butw2+5;
|
||||
str= keymap_tweak_dir_menu();
|
||||
uiDefButS(block, MENU, 0, str, xstart, (int)te->ys+1, butw2, OL_H-1, &kmi->val, 0, 0, 0, 0, "Tweak gesture direction");
|
||||
xstart+= butw2+5;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1800,8 +1800,10 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op)
|
||||
mval[1]= y;
|
||||
selecting= LEFTMOUSE==RNA_int_get(op->ptr, "event_type"); // XXX solve
|
||||
|
||||
if(CTX_data_edit_object(C))
|
||||
if(CTX_data_edit_object(C)) {
|
||||
obedit_circle_select(&vc, selecting, mval, (float)radius);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obact);
|
||||
}
|
||||
else
|
||||
return PE_circle_select(C, selecting, mval, (float)radius);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user