aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar Rob <rob.manea@gmail.com>2009-11-10 06:19:52 +0100
committerGravatar Rob <rob.manea@gmail.com>2009-11-10 06:19:52 +0100
commit0cd073c7ad0c00e7e09ecd72ed1224711d16f6de (patch)
treef2e16358dff8ef63edc3f893ad7fc09417f6c181 /uzbl-core.c
parent30a7691ff43f9c97471ba3c36a3dcd75b5096ae3 (diff)
parenta556922907b016650b7d5d3188f35f14f7967935 (diff)
Merge branch 'experimental' of git://github.com/Dieterbe/uzbl into experimental
Diffstat (limited to 'uzbl-core.c')
-rw-r--r--uzbl-core.c68
1 files changed, 41 insertions, 27 deletions
diff --git a/uzbl-core.c b/uzbl-core.c
index c3194d9..146642c 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -526,13 +526,13 @@ catch_sigalrm(int s) {
/* scroll a bar in a given direction */
void
-scroll (GtkAdjustment* bar, GArray *argv) {
+scroll (GtkAdjustment* bar, gchar *amount_str) {
gchar *end;
gdouble max_value;
gdouble page_size = gtk_adjustment_get_page_size(bar);
gdouble value = gtk_adjustment_get_value(bar);
- gdouble amount = g_ascii_strtod(g_array_index(argv, gchar*, 0), &end);
+ gdouble amount = g_ascii_strtod(amount_str, &end);
if (*end == '%')
value += page_size * amount * 0.01;
@@ -547,29 +547,46 @@ scroll (GtkAdjustment* bar, GArray *argv) {
gtk_adjustment_set_value (bar, value);
}
+/*
+ * scroll vertical 20
+ * scroll vertical 20%
+ * scroll vertical -40
+ * scroll vertical begin
+ * scroll vertical end
+ * scroll horizontal 10
+ * scroll horizontal -500
+ * scroll horizontal begin
+ * scroll horizontal end
+ */
void
-scroll_begin(WebKitWebView* page, GArray *argv, GString *result) {
- (void) page; (void) argv; (void) result;
- gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_lower(uzbl.gui.bar_v));
-}
-
-void
-scroll_end(WebKitWebView* page, GArray *argv, GString *result) {
- (void) page; (void) argv; (void) result;
- gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_upper(uzbl.gui.bar_v) -
- gtk_adjustment_get_page_size(uzbl.gui.bar_v));
-}
-
-void
-scroll_vert(WebKitWebView* page, GArray *argv, GString *result) {
- (void) page; (void) result;
- scroll(uzbl.gui.bar_v, argv);
-}
-
-void
-scroll_horz(WebKitWebView* page, GArray *argv, GString *result) {
+scroll_cmd(WebKitWebView* page, GArray *argv, GString *result) {
(void) page; (void) result;
- scroll(uzbl.gui.bar_h, argv);
+ gchar *direction = g_array_index(argv, gchar*, 0);
+ gchar *argv1 = g_array_index(argv, gchar*, 1);
+
+ if (g_strcmp0(direction, "horizontal") == 0)
+ {
+ if (g_strcmp0(argv1, "begin") == 0)
+ gtk_adjustment_set_value(uzbl.gui.bar_h, gtk_adjustment_get_lower(uzbl.gui.bar_h));
+ else if (g_strcmp0(argv1, "end") == 0)
+ gtk_adjustment_set_value (uzbl.gui.bar_h, gtk_adjustment_get_upper(uzbl.gui.bar_h) -
+ gtk_adjustment_get_page_size(uzbl.gui.bar_h));
+ else
+ scroll(uzbl.gui.bar_h, argv1);
+ }
+ else if (g_strcmp0(direction, "vertical") == 0)
+ {
+ if (g_strcmp0(argv1, "begin") == 0)
+ gtk_adjustment_set_value(uzbl.gui.bar_v, gtk_adjustment_get_lower(uzbl.gui.bar_v));
+ else if (g_strcmp0(argv1, "end") == 0)
+ gtk_adjustment_set_value (uzbl.gui.bar_v, gtk_adjustment_get_upper(uzbl.gui.bar_v) -
+ gtk_adjustment_get_page_size(uzbl.gui.bar_v));
+ else
+ scroll(uzbl.gui.bar_v, argv1);
+ }
+ else
+ if(uzbl.state.verbose)
+ puts("Unrecognized scroll format");
}
@@ -590,10 +607,7 @@ struct {const char *key; CommandInfo value;} cmdlist[] =
{ /* key function no_split */
{ "back", {view_go_back, 0} },
{ "forward", {view_go_forward, 0} },
- { "scroll_vert", {scroll_vert, 0} },
- { "scroll_horz", {scroll_horz, 0} },
- { "scroll_begin", {scroll_begin, 0} },
- { "scroll_end", {scroll_end, 0} },
+ { "scroll", {scroll_cmd, 0} },
{ "reload", {view_reload, 0}, },
{ "reload_ign_cache", {view_reload_bypass_cache, 0} },
{ "stop", {view_stop_loading, 0}, },