diff options
author | Daniel Carl <danielcarl@gmx.de> | 2012-12-15 19:03:58 +0100 |
---|---|---|
committer | Daniel Carl <danielcarl@gmx.de> | 2012-12-16 00:07:11 +0100 |
commit | a9038a71ce2c04fa42fe0d61364e02d1b0405743 (patch) | |
tree | 0612ea0a28f1350f4c9cc59cf46106312db61005 | |
parent | 0d005cdeae3cfda35b2390557f3d323c83198e6d (diff) |
Added new function to write input text.
-rw-r--r-- | src/command.c | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/src/command.c b/src/command.c index 8939152..a26780d 100644 --- a/src/command.c +++ b/src/command.c @@ -70,6 +70,9 @@ static CommandInfo cmd_list[] = { {"hint-focus-prev", command_hints_focus, {1}, VP_MODE_HINTING}, }; +static void command_write_input(const gchar* str); + + void command_init(void) { guint i; @@ -107,10 +110,8 @@ gboolean command_run(const gchar* name, const gchar* param) result = c->function(&a); g_free(a.s); - /* if command was run, remove the modkey and count */ - vp.state.modkey = vp.state.count = 0; - vp.state.mode = c->mode; - vp_update_statusbar(); + /* set the new mode */ + vp_set_mode(c->mode, FALSE); return result; } @@ -122,31 +123,21 @@ gboolean command_open(const Arg* arg) gboolean command_input(const Arg* arg) { - gint pos = 0; const gchar* url; - - /* reset the colors and fonts to defalts */ - vp_set_widget_font( - vp.gui.inputbox, - &vp.style.input_fg[VP_MSG_NORMAL], - &vp.style.input_bg[VP_MSG_NORMAL], - vp.style.input_font[VP_MSG_NORMAL] - ); - - /* remove content from input box */ - gtk_entry_set_text(GTK_ENTRY(vp.gui.inputbox), ""); - - /* insert string from arg */ - gtk_editable_insert_text(GTK_EDITABLE(vp.gui.inputbox), arg->s, -1, &pos); + gchar* input = NULL; /* add current url if requested */ if (VP_INPUT_CURRENT_URI == arg->i - && (url = webkit_web_view_get_uri(vp.gui.webview))) { - gtk_editable_insert_text(GTK_EDITABLE(vp.gui.inputbox), url, -1, &pos); + && (url = webkit_web_view_get_uri(vp.gui.webview)) + ) { + /* append the crrent url to the input message */ + input = g_strconcat(arg->s, url, NULL); + command_write_input(input); + g_free(input); + } else { + command_write_input(arg->s); } - gtk_editable_set_position(GTK_EDITABLE(vp.gui.inputbox), -1); - return vp_set_mode(VP_MODE_COMMAND, FALSE); } @@ -293,3 +284,22 @@ gboolean command_hints_focus(const Arg* arg) return TRUE; } + +static void command_write_input(const gchar* str) +{ + gint pos = 0; + /* reset the colors and fonts to defalts */ + vp_set_widget_font( + vp.gui.inputbox, + &vp.style.input_fg[VP_MSG_NORMAL], + &vp.style.input_bg[VP_MSG_NORMAL], + vp.style.input_font[VP_MSG_NORMAL] + ); + + /* remove content from input box */ + gtk_entry_set_text(GTK_ENTRY(vp.gui.inputbox), ""); + + /* insert string from arg */ + gtk_editable_insert_text(GTK_EDITABLE(vp.gui.inputbox), str, -1, &pos); + gtk_editable_set_position(GTK_EDITABLE(vp.gui.inputbox), -1); +} |