static void gtk_app_chooser_button_populate (GtkAppChooserButton *self) { GList *recommended_apps = NULL, *l; GAppInfo *app; GtkTreeIter iter, iter2; GIcon *icon; gboolean cycled_recommended; #ifndef G_OS_WIN32 if (self->priv->content_type) recommended_apps = g_app_info_get_recommended_for_type (self->priv->content_type); #endif cycled_recommended = FALSE; for (l = recommended_apps; l != NULL; l = l->next) { app = l->data; icon = g_app_info_get_icon (app); if (icon == NULL) icon = g_themed_icon_new ("application-x-executable"); else g_object_ref (icon); if (cycled_recommended) { gtk_list_store_insert_after (self->priv->store, &iter2, &iter); iter = iter2; } else { get_first_iter (self->priv->store, &iter); cycled_recommended = TRUE; } gtk_list_store_set (self->priv->store, &iter, COLUMN_APP_INFO, app, COLUMN_LABEL, g_app_info_get_name (app), COLUMN_ICON, icon, COLUMN_CUSTOM, FALSE, -1); g_object_unref (icon); } if (!cycled_recommended) gtk_app_chooser_button_ensure_dialog_item (self, NULL); else gtk_app_chooser_button_ensure_dialog_item (self, &iter); gtk_combo_box_set_active (GTK_COMBO_BOX (self), 0); }
static void gtk_app_chooser_button_populate (GtkAppChooserButton *self) { GList *recommended_apps = NULL, *l; GAppInfo *app, *default_app = NULL; GtkTreeIter iter, iter2; gboolean cycled_recommended; #ifndef G_OS_WIN32 if (self->priv->content_type) recommended_apps = g_app_info_get_recommended_for_type (self->priv->content_type); #endif cycled_recommended = FALSE; if (self->priv->show_default_item) { if (self->priv->content_type) default_app = g_app_info_get_default_for_type (self->priv->content_type, FALSE); if (default_app != NULL) { get_first_iter (self->priv->store, &iter); cycled_recommended = TRUE; insert_one_application (self, default_app, &iter); g_object_unref (default_app); } } for (l = recommended_apps; l != NULL; l = l->next) { app = l->data; if (default_app != NULL && g_app_info_equal (app, default_app)) continue; if (cycled_recommended) { gtk_list_store_insert_after (self->priv->store, &iter2, &iter); iter = iter2; } else { get_first_iter (self->priv->store, &iter); cycled_recommended = TRUE; } insert_one_application (self, app, &iter); } if (recommended_apps != NULL) g_list_free_full (recommended_apps, g_object_unref); if (!cycled_recommended) gtk_app_chooser_button_ensure_dialog_item (self, NULL); else gtk_app_chooser_button_ensure_dialog_item (self, &iter); gtk_combo_box_set_active (GTK_COMBO_BOX (self), 0); }