[gnome-software/wip/installed_updates: 15/16] Rename GsAppWidget to GsAppRow



commit 6aeb09ee3e26cdfcec985ef5fed17a9f763370e3
Author: Kalev Lember <kalevlember gmail com>
Date:   Sun May 11 00:07:06 2014 +0200

    Rename GsAppWidget to GsAppRow
    
    ... and derive it from GtkListBoxRow instead of GtkBin.

 src/Makefile.am                       |    6 +-
 src/gnome-software.gresource.xml      |    2 +-
 src/{gs-app-widget.c => gs-app-row.c} |  200 ++++++++++++++++----------------
 src/gs-app-row.h                      |   79 +++++++++++++
 src/{app-widget.ui => gs-app-row.ui}  |    8 +-
 src/gs-app-widget.h                   |   79 -------------
 src/gs-shell-installed.c              |  103 +++++++----------
 src/gs-shell-search.c                 |   48 ++++-----
 src/gs-shell-updates.c                |   32 ++----
 src/gs-update-dialog.c                |   18 ++--
 10 files changed, 272 insertions(+), 303 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 7900e43..f821dba 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -28,10 +28,10 @@ UI_FILES =                                          \
        app-folder-dialog.ui                            \
        app-menu.ui                                     \
        app-tile.ui                                     \
-       app-widget.ui                                   \
        category-tile.ui                                \
        feature-tile.ui                                 \
        gnome-software.ui                               \
+       gs-app-row.ui                                   \
        gs-history-dialog.ui                            \
        gs-shell-category.ui                            \
        gs-shell-details.ui                             \
@@ -95,8 +95,8 @@ gnome_software_SOURCES =                              \
        gs-app.h                                        \
        gs-category.c                                   \
        gs-category.h                                   \
-       gs-app-widget.c                                 \
-       gs-app-widget.h                                 \
+       gs-app-row.c                                    \
+       gs-app-row.h                                    \
        gs-star-widget.c                                \
        gs-star-widget.h                                \
        gs-popular-tile.c                               \
diff --git a/src/gnome-software.gresource.xml b/src/gnome-software.gresource.xml
index aaa8879..70cee3a 100644
--- a/src/gnome-software.gresource.xml
+++ b/src/gnome-software.gresource.xml
@@ -7,9 +7,9 @@
   <file preprocess="xml-stripblanks">feature-tile.ui</file>
   <file preprocess="xml-stripblanks">category-tile.ui</file>
   <file preprocess="xml-stripblanks">app-tile.ui</file>
-  <file preprocess="xml-stripblanks">app-widget.ui</file>
   <file preprocess="xml-stripblanks">app-folder-dialog.ui</file>
   <file preprocess="xml-stripblanks">screenshot-image.ui</file>
+  <file preprocess="xml-stripblanks">gs-app-row.ui</file>
   <file preprocess="xml-stripblanks">gs-history-dialog.ui</file>
   <file preprocess="xml-stripblanks">gs-shell-category.ui</file>
   <file preprocess="xml-stripblanks">gs-shell-details.ui</file>
diff --git a/src/gs-app-widget.c b/src/gs-app-row.c
similarity index 68%
rename from src/gs-app-widget.c
rename to src/gs-app-row.c
index c565456..ac2ef5f 100644
--- a/src/gs-app-widget.c
+++ b/src/gs-app-row.c
@@ -25,13 +25,13 @@
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 
-#include "gs-app-widget.h"
+#include "gs-app-row.h"
 #include "gs-star-widget.h"
 #include "gs-markdown.h"
 #include "gs-utils.h"
 #include "gs-folders.h"
 
-struct _GsAppWidgetPrivate
+struct _GsAppRowPrivate
 {
        GsApp           *app;
        GtkWidget       *image;
@@ -51,7 +51,7 @@ struct _GsAppWidgetPrivate
        gboolean         selectable;
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE (GsAppWidget, gs_app_widget, GTK_TYPE_BIN)
+G_DEFINE_TYPE_WITH_PRIVATE (GsAppRow, gs_app_row, GTK_TYPE_LIST_BOX_ROW)
 
 enum {
        PROP_ZERO,
@@ -66,15 +66,15 @@ enum {
 static guint signals [SIGNAL_LAST] = { 0 };
 
 /**
- * gs_app_widget_get_description:
+ * gs_app_row_get_description:
  *
  * Return value: PangoMarkup
  **/
 static GString *
-gs_app_widget_get_description (GsAppWidget *app_widget)
+gs_app_row_get_description (GsAppRow *app_row)
 {
        GString *str = NULL;
-       GsAppWidgetPrivate *priv = app_widget->priv;
+       GsAppRowPrivate *priv = app_row->priv;
        GsMarkdown *markdown = NULL;
        const gchar *tmp = NULL;
        gchar *escaped = NULL;
@@ -113,22 +113,22 @@ out:
 }
 
 /**
- * gs_app_widget_refresh:
+ * gs_app_row_refresh:
  **/
 void
-gs_app_widget_refresh (GsAppWidget *app_widget)
+gs_app_row_refresh (GsAppRow *app_row)
 {
-       GsAppWidgetPrivate *priv = app_widget->priv;
+       GsAppRowPrivate *priv = app_row->priv;
        GtkStyleContext *context;
        GString *str = NULL;
        GsFolders *folders;
        const gchar *folder;
 
-       if (app_widget->priv->app == NULL)
+       if (app_row->priv->app == NULL)
                return;
 
        /* join the lines*/
-       str = gs_app_widget_get_description (app_widget);
+       str = gs_app_row_get_description (app_row);
        gs_string_replace (str, "\n", " ");
        gtk_label_set_markup (GTK_LABEL (priv->description_label), str->str);
        g_string_free (str, TRUE);
@@ -181,7 +181,7 @@ gs_app_widget_refresh (GsAppWidget *app_widget)
        context = gtk_widget_get_style_context (priv->button);
        gtk_style_context_remove_class (context, "destructive-action");
 
-       switch (gs_app_get_state (app_widget->priv->app)) {
+       switch (gs_app_get_state (app_row->priv->app)) {
        case GS_APP_STATE_UNAVAILABLE:
                gtk_widget_set_visible (priv->button, TRUE);
                /* TRANSLATORS: this is a button next to the search results that
@@ -207,8 +207,8 @@ gs_app_widget_refresh (GsAppWidget *app_widget)
                break;
        case GS_APP_STATE_UPDATABLE:
        case GS_APP_STATE_INSTALLED:
-               if (gs_app_get_kind (app_widget->priv->app) != GS_APP_KIND_SYSTEM &&
-                   !app_widget->priv->show_update)
+               if (gs_app_get_kind (app_row->priv->app) != GS_APP_KIND_SYSTEM &&
+                   !app_row->priv->show_update)
                        gtk_widget_set_visible (priv->button, TRUE);
                /* TRANSLATORS: this is a button next to the search results that
                 * allows the application to be easily removed */
@@ -251,66 +251,66 @@ gs_app_widget_refresh (GsAppWidget *app_widget)
 }
 
 /**
- * gs_app_widget_get_app:
+ * gs_app_row_get_app:
  **/
 GsApp *
-gs_app_widget_get_app (GsAppWidget *app_widget)
+gs_app_row_get_app (GsAppRow *app_row)
 {
-       g_return_val_if_fail (GS_IS_APP_WIDGET (app_widget), NULL);
-       return app_widget->priv->app;
+       g_return_val_if_fail (GS_IS_APP_ROW (app_row), NULL);
+       return app_row->priv->app;
 }
 
 /**
- * gs_app_widget_notify_props_changed_cb:
+ * gs_app_row_notify_props_changed_cb:
  **/
 static void
-gs_app_widget_notify_props_changed_cb (GsApp *app,
-                                      GParamSpec *pspec,
-                                      GsAppWidget *app_widget)
+gs_app_row_notify_props_changed_cb (GsApp *app,
+                                    GParamSpec *pspec,
+                                    GsAppRow *app_row)
 {
-       gs_app_widget_refresh (app_widget);
+       gs_app_row_refresh (app_row);
 }
 
 /**
- * gs_app_widget_set_app:
+ * gs_app_row_set_app:
  **/
 void
-gs_app_widget_set_app (GsAppWidget *app_widget, GsApp *app)
+gs_app_row_set_app (GsAppRow *app_row, GsApp *app)
 {
-       g_return_if_fail (GS_IS_APP_WIDGET (app_widget));
+       g_return_if_fail (GS_IS_APP_ROW (app_row));
        g_return_if_fail (GS_IS_APP (app));
-       app_widget->priv->app = g_object_ref (app);
-       g_signal_connect_object (app_widget->priv->app, "notify::state",
-                                G_CALLBACK (gs_app_widget_notify_props_changed_cb),
-                                app_widget, 0);
-       g_signal_connect_object (app_widget->priv->app, "notify::rating",
-                                G_CALLBACK (gs_app_widget_notify_props_changed_cb),
-                                app_widget, 0);
-       gs_app_widget_refresh (app_widget);
+       app_row->priv->app = g_object_ref (app);
+       g_signal_connect_object (app_row->priv->app, "notify::state",
+                                G_CALLBACK (gs_app_row_notify_props_changed_cb),
+                                app_row, 0);
+       g_signal_connect_object (app_row->priv->app, "notify::rating",
+                                G_CALLBACK (gs_app_row_notify_props_changed_cb),
+                                app_row, 0);
+       gs_app_row_refresh (app_row);
 }
 
 /**
- * gs_app_widget_destroy:
+ * gs_app_row_destroy:
  **/
 static void
-gs_app_widget_destroy (GtkWidget *object)
+gs_app_row_destroy (GtkWidget *object)
 {
-       GsAppWidget *app_widget = GS_APP_WIDGET (object);
-       GsAppWidgetPrivate *priv = app_widget->priv;
+       GsAppRow *app_row = GS_APP_ROW (object);
+       GsAppRowPrivate *priv = app_row->priv;
 
        g_clear_object (&priv->app);
 
-       GTK_WIDGET_CLASS (gs_app_widget_parent_class)->destroy (object);
+       GTK_WIDGET_CLASS (gs_app_row_parent_class)->destroy (object);
 }
 
 static void
-gs_app_widget_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gs_app_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
-       GsAppWidget *app_widget = GS_APP_WIDGET (object);
+       GsAppRow *app_row = GS_APP_ROW (object);
 
         switch (prop_id) {
         case PROP_SELECTED:
-               gs_app_widget_set_selected (app_widget, g_value_get_boolean (value));
+               gs_app_row_set_selected (app_row, g_value_get_boolean (value));
                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -319,13 +319,13 @@ gs_app_widget_set_property (GObject *object, guint prop_id, const GValue *value,
 }
 
 static void
-gs_app_widget_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gs_app_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
-       GsAppWidget *app_widget = GS_APP_WIDGET (object);
+       GsAppRow *app_row = GS_APP_ROW (object);
 
         switch (prop_id) {
         case PROP_SELECTED:
-               g_value_set_boolean (value, gs_app_widget_get_selected (app_widget));
+               g_value_set_boolean (value, gs_app_row_get_selected (app_row));
                break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -334,16 +334,16 @@ gs_app_widget_get_property (GObject *object, guint prop_id, GValue *value, GPara
 }
 
 static void
-gs_app_widget_class_init (GsAppWidgetClass *klass)
+gs_app_row_class_init (GsAppRowClass *klass)
 {
        GParamSpec *pspec;
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
-       object_class->set_property = gs_app_widget_set_property;
-       object_class->get_property = gs_app_widget_get_property;
+       object_class->set_property = gs_app_row_set_property;
+       object_class->get_property = gs_app_row_get_property;
 
-       widget_class->destroy = gs_app_widget_destroy;
+       widget_class->destroy = gs_app_row_destroy;
 
        pspec = g_param_spec_boolean ("selected", NULL, NULL,
                                      FALSE, G_PARAM_READWRITE);
@@ -352,117 +352,117 @@ gs_app_widget_class_init (GsAppWidgetClass *klass)
        signals [SIGNAL_BUTTON_CLICKED] =
                g_signal_new ("button-clicked",
                              G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (GsAppWidgetClass, button_clicked),
+                             G_STRUCT_OFFSET (GsAppRowClass, button_clicked),
                              NULL, NULL, g_cclosure_marshal_VOID__VOID,
                              G_TYPE_NONE, 0);
 
-       gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/software/app-widget.ui");
-
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, image);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, name_box);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, name_label);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, version_label);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, star);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, folder_label);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, description_label);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, button_box);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, button);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, spinner);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, label);
-       gtk_widget_class_bind_template_child_private (widget_class, GsAppWidget, checkbox);
+       gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/software/gs-app-row.ui");
+
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, image);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, name_box);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, name_label);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, version_label);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, star);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, folder_label);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, description_label);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, button_box);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, button);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, spinner);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, label);
+       gtk_widget_class_bind_template_child_private (widget_class, GsAppRow, checkbox);
 }
 
 static void
-button_clicked (GtkWidget *widget, GsAppWidget *app_widget)
+button_clicked (GtkWidget *widget, GsAppRow *app_row)
 {
-       g_signal_emit (app_widget, signals[SIGNAL_BUTTON_CLICKED], 0);
+       g_signal_emit (app_row, signals[SIGNAL_BUTTON_CLICKED], 0);
 }
 
 static void
-checkbox_toggled (GtkWidget *widget, GsAppWidget *app_widget)
+checkbox_toggled (GtkWidget *widget, GsAppRow *app_row)
 {
-       g_object_notify (G_OBJECT (app_widget), "selected");
+       g_object_notify (G_OBJECT (app_row), "selected");
 }
 
 static void
-gs_app_widget_init (GsAppWidget *app_widget)
+gs_app_row_init (GsAppRow *app_row)
 {
-       GsAppWidgetPrivate *priv;
+       GsAppRowPrivate *priv;
 
-       priv = gs_app_widget_get_instance_private (app_widget);
-       app_widget->priv = priv;
+       priv = gs_app_row_get_instance_private (app_row);
+       app_row->priv = priv;
 
-       gtk_widget_set_has_window (GTK_WIDGET (app_widget), FALSE);
-       gtk_widget_init_template (GTK_WIDGET (app_widget));
+       gtk_widget_set_has_window (GTK_WIDGET (app_row), FALSE);
+       gtk_widget_init_template (GTK_WIDGET (app_row));
 
        priv->colorful = TRUE;
 
        g_signal_connect (priv->button, "clicked",
-                         G_CALLBACK (button_clicked), app_widget);
+                         G_CALLBACK (button_clicked), app_row);
        g_signal_connect (priv->checkbox, "toggled",
-                         G_CALLBACK (checkbox_toggled), app_widget);
+                         G_CALLBACK (checkbox_toggled), app_row);
 }
 
 void
-gs_app_widget_set_size_groups (GsAppWidget  *app_widget,
-                              GtkSizeGroup *image,
-                              GtkSizeGroup *name)
+gs_app_row_set_size_groups (GsAppRow *app_row,
+                            GtkSizeGroup *image,
+                            GtkSizeGroup *name)
 {
-       gtk_size_group_add_widget (image, app_widget->priv->image);
-       gtk_size_group_add_widget (name, app_widget->priv->name_box);
+       gtk_size_group_add_widget (image, app_row->priv->image);
+       gtk_size_group_add_widget (name, app_row->priv->name_box);
 }
 
 void
-gs_app_widget_set_colorful (GsAppWidget *app_widget,
+gs_app_row_set_colorful (GsAppRow *app_row,
                            gboolean     colorful)
 {
-       app_widget->priv->colorful = colorful;
+       app_row->priv->colorful = colorful;
 }
 
 /**
- * gs_app_widget_set_show_update:
+ * gs_app_row_set_show_update:
  *
  * Only really useful for the update panel to call
  **/
 void
-gs_app_widget_set_show_update (GsAppWidget *app_widget, gboolean show_update)
+gs_app_row_set_show_update (GsAppRow *app_row, gboolean show_update)
 {
-       app_widget->priv->show_update = show_update;
+       app_row->priv->show_update = show_update;
 }
 
 void
-gs_app_widget_set_selectable (GsAppWidget *app_widget, gboolean selectable)
+gs_app_row_set_selectable (GsAppRow *app_row, gboolean selectable)
 {
-       app_widget->priv->selectable = selectable;
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_widget->priv->checkbox), FALSE);
-       gs_app_widget_refresh (app_widget);
+       app_row->priv->selectable = selectable;
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox), FALSE);
+       gs_app_row_refresh (app_row);
 }
 
 void
-gs_app_widget_set_selected (GsAppWidget *app_widget, gboolean selected)
+gs_app_row_set_selected (GsAppRow *app_row, gboolean selected)
 {
-       if (!app_widget->priv->selectable)
+       if (!app_row->priv->selectable)
                return;
 
-       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_widget->priv->checkbox)) != selected) {
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_widget->priv->checkbox), selected);
-               g_object_notify (G_OBJECT (app_widget), "selected");
+       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox)) != selected) {
+               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox), selected);
+               g_object_notify (G_OBJECT (app_row), "selected");
        }
 }
 
 gboolean
-gs_app_widget_get_selected (GsAppWidget *app_widget)
+gs_app_row_get_selected (GsAppRow *app_row)
 {
-       if (!app_widget->priv->selectable)
+       if (!app_row->priv->selectable)
                return FALSE;
 
-       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_widget->priv->checkbox));
+       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox));
 }
 
 GtkWidget *
-gs_app_widget_new (void)
+gs_app_row_new (void)
 {
-       return g_object_new (GS_TYPE_APP_WIDGET, NULL);
+       return g_object_new (GS_TYPE_APP_ROW, NULL);
 }
 
 /* vim: set noexpandtab: */
diff --git a/src/gs-app-row.h b/src/gs-app-row.h
new file mode 100644
index 0000000..d3f4ca4
--- /dev/null
+++ b/src/gs-app-row.h
@@ -0,0 +1,79 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2012 Richard Hughes <richard hughsie com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef GS_APP_ROW_H
+#define GS_APP_ROW_H
+
+#include <gtk/gtk.h>
+
+#include "gs-app.h"
+
+#define GS_TYPE_APP_ROW                        (gs_app_row_get_type())
+#define GS_APP_ROW(obj)                        (G_TYPE_CHECK_INSTANCE_CAST((obj), GS_TYPE_APP_ROW, GsAppRow))
+#define GS_APP_ROW_CLASS(cls)          (G_TYPE_CHECK_CLASS_CAST((cls), GS_TYPE_APP_ROW, GsAppRowClass))
+#define GS_IS_APP_ROW(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj), GS_TYPE_APP_ROW))
+#define GS_IS_APP_ROW_CLASS(cls)       (G_TYPE_CHECK_CLASS_TYPE((cls), GS_TYPE_APP_ROW))
+#define GS_APP_ROW_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), GS_TYPE_APP_ROW, GsAppRowClass))
+
+G_BEGIN_DECLS
+
+typedef struct _GsAppRow               GsAppRow;
+typedef struct _GsAppRowClass          GsAppRowClass;
+typedef struct _GsAppRowPrivate                GsAppRowPrivate;
+
+struct _GsAppRow
+{
+       GtkListBoxRow            parent;
+
+       /*< private >*/
+       GsAppRowPrivate         *priv;
+};
+
+struct _GsAppRowClass
+{
+       GtkListBoxRowClass       parent_class;
+       void                    (*button_clicked)       (GsAppRow       *app_row);
+};
+
+GType           gs_app_row_get_type                    (void);
+GtkWidget      *gs_app_row_new                         (void);
+void            gs_app_row_refresh                     (GsAppRow       *app_row);
+void            gs_app_row_set_colorful                (GsAppRow       *app_row,
+                                                        gboolean        colorful);
+void            gs_app_row_set_show_update             (GsAppRow       *app_row,
+                                                        gboolean        show_update);
+void            gs_app_row_set_selectable              (GsAppRow       *app_row,
+                                                        gboolean        selectable);
+void            gs_app_row_set_selected                (GsAppRow       *app_row,
+                                                        gboolean        selected);
+gboolean        gs_app_row_get_selected                (GsAppRow       *app_row);
+GsApp          *gs_app_row_get_app                     (GsAppRow       *app_row);
+void            gs_app_row_set_app                     (GsAppRow       *app_row,
+                                                        GsApp          *app);
+void            gs_app_row_set_size_groups             (GsAppRow       *app_row,
+                                                        GtkSizeGroup   *image,
+                                                        GtkSizeGroup   *name);
+
+G_END_DECLS
+
+#endif /* GS_APP_ROW_H */
+
+/* vim: set noexpandtab: */
diff --git a/src/app-widget.ui b/src/gs-app-row.ui
similarity index 97%
rename from src/app-widget.ui
rename to src/gs-app-row.ui
index 331c24b..d756b67 100644
--- a/src/app-widget.ui
+++ b/src/gs-app-row.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.10 -->
-  <template class="GsAppWidget" parent="GtkBin">
+  <template class="GsAppRow" parent="GtkListBoxRow">
     <property name="visible">True</property>
     <property name="margin-top">16</property>
     <property name="margin-bottom">16</property>
@@ -81,9 +81,9 @@
                 <property name="xalign">0.0</property>
                 <property name="yalign">0.5</property>
                 <property name="halign">start</property>
-               <style>
-                 <class name="folder-label"/>
-               </style>
+                <style>
+                  <class name="folder-label"/>
+                </style>
               </object>
               <packing>
                 <property name="expand">False</property>
diff --git a/src/gs-shell-installed.c b/src/gs-shell-installed.c
index 71bfeb2..653bf7e 100644
--- a/src/gs-shell-installed.c
+++ b/src/gs-shell-installed.c
@@ -29,7 +29,7 @@
 #include "gs-shell-installed.h"
 #include "gs-app.h"
 #include "gs-utils.h"
-#include "gs-app-widget.h"
+#include "gs-app-row.h"
 #include "gs-app-folder-dialog.h"
 #include "gs-folders.h"
 
@@ -78,27 +78,23 @@ gs_shell_installed_invalidate (GsShellInstalled *shell_installed)
 }
 
 static void
-gs_shell_installed_app_widget_activated_cb (GtkListBox *list_box,
-                                           GtkListBoxRow *row,
-                                           GsShellInstalled *shell_installed)
+gs_shell_installed_app_row_activated_cb (GtkListBox *list_box,
+                                         GtkListBoxRow *row,
+                                         GsShellInstalled *shell_installed)
 {
-       GsAppWidget *app_widget;
-
-       app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-
        if (shell_installed->priv->selection_mode) {
                gboolean selected;
-               selected = gs_app_widget_get_selected (app_widget);
-               gs_app_widget_set_selected (app_widget, !selected);
+               selected = gs_app_row_get_selected (GS_APP_ROW (row));
+               gs_app_row_set_selected (GS_APP_ROW (row), !selected);
        } else {
                GsApp *app;
-               app = gs_app_widget_get_app (app_widget);
+               app = gs_app_row_get_app (GS_APP_ROW (row));
                gs_shell_show_app (shell_installed->priv->shell, app);
        }
 }
 
 typedef struct {
-       GsAppWidget             *app_widget;
+       GsAppRow                *app_row;
        GsShellInstalled        *shell_installed;
 } GsShellInstalledHelper;
 
@@ -149,7 +145,7 @@ gs_shell_installed_app_removed_cb (GObject *source,
                                                  res,
                                                  &error);
        if (!ret) {
-               app = gs_app_widget_get_app (helper->app_widget);
+               app = gs_app_row_get_app (helper->app_row);
                g_warning ("failed to remove %s: %s",
                           gs_app_get_id (app),
                           error->message);
@@ -160,13 +156,13 @@ gs_shell_installed_app_removed_cb (GObject *source,
                g_error_free (error);
        } else {
                /* remove from the list */
-               app = gs_app_widget_get_app (helper->app_widget);
+               app = gs_app_row_get_app (helper->app_row);
                g_debug ("removed %s", gs_app_get_id (app));
                gs_shell_installed_remove_row (GTK_LIST_BOX (priv->list_box_install),
-                                              GTK_WIDGET (helper->app_widget));
+                                              GTK_WIDGET (helper->app_row));
        }
 
-       g_object_unref (helper->app_widget);
+       g_object_unref (helper->app_row);
        g_object_unref (helper->shell_installed);
        g_free (helper);
 }
@@ -175,7 +171,7 @@ gs_shell_installed_app_removed_cb (GObject *source,
  * gs_shell_installed_app_remove_cb:
  **/
 static void
-gs_shell_installed_app_remove_cb (GsAppWidget *app_widget,
+gs_shell_installed_app_remove_cb (GsAppRow *app_row,
                                  GsShellInstalled *shell_installed)
 {
        GsApp *app;
@@ -188,7 +184,7 @@ gs_shell_installed_app_remove_cb (GsAppWidget *app_widget,
 
        window = GTK_WINDOW (gtk_builder_get_object (priv->builder, "window_software"));
        markup = g_string_new ("");
-       app = gs_app_widget_get_app (app_widget);
+       app = gs_app_row_get_app (app_row);
        g_string_append_printf (markup,
                                /* TRANSLATORS: this is a prompt message, and
                                 * '%s' is an application summary, e.g. 'GNOME Clocks' */
@@ -216,7 +212,7 @@ gs_shell_installed_app_remove_cb (GsAppWidget *app_widget,
                g_debug ("removing %s", gs_app_get_id (app));
                helper = g_new0 (GsShellInstalledHelper, 1);
                helper->shell_installed = g_object_ref (shell_installed);
-               helper->app_widget = g_object_ref (app_widget);
+               helper->app_row = g_object_ref (app_row);
                gs_plugin_loader_app_action_async (priv->plugin_loader,
                                                   app,
                                                   GS_PLUGIN_LOADER_ACTION_REMOVE,
@@ -245,27 +241,27 @@ static void
 gs_shell_installed_add_app (GsShellInstalled *shell, GsApp *app)
 {
        GsShellInstalledPrivate *priv = shell->priv;
-       GtkWidget *widget;
+       GtkWidget *app_row;
 
-       widget = gs_app_widget_new ();
-       gs_app_widget_set_colorful (GS_APP_WIDGET (widget), FALSE);
-       g_signal_connect (widget, "button-clicked",
+       app_row = gs_app_row_new ();
+       gs_app_row_set_colorful (GS_APP_ROW (app_row), FALSE);
+       g_signal_connect (app_row, "button-clicked",
                          G_CALLBACK (gs_shell_installed_app_remove_cb), shell);
        g_signal_connect_object (app, "notify::state",
                                 G_CALLBACK (gs_shell_installed_notify_state_changed_cb),
                                 shell, 0);
-       g_signal_connect_swapped (widget, "notify::selected",
+       g_signal_connect_swapped (app_row, "notify::selected",
                                  G_CALLBACK (selection_changed), shell);
-       gs_app_widget_set_app (GS_APP_WIDGET (widget), app);
-       gtk_container_add (GTK_CONTAINER (priv->list_box_install), widget);
-       gs_app_widget_set_size_groups (GS_APP_WIDGET (widget),
-                                      priv->sizegroup_image,
-                                      priv->sizegroup_name);
+       gs_app_row_set_app (GS_APP_ROW (app_row), app);
+       gtk_container_add (GTK_CONTAINER (priv->list_box_install), app_row);
+       gs_app_row_set_size_groups (GS_APP_ROW (app_row),
+                                   priv->sizegroup_image,
+                                   priv->sizegroup_name);
 
-       gs_app_widget_set_selectable (GS_APP_WIDGET (widget),
-                                     priv->selection_mode);
+       gs_app_row_set_selectable (GS_APP_ROW (app_row),
+                                  priv->selection_mode);
 
-       gtk_widget_show (widget);
+       gtk_widget_show (app_row);
 }
 
 /**
@@ -440,7 +436,6 @@ gs_shell_installed_sort_func (GtkListBoxRow *a,
                              gpointer user_data)
 {
        GsApp *a1, *a2;
-       GsAppWidget *aw1, *aw2;
        gchar *key1 = NULL;
        gchar *key2 = NULL;
        gint retval = 0;
@@ -451,10 +446,8 @@ gs_shell_installed_sort_func (GtkListBoxRow *a,
                goto out;
        }
 
-       aw1 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (a)));
-       aw2 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (b)));
-       a1 = gs_app_widget_get_app (aw1);
-       a2 = gs_app_widget_get_app (aw2);
+       a1 = gs_app_row_get_app (GS_APP_ROW (a));
+       a2 = gs_app_row_get_app (GS_APP_ROW (b));
        key1 = gs_shell_installed_get_app_sort_key (a1);
        key2 = gs_shell_installed_get_app_sort_key (a2);
 
@@ -489,8 +482,6 @@ gs_shell_installed_list_header_func (GtkListBoxRow *row,
                                     GtkListBoxRow *before,
                                     gpointer user_data)
 {
-       GsAppWidget *aw1;
-       GsAppWidget *aw2;
        GtkStyleContext *context;
        GtkWidget *header;
 
@@ -500,10 +491,8 @@ gs_shell_installed_list_header_func (GtkListBoxRow *row,
                return;
 
        /* desktop -> addons */
-       aw1 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (before)));
-       aw2 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-       if (!gs_shell_installed_is_addon_id_kind (gs_app_widget_get_app (aw1)) &&
-           gs_shell_installed_is_addon_id_kind (gs_app_widget_get_app (aw2))) {
+       if (!gs_shell_installed_is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (before))) &&
+           gs_shell_installed_is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (row)))) {
                /* TRANSLATORS: This is the header dividing the normal
                 * applications and the addons */
                header = gtk_label_new (_("Add-ons"));
@@ -569,8 +558,6 @@ set_selection_mode (GsShellInstalled *shell_installed, gboolean selection_mode)
 {
        GsShellInstalledPrivate *priv = shell_installed->priv;
        GList *children, *l;
-       GtkWidget *row;
-       GtkWidget *app_widget;
        GtkWidget *header;
        GtkWidget *widget;
        GtkStyleContext *context;
@@ -615,10 +602,9 @@ set_selection_mode (GsShellInstalled *shell_installed, gboolean selection_mode)
 
        children = gtk_container_get_children (GTK_CONTAINER (priv->list_box_install));
        for (l = children; l; l = l->next) {
-               row = l->data;
-               app_widget = gtk_bin_get_child (GTK_BIN (row));
-               gs_app_widget_set_selectable (GS_APP_WIDGET (app_widget),
-                                             priv->selection_mode);
+               GsAppRow *app_row = GS_APP_ROW (l->data);
+               gs_app_row_set_selectable (app_row,
+                                          priv->selection_mode);
        }
        g_list_free (children);
 
@@ -642,10 +628,9 @@ get_selected_apps (GsShellInstalled *shell_installed)
        list = NULL;
        children = gtk_container_get_children (GTK_CONTAINER (priv->list_box_install));
        for (l = children; l; l = l->next) {
-               GtkListBoxRow *row = l->data;
-               GsAppWidget *app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-               if (gs_app_widget_get_selected (app_widget)) {
-                       list = g_list_prepend (list, gs_app_widget_get_app (app_widget));       
+               GsAppRow *app_row = GS_APP_ROW (l->data);
+               if (gs_app_row_get_selected (app_row)) {
+                       list = g_list_prepend (list, gs_app_row_get_app (app_row));
                }
        }
        g_list_free (children);
@@ -737,9 +722,8 @@ select_all_cb (GtkMenuItem *item, GsShellInstalled *shell_installed)
 
        children = gtk_container_get_children (GTK_CONTAINER (priv->list_box_install));
        for (l = children; l; l = l->next) {
-               GtkListBoxRow *row = l->data;
-               GsAppWidget *app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-               gs_app_widget_set_selected (app_widget, TRUE);
+               GsAppRow *app_row = GS_APP_ROW (l->data);
+               gs_app_row_set_selected (app_row, TRUE);
        }
        g_list_free (children);
 }
@@ -752,9 +736,8 @@ select_none_cb (GtkMenuItem *item, GsShellInstalled *shell_installed)
 
        children = gtk_container_get_children (GTK_CONTAINER (priv->list_box_install));
        for (l = children; l; l = l->next) {
-               GtkListBoxRow *row = l->data;
-               GsAppWidget *app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-               gs_app_widget_set_selected (app_widget, FALSE);
+               GsAppRow *app_row = GS_APP_ROW (l->data);
+               gs_app_row_set_selected (app_row, FALSE);
        }
        g_list_free (children);
 }
@@ -785,7 +768,7 @@ gs_shell_installed_setup (GsShellInstalled *shell_installed,
 
        /* setup installed */
        g_signal_connect (priv->list_box_install, "row-activated",
-                         G_CALLBACK (gs_shell_installed_app_widget_activated_cb), shell_installed);
+                         G_CALLBACK (gs_shell_installed_app_row_activated_cb), shell_installed);
        gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list_box_install),
                                      gs_shell_installed_list_header_func,
                                      shell_installed, NULL);
diff --git a/src/gs-shell-search.c b/src/gs-shell-search.c
index a7b419c..8509bb4 100644
--- a/src/gs-shell-search.c
+++ b/src/gs-shell-search.c
@@ -28,7 +28,7 @@
 #include "gs-shell.h"
 #include "gs-app.h"
 #include "gs-utils.h"
-#include "gs-app-widget.h"
+#include "gs-app-row.h"
 
 static void    gs_shell_search_finalize        (GObject        *object);
 
@@ -52,15 +52,13 @@ struct GsShellSearchPrivate
 G_DEFINE_TYPE_WITH_PRIVATE (GsShellSearch, gs_shell_search, GTK_TYPE_BIN)
 
 static void
-gs_shell_search_app_widget_activated_cb (GtkListBox *list_box,
-                                        GtkListBoxRow *row,
-                                        GsShellSearch *shell_search)
+gs_shell_search_app_row_activated_cb (GtkListBox *list_box,
+                                      GtkListBoxRow *row,
+                                      GsShellSearch *shell_search)
 {
        GsApp *app;
-       GsAppWidget *app_widget;
 
-       app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-       app = gs_app_widget_get_app (app_widget);
+       app = gs_app_row_get_app (GS_APP_ROW (row));
        gs_shell_show_app (shell_search->priv->shell, app);
 }
 
@@ -220,14 +218,14 @@ gs_shell_search_show_missing_url (GsApp *app)
 }
 
 /**
- * gs_shell_search_app_widget_clicked_cb:
+ * gs_shell_search_app_row_clicked_cb:
  **/
 static void
-gs_shell_search_app_widget_clicked_cb (GsAppWidget *app_widget,
-                                      GsShellSearch *shell_search)
+gs_shell_search_app_row_clicked_cb (GsAppRow *app_row,
+                                    GsShellSearch *shell_search)
 {
        GsApp *app;
-       app = gs_app_widget_get_app (app_widget);
+       app = gs_app_row_get_app (app_row);
        if (gs_app_get_state (app) == GS_APP_STATE_AVAILABLE)
                gs_shell_search_app_install (shell_search, app);
        else if (gs_app_get_state (app) == GS_APP_STATE_INSTALLED)
@@ -251,7 +249,7 @@ gs_shell_search_get_search_cb (GObject *source_object,
        GsShellSearch *shell_search = GS_SHELL_SEARCH (user_data);
        GsShellSearchPrivate *priv = shell_search->priv;
        GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source_object);
-       GtkWidget *widget;
+       GtkWidget *app_row;
 
        gs_stop_spinner (GTK_SPINNER (priv->spinner_search));
 
@@ -274,16 +272,16 @@ gs_shell_search_get_search_cb (GObject *source_object,
        gtk_stack_set_visible_child_name (GTK_STACK (priv->stack_search), "results");
        for (l = list; l != NULL; l = l->next) {
                app = GS_APP (l->data);
-               widget = gs_app_widget_new ();
-               g_signal_connect (widget, "button-clicked",
-                                 G_CALLBACK (gs_shell_search_app_widget_clicked_cb),
+               app_row = gs_app_row_new ();
+               g_signal_connect (app_row, "button-clicked",
+                                 G_CALLBACK (gs_shell_search_app_row_clicked_cb),
                                  shell_search);
-               gs_app_widget_set_app (GS_APP_WIDGET (widget), app);
-               gtk_container_add (GTK_CONTAINER (priv->list_box_search), widget);
-               gs_app_widget_set_size_groups (GS_APP_WIDGET (widget),
-                                              priv->sizegroup_image,
-                                              priv->sizegroup_name);
-               gtk_widget_show (widget);
+               gs_app_row_set_app (GS_APP_ROW (app_row), app);
+               gtk_container_add (GTK_CONTAINER (priv->list_box_search), app_row);
+               gs_app_row_set_size_groups (GS_APP_ROW (app_row),
+                                           priv->sizegroup_image,
+                                           priv->sizegroup_name);
+               gtk_widget_show (app_row);
        }
 
 out: ;
@@ -418,10 +416,8 @@ gs_shell_search_sort_func (GtkListBoxRow *a,
                           GtkListBoxRow *b,
                           gpointer user_data)
 {
-       GsAppWidget *aw1 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (a)));
-       GsAppWidget *aw2 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (b)));
-       GsApp *a1 = gs_app_widget_get_app (aw1);
-       GsApp *a2 = gs_app_widget_get_app (aw2);
+       GsApp *a1 = gs_app_row_get_app (GS_APP_ROW (a));
+       GsApp *a2 = gs_app_row_get_app (GS_APP_ROW (b));
        gchar *key1 = gs_shell_search_get_app_sort_key (a1);
        gchar *key2 = gs_shell_search_get_app_sort_key (a2);
        gint retval;
@@ -488,7 +484,7 @@ gs_shell_search_setup (GsShellSearch *shell_search,
 
        /* setup search */
        g_signal_connect (priv->list_box_search, "row-activated",
-                         G_CALLBACK (gs_shell_search_app_widget_activated_cb), shell_search);
+                         G_CALLBACK (gs_shell_search_app_row_activated_cb), shell_search);
        gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list_box_search),
                                      gs_shell_search_list_header_func,
                                      shell_search, NULL);
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index 3e1cafc..9c3837e 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -28,7 +28,7 @@
 #include "gs-utils.h"
 #include "gs-offline-updates.h"
 #include "gs-app.h"
-#include "gs-app-widget.h"
+#include "gs-app-row.h"
 #include "gs-markdown.h"
 #include "gs-update-dialog.h"
 
@@ -458,13 +458,13 @@ gs_shell_updates_get_updates_cb (GsPluginLoader *plugin_loader,
        }
        for (l = list; l != NULL; l = l->next) {
                app = GS_APP (l->data);
-               widget = gs_app_widget_new ();
-               gs_app_widget_set_show_update (GS_APP_WIDGET (widget), TRUE);
-               gs_app_widget_set_app (GS_APP_WIDGET (widget), app);
+               widget = gs_app_row_new ();
+               gs_app_row_set_show_update (GS_APP_ROW (widget), TRUE);
+               gs_app_row_set_app (GS_APP_ROW (widget), app);
                gtk_container_add (GTK_CONTAINER (priv->list_box_updates), widget);
-               gs_app_widget_set_size_groups (GS_APP_WIDGET (widget),
-                                              priv->sizegroup_image,
-                                              priv->sizegroup_name);
+               gs_app_row_set_size_groups (GS_APP_ROW (widget),
+                                           priv->sizegroup_image,
+                                           priv->sizegroup_name);
                gtk_widget_show (widget);
        }
 
@@ -552,11 +552,9 @@ gs_shell_updates_activated_cb (GtkListBox *list_box,
                               GtkListBoxRow *row,
                               GsShellUpdates *shell_updates)
 {
-       GsAppWidget *app_widget;
        GsApp *app;
 
-       app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-       app = gs_app_widget_get_app (app_widget);
+       app = gs_app_row_get_app (GS_APP_ROW (row));
 
        show_update_details (app, shell_updates);
 }
@@ -584,8 +582,6 @@ gs_shell_updates_list_header_func (GtkListBoxRow *row,
                                   GtkListBoxRow *before,
                                   gpointer user_data)
 {
-       GsAppWidget *aw1;
-       GsAppWidget *aw2;
        GtkStyleContext *context;
        GtkWidget *header;
 
@@ -595,10 +591,8 @@ gs_shell_updates_list_header_func (GtkListBoxRow *row,
                return;
 
        /* desktop -> addons */
-       aw1 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (before)));
-       aw2 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-       if (!gs_shell_updates_is_addon_id_kind (gs_app_widget_get_app (aw1)) &&
-           gs_shell_updates_is_addon_id_kind (gs_app_widget_get_app (aw2))) {
+       if (!gs_shell_updates_is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (before))) &&
+           gs_shell_updates_is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (row)))) {
                /* TRANSLATORS: This is the header dividing the normal
                 * applications and the addons */
                header = gtk_label_new (_("Add-ons"));
@@ -915,10 +909,8 @@ gs_shell_updates_sort_func (GtkListBoxRow *a,
                            GtkListBoxRow *b,
                            gpointer user_data)
 {
-       GsAppWidget *aw1 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (a)));
-       GsAppWidget *aw2 = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (b)));
-       GsApp *a1 = gs_app_widget_get_app (aw1);
-       GsApp *a2 = gs_app_widget_get_app (aw2);
+       GsApp *a1 = gs_app_row_get_app (GS_APP_ROW (a));
+       GsApp *a2 = gs_app_row_get_app (GS_APP_ROW (b));
        gchar *key1 = gs_shell_updates_get_app_sort_key (a1);
        gchar *key2 = gs_shell_updates_get_app_sort_key (a2);
        gint retval;
diff --git a/src/gs-update-dialog.c b/src/gs-update-dialog.c
index 5470b53..86c2717 100644
--- a/src/gs-update-dialog.c
+++ b/src/gs-update-dialog.c
@@ -25,7 +25,7 @@
 #include <gtk/gtk.h>
 
 #include "gs-update-dialog.h"
-#include "gs-app-widget.h"
+#include "gs-app-row.h"
 #include "gs-markdown.h"
 #include "gs-offline-updates.h"
 #include "gs-utils.h"
@@ -145,11 +145,9 @@ installed_updates_row_activated_cb (GtkListBox *list_box,
                                     GtkListBoxRow *row,
                                     GsUpdateDialog *dialog)
 {
-       GsAppWidget *app_widget;
        GsApp *app;
 
-       app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
-       app = gs_app_widget_get_app (app_widget);
+       app = gs_app_row_get_app (GS_APP_ROW (row));
 
        /* save the current stack state for the back button */
        save_back_entry (dialog);
@@ -193,13 +191,13 @@ gs_update_dialog_show_installed_updates (GsUpdateDialog *dialog, GList *installe
        gs_container_remove_all (GTK_CONTAINER (priv->list_box_installed_updates));
        for (l = installed_updates; l != NULL; l = l->next) {
                app = GS_APP (l->data);
-               widget = gs_app_widget_new ();
-               gs_app_widget_set_show_update (GS_APP_WIDGET (widget), TRUE);
-               gs_app_widget_set_app (GS_APP_WIDGET (widget), app);
+               widget = gs_app_row_new ();
+               gs_app_row_set_show_update (GS_APP_ROW (widget), TRUE);
+               gs_app_row_set_app (GS_APP_ROW (widget), app);
                gtk_container_add (GTK_CONTAINER (priv->list_box_installed_updates), widget);
-               gs_app_widget_set_size_groups (GS_APP_WIDGET (widget),
-                                              priv->sizegroup_image,
-                                              priv->sizegroup_name);
+               gs_app_row_set_size_groups (GS_APP_ROW (widget),
+                                           priv->sizegroup_image,
+                                           priv->sizegroup_name);
                gtk_widget_show (widget);
        }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]