forked from AuroraMiddleware/gtk
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:
parent
e6f5085255
commit
1cee71049a
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user