[gnome-software] category tile: Derive directly from GtkButton



commit 9060c8295f87c7adcd7b14d9d1596217ded51312
Author: Kalev Lember <kalevlember gmail com>
Date:   Sun Aug 3 12:42:38 2014 +0200

    category tile: Derive directly from GtkButton

 src/category-tile.ui   |   21 ++++++++-------------
 src/gs-category-tile.c |   30 +-----------------------------
 src/gs-category-tile.h |    6 ++----
 3 files changed, 11 insertions(+), 46 deletions(-)
---
diff --git a/src/category-tile.ui b/src/category-tile.ui
index 98f160e..2c825f0 100644
--- a/src/category-tile.ui
+++ b/src/category-tile.ui
@@ -1,22 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.10 -->
-  <template class="GsCategoryTile" parent="GtkBin">
+  <template class="GsCategoryTile" parent="GtkButton">
     <property name="visible">True</property>
+    <style>
+      <class name="view"/>
+      <class name="tile"/>
+    </style>
     <child>
-      <object class="GtkButton" id="button">
+      <object class="GtkLabel" id="label">
         <property name="visible">True</property>
-        <style>
-          <class name="view"/>
-          <class name="tile"/>
-        </style>
-        <child>
-          <object class="GtkLabel" id="label">
-            <property name="visible">True</property>
-            <property name="margin">12</property>
-            <property name="xalign">0</property>
-          </object>
-        </child>
+        <property name="margin">12</property>
+        <property name="xalign">0</property>
       </object>
     </child>
   </template>
diff --git a/src/gs-category-tile.c b/src/gs-category-tile.c
index 34a8284..14cca99 100644
--- a/src/gs-category-tile.c
+++ b/src/gs-category-tile.c
@@ -29,18 +29,10 @@
 struct _GsCategoryTilePrivate
 {
        GsCategory      *cat;
-       GtkWidget       *button;
        GtkWidget       *label;
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE (GsCategoryTile, gs_category_tile, GTK_TYPE_BIN)
-
-enum {
-       SIGNAL_CLICKED,
-       SIGNAL_LAST
-};
-
-static guint signals [SIGNAL_LAST] = { 0 };
+G_DEFINE_TYPE_WITH_PRIVATE (GsCategoryTile, gs_category_tile, GTK_TYPE_BUTTON)
 
 GsCategory *
 gs_category_tile_get_category (GsCategoryTile *tile)
@@ -83,41 +75,21 @@ gs_category_tile_destroy (GtkWidget *widget)
 }
 
 static void
-button_clicked (GsCategoryTile *tile)
-{
-       g_signal_emit (tile, signals[SIGNAL_CLICKED], 0);
-}
-
-static void
 gs_category_tile_init (GsCategoryTile *tile)
 {
-       GsCategoryTilePrivate *priv;
-
        gtk_widget_set_has_window (GTK_WIDGET (tile), FALSE);
        gtk_widget_init_template (GTK_WIDGET (tile));
-       priv = gs_category_tile_get_instance_private (tile);
-       g_signal_connect_swapped (priv->button, "clicked",
-                                 G_CALLBACK (button_clicked), tile);
 }
 
 static void
 gs_category_tile_class_init (GsCategoryTileClass *klass)
 {
-       GObjectClass *object_class = G_OBJECT_CLASS (klass);
        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
        widget_class->destroy = gs_category_tile_destroy;
 
-       signals [SIGNAL_CLICKED] =
-               g_signal_new ("clicked",
-                             G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (GsCategoryTileClass, clicked),
-                             NULL, NULL, g_cclosure_marshal_VOID__VOID,
-                             G_TYPE_NONE, 0);
-
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/category-tile.ui");
 
-       gtk_widget_class_bind_template_child_private (widget_class, GsCategoryTile, button);
        gtk_widget_class_bind_template_child_private (widget_class, GsCategoryTile, label);
 }
 
diff --git a/src/gs-category-tile.h b/src/gs-category-tile.h
index 5426fae..a7b6b62 100644
--- a/src/gs-category-tile.h
+++ b/src/gs-category-tile.h
@@ -41,15 +41,13 @@ typedef struct _GsCategoryTilePrivate               GsCategoryTilePrivate;
 
 struct _GsCategoryTile
 {
-       GtkBin             parent;
+       GtkButton                parent;
        GsCategoryTilePrivate   *priv;
 };
 
 struct _GsCategoryTileClass
 {
-       GtkBinClass      parent_class;
-
-       void                    (*clicked)      (GsCategoryTile *tile);
+       GtkButtonClass           parent_class;
 };
 
 GType           gs_category_tile_get_type              (void);


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