summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-04-20 13:50:19 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-04-20 13:50:19 +0000
commit2f49fbd6cd8749aa6c13370cc6fa83aaae958018 (patch)
treeeebb09f83de6798b3e7423e7963af62bfdbed18e
parentca5188c4f2a62d5135f3f2953eddd0db835680bd (diff)
downloadgdk-pixbuf-2f49fbd6cd8749aa6c13370cc6fa83aaae958018.tar.gz
Make sure anchored children get size allocated, even if the layout is
2004-04-20 Matthias Clasen <mclasen@redhat.com> * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev)
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.pre-2-106
-rw-r--r--ChangeLog.pre-2-46
-rw-r--r--ChangeLog.pre-2-66
-rw-r--r--ChangeLog.pre-2-86
-rw-r--r--gtk/gtktextview.c20
6 files changed, 47 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index fc01ee0a3..87a17afa8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-04-20 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
+ sure anchored children get size allocated, even if the layout
+ is valid. (#122323, Andrew E. Makeev)
+
Mon Apr 19 17:59:17 2004 Owen Taylor <otaylor@redhat.com>
* INSTALL.in: Update libpng and libjpeg URLs, remove
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index fc01ee0a3..87a17afa8 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,9 @@
+2004-04-20 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
+ sure anchored children get size allocated, even if the layout
+ is valid. (#122323, Andrew E. Makeev)
+
Mon Apr 19 17:59:17 2004 Owen Taylor <otaylor@redhat.com>
* INSTALL.in: Update libpng and libjpeg URLs, remove
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index fc01ee0a3..87a17afa8 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,9 @@
+2004-04-20 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
+ sure anchored children get size allocated, even if the layout
+ is valid. (#122323, Andrew E. Makeev)
+
Mon Apr 19 17:59:17 2004 Owen Taylor <otaylor@redhat.com>
* INSTALL.in: Update libpng and libjpeg URLs, remove
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index fc01ee0a3..87a17afa8 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,9 @@
+2004-04-20 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
+ sure anchored children get size allocated, even if the layout
+ is valid. (#122323, Andrew E. Makeev)
+
Mon Apr 19 17:59:17 2004 Owen Taylor <otaylor@redhat.com>
* INSTALL.in: Update libpng and libjpeg URLs, remove
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index fc01ee0a3..87a17afa8 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,9 @@
+2004-04-20 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make
+ sure anchored children get size allocated, even if the layout
+ is valid. (#122323, Andrew E. Makeev)
+
Mon Apr 19 17:59:17 2004 Owen Taylor <otaylor@redhat.com>
* INSTALL.in: Update libpng and libjpeg URLs, remove
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index df8d87780..50efb41bd 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -43,6 +43,7 @@
#include "gtktextview.h"
#include "gtkimmulticontext.h"
#include "gdk/gdkkeysyms.h"
+#include "gtkprivate.h"
#include "gtksizegroup.h" /* FIXME http://bugzilla.gnome.org/show_bug.cgi?id=72258 */
#include "gtktextutil.h"
#include "gtkwindow.h"
@@ -346,7 +347,7 @@ static void gtk_text_view_remove (GtkContainer *container,
GtkWidget *child);
static void gtk_text_view_forall (GtkContainer *container,
gboolean include_internals,
- GtkCallback callback,
+ GtkCallback callback,
gpointer callback_data);
/* FIXME probably need the focus methods. */
@@ -2877,6 +2878,19 @@ gtk_text_view_allocate_children (GtkTextView *text_view)
&child_loc,
child->anchor);
+ /* Since anchored children are only ever allocated from
+ * gtk_text_layout_get_line_display() we have to make sure
+ * that the display line caching in the layout doesn't
+ * get in the way. Invalidating the layout around the anchor
+ * achieves this.
+ */
+ if (GTK_WIDGET_ALLOC_NEEDED (child->widget))
+ {
+ GtkTextIter end = child_loc;
+ gtk_text_iter_forward_char (&end);
+ gtk_text_layout_invalidate (text_view->layout, &child_loc, &end);
+ }
+
gtk_text_layout_validate_yrange (text_view->layout,
&child_loc,
0, 1);
@@ -4176,7 +4190,7 @@ gtk_text_view_paint (GtkWidget *widget,
while (tmp_list != NULL)
{
GtkWidget *child = tmp_list->data;
-
+
gtk_container_propagate_expose (GTK_CONTAINER (text_view),
child,
event);
@@ -6108,7 +6122,7 @@ gtk_text_view_drag_data_received (GtkWidget *widget,
GtkTextIter drop_point;
GtkTextView *text_view;
gboolean success = FALSE;
- GtkTextBuffer *buffer;
+ GtkTextBuffer *buffer = NULL;
text_view = GTK_TEXT_VIEW (widget);