Mercurial > pidgin.yaz
comparison pidgin/gtkimhtml.c @ 18392:693f9b544e2b
Show tooltip for smileys. Fixes #1981.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 01 Jul 2007 01:13:54 +0000 |
parents | 4c3a24270114 |
children | 16bdcffb1c62 |
comparison
equal
deleted
inserted
replaced
18391:501f61145915 | 18392:693f9b544e2b |
---|---|
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 } |