From 6c6d07ef68a9a8207dcc50a08cf2a6732b0408db Mon Sep 17 00:00:00 2001 From: Daniel Carl Date: Sat, 27 Apr 2013 19:29:06 +0200 Subject: [PATCH] Fixed none cleared inputbox on mode change. If the mode where not really change but the function vb_set_mode() called with flag clear input, the input was not cleared, because we skipped the part of logic where the inputbox will be cleared. --- src/main.c | 67 +++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/src/main.c b/src/main.c index 862e29f..c9de606 100644 --- a/src/main.c +++ b/src/main.c @@ -213,45 +213,40 @@ gboolean vb_set_mode(Mode mode, gboolean clean) vb.state.modkey = vb.state.count = 0; - /* skip further processing if mode isn't really switched */ - if (vb.state.mode == mode) { - vb_update_statusbar(); - return true; - } - - /* leaf the old mode */ - if ((vb.state.mode & VB_MODE_COMPLETE) && !(mode & VB_MODE_COMPLETE)) { - completion_clean(); - } else if ((vb.state.mode & VB_MODE_SEARCH) && !(mode & VB_MODE_SEARCH)) { - command_search(&((Arg){VB_SEARCH_OFF})); - } else if ((vb.state.mode & VB_MODE_HINTING) && !(mode & VB_MODE_HINTING)) { - hints_clear(); - } else if (clean_old == VB_MODE_INSERT) { - clean = true; - dom_clear_focus(vb.gui.webview); - } - - /* enter the new mode */ - switch (clean_new) { - case VB_MODE_NORMAL: - history_rewind(); - gtk_widget_grab_focus(GTK_WIDGET(vb.gui.webview)); - break; - - case VB_MODE_COMMAND: - gtk_widget_grab_focus(GTK_WIDGET(vb.gui.inputbox)); - break; + /* prcess only if mode has changed */ + if (vb.state.mode != mode) { + /* leaf the old mode */ + if ((vb.state.mode & VB_MODE_COMPLETE) && !(mode & VB_MODE_COMPLETE)) { + completion_clean(); + } else if ((vb.state.mode & VB_MODE_SEARCH) && !(mode & VB_MODE_SEARCH)) { + command_search(&((Arg){VB_SEARCH_OFF})); + } else if ((vb.state.mode & VB_MODE_HINTING) && !(mode & VB_MODE_HINTING)) { + hints_clear(); + } else if (clean_old == VB_MODE_INSERT) { + clean = true; + dom_clear_focus(vb.gui.webview); + } - case VB_MODE_INSERT: - clean = false; - gtk_widget_grab_focus(GTK_WIDGET(vb.gui.webview)); - vb_echo(VB_MSG_NORMAL, false, "-- INPUT --"); - break; + /* enter the new mode */ + switch (clean_new) { + case VB_MODE_NORMAL: + history_rewind(); + gtk_widget_grab_focus(GTK_WIDGET(vb.gui.webview)); + break; + + case VB_MODE_COMMAND: + gtk_widget_grab_focus(GTK_WIDGET(vb.gui.inputbox)); + break; + + case VB_MODE_INSERT: + clean = false; + gtk_widget_grab_focus(GTK_WIDGET(vb.gui.webview)); + vb_echo(VB_MSG_NORMAL, false, "-- INPUT --"); + break; + } + vb.state.mode = mode; } - vb.state.mode = mode; - - /* echo message if given */ if (clean) { vb_echo(VB_MSG_NORMAL, false, ""); } -- 2.20.1