[glom/gtkmm4v4: 2/37] TreeStore_Layout/TreeStoreReport_Layout: Avoid unnecessary shared_ptr<> to this.



commit 04ac7dfec0d77c712bc497439c932080cd3fd276
Author: Murray Cumming <murrayc murrayc com>
Date:   Wed Mar 15 12:15:21 2017 +0100

    TreeStore_Layout/TreeStoreReport_Layout: Avoid unnecessary shared_ptr<> to this.
    
    The model argument for Gtk::TreeModel::Path::get_from_selection_data()
    was always meant to be an output parameter anyway (recently noticed by
    Kjell who corrected it to be const in gtkmm4) and we have an overload that
    doesn't take it.

 glom/mode_design/layout/treestore_layout.cc        |    5 +----
 .../report_layout/treestore_report_layout.cc       |   11 ++++++-----
 2 files changed, 7 insertions(+), 9 deletions(-)
---
diff --git a/glom/mode_design/layout/treestore_layout.cc b/glom/mode_design/layout/treestore_layout.cc
index 8555f88..1a6e7c5 100644
--- a/glom/mode_design/layout/treestore_layout.cc
+++ b/glom/mode_design/layout/treestore_layout.cc
@@ -49,11 +49,8 @@ bool TreeStore_Layout::row_draggable_vfunc(const Gtk::TreeModel::Path& path) con
 bool TreeStore_Layout::row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const Gtk::SelectionData& 
selection_data) const
 {
     //Get the Row that is being dragged:
-    //TODO: Add const version of get_from_selection_data(): Glib::RefPtr<const Gtk::TreeModel> refThis = 
Glib::RefPtr<const Gtk::TreeModel>(this);
-    auto refThis = Glib::RefPtr<Gtk::TreeModel>(const_cast<TreeStore_Layout*>(this));
-    refThis->reference(); //, true /* take_copy */)
     Gtk::TreeModel::Path path_dragged_row;
-    Gtk::TreeModel::Path::get_from_selection_data(selection_data, refThis, path_dragged_row);
+    Gtk::TreeModel::Path::get_from_selection_data(selection_data, path_dragged_row);
 
     if(path_dragged_row == dest)
       return false; //Prevent a row from being dragged onto itself.
diff --git a/glom/mode_design/report_layout/treestore_report_layout.cc 
b/glom/mode_design/report_layout/treestore_report_layout.cc
index defd380..3b0f589 100644
--- a/glom/mode_design/report_layout/treestore_report_layout.cc
+++ b/glom/mode_design/report_layout/treestore_report_layout.cc
@@ -57,17 +57,18 @@ bool TreeStore_ReportLayout::row_draggable_vfunc(const Gtk::TreeModel::Path& pat
 bool TreeStore_ReportLayout::row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const 
Gtk::SelectionData& selection_data) const
 {
   //Get the Row that is being dragged:
-  //TODO: Add const version of get_from_selection_data(): Glib::RefPtr<const Gtk::TreeModel> refThis = 
Glib::RefPtr<const Gtk::TreeModel>(this);
-  auto refThis = Glib::RefPtr<Gtk::TreeModel>(const_cast<TreeStore_ReportLayout*>(this));
-  refThis->reference(); //, true /* take_copy */)
   Gtk::TreeModel::Path path_dragged_row;
-  Gtk::TreeModel::Path::get_from_selection_data(selection_data, refThis, path_dragged_row);
+  Glib::RefPtr<const Gtk::TreeModel> tree_model_dragged_row;
+  Gtk::TreeModel::Path::get_from_selection_data(selection_data, tree_model_dragged_row, path_dragged_row);
 
   if(path_dragged_row == dest)
     return false; //Prevent a row from being dragged onto itself.
 
+  if (!tree_model_dragged_row) {
+    return false;
+  }
 
-  auto iter_dragged_row = refThis->get_iter(path_dragged_row);
+  auto iter_dragged_row = tree_model_dragged_row->get_iter(path_dragged_row);
   if(!iter_dragged_row)
     return false;
 


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