mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-10 07:50:19 +00:00
Updated the GTK3 adjustment update path in gtk_xtext_buffer_show to explicitly set adjustment bounds/page sizing and emit value-changed, while keeping GTK2 behavior unchanged.
This commit is contained in:
@@ -5289,7 +5289,36 @@ gtk_xtext_buffer_show (GtkXText *xtext, xtext_buffer *buf, int render)
|
|||||||
|
|
||||||
gtk_xtext_render_page (xtext);
|
gtk_xtext_render_page (xtext);
|
||||||
#if HAVE_GTK3
|
#if HAVE_GTK3
|
||||||
gtk_xtext_adjustment_set (buf, TRUE);
|
{
|
||||||
|
GtkAllocation allocation;
|
||||||
|
gdouble lower = 0;
|
||||||
|
gdouble upper = buf->num_lines;
|
||||||
|
gdouble value = gtk_adjustment_get_value (xtext->adj);
|
||||||
|
gdouble page_size;
|
||||||
|
|
||||||
|
if (upper == 0)
|
||||||
|
upper = 1;
|
||||||
|
|
||||||
|
gtk_widget_get_allocation (GTK_WIDGET (xtext), &allocation);
|
||||||
|
page_size = allocation.height / xtext->fontsize;
|
||||||
|
|
||||||
|
gtk_adjustment_set_lower (xtext->adj, lower);
|
||||||
|
gtk_adjustment_set_upper (xtext->adj, upper);
|
||||||
|
gtk_adjustment_set_page_size (xtext->adj, page_size);
|
||||||
|
gtk_adjustment_set_page_increment (xtext->adj, page_size);
|
||||||
|
|
||||||
|
if (value > upper - page_size)
|
||||||
|
{
|
||||||
|
buf->scrollbar_down = TRUE;
|
||||||
|
value = upper - page_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value < 0)
|
||||||
|
value = 0;
|
||||||
|
|
||||||
|
gtk_adjustment_set_value (xtext->adj, value);
|
||||||
|
gtk_adjustment_value_changed (xtext->adj);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
gtk_adjustment_changed (xtext->adj);
|
gtk_adjustment_changed (xtext->adj);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user