Mercurial > pidgin.yaz
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 |