[gtk/textview-children: 3/3] textview: Don't leave embedded children behind
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/textview-children: 3/3] textview: Don't leave embedded children behind
- Date: Fri, 5 Nov 2021 22:56:57 +0000 (UTC)
commit 52ac8814ccd3f22fcd37cb3d644ff4eefc990362
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Nov 5 18:54:06 2021 -0400
textview: Don't leave embedded children behind
When scrolling embedded widgets out of view,
they sometimes get left behind because we don't
reallocated them. To avoid that, move _all_ children
out of view in size_allocate, and let the current
child allocation plumbing move the visible ones
back in place.
gtk/gtktextview.c | 11 +++++++++++
1 file changed, 11 insertions(+)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 340d12b2d9..db23e9ad86 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -4409,6 +4409,8 @@ gtk_text_view_allocate_children (GtkTextView *text_view)
{
const AnchoredChild *child = iter->data;
GtkTextIter child_loc;
+ GtkRequisition child_req;
+ GtkAllocation allocation;
/* We need to force-validate the regions containing children. */
gtk_text_buffer_get_iter_at_child_anchor (get_buffer (text_view),
@@ -4429,6 +4431,15 @@ gtk_text_view_allocate_children (GtkTextView *text_view)
}
gtk_text_layout_validate_yrange (priv->layout, &child_loc, 0, 1);
+
+ gtk_widget_get_preferred_size (child->widget, &child_req, NULL);
+
+ allocation.x = - child_req.width;
+ allocation.y = - child_req.height;
+ allocation.width = child_req.width;
+ allocation.height = child_req.height;
+
+ gtk_widget_size_allocate (child->widget, &allocation, -1);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]