| 492 int x, y; |
492 int x, y; |
| 493 char *tip = NULL; |
493 char *tip = NULL; |
| 494 GSList *tags = NULL, *templist = NULL; |
494 GSList *tags = NULL, *templist = NULL; |
| 495 GdkColor *norm, *pre; |
495 GdkColor *norm, *pre; |
| 496 GtkTextTag *tag = NULL, *oldprelit_tag; |
496 GtkTextTag *tag = NULL, *oldprelit_tag; |
| |
497 GtkTextChildAnchor* anchor; |
| |
498 gboolean hand = TRUE; |
| 497 |
499 |
| 498 oldprelit_tag = GTK_IMHTML(imhtml)->prelit_tag; |
500 oldprelit_tag = GTK_IMHTML(imhtml)->prelit_tag; |
| 499 |
501 |
| 500 gdk_window_get_pointer(GTK_WIDGET(imhtml)->window, NULL, NULL, NULL); |
502 gdk_window_get_pointer(GTK_WIDGET(imhtml)->window, NULL, NULL, NULL); |
| 501 gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(imhtml), GTK_TEXT_WINDOW_WIDGET, |
503 gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(imhtml), GTK_TEXT_WINDOW_WIDGET, |
| 549 if (GTK_IMHTML(imhtml)->tip_timer) |
551 if (GTK_IMHTML(imhtml)->tip_timer) |
| 550 g_source_remove(GTK_IMHTML(imhtml)->tip_timer); |
552 g_source_remove(GTK_IMHTML(imhtml)->tip_timer); |
| 551 GTK_IMHTML(imhtml)->tip_timer = 0; |
553 GTK_IMHTML(imhtml)->tip_timer = 0; |
| 552 } |
554 } |
| 553 |
555 |
| |
556 /* If we don't have a tip from a URL, let's see if we have a tip from a smiley */ |
| |
557 anchor = gtk_text_iter_get_child_anchor(&iter); |
| |
558 if (anchor) { |
| |
559 tip = g_object_get_data(G_OBJECT(anchor), "gtkimhtml_plaintext"); |
| |
560 hand = FALSE; |
| |
561 } |
| |
562 |
| 554 if (tip){ |
563 if (tip){ |
| 555 if (!GTK_IMHTML(imhtml)->editable) |
564 if (!GTK_IMHTML(imhtml)->editable && hand) |
| 556 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor); |
565 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor); |
| 557 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT, |
566 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT, |
| 558 gtk_imhtml_tip, imhtml); |
567 gtk_imhtml_tip, imhtml); |
| 559 } |
568 } |
| 560 |
569 |
| 4619 imhtml_smiley->anchors = g_slist_append(imhtml_smiley->anchors, anchor); |
4628 imhtml_smiley->anchors = g_slist_append(imhtml_smiley->anchors, anchor); |
| 4620 if (ebox) { |
4629 if (ebox) { |
| 4621 GtkWidget *img = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_MENU); |
4630 GtkWidget *img = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_MENU); |
| 4622 gtk_container_add(GTK_CONTAINER(ebox), img); |
4631 gtk_container_add(GTK_CONTAINER(ebox), img); |
| 4623 gtk_widget_show(img); |
4632 gtk_widget_show(img); |
| |
4633 g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", g_strdup(unescaped), g_free); |
| 4624 gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(imhtml), ebox, anchor); |
4634 gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(imhtml), ebox, anchor); |
| 4625 } |
4635 } |
| 4626 } else { |
4636 } else { |
| 4627 gtk_text_buffer_insert(imhtml->text_buffer, iter, smiley, -1); |
4637 gtk_text_buffer_insert(imhtml->text_buffer, iter, smiley, -1); |
| 4628 } |
4638 } |