event-widget: simplify rendering code
This commit is contained in:
+10
-18
@@ -29,10 +29,10 @@ struct _GcalEventWidget
|
|||||||
/* properties */
|
/* properties */
|
||||||
GDateTime *dt_start;
|
GDateTime *dt_start;
|
||||||
GDateTime *dt_end;
|
GDateTime *dt_end;
|
||||||
gboolean has_reminders;
|
|
||||||
|
|
||||||
/* internal data */
|
/* internal data */
|
||||||
gboolean read_only;
|
gboolean has_reminders : 1;
|
||||||
|
gboolean read_only : 1;
|
||||||
gchar *css_class;
|
gchar *css_class;
|
||||||
|
|
||||||
GcalEvent *event;
|
GcalEvent *event;
|
||||||
@@ -453,11 +453,13 @@ gcal_event_widget_draw (GtkWidget *widget,
|
|||||||
pango_layout_set_width (layout, (width - (padding.left + padding.right) ) * PANGO_SCALE);
|
pango_layout_set_width (layout, (width - (padding.left + padding.right) ) * PANGO_SCALE);
|
||||||
pango_cairo_update_layout (cr, layout);
|
pango_cairo_update_layout (cr, layout);
|
||||||
|
|
||||||
|
/* Icon size */
|
||||||
|
pango_layout_get_pixel_size (layout, NULL, &layout_height);
|
||||||
|
icon_size = 4 * (layout_height / 4);
|
||||||
|
|
||||||
left_gap = 0;
|
left_gap = 0;
|
||||||
if (self->has_reminders)
|
if (self->has_reminders)
|
||||||
{
|
{
|
||||||
pango_layout_get_pixel_size (layout, NULL, &layout_height);
|
|
||||||
icon_size = layout_height;
|
|
||||||
left_gap = icon_size + padding.left;
|
left_gap = icon_size + padding.left;
|
||||||
pango_layout_set_width (layout, (width - (left_gap + padding.left + padding.right) ) * PANGO_SCALE);
|
pango_layout_set_width (layout, (width - (left_gap + padding.left + padding.right) ) * PANGO_SCALE);
|
||||||
}
|
}
|
||||||
@@ -465,12 +467,6 @@ gcal_event_widget_draw (GtkWidget *widget,
|
|||||||
right_gap = 0;
|
right_gap = 0;
|
||||||
if (self->read_only)
|
if (self->read_only)
|
||||||
{
|
{
|
||||||
if (icon_size == 0)
|
|
||||||
{
|
|
||||||
pango_layout_get_pixel_size (layout, NULL, &layout_height);
|
|
||||||
icon_size = layout_height;
|
|
||||||
}
|
|
||||||
|
|
||||||
right_gap = icon_size + padding.right;
|
right_gap = icon_size + padding.right;
|
||||||
pango_layout_set_width (layout, (width - (left_gap + padding.left + padding.right + right_gap) ) * PANGO_SCALE);
|
pango_layout_set_width (layout, (width - (left_gap + padding.left + padding.right + right_gap) ) * PANGO_SCALE);
|
||||||
}
|
}
|
||||||
@@ -484,20 +480,18 @@ gcal_event_widget_draw (GtkWidget *widget,
|
|||||||
GtkIconInfo *icon_info;
|
GtkIconInfo *icon_info;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
gboolean was_symbolic;
|
gboolean was_symbolic;
|
||||||
gint multiplier;
|
|
||||||
|
|
||||||
multiplier = icon_size / 16;
|
|
||||||
icon_theme = gtk_icon_theme_get_default ();
|
icon_theme = gtk_icon_theme_get_default ();
|
||||||
icon_info = gtk_icon_theme_lookup_icon (icon_theme,
|
icon_info = gtk_icon_theme_lookup_icon (icon_theme,
|
||||||
"alarm-symbolic",
|
"alarm-symbolic",
|
||||||
16 * multiplier,
|
icon_size,
|
||||||
0);
|
0);
|
||||||
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info,
|
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info,
|
||||||
context,
|
context,
|
||||||
&was_symbolic,
|
&was_symbolic,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
gdk_cairo_set_source_pixbuf (cr, pixbuf, padding.left, padding.top + ((icon_size - (16 * multiplier)) / 2));
|
gdk_cairo_set_source_pixbuf (cr, pixbuf, padding.left, padding.top);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
cairo_paint (cr);
|
cairo_paint (cr);
|
||||||
}
|
}
|
||||||
@@ -509,20 +503,18 @@ gcal_event_widget_draw (GtkWidget *widget,
|
|||||||
GtkIconInfo *icon_info;
|
GtkIconInfo *icon_info;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
gboolean was_symbolic;
|
gboolean was_symbolic;
|
||||||
gint multiplier;
|
|
||||||
|
|
||||||
multiplier = icon_size / 16;
|
|
||||||
icon_theme = gtk_icon_theme_get_default ();
|
icon_theme = gtk_icon_theme_get_default ();
|
||||||
icon_info = gtk_icon_theme_lookup_icon (icon_theme,
|
icon_info = gtk_icon_theme_lookup_icon (icon_theme,
|
||||||
"changes-prevent-symbolic",
|
"changes-prevent-symbolic",
|
||||||
16 * multiplier,
|
icon_size,
|
||||||
0);
|
0);
|
||||||
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info,
|
pixbuf = gtk_icon_info_load_symbolic_for_context (icon_info,
|
||||||
context,
|
context,
|
||||||
&was_symbolic,
|
&was_symbolic,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
gdk_cairo_set_source_pixbuf (cr, pixbuf, width - right_gap, padding.top + ((icon_size - (16 * multiplier)) / 2));
|
gdk_cairo_set_source_pixbuf (cr, pixbuf, width - right_gap, padding.top);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
cairo_paint (cr);
|
cairo_paint (cr);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user