| 540 int top, bottom, height, win_top, win_bottom; |
540 int top, bottom, height, win_top, win_bottom; |
| 541 GtkTextIter start, end; |
541 GtkTextIter start, end; |
| 542 |
542 |
| 543 GdkGC *gc = gdk_gc_new(GDK_DRAWABLE(event->window)); |
543 GdkGC *gc = gdk_gc_new(GDK_DRAWABLE(event->window)); |
| 544 GdkColor color; |
544 GdkColor color; |
| 545 |
545 |
| 546 gtk_text_buffer_get_iter_at_mark (GTK_IMHTML(widget)->text_buffer, &start, tag->start); |
|
| 547 |
|
| 548 if (tag->end) |
|
| 549 gtk_text_buffer_get_iter_at_mark (GTK_IMHTML(widget)->text_buffer, &end, tag->end); |
|
| 550 else |
|
| 551 gtk_text_buffer_get_end_iter (GTK_IMHTML(widget)->text_buffer, &end); |
|
| 552 |
|
| 553 gtk_text_view_get_line_yrange (GTK_TEXT_VIEW(widget), &start, &top, NULL); |
|
| 554 gtk_text_view_get_line_yrange (GTK_TEXT_VIEW(widget), &end, &bottom, &height); |
|
| 555 |
|
| 556 gtk_text_view_get_visible_rect (GTK_TEXT_VIEW(widget), &visible_rect); |
546 gtk_text_view_get_visible_rect (GTK_TEXT_VIEW(widget), &visible_rect); |
| 557 gtk_text_view_buffer_to_window_coords (GTK_TEXT_VIEW(widget), |
547 gtk_text_view_buffer_to_window_coords (GTK_TEXT_VIEW(widget), |
| 558 GTK_TEXT_WINDOW_TEXT, |
548 GTK_TEXT_WINDOW_TEXT, |
| 559 visible_rect.x, |
549 visible_rect.x, |
| 560 visible_rect.y, |
550 visible_rect.y, |
| 561 &redraw_rect.x, |
551 &redraw_rect.x, |
| 562 &redraw_rect.y); |
552 &redraw_rect.y); |
| |
553 |
| |
554 if (GTK_IMHTML(widget)->wbfo) { |
| |
555 gdk_color_parse(GTK_IMHTML(widget)->edit.backcolor, &color); |
| |
556 gdk_gc_set_rgb_fg_color(gc, &color); |
| |
557 gdk_draw_rectangle(event->window, |
| |
558 gc, |
| |
559 TRUE, |
| |
560 redraw_rect.x, redraw_rect.y, redraw_rect.width, redraw_rect.height); |
| |
561 return (* GTK_WIDGET_CLASS (parent_class)->expose_event) |
| |
562 (widget, event); |
| |
563 ; |
| |
564 } |
| |
565 |
| |
566 gtk_text_buffer_get_iter_at_mark (GTK_IMHTML(widget)->text_buffer, &start, tag->start); |
| |
567 |
| |
568 if (tag->end) |
| |
569 gtk_text_buffer_get_iter_at_mark (GTK_IMHTML(widget)->text_buffer, &end, tag->end); |
| |
570 else |
| |
571 gtk_text_buffer_get_end_iter (GTK_IMHTML(widget)->text_buffer, &end); |
| |
572 |
| |
573 gtk_text_view_get_line_yrange (GTK_TEXT_VIEW(widget), &start, &top, NULL); |
| |
574 gtk_text_view_get_line_yrange (GTK_TEXT_VIEW(widget), &end, &bottom, &height); |
| |
575 |
| |
576 |
| 563 gtk_text_view_buffer_to_window_coords (GTK_TEXT_VIEW(widget), |
577 gtk_text_view_buffer_to_window_coords (GTK_TEXT_VIEW(widget), |
| 564 GTK_TEXT_WINDOW_TEXT, |
578 GTK_TEXT_WINDOW_TEXT, |
| 565 0, |
579 0, |
| 566 top, |
580 top, |
| 567 NULL, |
581 NULL, |
| 575 redraw_rect.width = visible_rect.width; |
589 redraw_rect.width = visible_rect.width; |
| 576 redraw_rect.height = visible_rect.height; |
590 redraw_rect.height = visible_rect.height; |
| 577 |
591 |
| 578 |
592 |
| 579 |
593 |
| 580 gdk_color_parse(tag->color, &color); |
594 |
| 581 gdk_gc_set_rgb_fg_color(gc, &color); |
|
| 582 |
|
| 583 gdk_draw_rectangle(event->window, |
595 gdk_draw_rectangle(event->window, |
| 584 gc, |
596 gc, |
| 585 TRUE, |
597 TRUE, |
| 586 redraw_rect.x, win_top, redraw_rect.width, win_bottom - win_top); |
598 redraw_rect.x, win_top, redraw_rect.width, win_bottom - win_top); |
| 587 gdk_gc_unref(gc); |
599 gdk_gc_unref(gc); |