diff options
-rw-r--r-- | examples/config/config | 3 | ||||
-rw-r--r-- | src/callbacks.c | 38 | ||||
-rw-r--r-- | src/callbacks.h | 6 | ||||
-rw-r--r-- | src/events.c | 3 | ||||
-rw-r--r-- | src/events.h | 2 | ||||
-rw-r--r-- | src/uzbl-core.c | 10 |
6 files changed, 61 insertions, 1 deletions
diff --git a/examples/config/config b/examples/config/config index ef5c122..7c3a950 100644 --- a/examples/config/config +++ b/examples/config/config @@ -80,6 +80,9 @@ set authentication_handler = sync_spawn @scripts_dir/auth.py # Example CONFIG_CHANGED event handler #@on_event CONFIG_CHANGED print Config changed: %1 = %2 +# Scroll percentage calculation +@on_event SCROLL_VERT set scroll_message = \@<(function(){var a='%1'.split(' ');var p='--';if(a[2]!=a[1]){p=(a[0]/(a[2]-a[3]));p=Math.round(10000*p)/100;};return p+'%';})()>\@ + # === Behaviour and appearance =============================================== set show_status = 1 diff --git a/src/callbacks.c b/src/callbacks.c index 6ad8e2c..e0c2c0c 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -776,6 +776,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 1ba7e0b..a2862f4 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -214,5 +214,11 @@ 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 cmd_set_cookie_handler(); diff --git a/src/events.c b/src/events.c index ee2f96c..20e3675 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 23039cc..5e8618e 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -2497,6 +2497,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_horiz_cb, NULL, + NULL); + if(!uzbl.state.instance_name) uzbl.state.instance_name = itos((int)uzbl.xwin); |