| 343 static gboolean |
343 static gboolean |
| 344 smooth_scroll_cb(gpointer data) |
344 smooth_scroll_cb(gpointer data) |
| 345 { |
345 { |
| 346 struct GtkWebViewPriv *priv = data; |
346 struct GtkWebViewPriv *priv = data; |
| 347 GtkAdjustment *adj = priv->vadj; |
347 GtkAdjustment *adj = priv->vadj; |
| 348 gdouble max_val = adj->upper - adj->page_size; |
348 gdouble max_val = gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj); |
| 349 gdouble scroll_val = gtk_adjustment_get_value(adj) + ((max_val - gtk_adjustment_get_value(adj)) / 3); |
349 gdouble scroll_val = gtk_adjustment_get_value(adj) + ((max_val - gtk_adjustment_get_value(adj)) / 3); |
| 350 |
350 |
| 351 g_return_val_if_fail(priv->scroll_time != NULL, FALSE); |
351 g_return_val_if_fail(priv->scroll_time != NULL, FALSE); |
| 352 |
352 |
| 353 if (g_timer_elapsed(priv->scroll_time, NULL) > MAX_SCROLL_TIME || scroll_val >= max_val) { |
353 if (g_timer_elapsed(priv->scroll_time, NULL) > MAX_SCROLL_TIME || scroll_val >= max_val) { |
| 369 scroll_idle_cb(gpointer data) |
369 scroll_idle_cb(gpointer data) |
| 370 { |
370 { |
| 371 struct GtkWebViewPriv *priv = data; |
371 struct GtkWebViewPriv *priv = data; |
| 372 GtkAdjustment *adj = priv->vadj; |
372 GtkAdjustment *adj = priv->vadj; |
| 373 if (adj) { |
373 if (adj) { |
| 374 gtk_adjustment_set_value(adj, adj->upper - adj->page_size); |
374 gtk_adjustment_set_value(adj, |
| |
375 gtk_adjustment_get_upper(adj) - gtk_adjustment_get_page_size(adj)); |
| 375 } |
376 } |
| 376 priv->scroll_src = 0; |
377 priv->scroll_src = 0; |
| 377 return FALSE; |
378 return FALSE; |
| 378 } |
379 } |
| 379 |
380 |