static void
ide_omni_search_display_result_removed (IdeOmniSearchDisplay *self,
                                        IdeSearchProvider    *provider,
                                        IdeSearchResult      *result,
                                        IdeSearchContext     *context)
{
  guint i;

  g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self));
  g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));
  g_return_if_fail (IDE_IS_SEARCH_CONTEXT (context));

  for (i = 0; i < self->providers->len; i++)
    {
      ProviderEntry *ptr;

      ptr = g_ptr_array_index (self->providers, i);

      if (ptr->provider == provider)
        {
          if (ptr->group != NULL)
            ide_omni_search_group_remove_result (ptr->group, result);
          break;
        }
    }
}
static void
ide_omni_search_display_real_result_activated (IdeOmniSearchDisplay *self,
                                               IdeSearchResult      *result)
{
  g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));

}
static void
gb_search_box_display_result_activated (GbSearchBox     *self,
                                        IdeSearchResult *result,
                                        GbSearchDisplay *display)
{
  g_return_if_fail (GB_IS_SEARCH_BOX (self));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));
  g_return_if_fail (GB_IS_SEARCH_DISPLAY (display));

  gtk_entry_set_text (GTK_ENTRY (self->entry), "");
}
void
ide_search_context_remove_result (IdeSearchContext  *self,
                                  IdeSearchProvider *provider,
                                  IdeSearchResult   *result)
{
  g_return_if_fail (IDE_IS_SEARCH_CONTEXT (self));
  g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));

  g_signal_emit (self, gSignals [RESULT_REMOVED], 0, provider, result);
}
static void
ide_omni_search_display_result_activated (IdeOmniSearchDisplay *self,
                                          GtkWidget            *widget,
                                          IdeSearchResult      *result,
                                          IdeOmniSearchGroup   *group)
{
  g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self));
  g_return_if_fail (GTK_IS_WIDGET (widget));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));
  g_return_if_fail (IDE_IS_OMNI_SEARCH_GROUP (group));

  g_signal_emit (self, signals [RESULT_ACTIVATED], 0, result);
}
static void
ide_omni_search_display_result_selected (IdeOmniSearchDisplay *self,
                                         IdeSearchResult      *result,
                                         IdeOmniSearchGroup   *group)
{
  guint i;

  g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self));
  g_return_if_fail (!result || IDE_IS_SEARCH_RESULT (result));
  g_return_if_fail (IDE_IS_OMNI_SEARCH_GROUP (group));

  for (i = 0; i < self->providers->len; i++)
    {
      ProviderEntry *ptr;

      ptr = g_ptr_array_index (self->providers, i);
      if ((ptr->group != NULL) && (ptr->group != group))
        ide_omni_search_group_unselect (ptr->group);
    }
}
static void
ide_omni_search_display_result_added (IdeOmniSearchDisplay *self,
                                      IdeSearchProvider    *provider,
                                      IdeSearchResult      *result,
                                      IdeSearchContext     *context)
{
  guint i;

  g_return_if_fail (IDE_IS_OMNI_SEARCH_DISPLAY (self));
  g_return_if_fail (IDE_IS_SEARCH_PROVIDER (provider));
  g_return_if_fail (IDE_IS_SEARCH_RESULT (result));
  g_return_if_fail (IDE_IS_SEARCH_CONTEXT (context));

  for (i = 0; i < self->providers->len; i++)
    {
      ProviderEntry *ptr;

      ptr = g_ptr_array_index (self->providers, i);

      if (ptr->provider == provider)
        {
          if (ptr->group != NULL)
            {
              ide_omni_search_group_add_result (ptr->group, result);
              gtk_widget_show (GTK_WIDGET (ptr->group));

              /*
               * If this is the first group and we are still auto-selecting
               * the first row, we might need to update the selection.
               */
              if ((i == 0) && self->do_autoselect)
                ide_omni_search_group_select_first (ptr->group);
            }
          break;
        }
    }
}