From: Benjamin Otte Date: Wed, 8 Mar 2023 00:19:39 +0000 (+0100) Subject: viewport: Use gtk_viewport_scroll_to() for focus scrolling X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~2^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=447c07bf5e3802d1e02d230ef8c1e2a99013deb3;p=gtk4.git viewport: Use gtk_viewport_scroll_to() for focus scrolling --- diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 8fc93718da..73ed29f877 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -604,30 +604,12 @@ gtk_viewport_set_scroll_to_focus (GtkViewport *viewport, g_object_notify (G_OBJECT (viewport), "scroll-to-focus"); } -static void -scroll_to_view (GtkAdjustment *adj, - double pos, - double size) -{ - double value, page_size; - - value = gtk_adjustment_get_value (adj); - page_size = gtk_adjustment_get_page_size (adj); - - if (pos < 0) - gtk_adjustment_animate_to_value (adj, value + pos); - else if (pos + size >= page_size) - gtk_adjustment_animate_to_value (adj, value + pos + size - page_size); -} - static void focus_change_handler (GtkWidget *widget) { GtkViewport *viewport = GTK_VIEWPORT (widget); GtkRoot *root; GtkWidget *focus_widget; - graphene_rect_t rect; - graphene_point_t p; if ((gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_FOCUS_WITHIN) == 0) return; @@ -641,16 +623,7 @@ focus_change_handler (GtkWidget *widget) if (GTK_IS_TEXT (focus_widget)) focus_widget = gtk_widget_get_parent (focus_widget); - if (!gtk_widget_compute_bounds (focus_widget, viewport->child, &rect)) - return; - - if (!gtk_widget_compute_point (viewport->child, widget, - &GRAPHENE_POINT_INIT (rect.origin.x, rect.origin.y), - &p)) - return; - - scroll_to_view (viewport->adjustment[GTK_ORIENTATION_HORIZONTAL], p.x, rect.size.width); - scroll_to_view (viewport->adjustment[GTK_ORIENTATION_VERTICAL], p.y, rect.size.height); + gtk_viewport_scroll_to (viewport, focus_widget, NULL); } static void