static void
row_activated (GtkListBox *box,
               GtkListBoxRow *row,
               GtkWidget  *chooser)
{
  CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
  gpointer data;

  if (!row)
    return;

  if (row == priv->more_row)
    {
      show_more (chooser);
      return;
    }

  data = g_object_get_data (G_OBJECT (row), "back");
  if (data)
    {
      show_locale_rows (chooser);
      return;
    }

  data = g_object_get_data (G_OBJECT (row), "name");
  if (data)
    {
      if (gtk_widget_is_sensitive (priv->add_button))
        gtk_dialog_response (GTK_DIALOG (chooser),
                             gtk_dialog_get_response_for_widget (GTK_DIALOG (chooser),
                                                                 priv->add_button));
      return;
    }

  data = g_object_get_data (G_OBJECT (row), "locale-info");
  if (data)
    {
      show_input_sources_for_locale (chooser, (LocaleInfo *) data);
      return;
    }
}
static void
row_activated (GtkListBox *box,
               GtkListBoxRow *row,
               GtkWidget  *chooser)
{
  CcInputChooserPrivate *priv = GET_PRIVATE (chooser);
  gpointer data;
  GtkWidget *child;

  if (!row)
    return;

  child = gtk_bin_get_child (GTK_BIN (row));

  if (child == priv->more_item)
    {
      show_more (chooser);
      return;
    }

  data = g_object_get_data (G_OBJECT (child), "back");
  if (data)
    {
      show_locale_widgets (chooser);
      return;
    }

  data = g_object_get_data (G_OBJECT (child), "name");
  if (data)
    {
      /* It's an input source, we just want to select it */
      return;
    }

  data = g_object_get_data (G_OBJECT (child), "locale-info");
  if (data)
    {
      show_input_sources_for_locale (chooser, (LocaleInfo *) data);
      return;
    }
}