aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/callbacks.c38
-rw-r--r--src/callbacks.h6
-rw-r--r--src/events.c3
-rw-r--r--src/events.h2
-rw-r--r--src/uzbl-core.c10
5 files changed, 58 insertions, 1 deletions
diff --git a/src/callbacks.c b/src/callbacks.c
index d2352b2..07c395c 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -764,6 +764,44 @@ download_cb (WebKitWebView *web_view, GObject *download, gpointer user_data) {
return (FALSE);
}
+gboolean
+scroll_vert_cb(GtkAdjustment *adjust, void *w)
+{
+ (void) w;
+
+ gdouble value = gtk_adjustment_get_value(adjust);
+ gdouble min = gtk_adjustment_get_lower(adjust);
+ gdouble max = gtk_adjustment_get_upper(adjust);
+ gdouble page = gtk_adjustment_get_page_size(adjust);
+ gchar* details;
+ details = g_strdup_printf("%g %g %g %g", value, min, max, page);
+
+ send_event(SCROLL_VERT, details, NULL);
+
+ g_free(details);
+
+ return (FALSE);
+}
+
+gboolean
+scroll_horiz_cb(GtkAdjustment *adjust, void *w)
+{
+ (void) w;
+
+ gdouble value = gtk_adjustment_get_value(adjust);
+ gdouble min = gtk_adjustment_get_lower(adjust);
+ gdouble max = gtk_adjustment_get_upper(adjust);
+ gdouble page = gtk_adjustment_get_page_size(adjust);
+ gchar* details;
+ details = g_strdup_printf("%g %g %g %g", value, min, max, page);
+
+ send_event(SCROLL_HORIZ, details, NULL);
+
+ g_free(details);
+
+ return (FALSE);
+}
+
void
run_menu_command(GtkWidget *menu, const char *line) {
(void) menu;
diff --git a/src/callbacks.h b/src/callbacks.h
index fdd08e4..553e388 100644
--- a/src/callbacks.h
+++ b/src/callbacks.h
@@ -211,6 +211,12 @@ button_release_cb (GtkWidget* window, GdkEventButton* event);
gboolean
focus_cb(GtkWidget* window, GdkEventFocus* event, void *ud);
+gboolean
+scroll_vert_cb(GtkAdjustment *adjust, void *w);
+
+gboolean
+scroll_horiz_cb(GtkAdjustment *adjust, void *w);
+
void
save_cookies_js(SoupCookieJar *jar, SoupCookie *old_cookie, SoupCookie *new_cookie, gpointer user_data);
diff --git a/src/events.c b/src/events.c
index c209550..e34bca9 100644
--- a/src/events.c
+++ b/src/events.c
@@ -46,6 +46,9 @@ const char *event_table[LAST_EVENT] = {
"COMMAND_ERROR" ,
"BUILTINS" ,
"PTR_MOVE"
+ "PTR_MOVE" ,
+ "SCROLL_VERT" ,
+ "SCROLL_HORIZ"
};
void
diff --git a/src/events.h b/src/events.h
index 1bd8804..bc7960d 100644
--- a/src/events.h
+++ b/src/events.h
@@ -15,7 +15,7 @@ enum event_type {
LINK_UNHOVER, FORM_ACTIVE, ROOT_ACTIVE,
FOCUS_LOST, FOCUS_GAINED, FILE_INCLUDED,
PLUG_CREATED, COMMAND_ERROR, BUILTINS,
- PTR_MOVE,
+ PTR_MOVE, SCROLL_VERT, SCROLL_HORIZ,
/* must be last entry */
LAST_EVENT
diff --git a/src/uzbl-core.c b/src/uzbl-core.c
index 7be98c3..4ced7af 100644
--- a/src/uzbl-core.c
+++ b/src/uzbl-core.c
@@ -2629,6 +2629,16 @@ main (int argc, char* argv[]) {
uzbl.gui.bar_h = gtk_range_get_adjustment((GtkRange*) uzbl.gui.scbar_h);
gtk_widget_set_scroll_adjustments ((GtkWidget*) uzbl.gui.web_view, uzbl.gui.bar_h, uzbl.gui.bar_v);
+ g_object_connect((GObject*)uzbl.gui.bar_v,
+ "signal::value-changed", (GCallback)scroll_vert_cb, NULL,
+ "signal::changed", (GCallback)scroll_vert_cb, NULL,
+ NULL);
+
+ g_object_connect((GObject*)uzbl.gui.bar_h,
+ "signal::value-changed", (GCallback)scroll_horiz_cb, NULL,
+ "signal::changed", (GCallback)scroll_vert_cb, NULL,
+ NULL);
+
if(!uzbl.state.instance_name)
uzbl.state.instance_name = itos((int)uzbl.xwin);