Skip to content

Instantly share code, notes, and snippets.

@lanoxx
Created March 3, 2017 22:01
Show Gist options
  • Select an option

  • Save lanoxx/10929bca7a0d34b5cb2552b2b6e74149 to your computer and use it in GitHub Desktop.

Select an option

Save lanoxx/10929bca7a0d34b5cb2552b2b6e74149 to your computer and use it in GitHub Desktop.
// custom-cell-renderer-text.h
#ifndef CUSTOM_CELL_RENDERER_H
#define CUSTOM_CELL_RENDERER_H
#include <gtk/gtk.h>
G_DECLARE_FINAL_TYPE (CustomCellRendererText,
custom_cell_renderer_text,
CUSTOM, CELL_RENDERER_TEXT,
GtkCellRendererText)
#define CUSTOM_TYPE_CELL_RENDERER_TEXT custom_cell_renderer_text_get_type()
GtkCellRenderer *custom_cell_renderer_text_new(void);
#endif //CUSTOM_CELL_RENDERER_H
// custom-cell-renderer-text.c
#include "custom-cell-renderer.h"
struct _CustomCellRendererText {
GtkCellRendererText renderer;
};
G_DEFINE_TYPE(CustomCellRendererText,
custom_cell_renderer_text,
GTK_TYPE_CELL_RENDERER_TEXT);
static void custom_cell_renderer_text_render(GtkCellRenderer *cell,
cairo_t *cr,
GtkWidget *widget,
const GdkRectangle *backarea,
const GdkRectangle *cellarea,
GtkCellRendererState state)
{
if (state & GTK_CELL_RENDERER_PRELIT) {
const PangoUnderline prelit = PANGO_UNDERLINE_SINGLE;
PangoUnderline curr;
g_object_get(cell, "underline", &curr, NULL);
g_object_set(cell, "underline", prelit, NULL);
((GtkCellRendererClass *)custom_cell_renderer_text_parent_class)->render(cell, cr, widget, backarea, cellarea, state);
g_object_set(cell, "underline", curr, NULL);
} else
((GtkCellRendererClass *)custom_cell_renderer_text_parent_class)->render(cell, cr, widget, backarea, cellarea, state);
}
static void custom_cell_renderer_text_class_init(CustomCellRendererTextClass *cls)
{
((GtkCellRendererClass *)cls)->render = custom_cell_renderer_text_render;
return;
}
static void custom_cell_renderer_text_init(CustomCellRendererText *renderer)
{
return;
}
GtkCellRenderer *custom_cell_renderer_text_new(void)
{
return g_object_new(CUSTOM_TYPE_CELL_RENDERER_TEXT, NULL);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment