[glom/gtkmm4v4] gtkmm4: Adapt to RefPtr as std::shared_ptr.



commit c68a0fa706387090fbb3b168ee19638eeb86934b
Author: Murray Cumming <murrayc murrayc com>
Date:   Sat Apr 15 16:19:13 2017 +0200

    gtkmm4: Adapt to RefPtr as std::shared_ptr.

 glom/appwindow.cc                                  |   14 ++---
 glom/mode_data/box_data_list.cc                    |    4 +-
 glom/mode_data/box_data_list_related.cc            |    2 +-
 glom/mode_data/datawidget/cellrenderer_dblist.cc   |    4 +-
 glom/mode_data/datawidget/combo.cc                 |    4 +-
 .../datawidget/combochoiceswithtreemodel.cc        |    4 +-
 glom/mode_data/datawidget/treemodel_db.cc          |    2 +-
 .../datawidget/treemodel_db_withextratext.cc       |    2 +-
 glom/mode_data/db_adddel/db_adddel.cc              |    4 +-
 .../print_layouts/window_print_layout_edit.cc      |    4 +-
 .../window_relationships_overview.cc               |    8 ++--
 .../report_layout/dialog_layout_report.cc          |    6 +-
 glom/print_layout/canvas_layout_item.cc            |   12 ++--
 glom/print_layout/canvas_print_layout.cc           |   22 ++++----
 glom/utility_widgets/canvas/canvas_editable.cc     |    8 ++--
 .../canvas/canvas_group_resizable.cc               |   18 +++---
 glom/utility_widgets/canvas/canvas_item_movable.cc |   58 ++++++++++----------
 17 files changed, 86 insertions(+), 90 deletions(-)
---
diff --git a/glom/appwindow.cc b/glom/appwindow.cc
index 795f7b1..b596c6f 100644
--- a/glom/appwindow.cc
+++ b/glom/appwindow.cc
@@ -114,8 +114,7 @@ AppWindow::AppWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>&
   //Add menu bar at the top:
   auto object =
     builder->get_object("mainmenu");
-  auto gmenu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+  auto gmenu = std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!gmenu)
     g_warning("GMenu not found");
 
@@ -1813,8 +1812,7 @@ void AppWindow::fill_menu_tables()
 
   auto object =
     m_builder->get_object("tables-list");
-  auto menu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+  auto menu = std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!menu)
   {
     std::cerr << G_STRFUNC << ": GMenu not found\n";
@@ -1859,8 +1857,7 @@ void AppWindow::fill_menu_reports(const Glib::ustring& table_name)
   //Remove existing items.
   auto object =
     m_builder->get_object("reports-list");
-  auto menu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+  auto menu = std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!menu)
   {
     std::cerr << G_STRFUNC << ": GMenu not found\n";
@@ -1924,7 +1921,7 @@ void AppWindow::enable_menu_print_layouts_details(bool enable)
   for(const auto& name : m_nav_print_layouts_action_group->list_actions())
   {
     auto action =
-      Glib::RefPtr<Gio::SimpleAction>::cast_dynamic(m_nav_print_layouts_action_group->lookup_action(name));
+      std::dynamic_pointer_cast<Gio::SimpleAction>(m_nav_print_layouts_action_group->lookup_action(name));
     if(action)
       action->set_enabled(enable);
   }
@@ -1939,8 +1936,7 @@ void AppWindow::fill_menu_print_layouts(const Glib::ustring& table_name)
   //Remove existing items.
   auto object =
     m_builder->get_object("print-layouts-list");
-  auto menu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+  auto menu = std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!menu)
   {
     std::cerr << G_STRFUNC << ": GMenu not found\n";
diff --git a/glom/mode_data/box_data_list.cc b/glom/mode_data/box_data_list.cc
index ef7ad7d..c1cb2e7 100644
--- a/glom/mode_data/box_data_list.cc
+++ b/glom/mode_data/box_data_list.cc
@@ -206,7 +206,7 @@ bool Box_Data_List::on_script_button_idle(const std::weak_ptr<const LayoutItem_B
   // TODO: This is perhaps a better approach, but
   // DbTreeModel::refresh_from_database is protected
   auto model = m_AddDel.get_model();
-  auto db_model = Glib::RefPtr<DbTreeModel>::cast_dynamic(model);
+  auto db_model = std::dynamic_pointer_cast<DbTreeModel>(model);
   if(db_model)
     db_model->refresh_from_database(m_found_set);
 #endif
@@ -491,7 +491,7 @@ void Box_Data_List::get_record_counts(gulong& total, gulong& found) const
   found = 0;
 
   auto refModel = m_AddDel.get_model();
-  auto refModelDerived = Glib::RefPtr<DbTreeModel>::cast_dynamic(refModel);
+  auto refModelDerived = std::dynamic_pointer_cast<DbTreeModel>(refModel);
 
   if(refModelDerived)
     refModelDerived->get_record_counts(total, found);
diff --git a/glom/mode_data/box_data_list_related.cc b/glom/mode_data/box_data_list_related.cc
index 697e0c6..105baa3 100644
--- a/glom/mode_data/box_data_list_related.cc
+++ b/glom/mode_data/box_data_list_related.cc
@@ -243,7 +243,7 @@ bool Box_Data_List_Related::on_script_button_idle(const std::shared_ptr<const La
   // TODO: This is perhaps a better approach, but
   // DbTreeModel::refresh_from_database is protected
   auto model = m_AddDel.get_model();
-  auto db_model = Glib::RefPtr<DbTreeModel>::cast_dynamic(model);
+  auto db_model = std::dynamic_pointer_cast<DbTreeModel>(model);
   if(db_model)
     db_model->refresh_from_database(m_found_set);
 #endif
diff --git a/glom/mode_data/datawidget/cellrenderer_dblist.cc 
b/glom/mode_data/datawidget/cellrenderer_dblist.cc
index 26d506f..e565dc5 100644
--- a/glom/mode_data/datawidget/cellrenderer_dblist.cc
+++ b/glom/mode_data/datawidget/cellrenderer_dblist.cc
@@ -62,7 +62,7 @@ void CellRendererDbList::set_choices_related(const std::shared_ptr<const Documen
   property_model() = model;
 
   auto model_db =
-    Glib::RefPtr<DbTreeModelWithExtraText>::cast_dynamic(model);
+    std::dynamic_pointer_cast<DbTreeModelWithExtraText>(model);
   if(model_db)
     property_text_column() = model_db->get_text_column();
   else
@@ -221,7 +221,7 @@ void CellRendererDbList::on_editing_started(Gtk::CellEditable* cell_editable, co
   //The DB model has a special virtual text column,
   //and the simple model just has text in all columns:
   auto model_db =
-    Glib::RefPtr<DbTreeModelWithExtraText>::cast_dynamic(get_choices_model());
+    std::dynamic_pointer_cast<DbTreeModelWithExtraText>(get_choices_model());
   if(model_db)
     repack_cells_related(combobox);
   else
diff --git a/glom/mode_data/datawidget/combo.cc b/glom/mode_data/datawidget/combo.cc
index 6d8c705..b3d5d49 100644
--- a/glom/mode_data/datawidget/combo.cc
+++ b/glom/mode_data/datawidget/combo.cc
@@ -97,7 +97,7 @@ void ComboGlom::set_choices_fixed(const Formatting::type_list_values& list_value
   }
 
   auto cell_area =
-    Glib::RefPtr<Gtk::CellAreaBox>::cast_dynamic(get_area());
+    std::dynamic_pointer_cast<Gtk::CellAreaBox>(get_area());
   if(!cell_area)
   {
     std::cerr << G_STRFUNC << ": Unexpected or null CellArea type.\n";
@@ -159,7 +159,7 @@ void ComboGlom::set_choices_related(const std::shared_ptr<const Document>& docum
   if(get_has_entry())
   {
     auto model_db =
-      Glib::RefPtr<DbTreeModelWithExtraText>::cast_dynamic(model);
+      std::dynamic_pointer_cast<DbTreeModelWithExtraText>(model);
     if(model_db)
     {
       const auto text_col = model_db->get_text_column();
diff --git a/glom/mode_data/datawidget/combochoiceswithtreemodel.cc 
b/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
index e9f06cf..cb790cb 100644
--- a/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
+++ b/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
@@ -129,7 +129,7 @@ void ComboChoicesWithTreeModel::set_choices_with_second(const type_list_values_w
   if(layout_choice_extra)
     extra_fields = layout_choice_extra->get_items_recursive();
 
-  auto list_store = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(m_model);
+  auto list_store = std::dynamic_pointer_cast<Gtk::ListStore>(m_model);
   if(!list_store)
   {
     std::cerr << G_STRFUNC << ": list_store is null.\n";
@@ -184,7 +184,7 @@ void ComboChoicesWithTreeModel::set_choices_fixed(const Formatting::type_list_va
 {
   create_model_non_db(1); //Use a regular ListStore without a dynamic column?
 
-  auto list_store = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(m_model);
+  auto list_store = std::dynamic_pointer_cast<Gtk::ListStore>(m_model);
   if(!list_store)
   {
     std::cerr << G_STRFUNC << ": list_store is null.\n";
diff --git a/glom/mode_data/datawidget/treemodel_db.cc b/glom/mode_data/datawidget/treemodel_db.cc
index f9096b4..b5d0e45 100644
--- a/glom/mode_data/datawidget/treemodel_db.cc
+++ b/glom/mode_data/datawidget/treemodel_db.cc
@@ -274,7 +274,7 @@ DbTreeModel::~DbTreeModel()
 
 Glib::RefPtr<DbTreeModel> DbTreeModel::create(const FoundSet& found_set, const type_vec_const_layout_items& 
layout_items, bool get_records, bool find_mode, Base_DB::type_vecConstLayoutFields& fields_shown)
 {
-  return Glib::RefPtr<DbTreeModel>( new DbTreeModel(found_set, layout_items, get_records, find_mode, 
fields_shown) );
+  return Glib::make_refptr_for_instance<DbTreeModel>( new DbTreeModel(found_set, layout_items, get_records, 
find_mode, fields_shown) );
 }
 
 Glib::RefPtr<DbTreeModel> DbTreeModel::create(const FoundSet& found_set, const type_vec_layout_items& 
layout_items, bool get_records, bool find_mode, Base_DB::type_vecConstLayoutFields& fields_shown)
diff --git a/glom/mode_data/datawidget/treemodel_db_withextratext.cc 
b/glom/mode_data/datawidget/treemodel_db_withextratext.cc
index 8eb4621..06b4f0d 100644
--- a/glom/mode_data/datawidget/treemodel_db_withextratext.cc
+++ b/glom/mode_data/datawidget/treemodel_db_withextratext.cc
@@ -74,7 +74,7 @@ Glib::RefPtr<DbTreeModelWithExtraText> DbTreeModelWithExtraText::create(const Fo
 
 Glib::RefPtr<DbTreeModelWithExtraText> DbTreeModelWithExtraText::create(const FoundSet& found_set, const 
type_vec_const_layout_items& layout_items, bool get_records, bool find_mode, 
Base_DB::type_vecConstLayoutFields& fields_shown)
 {
-  return Glib::RefPtr<DbTreeModelWithExtraText>( new DbTreeModelWithExtraText(found_set, layout_items, 
get_records, find_mode, fields_shown) );
+  return Glib::make_refptr_for_instance<DbTreeModelWithExtraText>( new DbTreeModelWithExtraText(found_set, 
layout_items, get_records, find_mode, fields_shown) );
 }
 
 int DbTreeModelWithExtraText::get_n_columns_vfunc() const
diff --git a/glom/mode_data/db_adddel/db_adddel.cc b/glom/mode_data/db_adddel/db_adddel.cc
index 9385934..6bcb04c 100644
--- a/glom/mode_data/db_adddel/db_adddel.cc
+++ b/glom/mode_data/db_adddel/db_adddel.cc
@@ -377,7 +377,7 @@ Gtk::TreeModel::iterator DbAddDel::get_item_selected() const
   Glib::RefPtr<const Gtk::TreeSelection> refTreeSelection = m_tree_view.get_selection();
   if(refTreeSelection)
   {
-     auto unconst = Glib::RefPtr<Gtk::TreeSelection>::cast_const(refTreeSelection);
+     auto unconst = std::const_pointer_cast<Gtk::TreeSelection>(refTreeSelection);
      return unconst->get_selected();
   }
 
@@ -752,7 +752,7 @@ void DbAddDel::construct_specified_columns()
   //Show as many rows as needed, but not more than the maximum:
   gulong total = 0; //ignored
   gulong db_rows_count_found = 0;
-  auto refModelDerived = Glib::RefPtr<DbTreeModel>::cast_dynamic(m_list_store);
+  auto refModelDerived = std::dynamic_pointer_cast<DbTreeModel>(m_list_store);
   if(refModelDerived)
     refModelDerived->get_record_counts(total, db_rows_count_found);
 
diff --git a/glom/mode_design/print_layouts/window_print_layout_edit.cc 
b/glom/mode_design/print_layouts/window_print_layout_edit.cc
index a5aa09c..b5b764c 100644
--- a/glom/mode_design/print_layouts/window_print_layout_edit.cc
+++ b/glom/mode_design/print_layouts/window_print_layout_edit.cc
@@ -740,7 +740,7 @@ bool Window_PrintLayout_Edit::get_is_item_at(double x, double y) const
   if(!item_hit)
    return false;
 
-  const auto layout_item = Glib::RefPtr<const CanvasLayoutItem>::cast_dynamic(item_hit);
+  const auto layout_item = std::dynamic_pointer_cast<const CanvasLayoutItem>(item_hit);
   return (bool)layout_item;
 }
 
@@ -1406,7 +1406,7 @@ void Window_PrintLayout_Edit::on_canvas_selection_changed()
   const auto items = m_canvas.get_selected_items();
   for(const auto& base_item : items)
   {
-    auto item = Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(base_item);
+    auto item = std::dynamic_pointer_cast<CanvasLayoutItem>(base_item);
     if(!item)
       continue;
 
diff --git a/glom/mode_design/relationships_overview/window_relationships_overview.cc 
b/glom/mode_design/relationships_overview/window_relationships_overview.cc
index 6fdb48b..ea54861 100644
--- a/glom/mode_design/relationships_overview/window_relationships_overview.cc
+++ b/glom/mode_design/relationships_overview/window_relationships_overview.cc
@@ -78,7 +78,7 @@ Window_RelationshipsOverview::Window_RelationshipsOverview(BaseObjectType* cobje
   auto object =
     builder->get_object("Overview_MainMenu");
   auto gmenu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+    std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!gmenu)
     g_warning("GMenu not found");
 
@@ -372,7 +372,7 @@ Glib::RefPtr<CanvasGroupDbTable> Window_RelationshipsOverview::get_table_group(c
   for(int i = 0; i < count; ++i)
   {
     auto item = m_group_tables->get_child(i);
-    auto table_item = Glib::RefPtr<CanvasGroupDbTable>::cast_dynamic(item);
+    auto table_item = std::dynamic_pointer_cast<CanvasGroupDbTable>(item);
     if(table_item && (table_item->get_table_name() == table_name))
     {
       return table_item;
@@ -386,7 +386,7 @@ Glib::RefPtr<CanvasGroupDbTable> Window_RelationshipsOverview::get_table_group(c
 void Window_RelationshipsOverview::on_table_moved(const Glib::RefPtr<CanvasItemMovable>& item, double /* 
x_offset */, double /* y_offset */)
 {
   auto table =
-    Glib::RefPtr<CanvasGroupDbTable>::cast_dynamic(item);
+    std::dynamic_pointer_cast<CanvasGroupDbTable>(item);
   if(!table)
     return;
 
@@ -442,7 +442,7 @@ void Window_RelationshipsOverview::setup_context_menu()
   auto object =
     m_builder->get_object("ContextMenu");
   auto gmenu =
-    Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
+    std::dynamic_pointer_cast<Gio::Menu>(object);
   if(!gmenu)
     g_warning("GMenu not found");
 
diff --git a/glom/mode_design/report_layout/dialog_layout_report.cc 
b/glom/mode_design/report_layout/dialog_layout_report.cc
index 8c07444..bc9afcb 100644
--- a/glom/mode_design/report_layout/dialog_layout_report.cc
+++ b/glom/mode_design/report_layout/dialog_layout_report.cc
@@ -487,7 +487,7 @@ Glib::RefPtr<Dialog_Layout_Report::type_model> Dialog_Layout_Report::get_selecte
 
   auto treeview = get_selected_treeview();
   if(treeview)
-    model = Glib::RefPtr<type_model>::cast_dynamic(treeview->get_model());
+    model = std::dynamic_pointer_cast<type_model>(treeview->get_model());
 
   return model;
 }
@@ -629,7 +629,7 @@ void Dialog_Layout_Report::on_button_add()
     return;
 
   auto model = get_selected_model();
-  auto model_available = Glib::RefPtr<type_model>::cast_dynamic(m_treeview_available_parts->get_model());
+  auto model_available = std::dynamic_pointer_cast<type_model>(m_treeview_available_parts->get_model());
 
   auto parent = get_selected_group_parent();
   std::shared_ptr<const LayoutItem> pParentPart;
@@ -1002,7 +1002,7 @@ void Dialog_Layout_Report::on_cell_data_available_part(Gtk::CellRenderer* render
     return;
 
   const auto row = *iter;
-  auto model = Glib::RefPtr<type_model>::cast_dynamic(m_treeview_available_parts->get_model());
+  auto model = std::dynamic_pointer_cast<type_model>(m_treeview_available_parts->get_model());
   std::shared_ptr<LayoutItem> pItem = row[model->m_columns.m_col_item];
   Glib::ustring part = pItem->get_part_type_name();
 
diff --git a/glom/print_layout/canvas_layout_item.cc b/glom/print_layout/canvas_layout_item.cc
index ad44469..fb9e019 100644
--- a/glom/print_layout/canvas_layout_item.cc
+++ b/glom/print_layout/canvas_layout_item.cc
@@ -100,7 +100,7 @@ void CanvasLayoutItem::apply_formatting(const Glib::RefPtr<CanvasTextMovable>& c
 
 void CanvasLayoutItem::on_resized()
 {
-  auto canvas_image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(get_child());
+  auto canvas_image = std::dynamic_pointer_cast<CanvasImageMovable>(get_child());
   if(canvas_image)
     canvas_image->scale_to_size();
 }
@@ -142,7 +142,7 @@ void CanvasLayoutItem::set_layout_item(const std::shared_ptr<LayoutItem>& layout
 
   //Scale images.
   //This can only be done after setting the size:
-  auto canvas_image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(child_item);
+  auto canvas_image = std::dynamic_pointer_cast<CanvasImageMovable>(child_item);
   if(canvas_image)
   {
     canvas_image->scale_to_size();
@@ -306,7 +306,7 @@ void CanvasLayoutItem::add_portal_rows_if_necessary(guint rows_count)
 {
   auto child = get_child();
   auto canvas_table =
-    Glib::RefPtr<CanvasTableMovable>::cast_dynamic(child);
+    std::dynamic_pointer_cast<CanvasTableMovable>(child);
   if(!canvas_table)
     return;
 
@@ -427,7 +427,7 @@ void CanvasLayoutItem::set_db_data(const Gnome::Gda::Value& value)
     case(Field::glom_field_type::TIME):
     case(Field::glom_field_type::DATE):
     {
-      auto canvas_item = Glib::RefPtr<CanvasTextMovable>::cast_dynamic(child);
+      auto canvas_item = std::dynamic_pointer_cast<CanvasTextMovable>(child);
       if(!canvas_item)
         return;
 
@@ -446,7 +446,7 @@ void CanvasLayoutItem::set_db_data(const Gnome::Gda::Value& value)
     }
     case(Field::glom_field_type::IMAGE):
     {
-      auto canvas_item = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(child);
+      auto canvas_item = std::dynamic_pointer_cast<CanvasImageMovable>(child);
       if(!canvas_item)
         return;
 
@@ -473,7 +473,7 @@ void CanvasLayoutItem::set_db_data(const Gnome::Gda::Value& value)
 void CanvasLayoutItem::remove_empty_indicators()
 {
   auto child = get_child();
-  auto canvas_image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(child);
+  auto canvas_image = std::dynamic_pointer_cast<CanvasImageMovable>(child);
   if(canvas_image)
   {
     //Clear the no-image pixbuf from images:
diff --git a/glom/print_layout/canvas_print_layout.cc b/glom/print_layout/canvas_print_layout.cc
index e357ccf..d7a11d6 100644
--- a/glom/print_layout/canvas_print_layout.cc
+++ b/glom/print_layout/canvas_print_layout.cc
@@ -234,7 +234,7 @@ void Canvas_PrintLayout::fill_layout_group(const std::shared_ptr<LayoutGroup>& g
   for(int i = 0; i < count; ++i)
   {
     auto base_canvas_item = m_items_group->get_child(i);
-    auto canvas_item = Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(base_canvas_item);
+    auto canvas_item = std::dynamic_pointer_cast<CanvasLayoutItem>(base_canvas_item);
     if(canvas_item)
     {
       //Get the actual position:
@@ -507,7 +507,7 @@ void Canvas_PrintLayout::on_context_menu_delete()
       continue;
 
     const Glib::RefPtr<CanvasLayoutItem> canvas_layout_item =
-      Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(selected_item);
+      std::dynamic_pointer_cast<CanvasLayoutItem>(selected_item);
     if(canvas_layout_item)
       remove_canvas_layout_item(canvas_layout_item);
   }
@@ -753,7 +753,7 @@ void Canvas_PrintLayout::fill_with_data(const Glib::RefPtr<Goocanvas::Group>& ca
   for(int i = 0; i < count; ++i)
   {
     auto base_canvas_item = canvas_group->get_child(i);
-    auto canvas_item = Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(base_canvas_item);
+    auto canvas_item = std::dynamic_pointer_cast<CanvasLayoutItem>(base_canvas_item);
     if(!canvas_item)
       continue;
 
@@ -828,7 +828,7 @@ void Canvas_PrintLayout::fill_with_data(const Glib::RefPtr<Goocanvas::Group>& ca
   for(int i = 0; i < count; ++i)
   {
     auto base_canvas_item = canvas_group->get_child(i);
-    auto canvas_item = Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(base_canvas_item);
+    auto canvas_item = std::dynamic_pointer_cast<CanvasLayoutItem>(base_canvas_item);
     if(!canvas_item)
       continue;
 
@@ -888,7 +888,7 @@ void Canvas_PrintLayout::fill_with_data_portal(const Glib::RefPtr<CanvasLayoutIt
   if(!portal)
     return;
 
-  auto canvas_table = Glib::RefPtr<CanvasTableMovable>::cast_dynamic(canvas_item->get_child());
+  auto canvas_table = std::dynamic_pointer_cast<CanvasTableMovable>(canvas_item->get_child());
   if(!canvas_table)
     return;
 
@@ -993,7 +993,7 @@ void Canvas_PrintLayout::set_canvas_item_field_value(const Glib::RefPtr<Goocanva
   //Expect the appropriate canvas item, depending on the field type:
   if(field->get_glom_type() == Field::glom_field_type::IMAGE)
   {
-    auto canvas_image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(canvas_item);
+    auto canvas_image = std::dynamic_pointer_cast<CanvasImageMovable>(canvas_item);
     if(!canvas_image)
       return;
 
@@ -1002,7 +1002,7 @@ void Canvas_PrintLayout::set_canvas_item_field_value(const Glib::RefPtr<Goocanva
   }
   else //text, numbers, date, time, boolean:
   {
-    auto canvas_text = Glib::RefPtr<CanvasTextMovable>::cast_dynamic(canvas_item);
+    auto canvas_text = std::dynamic_pointer_cast<CanvasTextMovable>(canvas_item);
     if(!canvas_text)
     {
       std::cerr << G_STRFUNC << ": The canvas item is not of the expected type. Instead it is of type.\n";
@@ -1109,7 +1109,7 @@ Canvas_PrintLayout::type_vec_items Canvas_PrintLayout::get_selected_items()
   {
     auto child = root->get_child(i);
     auto derived =
-      Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(child);
+      std::dynamic_pointer_cast<CanvasLayoutItem>(child);
     if(!derived)
       continue;
 
@@ -1135,7 +1135,7 @@ void Canvas_PrintLayout::set_outlines_visibility(bool visible)
   {
     auto child = root->get_child(i);
     auto derived =
-      Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(child);
+      std::dynamic_pointer_cast<CanvasLayoutItem>(child);
     if(!derived)
       continue;
 
@@ -1154,7 +1154,7 @@ void Canvas_PrintLayout::select_all(bool selected)
   {
     auto child = root->get_child(i);
     auto derived =
-      Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(child);
+      std::dynamic_pointer_cast<CanvasLayoutItem>(child);
     if(!derived)
       continue;
 
@@ -1215,7 +1215,7 @@ Glib::RefPtr<CanvasLayoutItem> Canvas_PrintLayout::move_items_down(double y_star
   {
     auto child = root->get_child(i);
     auto derived =
-      Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(child);
+      std::dynamic_pointer_cast<CanvasLayoutItem>(child);
     if(!derived)
     {
       std::cout << "debug: not derived\n";
diff --git a/glom/utility_widgets/canvas/canvas_editable.cc b/glom/utility_widgets/canvas/canvas_editable.cc
index 87b4228..8a817e1 100644
--- a/glom/utility_widgets/canvas/canvas_editable.cc
+++ b/glom/utility_widgets/canvas/canvas_editable.cc
@@ -36,7 +36,7 @@ CanvasEditable::CanvasEditable()
 void CanvasEditable::add_item(const Glib::RefPtr<Goocanvas::Item>& item, bool resizable)
 {
   auto root = get_root_item();
-  auto root_group = Glib::RefPtr<Goocanvas::Group>::cast_dynamic(root);
+  auto root_group = std::dynamic_pointer_cast<Goocanvas::Group>(root);
   if(!root_group)
     return;
 
@@ -53,7 +53,7 @@ void CanvasEditable::add_item(const Glib::RefPtr<Goocanvas::Item>& item, const G
   //Add it inside a manipulatable group, if requested:
   if(resizable)
   {
-    auto movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(item);
+    auto movable = std::dynamic_pointer_cast<CanvasItemMovable>(item);
     if(movable)
     {
       auto resizable_item = CanvasGroupResizable::create();
@@ -100,7 +100,7 @@ void CanvasEditable::remove_item(const Glib::RefPtr<Goocanvas::Item>& item , con
   //TODO: Remove resizable=true items via their parent item.
   item->remove();
 
-  auto movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(item);
+  auto movable = std::dynamic_pointer_cast<CanvasItemMovable>(item);
   if(movable && movable->get_selected())
     m_signal_selection_changed.emit();
 }
@@ -110,7 +110,7 @@ void CanvasEditable::remove_all_items()
   const auto some_selected = !(get_selected_items().empty());
 
   auto root = get_root_item();
-  auto root_group = Glib::RefPtr<Goocanvas::Group>::cast_dynamic(root);
+  auto root_group = std::dynamic_pointer_cast<Goocanvas::Group>(root);
 
   while(root_group && root_group->get_n_children())
       root_group->remove_child(0);
diff --git a/glom/utility_widgets/canvas/canvas_group_resizable.cc 
b/glom/utility_widgets/canvas/canvas_group_resizable.cc
index a595df7..709ba61 100644
--- a/glom/utility_widgets/canvas/canvas_group_resizable.cc
+++ b/glom/utility_widgets/canvas/canvas_group_resizable.cc
@@ -301,7 +301,7 @@ void CanvasGroupResizable::position_rect_manipulators()
 
 void CanvasGroupResizable::position_line_manipulators()
 {
-  auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(m_child);
+  auto line = std::dynamic_pointer_cast<CanvasLineMovable>(m_child);
   if(!line)
     return;
 
@@ -443,7 +443,7 @@ void CanvasGroupResizable::manipulator_connect_signals(const Glib::RefPtr<Goocan
 
   //TODO: Use x and y property notification.
 
-  auto rect = Glib::RefPtr<CanvasRectMovable>::cast_dynamic(manipulator);
+  auto rect = std::dynamic_pointer_cast<CanvasRectMovable>(manipulator);
   if(rect)
   {
     if(get_is_line())
@@ -459,7 +459,7 @@ void CanvasGroupResizable::manipulator_connect_signals(const Glib::RefPtr<Goocan
   }
   else
   {
-    auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(manipulator);
+    auto line = std::dynamic_pointer_cast<CanvasLineMovable>(manipulator);
     if(line)
     {
       line->signal_moved().connect(
@@ -529,7 +529,7 @@ void CanvasGroupResizable::on_manipulator_corner_moved(const Glib::RefPtr<Canvas
   set_manipulators_visibility(Goocanvas::ITEM_VISIBLE);
 
   auto manipulator_base = get_manipulator(manipulator_id);
-  auto manipulator = Glib::RefPtr<CanvasRectMovable>::cast_dynamic(manipulator_base);
+  auto manipulator = std::dynamic_pointer_cast<CanvasRectMovable>(manipulator_base);
 
   if(!manipulator)
     return;
@@ -602,13 +602,13 @@ void CanvasGroupResizable::on_manipulator_line_end_moved(const Glib::RefPtr<Canv
   set_manipulators_visibility(Goocanvas::ITEM_VISIBLE);
 
   auto manipulator_base = get_manipulator(manipulator_id);
-  auto manipulator = Glib::RefPtr<CanvasRectMovable>::cast_dynamic(manipulator_base);
+  auto manipulator = std::dynamic_pointer_cast<CanvasRectMovable>(manipulator_base);
 
   if(!manipulator)
     return;
 
 
-  auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(m_child);
+  auto line = std::dynamic_pointer_cast<CanvasLineMovable>(m_child);
   if(!line)
     return;
 
@@ -652,7 +652,7 @@ void CanvasGroupResizable::on_manipulator_edge_moved(const Glib::RefPtr<CanvasIt
   set_manipulators_visibility(Goocanvas::ITEM_VISIBLE);
 
   auto manipulator_base = get_manipulator(manipulator_id);
-  auto manipulator = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(manipulator_base);
+  auto manipulator = std::dynamic_pointer_cast<CanvasLineMovable>(manipulator_base);
 
   //std::cout << "debug: " << G_STRFUNC << ": manipulator=" << manipulator_id << std::endl;
 
@@ -778,7 +778,7 @@ void CanvasGroupResizable::set_manipulators_visibility(Goocanvas::ItemVisibility
   //Also show grid lines in the portal table,
   //though these are not actually manipulatable.
   auto table =
-    Glib::RefPtr<CanvasTableMovable>::cast_dynamic(get_child());
+    std::dynamic_pointer_cast<CanvasTableMovable>(get_child());
   if(table)
   {
     if(visibility == Goocanvas::ITEM_VISIBLE)
@@ -998,7 +998,7 @@ Goocanvas::Canvas* CanvasGroupResizable::get_parent_canvas_widget()
 
 bool CanvasGroupResizable::get_is_line() const
 {
-  auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(m_child);
+  auto line = std::dynamic_pointer_cast<CanvasLineMovable>(m_child);
   return (bool)line;
 }
 
diff --git a/glom/utility_widgets/canvas/canvas_item_movable.cc 
b/glom/utility_widgets/canvas/canvas_item_movable.cc
index 3f58416..0fbb857 100644
--- a/glom/utility_widgets/canvas/canvas_item_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_item_movable.cc
@@ -332,39 +332,39 @@ Glib::RefPtr<CanvasItemMovable> CanvasItemMovable::cast_to_movable(const Glib::R
 
   //We can't cast directly to CanvasItemMovable because each class derives from it separately,
   //instead of it being a base class of Goocanvas::Item (the common base class):
-  auto rect = Glib::RefPtr<CanvasRectMovable>::cast_dynamic(item);
+  auto rect = std::dynamic_pointer_cast<CanvasRectMovable>(item);
   if(rect)
-    movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(rect);
+    movable = std::dynamic_pointer_cast<CanvasItemMovable>(rect);
   else
   {
-    auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(item);
+    auto line = std::dynamic_pointer_cast<CanvasLineMovable>(item);
     if(line)
-      movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(line);
+      movable = std::dynamic_pointer_cast<CanvasItemMovable>(line);
     else
     {
-      auto text = Glib::RefPtr<CanvasTextMovable>::cast_dynamic(item);
+      auto text = std::dynamic_pointer_cast<CanvasTextMovable>(item);
       if(text)
-        movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(text);
+        movable = std::dynamic_pointer_cast<CanvasItemMovable>(text);
       else
       {
-        auto image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(item);
+        auto image = std::dynamic_pointer_cast<CanvasImageMovable>(item);
         if(image)
-          movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(image);
+          movable = std::dynamic_pointer_cast<CanvasItemMovable>(image);
         else
         {
-          auto group = Glib::RefPtr<CanvasGroupMovable>::cast_dynamic(item);
+          auto group = std::dynamic_pointer_cast<CanvasGroupMovable>(item);
           if(group)
-            movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(group);
+            movable = std::dynamic_pointer_cast<CanvasItemMovable>(group);
           else
           {
-            auto table = Glib::RefPtr<CanvasTableMovable>::cast_dynamic(item);
+            auto table = std::dynamic_pointer_cast<CanvasTableMovable>(item);
             if(table)
-              movable = Glib::RefPtr<CanvasTableMovable>::cast_dynamic(table);
+              movable = std::dynamic_pointer_cast<CanvasTableMovable>(table);
             else
             {
-              auto group_resizable = Glib::RefPtr<CanvasGroupResizable>::cast_dynamic(item);
+              auto group_resizable = std::dynamic_pointer_cast<CanvasGroupResizable>(item);
               if(group_resizable)
-                movable = Glib::RefPtr<CanvasItemMovable>::cast_dynamic(group_resizable);
+                movable = std::dynamic_pointer_cast<CanvasItemMovable>(group_resizable);
             }
           }
         }
@@ -381,7 +381,7 @@ Glib::RefPtr<CanvasItemMovable> CanvasItemMovable::cast_to_movable(const Glib::R
 //static:
 Glib::RefPtr<const CanvasItemMovable> CanvasItemMovable::cast_const_to_movable(const Glib::RefPtr<const 
Goocanvas::Item>& item)
 {
-  auto unconst = Glib::RefPtr<Goocanvas::Item>::cast_const(item);
+  auto unconst = std::const_pointer_cast<Goocanvas::Item>(item);
   return cast_to_movable(unconst);
 }
 
@@ -394,39 +394,39 @@ Glib::RefPtr<Goocanvas::Item> CanvasItemMovable::cast_to_item(const Glib::RefPtr
     return result;
 
   //We can't cast directly to Item because each class derives from it separately.
-  auto rect = Glib::RefPtr<CanvasRectMovable>::cast_dynamic(item);
+  auto rect = std::dynamic_pointer_cast<CanvasRectMovable>(item);
   if(rect)
-    result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(rect);
+    result = std::dynamic_pointer_cast<Goocanvas::Item>(rect);
   else
   {
-    auto line = Glib::RefPtr<CanvasLineMovable>::cast_dynamic(item);
+    auto line = std::dynamic_pointer_cast<CanvasLineMovable>(item);
     if(line)
-      result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(line);
+      result = std::dynamic_pointer_cast<Goocanvas::Item>(line);
     else
     {
-      auto text = Glib::RefPtr<CanvasTextMovable>::cast_dynamic(item);
+      auto text = std::dynamic_pointer_cast<CanvasTextMovable>(item);
       if(text)
-        result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(text);
+        result = std::dynamic_pointer_cast<Goocanvas::Item>(text);
       else
       {
-        auto image = Glib::RefPtr<CanvasImageMovable>::cast_dynamic(item);
+        auto image = std::dynamic_pointer_cast<CanvasImageMovable>(item);
         if(image)
-          result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(image);
+          result = std::dynamic_pointer_cast<Goocanvas::Item>(image);
         else
         {
-          auto group = Glib::RefPtr<CanvasGroupMovable>::cast_dynamic(item);
+          auto group = std::dynamic_pointer_cast<CanvasGroupMovable>(item);
           if(group)
-            result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(group);
+            result = std::dynamic_pointer_cast<Goocanvas::Item>(group);
           else
           {
-            auto table = Glib::RefPtr<CanvasTableMovable>::cast_dynamic(item);
+            auto table = std::dynamic_pointer_cast<CanvasTableMovable>(item);
             if(table)
-              result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(table);
+              result = std::dynamic_pointer_cast<Goocanvas::Item>(table);
             else
             {
-              auto group_resizable = Glib::RefPtr<CanvasGroupResizable>::cast_dynamic(item);
+              auto group_resizable = std::dynamic_pointer_cast<CanvasGroupResizable>(item);
               if(group_resizable)
-                result = Glib::RefPtr<Goocanvas::Item>::cast_dynamic(group_resizable);
+                result = std::dynamic_pointer_cast<Goocanvas::Item>(group_resizable);
             }
           }
         }


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