From 43af1f21b975293139fcda3ce99601d19ba17985 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Wed, 18 May 2005 17:10:46 +0000 Subject: If the horizontal adjustment changes because of a change in the layout 2005-05-18 Anders Carlsson * gtk/gtktextview.c: (gtk_text_view_flush_scroll), (gtk_text_view_update_adjustments), (gtk_text_view_value_changed): * gtk/gtktextview.h: If the horizontal adjustment changes because of a change in the layout width, then do a complete redraw. This is because there might be right-aligned or centered text that needs to be redrawn. --- gtk/gtktextview.c | 16 +++++++++++++++- gtk/gtktextview.h | 5 ++--- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'gtk') diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 668dd4e12f..d207cf6810 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -1728,7 +1728,7 @@ gtk_text_view_flush_scroll (GtkTextView *text_view) scroll->use_align, scroll->xalign, scroll->yalign); - + free_pending_scroll (scroll); return retval; @@ -1776,6 +1776,9 @@ gtk_text_view_update_adjustments (GtkTextView *text_view) if (text_view->width != width || text_view->height != height) { + if (text_view->width != width) + text_view->width_changed = TRUE; + text_view->width = width; text_view->height = height; @@ -6489,6 +6492,17 @@ gtk_text_view_value_changed (GtkAdjustment *adj, { dx = text_view->xoffset - (gint)adj->value; text_view->xoffset = adj->value; + + /* If the change is due to a size change we need + * to invalidate the entire text window because there might be + * right-aligned or centered text + */ + if (text_view->width_changed) + { + gdk_window_invalidate_rect (text_view->text_window->bin_window, NULL, FALSE); + + text_view->width_changed = FALSE; + } } else if (adj == text_view->vadjustment) { diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h index ff3a67c800..9062935330 100644 --- a/gtk/gtktextview.h +++ b/gtk/gtktextview.h @@ -93,8 +93,7 @@ struct _GtkTextView guint accepts_tab : 1; - /* this flag is no longer used */ - guint reserved : 1; + guint width_changed : 1; /* debug flag - means that we've validated onscreen since the * last "invalidate" signal from the layout @@ -102,7 +101,7 @@ struct _GtkTextView guint onscreen_validated : 1; guint mouse_cursor_obscured : 1; - + GtkTextWindow *text_window; GtkTextWindow *left_window; GtkTextWindow *right_window; -- cgit v1.2.1