diff pidgin/gtkwebview.c @ 32419:7b9566b77501

Add page up/down for WebKit view.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Tue, 27 Dec 2011 22:00:00 +0000
parents 68fe7b5211a7
children 3e82cdc85a45
line wrap: on
line diff
--- a/pidgin/gtkwebview.c	Fri Dec 23 03:59:39 2011 +0000
+++ b/pidgin/gtkwebview.c	Tue Dec 27 22:00:00 2011 +0000
@@ -394,6 +394,41 @@
 	}
 }
 
+void gtk_webview_page_up(GtkWebView *webview)
+{
+	GtkAdjustment *vadj = webview->priv->vadj;
+	gdouble scroll_val;
+
+#if GTK_CHECK_VERSION(2,14,0)
+	scroll_val = gtk_adjustment_get_value(vadj) - gtk_adjustment_get_page_size(vadj);
+	scroll_val = MAX(scroll_val, gtk_adjustment_get_lower(vadj));
+#else
+	scroll_val = gtk_adjustment_get_value(vadj) - vadj->page_size;
+	scroll_val = MAX(scroll_val, vadj->lower);
+#endif
+
+	gtk_adjustment_set_value(vadj, scroll_val);
+}
+
+void gtk_webview_page_down(GtkWebView *webview)
+{
+	GtkAdjustment *vadj = webview->priv->vadj;
+	gdouble scroll_val;
+	gdouble page_size;
+
+#if GTK_CHECK_VERSION(2,14,0)
+	page_size = gtk_adjustment_get_page_size(vadj);
+	scroll_val = gtk_adjustment_get_value(vadj) + page_size;
+	scroll_val = MIN(scroll_val, gtk_adjustment_get_upper(vadj) - page_size);
+#else
+	page_size = vadj->page_size;
+	scroll_val = gtk_adjustment_get_value(vadj) + page_size;
+	scroll_val = MIN(scroll_val, vadj->upper - page_size);
+#endif
+
+	gtk_adjustment_set_value(vadj, scroll_val);
+}
+
 GType
 gtk_webview_get_type(void)
 {