Fixed none cleared inputbox on mode change.
authorDaniel Carl <danielcarl@gmx.de>
Sat, 27 Apr 2013 17:29:06 +0000 (19:29 +0200)
committerDaniel Carl <danielcarl@gmx.de>
Sat, 27 Apr 2013 17:29:06 +0000 (19:29 +0200)
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

index 862e29f..c9de606 100644 (file)
@@ -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, "");
     }