| 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); |