[gtkmm-documentation] examples/book/[o-z]*: Update some examples after Gtk::Container was removed



commit 272cff703025b4d6173b9ad48d9b438912298f60
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Tue May 26 19:07:49 2020 +0200

    examples/book/[o-z]*: Update some examples after Gtk::Container was removed
    
    This commit fixes example programs in examples/book/[o-z]*.
    (Actually there are programs only in the interval [p-u].)
    All these programs can be compiled and linked with the latest gtkmm and a
    gtk from May 22. A few programs do not work fully.

 examples/book/paned/examplewindow.cc               |  6 +--
 examples/book/paned/messageslist.cc                |  2 +-
 examples/book/paned/messagetext.cc                 |  2 +-
 examples/book/popover/examplewindow.cc             |  8 +--
 examples/book/printing/advanced/examplewindow.cc   | 25 ++++++----
 examples/book/printing/advanced/examplewindow.h    |  3 ++
 examples/book/printing/advanced/previewdialog.cc   | 12 ++---
 .../book/printing/advanced/printformoperation.cc   |  8 +--
 examples/book/printing/simple/examplewindow.cc     | 25 ++++++----
 examples/book/printing/simple/examplewindow.h      |  3 ++
 .../book/printing/simple/printformoperation.cc     |  2 +-
 examples/book/progressbar/examplewindow.cc         | 10 ++--
 examples/book/range_widgets/examplewindow.cc       | 38 +++++++-------
 examples/book/recent_files/examplewindow.cc        | 36 +++++++++-----
 examples/book/recent_files/examplewindow.h         |  4 ++
 examples/book/revealer/examplewindow.cc            | 10 ++--
 examples/book/scrolledwindow/examplewindow.cc      |  4 +-
 examples/book/searchbar/examplewindow.cc           | 20 ++++----
 examples/book/spinbutton/examplewindow.cc          | 58 +++++++++++-----------
 examples/book/textview/examplewindow.cc            | 16 +++---
 examples/book/timeout/timerexample.cc              | 13 ++---
 examples/book/toolbar/examplewindow.cc             | 22 ++++----
 examples/book/tooltips/examplewindow.cc            | 14 +++---
 .../book/treeview/combo_renderer/examplewindow.cc  | 10 ++--
 .../treeview/custom_treemodel/exampletreemodel.cc  |  2 +-
 .../treeview/custom_treemodel/examplewindow.cc     | 16 +++---
 .../book/treeview/drag_and_drop/examplewindow.cc   | 10 ++--
 .../book/treeview/drag_and_drop/treemodel_dnd.cc   |  2 +-
 .../book/treeview/editable_cells/examplewindow.cc  | 30 ++++++-----
 .../book/treeview/editable_cells/examplewindow.h   |  1 +
 examples/book/treeview/filter/examplewindow.cc     | 10 ++--
 .../book/treeview/filter_modify/examplewindow.cc   | 10 ++--
 examples/book/treeview/list/examplewindow.cc       | 10 ++--
 .../book/treeview/listviewtext/examplewindow.cc    | 10 ++--
 examples/book/treeview/modelsort/examplewindow.cc  | 14 +++---
 examples/book/treeview/popup/examplewindow.cc      | 10 ++--
 examples/book/treeview/tree/examplewindow.cc       | 10 ++--
 examples/book/update_ui/examplewindow.cc           | 10 ++--
 38 files changed, 270 insertions(+), 226 deletions(-)
---
diff --git a/examples/book/paned/examplewindow.cc b/examples/book/paned/examplewindow.cc
index 4c5a1d9..b724663 100644
--- a/examples/book/paned/examplewindow.cc
+++ b/examples/book/paned/examplewindow.cc
@@ -24,11 +24,11 @@ ExampleWindow::ExampleWindow()
   m_VPaned.set_margin(10);
 
   /* Add a vpaned widget to our toplevel window */
-  add(m_VPaned);
+  set_child(m_VPaned);
 
   /* Now add the contents of the two halves of the window */
-  m_VPaned.add1(m_MessagesList);
-  m_VPaned.add2(m_MessageText);
+  m_VPaned.set_start_child(m_MessagesList);
+  m_VPaned.set_end_child(m_MessageText);
 }
 
 ExampleWindow::~ExampleWindow()
diff --git a/examples/book/paned/messageslist.cc b/examples/book/paned/messageslist.cc
index e0baac5..26654f3 100644
--- a/examples/book/paned/messageslist.cc
+++ b/examples/book/paned/messageslist.cc
@@ -22,7 +22,7 @@ MessagesList::MessagesList()
   /* Create a new scrolled window, with scrollbars only if needed */
   set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
 
-  add(m_TreeView);
+  set_child(m_TreeView);
 
   /* create list store */
   m_refListStore = Gtk::ListStore::create(m_Columns);
diff --git a/examples/book/paned/messagetext.cc b/examples/book/paned/messagetext.cc
index b2e623a..15b6651 100644
--- a/examples/book/paned/messagetext.cc
+++ b/examples/book/paned/messagetext.cc
@@ -20,7 +20,7 @@ MessageText::MessageText()
 {
   set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
 
-  add(m_TextView);
+  set_child(m_TextView);
   insert_text();
 }
 
diff --git a/examples/book/popover/examplewindow.cc b/examples/book/popover/examplewindow.cc
index 5d4dc4e..0b9f3e4 100644
--- a/examples/book/popover/examplewindow.cc
+++ b/examples/book/popover/examplewindow.cc
@@ -45,7 +45,7 @@ ExampleWindow::ExampleWindow()
   m_grid.attach(m_menu_button, 0, 0, 1, 1);
   m_grid.attach(m_calendar, 0, 1, 6, 1);
   m_grid.set_margin(12);
-  add(m_grid);
+  set_child(m_grid);
 }
 
 ExampleWindow::~ExampleWindow()
@@ -65,7 +65,7 @@ void ExampleWindow::configure_form_popover()
   m_toggle_form_grid.attach(m_toggle_form_combo_label, 0, 2, 1, 1);
   m_toggle_form_grid.attach(m_toggle_form_combo, 1, 2, 1, 1);
 
-  m_toggle_form_popover.add(m_toggle_form_grid);
+  m_toggle_form_popover.set_child(m_toggle_form_grid);
   m_toggle_form_popover.set_position(Gtk::PositionType::BOTTOM);
   m_toggle_form_popover.set_margin(6);
   m_toggle_form_popover.set_autohide(false);
@@ -84,7 +84,7 @@ void ExampleWindow::configure_form_buttons()
   {
     button.set_draw_indicator(false);
     button.set_expand(true);
-    m_format_buttons_box.add(button);
+    m_format_buttons_box.append(button);
   }
 
   // Group format buttons so that they appear that they belong together
@@ -131,7 +131,7 @@ void ExampleWindow::configure_cal_popover()
   m_calendar_form_grid.attach(m_calendar_popover_entry, 1, 0);
 
   m_calendar_popover.set_parent(m_calendar);
-  m_calendar_popover.add(m_calendar_form_grid);
+  m_calendar_popover.set_child(m_calendar_form_grid);
   m_calendar_popover.set_margin(6);
 }
 
diff --git a/examples/book/printing/advanced/examplewindow.cc 
b/examples/book/printing/advanced/examplewindow.cc
index 4dc23bd..b4a6922 100644
--- a/examples/book/printing/advanced/examplewindow.cc
+++ b/examples/book/printing/advanced/examplewindow.cc
@@ -36,11 +36,11 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   set_title(app_title);
   set_default_size(400, 300);
 
-  add(m_VBox);
+  set_child(m_VBox);
 
   build_main_menu(app);
 
-  m_VBox.add(m_Grid);
+  m_VBox.append(m_Grid);
 
   //Arrange the widgets inside the grid:
   m_Grid.set_expand(true);
@@ -53,7 +53,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   m_Grid.attach(m_SurnameEntry, 1, 1);
 
   //Add the TextView, inside a ScrolledWindow:
-  m_ScrolledWindow.add(m_TextView);
+  m_ScrolledWindow.set_child(m_TextView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
@@ -66,7 +66,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   m_TextView.set_buffer(m_refTextBuffer);
 
   m_Statusbar.set_expand(true);
-  m_VBox.add(m_Statusbar);
+  m_VBox.append(m_Statusbar);
 }
 
 ExampleWindow::~ExampleWindow()
@@ -218,7 +218,7 @@ void ExampleWindow::build_main_menu(const Glib::RefPtr<Gtk::Application>& app)
     auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);
 
     // Add the PopoverMenuBar to the window:
-    m_VBox.add(*pMenuBar);
+    m_VBox.append(*pMenuBar);
   }
 
   // Get the toolbar and add it to a container widget:
@@ -226,7 +226,7 @@ void ExampleWindow::build_main_menu(const Glib::RefPtr<Gtk::Application>& app)
   if (!toolbar)
     g_warning("toolbar not found");
   else
-    m_VBox.add(*toolbar);
+    m_VBox.append(*toolbar);
 }
 
 void ExampleWindow::on_printoperation_status_changed()
@@ -252,9 +252,16 @@ void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result)
 
   if (result == Gtk::PrintOperation::Result::ERROR)
   {
-    Gtk::MessageDialog err_dialog(*this, "Error printing form", false,
-            Gtk::MessageType::ERROR, Gtk::ButtonsType::OK, true);
-    err_dialog.run();
+    if (!m_pDialog)
+    {
+      m_pDialog.reset(new Gtk::MessageDialog(*this, "Error printing form",
+        false /* use_markup */, Gtk::MessageType::ERROR, Gtk::ButtonsType::OK,
+        true /* modal */));
+      m_pDialog->set_hide_on_close(true);
+      m_pDialog->signal_response().connect(
+        sigc::hide(sigc::mem_fun(*m_pDialog, &Gtk::Widget::hide)));
+    }
+    m_pDialog->show();
   }
   else if (result == Gtk::PrintOperation::Result::APPLY)
   {
diff --git a/examples/book/printing/advanced/examplewindow.h b/examples/book/printing/advanced/examplewindow.h
index 9e0977d..3dccd64 100644
--- a/examples/book/printing/advanced/examplewindow.h
+++ b/examples/book/printing/advanced/examplewindow.h
@@ -20,6 +20,7 @@
 // This file is part of the printing/simple and printing/advanced examples
 
 #include <gtkmm.h>
+#include <memory>
 
 class PrintFormOperation;
 
@@ -73,6 +74,8 @@ protected:
   Gtk::Statusbar m_Statusbar;
 
   Glib::RefPtr<Gtk::Builder> m_refBuilder;
+
+  std::unique_ptr<Gtk::MessageDialog> m_pDialog;
 };
 
 #endif //GTKMM_EXAMPLEWINDOW_H
diff --git a/examples/book/printing/advanced/previewdialog.cc 
b/examples/book/printing/advanced/previewdialog.cc
index 31a1076..133ab0e 100644
--- a/examples/book/printing/advanced/previewdialog.cc
+++ b/examples/book/printing/advanced/previewdialog.cc
@@ -40,20 +40,20 @@ PreviewDialog::PreviewDialog(
   set_size_request(300, 300);
 
   m_VBox.set_margin(2);
-  add(m_VBox);
+  set_child(m_VBox);
 
-  m_HBox.add(m_PageSpin);
+  m_HBox.append(m_PageSpin);
   m_PageSpin.set_hexpand(true);
   m_PageSpin.set_vexpand(false);
-  m_HBox.add(m_CloseButton);
-  m_VBox.add(m_HBox);
+  m_HBox.append(m_CloseButton);
+  m_VBox.append(m_HBox);
 
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand(true);
-  m_VBox.add(m_ScrolledWindow);
+  m_VBox.append(m_ScrolledWindow);
   m_DrawingArea.set_content_width(300);
   m_DrawingArea.set_content_height(600);
-  m_ScrolledWindow.add(m_DrawingArea);
+  m_ScrolledWindow.set_child(m_DrawingArea);
 
   m_refPreview->signal_ready().connect(
     sigc::mem_fun(*this, &PreviewDialog::on_popreview_ready));
diff --git a/examples/book/printing/advanced/printformoperation.cc 
b/examples/book/printing/advanced/printformoperation.cc
index 2f216bd..35639da 100644
--- a/examples/book/printing/advanced/printformoperation.cc
+++ b/examples/book/printing/advanced/printformoperation.cc
@@ -30,7 +30,7 @@ PrintFormOperation::~PrintFormOperation()
 
 Glib::RefPtr<PrintFormOperation> PrintFormOperation::create()
 {
-  return Glib::RefPtr<PrintFormOperation>(new PrintFormOperation());
+  return Glib::make_refptr_for_instance<PrintFormOperation>(new PrintFormOperation());
 }
 
 void PrintFormOperation::on_begin_print(const Glib::RefPtr<Gtk::PrintContext>&
@@ -158,14 +158,14 @@ Gtk::Widget* PrintFormOperation::on_create_custom_widget()
   vbox->set_margin(12);
 
   auto hbox = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL, 8);
-  vbox->add(*hbox);
+  vbox->append(*hbox);
   hbox->set_margin(6);
 
   auto label = Gtk::make_managed<Gtk::Label>("Choose a font: ");
-  hbox->add(*label);
+  hbox->append(*label);
 
   m_FontButton.set_font(m_Font);
-  hbox->add(m_FontButton);
+  hbox->append(m_FontButton);
 
   return vbox;
 }
diff --git a/examples/book/printing/simple/examplewindow.cc b/examples/book/printing/simple/examplewindow.cc
index 4dc23bd..b4a6922 100644
--- a/examples/book/printing/simple/examplewindow.cc
+++ b/examples/book/printing/simple/examplewindow.cc
@@ -36,11 +36,11 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   set_title(app_title);
   set_default_size(400, 300);
 
-  add(m_VBox);
+  set_child(m_VBox);
 
   build_main_menu(app);
 
-  m_VBox.add(m_Grid);
+  m_VBox.append(m_Grid);
 
   //Arrange the widgets inside the grid:
   m_Grid.set_expand(true);
@@ -53,7 +53,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   m_Grid.attach(m_SurnameEntry, 1, 1);
 
   //Add the TextView, inside a ScrolledWindow:
-  m_ScrolledWindow.add(m_TextView);
+  m_ScrolledWindow.set_child(m_TextView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
@@ -66,7 +66,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   m_TextView.set_buffer(m_refTextBuffer);
 
   m_Statusbar.set_expand(true);
-  m_VBox.add(m_Statusbar);
+  m_VBox.append(m_Statusbar);
 }
 
 ExampleWindow::~ExampleWindow()
@@ -218,7 +218,7 @@ void ExampleWindow::build_main_menu(const Glib::RefPtr<Gtk::Application>& app)
     auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);
 
     // Add the PopoverMenuBar to the window:
-    m_VBox.add(*pMenuBar);
+    m_VBox.append(*pMenuBar);
   }
 
   // Get the toolbar and add it to a container widget:
@@ -226,7 +226,7 @@ void ExampleWindow::build_main_menu(const Glib::RefPtr<Gtk::Application>& app)
   if (!toolbar)
     g_warning("toolbar not found");
   else
-    m_VBox.add(*toolbar);
+    m_VBox.append(*toolbar);
 }
 
 void ExampleWindow::on_printoperation_status_changed()
@@ -252,9 +252,16 @@ void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result)
 
   if (result == Gtk::PrintOperation::Result::ERROR)
   {
-    Gtk::MessageDialog err_dialog(*this, "Error printing form", false,
-            Gtk::MessageType::ERROR, Gtk::ButtonsType::OK, true);
-    err_dialog.run();
+    if (!m_pDialog)
+    {
+      m_pDialog.reset(new Gtk::MessageDialog(*this, "Error printing form",
+        false /* use_markup */, Gtk::MessageType::ERROR, Gtk::ButtonsType::OK,
+        true /* modal */));
+      m_pDialog->set_hide_on_close(true);
+      m_pDialog->signal_response().connect(
+        sigc::hide(sigc::mem_fun(*m_pDialog, &Gtk::Widget::hide)));
+    }
+    m_pDialog->show();
   }
   else if (result == Gtk::PrintOperation::Result::APPLY)
   {
diff --git a/examples/book/printing/simple/examplewindow.h b/examples/book/printing/simple/examplewindow.h
index 9e0977d..3dccd64 100644
--- a/examples/book/printing/simple/examplewindow.h
+++ b/examples/book/printing/simple/examplewindow.h
@@ -20,6 +20,7 @@
 // This file is part of the printing/simple and printing/advanced examples
 
 #include <gtkmm.h>
+#include <memory>
 
 class PrintFormOperation;
 
@@ -73,6 +74,8 @@ protected:
   Gtk::Statusbar m_Statusbar;
 
   Glib::RefPtr<Gtk::Builder> m_refBuilder;
+
+  std::unique_ptr<Gtk::MessageDialog> m_pDialog;
 };
 
 #endif //GTKMM_EXAMPLEWINDOW_H
diff --git a/examples/book/printing/simple/printformoperation.cc 
b/examples/book/printing/simple/printformoperation.cc
index da3a954..d914083 100644
--- a/examples/book/printing/simple/printformoperation.cc
+++ b/examples/book/printing/simple/printformoperation.cc
@@ -26,7 +26,7 @@ PrintFormOperation::~PrintFormOperation()
 
 Glib::RefPtr<PrintFormOperation> PrintFormOperation::create()
 {
-  return Glib::RefPtr<PrintFormOperation>(new PrintFormOperation());
+  return Glib::make_refptr_for_instance<PrintFormOperation>(new PrintFormOperation());
 }
 
 void PrintFormOperation::on_begin_print(
diff --git a/examples/book/progressbar/examplewindow.cc b/examples/book/progressbar/examplewindow.cc
index a541067..b04bf6a 100644
--- a/examples/book/progressbar/examplewindow.cc
+++ b/examples/book/progressbar/examplewindow.cc
@@ -29,9 +29,9 @@ ExampleWindow::ExampleWindow()
   set_title("Gtk::ProgressBar");
 
   m_VBox.set_margin(10);
-  add(m_VBox);
+  set_child(m_VBox);
 
-  m_VBox.add(m_ProgressBar);
+  m_VBox.append(m_ProgressBar);
   m_ProgressBar.set_margin_end(5);
   m_ProgressBar.set_halign(Gtk::Align::CENTER);
   m_ProgressBar.set_valign(Gtk::Align::CENTER);
@@ -43,8 +43,8 @@ ExampleWindow::ExampleWindow()
   m_connection_timeout = Glib::signal_timeout().connect(sigc::mem_fun(*this,
               &ExampleWindow::on_timeout), 50 );
 
-  m_VBox.add(m_Separator);
-  m_VBox.add(m_Grid);
+  m_VBox.append(m_Separator);
+  m_VBox.append(m_Grid);
   m_Grid.set_expand(true);
   m_Grid.set_row_homogeneous(true);
 
@@ -67,7 +67,7 @@ ExampleWindow::ExampleWindow()
               &ExampleWindow::on_checkbutton_inverted) );
 
   //Add a button to exit the program.
-  m_VBox.add(m_Button_Close);
+  m_VBox.append(m_Button_Close);
   m_Button_Close.signal_clicked().connect(sigc::mem_fun(*this,
               &ExampleWindow::on_button_close) );
   set_default_widget(m_Button_Close);
diff --git a/examples/book/range_widgets/examplewindow.cc b/examples/book/range_widgets/examplewindow.cc
index 3693c85..ade6c66 100644
--- a/examples/book/range_widgets/examplewindow.cc
+++ b/examples/book/range_widgets/examplewindow.cc
@@ -64,31 +64,31 @@ ExampleWindow::ExampleWindow()
   m_HScale.set_value_pos(Gtk::PositionType::TOP);
   m_HScale.set_draw_value();
 
-  add(m_VBox_Top);
-  m_VBox_Top.add(m_VBox2);
+  set_child(m_VBox_Top);
+  m_VBox_Top.append(m_VBox2);
   m_VBox2.set_expand(true);
   m_VBox2.set_margin(10);
-  m_VBox2.add(m_HBox_Scales);
+  m_VBox2.append(m_HBox_Scales);
   m_HBox_Scales.set_expand(true);
 
   //Put VScale and HScale (above scrollbar) side-by-side.
-  m_HBox_Scales.add(m_VScale);
+  m_HBox_Scales.append(m_VScale);
   m_VScale.set_expand(true);
-  m_HBox_Scales.add(m_VBox_HScale);
+  m_HBox_Scales.append(m_VBox_HScale);
   m_VBox_HScale.set_expand(true);
 
-  m_VBox_HScale.add(m_HScale);
+  m_VBox_HScale.append(m_HScale);
   m_HScale.set_expand(true);
 
   //Scrollbar:
-  m_VBox_HScale.add(m_Scrollbar);
+  m_VBox_HScale.append(m_Scrollbar);
   m_Scrollbar.set_expand(true);
 
   //CheckButton:
   m_CheckButton.set_active();
   m_CheckButton.signal_toggled().connect( sigc::mem_fun(*this,
     &ExampleWindow::on_checkbutton_toggled) );
-  m_VBox2.add(m_CheckButton);
+  m_VBox2.append(m_CheckButton);
 
   //Position ComboBox:
   //Create the Tree model:
@@ -110,33 +110,33 @@ ExampleWindow::ExampleWindow()
   row[m_Columns.m_col_position_type] = Gtk::PositionType::RIGHT;
   row[m_Columns.m_col_title] = "Right";
 
-  m_VBox2.add(m_HBox_Combo);
-  m_HBox_Combo.add(*Gtk::make_managed<Gtk::Label>("Scale Value Position:", 0));
-  m_HBox_Combo.add(m_ComboBox_Position);
+  m_VBox2.append(m_HBox_Combo);
+  m_HBox_Combo.append(*Gtk::make_managed<Gtk::Label>("Scale Value Position:", 0));
+  m_HBox_Combo.append(m_ComboBox_Position);
   m_ComboBox_Position.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_position) );
   m_ComboBox_Position.set_active(0); // Top
   m_ComboBox_Position.set_expand(true);
 
   //Digits:
-  m_HBox_Digits.add(*Gtk::make_managed<Gtk::Label>("Scale Digits:", 0));
+  m_HBox_Digits.append(*Gtk::make_managed<Gtk::Label>("Scale Digits:", 0));
   m_Scale_Digits.set_digits(0);
   m_Scale_Digits.set_expand(true);
   m_adjustment_digits->signal_value_changed().connect(sigc::mem_fun(*this,
     &ExampleWindow::on_adjustment1_value_changed));
-  m_HBox_Digits.add(m_Scale_Digits);
+  m_HBox_Digits.append(m_Scale_Digits);
 
   //Page Size:
-  m_HBox_PageSize.add(*Gtk::make_managed<Gtk::Label>("Scrollbar Page Size:", 0));
+  m_HBox_PageSize.append(*Gtk::make_managed<Gtk::Label>("Scrollbar Page Size:", 0));
   m_Scale_PageSize.set_digits(0);
   m_Scale_PageSize.set_expand(true);
   m_adjustment_pagesize->signal_value_changed().connect(sigc::mem_fun(*this,
     &ExampleWindow::on_adjustment2_value_changed));
-  m_HBox_PageSize.add(m_Scale_PageSize);
+  m_HBox_PageSize.append(m_Scale_PageSize);
 
-  m_VBox2.add(m_HBox_Digits);
-  m_VBox2.add(m_HBox_PageSize);
-  m_VBox_Top.add(m_Separator);
-  m_VBox_Top.add(m_Button_Quit);
+  m_VBox2.append(m_HBox_Digits);
+  m_VBox2.append(m_HBox_PageSize);
+  m_VBox_Top.append(m_Separator);
+  m_VBox_Top.append(m_Button_Quit);
 
   set_default_widget(m_Button_Quit);
   m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this,
diff --git a/examples/book/recent_files/examplewindow.cc b/examples/book/recent_files/examplewindow.cc
index 8f152e1..74600ad 100644
--- a/examples/book/recent_files/examplewindow.cc
+++ b/examples/book/recent_files/examplewindow.cc
@@ -25,7 +25,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   set_default_size(300, 150);
 
   //We can put a PopoverMenuBar at the top of the box and other stuff below it.
-  add(m_Box);
+  set_child(m_Box);
 
   //Create actions for menus and toolbars:
   m_refActionGroup = Gio::SimpleActionGroup::create();
@@ -118,7 +118,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   {
     //Menubar:
     auto pMenubar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);
-    m_Box.add(*pMenubar);
+    m_Box.append(*pMenubar);
   }
   else
     g_warning("GMenu not found");
@@ -126,7 +126,7 @@ ExampleWindow::ExampleWindow(const Glib::RefPtr<Gtk::Application>& app)
   auto pToolbar = m_refBuilder->get_widget<Gtk::Box>("toolbar");
   if (pToolbar)
     //Toolbar:
-    m_Box.add(*pToolbar);
+    m_Box.append(*pToolbar);
   else
     g_warning("toolbar not found");
 }
@@ -147,16 +147,28 @@ void ExampleWindow::on_menu_file_quit()
 
 void ExampleWindow::on_menu_file_files_dialog()
 {
-  Gtk::FileChooserDialog dialog(*this, "Files", Gtk::FileChooser::Action::OPEN,
-    /* use_header_bar= */ true);
-  dialog.add_button("Select File", Gtk::ResponseType::OK);
-  dialog.add_button("_Cancel", Gtk::ResponseType::CANCEL);
-
-  const int response = dialog.run();
-  dialog.hide();
-  if (response == Gtk::ResponseType::OK)
+  if (!m_pDialog)
   {
-    auto selected_uri = dialog.get_file()->get_uri();
+    m_pDialog.reset(new Gtk::FileChooserDialog(*this, "Files",
+      Gtk::FileChooser::Action::OPEN, /* use_header_bar= */ true));
+    m_pDialog->set_transient_for(*this);
+    m_pDialog->set_modal(true);
+    m_pDialog->signal_response().connect(
+      sigc::mem_fun(*this, &ExampleWindow::on_dialog_response));
+
+    m_pDialog->add_button("Select File", Gtk::ResponseType::OK);
+    m_pDialog->add_button("_Cancel", Gtk::ResponseType::CANCEL);
+  }
+  m_pDialog->show();
+}
+
+void ExampleWindow::on_dialog_response(int response_id)
+{
+  m_pDialog->hide();
+
+  if (response_id == Gtk::ResponseType::OK)
+  {
+    auto selected_uri = m_pDialog->get_file()->get_uri();
     std::cout << "URI selected = " << selected_uri << std::endl;
     std::cout << (m_refRecentManager->has_item(selected_uri) ? "A" : "Not a")
       << " recently used file" << std::endl;
diff --git a/examples/book/recent_files/examplewindow.h b/examples/book/recent_files/examplewindow.h
index 2cfaca9..0ea5255 100644
--- a/examples/book/recent_files/examplewindow.h
+++ b/examples/book/recent_files/examplewindow.h
@@ -18,6 +18,7 @@
 #define GTKMM_EXAMPLEWINDOW_H
 
 #include <gtkmm.h>
+#include <memory>
 
 class ExampleWindow : public Gtk::Window
 {
@@ -30,6 +31,7 @@ protected:
   void on_menu_file_files_dialog();
   void on_menu_file_quit();
   void on_menu_file_new();
+  void on_dialog_response(int response_id);
 
   //Child widgets:
   Gtk::Box m_Box;
@@ -38,6 +40,8 @@ protected:
   Glib::RefPtr<Gio::SimpleActionGroup> m_refActionGroup;
 
   Glib::RefPtr<Gtk::RecentManager> m_refRecentManager;
+
+  std::unique_ptr<Gtk::FileChooserDialog> m_pDialog;
 };
 
 #endif //GTKMM_EXAMPLEWINDOW_H
diff --git a/examples/book/revealer/examplewindow.cc b/examples/book/revealer/examplewindow.cc
index a4b299d..3396c37 100644
--- a/examples/book/revealer/examplewindow.cc
+++ b/examples/book/revealer/examplewindow.cc
@@ -46,20 +46,20 @@ ExampleWindow::ExampleWindow()
   m_controls.attach(m_switch, 1, 2);
 
   // Revealer
-  m_revealer.add(m_label);
+  m_revealer.set_child(m_label);
   m_revealer.set_reveal_child(true);
 
   // Layout
   m_controls.set_row_spacing(6);
   m_controls.set_column_spacing(12);
-  m_vbox.add(m_controls);
-  m_vbox.add(m_separator);
+  m_vbox.append(m_controls);
+  m_vbox.append(m_separator);
   m_separator.set_margin_start(12);
   m_separator.set_margin_end(18);
-  m_vbox.add(m_revealer);
+  m_vbox.append(m_revealer);
   m_revealer.set_expand(true);
   m_vbox.set_margin(12);
-  add(m_vbox);
+  set_child(m_vbox);
 }
 
 ExampleWindow::~ExampleWindow()
diff --git a/examples/book/scrolledwindow/examplewindow.cc b/examples/book/scrolledwindow/examplewindow.cc
index 323f706..46398c0 100644
--- a/examples/book/scrolledwindow/examplewindow.cc
+++ b/examples/book/scrolledwindow/examplewindow.cc
@@ -32,14 +32,14 @@ ExampleWindow::ExampleWindow()
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::ALWAYS);
   m_ScrolledWindow.set_expand();
 
-  get_content_area()->add(m_ScrolledWindow);
+  get_content_area()->append(m_ScrolledWindow);
 
   /* set the spacing to 10 on x and 10 on y */
   m_Grid.set_row_spacing(10);
   m_Grid.set_column_spacing(10);
 
   /* pack the grid into the scrolled window */
-  m_ScrolledWindow.add(m_Grid);
+  m_ScrolledWindow.set_child(m_Grid);
 
   /* this simply creates a grid of toggle buttons
    * to demonstrate the scrolled window. */
diff --git a/examples/book/searchbar/examplewindow.cc b/examples/book/searchbar/examplewindow.cc
index ddf4b0c..a8be0bc 100644
--- a/examples/book/searchbar/examplewindow.cc
+++ b/examples/book/searchbar/examplewindow.cc
@@ -56,13 +56,13 @@ ExampleWindow::ExampleWindow()
   m_options_grid.attach(m_close_button_switch, 1, 1);
 
   // Searchbar Layout
-  m_search_box.add(m_entry);
+  m_search_box.append(m_entry);
   m_entry.set_expand();
-  m_up_down_box.add(m_go_down_button);
-  m_up_down_box.add(m_go_up_button);
-  m_search_box.add(m_up_down_box);
+  m_up_down_box.append(m_go_down_button);
+  m_up_down_box.append(m_go_up_button);
+  m_search_box.append(m_up_down_box);
   m_search_box.set_spacing(6);
-  m_search_bar.add(m_search_box);
+  m_search_bar.set_child(m_search_box);
 
   // Match style of epiphany's search bar
   m_up_down_box.get_style_context()->add_class("raised");
@@ -73,16 +73,16 @@ ExampleWindow::ExampleWindow()
   m_go_down_button.set_image_from_icon_name("go-down-symbolic", Gtk::IconSize::INHERIT, true);
 
   m_vbox.set_spacing(6);
-  m_vbox.add(m_search_bar);
-  m_vbox.add(m_label);
-  m_vbox.add(m_separator);
+  m_vbox.append(m_search_bar);
+  m_vbox.append(m_label);
+  m_vbox.append(m_separator);
   m_separator.set_margin_start(6);
   m_separator.set_margin_end(6);
-  m_vbox.add(m_options_grid);
+  m_vbox.append(m_options_grid);
   m_options_grid.set_margin_start(6);
   m_options_grid.set_margin_end(6);
   m_vbox.set_margin(12);
-  add(m_vbox);
+  set_child(m_vbox);
 }
 
 ExampleWindow::~ExampleWindow()
diff --git a/examples/book/spinbutton/examplewindow.cc b/examples/book/spinbutton/examplewindow.cc
index 18bae97..ddf5ebc 100644
--- a/examples/book/spinbutton/examplewindow.cc
+++ b/examples/book/spinbutton/examplewindow.cc
@@ -54,86 +54,86 @@ ExampleWindow::ExampleWindow()
   set_title("SpinButton");
 
   m_VBox_Main.set_margin(10);
-  add(m_VBox_Main);
+  set_child(m_VBox_Main);
 
-  m_VBox_Main.add(m_Frame_NotAccelerated);
+  m_VBox_Main.append(m_Frame_NotAccelerated);
 
   m_VBox.set_margin(5);
-  m_Frame_NotAccelerated.add(m_VBox);
+  m_Frame_NotAccelerated.set_child(m_VBox);
 
   /* Day, month, year spinners */
 
   m_VBox.set_spacing(5);
-  m_VBox.add(m_HBox_NotAccelerated);
+  m_VBox.append(m_HBox_NotAccelerated);
 
   m_Label_Day.set_expand();
-  m_VBox_Day.add(m_Label_Day);
+  m_VBox_Day.append(m_Label_Day);
 
   m_SpinButton_Day.set_wrap();
   m_SpinButton_Day.set_expand();
-  m_VBox_Day.add(m_SpinButton_Day);
+  m_VBox_Day.append(m_SpinButton_Day);
 
   m_HBox_NotAccelerated.set_spacing(5);
-  m_HBox_NotAccelerated.add(m_VBox_Day);
+  m_HBox_NotAccelerated.append(m_VBox_Day);
 
   m_Label_Month.set_expand();
-  m_VBox_Month.add(m_Label_Month);
+  m_VBox_Month.append(m_Label_Month);
 
   m_SpinButton_Month.set_wrap();
   m_SpinButton_Month.set_expand();
-  m_VBox_Month.add(m_SpinButton_Month);
+  m_VBox_Month.append(m_SpinButton_Month);
 
-  m_HBox_NotAccelerated.add(m_VBox_Month);
+  m_HBox_NotAccelerated.append(m_VBox_Month);
 
   m_Label_Year.set_expand();
-  m_VBox_Year.add(m_Label_Year);
+  m_VBox_Year.append(m_Label_Year);
 
   m_SpinButton_Year.set_wrap();
   m_SpinButton_Year.set_expand();
   m_SpinButton_Year.set_size_request(55, -1);
-  m_VBox_Year.add(m_SpinButton_Year);
+  m_VBox_Year.append(m_SpinButton_Year);
 
-  m_HBox_NotAccelerated.add(m_VBox_Year);
+  m_HBox_NotAccelerated.append(m_VBox_Year);
 
   //Accelerated:
-  m_VBox_Main.add(m_Frame_Accelerated);
+  m_VBox_Main.append(m_Frame_Accelerated);
 
   m_VBox_Accelerated.set_margin(5);
-  m_Frame_Accelerated.add(m_VBox_Accelerated);
+  m_Frame_Accelerated.set_child(m_VBox_Accelerated);
 
   m_VBox_Accelerated.set_spacing(5);
-  m_VBox_Accelerated.add(m_HBox_Accelerated);
+  m_VBox_Accelerated.append(m_HBox_Accelerated);
 
-  m_HBox_Accelerated.add(m_VBox_Value);
+  m_HBox_Accelerated.append(m_VBox_Value);
 
   m_Label_Value.set_expand();
-  m_VBox_Value.add(m_Label_Value);
+  m_VBox_Value.append(m_Label_Value);
 
   m_SpinButton_Value.set_wrap();
   m_SpinButton_Value.set_expand();
   m_SpinButton_Value.set_size_request(100, -1);
-  m_VBox_Value.add(m_SpinButton_Value);
+  m_VBox_Value.append(m_SpinButton_Value);
 
-  m_HBox_Accelerated.add(m_VBox_Digits);
+  m_HBox_Accelerated.append(m_VBox_Digits);
 
-  m_VBox_Digits.add(m_Label_Digits);
+  m_VBox_Digits.append(m_Label_Digits);
   m_Label_Digits.set_expand();
 
   m_SpinButton_Digits.set_wrap();
   m_adjustment_digits->signal_value_changed().connect( sigc::mem_fun(*this,
               &ExampleWindow::on_spinbutton_digits_changed) );
 
-  m_VBox_Digits.add(m_SpinButton_Digits);
+  m_VBox_Digits.append(m_SpinButton_Digits);
   m_SpinButton_Digits.set_expand();
 
   //CheckButtons:
-  m_VBox_Accelerated.add(m_CheckButton_Snap);
+  m_VBox_Accelerated.append(m_CheckButton_Snap);
   m_CheckButton_Snap.set_expand();
   m_CheckButton_Snap.set_active();
   m_CheckButton_Snap.signal_clicked().connect( sigc::mem_fun(*this,
               &ExampleWindow::on_checkbutton_snap) );
 
-  m_VBox_Accelerated.add(m_CheckButton_Numeric);
+  m_VBox_Accelerated.append(m_CheckButton_Numeric);
   m_CheckButton_Numeric.set_expand();
   m_CheckButton_Numeric.set_active();
   m_CheckButton_Numeric.signal_clicked().connect( sigc::mem_fun(*this,
@@ -141,27 +141,27 @@ ExampleWindow::ExampleWindow()
 
 
   //Buttons:
-  m_VBox_Accelerated.add(m_HBox_Buttons);
+  m_VBox_Accelerated.append(m_HBox_Buttons);
 
   m_Button_Int.signal_clicked().connect( sigc::bind( sigc::mem_fun(*this,
                   &ExampleWindow::on_button_getvalue), VALUE_FORMAT_INT) );
   m_HBox_Buttons.set_spacing(5);
-  m_HBox_Buttons.add(m_Button_Int);
+  m_HBox_Buttons.append(m_Button_Int);
   m_Button_Int.set_expand();
 
   m_Button_Float.signal_clicked().connect( sigc::bind( sigc::mem_fun(*this,
                   &ExampleWindow::on_button_getvalue), VALUE_FORMAT_FLOAT) );
-  m_HBox_Buttons.add(m_Button_Float);
+  m_HBox_Buttons.append(m_Button_Float);
   m_Button_Float.set_expand();
 
-  m_VBox_Accelerated.add(m_Label_ShowValue);
+  m_VBox_Accelerated.append(m_Label_ShowValue);
   m_Label_ShowValue.set_expand();
   m_Label_ShowValue.set_text("0");
 
   //Close button:
   m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this,
               &ExampleWindow::on_button_close) );
-  m_VBox_Main.add(m_Button_Close);
+  m_VBox_Main.append(m_Button_Close);
 }
 
 ExampleWindow::~ExampleWindow()
diff --git a/examples/book/textview/examplewindow.cc b/examples/book/textview/examplewindow.cc
index 1d1e97e..0a66303 100644
--- a/examples/book/textview/examplewindow.cc
+++ b/examples/book/textview/examplewindow.cc
@@ -26,25 +26,25 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TextView);
+  m_ScrolledWindow.set_child(m_TextView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
+  m_VBox.append(m_ScrolledWindow);
 
-  //Add buttons:
-  m_VBox.add(m_ButtonBox);
+  //append buttons:
+  m_VBox.append(m_ButtonBox);
 
   m_Button_Buffer1.set_hexpand(true);
   m_Button_Buffer1.set_halign(Gtk::Align::END);
-  m_ButtonBox.add(m_Button_Buffer1);
-  m_ButtonBox.add(m_Button_Buffer2);
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Buffer1);
+  m_ButtonBox.append(m_Button_Buffer2);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_ButtonBox.set_spacing(5);
 
diff --git a/examples/book/timeout/timerexample.cc b/examples/book/timeout/timerexample.cc
index dc18e5d..c848f82 100644
--- a/examples/book/timeout/timerexample.cc
+++ b/examples/book/timeout/timerexample.cc
@@ -26,12 +26,13 @@ TimerExample::TimerExample() :
   timeout_value(1500) // 1500 ms = 1.5 seconds
 {
   m_Box.set_margin(10);
-  add(m_Box);
-  m_Box.add(m_ButtonAddTimer);
-  m_Box.add(m_ButtonDeleteTimer);
-  m_Box.add(m_ButtonQuit);
-  for (auto child : m_Box.get_children())
-    child->set_expand();
+  set_child(m_Box);
+  m_Box.append(m_ButtonAddTimer);
+  m_Box.append(m_ButtonDeleteTimer);
+  m_Box.append(m_ButtonQuit);
+  m_ButtonAddTimer.set_expand();
+  m_ButtonDeleteTimer.set_expand();
+  m_ButtonQuit.set_expand();
 
   // Connect the three buttons:
   m_ButtonQuit.signal_clicked().connect(sigc::mem_fun(*this,
diff --git a/examples/book/toolbar/examplewindow.cc b/examples/book/toolbar/examplewindow.cc
index fcd18c5..585233b 100644
--- a/examples/book/toolbar/examplewindow.cc
+++ b/examples/book/toolbar/examplewindow.cc
@@ -25,14 +25,14 @@ ExampleWindow::ExampleWindow()
   //The toolbar will not demand any size, because it has an overflow menu.
   set_size_request(300, 200);
 
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Put a toolbar at the top, and a button underneath:
-  m_VBox.add(m_Toolbar);
+  m_VBox.append(m_Toolbar);
   m_ButtonBox.set_margin(5);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Close);
+  m_ButtonBox.append(m_Button_Close);
   m_Button_Close.set_expand(true);
   m_Button_Close.set_halign(Gtk::Align::END);
   m_Button_Close.set_valign(Gtk::Align::END);
@@ -48,30 +48,30 @@ ExampleWindow::ExampleWindow()
 
     auto item = Gtk::make_managed<Gtk::Button>("Click me");
     item->set_tooltip_text("Toolbar item");
-    m_Toolbar.add(*item);
+    m_Toolbar.append(*item);
     item->signal_clicked().connect( sigc::mem_fun(*this,
                 &ExampleWindow::on_toolbar_item) );
 
-    m_Toolbar.add(*Gtk::make_managed<Gtk::Separator>());
+    m_Toolbar.append(*Gtk::make_managed<Gtk::Separator>());
 
     item = Gtk::make_managed<Gtk::Button>("_Save");
     item->set_use_underline();
     item->set_tooltip_text("Save");
     item->set_icon_name("document-save");
-    m_Toolbar.add(*item);
+    m_Toolbar.append(*item);
     item->signal_clicked().connect( sigc::mem_fun(*this,
                 &ExampleWindow::on_toolbar_item) );
 
     item = Gtk::make_managed<Gtk::ToggleButton>("Toggle me");
     item->set_tooltip_text("toggle duh");
-    m_Toolbar.add(*item);
+    m_Toolbar.append(*item);
     item->signal_clicked().connect( sigc::mem_fun(*this,
                 &ExampleWindow::on_toolbar_item) );
 
     Gtk::RadioButtonGroup group;
-    m_Toolbar.add(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 1"));
-    m_Toolbar.add(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 2"));
-    m_Toolbar.add(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 3"));
+    m_Toolbar.append(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 1"));
+    m_Toolbar.append(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 2"));
+    m_Toolbar.append(*Gtk::make_managed<Gtk::RadioButton>(group, "Radio 3"));
   }
 }
 
diff --git a/examples/book/tooltips/examplewindow.cc b/examples/book/tooltips/examplewindow.cc
index 621f456..65cc62e 100644
--- a/examples/book/tooltips/examplewindow.cc
+++ b/examples/book/tooltips/examplewindow.cc
@@ -32,15 +32,15 @@ ExampleWindow::ExampleWindow()
   set_title(app_title);
 
   m_vbox.set_margin(10);
-  add(m_vbox);
+  set_child(m_vbox);
 
   //Check button with markup in tooltip:
   m_checkbutton.set_tooltip_text(non_markedup_tip);
-  m_vbox.add(m_checkbutton);
+  m_vbox.append(m_checkbutton);
 
   //Label:
   m_label.set_tooltip_text("Another tooltip");
-  m_vbox.add(m_label);
+  m_vbox.append(m_label);
 
   //Textview:
   prepare_textview();
@@ -50,11 +50,11 @@ ExampleWindow::ExampleWindow()
   //of set_tooltip_text() or set_tooltip_markup(), we need to explicitly
   //tell GTK that the widget has a tooltip which we'll show.
   m_button.set_has_tooltip();
-  m_vbox.add(m_button);
+  m_vbox.append(m_button);
 
   //Button's custom tooltip widget:
   auto label = Gtk::make_managed<Gtk::Label>("A label in a custom tooltip widget");
-  m_button_tooltip_widget.add(*label);
+  m_button_tooltip_widget.append(*label);
 
   connect_signals();
 }
@@ -69,10 +69,10 @@ void ExampleWindow::prepare_textview()
   std::vector<Glib::RefPtr<Gtk::TextTag>> tags;
 
   //Set up a scrolled window:
-  m_scrolled_window.add(m_text_view);
+  m_scrolled_window.set_child(m_text_view);
   m_scrolled_window.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_scrolled_window.set_expand();
-  m_vbox.add(m_scrolled_window);
+  m_vbox.append(m_scrolled_window);
 
   //Create a text buffer with some text:
   m_ref_text_buffer = Gtk::TextBuffer::create();
diff --git a/examples/book/treeview/combo_renderer/examplewindow.cc 
b/examples/book/treeview/combo_renderer/examplewindow.cc
index cde9ea7..d50112e 100644
--- a/examples/book/treeview/combo_renderer/examplewindow.cc
+++ b/examples/book/treeview/combo_renderer/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/custom_treemodel/exampletreemodel.cc 
b/examples/book/treeview/custom_treemodel/exampletreemodel.cc
index fafb61c..f9866f9 100644
--- a/examples/book/treeview/custom_treemodel/exampletreemodel.cc
+++ b/examples/book/treeview/custom_treemodel/exampletreemodel.cc
@@ -103,7 +103,7 @@ MemoryTreeModel::~MemoryTreeModel()
 
 Glib::RefPtr<MemoryTreeModel> MemoryTreeModel::create()
 {
-  return Glib::RefPtr<MemoryTreeModel>(new MemoryTreeModel);
+  return Glib::make_refptr_for_instance<MemoryTreeModel>(new MemoryTreeModel);
 }
 
 void MemoryTreeModel::set_memory(const Memory* m)
diff --git a/examples/book/treeview/custom_treemodel/examplewindow.cc 
b/examples/book/treeview/custom_treemodel/examplewindow.cc
index 9d9aeba..7144463 100644
--- a/examples/book/treeview/custom_treemodel/examplewindow.cc
+++ b/examples/book/treeview/custom_treemodel/examplewindow.cc
@@ -28,25 +28,25 @@ ExampleWindow::ExampleWindow()
   set_default_size(650, 400);
 
   m_VBox.set_margin(8);
-  add(m_VBox);
-  m_VBox.add(m_Label);
+  set_child(m_VBox);
+  m_VBox.append(m_Label);
 
   // Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   // Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_has_frame(true);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
   m_Button_Add.set_hexpand(true);
   m_Button_Add.set_halign(Gtk::Align::END);
-  m_ButtonBox.add(m_Button_Add);
-  m_ButtonBox.add(m_Button_Remove);
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Add);
+  m_ButtonBox.append(m_Button_Remove);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_ButtonBox.set_spacing(5);
 
diff --git a/examples/book/treeview/drag_and_drop/examplewindow.cc 
b/examples/book/treeview/drag_and_drop/examplewindow.cc
index a6bcb3c..3a3a44f 100644
--- a/examples/book/treeview/drag_and_drop/examplewindow.cc
+++ b/examples/book/treeview/drag_and_drop/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/drag_and_drop/treemodel_dnd.cc 
b/examples/book/treeview/drag_and_drop/treemodel_dnd.cc
index 54bc93b..798e5c0 100644
--- a/examples/book/treeview/drag_and_drop/treemodel_dnd.cc
+++ b/examples/book/treeview/drag_and_drop/treemodel_dnd.cc
@@ -29,7 +29,7 @@ TreeModel_Dnd::TreeModel_Dnd()
 
 Glib::RefPtr<TreeModel_Dnd> TreeModel_Dnd::create()
 {
-  return Glib::RefPtr<TreeModel_Dnd>( new TreeModel_Dnd() );
+  return Glib::make_refptr_for_instance<TreeModel_Dnd>( new TreeModel_Dnd() );
 }
 
 bool
diff --git a/examples/book/treeview/editable_cells/examplewindow.cc 
b/examples/book/treeview/editable_cells/examplewindow.cc
index 0fbb8e6..ad0cd8f 100644
--- a/examples/book/treeview/editable_cells/examplewindow.cc
+++ b/examples/book/treeview/editable_cells/examplewindow.cc
@@ -31,19 +31,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
@@ -87,7 +87,7 @@ ExampleWindow::ExampleWindow()
   //For this column, we create the CellRenderer ourselves, and connect our own
   //signal handlers, so that we can validate the data that the user enters, and
   //control how it is displayed.
-  m_treeviewcolumn_validated.set_title("validated (<10)");
+  m_treeviewcolumn_validated.set_title("validated (&lt;10)");
   m_treeviewcolumn_validated.pack_start(m_cellrenderer_validated);
   m_TreeView.append_column(m_treeviewcolumn_validated);
 
@@ -159,7 +159,6 @@ void ExampleWindow::cellrenderer_validated_on_editing_started(
       m_invalid_text_for_retry.clear();
     }
   }
-
 }
 
 void ExampleWindow::cellrenderer_validated_on_edited(
@@ -172,15 +171,18 @@ void ExampleWindow::cellrenderer_validated_on_edited(
   char* pchEnd = nullptr;
   int new_value = strtol(new_text.c_str(), &pchEnd, 10);
 
-  if(new_value > 10)
+  if(new_value >= 10)
   {
     //Prevent entry of numbers higher than 10.
 
     //Tell the user:
-    Gtk::MessageDialog dialog(*this,
+    auto dialog = new Gtk::MessageDialog(*this,
             "The number must be less than 10. Please try again.",
-            false, Gtk::MessageType::ERROR);
-    dialog.run();
+            false, Gtk::MessageType::ERROR, Gtk::ButtonsType::OK, true /* modal */);
+    dialog->signal_response().connect(sigc::bind(
+      sigc::mem_fun(*this, &ExampleWindow::on_message_response), dialog));
+
+    dialog->show();
 
     //Start editing again, with the bad text, so that the user can correct it.
     //A real application should probably allow the user to revert to the
@@ -190,7 +192,7 @@ void ExampleWindow::cellrenderer_validated_on_edited(
     m_invalid_text_for_retry = new_text;
     m_validate_retry = true;
 
-    //Start editing again:
+    //Start editing again, when the message dialog has been closed:
     m_TreeView.set_cursor(path, m_treeviewcolumn_validated,
             m_cellrenderer_validated, true /* start_editing */);
   }
@@ -208,3 +210,7 @@ void ExampleWindow::cellrenderer_validated_on_edited(
   }
 }
 
+void ExampleWindow::on_message_response(int /* response_id */, Gtk::MessageDialog* dialog)
+{
+  delete dialog;
+}
diff --git a/examples/book/treeview/editable_cells/examplewindow.h 
b/examples/book/treeview/editable_cells/examplewindow.h
index b3dd4d9..ab91ed8 100644
--- a/examples/book/treeview/editable_cells/examplewindow.h
+++ b/examples/book/treeview/editable_cells/examplewindow.h
@@ -32,6 +32,7 @@ protected:
   void treeviewcolumn_validated_on_cell_data(Gtk::CellRenderer* renderer, const 
Gtk::TreeModel::const_iterator& iter);
   void cellrenderer_validated_on_editing_started(Gtk::CellEditable* cell_editable, const Glib::ustring& 
path);
   void cellrenderer_validated_on_edited(const Glib::ustring& path_string, const Glib::ustring& new_text);
+  void on_message_response(int response_id, Gtk::MessageDialog* dialog);
 
   //Tree model columns:
   class ModelColumns : public Gtk::TreeModel::ColumnRecord
diff --git a/examples/book/treeview/filter/examplewindow.cc b/examples/book/treeview/filter/examplewindow.cc
index 670a7c2..73c9120 100644
--- a/examples/book/treeview/filter/examplewindow.cc
+++ b/examples/book/treeview/filter/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/filter_modify/examplewindow.cc 
b/examples/book/treeview/filter_modify/examplewindow.cc
index d3e2e77..fae5083 100644
--- a/examples/book/treeview/filter_modify/examplewindow.cc
+++ b/examples/book/treeview/filter_modify/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/list/examplewindow.cc b/examples/book/treeview/list/examplewindow.cc
index 583c6e4..6b4f592 100644
--- a/examples/book/treeview/list/examplewindow.cc
+++ b/examples/book/treeview/list/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/listviewtext/examplewindow.cc 
b/examples/book/treeview/listviewtext/examplewindow.cc
index 33e58c5..30fea67 100644
--- a/examples/book/treeview/listviewtext/examplewindow.cc
+++ b/examples/book/treeview/listviewtext/examplewindow.cc
@@ -26,19 +26,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(6);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_ListViewText);
+  m_ScrolledWindow.set_child(m_ListViewText);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/modelsort/examplewindow.cc 
b/examples/book/treeview/modelsort/examplewindow.cc
index cbda0f7..5872b15 100644
--- a/examples/book/treeview/modelsort/examplewindow.cc
+++ b/examples/book/treeview/modelsort/examplewindow.cc
@@ -26,11 +26,11 @@ ExampleWindow::ExampleWindow()
 
   m_VBox.set_margin(6);
   m_VBox.set_spacing(6);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeViews, inside ScrolledWindows, with the button underneath:
-  m_ScrolledWindow1.add(m_TreeView1);
-  m_ScrolledWindow2.add(m_TreeView2);
+  m_ScrolledWindow1.set_child(m_TreeView1);
+  m_ScrolledWindow2.set_child(m_TreeView2);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow1.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
@@ -38,11 +38,11 @@ ExampleWindow::ExampleWindow()
   m_ScrolledWindow1.set_expand();
   m_ScrolledWindow2.set_expand();
 
-  m_VBox.add(m_ScrolledWindow1);
-  m_VBox.add(m_ScrolledWindow2);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow1);
+  m_VBox.append(m_ScrolledWindow2);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/popup/examplewindow.cc b/examples/book/treeview/popup/examplewindow.cc
index b62427d..64b887c 100644
--- a/examples/book/treeview/popup/examplewindow.cc
+++ b/examples/book/treeview/popup/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/treeview/tree/examplewindow.cc b/examples/book/treeview/tree/examplewindow.cc
index 9201b2a..53bf2b4 100644
--- a/examples/book/treeview/tree/examplewindow.cc
+++ b/examples/book/treeview/tree/examplewindow.cc
@@ -25,19 +25,19 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, 200);
 
   m_VBox.set_margin(5);
-  add(m_VBox);
+  set_child(m_VBox);
 
   //Add the TreeView, inside a ScrolledWindow, with the button underneath:
-  m_ScrolledWindow.add(m_TreeView);
+  m_ScrolledWindow.set_child(m_TreeView);
 
   //Only show the scrollbars when they are necessary:
   m_ScrolledWindow.set_policy(Gtk::PolicyType::AUTOMATIC, Gtk::PolicyType::AUTOMATIC);
   m_ScrolledWindow.set_expand();
 
-  m_VBox.add(m_ScrolledWindow);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ScrolledWindow);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Quit);
   m_ButtonBox.set_margin(5);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);
diff --git a/examples/book/update_ui/examplewindow.cc b/examples/book/update_ui/examplewindow.cc
index 3a7b3e5..3a019e0 100644
--- a/examples/book/update_ui/examplewindow.cc
+++ b/examples/book/update_ui/examplewindow.cc
@@ -26,14 +26,14 @@ ExampleWindow::ExampleWindow()
   set_default_size(400, -1);
 
   m_VBox.set_margin(6);
-  add(m_VBox);
+  set_child(m_VBox);
 
   m_ProgressBar.set_show_text(true);
-  m_VBox.add(m_ProgressBar);
-  m_VBox.add(m_ButtonBox);
+  m_VBox.append(m_ProgressBar);
+  m_VBox.append(m_ButtonBox);
 
-  m_ButtonBox.add(m_Button_Quit);
-  m_ButtonBox.add(m_Button_Start);
+  m_ButtonBox.append(m_Button_Quit);
+  m_ButtonBox.append(m_Button_Start);
   m_ButtonBox.set_margin(6);
   m_Button_Quit.set_hexpand(true);
   m_Button_Quit.set_halign(Gtk::Align::END);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]