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 }