aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/e-cal-component-preview.c2
-rw-r--r--calendar/gui/e-cal-list-view.c11
-rw-r--r--calendar/gui/e-calendar-view.c9
-rw-r--r--calendar/gui/e-day-view-time-item.c37
-rw-r--r--calendar/gui/e-day-view-top-item.c43
-rw-r--r--calendar/gui/e-day-view.c115
-rw-r--r--calendar/gui/e-meeting-time-sel.c16
-rw-r--r--calendar/gui/e-meeting-time-sel.h2
-rw-r--r--calendar/gui/e-memo-table.c19
-rw-r--r--calendar/gui/e-task-table.c21
-rw-r--r--calendar/gui/e-week-view-event-item.c38
-rw-r--r--calendar/gui/e-week-view-main-item.c4
-rw-r--r--calendar/gui/e-week-view-titles-item.c15
-rw-r--r--calendar/gui/e-week-view.c196
-rw-r--r--calendar/gui/e-week-view.h2
-rw-r--r--calendar/gui/e-weekday-chooser.c51
16 files changed, 303 insertions, 278 deletions
diff --git a/calendar/gui/e-cal-component-preview.c b/calendar/gui/e-cal-component-preview.c
index fa1aca0253..8b67324f55 100644
--- a/calendar/gui/e-cal-component-preview.c
+++ b/calendar/gui/e-cal-component-preview.c
@@ -440,7 +440,7 @@ e_cal_component_preview_init (ECalComponentPreview *preview)
preview->priv = E_CAL_COMPONENT_PREVIEW_GET_PRIVATE (preview);
g_signal_connect (
- preview, "style-set",
+ preview, "style-updated",
G_CALLBACK (load_comp), NULL);
}
diff --git a/calendar/gui/e-cal-list-view.c b/calendar/gui/e-cal-list-view.c
index 7a0983b422..95eec04f39 100644
--- a/calendar/gui/e-cal-list-view.c
+++ b/calendar/gui/e-cal-list-view.c
@@ -167,8 +167,6 @@ setup_e_table (ECalListView *cal_list_view)
ETableSpecification *specification;
GList *strings;
ECell *cell, *popup_cell;
- GnomeCanvas *canvas;
- GtkStyle *style;
GtkWidget *container;
GtkWidget *widget;
gchar *etspecfile;
@@ -302,15 +300,6 @@ setup_e_table (ECalListView *cal_list_view)
g_object_unref (specification);
g_free (etspecfile);
- /* Make sure text is readable on top of our color coding */
-
- canvas = GNOME_CANVAS (cal_list_view->table->table_canvas);
- style = gtk_widget_get_style (GTK_WIDGET (canvas));
-
- style->fg[GTK_STATE_SELECTED] = style->text[GTK_STATE_NORMAL];
- style->fg[GTK_STATE_ACTIVE] = style->text[GTK_STATE_NORMAL];
- gtk_widget_set_style (GTK_WIDGET (canvas), style);
-
/* Connect signals */
g_signal_connect (
cal_list_view->table, "double_click",
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c
index 1fac6e7855..686327ac2f 100644
--- a/calendar/gui/e-calendar-view.c
+++ b/calendar/gui/e-calendar-view.c
@@ -2029,11 +2029,11 @@ e_calendar_view_get_tooltips (const ECalendarViewEventData *data)
icalcomponent *clone_comp;
time_t t_start, t_end;
ECalendarViewEvent *pevent;
- GtkStyle *style = gtk_widget_get_default_style ();
GtkWidget *widget;
GdkWindow *window;
GdkDisplay *display;
GdkDeviceManager *device_manager;
+ GdkRGBA bg_rgba, fg_rgba;
GQueue *grabbed_keyboards;
ECalComponent *newcomp = e_cal_component_new ();
icaltimezone *zone, *default_zone;
@@ -2047,6 +2047,9 @@ e_calendar_view_get_tooltips (const ECalendarViewEventData *data)
g_return_val_if_fail (data != NULL, FALSE);
g_return_val_if_fail (E_IS_CALENDAR_VIEW (data->cal_view), FALSE);
+ e_utils_get_theme_color (GTK_WIDGET (data->cal_view), "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &bg_rgba);
+ e_utils_get_theme_color (GTK_WIDGET (data->cal_view), "theme_selected_fg_color", E_UTILS_DEFAULT_THEME_SELECTED_FG_COLOR, &fg_rgba);
+
model = e_calendar_view_get_model (data->cal_view);
/* Delete any stray tooltip if left */
@@ -2092,8 +2095,8 @@ e_calendar_view_get_tooltips (const ECalendarViewEventData *data)
gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 0);
ebox = gtk_event_box_new ();
gtk_container_add ((GtkContainer *) ebox, hbox);
- gtk_widget_modify_bg (ebox, GTK_STATE_NORMAL, &(style->bg[GTK_STATE_SELECTED]));
- gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
+ gtk_widget_override_background_color (ebox, GTK_STATE_FLAG_NORMAL, &bg_rgba);
+ gtk_widget_override_color (label, GTK_STATE_FLAG_NORMAL, &fg_rgba);
gtk_box_pack_start ((GtkBox *) box, ebox, FALSE, FALSE, 0);
g_free (tmp);
diff --git a/calendar/gui/e-day-view-time-item.c b/calendar/gui/e-day-view-time-item.c
index b30951bb5b..259e073909 100644
--- a/calendar/gui/e-day-view-time-item.c
+++ b/calendar/gui/e-day-view-time-item.c
@@ -272,7 +272,6 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
EDayViewTimeItem *time_item;
ECalendarView *cal_view;
ECalModel *model;
- GtkStyle *style;
const gchar *suffix;
gchar buffer[64], *midnight_day = NULL, *midnight_month = NULL;
gint time_divisions;
@@ -284,32 +283,30 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
gint max_suffix_width, max_minute_or_suffix_width;
PangoLayout *layout;
PangoContext *context;
- PangoFontDescription *small_font_desc;
PangoFontMetrics *large_font_metrics, *small_font_metrics;
- GdkColor fg, dark;
+ GtkWidget *widget;
+ GdkRGBA fg, dark;
GdkColor mb_color;
time_item = E_DAY_VIEW_TIME_ITEM (canvas_item);
day_view = e_day_view_time_item_get_day_view (time_item);
g_return_if_fail (day_view != NULL);
+ widget = GTK_WIDGET (day_view);
cal_view = E_CALENDAR_VIEW (day_view);
model = e_calendar_view_get_model (cal_view);
time_divisions = e_calendar_view_get_time_divisions (cal_view);
- style = gtk_widget_get_style (GTK_WIDGET (day_view));
- small_font_desc = style->font_desc;
-
context = gtk_widget_get_pango_context (GTK_WIDGET (day_view));
+ small_font_metrics = pango_context_get_metrics (
+ context, NULL,
+ pango_context_get_language (context));
large_font_metrics = pango_context_get_metrics (
context, day_view->large_font_desc,
pango_context_get_language (context));
- small_font_metrics = pango_context_get_metrics (
- context, small_font_desc,
- pango_context_get_language (context));
- fg = style->fg[GTK_STATE_NORMAL];
- dark = style->dark[GTK_STATE_NORMAL];
+ e_utils_get_theme_color (widget, "theme_fg_color,theme_text_color", E_UTILS_DEFAULT_THEME_FG_COLOR, &fg);
+ e_utils_get_theme_color (widget, "theme_base_color", E_UTILS_DEFAULT_THEME_BASE_COLOR, &dark);
/* The start and end of the long horizontal line between hours. */
long_line_x1 =
@@ -496,7 +493,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
* between hours and display as one long string,
* e.g. "14:00" or "2 pm". */
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &dark);
+ gdk_cairo_set_source_rgba (cr, &dark);
cairo_save (cr);
cairo_set_line_width (cr, 0.7);
cairo_move_to (cr, long_line_x1, row_y);
@@ -520,7 +517,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
if (show_midnight_date)
gdk_cairo_set_source_color (cr, &mb_color);
else
- gdk_cairo_set_source_color (cr, &fg);
+ gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
pango_layout_set_text (layout, buffer, -1);
pango_layout_get_pixel_size (layout, &minute_width, NULL);
@@ -541,7 +538,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
* large font. */
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &dark);
+ gdk_cairo_set_source_rgba (cr, &dark);
if (show_midnight_date)
g_snprintf (buffer, sizeof (buffer), "%s", midnight_day);
else
@@ -559,7 +556,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
if (show_midnight_date)
gdk_cairo_set_source_color (cr, &mb_color);
else
- gdk_cairo_set_source_color (cr, &fg);
+ gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
pango_layout_set_text (layout, buffer, -1);
pango_layout_set_font_description (
@@ -578,7 +575,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
/* Within the hour - draw a short line before
* the time. */
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &dark);
+ gdk_cairo_set_source_rgba (cr, &dark);
cairo_set_line_width (cr, 0.7);
cairo_move_to (cr, short_line_x1, row_y);
cairo_line_to (cr, long_line_x2, row_y);
@@ -607,7 +604,7 @@ edvti_draw_zone (GnomeCanvasItem *canvas_item,
if (show_midnight_date)
gdk_cairo_set_source_color (cr, &mb_color);
else
- gdk_cairo_set_source_color (cr, &fg);
+ gdk_cairo_set_source_rgba (cr, &fg);
layout = pango_cairo_create_layout (cr);
pango_layout_set_text (layout, buffer, -1);
pango_layout_set_font_description (
@@ -1061,12 +1058,11 @@ e_day_view_time_item_set_day_view (EDayViewTimeItem *time_item,
/* Returns the minimum width needed for the column, by adding up all the
* maximum widths of the strings. The string widths are all calculated in
- * the style_set handlers of EDayView and EDayViewTimeCanvas. */
+ * the style_updated handlers of EDayView and EDayViewTimeCanvas. */
gint
e_day_view_time_item_get_column_width (EDayViewTimeItem *time_item)
{
EDayView *day_view;
- GtkStyle *style;
gint digit, large_digit_width, max_large_digit_width = 0;
gint max_suffix_width, max_minute_or_suffix_width;
gint column_width_default, column_width_60_min_rows;
@@ -1074,9 +1070,6 @@ e_day_view_time_item_get_column_width (EDayViewTimeItem *time_item)
day_view = e_day_view_time_item_get_day_view (time_item);
g_return_val_if_fail (day_view != NULL, 0);
- style = gtk_widget_get_style (GTK_WIDGET (day_view));
- g_return_val_if_fail (style != NULL, 0);
-
/* Find the maximum width a digit can have. FIXME: We could use pango's
* approximation function, but I worry it won't be precise enough. Also
* it needs a language tag that I don't know where to get. */
diff --git a/calendar/gui/e-day-view-top-item.c b/calendar/gui/e-day-view-top-item.c
index 300170ba07..6ef99f4afb 100644
--- a/calendar/gui/e-day-view-top-item.c
+++ b/calendar/gui/e-day-view-top-item.c
@@ -68,7 +68,7 @@ day_view_top_item_draw_triangle (EDayViewTopItem *top_item,
{
EDayView *day_view;
EDayViewEvent *event;
- GdkColor bg_color;
+ GdkRGBA bg_color;
GdkPoint points[3];
gint c1, c2;
@@ -98,11 +98,11 @@ day_view_top_item_draw_triangle (EDayViewTopItem *top_item,
cairo_save (cr);
/* Fill it in. */
- if (gdk_color_parse (
+ if (gdk_rgba_parse (&bg_color,
e_cal_model_get_color_for_component (
e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
- event->comp_data), &bg_color)) {
- gdk_cairo_set_source_color (cr, &bg_color);
+ event->comp_data))) {
+ gdk_cairo_set_source_rgba (cr, &bg_color);
} else {
gdk_cairo_set_source_color (
cr, &day_view->colors
@@ -139,7 +139,6 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
{
EDayView *day_view;
EDayViewEvent *event;
- GtkStyle *style;
gint start_day, end_day;
gint item_x, item_y, item_w, item_h;
gint text_x, icon_x, icon_y, icon_x_inc;
@@ -152,7 +151,7 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
gboolean draw_start_triangle, draw_end_triangle;
GSList *categories_list, *elem;
PangoLayout *layout;
- GdkColor bg_color;
+ GdkRGBA bg_color, rgba;
cairo_pattern_t *pat;
guint16 red, green, blue;
gdouble cc = 65535.0;
@@ -182,15 +181,14 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
if (!is_comp_data_valid (event))
return;
- style = gtk_widget_get_style (GTK_WIDGET (day_view));
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (
comp, icalcomponent_new_clone (event->comp_data->icalcomp));
- if (gdk_color_parse (
+ if (gdk_rgba_parse (&bg_color,
e_cal_model_get_color_for_component (
e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
- event->comp_data), &bg_color)) {
+ event->comp_data))) {
red = bg_color.red;
green = bg_color.green;
blue = bg_color.blue;
@@ -308,7 +306,8 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
time_width = e_day_view_get_time_string_width (day_view);
- gdk_cairo_set_source_color (cr, &style->fg[GTK_STATE_NORMAL]);
+ e_utils_get_theme_color (GTK_WIDGET (day_view), "theme_fg_color", E_UTILS_DEFAULT_THEME_FG_COLOR, &rgba);
+ gdk_cairo_set_source_rgba (cr, &rgba);
if (event->start > day_view->day_starts[start_day]) {
offset = day_view->first_hour_shown * 60
@@ -574,14 +573,13 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
{
EDayViewTopItem *top_item;
EDayView *day_view;
- GtkStyle *style;
gchar buffer[128];
GtkAllocation allocation;
GdkRectangle clip_rect;
gint canvas_width, canvas_height, left_edge, day, date_width, date_x;
gint item_height, event_num;
PangoLayout *layout;
- GdkColor bg, light, dark;
+ GdkRGBA bg, fg, light, dark;
gboolean show_dates;
top_item = E_DAY_VIEW_TOP_ITEM (canvas_item);
@@ -589,7 +587,6 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
g_return_if_fail (day_view != NULL);
show_dates = top_item->priv->show_dates;
- style = gtk_widget_get_style (GTK_WIDGET (day_view));
gtk_widget_get_allocation (
GTK_WIDGET (canvas_item->canvas), &allocation);
canvas_width = allocation.width;
@@ -600,14 +597,15 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
left_edge = 0;
item_height = day_view->top_row_height - E_DAY_VIEW_TOP_CANVAS_Y_GAP;
- bg = style->bg[GTK_STATE_NORMAL];
- light = style->light[GTK_STATE_NORMAL];
- dark = style->dark[GTK_STATE_NORMAL];
+ e_utils_get_theme_color (GTK_WIDGET (day_view), "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &bg);
+ e_utils_get_theme_color (GTK_WIDGET (day_view), "theme_fg_color", E_UTILS_DEFAULT_THEME_FG_COLOR, &fg);
+ e_utils_shade_color (&bg, &light, E_UTILS_LIGHTNESS_MULT);
+ e_utils_shade_color (&bg, &dark, E_UTILS_DARKNESS_MULT);
if (show_dates) {
/* Draw the shadow around the dates. */
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &light);
+ gdk_cairo_set_source_rgba (cr, &light);
cairo_move_to (cr, left_edge - x, 1 - y);
cairo_line_to (cr, canvas_width - 2 - x, 1 - y);
cairo_move_to (cr, left_edge - x, 2 - y);
@@ -616,7 +614,7 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
cairo_restore (cr);
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &dark);
+ gdk_cairo_set_source_rgba (cr, &dark);
cairo_move_to (cr, left_edge - x, item_height - 1 - y);
cairo_line_to (cr, canvas_width - 1 - x, item_height - 1 - y);
cairo_move_to (cr, canvas_width - 1 - x, 1 - y);
@@ -626,7 +624,7 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
/* Draw the background for the dates. */
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &bg);
+ gdk_cairo_set_source_rgba (cr, &bg);
cairo_rectangle (
cr, left_edge + 2 - x, 2 - y,
canvas_width - left_edge - 3,
@@ -709,8 +707,7 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
date_x = day_view->day_offsets[day] +
(clip_rect.width - date_width) / 2;
- gdk_cairo_set_source_color (
- cr, &style->fg[GTK_STATE_NORMAL]);
+ gdk_cairo_set_source_rgba (cr, &fg);
cairo_move_to (cr, date_x - x, 3 - y);
pango_cairo_show_layout (cr, layout);
@@ -720,7 +717,7 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
/* Draw the lines down the left and right of the date cols. */
if (day != 0) {
cairo_save (cr);
- gdk_cairo_set_source_color (cr, &light);
+ gdk_cairo_set_source_rgba (cr, &light);
cairo_move_to (
cr, day_view->day_offsets[day] - x,
4 - y);
@@ -728,7 +725,7 @@ day_view_top_item_draw (GnomeCanvasItem *canvas_item,
cr, day_view->day_offsets[day] - x,
item_height - 4 - y);
cairo_stroke (cr);
- gdk_cairo_set_source_color (cr, &dark);
+ gdk_cairo_set_source_rgba (cr, &dark);
cairo_move_to (
cr, day_view->day_offsets[day] - 1 - x,
4 - y);
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index eb73b8a86e..8f09d27a5b 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -42,6 +42,7 @@
#include "dialogs/recur-comp.h"
#include "dialogs/goto-dialog.h"
#include "dialogs/save-comp.h"
+#include "e-util/e-util.h"
#include "calendar-config.h"
#include "comp-util.h"
@@ -169,7 +170,7 @@ static GtkTargetEntry target_table[] = {
{ (gchar *) "application/x-e-calendar-event", 0, 0 }
};
-static void e_day_view_set_colors (EDayView *day_view, GtkWidget *widget);
+static void e_day_view_set_colors (EDayView *day_view);
static gboolean e_day_view_update_scroll_regions (EDayView *day_view);
static gboolean e_day_view_get_next_tab_event (EDayView *day_view,
GtkDirectionType direction,
@@ -575,11 +576,9 @@ e_day_view_recalc_main_canvas_size (EDayView *day_view)
static GdkColor
e_day_view_get_text_color (EDayView *day_view,
- EDayViewEvent *event,
- GtkWidget *widget)
+ EDayViewEvent *event)
{
- GtkStyle *style;
- GdkColor bg_color;
+ GdkColor color;
guint16 red, green, blue;
gdouble cc = 65535.0;
@@ -588,18 +587,23 @@ e_day_view_get_text_color (EDayView *day_view,
blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue;
if (is_comp_data_valid (event) && gdk_color_parse (e_cal_model_get_color_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)), event->comp_data),
- &bg_color)) {
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
+ &color)) {
+ red = color.red;
+ green = color.green;
+ blue = color.blue;
}
- style = gtk_widget_get_style (widget);
+ if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7)) {
+ color.red = 0.0;
+ color.green = 0.0;
+ color.blue = 0.0;
+ } else {
+ color.red = 65535.0f;
+ color.green = 65535.0f;
+ color.blue = 65535.0f;
+ }
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7))
- return style->black;
- else
- return style->white;
+ return color;
}
/* Returns the selected time range. */
@@ -1259,7 +1263,7 @@ day_view_realize (GtkWidget *widget)
/* Allocate the colors. */
- e_day_view_set_colors (day_view, widget);
+ e_day_view_set_colors (day_view);
/* Create the pixmaps. */
day_view->reminder_icon = e_icon_factory_get_icon ("stock_bell", GTK_ICON_SIZE_MENU);
@@ -1320,8 +1324,7 @@ day_view_size_allocate (GtkWidget *widget,
}
static void
-day_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
+day_view_style_updated (GtkWidget *widget)
{
EDayView *day_view;
gint hour;
@@ -1341,17 +1344,17 @@ day_view_style_set (GtkWidget *widget,
EDayViewEvent *event;
GdkColor color;
- if (GTK_WIDGET_CLASS (e_day_view_parent_class)->style_set)
- (*GTK_WIDGET_CLASS (e_day_view_parent_class)->style_set)(widget, previous_style);
+ if (GTK_WIDGET_CLASS (e_day_view_parent_class)->style_updated)
+ (*GTK_WIDGET_CLASS (e_day_view_parent_class)->style_updated) (widget);
day_view = E_DAY_VIEW (widget);
- e_day_view_set_colors (day_view, widget);
+ e_day_view_set_colors (day_view);
for (week_day = 0; week_day < E_DAY_VIEW_MAX_DAYS; week_day++) {
for (event_num = 0; event_num < day_view->events[week_day]->len; event_num++) {
event = &g_array_index (day_view->events[week_day], EDayViewEvent, event_num);
if (event->canvas_item) {
- color = e_day_view_get_text_color (day_view, event, widget);
+ color = e_day_view_get_text_color (day_view, event);
gnome_canvas_item_set (
event->canvas_item,
"fill_color_gdk", &color,
@@ -1362,7 +1365,7 @@ day_view_style_set (GtkWidget *widget,
for (event_num = 0; event_num < day_view->long_events->len; event_num++) {
event = &g_array_index (day_view->long_events, EDayViewEvent, event_num);
if (event->canvas_item) {
- color = e_day_view_get_text_color (day_view, event, widget);
+ color = e_day_view_get_text_color (day_view, event);
gnome_canvas_item_set (
event->canvas_item,
"fill_color_gdk", &color,
@@ -1371,8 +1374,8 @@ day_view_style_set (GtkWidget *widget,
}
/* Set up Pango prerequisites */
- font_desc = gtk_widget_get_style (widget)->font_desc;
pango_context = gtk_widget_get_pango_context (widget);
+ font_desc = pango_context_get_font_description (pango_context);
font_metrics = pango_context_get_metrics (
pango_context, font_desc,
pango_context_get_language (pango_context));
@@ -1841,7 +1844,7 @@ e_day_view_class_init (EDayViewClass *class)
widget_class->realize = day_view_realize;
widget_class->unrealize = day_view_unrealize;
widget_class->size_allocate = day_view_size_allocate;
- widget_class->style_set = day_view_style_set;
+ widget_class->style_updated = day_view_style_updated;
widget_class->focus = day_view_focus;
widget_class->key_press_event = day_view_key_press;
widget_class->focus_in_event = day_view_focus_in;
@@ -2649,28 +2652,40 @@ e_day_view_new (ECalModel *model)
}
static void
-e_day_view_set_colors (EDayView *day_view,
- GtkWidget *widget)
-{
- GtkStyle *style;
-
- style = gtk_widget_get_style (widget);
+e_day_view_set_colors (EDayView *day_view)
+{
+ GtkWidget *widget = GTK_WIDGET (day_view);
+ GdkRGBA base_bg, bg_bg, selected_bg, unfocused_selected_bg, dark_bg, light_bg;
+
+ e_utils_get_theme_color (widget, "theme_base_color", E_UTILS_DEFAULT_THEME_BASE_COLOR, &base_bg);
+ e_utils_get_theme_color (widget, "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &bg_bg);
+ e_utils_get_theme_color (widget, "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &selected_bg);
+ e_utils_get_theme_color (widget, "theme_unfocused_selected_bg_color,theme_selected_bg_color", E_UTILS_DEFAULT_THEME_UNFOCUSED_SELECTED_BG_COLOR, &unfocused_selected_bg);
+
+ e_utils_shade_color (&bg_bg, &dark_bg, E_UTILS_DARKNESS_MULT);
+ e_utils_shade_color (&bg_bg, &light_bg, E_UTILS_LIGHTNESS_MULT);
+
+ e_rgba_to_color (&base_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING]);
+ e_rgba_to_color (&bg_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING]);
+ e_rgba_to_color (&selected_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED]);
+ e_rgba_to_color (&unfocused_selected_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED_UNFOCUSSED]);
+ e_rgba_to_color (&dark_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_GRID]);
+ e_rgba_to_color (&dark_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS]);
+ e_rgba_to_color (&selected_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED]);
+ e_rgba_to_color (&light_bg, &day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID]);
+ e_rgba_to_color (&selected_bg, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR]);
+ e_rgba_to_color (&base_bg, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND]);
+ e_rgba_to_color (&dark_bg, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER]);
+ e_rgba_to_color (&base_bg, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND]);
+ e_rgba_to_color (&dark_bg, &day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER]);
- day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING] = style->base[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_BG_NOT_WORKING] = style->bg[GTK_STATE_ACTIVE];
- day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED] = style->base[GTK_STATE_SELECTED];
- day_view->colors[E_DAY_VIEW_COLOR_BG_SELECTED_UNFOCUSSED] = style->bg[GTK_STATE_SELECTED];
- day_view->colors[E_DAY_VIEW_COLOR_BG_GRID] = style->dark[GTK_STATE_NORMAL];
day_view->colors[E_DAY_VIEW_COLOR_BG_MULTIDAY_TODAY] = get_today_background (day_view->colors[E_DAY_VIEW_COLOR_BG_WORKING]);
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS] = style->dark[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_SELECTED] = style->bg[GTK_STATE_SELECTED];
- day_view->colors[E_DAY_VIEW_COLOR_BG_TOP_CANVAS_GRID] = style->light[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR] = style->base[GTK_STATE_SELECTED];
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND] = style->base[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_EVENT_BORDER] = style->dark[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND] = style->bg[GTK_STATE_ACTIVE];
- day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BORDER] = style->dark[GTK_STATE_NORMAL];
- day_view->colors[E_DAY_VIEW_COLOR_MARCUS_BAINS_LINE] = style->dark[GTK_STATE_PRELIGHT];
+
+ bg_bg.red = 0.5;
+ bg_bg.green = 1.0;
+ bg_bg.blue = 1.0;
+
+ e_rgba_to_color (&bg_bg, &day_view->colors[E_DAY_VIEW_COLOR_MARCUS_BAINS_LINE]);
}
static void
@@ -2734,8 +2749,6 @@ e_day_view_recalc_cell_sizes (EDayView *day_view)
gint pango_width;
gint days_shown;
- g_return_if_fail (gtk_widget_get_style (GTK_WIDGET (day_view)) != NULL);
-
days_shown = e_day_view_get_days_shown (day_view);
gtk_widget_get_allocation (day_view->main_canvas, &allocation);
@@ -5657,12 +5670,9 @@ e_day_view_reshape_long_event (EDayView *day_view,
}
if (!event->canvas_item) {
- GtkWidget *widget;
GdkColor color;
- widget = (GtkWidget *) day_view;
-
- color = e_day_view_get_text_color (day_view, event, widget);
+ color = e_day_view_get_text_color (day_view, event);
event->canvas_item =
gnome_canvas_item_new (
@@ -5845,12 +5855,9 @@ e_day_view_reshape_day_event (EDayView *day_view,
}
if (!event->canvas_item) {
- GtkWidget *widget;
GdkColor color;
- widget = (GtkWidget *) day_view;
-
- color = e_day_view_get_text_color (day_view, event, widget);
+ color = e_day_view_get_text_color (day_view, event);
event->canvas_item = gnome_canvas_item_new (
GNOME_CANVAS_GROUP (GNOME_CANVAS (day_view->main_canvas)->root),
diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c
index 3caf71795d..bdc404765d 100644
--- a/calendar/gui/e-meeting-time-sel.c
+++ b/calendar/gui/e-meeting-time-sel.c
@@ -105,8 +105,7 @@ static void e_meeting_time_selector_autopick_menu_detacher (GtkWidget *widget,
GtkMenu *menu);
static void e_meeting_time_selector_realize (GtkWidget *widget);
static void e_meeting_time_selector_unrealize (GtkWidget *widget);
-static void e_meeting_time_selector_style_set (GtkWidget *widget,
- GtkStyle *previous_style);
+static void e_meeting_time_selector_style_updated (GtkWidget *widget);
static gint e_meeting_time_selector_draw (GtkWidget *widget, cairo_t *cr);
static void e_meeting_time_selector_draw_shadow (EMeetingTimeSelector *mts, cairo_t *cr);
static void e_meeting_time_selector_hadjustment_changed (GtkAdjustment *adjustment,
@@ -291,7 +290,7 @@ e_meeting_time_selector_class_init (EMeetingTimeSelectorClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->realize = e_meeting_time_selector_realize;
widget_class->unrealize = e_meeting_time_selector_unrealize;
- widget_class->style_set = e_meeting_time_selector_style_set;
+ widget_class->style_updated = e_meeting_time_selector_style_updated;
widget_class->draw = e_meeting_time_selector_draw;
g_object_class_install_property (
@@ -1072,17 +1071,15 @@ style_change_idle_func (EMeetingTimeSelector *mts)
GtkWidget *widget;
gint hour, max_hour_width;
/*int maxheight; */
- PangoFontDescription *font_desc;
PangoContext *pango_context;
PangoFontMetrics *font_metrics;
PangoLayout *layout;
/* Set up Pango prerequisites */
widget = GTK_WIDGET (mts);
- font_desc = gtk_widget_get_style (widget)->font_desc;
pango_context = gtk_widget_get_pango_context (widget);
font_metrics = pango_context_get_metrics (
- pango_context, font_desc,
+ pango_context, NULL,
pango_context_get_language (pango_context));
layout = pango_layout_new (pango_context);
@@ -1140,13 +1137,12 @@ style_change_idle_func (EMeetingTimeSelector *mts)
}
static void
-e_meeting_time_selector_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
+e_meeting_time_selector_style_updated (GtkWidget *widget)
{
EMeetingTimeSelector *mts = E_MEETING_TIME_SELECTOR (widget);
- if (GTK_WIDGET_CLASS (e_meeting_time_selector_parent_class)->style_set)
- (*GTK_WIDGET_CLASS (e_meeting_time_selector_parent_class)->style_set)(widget, previous_style);
+ if (GTK_WIDGET_CLASS (e_meeting_time_selector_parent_class)->style_updated)
+ (*GTK_WIDGET_CLASS (e_meeting_time_selector_parent_class)->style_updated) (widget);
if (!mts->style_change_idle_id)
mts->style_change_idle_id = g_idle_add (
diff --git a/calendar/gui/e-meeting-time-sel.h b/calendar/gui/e-meeting-time-sel.h
index ca726bc00c..20c5f0ca9f 100644
--- a/calendar/gui/e-meeting-time-sel.h
+++ b/calendar/gui/e-meeting-time-sel.h
@@ -69,7 +69,7 @@ G_BEGIN_DECLS
/* This is used to specify the format used when displaying the dates.
* The abbreviated format is like 'Sun 12/9/99'.
* The short format is like '12/9/99'.
- * The actual format used is determined in e_meeting_time_selector_style_set (),
+ * The actual format used is determined in e_meeting_time_selector_style_updated (),
* once we know the font being used.
*/
typedef enum
diff --git a/calendar/gui/e-memo-table.c b/calendar/gui/e-memo-table.c
index 092ea379f2..146a63bf43 100644
--- a/calendar/gui/e-memo-table.c
+++ b/calendar/gui/e-memo-table.c
@@ -455,7 +455,7 @@ memo_table_query_tooltip (GtkWidget *widget,
ECalModelComponent *comp_data;
gint row = -1, col = -1;
GtkWidget *box, *l, *w;
- GtkStyle *style = gtk_widget_get_default_style ();
+ GdkRGBA sel_bg, sel_fg, norm_bg, norm_text;
gchar *tmp;
const gchar *str;
GString *tmp2;
@@ -499,6 +499,11 @@ memo_table_query_tooltip (GtkWidget *widget,
return FALSE;
}
+ e_utils_get_theme_color (widget, "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &sel_bg);
+ e_utils_get_theme_color (widget, "theme_selected_fg_color", E_UTILS_DEFAULT_THEME_SELECTED_FG_COLOR, &sel_fg);
+ e_utils_get_theme_color (widget, "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &norm_bg);
+ e_utils_get_theme_color (widget, "theme_text_color", E_UTILS_DEFAULT_THEME_TEXT_COLOR, &norm_text);
+
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
str = e_calendar_view_get_icalcomponent_summary (
@@ -517,8 +522,8 @@ memo_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
w = gtk_event_box_new ();
- gtk_widget_modify_bg (w, GTK_STATE_NORMAL, &(style->bg[GTK_STATE_SELECTED]));
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
+ gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &sel_bg);
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &sel_fg);
gtk_container_add (GTK_CONTAINER (w), l);
gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
g_free (tmp);
@@ -528,7 +533,7 @@ memo_table_query_tooltip (GtkWidget *widget,
free_text = FALSE;
w = gtk_event_box_new ();
- gtk_widget_modify_bg (w, GTK_STATE_NORMAL, &(style->bg[GTK_STATE_NORMAL]));
+ gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &norm_bg);
l = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (w), l);
@@ -559,7 +564,7 @@ memo_table_query_tooltip (GtkWidget *widget,
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
g_free (tmp);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
e_cal_component_get_dtstart (new_comp, &dtstart);
@@ -623,7 +628,7 @@ memo_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
g_string_free (tmp2, TRUE);
@@ -653,7 +658,7 @@ memo_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
g_string_free (tmp2, TRUE);
diff --git a/calendar/gui/e-task-table.c b/calendar/gui/e-task-table.c
index 0370997c32..036d64305b 100644
--- a/calendar/gui/e-task-table.c
+++ b/calendar/gui/e-task-table.c
@@ -756,7 +756,7 @@ task_table_query_tooltip (GtkWidget *widget,
ECalModelComponent *comp_data;
gint row = -1, col = -1;
GtkWidget *box, *l, *w;
- GtkStyle *style = gtk_widget_get_default_style ();
+ GdkRGBA sel_bg, sel_fg, norm_bg, norm_text;
gchar *tmp;
const gchar *str;
GString *tmp2;
@@ -801,6 +801,11 @@ task_table_query_tooltip (GtkWidget *widget,
return FALSE;
}
+ e_utils_get_theme_color (widget, "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &sel_bg);
+ e_utils_get_theme_color (widget, "theme_selected_fg_color", E_UTILS_DEFAULT_THEME_SELECTED_FG_COLOR, &sel_fg);
+ e_utils_get_theme_color (widget, "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &norm_bg);
+ e_utils_get_theme_color (widget, "theme_text_color", E_UTILS_DEFAULT_THEME_TEXT_COLOR, &norm_text);
+
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
str = e_calendar_view_get_icalcomponent_summary (
@@ -819,8 +824,8 @@ task_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
w = gtk_event_box_new ();
- gtk_widget_modify_bg (w, GTK_STATE_NORMAL, &(style->bg[GTK_STATE_SELECTED]));
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
+ gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &sel_bg);
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &sel_fg);
gtk_container_add (GTK_CONTAINER (w), l);
gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
g_free (tmp);
@@ -830,7 +835,7 @@ task_table_query_tooltip (GtkWidget *widget,
free_text = FALSE;
w = gtk_event_box_new ();
- gtk_widget_modify_bg (w, GTK_STATE_NORMAL, &(style->bg[GTK_STATE_NORMAL]));
+ gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &norm_bg);
l = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (w), l);
@@ -859,7 +864,7 @@ task_table_query_tooltip (GtkWidget *widget,
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
g_free (tmp);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
e_cal_component_get_dtstart (new_comp, &dtstart);
@@ -921,7 +926,7 @@ task_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
g_string_free (tmp2, TRUE);
@@ -939,7 +944,7 @@ task_table_query_tooltip (GtkWidget *widget,
g_free (tmp);
tmp = NULL;
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
tmp2 = g_string_new ("");
@@ -965,7 +970,7 @@ task_table_query_tooltip (GtkWidget *widget,
gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0);
- gtk_widget_modify_fg (l, GTK_STATE_NORMAL, &(style->text[GTK_STATE_NORMAL]));
+ gtk_widget_override_color (l, GTK_STATE_FLAG_NORMAL, &norm_text);
}
g_string_free (tmp2, TRUE);
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c
index 481daff2e3..59358ca6e0 100644
--- a/calendar/gui/e-week-view-event-item.c
+++ b/calendar/gui/e-week-view-event-item.c
@@ -295,6 +295,7 @@ week_view_event_item_button_release (EWeekViewEventItem *event_item,
static void
week_view_draw_time (EWeekView *week_view,
+ GdkColor bg_color,
cairo_t *cr,
gint time_x,
gint time_y,
@@ -302,24 +303,38 @@ week_view_draw_time (EWeekView *week_view,
gint minute)
{
ECalModel *model;
- GtkStyle *style;
gint hour_to_display, suffix_width;
gint time_y_normal_font, time_y_small_font;
const gchar *suffix;
gchar buffer[128];
PangoLayout *layout;
PangoFontDescription *small_font_desc;
+ PangoContext *pango_context;
+ GdkColor color;
+ gdouble cc = 65535.0;
+
+ color.pixel = 0;
+
+ if ((bg_color.red / cc > 0.7) || (bg_color.green / cc > 0.7) || (bg_color.blue / cc > 0.7)) {
+ color.red = 0.0;
+ color.green = 0.0;
+ color.blue = 0.0;
+ } else {
+ color.red = 65535.0f;
+ color.green = 65535.0f;
+ color.blue = 65535.0f;
+ }
cairo_save (cr);
model = e_calendar_view_get_model (E_CALENDAR_VIEW (week_view));
- style = gtk_widget_get_style (GTK_WIDGET (week_view));
small_font_desc = week_view->small_font_desc;
- gdk_cairo_set_source_color (cr, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT]);
+ gdk_cairo_set_source_color (cr, &color);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (week_view), NULL);
+ pango_context = gtk_widget_create_pango_context (GTK_WIDGET (week_view));
time_y_normal_font = time_y_small_font = time_y;
if (small_font_desc)
@@ -330,6 +345,10 @@ week_view_draw_time (EWeekView *week_view,
&suffix, &suffix_width);
if (week_view->use_small_font && week_view->small_font_desc) {
+ PangoFontDescription *font_desc;
+
+ font_desc = pango_font_description_copy (pango_context_get_font_description (pango_context));
+
g_snprintf (
buffer, sizeof (buffer), "%2i:%02i",
hour_to_display, minute);
@@ -362,7 +381,7 @@ week_view_draw_time (EWeekView *week_view,
time_y_small_font);
pango_cairo_show_layout (cr, layout);
- pango_layout_set_font_description (layout, style->font_desc);
+ pango_layout_set_font_description (layout, font_desc);
time_x += week_view->small_digit_width * 2;
@@ -376,6 +395,8 @@ week_view_draw_time (EWeekView *week_view,
time_y_normal_font);
pango_cairo_show_layout (cr, layout);
}
+
+ pango_font_description_free (font_desc);
} else {
/* Draw the start time in one go. */
g_snprintf (
@@ -398,6 +419,7 @@ week_view_draw_time (EWeekView *week_view,
}
}
+ g_object_unref (pango_context);
g_object_unref (layout);
cairo_restore (cr);
@@ -895,7 +917,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_start) {
week_view_draw_time (
- week_view, cr, time_x,
+ week_view, bg_color, cr, time_x,
time_y, start_hour, start_minute);
time_x += time_width;
}
@@ -903,7 +925,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_end) {
time_x += E_WEEK_VIEW_EVENT_TIME_SPACING;
week_view_draw_time (
- week_view, cr, time_x,
+ week_view, bg_color, cr, time_x,
time_y, end_hour, end_minute);
time_x += time_width;
}
@@ -1058,7 +1080,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
cairo_clip (cr);
week_view_draw_time (
- week_view, cr, time_x,
+ week_view, bg_color, cr, time_x,
time_y, start_hour, start_minute);
cairo_restore (cr);
@@ -1086,7 +1108,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
* the minimum calculated above. */
if (time_x >= min_end_time_x) {
week_view_draw_time (
- week_view, cr, time_x,
+ week_view, bg_color, cr, time_x,
time_y, end_hour, end_minute);
max_icon_x -= time_width
+ E_WEEK_VIEW_EVENT_TIME_X_PAD;
diff --git a/calendar/gui/e-week-view-main-item.c b/calendar/gui/e-week-view-main-item.c
index b766a370dc..69caa624e9 100644
--- a/calendar/gui/e-week-view-main-item.c
+++ b/calendar/gui/e-week-view-main-item.c
@@ -61,7 +61,6 @@ week_view_main_item_draw_day (EWeekViewMainItem *main_item,
{
EWeekView *week_view;
ECalModel *model;
- GtkStyle *style;
gint right_edge, bottom_edge, date_width, date_x, line_y;
gboolean show_day_name, show_month_name, selected;
gchar buffer[128], *format_string;
@@ -77,13 +76,12 @@ week_view_main_item_draw_day (EWeekViewMainItem *main_item,
week_view = e_week_view_main_item_get_week_view (main_item);
model = e_calendar_view_get_model (E_CALENDAR_VIEW (week_view));
- style = gtk_widget_get_style (GTK_WIDGET (week_view));
multi_week_view = e_week_view_get_multi_week_view (week_view);
/* Set up Pango prerequisites */
- font_desc = pango_font_description_copy (style->font_desc);
pango_context = gtk_widget_get_pango_context (GTK_WIDGET (week_view));
+ font_desc = pango_font_description_copy (pango_context_get_font_description (pango_context));
font_metrics = pango_context_get_metrics (
pango_context, font_desc,
pango_context_get_language (pango_context));
diff --git a/calendar/gui/e-week-view-titles-item.c b/calendar/gui/e-week-view-titles-item.c
index a03e7a3448..23a41be879 100644
--- a/calendar/gui/e-week-view-titles-item.c
+++ b/calendar/gui/e-week-view-titles-item.c
@@ -126,7 +126,7 @@ week_view_titles_item_draw (GnomeCanvasItem *canvas_item,
{
EWeekViewTitlesItem *titles_item;
EWeekView *week_view;
- GtkStyle *style;
+ GdkRGBA bg_bg, light_bg, dark_bg;
gint col_width, col, date_width, date_x;
gchar buffer[128];
GtkAllocation allocation;
@@ -147,18 +147,21 @@ week_view_titles_item_draw (GnomeCanvasItem *canvas_item,
gtk_widget_get_allocation (
GTK_WIDGET (canvas_item->canvas), &allocation);
- style = gtk_widget_get_style (GTK_WIDGET (week_view));
+ e_utils_get_theme_color (GTK_WIDGET (week_view), "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &bg_bg);
+ e_utils_shade_color (&bg_bg, &dark_bg, E_UTILS_DARKNESS_MULT);
+ e_utils_shade_color (&bg_bg, &light_bg, E_UTILS_LIGHTNESS_MULT);
+
layout = gtk_widget_create_pango_layout (GTK_WIDGET (week_view), NULL);
/* Draw the shadow around the dates. */
- gdk_cairo_set_source_color (cr, &style->light[GTK_STATE_NORMAL]);
+ gdk_cairo_set_source_rgba (cr, &light_bg);
cairo_move_to (cr, 1.5 - x, 1.5 - y);
cairo_rel_line_to (cr, allocation.width - 1, 0);
cairo_move_to (cr, 1.5 - x, 2.5 - y);
cairo_rel_line_to (cr, 0, allocation.height - 1);
cairo_stroke (cr);
- gdk_cairo_set_source_color (cr, &style->dark[GTK_STATE_NORMAL]);
+ gdk_cairo_set_source_rgba (cr, &dark_bg);
cairo_rectangle (cr, 0.5 - x, 0.5 - y, allocation.width - 1, allocation.height);
cairo_stroke (cr);
@@ -213,12 +216,12 @@ week_view_titles_item_draw (GnomeCanvasItem *canvas_item,
/* Draw the lines down the left and right of the date cols. */
if (col != 0) {
- gdk_cairo_set_source_color (cr, &style->light[GTK_STATE_NORMAL]);
+ gdk_cairo_set_source_rgba (cr, &light_bg);
cairo_move_to (cr, week_view->col_offsets[col] - x + 0.5, 4.5 - y);
cairo_rel_line_to (cr, 0, allocation.height - 8);
cairo_stroke (cr);
- gdk_cairo_set_source_color (cr, &style->dark[GTK_STATE_NORMAL]);
+ gdk_cairo_set_source_rgba (cr, &dark_bg);
cairo_move_to (cr, week_view->col_offsets[col] - x - 0.5, 4.5 - y);
cairo_rel_line_to (cr, 0, allocation.height - 8);
cairo_stroke (cr);
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 93d40cdb35..317a78cb29 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -111,7 +111,7 @@ typedef struct {
ECalModelComponent *comp_data;
} AddEventData;
-static void e_week_view_set_colors (EWeekView *week_view, GtkWidget *widget);
+static void e_week_view_set_colors (EWeekView *week_view);
static void e_week_view_recalc_cell_sizes (EWeekView *week_view);
static gboolean e_week_view_get_next_tab_event (EWeekView *week_view,
GtkDirectionType direction,
@@ -768,6 +768,7 @@ week_view_constructed (GObject *object)
EWeekView *week_view;
ECalModel *model;
ECalendarView *calendar_view;
+ PangoContext *pango_context;
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_week_view_parent_class)->constructed (object);
@@ -776,6 +777,13 @@ week_view_constructed (GObject *object)
calendar_view = E_CALENDAR_VIEW (object);
model = e_calendar_view_get_model (calendar_view);
+ pango_context = gtk_widget_get_pango_context (GTK_WIDGET (week_view));
+ g_warn_if_fail (pango_context != NULL);
+ week_view->small_font_desc = pango_font_description_copy (pango_context_get_font_description (pango_context));
+ pango_font_description_set_size (
+ week_view->small_font_desc,
+ E_WEEK_VIEW_SMALL_FONT_PTSIZE * PANGO_SCALE);
+
e_week_view_recalc_display_start_day (E_WEEK_VIEW (object));
week_view->priv->notify_week_start_day_id = e_signal_connect_notify_swapped (
@@ -814,7 +822,7 @@ week_view_realize (GtkWidget *widget)
week_view = E_WEEK_VIEW (widget);
/* Allocate the colors. */
- e_week_view_set_colors (week_view, widget);
+ e_week_view_set_colors (week_view);
/* Create the pixmaps. */
week_view->reminder_icon =
@@ -851,12 +859,44 @@ week_view_unrealize (GtkWidget *widget)
(*GTK_WIDGET_CLASS (e_week_view_parent_class)->unrealize)(widget);
}
+static GdkColor
+e_week_view_get_text_color (EWeekView *week_view,
+ EWeekViewEvent *event)
+{
+ GdkColor color;
+ guint16 red, green, blue;
+ gdouble cc = 65535.0;
+
+ red = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red;
+ green = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green;
+ blue = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue;
+
+ if (is_comp_data_valid (event) && gdk_color_parse (e_cal_model_get_color_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (week_view)), event->comp_data),
+ &color)) {
+ red = color.red;
+ green = color.green;
+ blue = color.blue;
+ }
+
+ color.pixel = 0;
+
+ if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7)) {
+ color.red = 0.0;
+ color.green = 0.0;
+ color.blue = 0.0;
+ } else {
+ color.red = 65535.0f;
+ color.green = 65535.0f;
+ color.blue = 65535.0f;
+ }
+
+ return color;
+}
+
static void
-week_view_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
+week_view_style_updated (GtkWidget *widget)
{
EWeekView *week_view;
- GtkStyle *style;
gint day, day_width, max_day_width, max_abbr_day_width;
gint month, month_width, max_month_width, max_abbr_month_width;
gint span_num;
@@ -867,30 +907,39 @@ week_view_style_set (GtkWidget *widget,
PangoLayout *layout;
EWeekViewEventSpan *span;
- if (GTK_WIDGET_CLASS (e_week_view_parent_class)->style_set)
- (*GTK_WIDGET_CLASS (e_week_view_parent_class)->style_set)(widget, previous_style);
+ if (GTK_WIDGET_CLASS (e_week_view_parent_class)->style_updated)
+ (*GTK_WIDGET_CLASS (e_week_view_parent_class)->style_updated) (widget);
week_view = E_WEEK_VIEW (widget);
- style = gtk_widget_get_style (widget);
- e_week_view_set_colors (week_view, widget);
+ e_week_view_set_colors (week_view);
if (week_view->spans) {
- for (span_num = 0; span_num < week_view->spans->len;
- span_num++) {
- span = &g_array_index (week_view->spans,
- EWeekViewEventSpan, span_num);
- if (span->text_item) {
- gnome_canvas_item_set (
- span->text_item,
- "fill_color_gdk", &style->text[GTK_STATE_NORMAL],
- NULL);
+ for (span_num = 0; span_num < week_view->spans->len; span_num++) {
+ span = &g_array_index (week_view->spans, EWeekViewEventSpan, span_num);
+ if (span->text_item && span->background_item) {
+ gint event_num = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (span->background_item), "event-num"));
+ EWeekViewEvent *event = NULL;
+
+ if (is_array_index_in_bounds (week_view->events, event_num))
+ event = &g_array_index (week_view->events, EWeekViewEvent, event_num);
+
+ if (event) {
+ GdkColor text_color;
+
+ text_color = e_week_view_get_text_color (week_view, event);
+
+ gnome_canvas_item_set (
+ span->text_item,
+ "fill_color_gdk", &text_color,
+ NULL);
+ }
}
}
}
/* Set up Pango prerequisites */
- font_desc = style->font_desc;
pango_context = gtk_widget_get_pango_context (widget);
+ font_desc = pango_font_description_copy (pango_context_get_font_description (pango_context));
font_metrics = pango_context_get_metrics (
pango_context, font_desc,
pango_context_get_language (pango_context));
@@ -955,7 +1004,7 @@ week_view_style_set (GtkWidget *widget,
if (week_view->small_font_desc) {
pango_layout_set_font_description (layout, week_view->small_font_desc);
week_view->small_digit_width = get_digit_width (layout);
- pango_layout_set_font_description (layout, style->font_desc);
+ pango_layout_set_font_description (layout, font_desc);
}
week_view->max_day_width = max_day_width;
week_view->max_abbr_day_width = max_abbr_day_width;
@@ -971,6 +1020,7 @@ week_view_style_set (GtkWidget *widget,
g_object_unref (layout);
pango_font_metrics_unref (font_metrics);
+ pango_font_description_free (font_desc);
}
static void
@@ -1432,7 +1482,7 @@ e_week_view_class_init (EWeekViewClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->realize = week_view_realize;
widget_class->unrealize = week_view_unrealize;
- widget_class->style_set = week_view_style_set;
+ widget_class->style_updated = week_view_style_updated;
widget_class->size_allocate = week_view_size_allocate;
widget_class->focus_in_event = week_view_focus_in;
widget_class->focus_out_event = week_view_focus_out;
@@ -1533,14 +1583,9 @@ e_week_view_init (EWeekView *week_view)
week_view->last_edited_comp_string = NULL;
- /* Create the small font. */
+ /* Create the small font in constructed. */
week_view->use_small_font = TRUE;
-
- week_view->small_font_desc =
- pango_font_description_copy (gtk_widget_get_style (GTK_WIDGET (week_view))->font_desc);
- pango_font_description_set_size (
- week_view->small_font_desc,
- E_WEEK_VIEW_SMALL_FONT_PTSIZE * PANGO_SCALE);
+ week_view->small_font_desc = NULL;
/* String to use in 12-hour time format for times in the morning. */
week_view->am_string = _("am");
@@ -1685,57 +1730,37 @@ color_inc (GdkColor c,
}
static void
-e_week_view_set_colors (EWeekView *week_view,
- GtkWidget *widget)
+e_week_view_set_colors (EWeekView *week_view)
{
- GtkStyle *style;
-
- style = gtk_widget_get_style (widget);
-
- week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS] = style->base[GTK_STATE_INSENSITIVE];
- week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS] = style->base[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND] = style->base[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER] = style->dark[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT] = style->text[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_GRID] = style->dark[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_SELECTED] = style->base[GTK_STATE_SELECTED];
- week_view->colors[E_WEEK_VIEW_COLOR_SELECTED_UNFOCUSSED] = style->bg[GTK_STATE_SELECTED];
- week_view->colors[E_WEEK_VIEW_COLOR_DATES] = style->text[GTK_STATE_NORMAL];
- week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED] = style->text[GTK_STATE_SELECTED];
- week_view->colors[E_WEEK_VIEW_COLOR_TODAY] = style->base[GTK_STATE_SELECTED];
+ GtkWidget *widget = GTK_WIDGET (week_view);
+ GdkRGBA base_bg, bg_bg, text_fg, selected_bg, selected_fg, unfocused_selected_bg, dark_bg, light_bg;
+
+ e_utils_get_theme_color (widget, "theme_base_color", E_UTILS_DEFAULT_THEME_BASE_COLOR, &base_bg);
+ e_utils_get_theme_color (widget, "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &bg_bg);
+ e_utils_get_theme_color (widget, "theme_text_color", E_UTILS_DEFAULT_THEME_TEXT_COLOR, &text_fg);
+ e_utils_get_theme_color (widget, "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &selected_bg);
+ e_utils_get_theme_color (widget, "theme_selected_fg_color", E_UTILS_DEFAULT_THEME_SELECTED_FG_COLOR, &selected_fg);
+ e_utils_get_theme_color (widget, "theme_unfocused_selected_bg_color,theme_selected_bg_color", E_UTILS_DEFAULT_THEME_UNFOCUSED_SELECTED_BG_COLOR, &unfocused_selected_bg);
+
+ e_utils_shade_color (&bg_bg, &dark_bg, E_UTILS_DARKNESS_MULT);
+ e_utils_shade_color (&bg_bg, &light_bg, E_UTILS_LIGHTNESS_MULT);
+
+ e_rgba_to_color (&bg_bg, &week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS]);
+ e_rgba_to_color (&base_bg, &week_view->colors[E_WEEK_VIEW_COLOR_ODD_MONTHS]);
+ e_rgba_to_color (&base_bg, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND]);
+ e_rgba_to_color (&dark_bg, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BORDER]);
+ e_rgba_to_color (&text_fg, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT]);
+ e_rgba_to_color (&dark_bg, &week_view->colors[E_WEEK_VIEW_COLOR_GRID]);
+ e_rgba_to_color (&selected_bg, &week_view->colors[E_WEEK_VIEW_COLOR_SELECTED]);
+ e_rgba_to_color (&unfocused_selected_bg, &week_view->colors[E_WEEK_VIEW_COLOR_SELECTED_UNFOCUSSED]);
+ e_rgba_to_color (&text_fg, &week_view->colors[E_WEEK_VIEW_COLOR_DATES]);
+ e_rgba_to_color (&selected_fg, &week_view->colors[E_WEEK_VIEW_COLOR_DATES_SELECTED]);
+ e_rgba_to_color (&selected_bg, &week_view->colors[E_WEEK_VIEW_COLOR_TODAY]);
+
week_view->colors[E_WEEK_VIEW_COLOR_TODAY_BACKGROUND] = get_today_background (week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND]);
week_view->colors[E_WEEK_VIEW_COLOR_MONTH_NONWORKING_DAY] = color_inc (week_view->colors[E_WEEK_VIEW_COLOR_EVEN_MONTHS], -0x0A0A);
}
-static GdkColor
-e_week_view_get_text_color (EWeekView *week_view,
- EWeekViewEvent *event,
- GtkWidget *widget)
-{
- GtkStyle *style;
- GdkColor bg_color;
- guint16 red, green, blue;
- gdouble cc = 65535.0;
-
- red = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red;
- green = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green;
- blue = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue;
-
- if (is_comp_data_valid (event) && gdk_color_parse (e_cal_model_get_color_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (week_view)), event->comp_data),
- &bg_color)) {
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
- }
-
- style = gtk_widget_get_style (widget);
-
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7))
- return style->black;
- else
- return style->white;
-}
-
static void
e_week_view_recalc_cell_sizes (EWeekView *week_view)
{
@@ -1743,9 +1768,7 @@ e_week_view_recalc_cell_sizes (EWeekView *week_view)
gint row, col;
GtkAllocation allocation;
GtkWidget *widget;
- GtkStyle *style;
gint width, height, time_width;
- PangoFontDescription *font_desc;
PangoContext *pango_context;
PangoFontMetrics *font_metrics;
@@ -1795,18 +1818,14 @@ e_week_view_recalc_cell_sizes (EWeekView *week_view)
- week_view->row_offsets[row];
}
- /* If the font hasn't been set yet just return. */
widget = GTK_WIDGET (week_view);
- style = gtk_widget_get_style (widget);
- if (!style)
- return;
- font_desc = style->font_desc;
- if (!font_desc)
- return;
pango_context = gtk_widget_get_pango_context (widget);
+ if (!pango_context)
+ return;
+
font_metrics = pango_context_get_metrics (
- pango_context, font_desc,
+ pango_context, NULL,
pango_context_get_language (pango_context));
/* Calculate the number of rows of events in each cell, for the large
@@ -3377,7 +3396,6 @@ e_week_view_reshape_event_span (EWeekView *week_view,
gdouble text_x, text_y, text_w, text_h;
gchar *text, *end_of_line;
gint line_len, text_width;
- PangoFontDescription *font_desc;
PangoContext *pango_context;
PangoFontMetrics *font_metrics;
PangoLayout *layout;
@@ -3421,10 +3439,9 @@ e_week_view_reshape_event_span (EWeekView *week_view,
}
/* Set up Pango prerequisites */
- font_desc = gtk_widget_get_style (GTK_WIDGET (week_view))->font_desc;
pango_context = gtk_widget_get_pango_context (GTK_WIDGET (week_view));
font_metrics = pango_context_get_metrics (
- pango_context, font_desc,
+ pango_context, NULL,
pango_context_get_language (pango_context));
layout = pango_layout_new (pango_context);
@@ -3475,13 +3492,10 @@ e_week_view_reshape_event_span (EWeekView *week_view,
/* Create the text item if necessary. */
if (!span->text_item) {
const gchar *summary;
- GtkWidget *widget;
GdkColor color;
gboolean free_text = FALSE;
- widget = (GtkWidget *) week_view;
-
- color = e_week_view_get_text_color (week_view, event, widget);
+ color = e_week_view_get_text_color (week_view, event);
summary = get_comp_summary (event->comp_data->client, event->comp_data->icalcomp, &free_text);
span->text_item =
diff --git a/calendar/gui/e-week-view.h b/calendar/gui/e-week-view.h
index 3c773e2f7f..ee67592b4d 100644
--- a/calendar/gui/e-week-view.h
+++ b/calendar/gui/e-week-view.h
@@ -227,7 +227,7 @@ struct _EWeekView {
PangoFontDescription *small_font_desc;
/* The widths of various pieces of text, used to determine which of
- * several date formats to display, set in e_week_view_style_set (). */
+ * several date formats to display, set in e_week_view_style_updated (). */
gint space_width; /* One space character ' '. */
gint colon_width; /* Size of ':' in the font. */
gint slash_width; /* Size of '/' in the font. */
diff --git a/calendar/gui/e-weekday-chooser.c b/calendar/gui/e-weekday-chooser.c
index 90216821c3..3e4d1b7480 100644
--- a/calendar/gui/e-weekday-chooser.c
+++ b/calendar/gui/e-weekday-chooser.c
@@ -75,25 +75,21 @@ G_DEFINE_TYPE_WITH_CODE (
static void
colorize_items (EWeekdayChooser *chooser)
{
- GdkColor *outline, *focus_outline;
- GdkColor *fill, *sel_fill;
- GdkColor *text_fill, *sel_text_fill;
- GtkStateType state;
- GtkStyle *style;
+ GdkColor outline, focus_outline;
+ GdkColor fill, sel_fill;
+ GdkColor text_fill, sel_text_fill;
GDateWeekday weekday;
+ GtkWidget *widget;
gint ii;
- state = gtk_widget_get_state (GTK_WIDGET (chooser));
- style = gtk_widget_get_style (GTK_WIDGET (chooser));
+ widget = GTK_WIDGET (chooser);
- outline = &style->fg[state];
- focus_outline = &style->bg[state];
-
- fill = &style->base[state];
- text_fill = &style->fg[state];
-
- sel_fill = &style->bg[GTK_STATE_SELECTED];
- sel_text_fill = &style->fg[GTK_STATE_SELECTED];
+ e_utils_get_theme_color_color (widget, "theme_base_color", E_UTILS_DEFAULT_THEME_BASE_COLOR, &outline);
+ e_utils_get_theme_color_color (widget, "theme_bg_color", E_UTILS_DEFAULT_THEME_BG_COLOR, &focus_outline);
+ e_utils_get_theme_color_color (widget, "theme_base_color", E_UTILS_DEFAULT_THEME_BASE_COLOR, &fill);
+ e_utils_get_theme_color_color (widget, "theme_fg_color", E_UTILS_DEFAULT_THEME_FG_COLOR, &text_fill);
+ e_utils_get_theme_color_color (widget, "theme_selected_bg_color", E_UTILS_DEFAULT_THEME_SELECTED_BG_COLOR, &sel_fill);
+ e_utils_get_theme_color_color (widget, "theme_selected_fg_color", E_UTILS_DEFAULT_THEME_SELECTED_FG_COLOR, &sel_text_fill);
weekday = e_weekday_chooser_get_week_start_day (chooser);
@@ -101,17 +97,17 @@ colorize_items (EWeekdayChooser *chooser)
GdkColor *f, *t, *o;
if (chooser->priv->selected_weekdays[weekday]) {
- f = sel_fill;
- t = sel_text_fill;
+ f = &sel_fill;
+ t = &sel_text_fill;
} else {
- f = fill;
- t = text_fill;
+ f = &fill;
+ t = &text_fill;
}
if (weekday == chooser->priv->focus_day)
- o = focus_outline;
+ o = &focus_outline;
else
- o = outline;
+ o = &outline;
gnome_canvas_item_set (
chooser->priv->boxes[ii],
@@ -247,14 +243,12 @@ weekday_chooser_size_allocate (GtkWidget *widget,
}
static void
-weekday_chooser_style_set (GtkWidget *widget,
- GtkStyle *previous_style)
+weekday_chooser_style_updated (GtkWidget *widget)
{
GtkWidgetClass *widget_class;
EWeekdayChooser *chooser;
EWeekdayChooserPrivate *priv;
gint max_width;
- PangoFontDescription *font_desc;
PangoContext *pango_context;
PangoFontMetrics *font_metrics;
PangoLayout *layout;
@@ -264,10 +258,9 @@ weekday_chooser_style_set (GtkWidget *widget,
priv = chooser->priv;
/* Set up Pango prerequisites */
- font_desc = gtk_widget_get_style (widget)->font_desc;
pango_context = gtk_widget_get_pango_context (widget);
font_metrics = pango_context_get_metrics (
- pango_context, font_desc,
+ pango_context, NULL,
pango_context_get_language (pango_context));
layout = pango_layout_new (pango_context);
@@ -296,9 +289,9 @@ weekday_chooser_style_set (GtkWidget *widget,
g_object_unref (layout);
pango_font_metrics_unref (font_metrics);
- /* Chain up to parent's style_set() method. */
+ /* Chain up to parent's style_updated() method. */
widget_class = GTK_WIDGET_CLASS (e_weekday_chooser_parent_class);
- widget_class->style_set (widget, previous_style);
+ widget_class->style_updated (widget);
}
static void
@@ -372,7 +365,7 @@ e_weekday_chooser_class_init (EWeekdayChooserClass *class)
widget_class = GTK_WIDGET_CLASS (class);
widget_class->realize = weekday_chooser_realize;
widget_class->size_allocate = weekday_chooser_size_allocate;
- widget_class->style_set = weekday_chooser_style_set;
+ widget_class->style_updated = weekday_chooser_style_updated;
widget_class->get_preferred_height = weekday_chooser_get_preferred_height;
widget_class->get_preferred_width = weekday_chooser_get_preferred_width;
widget_class->focus = weekday_chooser_focus;