Bug 633291 - Handle Shift-keys in X11 gdk_test_simulate_key()

If a level 1 key maps to a key value passed to
gdk_test_simulate_key(), raise the GDK_SHIFT_MASK flag so the reqested
key value is generated. Also add a regression test for this fix.
This commit is contained in:
Martin Nordholts
2011-02-01 23:07:21 +01:00
parent 932ab55c65
commit a3f52949c4
2 changed files with 48 additions and 2 deletions

View File

@ -94,12 +94,17 @@ _gdk_x11_window_simulate_key (GdkWindow *window,
{
gint i;
for (i = 0; i < n_keys; i++)
if (keys[i].group == 0 && keys[i].level == 0)
if (keys[i].group == 0 && (keys[i].level == 0 || keys[i].level == 1))
{
xev.keycode = keys[i].keycode;
if (keys[i].level == 1)
{
/* Assume shift takes us to level 1 */
xev.state |= GDK_SHIFT_MASK;
}
break;
}
if (i >= n_keys) /* no match for group==0 and level==0 */
if (i >= n_keys) /* no match for group==0 and level==0 or 1 */
xev.keycode = keys[0].keycode;
}
g_free (keys);