Created
March 3, 2017 22:01
-
-
Save lanoxx/10929bca7a0d34b5cb2552b2b6e74149 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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