]> git.armaanb.net Git - chorizo.git/blobdiff - browser.c
Add tab jump hotkeys
[chorizo.git] / browser.c
index 3f4765d3d8bb27fc3accde23fd0843a58dbdc230..e54f5493c227fae99eb5da68ca29a7cb905e6c67 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -89,11 +89,13 @@ struct Configuration
        gboolean cooperative_instances;
        gboolean enable_console_to_stdout;
        gboolean javascript_disabled;
+       gboolean spellcheck_disabled;
        gchar *download_dir;
        gchar *fifo_suffix;
        gchar *history_file;
        gchar *home_uri;
        gchar *search_engine;
+       gchar *spellcheck_language;
        gchar *user_agent;
        gdouble global_zoom;
        gint tab_width_chars;
@@ -676,9 +678,17 @@ get_config(void)
        cfg.tab_width_chars = (cfg.tab_width_chars) ? cfg.tab_width_chars : 20;
        cfg.global_zoom = g_key_file_get_double(config, "ui", "zoom_level", NULL);
        cfg.global_zoom = (cfg.global_zoom) ? cfg.global_zoom : 1.0;
-       cfg.search_engine = g_key_file_get_string(config, "ui", "search_engine", NULL);
+       cfg.search_engine = g_key_file_get_string(config, "ui", "search_engine",
+                                                                                                                                                                               NULL);
        cfg.search_engine = (cfg.search_engine) ? cfg.search_engine :
                "https://duckduckgo.com?q=";
+       cfg.spellcheck_disabled = g_key_file_get_boolean(config, "ui",
+                                                                                                                                                                                                        "spellcheck_disabled", NULL);
+       cfg.spellcheck_language = g_key_file_get_string(config, "ui",
+                                                                                                                                                                                                                               "spellcheck_language",
+                                                                                                                                                                                                                               NULL);
+       cfg.spellcheck_language = (cfg.spellcheck_language) ? cfg.spellcheck_language
+               : "en_US";
 }
 
 void
@@ -838,6 +848,11 @@ init_default_web_context(void)
                                                                                                                                                                                                                                                                "cookies.db",
                                                                                                                                                                                                                                                                NULL),
                                                                                                                                                                                         WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE);
+
+       const gchar * const languages[2] = {(const gchar *)cfg.spellcheck_language,
+               NULL};
+       webkit_web_context_set_spell_checking_languages(wc, languages);
+       webkit_web_context_set_spell_checking_enabled(wc, !cfg.spellcheck_disabled);
 }
 
 void
@@ -918,6 +933,10 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                                gtk_entry_set_text(GTK_ENTRY(c->location), goal);
                                gtk_editable_set_position(GTK_EDITABLE(c->location), -1);
                                return TRUE;
+                       } else if (def_key("print", GDK_KEY_Print) == key) {
+                               webkit_print_operation_run_dialog(webkit_print_operation_new(WEBKIT_WEB_VIEW(c->web_view)),
+                                                                                                                                                                       GTK_WINDOW(gtk_widget_get_toplevel(mw.win)));
+                               return TRUE;
                        } else if (def_key("quit", GDK_KEY_g) == key) {
                                search(c, 2);
                                gtk_widget_grab_focus(c->web_view);
@@ -958,6 +977,33 @@ key_common(GtkWidget *widget, GdkEvent *event, gpointer data)
                        } else if (def_key("tab_close", GDK_KEY_q) == key) {
                                client_destroy(NULL, c);
                                return TRUE;
+                       } else if (def_key("tab_switch_1", GDK_KEY_1) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 0);
+                               return TRUE;
+                       } else if (def_key("tab_switch_2", GDK_KEY_2) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 1);
+                               return TRUE;
+                       } else if (def_key("tab_switch_3", GDK_KEY_3) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 2);
+                               return TRUE;
+                       } else if (def_key("tab_switch_4", GDK_KEY_4) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 3);
+                               return TRUE;
+                       } else if (def_key("tab_switch_5", GDK_KEY_5) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 4);
+                               return TRUE;
+                       } else if (def_key("tab_switch_6", GDK_KEY_6) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 5);
+                               return TRUE;
+                       } else if (def_key("tab_switch_7", GDK_KEY_7) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 6);
+                               return TRUE;
+                       } else if (def_key("tab_switch_8", GDK_KEY_8) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 7);
+                               return TRUE;
+                       } else if (def_key("tab_switch_9", GDK_KEY_9) == key) {
+                               gtk_notebook_set_current_page(GTK_NOTEBOOK(mw.notebook), 8);
+                               return TRUE;
                        } else if (def_key("tab_previous", GDK_KEY_u) == key) {
                                gtk_notebook_prev_page(GTK_NOTEBOOK(mw.notebook));
                                return TRUE;