diff options
Diffstat (limited to 'endless/eoscellrendererpixbuflink.c')
-rw-r--r-- | endless/eoscellrendererpixbuflink.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/endless/eoscellrendererpixbuflink.c b/endless/eoscellrendererpixbuflink.c new file mode 100644 index 0000000..c3af966 --- /dev/null +++ b/endless/eoscellrendererpixbuflink.c @@ -0,0 +1,59 @@ +/* Copyright 2015 Endless Mobile, Inc. */ + +#include <gtk/gtk.h> + +#include "eoscellrendererpixbuflink-private.h" + +G_DEFINE_TYPE (EosCellRendererPixbufLink, eos_cell_renderer_pixbuf_link, GTK_TYPE_CELL_RENDERER_PIXBUF) + +enum { + CLICKED, + LAST_SIGNAL +}; + +static guint pixbuf_link_signals[LAST_SIGNAL] = { 0 }; + +static gboolean +eos_cell_renderer_pixbuf_link_activate (GtkCellRenderer *renderer, + GdkEvent *event, + GtkWidget *widget, + const gchar *path, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + g_signal_emit (renderer, pixbuf_link_signals[CLICKED], 0, path); + return TRUE; +} + +static void +eos_cell_renderer_pixbuf_link_class_init (EosCellRendererPixbufLinkClass *klass) +{ + GtkCellRendererClass *renderer_class = GTK_CELL_RENDERER_CLASS (klass); + + renderer_class->activate = eos_cell_renderer_pixbuf_link_activate; + + pixbuf_link_signals[CLICKED] = + g_signal_new ("clicked", EOS_TYPE_CELL_RENDERER_PIXBUF_LINK, + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, G_TYPE_STRING); +} + +static void +eos_cell_renderer_pixbuf_link_init (EosCellRendererPixbufLink *self) +{ + g_object_set (self, + "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, + NULL); +} + +GtkCellRenderer * +eos_cell_renderer_pixbuf_link_new (void) +{ + return GTK_CELL_RENDERER (g_object_new (EOS_TYPE_CELL_RENDERER_PIXBUF_LINK, + NULL)); +} |