[tepl] StyleSchemeChooserWidget: scroll to row when changed programmatically



commit 167e25ec00b00bfbbc8a0e0aad9f96eb080fdde1
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Thu Apr 23 12:44:21 2020 +0200

    StyleSchemeChooserWidget: scroll to row when changed programmatically
    
    Tested with this shell script:
    
    ```
    while true
    do
            gsettings set org.gnome.gnome-latex.preferences.editor scheme 'classic'
            sleep 3
            gsettings set org.gnome.gnome-latex.preferences.editor scheme 'tango'
            sleep 3
    done
    ```

 tepl/tepl-style-scheme-chooser-widget.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/tepl/tepl-style-scheme-chooser-widget.c b/tepl/tepl-style-scheme-chooser-widget.c
index 5b0c276..e2c2b9c 100644
--- a/tepl/tepl-style-scheme-chooser-widget.c
+++ b/tepl/tepl-style-scheme-chooser-widget.c
@@ -159,6 +159,14 @@ tepl_style_scheme_chooser_widget_dispose (GObject *object)
        G_OBJECT_CLASS (tepl_style_scheme_chooser_widget_parent_class)->dispose (object);
 }
 
+static void
+scroll_to_row (GtkListBox    *list_box,
+              GtkListBoxRow *row)
+{
+       /* See also the call to gtk_container_set_focus_vadjustment() below. */
+       gtk_container_set_focus_child (GTK_CONTAINER (list_box), GTK_WIDGET (row));
+}
+
 static void
 scroll_to_selected_row (GtkListBox *list_box)
 {
@@ -166,11 +174,7 @@ scroll_to_selected_row (GtkListBox *list_box)
 
        if (selected_row != NULL)
        {
-               /* See also the call to gtk_container_set_focus_vadjustment()
-                * below.
-                */
-               gtk_container_set_focus_child (GTK_CONTAINER (list_box),
-                                              GTK_WIDGET (selected_row));
+               scroll_to_row (list_box, selected_row);
        }
 }
 
@@ -261,6 +265,7 @@ tepl_style_scheme_chooser_widget_set_style_scheme (GtkSourceStyleSchemeChooser *
                if (style_scheme_equal (cur_style_scheme, style_scheme))
                {
                        gtk_list_box_select_row (chooser->priv->list_box, cur_list_box_row);
+                       scroll_to_row (chooser->priv->list_box, cur_list_box_row);
                        break;
                }
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]