diff --git a/vcview.py b/vcview.py
index 99cd1b2..74efbc9 100644
--- a/vcview.py
+++ b/vcview.py
@@ -191,35 +191,37 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
         self.button_jump.hide()
         if not self.prefs.vc_console_visible:
             self.on_console_view_toggle(self.console_hide_box)
+        self.vc = None
+        # VC ComboBox
+        self.combobox_vcs.set_model(gtk.ListStore(str, object))
+        cell = gtk.CellRendererText()
+        self.combobox_vcs.pack_start(cell, False)
+        self.combobox_vcs.add_attribute(cell, 'text', 0)
 
     def choose_vc(self, vcs):
-        """Callback from vc.Vc to choose when there are multiple plugins able to handle one location"""
-        d = gtk.Dialog(_('VC chooser'),
-            None,
-            gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-            (gtk.STOCK_OK, gtk.RESPONSE_OK))
-        
-        indexMap = {}
-        cb = gtk.combo_box_new_text()
-        for i, avc in enumerate(vcs):
-            cb.append_text(avc.NAME)
-            indexMap[avc.NAME] = i
-        cb.set_active(0)
-        lb = gtk.Label(_('Pick one source control plugin'))
-        d.vbox.set_spacing(12)
-        d.vbox.pack_start(lb, True, True, 12)
-        d.vbox.pack_start(cb, False, False)
-        cb.show()
-        lb.show()
-        d.run()
-        d.destroy()
-        return vcs[indexMap[cb.get_active_text()]]
+        """Display VC plugin(s) that can handle the location"""
+        model = self.combobox_vcs.get_model()
+        self.combobox_vcs.set_model(None)
+        model.clear()
+        for avc in vcs:
+            model.append([avc.NAME, avc])
+        self.combobox_vcs.set_model(model)
+        self.combobox_vcs.set_sensitive(len(vcs) > 1)
+        self.combobox_vcs.set_active(0)
   
+    def on_vc_change(self, cb):
+        active = cb.get_active()
+        if active != -1:
+            self.vc = cb.get_model()[active][1]
+            self._set_location(self.vc.root)
+
     def set_location(self, location):
-        self.model.clear()
         self.location = location = os.path.abspath(location or ".")
+        self.choose_vc(vc.get_vcs(location))
+
+    def _set_location(self, location):
+        self.model.clear()
         self.fileentry.gtk_entry.set_text(location)
-        self.vc = vc.Vc(location, self.choose_vc)
         it = self.model.add_entries( None, [location] )
         self.treeview.grab_focus()
         self.treeview.get_selection().select_iter(it)
diff --git a/glade2/vcview.glade b/glade2/vcview.glade
index 6985e3a..c7b346c 100644
--- a/glade2/vcview.glade
+++ b/glade2/vcview.glade
@@ -28,7 +28,7 @@
 	<widget class="GtkHBox" id="hbox2">
 	  <property name="visible">True</property>
 	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
+	  <property name="spacing">6</property>
 
 	  <child>
 	    <widget class="Custom" id="fileentry">
@@ -71,6 +71,19 @@
 	      <property name="fill">False</property>
 	    </packing>
 	  </child>
+            <child>
+              <widget class="GtkComboBox" id="combobox_vcs">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="active">0</property>
+                <property name="tooltip" translatable="yes">Pick one source control plugin</property>
+                <signal name="changed" handler="on_vc_change"/>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
diff --git a/vc/__init__.py b/vc/__init__.py
index 07a3dc6..731068f 100644
--- a/vc/__init__.py
+++ b/vc/__init__.py
@@ -34,11 +34,7 @@ def load_plugins():
     return ret
 _plugins = load_plugins()
 
-def default_plugin_order(vcs):
-    # Pick the Vc with the longest repo root
-    return max(vcs, key=lambda repo: len(repo.root))
-
-def Vc(location, ordering_func = default_plugin_order):
+def get_vcs(location):
     vcs = []
     for plugin in _plugins:
         try:
@@ -48,12 +44,6 @@ def Vc(location, ordering_func = default_plugin_order):
 
     if not vcs:
         # No plugin recognized that location, fallback to _null
-        vc = _null.Vc(location)
-    elif len(vcs) == 1:
-        # No need to launch a potentially GUI/interactive chooser
-        vc = vcs[0]
-    else:
-        # User gets to pick one, eventually
-        vc = ordering_func(vcs)
+        vcs.append(_null.Vc(location))
 
-    return vc
+    return vcs
diff --git a/historyentry.py b/historyentry.py
index 2ff3220..1aa4f57 100644
--- a/historyentry.py
+++ b/historyentry.py
@@ -219,7 +219,7 @@ def _expand_filename(filename, default_dir):
         return os.path.join(os.getcwd(), filename)
 
 
-class HistoryFileEntry(gtk.VBox, gtk.Editable):
+class HistoryFileEntry(gtk.HBox, gtk.Editable):
     __gsignals__ = {
         "browse_clicked" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
         "activate" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, [])
@@ -237,24 +237,19 @@ class HistoryFileEntry(gtk.VBox, gtk.Editable):
         self.__is_modal = False
         self.directory_entry = False
 
-        self.set_spacing(4)
-
-        # Allow for a preview thingie to be smacked on top of the file entry
-        hbox = gtk.HBox(False, 4)
-        hbox.show()
-        self.pack_end(hbox, False, False, 0)
+        self.set_spacing(6)
 
         self.gtk_entry.connect("changed", self.__entry_changed_signal)
         self.gtk_entry.connect("activate", self.__entry_activate_signal)
 
         self._setup_dnd()
 
-        hbox.pack_start(self.__gentry, True, True, 0)
+        self.pack_start(self.__gentry, True, True, 0)
         self.__gentry.show()
 
         button = gtk.Button(_("_Browse..."))
         button.connect("clicked", self.__browse_clicked)
-        hbox.pack_start(button, False, False, 0)
+        self.pack_start(button, False, False, 0)
         button.show()
 
         access_entry = self.__gentry.get_accessible()
