playanim: make alphanumeric +/- and numpad +/- work the same way.

better for users without a numpad.
- Ctrl +/-: Zooms
- +/-: Controls playback speed
This commit is contained in:
Campbell Barton
2012-11-17 06:32:35 +00:00
parent c063194c6a
commit 62cba2ca23

View File

@@ -136,6 +136,7 @@ typedef enum eWS_Qual {
WS_QUAL_ALT = (WS_QUAL_LALT | WS_QUAL_RALT),
WS_QUAL_LCTRL = (1 << 4),
WS_QUAL_RCTRL = (1 << 5),
WS_QUAL_CTRL = (WS_QUAL_LCTRL | WS_QUAL_RCTRL),
WS_QUAL_LMOUSE = (1 << 16),
WS_QUAL_MMOUSE = (1 << 17),
WS_QUAL_RMOUSE = (1 << 18),
@@ -183,12 +184,12 @@ static void playanim_event_qual_update(void)
/* Alt */
GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyLeftAlt, &val);
if (val) g_WS.qual |= WS_QUAL_LCTRL;
else g_WS.qual &= ~WS_QUAL_LCTRL;
if (val) g_WS.qual |= WS_QUAL_LALT;
else g_WS.qual &= ~WS_QUAL_LALT;
GHOST_GetModifierKeyState(g_WS.ghost_system, GHOST_kModifierKeyRightAlt, &val);
if (val) g_WS.qual |= WS_QUAL_RCTRL;
else g_WS.qual &= ~WS_QUAL_RCTRL;
if (val) g_WS.qual |= WS_QUAL_RALT;
else g_WS.qual &= ~WS_QUAL_RALT;
/* LMB */
GHOST_GetButtonState(g_WS.ghost_system, GHOST_kButtonMaskLeft, &val);
@@ -548,28 +549,6 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr ps_void)
}
}
break;
case GHOST_kKeyEqual:
if (val) {
if (g_WS.qual & WS_QUAL_SHIFT) {
ps->pause++;
printf("pause:%d\n", ps->pause);
}
else {
swaptime /= 1.1;
}
}
break;
case GHOST_kKeyMinus:
if (val) {
if (g_WS.qual & WS_QUAL_SHIFT) {
ps->pause--;
printf("pause:%d\n", ps->pause);
}
else {
swaptime *= 1.1;
}
}
break;
case GHOST_kKeyNumpad0:
if (val) {
if (ps->once) {
@@ -597,14 +576,28 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr ps_void)
}
}
break;
case GHOST_kKeyEqual:
case GHOST_kKeyNumpadPlus:
{
if (val == 0) break;
playanim_window_zoom(ps, 1.0f);
if (g_WS.qual & WS_QUAL_CTRL) {
playanim_window_zoom(ps, 1.0f);
}
else {
swaptime /= 1.1;
}
break;
}
case GHOST_kKeyMinus:
case GHOST_kKeyNumpadMinus:
{
if (val == 0) break;
playanim_window_zoom(ps, -1.0f);
if (g_WS.qual & WS_QUAL_CTRL) {
playanim_window_zoom(ps, -1.0f);
}
else {
swaptime *= 1.1;
}
break;
}
case GHOST_kKeyEsc:
@@ -1010,6 +1003,18 @@ void WM_main_playanim(int argc, const char **argv)
if (hasevent) {
GHOST_DispatchEvents(g_WS.ghost_system);
}
if (ps.wait2) {
if (hasevent) {
if (ibuf) {
while (pupdate_time()) PIL_sleep_ms(1);
ptottime -= swaptime;
playanim_toscreen(ps.picture, ibuf, ps.fontid, ps.fstep);
}
}
}
if (!ps.go) {
break;
}
}
ps.wait2 = ps.sstep;