From 30ec7ad3a61c71c797f975f27126224666e7b497 Mon Sep 17 00:00:00 2001 From: Ofear Date: Tue, 19 Feb 2013 16:57:29 -0500 Subject: [PATCH 1/2] change urlselect overlay to immediately select a link once the number of digits inputted is equal to the number of digits in the largest link --- termite.cc | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/termite.cc b/termite.cc index 211a710..80ce6a5 100644 --- a/termite.cc +++ b/termite.cc @@ -746,6 +746,43 @@ gboolean entry_key_press_cb(GtkEntry *entry, GdkEventKey *event, keybind_info *i gboolean ret = FALSE; switch (event->keyval) { + case GDK_KEY_0: + case GDK_KEY_1: + case GDK_KEY_2: + case GDK_KEY_3: + case GDK_KEY_4: + case GDK_KEY_5: + case GDK_KEY_6: + case GDK_KEY_7: + case GDK_KEY_8: + case GDK_KEY_9: + if(info->panel.mode == overlay_mode::urlselect) + { + const char *const text = gtk_entry_get_text(entry); + char* fulltext = g_strndup(text, strlen(text)+1); + fulltext[strlen(text)] = (char)event->keyval; + gboolean exalpha = FALSE; + for(int i = 0; text[i] != '\0'; i++) { + if(!g_ascii_isdigit(text[i])) { + exalpha = TRUE; + break; + } + } + if(exalpha) + break; + char* str_ptr = (char*)malloc(sizeof(text)); + sprintf(str_ptr, "%d", (int)info->panel.url_list.size()); + int url_num = (int)strlen(str_ptr); + delete str_ptr; + int inp_num = (int)strlen(fulltext); + if(url_num == inp_num) + { + launch_url(info->config.browser, fulltext, &info->panel); + ret = TRUE; + } + } + break; + case GDK_KEY_Tab: synthesize_keypress(GTK_WIDGET(entry), GDK_KEY_Down); return TRUE; From 928dc07fd85dbbea7615e9f3afd80d394a4a4d62 Mon Sep 17 00:00:00 2001 From: Ofear Date: Tue, 19 Feb 2013 18:19:38 -0500 Subject: [PATCH 2/2] add config option quick_url (defaults to off) to turn on quick url selection in the urlselection overlay --- termite.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/termite.cc b/termite.cc index 80ce6a5..e4e7e57 100644 --- a/termite.cc +++ b/termite.cc @@ -69,7 +69,7 @@ struct hint_info { struct config_info { hint_info hints; char *browser; - gboolean dynamic_title, urgent_on_bell, clickable_url; + gboolean dynamic_title, urgent_on_bell, clickable_url, quick_url; int tag; char *config_file; }; @@ -756,7 +756,7 @@ gboolean entry_key_press_cb(GtkEntry *entry, GdkEventKey *event, keybind_info *i case GDK_KEY_7: case GDK_KEY_8: case GDK_KEY_9: - if(info->panel.mode == overlay_mode::urlselect) + if(info->panel.mode == overlay_mode::urlselect && info->config.quick_url) { const char *const text = gtk_entry_get_text(entry); char* fulltext = g_strndup(text, strlen(text)+1); @@ -1125,6 +1125,7 @@ static void set_config(GtkWindow *window, VteTerminal *vte, config_info *info, info->dynamic_title = cfg_bool("dynamic_title", TRUE); info->urgent_on_bell = cfg_bool("urgent_on_bell", TRUE); info->clickable_url = cfg_bool("clickable_url", TRUE); + info->quick_url = cfg_bool("quick_url", FALSE); if (info->clickable_url) { info->tag = @@ -1305,7 +1306,7 @@ int main(int argc, char **argv) { std::vector()}, {vi_mode::insert, 0, 0, 0, 0}, {{nullptr, nullptr, nullptr, nullptr, 0, 0, 0}, - nullptr, FALSE, FALSE, FALSE, -1, config_file} + nullptr, FALSE, FALSE, FALSE, FALSE, -1, config_file} }; load_config(GTK_WINDOW(window), vte, &info.config, &geometry);