comparison pidgin/gtkimhtml.c @ 27724:26f55eb6ab59

propagate from branch 'im.pidgin.pidgin' (head 1cb036aecbbe359226e69874379d39ce74c8daf6) to branch 'im.pidgin.pidgin.yaz' (head 99515d90725804d37c9baeec606e2f4e2ec5a61f)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Wed, 19 Sep 2007 08:27:28 +0000
parents 6bf32c9e15a7 411b5a604a17
children 13ab08434a50
comparison
equal deleted inserted replaced
20541:a9022965162b 27724:26f55eb6ab59
87 GdkDragContext *context, 87 GdkDragContext *context,
88 gint x, 88 gint x,
89 gint y, 89 gint y,
90 guint time); 90 guint time);
91 91
92 /* yaz. If you want to use shortcut keys that may conflict with
93 inputmethods, change this to 1. */
94 #define ENABLE_SHORTCUT 0
95
92 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 96 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
93 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 97 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
94 static void delete_cb(GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextIter *end, GtkIMHtml *imhtml); 98 static void delete_cb(GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextIter *end, GtkIMHtml *imhtml);
95 static void insert_ca_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextChildAnchor *arg2, gpointer user_data); 99 static void insert_ca_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextChildAnchor *arg2, gpointer user_data);
96 static void gtk_imhtml_apply_tags_on_insert(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end); 100 static void gtk_imhtml_apply_tags_on_insert(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end);
415 } 419 }
416 420
417 static gint 421 static gint
418 gtk_imhtml_tip (gpointer data) 422 gtk_imhtml_tip (gpointer data)
419 { 423 {
420 GtkIMHtml *imhtml = data; 424 GtkIMHtml *imhtml = (GtkIMHtml *)data;
421 PangoFontMetrics *font_metrics; 425 PangoFontMetrics *font_metrics;
422 PangoLayout *layout; 426 PangoLayout *layout;
423 PangoFont *font; 427 PangoFont *font;
428 PangoLanguage *lang;
424 429
425 gint gap, x, y, h, w, scr_w, baseline_skip; 430 gint gap, x, y, h, w, scr_w, baseline_skip;
426 431
427 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE); 432 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE);
428 433
459 g_free(tmp); 464 g_free(tmp);
460 465
461 return FALSE; 466 return FALSE;
462 } 467 }
463 468
464 font_metrics = pango_font_get_metrics(font, NULL); 469 lang = pango_context_get_language (pango_layout_get_context(layout));
470 font_metrics = pango_font_get_metrics(font, lang); //it's ok.
471 // font_metrics = pango_font_get_metrics(font, NULL); //crash!
465 472
466 pango_layout_get_pixel_size(layout, &scr_w, NULL); 473 pango_layout_get_pixel_size(layout, &scr_w, NULL);
467 gap = PANGO_PIXELS((pango_font_metrics_get_ascent(font_metrics) + 474 gap = PANGO_PIXELS((pango_font_metrics_get_ascent(font_metrics) +
468 pango_font_metrics_get_descent(font_metrics))/ 4); 475 pango_font_metrics_get_descent(font_metrics))/ 4);
469 476
573 anchor = gtk_text_iter_get_child_anchor(&iter); 580 anchor = gtk_text_iter_get_child_anchor(&iter);
574 if (anchor) { 581 if (anchor) {
575 tip = g_object_get_data(G_OBJECT(anchor), "gtkimhtml_plaintext"); 582 tip = g_object_get_data(G_OBJECT(anchor), "gtkimhtml_plaintext");
576 hand = FALSE; 583 hand = FALSE;
577 } 584 }
578 585 //yaz here bomb explodes
586 #if 1
579 if (tip){ 587 if (tip){
580 if (!GTK_IMHTML(imhtml)->editable && hand) 588 if (!GTK_IMHTML(imhtml)->editable && hand)
581 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor); 589 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor);
582 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT, 590 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT,
583 gtk_imhtml_tip, imhtml); 591 gtk_imhtml_tip, imhtml);
584 } 592 }
585 593 #endif
586 GTK_IMHTML(imhtml)->tip = tip; 594 GTK_IMHTML(imhtml)->tip = tip;
587 g_slist_free(tags); 595 g_slist_free(tags);
588 return FALSE; 596 return FALSE;
589 } 597 }
590 598