fix chaining to more-then-two-step key sequence
svn: r6994
This commit is contained in:
parent
3d71bd32c1
commit
2c1f5de11e
|
@ -760,7 +760,7 @@ void wxKeymap::RemoveGrabKeyFunction(void)
|
||||||
|
|
||||||
Bool wxKeymap::HandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event)
|
Bool wxKeymap::HandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event)
|
||||||
{
|
{
|
||||||
int score;
|
int score, result;
|
||||||
|
|
||||||
if (event->keyCode == WXK_SHIFT
|
if (event->keyCode == WXK_SHIFT
|
||||||
|| event->keyCode == WXK_CONTROL
|
|| event->keyCode == WXK_CONTROL
|
||||||
|
@ -770,7 +770,12 @@ Bool wxKeymap::HandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event)
|
||||||
|
|
||||||
score = GetBestScore(event);
|
score = GetBestScore(event);
|
||||||
|
|
||||||
return ChainHandleKeyEvent(media, event, NULL, NULL, 0, score) ? TRUE : FALSE;
|
result = ChainHandleKeyEvent(media, event, NULL, NULL, 0, score);
|
||||||
|
|
||||||
|
if (result >= 0)
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
return result ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxKeymap::GetBestScore(wxKeyEvent *event)
|
int wxKeymap::GetBestScore(wxKeyEvent *event)
|
||||||
|
@ -812,7 +817,7 @@ int wxKeymap::ChainHandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event,
|
||||||
int try_state, int score)
|
int try_state, int score)
|
||||||
{
|
{
|
||||||
char *fname;
|
char *fname;
|
||||||
int result;
|
int result, found_prefix = 0;
|
||||||
|
|
||||||
lastTime = event->timeStamp;
|
lastTime = event->timeStamp;
|
||||||
lastButton = 0;
|
lastButton = 0;
|
||||||
|
@ -831,8 +836,11 @@ int wxKeymap::ChainHandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event,
|
||||||
|
|
||||||
if (try_state > 0)
|
if (try_state > 0)
|
||||||
return r;
|
return r;
|
||||||
else
|
else {
|
||||||
|
if (r < 0)
|
||||||
|
found_prefix = -1;
|
||||||
try_state = -1;
|
try_state = -1;
|
||||||
|
}
|
||||||
} else if (prefix && (try_state < 0))
|
} else if (prefix && (try_state < 0))
|
||||||
return OtherHandleKeyEvent(media, event, grab, grabData, -1, score);
|
return OtherHandleKeyEvent(media, event, grab, grabData, -1, score);
|
||||||
|
|
||||||
|
@ -873,6 +881,9 @@ int wxKeymap::ChainHandleKeyEvent(UNKNOWN_OBJ media, wxKeyEvent *event,
|
||||||
if (grabKeyFunction(NULL, this, media, event, grabKeyData))
|
if (grabKeyFunction(NULL, this, media, event, grabKeyData))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
if (!result && found_prefix)
|
||||||
|
return found_prefix;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user