| 543 } else { |
543 } else { |
| 544 g_object_set(G_OBJECT(tag), "foreground", visited ? "#800000" : "blue", NULL); |
544 g_object_set(G_OBJECT(tag), "foreground", visited ? "#800000" : "blue", NULL); |
| 545 } |
545 } |
| 546 } |
546 } |
| 547 |
547 |
| |
548 #if GTK_CHECK_VERSION(3,0,0) |
| |
549 static gboolean |
| |
550 gtk_imhtml_tip_paint(GtkIMHtml *imhtml, cairo_t *cr, GtkWidget *w) |
| |
551 #else |
| 548 static gint |
552 static gint |
| 549 gtk_imhtml_tip_paint (GtkIMHtml *imhtml) |
553 gtk_imhtml_tip_paint(GtkIMHtml *imhtml, GdkEvent *event, GtkWidget *w) |
| |
554 #endif |
| 550 { |
555 { |
| 551 PangoLayout *layout; |
556 PangoLayout *layout; |
| 552 cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(imhtml->tip_window)); |
557 GtkStyle *style; |
| 553 |
558 |
| 554 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE); |
559 g_return_val_if_fail(GTK_IS_IMHTML(imhtml), FALSE); |
| 555 |
560 |
| 556 layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); |
561 layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); |
| 557 |
562 style = gtk_widget_get_style(imhtml->tip_window); |
| 558 gtk_paint_flat_box (gtk_widget_get_style(imhtml->tip_window), cr, |
563 |
| 559 GTK_STATE_NORMAL, GTK_SHADOW_OUT, imhtml->tip_window, "tooltip", |
564 #if GTK_CHECK_VERSION(3,0,0) |
| 560 0, 0, -1, -1); |
565 gtk_paint_flat_box(style, cr, |
| 561 |
566 GTK_STATE_NORMAL, GTK_SHADOW_OUT, |
| 562 gtk_paint_layout (gtk_widget_get_style(imhtml->tip_window), cr, |
567 imhtml->tip_window, "tooltip", |
| 563 GTK_STATE_NORMAL, TRUE, imhtml->tip_window, NULL, 4, 4, layout); |
568 0, 0, -1, -1); |
| 564 |
569 |
| 565 cairo_destroy(cr); |
570 gtk_paint_layout(style, cr, |
| |
571 GTK_STATE_NORMAL, TRUE, imhtml->tip_window, NULL, |
| |
572 4, 4, layout); |
| |
573 #else |
| |
574 gtk_paint_flat_box(style, gtk_widget_get_window(imhtml->tip_window), |
| |
575 GTK_STATE_NORMAL, GTK_SHADOW_OUT, |
| |
576 NULL, imhtml->tip_window, |
| |
577 "tooltip", 0, 0, -1, -1); |
| |
578 |
| |
579 gtk_paint_layout(style, gtk_widget_get_window(imhtml->tip_window), |
| |
580 GTK_STATE_NORMAL, FALSE, NULL, imhtml->tip_window, NULL, |
| |
581 4, 4, layout); |
| |
582 #endif |
| |
583 |
| 566 g_object_unref(layout); |
584 g_object_unref(layout); |
| 567 return FALSE; |
585 return FALSE; |
| 568 } |
586 } |
| 569 |
587 |
| 570 static gint |
588 static gint |
| 598 gtk_window_set_title(GTK_WINDOW(imhtml->tip_window), "GtkIMHtml"); |
616 gtk_window_set_title(GTK_WINDOW(imhtml->tip_window), "GtkIMHtml"); |
| 599 gtk_window_set_resizable (GTK_WINDOW (imhtml->tip_window), FALSE); |
617 gtk_window_set_resizable (GTK_WINDOW (imhtml->tip_window), FALSE); |
| 600 gtk_widget_set_name (imhtml->tip_window, "gtk-tooltips"); |
618 gtk_widget_set_name (imhtml->tip_window, "gtk-tooltips"); |
| 601 gtk_window_set_type_hint (GTK_WINDOW (imhtml->tip_window), |
619 gtk_window_set_type_hint (GTK_WINDOW (imhtml->tip_window), |
| 602 GDK_WINDOW_TYPE_HINT_TOOLTIP); |
620 GDK_WINDOW_TYPE_HINT_TOOLTIP); |
| 603 g_signal_connect_swapped (G_OBJECT (imhtml->tip_window), "expose_event", |
621 #if GTK_CHECK_VERSION(3,0,0) |
| 604 G_CALLBACK (gtk_imhtml_tip_paint), imhtml); |
622 g_signal_connect_swapped(G_OBJECT(imhtml->tip_window), "draw", |
| |
623 G_CALLBACK(gtk_imhtml_tip_paint), imhtml); |
| |
624 #else |
| |
625 g_signal_connect_swapped(G_OBJECT(imhtml->tip_window), "expose_event", |
| |
626 G_CALLBACK(gtk_imhtml_tip_paint), imhtml); |
| |
627 #endif |
| 605 |
628 |
| 606 gtk_widget_ensure_style (imhtml->tip_window); |
629 gtk_widget_ensure_style (imhtml->tip_window); |
| 607 layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); |
630 layout = gtk_widget_create_pango_layout(imhtml->tip_window, imhtml->tip); |
| 608 font = pango_context_load_font(pango_layout_get_context(layout), |
631 font = pango_context_load_font(pango_layout_get_context(layout), |
| 609 style->font_desc); |
632 style->font_desc); |