forked from bartvdbraak/blender
- use defines for wmKeyMapItem & wmEvent alt/shift/ctrl/oskey
- clear utf8_buf on key up & complain if its set (should never happen)
This commit is contained in:
parent
ebe63b664b
commit
c1de5cc838
@ -2199,14 +2199,10 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data
|
|||||||
|
|
||||||
/* always set */
|
/* always set */
|
||||||
but->modifier_key = 0;
|
but->modifier_key = 0;
|
||||||
if(event->shift)
|
if(event->shift) but->modifier_key |= KM_SHIFT;
|
||||||
but->modifier_key |= KM_SHIFT;
|
if(event->alt) but->modifier_key |= KM_ALT;
|
||||||
if(event->alt)
|
if(event->ctrl) but->modifier_key |= KM_CTRL;
|
||||||
but->modifier_key |= KM_ALT;
|
if(event->oskey) but->modifier_key |= KM_OSKEY;
|
||||||
if(event->ctrl)
|
|
||||||
but->modifier_key |= KM_CTRL;
|
|
||||||
if(event->oskey)
|
|
||||||
but->modifier_key |= KM_OSKEY;
|
|
||||||
|
|
||||||
ui_check_but(but);
|
ui_check_but(but);
|
||||||
ED_region_tag_redraw(data->region);
|
ED_region_tag_redraw(data->region);
|
||||||
@ -3673,7 +3669,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt
|
|||||||
if(sel!= -1) {
|
if(sel!= -1) {
|
||||||
/* ok, we move a point */
|
/* ok, we move a point */
|
||||||
/* deselect all if this one is deselect. except if we hold shift */
|
/* deselect all if this one is deselect. except if we hold shift */
|
||||||
if(event->shift==0) {
|
if(event->shift == FALSE) {
|
||||||
for(a=0; a<cuma->totpoint; a++)
|
for(a=0; a<cuma->totpoint; a++)
|
||||||
cmp[a].flag &= ~SELECT;
|
cmp[a].flag &= ~SELECT;
|
||||||
cmp[sel].flag |= SELECT;
|
cmp[sel].flag |= SELECT;
|
||||||
@ -3712,7 +3708,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt
|
|||||||
|
|
||||||
if(!data->dragchange) {
|
if(!data->dragchange) {
|
||||||
/* deselect all, select one */
|
/* deselect all, select one */
|
||||||
if(event->shift==0) {
|
if(event->shift == FALSE) {
|
||||||
for(a=0; a<cuma->totpoint; a++)
|
for(a=0; a<cuma->totpoint; a++)
|
||||||
cmp[a].flag &= ~SELECT;
|
cmp[a].flag &= ~SELECT;
|
||||||
cmp[data->dragsel].flag |= SELECT;
|
cmp[data->dragsel].flag |= SELECT;
|
||||||
@ -4491,7 +4487,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
|
|||||||
ui_but_drop (C, event, but, data);
|
ui_but_drop (C, event, but, data);
|
||||||
}
|
}
|
||||||
/* handle keyframing */
|
/* handle keyframing */
|
||||||
else if(event->type == IKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
else if(event->type == IKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
||||||
if(event->alt)
|
if(event->alt)
|
||||||
ui_but_anim_delete_keyframe(C);
|
ui_but_anim_delete_keyframe(C);
|
||||||
else
|
else
|
||||||
@ -4502,7 +4498,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
|
|||||||
return WM_UI_HANDLER_BREAK;
|
return WM_UI_HANDLER_BREAK;
|
||||||
}
|
}
|
||||||
/* handle drivers */
|
/* handle drivers */
|
||||||
else if(event->type == DKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
else if(event->type == DKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
||||||
if(event->alt)
|
if(event->alt)
|
||||||
ui_but_anim_remove_driver(C);
|
ui_but_anim_remove_driver(C);
|
||||||
else
|
else
|
||||||
@ -4513,7 +4509,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
|
|||||||
return WM_UI_HANDLER_BREAK;
|
return WM_UI_HANDLER_BREAK;
|
||||||
}
|
}
|
||||||
/* handle keyingsets */
|
/* handle keyingsets */
|
||||||
else if(event->type == KKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
else if(event->type == KKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
|
||||||
if(event->alt)
|
if(event->alt)
|
||||||
ui_but_anim_remove_keyingset(C);
|
ui_but_anim_remove_keyingset(C);
|
||||||
else
|
else
|
||||||
|
@ -1042,7 +1042,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
|
|||||||
inside= 1;
|
inside= 1;
|
||||||
|
|
||||||
if(inside && event->val==KM_PRESS) {
|
if(inside && event->val==KM_PRESS) {
|
||||||
if(event->type == AKEY && !ELEM4(1, event->ctrl, event->oskey, event->shift, event->alt)) {
|
if(event->type == AKEY && !ELEM4(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift, event->alt)) {
|
||||||
|
|
||||||
if(pa->flag & PNL_CLOSEDY) {
|
if(pa->flag & PNL_CLOSEDY) {
|
||||||
if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my))
|
if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my))
|
||||||
|
@ -3700,7 +3700,7 @@ static void brush_edit_apply_event(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
RNA_collection_add(op->ptr, "stroke", &itemptr);
|
RNA_collection_add(op->ptr, "stroke", &itemptr);
|
||||||
|
|
||||||
RNA_float_set_array(&itemptr, "mouse", mouse);
|
RNA_float_set_array(&itemptr, "mouse", mouse);
|
||||||
RNA_boolean_set(&itemptr, "pen_flip", event->shift != 0); // XXX hardcoded
|
RNA_boolean_set(&itemptr, "pen_flip", event->shift != FALSE); // XXX hardcoded
|
||||||
|
|
||||||
/* apply */
|
/* apply */
|
||||||
brush_edit_apply(C, op, &itemptr);
|
brush_edit_apply(C, op, &itemptr);
|
||||||
|
@ -1546,7 +1546,8 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int
|
|||||||
if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) ||
|
if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) ||
|
||||||
(ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
|
(ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
|
||||||
(ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) ||
|
(ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) ||
|
||||||
(kmi->type == OSKEY && event->oskey)) {
|
((kmi->type == OSKEY) && event->oskey) )
|
||||||
|
{
|
||||||
t->modifiers |= MOD_SNAP_INVERT;
|
t->modifiers |= MOD_SNAP_INVERT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -98,6 +98,11 @@ enum {
|
|||||||
#define KM_ALT2 64
|
#define KM_ALT2 64
|
||||||
#define KM_OSKEY2 128
|
#define KM_OSKEY2 128
|
||||||
|
|
||||||
|
/* KM_MOD_ flags for wmKeyMapItem and wmEvent.alt/shift/oskey/ctrl */
|
||||||
|
/* note that KM_ANY and FALSE are used with these defines too */
|
||||||
|
#define KM_MOD_FIRST 1
|
||||||
|
#define KM_MOD_SECOND 2
|
||||||
|
|
||||||
/* type: defined in wm_event_types.c */
|
/* type: defined in wm_event_types.c */
|
||||||
#define KM_TEXTINPUT -2
|
#define KM_TEXTINPUT -2
|
||||||
|
|
||||||
|
@ -2615,35 +2615,39 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U
|
|||||||
event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE;
|
event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE;
|
||||||
|
|
||||||
/* exclude arrow keys, esc, etc from text input */
|
/* exclude arrow keys, esc, etc from text input */
|
||||||
if(type==GHOST_kEventKeyUp || (event.ascii<32 && event.ascii>0))
|
if(type==GHOST_kEventKeyUp) {
|
||||||
|
if (event.ascii<32 && event.ascii > 0) {
|
||||||
event.ascii= '\0';
|
event.ascii= '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ghost should do this already for key up */
|
||||||
|
if (event.utf8_buf[0]) {
|
||||||
|
printf("%s: ghost on you're platform is misbehaving, utf8 events on key up!\n", __func__);
|
||||||
|
}
|
||||||
|
event.utf8_buf[0]= '\0';
|
||||||
|
}
|
||||||
|
|
||||||
/* modifiers */
|
/* modifiers */
|
||||||
if (event.type==LEFTSHIFTKEY || event.type==RIGHTSHIFTKEY) {
|
/* assigning both first and second is strange - campbell */
|
||||||
event.shift= evt->shift= (event.val==KM_PRESS);
|
switch(event.type) {
|
||||||
if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->oskey))
|
case LEFTSHIFTKEY: case RIGHTSHIFTKEY:
|
||||||
event.shift= evt->shift = 3; // define?
|
event.shift= evt->shift= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
|
||||||
}
|
break;
|
||||||
else if (event.type==LEFTCTRLKEY || event.type==RIGHTCTRLKEY) {
|
case LEFTCTRLKEY: case RIGHTCTRLKEY:
|
||||||
event.ctrl= evt->ctrl= (event.val==KM_PRESS);
|
event.ctrl= evt->ctrl= (event.val==KM_PRESS) ? ((evt->shift || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
|
||||||
if(event.val==KM_PRESS && (evt->shift || evt->alt || evt->oskey))
|
break;
|
||||||
event.ctrl= evt->ctrl = 3; // define?
|
case LEFTALTKEY: case RIGHTALTKEY:
|
||||||
}
|
event.alt= evt->alt= (event.val==KM_PRESS) ? ((evt->ctrl || evt->shift || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
|
||||||
else if (event.type==LEFTALTKEY || event.type==RIGHTALTKEY) {
|
break;
|
||||||
event.alt= evt->alt= (event.val==KM_PRESS);
|
case OSKEY:
|
||||||
if(event.val==KM_PRESS && (evt->ctrl || evt->shift || evt->oskey))
|
event.oskey= evt->oskey= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->shift) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
|
||||||
event.alt= evt->alt = 3; // define?
|
break;
|
||||||
}
|
default:
|
||||||
else if (event.type==OSKEY) {
|
|
||||||
event.oskey= evt->oskey= (event.val==KM_PRESS);
|
|
||||||
if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->shift))
|
|
||||||
event.oskey= evt->oskey = 3; // define?
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(event.val==KM_PRESS && event.keymodifier==0)
|
if(event.val==KM_PRESS && event.keymodifier==0)
|
||||||
evt->keymodifier= event.type; /* only set in eventstate, for next event */
|
evt->keymodifier= event.type; /* only set in eventstate, for next event */
|
||||||
else if(event.val==KM_RELEASE && event.keymodifier==event.type)
|
else if(event.val==KM_RELEASE && event.keymodifier==event.type)
|
||||||
event.keymodifier= evt->keymodifier= 0;
|
event.keymodifier= evt->keymodifier= 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* this case happens on some systems that on holding a key pressed,
|
/* this case happens on some systems that on holding a key pressed,
|
||||||
|
@ -315,26 +315,10 @@ static void keymap_event_set(wmKeyMapItem *kmi, short type, short val, int modif
|
|||||||
kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= KM_ANY;
|
kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= KM_ANY;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
kmi->shift= (modifier & KM_SHIFT) ? KM_MOD_FIRST : ((modifier & KM_SHIFT2) ? KM_MOD_SECOND : FALSE);
|
||||||
kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= 0;
|
kmi->ctrl= (modifier & KM_CTRL) ? KM_MOD_FIRST : ((modifier & KM_CTRL2) ? KM_MOD_SECOND : FALSE);
|
||||||
|
kmi->alt= (modifier & KM_ALT) ? KM_MOD_FIRST : ((modifier & KM_ALT2) ? KM_MOD_SECOND : FALSE);
|
||||||
/* defines? */
|
kmi->oskey= (modifier & KM_OSKEY) ? KM_MOD_FIRST : ((modifier & KM_OSKEY2) ? KM_MOD_SECOND : FALSE);
|
||||||
if(modifier & KM_SHIFT)
|
|
||||||
kmi->shift= 1;
|
|
||||||
else if(modifier & KM_SHIFT2)
|
|
||||||
kmi->shift= 2;
|
|
||||||
if(modifier & KM_CTRL)
|
|
||||||
kmi->ctrl= 1;
|
|
||||||
else if(modifier & KM_CTRL2)
|
|
||||||
kmi->ctrl= 2;
|
|
||||||
if(modifier & KM_ALT)
|
|
||||||
kmi->alt= 1;
|
|
||||||
else if(modifier & KM_ALT2)
|
|
||||||
kmi->alt= 2;
|
|
||||||
if(modifier & KM_OSKEY)
|
|
||||||
kmi->oskey= 1;
|
|
||||||
else if(modifier & KM_OSKEY2)
|
|
||||||
kmi->oskey= 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user