# HG changeset patch # User Elliott Sales de Andrade # Date 1325023200 0 # Node ID 7b9566b775017deda9303d464c6f91c16aa26072 # Parent 466efc330d3d2ff629f5eb537872b286864984f9 Add page up/down for WebKit view. diff -r 466efc330d3d -r 7b9566b77501 pidgin/gtkconv.c --- a/pidgin/gtkconv.c Fri Dec 23 03:59:39 2011 +0000 +++ b/pidgin/gtkconv.c Tue Dec 27 22:00:00 2011 +0000 @@ -2186,19 +2186,13 @@ case GDK_Page_Up: case GDK_KP_Page_Up: -/* TODO WEBKIT: Write this. */ -#if 0 - gtk_imhtml_page_up(GTK_IMHTML(gtkconv->imhtml)); -#endif /* if 0 */ + gtk_webview_page_up(GTK_WEBVIEW(gtkconv->webview)); return TRUE; break; case GDK_Page_Down: case GDK_KP_Page_Down: -/* TODO WEBKIT: Write this. */ -#if 0 - gtk_imhtml_page_down(GTK_IMHTML(gtkconv->imhtml)); -#endif /* if 0 */ + gtk_webview_page_down(GTK_WEBVIEW(gtkconv->webview)); return TRUE; break; diff -r 466efc330d3d -r 7b9566b77501 pidgin/gtkwebview.c --- 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) { diff -r 466efc330d3d -r 7b9566b77501 pidgin/gtkwebview.h --- a/pidgin/gtkwebview.h Fri Dec 23 03:59:39 2011 +0000 +++ b/pidgin/gtkwebview.h Tue Dec 27 22:00:00 2011 +0000 @@ -143,5 +143,19 @@ */ void gtk_webview_scroll_to_end(GtkWebView *webview, gboolean smooth); +/** + * Scrolls a GtkWebView up by one page. + * + * @param webview The GtkWebView. + */ +void gtk_webview_page_up(GtkWebView *webview); + +/** + * Scrolls a GtkWebView down by one page. + * + * @param webview The GtkWebView. + */ +void gtk_webview_page_down(GtkWebView *webview); + #endif /* _PIDGIN_WEBVIEW_H_ */