aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--widgets/text/e-text.c36
-rw-r--r--widgets/text/e-text.h2
2 files changed, 34 insertions, 4 deletions
diff --git a/widgets/text/e-text.c b/widgets/text/e-text.c
index eb4e1d02bb..0de86fbec2 100644
--- a/widgets/text/e-text.c
+++ b/widgets/text/e-text.c
@@ -73,6 +73,7 @@ enum {
ARG_FONT_GDK,
ARG_FONT_E,
ARG_BOLD,
+ ARG_STRIKEOUT,
ARG_ANCHOR,
ARG_JUSTIFICATION,
ARG_CLIP_WIDTH,
@@ -271,6 +272,8 @@ e_text_class_init (ETextClass *klass)
GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_FONT_E);
gtk_object_add_arg_type ("EText::bold",
GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_BOLD);
+ gtk_object_add_arg_type ("EText::strikeout",
+ GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_STRIKEOUT);
gtk_object_add_arg_type ("EText::anchor",
GTK_TYPE_ANCHOR_TYPE, GTK_ARG_READWRITE, ARG_ANCHOR);
gtk_object_add_arg_type ("EText::justification",
@@ -425,6 +428,7 @@ e_text_init (EText *text)
text->draw_background = FALSE;
text->bold = FALSE;
+ text->strikeout = FALSE;
text->style = E_FONT_PLAIN;
@@ -832,8 +836,7 @@ calc_line_widths (EText *text)
text->font, text->style,
lines->text, lines->ellipsis_length) +
text->ellipsis_width;
- }
- else
+ } else
lines->ellipsis_length = lines->length;
if (lines->width > text->max_width)
@@ -1297,6 +1300,20 @@ e_text_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
case ARG_BOLD:
text->bold = GTK_VALUE_BOOL (*arg);
text->style = text->bold ? E_FONT_BOLD : E_FONT_PLAIN;
+
+ text->needs_redraw = 1;
+ text->needs_recalc_bounds = 1;
+ if ( text->line_wrap )
+ text->needs_split_into_lines = 1;
+ else
+ text->needs_calc_line_widths = 1;
+ needs_update = 1;
+ needs_reflow = 1;
+ break;
+ case ARG_STRIKEOUT:
+ text->strikeout = GTK_VALUE_BOOL (*arg);
+ text->needs_redraw = 1;
+ needs_update = 1;
break;
case ARG_ANCHOR:
text->anchor = GTK_VALUE_ENUM (*arg);
@@ -1536,6 +1553,10 @@ e_text_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
GTK_VALUE_BOOL (*arg) = text->bold;
break;
+ case ARG_STRIKEOUT:
+ GTK_VALUE_BOOL (*arg) = text->strikeout;
+ break;
+
case ARG_ANCHOR:
GTK_VALUE_ENUM (*arg) = text->anchor;
break;
@@ -2159,7 +2180,7 @@ e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
ypos - y,
text->ellipsis ? text->ellipsis : "...",
text->ellipsis ? strlen (text->ellipsis) : 3);
- } else
+ } else {
text_draw_with_objects (text->model,
drawable,
text->font, text->style,
@@ -2168,8 +2189,16 @@ e_text_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
ypos - y,
lines->text,
lines->length);
+ }
}
+ if (text->strikeout)
+ gdk_draw_rectangle (drawable,
+ text->gc,
+ TRUE,
+ xpos - x,
+ ypos - y - e_font_ascent (text->font) / 2,
+ lines->width, 1);
ypos += e_font_height (text->font);
lines++;
}
@@ -2766,6 +2795,7 @@ _do_tooltip (gpointer data)
e_text_get_type (),
"anchor", GTK_ANCHOR_NW,
"bold", text->bold,
+ "strikeout", text->strikeout,
"font_e", text->font,
"text", text->text,
"editable", FALSE,
diff --git a/widgets/text/e-text.h b/widgets/text/e-text.h
index e769818e74..dfb25d21b5 100644
--- a/widgets/text/e-text.h
+++ b/widgets/text/e-text.h
@@ -204,6 +204,7 @@ struct _EText {
guint needs_split_into_lines : 1; /* Needs split_into_lines */
guint bold : 1;
+ guint strikeout : 1;
EFontStyle style;
@@ -215,7 +216,6 @@ struct _EText {
GdkCursor *i_cursor; /* I beam cursor */
gint tooltip_timeout; /* Timeout for the tooltip */
- GtkWidget *tooltip_window; /* GtkWindow for displaying the tooltip */
gint tooltip_count; /* GDK_ENTER_NOTIFY count. */
gint dbl_timeout; /* Double click timeout */