]> git.armaanb.net Git - chorizo.git/commitdiff
draft 8
authorArmaan Bhojwani <me@armaanb.net>
Sun, 31 Oct 2021 13:22:43 +0000 (09:22 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Sun, 31 Oct 2021 13:22:43 +0000 (09:22 -0400)
chorizo.h
shortcuts.c

index d9e860ba10fffad3e2edae56193c582b9a0b134e..d6913ee42476033f814b8f7ce0d3e1746f600786 100644 (file)
--- a/chorizo.h
+++ b/chorizo.h
@@ -19,66 +19,57 @@ 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 {
@@ -100,13 +91,14 @@ struct DownloadItem {
        GtkToolButton *tb;
        WebKitDownload *download;
 };
-gboolean key_common(GtkWidget *widget, GdkEvent *event, gpointer data);
+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 382e4c0ccca37ee3c8d89df0f579219f6ef90713..e881cdcbbababa31a66954104838292ce5b1e0b6 100644 (file)
@@ -80,40 +80,33 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                                client_destroy(NULL, c);
                                return TRUE;
                        } else if (GDK_KEY_1 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 0);
+                               change_tab(0, c);
                                return TRUE;
                        } else if (GDK_KEY_2 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 1);
+                               change_tab(1, c);
                                return TRUE;
                        } else if (GDK_KEY_3 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 2);
+                               change_tab(2, c);
                                return TRUE;
                        } else if (GDK_KEY_4 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 3);
+                               change_tab(3, c);
                                return TRUE;
                        } else if (GDK_KEY_5 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 4);
+                               change_tab(4, c);
                                return TRUE;
                        } else if (GDK_KEY_6 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 5);
+                               change_tab(5, c);
                                return TRUE;
                        } else if (GDK_KEY_7 == key) {
+                               change_tab(6, c);
                                gtk_notebook_set_current_page(
                                        GTK_NOTEBOOK(mw.notebook), 6);
                                return TRUE;
                        } else if (GDK_KEY_8 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 7);
+                               change_tab(7, c);
                                return TRUE;
                        } else if (GDK_KEY_9 == key) {
-                               gtk_notebook_set_current_page(
-                                       GTK_NOTEBOOK(mw.notebook), 8);
+                               change_tab(8, c);
                                return TRUE;
                        } else if (GDK_KEY_u == key) {
                                gtk_notebook_prev_page(
@@ -201,6 +194,13 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
        return FALSE;
 }
 
+void
+change_tab(int idx, struct Client *c)
+{
+       gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), idx);
+       gtk_widget_grab_focus(GTK_WIDGET(c->web_view));
+}
+
 void
 reorder_current_tab(int target)
 {
@@ -245,6 +245,9 @@ key_wsearch(GtkWidget *widget, GdkEvent *event, gpointer data)
        if (key_common(widget, event, data)) return TRUE;
 
        if (event->type == GDK_KEY_PRESS) {
+               guint mask = gtk_accelerator_get_default_mod_mask();
+               gboolean shifted = ((((GdkEventKey *)event)->state & mask) ==
+                                   GDK_SHIFT_MASK);
                int key = ((GdkEventKey *)event)->keyval;
                if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
                        const gchar *t =
@@ -254,10 +257,14 @@ key_wsearch(GtkWidget *widget, GdkEvent *event, gpointer data)
                        if (!f) allocfail();
 
                        snprintf(f, len + 1, "%s%s", cfg_search_engine, t);
-                       webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view),
-                                                f);
+                       if (shifted) {
+                               client_new(f, NULL);
+                       } else {
+                               webkit_web_view_load_uri(
+                                       WEBKIT_WEB_VIEW(c->web_view), f);
+                               gtk_widget_grab_focus(c->web_view);
+                       }
                        g_free(f);
-                       gtk_widget_grab_focus(c->web_view);
                        return TRUE;
                }
        }
@@ -272,12 +279,22 @@ key_location(GtkWidget *widget, GdkEvent *event, gpointer data)
        if (key_common(widget, event, data)) return TRUE;
 
        if (event->type == GDK_KEY_PRESS) {
+               guint mask = gtk_accelerator_get_default_mod_mask();
+               gboolean shifted = ((((GdkEventKey *)event)->state & mask) ==
+                                   GDK_SHIFT_MASK);
                int key = ((GdkEventKey *)event)->keyval;
+
                if ((GDK_KEY_KP_Enter == key) || (GDK_KEY_Return == key)) {
                        gtk_widget_grab_focus(c->web_view);
                        t = gtk_entry_get_text(GTK_ENTRY(c->location));
-                       webkit_web_view_load_uri(WEBKIT_WEB_VIEW(c->web_view),
-                                                ensure_uri_scheme(t));
+                       if (shifted) {
+                               switch_tab = TRUE;
+                               client_new(t, NULL);
+                       } else {
+                               webkit_web_view_load_uri(
+                                       WEBKIT_WEB_VIEW(c->web_view),
+                                       ensure_uri_scheme(t));
+                       }
                        return TRUE;
                } else if (GDK_KEY_Escape == key) {
                        t = webkit_web_view_get_uri(