comparison pidgin/gtkimhtml.c @ 25497:67ad619bd97f

propagate from branch 'im.pidgin.pidgin' (head 3d1e6b8637ff9133c8f17e9aeaeea1284c898d86) to branch 'im.pidgin.pidgin.yaz' (head cf1ed778db33093adccaec9aa0399ac72a0b712f)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 04 Jun 2007 07:22:38 +0000
parents 2e1131c31941 08e95637208f
children fb0b82b40f98
comparison
equal deleted inserted replaced
17708:794abbe3e14e 25497:67ad619bd97f
93 GdkDragContext *context, 93 GdkDragContext *context,
94 gint x, 94 gint x,
95 gint y, 95 gint y,
96 guint time); 96 guint time);
97 97
98 /* yaz. If you want to use shortcut keys that may conflict with
99 inputmethods, change this to 1. */
100 #define ENABLE_SHORTCUT 0
101
98 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 102 static void preinsert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
99 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml); 103 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml);
100 static void delete_cb(GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextIter *end, GtkIMHtml *imhtml); 104 static void delete_cb(GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextIter *end, GtkIMHtml *imhtml);
101 static void insert_ca_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextChildAnchor *arg2, gpointer user_data); 105 static void insert_ca_cb(GtkTextBuffer *buffer, GtkTextIter *arg1, GtkTextChildAnchor *arg2, gpointer user_data);
102 static void gtk_imhtml_apply_tags_on_insert(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end); 106 static void gtk_imhtml_apply_tags_on_insert(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end);
404 } 408 }
405 409
406 static gint 410 static gint
407 gtk_imhtml_tip (gpointer data) 411 gtk_imhtml_tip (gpointer data)
408 { 412 {
409 GtkIMHtml *imhtml = data; 413 GtkIMHtml *imhtml = (GtkIMHtml *)data;
410 PangoFontMetrics *font_metrics; 414 PangoFontMetrics *font_metrics;
411 PangoLayout *layout; 415 PangoLayout *layout;
412 PangoFont *font; 416 PangoFont *font;
417 PangoLanguage *lang;
413 418
414 gint gap, x, y, h, w, scr_w, baseline_skip; 419 gint gap, x, y, h, w, scr_w, baseline_skip;
415 420
416 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE); 421 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE);
417 422
448 g_free(tmp); 453 g_free(tmp);
449 454
450 return FALSE; 455 return FALSE;
451 } 456 }
452 457
453 font_metrics = pango_font_get_metrics(font, NULL); 458 lang = pango_context_get_language (pango_layout_get_context(layout));
459 font_metrics = pango_font_get_metrics(font, lang); //it's ok.
460 // font_metrics = pango_font_get_metrics(font, NULL); //crash!
454 461
455 pango_layout_get_pixel_size(layout, &scr_w, NULL); 462 pango_layout_get_pixel_size(layout, &scr_w, NULL);
456 gap = PANGO_PIXELS((pango_font_metrics_get_ascent(font_metrics) + 463 gap = PANGO_PIXELS((pango_font_metrics_get_ascent(font_metrics) +
457 pango_font_metrics_get_descent(font_metrics))/ 4); 464 pango_font_metrics_get_descent(font_metrics))/ 4);
458 465
553 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->arrow_cursor); 560 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->arrow_cursor);
554 if (GTK_IMHTML(imhtml)->tip_timer) 561 if (GTK_IMHTML(imhtml)->tip_timer)
555 g_source_remove(GTK_IMHTML(imhtml)->tip_timer); 562 g_source_remove(GTK_IMHTML(imhtml)->tip_timer);
556 GTK_IMHTML(imhtml)->tip_timer = 0; 563 GTK_IMHTML(imhtml)->tip_timer = 0;
557 } 564 }
558 565 //yaz here bomb explodes
566 #if 1
559 if (tip){ 567 if (tip){
560 if (!GTK_IMHTML(imhtml)->editable) 568 if (!GTK_IMHTML(imhtml)->editable)
561 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor); 569 gdk_window_set_cursor(win, GTK_IMHTML(imhtml)->hand_cursor);
562 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT, 570 GTK_IMHTML(imhtml)->tip_timer = g_timeout_add (TOOLTIP_TIMEOUT,
563 gtk_imhtml_tip, imhtml); 571 gtk_imhtml_tip, imhtml);
564 } 572 }
565 573 #endif
566 GTK_IMHTML(imhtml)->tip = tip; 574 GTK_IMHTML(imhtml)->tip = tip;
567 g_slist_free(tags); 575 g_slist_free(tags);
568 return FALSE; 576 return FALSE;
569 } 577 }
570 578