]> git.armaanb.net Git - chorizo.git/commitdiff
draft 8 draft
authorArmaan Bhojwani <me@armaanb.net>
Sun, 31 Oct 2021 13:53:10 +0000 (09:53 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Sun, 31 Oct 2021 14:45:55 +0000 (10:45 -0400)
Makefile
browser.c
chorizo-usage.1
chorizo.h
shortcuts.c
user-scripts/mouseover.js [new file with mode: 0644]

index 7d74b4a887835f7601910288dbc993cbd72da197..f634e8864d8d3961746872c9948b771f9aa7a5b3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,6 @@
 CFLAGS += -Wno-unused-parameter -Wunknown-warning-option -D_XOPEN_SOURCE="700"
 LIBS = `pkg-config --cflags --libs gtk+-3.0 glib-2.0 webkit2gtk-4.0`
+EXTENSIONS = extensions/we_adblock
 PREFIX = /usr/local
 bindir = $(DESTDIR)$(PREFIX)/bin
 libdir = $(DESTDIR)$(PREFIX)/lib
@@ -23,11 +24,10 @@ headers:
        mv tmp config.h
        mv tmp2 chorizo.h
 
-extensions:
-       for i in extensions/*.c; do \
-               outp=$$(echo "$$i" | sed 's/\$\.c/.so/g'); \
-               $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $$outp -fPIC $$i $(LIBS); \
-       done
+$(EXTENSIONS):
+       $(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@.so -fPIC $@.c $(LIBS);
+
+extensions: $(EXTENSIONS)
 
 install: all
        mkdir -p $(bindir) \
index 1d31c9e71c82d92f7d841fd249b69235bf68b528..93df003240ee8855f62cad9dbc56c951ae324381 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -146,11 +146,13 @@ client_new(const gchar *uri, WebKitWebView *related_wv)
                                if (g_str_has_suffix(path, ".js")) {
                                        g_file_get_contents(path, &source, NULL,
                                                            NULL);
+                                       // clang-format off
                                        wkscript = webkit_user_script_new(
                                                source,
-                                               WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
-                                               WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
+                                         WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
+                                   WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
                                                NULL, NULL);
+                                       // clang-format on
                                        webkit_user_content_manager_add_script(
                                                ucm, wkscript);
                                        webkit_user_script_unref(wkscript);
@@ -169,13 +171,15 @@ client_new(const gchar *uri, WebKitWebView *related_wv)
                                if (g_str_has_suffix(path, ".css")) {
                                        g_file_get_contents(path, &source, NULL,
                                                            NULL);
+                                       // clang-format off
                                        wkstyle = webkit_user_style_sheet_new(
                                                source,
-                                               WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
-                                               WEBKIT_USER_STYLE_LEVEL_USER,
+                                         WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES,
+                                                  WEBKIT_USER_STYLE_LEVEL_USER,
                                                NULL, NULL);
-                                       webkit_user_content_manager_add_style_sheet(
+                                   webkit_user_content_manager_add_style_sheet(
                                                ucm, wkstyle);
+                                       // clang-format on
                                        webkit_user_style_sheet_unref(wkstyle);
                                }
                                g_free(path);
@@ -190,9 +194,12 @@ client_new(const gchar *uri, WebKitWebView *related_wv)
 
                c->settings = webkit_web_view_get_settings(
                        WEBKIT_WEB_VIEW(c->web_view));
-               if (cfg.verbose)
-                       webkit_settings_set_enable_write_console_messages_to_stdout(
+               if (cfg.verbose) {
+                       // clang-format off
+               webkit_settings_set_enable_write_console_messages_to_stdout(
                                c->settings, true);
+                       // clang-format on
+               }
                webkit_settings_set_enable_developer_extras(c->settings, TRUE);
        } else {
                c->web_view = webkit_web_view_new_with_related_view(related_wv);
@@ -492,11 +499,7 @@ changed_title(GObject *obj, GParamSpec *pspec, gpointer data)
        u = webkit_web_view_get_uri(WEBKIT_WEB_VIEW(c->web_view));
        t = webkit_web_view_get_title(WEBKIT_WEB_VIEW(c->web_view));
 
-       u = u == NULL ? "chorizo" : u;
-       u = u[0] == 0 ? "chorizo" : u;
-
-       t = t == NULL ? u : t;
-       t = t[0] == 0 ? u : t;
+       if (t == NULL) t = (u == NULL) ? "chorizo" : u;
 
        gchar *name = malloc(strlen(t) + 4);
        if (!name) allocfail();
@@ -525,11 +528,13 @@ changed_uri(GObject *obj, GParamSpec *pspec, gpointer data)
 
                // No g_get_user_state_dir unfortunately
                gchar *state_env = getenv("XDG_STATE_DIR");
-               gchar *state_dir = (state_env) ?
-                                                state_env :
-                                                g_build_filename(g_get_home_dir(),
+               // clang-format off
+               gchar *state_dir = (state_env)
+                                       ? state_env
+                                       : g_build_filename(g_get_home_dir(),
                                                            ".local", "state",
                                                            "chorizo", NULL);
+               // clang-format on
 
                gchar *history_file =
                        g_build_filename(state_dir, "history", NULL);
@@ -540,7 +545,8 @@ changed_uri(GObject *obj, GParamSpec *pspec, gpointer data)
                                fprintf(fp, "%s\n", t);
                                fclose(fp);
                        } else {
-                               perror("chorizo: error: could not open history file");
+                               perror("chorizo: error: could not open history"
+                                      "file");
                        }
                }
                g_free(history_file);
@@ -639,7 +645,8 @@ grab_feeds_finished(GObject *object, GAsyncResult *result, gpointer data)
                        jsc_context_get_exception(jsc_value_get_context(value));
                if (exception != NULL) {
                        fprintf(stderr,
-                               "chorizo: warning: error running javascript: %s\n",
+                               "chorizo: warning: error running javascript:"
+                               "%s\n",
                                jsc_exception_get_message(exception));
                } else {
                        c->feed_html = str_value;
@@ -910,11 +917,14 @@ trust_user_certs(WebKitWebContext *wc)
                        g_free(absfile);
                        if (cert == NULL)
                                fprintf(stderr,
-                                       "chorizo: warning: could not load trusted cert: %s\n",
+                                       "chorizo: warning: could not load"
+                                       "trusted cert: %s\n",
                                        file);
                        else
-                               webkit_web_context_allow_tls_certificate_for_host(
+                               // clang-format off
+                             webkit_web_context_allow_tls_certificate_for_host(
                                        wc, cert, file);
+                       // clang-format on
                        file = g_dir_read_name(dir);
                }
                g_dir_close(dir);
index 7f1199345982557ec5bb833886b88e57c37c3cfc..4a0c8d7df52b979bcb46c3ddb634ef2851e0f814 100644 (file)
@@ -36,6 +36,8 @@ These scripts will be run every time a page is loaded.
 .Pp
 The chorizo repository contains the following optional scripts:
 .Bl -tag
+.It mouseover.js
+Shows password when hovering over field.
 .It hints.js
 Provides link hints.
 Press "f" to activate link hints for opening in the current tab,
index d6913ee42476033f814b8f7ce0d3e1746f600786..18ba1c2b0e675633952db2aa07164edadb9a0432 100644 (file)
--- a/chorizo.h
+++ b/chorizo.h
@@ -19,57 +19,66 @@ extern int cooperative_pipe_fp;
 extern gchar *fifopath;
 extern char **closed_tabs;
 extern size_t num_closed;
-gboolean isearch_counted_matches(GtkWidget *widget,guint matches,gpointer data);
+gboolean isearch_counted_matches(GtkWidget *widget, guint matches,
+                                gpointer data);
 gboolean quit_if_nothing_active(void);
-gboolean remote_msg(GIOChannel *channel,GIOCondition condition,gpointer data);
+gboolean remote_msg(GIOChannel *channel, GIOCondition condition, gpointer data);
 void allocfail(void);
-void client_destroy(GtkWidget *widget,gpointer data);
+void client_destroy(GtkWidget *widget, gpointer data);
 typedef struct Client Client;
-void set_uri(const char *uri,struct Client *c);
-WebKitWebView *client_new(const gchar *uri,WebKitWebView *related_wv);
-WebKitWebView *client_new_request(WebKitWebView *web_view,WebKitNavigationAction *navigation_action,gpointer data);
-void mkdirp(const char *dir,mode_t mode);
+void set_uri(const char *uri, struct Client *c);
+WebKitWebView *client_new(const gchar *uri, WebKitWebView *related_wv);
+WebKitWebView *client_new_request(WebKitWebView *web_view,
+                                 WebKitNavigationAction *navigation_action,
+                                 gpointer data);
+void mkdirp(const char *dir, mode_t mode);
 void cooperation_setup(void);
-void changed_load_progress(GObject *obj,GParamSpec *pspec,gpointer data);
-void changed_favicon(GObject *obj,GParamSpec *pspec,gpointer data);
-void changed_title(GObject *obj,GParamSpec *pspec,gpointer data);
-void changed_uri(GObject *obj,GParamSpec *pspec,gpointer data);
-gboolean crashed_web_view(WebKitWebView *web_view,gpointer data);
-gboolean decide_policy(WebKitWebView *web_view,WebKitPolicyDecision *decision,WebKitPolicyDecisionType type,gpointer data);
+void changed_load_progress(GObject *obj, GParamSpec *pspec, gpointer data);
+void changed_favicon(GObject *obj, GParamSpec *pspec, gpointer data);
+void changed_title(GObject *obj, GParamSpec *pspec, gpointer data);
+void changed_uri(GObject *obj, GParamSpec *pspec, gpointer data);
+gboolean crashed_web_view(WebKitWebView *web_view, gpointer data);
+gboolean decide_policy(WebKitWebView *web_view, WebKitPolicyDecision *decision,
+                      WebKitPolicyDecisionType type, gpointer data);
 gchar *ensure_uri_scheme(const gchar *t);
-void grab_feeds_finished(GObject *object,GAsyncResult *result,gpointer data);
-void hover_web_view(WebKitWebView *web_view,WebKitHitTestResult *ht,guint modifiers,gpointer data);
-void icon_location(GtkEntry *entry,GtkEntryIconPosition icon_pos,GdkEvent *event,gpointer data);
+void grab_feeds_finished(GObject *object, GAsyncResult *result, gpointer data);
+void hover_web_view(WebKitWebView *web_view, WebKitHitTestResult *ht,
+                   guint modifiers, gpointer data);
+void icon_location(GtkEntry *entry, GtkEntryIconPosition icon_pos,
+                  GdkEvent *event, gpointer data);
 void init_default_web_context(void);
-void isearch(gpointer data,gint direction);
-void isearch_init(struct Client *c,int direction);
+void isearch(gpointer data, gint direction);
+void isearch_init(struct Client *c, int direction);
 void reopen_tab(void);
 void mainwindow_setup(void);
 void mainwindow_title(gint idx);
-void notebook_switch_page(GtkNotebook *nb,GtkWidget *p,guint idx,gpointer data);
-void show_web_view(WebKitWebView *web_view,gpointer data);
+void notebook_switch_page(GtkNotebook *nb, GtkWidget *p, guint idx,
+                         gpointer data);
+void show_web_view(WebKitWebView *web_view, gpointer data);
 void trust_user_certs(WebKitWebContext *wc);
 void version(void);
-gboolean download_handle(WebKitDownload *,gchar *,gpointer);
-gboolean download_handle(WebKitDownload *download,gchar *suggested_filename,gpointer data);
-void download_click(GtkToolButton *,gpointer);
-void download_click(GtkToolButton *tb,gpointer data);
-void download_cancel(GtkMenuItem *,gpointer);
-void download_cancel(GtkMenuItem *tb,gpointer data);
-gboolean downloadmanager_delete(GtkWidget *,gpointer);
-gboolean downloadmanager_delete(GtkWidget *obj,gpointer data);
+gboolean download_handle(WebKitDownload *, gchar *, gpointer);
+gboolean download_handle(WebKitDownload *download, gchar *suggested_filename,
+                        gpointer data);
+void download_click(GtkToolButton *, gpointer);
+void download_click(GtkToolButton *tb, gpointer data);
+void download_cancel(GtkMenuItem *, gpointer);
+void download_cancel(GtkMenuItem *tb, gpointer data);
+gboolean downloadmanager_delete(GtkWidget *, gpointer);
+gboolean downloadmanager_delete(GtkWidget *obj, gpointer data);
 extern gint downloads;
-gboolean key_downloadmanager(GtkWidget *widget,GdkEvent *event,gpointer data);
-void changed_download_progress(GObject *obj,GParamSpec *pspec,gpointer data);
-void download_finished(WebKitDownload *download,gpointer data);
-void download_start(WebKitWebView *web_view,WebKitDownload *download,gpointer data);
+gboolean key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data);
+void changed_download_progress(GObject *obj, GParamSpec *pspec, gpointer data);
+void download_finished(WebKitDownload *download, gpointer data);
+void download_start(WebKitWebView *web_view, WebKitDownload *download,
+                   gpointer data);
 typedef struct DownloadItem DownloadItem;
 const char *download_get_path(struct DownloadItem *payload);
-void download_hide(GtkMenuItem *tb,gpointer data);
-void download_delete(GtkMenuItem *tb,gpointer data);
-void download_copy_url(GtkMenuItem *tb,gpointer data);
-void download_copy_path(GtkMenuItem *tb,gpointer data);
-void download_xdg_open(GtkMenuItem *tb,gpointer data);
+void download_hide(GtkMenuItem *tb, gpointer data);
+void download_delete(GtkMenuItem *tb, gpointer data);
+void download_copy_url(GtkMenuItem *tb, gpointer data);
+void download_copy_path(GtkMenuItem *tb, gpointer data);
+void download_xdg_open(GtkMenuItem *tb, gpointer data);
 void downloadmanager_setup(void);
 void downloadmanager_show(void);
 struct Client {
@@ -91,14 +100,14 @@ struct DownloadItem {
        GtkToolButton *tb;
        WebKitDownload *download;
 };
-gboolean key_common(GtkWidget *widget,GdkEvent *event,gpointer data);
-void change_tab(int idx,struct Client *c);
+gboolean key_common(GtkWidget *widget, GdkEvent *event, gpointer data);
+void change_tab(int idx, struct Client *c);
 void reorder_current_tab(int target);
-gboolean key_isearch(GtkWidget *widget,GdkEvent *event,gpointer data);
-gboolean key_wsearch(GtkWidget *widget,GdkEvent *event,gpointer data);
-gboolean key_location(GtkWidget *widget,GdkEvent *event,gpointer data);
-gboolean key_tablabel(GtkWidget *widget,GdkEvent *event,gpointer data);
-gboolean key_web_view(GtkWidget *widget,GdkEvent *event,gpointer data);
+gboolean key_isearch(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_wsearch(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_location(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_tablabel(GtkWidget *widget, GdkEvent *event, gpointer data);
+gboolean key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data);
 #define INTERFACE 0
 #define EXPORT_INTERFACE 0
 #define LOCAL_INTERFACE 0
index e881cdcbbababa31a66954104838292ce5b1e0b6..054d48d429454609da61aa22bc0c999ec8685a8b 100644 (file)
@@ -6,8 +6,11 @@
 gboolean
 key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
 {
+       WebKitPrintOperation *operation;
+       gboolean muted;
        struct Client *c = (struct Client *)data;
        gdouble now;
+
        if (event->type == GDK_KEY_PRESS) {
                guint mask = gtk_accelerator_get_default_mod_mask();
                int key = ((GdkEventKey *)event)->keyval;
@@ -15,30 +18,30 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                    GDK_CONTROL_MASK) {
                        const char *uri = webkit_web_view_get_uri(
                                WEBKIT_WEB_VIEW(c->web_view));
-                       if (GDK_KEY_y == key) {
+                       switch (key) {
+                       case GDK_KEY_y:
                                downloadmanager_show();
                                return TRUE;
-                       } else if (GDK_KEY_h == key) {
+                       case GDK_KEY_h:
                                webkit_web_view_go_back(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                return TRUE;
-                       } else if (GDK_KEY_l == key) {
+                       case GDK_KEY_l:
                                webkit_web_view_go_forward(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                return TRUE;
-                       } else if (GDK_KEY_s == key) {
+                       case GDK_KEY_s:
                                gtk_widget_grab_focus(c->location);
                                return TRUE;
-                       } else if (GDK_KEY_p == key) {
-                               WebKitPrintOperation *operation =
-                                       webkit_print_operation_new(
-                                               WEBKIT_WEB_VIEW(c->web_view));
+                       case GDK_KEY_p:
+                               operation = webkit_print_operation_new(
+                                       WEBKIT_WEB_VIEW(c->web_view));
                                GtkWidget *toplevel =
                                        gtk_widget_get_toplevel(mw.win);
                                webkit_print_operation_run_dialog(
                                        operation, GTK_WINDOW(toplevel));
                                return TRUE;
-                       } else if (GDK_KEY_g == key) {
+                       case GDK_KEY_g:
                                isearch(c, 2);
                                gtk_widget_grab_focus(c->web_view);
                                if (uri)
@@ -46,7 +49,8 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                                                GTK_ENTRY(c->location), uri);
                                webkit_web_view_run_javascript(
                                        WEBKIT_WEB_VIEW(c->web_view),
-                                       "window.getSelection().removeAllRanges();"
+                                       "window.getSelection()"
+                                       ".removeAllRanges();"
                                        "document.activeElement.blur();",
                                        NULL, NULL, c);
                                gtk_widget_hide(c->isearch_box);
@@ -55,137 +59,138 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                                gtk_editable_set_position(
                                        GTK_EDITABLE(c->wsearch), -1);
                                return TRUE;
-                       } else if (GDK_KEY_r == key) {
+                       case GDK_KEY_r:
                                webkit_web_view_reload_bypass_cache(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                return TRUE;
-                       } else if (GDK_KEY_j == key) {
+                       case GDK_KEY_j:
                                for (int i = 0; i <= cfg_scroll_lines - 1;
                                     i++) {
                                        event->key.keyval = GDK_KEY_Down;
                                        gdk_event_put(event);
                                }
                                return TRUE;
-                       } else if (GDK_KEY_k == key) {
+                       case GDK_KEY_k:
                                for (int i = 0; i <= cfg_scroll_lines - 1;
                                     i++) {
                                        event->key.keyval = GDK_KEY_Up;
                                        gdk_event_put(event);
                                }
                                return TRUE;
-                       } else if (GDK_KEY_f == key) {
+                       case GDK_KEY_f:
                                isearch_init(c, 1);
                                return TRUE;
-                       } else if (GDK_KEY_q == key) {
+                       case GDK_KEY_q:
                                client_destroy(NULL, c);
                                return TRUE;
-                       } else if (GDK_KEY_1 == key) {
+                       case GDK_KEY_1:
                                change_tab(0, c);
                                return TRUE;
-                       } else if (GDK_KEY_2 == key) {
+                       case GDK_KEY_2:
                                change_tab(1, c);
                                return TRUE;
-                       } else if (GDK_KEY_3 == key) {
+                       case GDK_KEY_3:
                                change_tab(2, c);
                                return TRUE;
-                       } else if (GDK_KEY_4 == key) {
+                       case GDK_KEY_4:
                                change_tab(3, c);
                                return TRUE;
-                       } else if (GDK_KEY_5 == key) {
+                       case GDK_KEY_5:
                                change_tab(4, c);
                                return TRUE;
-                       } else if (GDK_KEY_6 == key) {
+                       case GDK_KEY_6:
                                change_tab(5, c);
                                return TRUE;
-                       } else if (GDK_KEY_7 == key) {
+                       case GDK_KEY_7:
                                change_tab(6, c);
                                gtk_notebook_set_current_page(
                                        GTK_NOTEBOOK(mw.notebook), 6);
                                return TRUE;
-                       } else if (GDK_KEY_8 == key) {
+                       case GDK_KEY_8:
                                change_tab(7, c);
                                return TRUE;
-                       } else if (GDK_KEY_9 == key) {
+                       case GDK_KEY_9:
                                change_tab(8, c);
                                return TRUE;
-                       } else if (GDK_KEY_u == key) {
+                       case GDK_KEY_u:
                                gtk_notebook_prev_page(
                                        GTK_NOTEBOOK(mw.notebook));
                                return TRUE;
-                       } else if (GDK_KEY_m == key) {
-                               gboolean muted = webkit_web_view_get_is_muted(
+                       case GDK_KEY_m:
+                               muted = webkit_web_view_get_is_muted(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                webkit_web_view_set_is_muted(
                                        WEBKIT_WEB_VIEW(c->web_view), !muted);
                                changed_title(G_OBJECT(c->web_view), NULL, c);
                                return TRUE;
-                       } else if (GDK_KEY_t == key) {
+                       case GDK_KEY_t:
                                switch_tab = TRUE;
                                client_new(cfg_home_uri, NULL);
                                return TRUE;
-                       } else if (GDK_KEY_bracketleft == key) {
+                       case GDK_KEY_bracketleft:
                                reopen_tab();
                                return TRUE;
-                       } else if ((GDK_KEY_i == key) || (GDK_KEY_Tab == key)) {
+                       case GDK_KEY_i:
                                gtk_notebook_next_page(
                                        GTK_NOTEBOOK(mw.notebook));
                                return TRUE;
-                       } else if (GDK_KEY_d == key) {
+                       case GDK_KEY_d:
                                gtk_widget_grab_focus(c->wsearch);
                                return TRUE;
-                       } else if (GDK_KEY_equal == key) {
+                       case GDK_KEY_equal:
                                now = webkit_web_view_get_zoom_level(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                webkit_web_view_set_zoom_level(
                                        WEBKIT_WEB_VIEW(c->web_view),
                                        now + 0.1);
                                return TRUE;
-                       } else if (GDK_KEY_minus == key) {
+                       case GDK_KEY_minus:
                                now = webkit_web_view_get_zoom_level(
                                        WEBKIT_WEB_VIEW(c->web_view));
                                webkit_web_view_set_zoom_level(
                                        WEBKIT_WEB_VIEW(c->web_view),
                                        now - 0.1);
                                return TRUE;
-                       } else if (GDK_KEY_0 == key) {
+                       case GDK_KEY_0:
                                webkit_web_view_set_zoom_level(
                                        WEBKIT_WEB_VIEW(c->web_view), 1);
                                return TRUE;
                        }
                } else if ((((GdkEventKey *)event)->state & mask) ==
                           (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) {
-                       if (GDK_KEY_ISO_Left_Tab == key) {
+                       switch (key) {
+                       case GDK_KEY_ISO_Left_Tab:
                                gtk_notebook_prev_page(
                                        GTK_NOTEBOOK(mw.notebook));
                                return TRUE;
-                       } else if (GDK_KEY_T == key) {
+                       case GDK_KEY_T:
                                reopen_tab();
                                return TRUE;
-                       } else if (GDK_KEY_exclam == key) {
+                       case GDK_KEY_exclam:
                                reorder_current_tab(1);
                                return TRUE;
-                       } else if (GDK_KEY_at == key) {
+                       case GDK_KEY_at:
                                reorder_current_tab(2);
                                return TRUE;
-                       } else if (GDK_KEY_numbersign == key) {
+                       case GDK_KEY_numbersign:
                                reorder_current_tab(3);
                                return TRUE;
-                       } else if (GDK_KEY_dollar == key) {
+                       case GDK_KEY_dollar:
                                reorder_current_tab(4);
                                return TRUE;
-                       } else if (GDK_KEY_percent == key) {
+                       case GDK_KEY_percent:
                                reorder_current_tab(5);
                                return TRUE;
-                       } else if (GDK_KEY_asciicircum == key) {
+                       case GDK_KEY_asciicircum:
                                reorder_current_tab(6);
                                return TRUE;
-                       } else if (GDK_KEY_ampersand == key) {
+                       case GDK_KEY_ampersand:
                                reorder_current_tab(7);
                                return TRUE;
-                       } else if (GDK_KEY_asterisk == key) {
+                       case GDK_KEY_asterisk:
                                reorder_current_tab(8);
                                return TRUE;
-                       } else if (GDK_KEY_parenleft == key) {
+                       case GDK_KEY_parenleft:
                                reorder_current_tab(9);
                                return TRUE;
                        }
@@ -220,19 +225,23 @@ key_isearch(GtkWidget *widget, GdkEvent *event, gpointer data)
 
        if (event->type == GDK_KEY_PRESS) {
                int key = ((GdkEventKey *)event)->keyval;
-               if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
-                       int direction = (((GdkEventKey *)event)->state &
-                                        GDK_SHIFT_MASK) ?
-                                                     -1 :
-                                                     1;
+               // clang-format off
+               int direction =
+                       (((GdkEventKey *)event)->state & GDK_SHIFT_MASK)
+                               ? -1 : 1;
+               // clang-format on
+               switch (key) {
+               case GDK_KEY_KP_Enter:
+               case GDK_KEY_Return:
                        isearch(c, 0);
                        isearch(c, -1);
                        isearch(c, direction);
                        return TRUE;
-               } else if (GDK_KEY_Escape == key) {
+               case GDK_KEY_Escape:
                        isearch(c, 2);
                        gtk_widget_hide(c->isearch_box);
                        gtk_widget_grab_focus(c->web_view);
+                       return TRUE;
                }
        }
        return FALSE;
@@ -283,8 +292,9 @@ key_location(GtkWidget *widget, GdkEvent *event, gpointer data)
                gboolean shifted = ((((GdkEventKey *)event)->state & mask) ==
                                    GDK_SHIFT_MASK);
                int key = ((GdkEventKey *)event)->keyval;
-
-               if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
+               switch (key) {
+               case GDK_KEY_KP_Enter:
+               case GDK_KEY_Return:
                        gtk_widget_grab_focus(c->web_view);
                        t = gtk_entry_get_text(GTK_ENTRY(c->location));
                        if (shifted) {
@@ -296,7 +306,7 @@ key_location(GtkWidget *widget, GdkEvent *event, gpointer data)
                                        ensure_uri_scheme(t));
                        }
                        return TRUE;
-               } else if (GDK_KEY_Escape == key) {
+               case GDK_KEY_Escape:
                        t = webkit_web_view_get_uri(
                                WEBKIT_WEB_VIEW(c->web_view));
                        gtk_entry_set_text(GTK_ENTRY(c->location),
diff --git a/user-scripts/mouseover.js b/user-scripts/mouseover.js
new file mode 100644 (file)
index 0000000..ce59a57
--- /dev/null
@@ -0,0 +1,22 @@
+// ==UserScript==
+// @name         Show Password onMouseOver
+// @namespace    http://zoolcar9.lhukie.net/
+// @include      *
+// @description         Show password when mouseover on password field
+// @author       LouCypher
+// @license      free
+// @version      0.0.1.20140630034959
+// ==/UserScript==
+window.setTimeout(function() {
+    var passFields = document.querySelectorAll("input[type='password']");
+    if (!passFields.length) return;
+    for (var i = 0; i < passFields.length; i++) {
+        passFields[i].addEventListener("mouseover", function() {
+            this.type = "text";
+        }, false);
+        passFields[i].addEventListener("mouseout", function() {
+            this.type = "password";
+        }, false);
+    }
+}, 1000)