static gboolean 
gucharmap_chartable_cell_accessible_grab_focus (AtkComponent *component)
{
  GucharmapChartableCellAccessible *cell = GUCHARMAP_CHARTABLE_CELL_ACCESSIBLE (component);
  GucharmapChartable *chartable;

  chartable = GUCHARMAP_CHARTABLE (cell->widget);
  /* FIXME: this looks wrong, index is the index in the codepoint list, not the character itself */
  gucharmap_chartable_set_active_character (chartable, cell->index);

  return TRUE;
}
static gboolean
idle_do_action (gpointer data)
{
  GucharmapChartableCellAccessible *cell;
  GucharmapChartable *chartable;

  cell = GUCHARMAP_CHARTABLE_CELL_ACCESSIBLE (data);

  chartable = GUCHARMAP_CHARTABLE (cell->widget);
  gucharmap_chartable_set_active_character (chartable, cell->index);
  g_signal_emit_by_name (chartable, "activate");
  return FALSE; 
}
void
gucharmap_charmap_set_active_character (GucharmapCharmap *charmap,
                                        gunichar          wc)
{
  GucharmapCharmapPrivate *priv;

   if (wc > UNICHAR_MAX)
    return;

  priv = charmap->priv;
  if (!gucharmap_chapters_view_select_character (priv->chapters_view, wc)) {
    g_warning ("gucharmap_chapters_view_select_character failed (U+%04X)\n", wc);
    return;
  }

  gucharmap_chartable_set_active_character (priv->chartable, wc);
}