Don't complete commands if there is already an submode set.
authorDaniel Carl <danielcarl@gmx.de>
Sun, 21 Apr 2013 18:25:52 +0000 (20:25 +0200)
committerDaniel Carl <danielcarl@gmx.de>
Sun, 21 Apr 2013 18:25:52 +0000 (20:25 +0200)
src/command.c
src/completion.c

index 0e98c38..08bb8dd 100644 (file)
@@ -390,10 +390,9 @@ gboolean command_set(const Arg *arg)
 
 gboolean command_complete(const Arg *arg)
 {
+    /* mode will be set in completion_complete */
     completion_complete(arg->i ? true : false);
 
-    vb_set_mode(VB_MODE_COMMAND | VB_MODE_COMPLETE, false);
-
     return true;
 }
 
index c07600f..8b70451 100644 (file)
@@ -70,6 +70,12 @@ gboolean completion_complete(gboolean back)
         }
     }
 
+    /* don't disturb other command sub modes - complate only if no sub mode
+     * is set before */
+    if (vb.state.mode != VB_MODE_COMMAND) {
+        return false;
+    }
+
     /* create new completion */
 #ifdef HAS_GTK3
     vb.gui.compbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
@@ -129,6 +135,9 @@ gboolean completion_complete(gboolean back)
     if (!comps.completions) {
         return false;
     }
+
+    vb_set_mode(VB_MODE_COMMAND | VB_MODE_COMPLETE, false);
+
     show(back);
 
     return true;