Make GtkPrintUnixDialog use GtkStyleContext.

This commit is contained in:
Carlos Garnacho 2011-01-10 02:42:05 +01:00
parent 6fae7c9fa7
commit 4e73267325

View File

@ -76,8 +76,7 @@ static void gtk_print_unix_dialog_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec); GParamSpec *pspec);
static void gtk_print_unix_dialog_style_set (GtkWidget *widget, static void gtk_print_unix_dialog_style_updated (GtkWidget *widget);
GtkStyle *previous_style);
static void populate_dialog (GtkPrintUnixDialog *dialog); static void populate_dialog (GtkPrintUnixDialog *dialog);
static void unschedule_idle_mark_conflicts (GtkPrintUnixDialog *dialog); static void unschedule_idle_mark_conflicts (GtkPrintUnixDialog *dialog);
static void selected_printer_changed (GtkTreeSelection *selection, static void selected_printer_changed (GtkTreeSelection *selection,
@ -291,7 +290,7 @@ gtk_print_unix_dialog_class_init (GtkPrintUnixDialogClass *class)
object_class->set_property = gtk_print_unix_dialog_set_property; object_class->set_property = gtk_print_unix_dialog_set_property;
object_class->get_property = gtk_print_unix_dialog_get_property; object_class->get_property = gtk_print_unix_dialog_get_property;
widget_class->style_set = gtk_print_unix_dialog_style_set; widget_class->style_updated = gtk_print_unix_dialog_style_updated;
g_object_class_install_property (object_class, g_object_class_install_property (object_class,
PROP_PAGE_SETUP, PROP_PAGE_SETUP,
@ -1960,9 +1959,10 @@ paint_page (GtkWidget *widget,
gchar *text, gchar *text,
gint text_x) gint text_x)
{ {
GtkStyle *style; GtkStyleContext *context;
gint x, y, width, height; gint x, y, width, height;
gint text_y, linewidth; gint text_y, linewidth;
GdkRGBA color;
x = x_offset * scale; x = x_offset * scale;
y = y_offset * scale; y = y_offset * scale;
@ -1972,13 +1972,18 @@ paint_page (GtkWidget *widget,
linewidth = 2; linewidth = 2;
text_y = 21; text_y = 21;
style = gtk_widget_get_style (widget); context = gtk_widget_get_style_context (widget);
gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]); gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
gtk_style_context_get_background_color (context, 0, &color);
gdk_cairo_set_source_rgba (cr, &color);
cairo_rectangle (cr, x, y, width, height); cairo_rectangle (cr, x, y, width, height);
cairo_fill (cr); cairo_fill (cr);
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); gtk_style_context_get_color (context, 0, &color);
gdk_cairo_set_source_rgba (cr, &color);
cairo_set_line_width (cr, linewidth); cairo_set_line_width (cr, linewidth);
cairo_rectangle (cr, x + linewidth/2.0, y + linewidth/2.0, width - linewidth, height - linewidth); cairo_rectangle (cr, x + linewidth/2.0, y + linewidth/2.0, width - linewidth, height - linewidth);
cairo_stroke (cr); cairo_stroke (cr);
@ -1989,6 +1994,8 @@ paint_page (GtkWidget *widget,
cairo_set_font_size (cr, (gint)(9 * scale)); cairo_set_font_size (cr, (gint)(9 * scale));
cairo_move_to (cr, x + (gint)(text_x * scale), y + (gint)(text_y * scale)); cairo_move_to (cr, x + (gint)(text_x * scale), y + (gint)(text_y * scale));
cairo_show_text (cr, text); cairo_show_text (cr, text);
gtk_style_context_restore (context);
} }
static gboolean static gboolean
@ -2035,10 +2042,9 @@ draw_collate_cb (GtkWidget *widget,
} }
static void static void
gtk_print_unix_dialog_style_set (GtkWidget *widget, gtk_print_unix_dialog_style_updated (GtkWidget *widget)
GtkStyle *previous_style)
{ {
GTK_WIDGET_CLASS (gtk_print_unix_dialog_parent_class)->style_set (widget, previous_style); GTK_WIDGET_CLASS (gtk_print_unix_dialog_parent_class)->style_updated (widget);
if (gtk_widget_has_screen (widget)) if (gtk_widget_has_screen (widget))
{ {
@ -2589,7 +2595,7 @@ draw_page_cb (GtkWidget *widget,
GtkPrintUnixDialog *dialog) GtkPrintUnixDialog *dialog)
{ {
GtkPrintUnixDialogPrivate *priv = dialog->priv; GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkStyle *style; GtkStyleContext *context;
gdouble ratio; gdouble ratio;
gint w, h, tmp, shadow_offset; gint w, h, tmp, shadow_offset;
gint pages_x, pages_y, i, x, y, layout_w, layout_h; gint pages_x, pages_y, i, x, y, layout_w, layout_h;
@ -2599,7 +2605,7 @@ draw_page_cb (GtkWidget *widget,
PangoLayout *layout; PangoLayout *layout;
PangoFontDescription *font; PangoFontDescription *font;
gchar *text; gchar *text;
GdkColor *color; GdkRGBA color;
GtkNumberUpLayout number_up_layout; GtkNumberUpLayout number_up_layout;
gint start_x, end_x, start_y, end_y; gint start_x, end_x, start_y, end_y;
gint dx, dy; gint dx, dy;
@ -2698,7 +2704,10 @@ draw_page_cb (GtkWidget *widget,
pages_y = tmp; pages_y = tmp;
} }
style = gtk_widget_get_style (widget); context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
pos_x = (width - w) / 2; pos_x = (width - w) / 2;
pos_y = (height - h) / 2 - 10; pos_y = (height - h) / 2 - 10;
@ -2706,18 +2715,20 @@ draw_page_cb (GtkWidget *widget,
shadow_offset = 3; shadow_offset = 3;
color = &style->text[GTK_STATE_NORMAL]; gtk_style_context_get_color (context, 0, &color);
cairo_set_source_rgba (cr, color->red / 65535., color->green / 65535., color->blue / 65535, 0.5); cairo_set_source_rgba (cr, color.red, color.green, color.blue, 0.5);
cairo_rectangle (cr, shadow_offset + 1, shadow_offset + 1, w, h); cairo_rectangle (cr, shadow_offset + 1, shadow_offset + 1, w, h);
cairo_fill (cr); cairo_fill (cr);
gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]); gtk_style_context_get_background_color (context, 0, &color);
gdk_cairo_set_source_rgba (cr, &color);
cairo_rectangle (cr, 1, 1, w, h); cairo_rectangle (cr, 1, 1, w, h);
cairo_fill (cr); cairo_fill (cr);
cairo_set_line_width (cr, 1.0); cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr, 0.5, 0.5, w + 1, h + 1); cairo_rectangle (cr, 0.5, 0.5, w + 1, h + 1);
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); gtk_style_context_get_color (context, 0, &color);
gdk_cairo_set_source_rgba (cr, &color);
cairo_stroke (cr); cairo_stroke (cr);
i = 1; i = 1;
@ -2985,6 +2996,8 @@ draw_page_cb (GtkWidget *widget,
cairo_stroke (cr); cairo_stroke (cr);
} }
gtk_style_context_restore (context);
return TRUE; return TRUE;
} }