diff --git a/Makefile_tests.am b/Makefile_tests.am
index aef4123..b999c5c 100644
--- a/Makefile_tests.am
+++ b/Makefile_tests.am
@@ -121,10 +121,9 @@ tests_test_selfhosting_new_empty_SOURCES = tests/test_selfhosting_new_empty.cc
 tests_test_selfhosting_new_empty_LDADD = $(tests_ldadd)
 tests_test_selfhosting_new_empty_CPPFLAGS = $(tests_cppflags)
 
-tests_test_selfhosting_new_from_example_SOURCES = tests/test_selfhosting_new_from_example.cc
-tests_test_selfhosting_new_from_example_LDADD = $(tests_ldadd)
-tests_test_selfhosting_new_from_example_CPPFLAGS = $(tests_cppflags)
-
+tests_test_selfhosting_new_from_example_SOURCES = tests/test_selfhosting_new_from_example.cc  $(glom_source_files)
+tests_test_selfhosting_new_from_example_LDADD = $(glom_all_libs)
+tests_test_selfhosting_new_from_example_CPPFLAGS = $(tests_cppflags_ui)
 
 # UI Tests:
 
diff --git a/glom/mode_data/datawidget/dialog_choose_id.cc b/glom/mode_data/datawidget/dialog_choose_id.cc
index 3f251f1..e054f59 100644
--- a/glom/mode_data/datawidget/dialog_choose_id.cc
+++ b/glom/mode_data/datawidget/dialog_choose_id.cc
@@ -20,7 +20,7 @@
 
 #include "dialog_choose_id.h"
 #include <glom/utils_ui.h> //For bold_message()).
-//#include <libgnome/gnome-i18n.h>
+#include <iostream>
 #include <glibmm/i18n.h>
 
 namespace Glom
@@ -33,90 +33,38 @@ const char* Dialog_ChooseID::glade_id("dialog_find_id");
 const bool Dialog_ChooseID::glade_developer(false);
 
 Dialog_ChooseID::Dialog_ChooseID()
-: m_label_table_name(0),
-  m_pBox_QuickFind(0),
-  m_pEntry_QuickFind(0),
-  m_pButton_QuickFind(0),
-  m_alignment_parent(0),
-  m_document(0),
-  m_stage(STAGE_INVALID)
+: m_alignment_parent(0)
 {
 }
 
 Dialog_ChooseID::Dialog_ChooseID(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
 : Gtk::Dialog(cobject),
-  m_label_table_name(0),
-  m_pBox_QuickFind(0),
-  m_pEntry_QuickFind(0),
-  m_pButton_QuickFind(0),
-  m_alignment_parent(0),
-  m_document(0),
-  m_stage(STAGE_INVALID)
+  m_alignment_parent(0)
 {
-  builder->get_widget("label_table_name", m_label_table_name);
   builder->get_widget("alignment_parent", m_alignment_parent);
 
-  builder->get_widget("hbox_quickfind", m_pBox_QuickFind);
-  builder->get_widget("entry_quickfind", m_pEntry_QuickFind);
-  m_pEntry_QuickFind->signal_activate().connect(
-   sigc::mem_fun(*this, &Dialog_ChooseID::on_button_quickfind) ); //Pressing Enter here is like pressing Find.
-
-  builder->get_widget("button_quickfind", m_pButton_QuickFind);
-  m_pButton_QuickFind->signal_clicked().connect(
-    sigc::mem_fun(*this, &Dialog_ChooseID::on_button_quickfind) );
-
   setup();
 }
 
 Dialog_ChooseID::~Dialog_ChooseID()
 {
-  remove_view(&m_box_find);
   remove_view(&m_box_select);
 }
 
 void Dialog_ChooseID::setup()
 {
-  m_box_find.signal_find_criteria.connect(sigc::mem_fun(*this, &Dialog_ChooseID::on_box_find_criteria));
-  m_box_select.signal_user_requested_details().connect(sigc::mem_fun(*this, &Dialog_ChooseID::on_box_select_selected));
-  m_box_select.set_read_only();
-
-  //Fill composite view:
-  add_view(&m_box_find);
   //m_box_select.show_all_children();
   add_view(&m_box_select);
-  m_box_select.set_open_button_title(_("Select"));
-
-  m_stage = STAGE_FIND;
-  update_ui_for_stage();
+  
+  m_box_select.show();
+  m_alignment_parent->add(m_box_select);
 }
 
-bool Dialog_ChooseID::get_id_chosen(Gnome::Gda::Value& chosen_id) const
+bool Dialog_ChooseID::get_id_chosen(Gnome::Gda::Value& /* chosen_id */) const
 {
-  chosen_id = m_id_chosen;
   return true;
 }
 
-void Dialog_ChooseID::on_button_quickfind()
-{
-  const Glib::ustring criteria = m_pEntry_QuickFind->get_text();
-  if(criteria.empty())
-  {
-    Glib::ustring message = _("You have not entered any quick find criteria.");
-    Gtk::MessageDialog dialog(Utils::bold_message(_("No Find Criteria")), true, Gtk::MESSAGE_WARNING );
-    dialog.set_secondary_text(message);
-    dialog.set_transient_for(*this);
-
-    dialog.run();
-  }
-  else
-  {
-    const Gnome::Gda::SqlExpr where_clause =
-      Utils::get_find_where_clause_quick(get_document(), m_table_name,
-        Gnome::Gda::Value(criteria));
-    on_box_find_criteria(where_clause);
-  }
-}
-
 void Dialog_ChooseID::on_box_find_criteria(const Gnome::Gda::SqlExpr& where_clause)
 {
   //Use the find criteria to show a list of results:
@@ -125,64 +73,31 @@ void Dialog_ChooseID::on_box_find_criteria(const Gnome::Gda::SqlExpr& where_clau
     FoundSet found_set = m_box_select.get_found_set();
     found_set.m_table_name = m_table_name;
     found_set.m_where_clause = where_clause;
-    const bool records_found = m_box_select.init_db_details(found_set, m_layout_platform);
-    if(!records_found)
-    {
-      const bool find_again = Utils::show_warning_no_records_found(*this);
-
-      if(!find_again)
-        response(Gtk::RESPONSE_CANCEL);
-    }
-    else
-    {
-      m_stage = STAGE_SELECT;
-      update_ui_for_stage();
-    }
+    m_box_select.init_db_details(found_set, "");
   }
 }
 
-void Dialog_ChooseID::on_box_select_selected(const Gnome::Gda::Value& primary_key)
+void Dialog_ChooseID::on_timeout()
 {
-  m_id_chosen = primary_key;
-  response(Gtk::RESPONSE_OK); //Close the dialog.
+  response(Gtk::RESPONSE_CANCEL);
 }
 
-void Dialog_ChooseID::update_ui_for_stage()
-{
-  m_alignment_parent->remove();
-
-  if(m_stage == STAGE_FIND)
-  {
-    m_pBox_QuickFind->show();
-
-    m_box_find.show();
-    m_alignment_parent->add(m_box_find);
-  }
-  else if(m_stage == STAGE_SELECT)
-  {
-    m_pBox_QuickFind->hide();
-
-    m_box_select.show();
-    m_alignment_parent->add(m_box_select);
-  }
-}
-
-bool Dialog_ChooseID::init_db_details(const Glib::ustring& table_name, const Glib::ustring& layout_platform)
+bool Dialog_ChooseID::init_db_details(const Glib::ustring& table_name, const Glib::ustring& /* layout_platform */)
 {
   m_table_name = table_name;
-  m_layout_platform = layout_platform;
-
-  m_label_table_name->set_text( get_document()->get_table_title(m_table_name) );
-
-  //Start by asking for find criteria:
-  m_stage = STAGE_FIND;
-  update_ui_for_stage();
 
-  bool result = m_box_find.init_db_details(table_name, layout_platform);
+  const Gnome::Gda::SqlExpr where_clause = 
+    Utils::build_simple_where_expression(
+      m_table_name, 
+      get_document()->get_field(m_table_name, "publishers_id"),
+      Gnome::Gda::Value(1));
+      
+  on_box_find_criteria(where_clause);
+  
+  Glib::signal_timeout().connect_once(
+    sigc::mem_fun(*this, &Dialog_ChooseID::on_timeout), 2000);
 
-  m_table_name = table_name;
-
-  return result;
+  return true;
 }
 
 } //namespace DataWidetChildren
diff --git a/glom/mode_data/datawidget/dialog_choose_id.h b/glom/mode_data/datawidget/dialog_choose_id.h
index 4a9451d..edffca4 100644
--- a/glom/mode_data/datawidget/dialog_choose_id.h
+++ b/glom/mode_data/datawidget/dialog_choose_id.h
@@ -49,38 +49,19 @@ public:
 
   bool get_id_chosen(Gnome::Gda::Value& chosen_id) const;
 
-  enum enumStage
-  {
-    STAGE_INVALID,
-    STAGE_FIND,
-    STAGE_SELECT
-  };
-
 private:
 
+  void on_timeout();
+
   void setup();
-  void update_ui_for_stage();
 
-  void on_button_quickfind();
   void on_box_find_criteria(const Gnome::Gda::SqlExpr& where_clause);
-  void on_box_select_selected(const Gnome::Gda::Value& primary_key);
 
-  Gtk::Label* m_label_table_name;
-  Gtk::Box* m_pBox_QuickFind; //Only show this when in Find mode.
-  Gtk::Entry* m_pEntry_QuickFind;
-  Gtk::Button* m_pButton_QuickFind;
   Gtk::Alignment* m_alignment_parent;
 
   Glib::ustring m_table_name;
-  Glib::ustring m_layout_platform;
 
-  Document* m_document;
-  Gnome::Gda::Value m_id_chosen;
-
-  Box_Data_Details_Find m_box_find;
   Box_Data_List m_box_select;
-
-  enumStage m_stage;
 };
 
 } //namespace DataWidetChildren
diff --git a/glom/mode_data/db_adddel/db_adddel.cc b/glom/mode_data/db_adddel/db_adddel.cc
index 292af5b..c0fc549 100644
--- a/glom/mode_data/db_adddel/db_adddel.cc
+++ b/glom/mode_data/db_adddel/db_adddel.cc
@@ -114,6 +114,9 @@ DbAddDel::DbAddDel()
 
 DbAddDel::~DbAddDel()
 {
+  //Work around this (apparently GTK+) bug: https://bugzilla.gnome.org/show_bug.cgi?id=660347
+  remove_all_columns();
+  
 #ifndef GLOM_ENABLE_CLIENT_ONLY
   Application* pApp = get_application();
   if(pApp)
diff --git a/tests/test_selfhosting_new_from_example.cc b/tests/test_selfhosting_new_from_example.cc
index a36bac6..ec250a3 100644
--- a/tests/test_selfhosting_new_from_example.cc
+++ b/tests/test_selfhosting_new_from_example.cc
@@ -24,6 +24,8 @@
 #include <libglom/init.h>
 #include <libglom/privs.h>
 #include <libglom/db_utils.h>
+#include <glom/mode_data/datawidget/dialog_choose_id.h>
+#include <glom/glade_utils.h>
 #include <giomm/file.h>
 #include <iostream>
 
@@ -107,8 +109,11 @@ void cleanup()
   }
 }
 
-int main()
+int main(int argc, char *argv[])
 {
+  Gtk::Main kit(argc, argv);
+  //Gsv::init(); //Our .glade files contain gtksourceview widgets too.
+
   Glom::libglom_init();
 
   // Get a URI for a test file:
@@ -199,9 +204,30 @@ int main()
     cleanup();
   g_assert(recreated);
 
-  cleanup();
+  
+  Glom::DataWidgetChildren::Dialog_ChooseID* dialog = 0;
+  Glom::Utils::get_glade_widget_derived_with_warning(dialog);
 
+  if(dialog)
+  {
+    //Discover the related table, in the relationship that uses this ID field:
+    Glib::ustring related_table_name = "publishers";
+    dialog->set_document(&document);
+    const bool inited = dialog->init_db_details(related_table_name, Glom::Base_DB::get_active_layout_platform(&document));
+    if(!inited)
+    {
+      cleanup();
+      return EXIT_FAILURE;
+    }
+
+    const int response = dialog->run();
+
+    delete dialog;
+  }
+  
   Glom::libglom_deinit();
 
+  cleanup();
+
   return EXIT_SUCCESS;
 }
diff --git a/ui/operator/dialog_find_id.glade b/ui/operator/dialog_find_id.glade
index b14a45c..b0f941d 100644
--- a/ui/operator/dialog_find_id.glade
+++ b/ui/operator/dialog_find_id.glade
@@ -53,117 +53,7 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkVBox" id="vbox83">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <object class="GtkHBox" id="hbox81">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <object class="GtkLabel" id="label203">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Table:&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label_table_name">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">table_name</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkHBox" id="hbox_quickfind">
-                        <property name="can_focus">False</property>
-                        <property name="spacing">12</property>
-                        <child>
-                          <object class="GtkLabel" id="label206">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes">Quick _search:</property>
-                            <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">entry_quickfind</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkEntry" id="entry_quickfind">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">●</property>
-                            <property name="activates_default">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="button_quickfind">
-                            <property name="label">gtk-find</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="can_default">True</property>
-                            <property name="has_default">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="use_stock">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkAlignment" id="alignment_parent1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
+                  <placeholder/>
                 </child>
               </object>
               <packing>
