emojichooser: animate the adjustment

... instead of doing a dance with the scrolled window to get it to scroll
the adjustment.
This commit is contained in:
Benjamin Otte 2017-11-05 16:12:35 +01:00
parent e6f5085255
commit 1cee71049a

View File

@ -19,7 +19,7 @@
#include "gtkemojichooser.h" #include "gtkemojichooser.h"
#include "gtkadjustment.h" #include "gtkadjustmentprivate.h"
#include "gtkbox.h" #include "gtkbox.h"
#include "gtkbutton.h" #include "gtkbutton.h"
#include "gtkcssprovider.h" #include "gtkcssprovider.h"
@ -102,19 +102,13 @@ scroll_to_section (GtkButton *button,
GtkEmojiChooser *chooser; GtkEmojiChooser *chooser;
GtkAdjustment *adj; GtkAdjustment *adj;
GtkAllocation alloc = { 0, 0, 0, 0 }; GtkAllocation alloc = { 0, 0, 0, 0 };
double page_increment, value;
gboolean dummy;
chooser = GTK_EMOJI_CHOOSER (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_EMOJI_CHOOSER)); chooser = GTK_EMOJI_CHOOSER (gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_EMOJI_CHOOSER));
adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (chooser->scrolled_window)); adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (chooser->scrolled_window));
if (section->heading) if (section->heading)
gtk_widget_get_allocation (section->heading, &alloc); gtk_widget_get_allocation (section->heading, &alloc);
page_increment = gtk_adjustment_get_page_increment (adj); gtk_adjustment_animate_to_value (adj, alloc.y);
value = gtk_adjustment_get_value (adj);
gtk_adjustment_set_page_increment (adj, alloc.y - value);
g_signal_emit_by_name (chooser->scrolled_window, "scroll-child", GTK_SCROLL_PAGE_FORWARD, FALSE, &dummy);
gtk_adjustment_set_page_increment (adj, page_increment);
} }
static void static void