pidgin/gtkimhtml.c

changeset 31310
7835bac46b07
parent 31294
73607ab89c6f
child 31889
96183796df0c
child 32414
8c5d1edf9da2
equal deleted inserted replaced
31309:eea56be9e0eb 31310:7835bac46b07
96 int length; 96 int length;
97 97
98 gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link); 98 gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link);
99 gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu); 99 gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu);
100 } GtkIMHtmlProtocol; 100 } GtkIMHtmlProtocol;
101
102 typedef struct _GtkIMHtmlFontDetail {
103 gushort size;
104 gchar *face;
105 gchar *fore;
106 gchar *back;
107 gchar *bg;
108 gchar *sml;
109 gboolean underline;
110 gboolean strike;
111 gshort bold;
112 } GtkIMHtmlFontDetail;
101 113
102 static gboolean 114 static gboolean
103 gtk_text_view_drag_motion (GtkWidget *widget, 115 gtk_text_view_drag_motion (GtkWidget *widget,
104 GdkDragContext *context, 116 GdkDragContext *context,
105 gint x, 117 gint x,
3189 && !(options & GTK_IMHTML_NO_FORMATTING)) 3201 && !(options & GTK_IMHTML_NO_FORMATTING))
3190 { 3202 {
3191 gtk_imhtml_toggle_underline(imhtml); 3203 gtk_imhtml_toggle_underline(imhtml);
3192 font->underline = 1; 3204 font->underline = 1;
3193 } 3205 }
3206
3207 if (oldfont)
3208 {
3209 font->strike = oldfont->strike;
3210 }
3211 if (textdec && font->strike != 1
3212 && g_ascii_strcasecmp(textdec, "line-through") == 0
3213 && (imhtml->format_functions & GTK_IMHTML_STRIKE)
3214 && !(options & GTK_IMHTML_NO_FORMATTING))
3215 {
3216 gtk_imhtml_toggle_strike(imhtml);
3217 font->strike = 1;
3218 }
3194 g_free(textdec); 3219 g_free(textdec);
3195 3220
3196 if (oldfont) 3221 if (oldfont)
3197 { 3222 {
3198 font->bold = oldfont->bold; 3223 font->bold = oldfont->bold;
3241 3266
3242 if (!oldfont) { 3267 if (!oldfont) {
3243 gtk_imhtml_font_set_size(imhtml, 3); 3268 gtk_imhtml_font_set_size(imhtml, 3);
3244 if (font->underline && !(options & GTK_IMHTML_NO_FORMATTING)) 3269 if (font->underline && !(options & GTK_IMHTML_NO_FORMATTING))
3245 gtk_imhtml_toggle_underline(imhtml); 3270 gtk_imhtml_toggle_underline(imhtml);
3271 if (font->strike && !(options & GTK_IMHTML_NO_FORMATTING))
3272 gtk_imhtml_toggle_strike(imhtml);
3246 if (font->bold && !(options & GTK_IMHTML_NO_FORMATTING)) 3273 if (font->bold && !(options & GTK_IMHTML_NO_FORMATTING))
3247 gtk_imhtml_toggle_bold(imhtml); 3274 gtk_imhtml_toggle_bold(imhtml);
3248 if (!(options & GTK_IMHTML_NO_FONTS)) 3275 if (!(options & GTK_IMHTML_NO_FONTS))
3249 gtk_imhtml_toggle_fontface(imhtml, NULL); 3276 gtk_imhtml_toggle_fontface(imhtml, NULL);
3250 if (!(options & GTK_IMHTML_NO_COLOURS)) 3277 if (!(options & GTK_IMHTML_NO_COLOURS))
3253 gtk_imhtml_toggle_backcolor(imhtml, NULL); 3280 gtk_imhtml_toggle_backcolor(imhtml, NULL);
3254 } 3281 }
3255 else 3282 else
3256 { 3283 {
3257 3284
3258 if ((font->size != oldfont->size) && !(options & GTK_IMHTML_NO_SIZES)) 3285 if ((font->size != oldfont->size) && !(options & GTK_IMHTML_NO_SIZES))
3259 gtk_imhtml_font_set_size(imhtml, oldfont->size); 3286 gtk_imhtml_font_set_size(imhtml, oldfont->size);
3260 3287
3261 if ((font->underline != oldfont->underline) && !(options & GTK_IMHTML_NO_FORMATTING)) 3288 if ((font->underline != oldfont->underline) && !(options & GTK_IMHTML_NO_FORMATTING))
3262 gtk_imhtml_toggle_underline(imhtml); 3289 gtk_imhtml_toggle_underline(imhtml);
3263 3290
3291 if ((font->strike != oldfont->strike) && !(options & GTK_IMHTML_NO_FORMATTING))
3292 gtk_imhtml_toggle_strike(imhtml);
3293
3264 if (((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold)) && !(options & GTK_IMHTML_NO_FORMATTING)) 3294 if (((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold)) && !(options & GTK_IMHTML_NO_FORMATTING))
3265 gtk_imhtml_toggle_bold(imhtml); 3295 gtk_imhtml_toggle_bold(imhtml);
3266 3296
3267 if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0) && !(options & GTK_IMHTML_NO_FONTS)) 3297 if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0) && !(options & GTK_IMHTML_NO_FONTS))
3268 gtk_imhtml_toggle_fontface(imhtml, oldfont->face); 3298 gtk_imhtml_toggle_fontface(imhtml, oldfont->face);
3269 3299
3270 if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0) && !(options & GTK_IMHTML_NO_COLOURS)) 3300 if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0) && !(options & GTK_IMHTML_NO_COLOURS))
3271 gtk_imhtml_toggle_forecolor(imhtml, oldfont->fore); 3301 gtk_imhtml_toggle_forecolor(imhtml, oldfont->fore);
3272 3302
3273 if (font->back && (!oldfont->back || strcmp(font->back, oldfont->back) != 0) && !(options & GTK_IMHTML_NO_COLOURS)) 3303 if (font->back && (!oldfont->back || strcmp(font->back, oldfont->back) != 0) && !(options & GTK_IMHTML_NO_COLOURS))
3274 gtk_imhtml_toggle_backcolor(imhtml, oldfont->back); 3304 gtk_imhtml_toggle_backcolor(imhtml, oldfont->back);
3275 } 3305 }
3276 3306
3277 g_free (font->face); 3307 g_free (font->face);
3278 g_free (font->fore); 3308 g_free (font->fore);
3279 g_free (font->back); 3309 g_free (font->back);

mercurial