[Xfce4-commits] <postler:master> Use tree paths instead of iters for drag and drop

Christian Dywan noreply at xfce.org
Fri Feb 25 02:30:01 CET 2011


Updating branch refs/heads/master
         to 59f8505924e2b00393c39b2c94e364383ea11a35 (commit)
       from 03876d5c64dcae169c7dbecb6557d46f59f0cfe8 (commit)

commit 59f8505924e2b00393c39b2c94e364383ea11a35
Author: Christian Dywan <christian at twotoasts.de>
Date:   Fri Feb 25 01:52:54 2011 +0100

    Use tree paths instead of iters for drag and drop

 postler/postler-folders.vala |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/postler/postler-folders.vala b/postler/postler-folders.vala
index d870587..e0b609b 100644
--- a/postler/postler-folders.vala
+++ b/postler/postler-folders.vala
@@ -13,8 +13,8 @@ public class Postler.Folders : Gtk.TreeView {
     Accounts accounts;
     AccountInfo local_info;
     Gtk.TreeStore store;
-    Gtk.TreeIter? selected_folder = null;
-    Gtk.TreeIter? drop_folder = null;
+    Gtk.TreePath? selected_folder = null;
+    Gtk.TreePath? drop_folder = null;
     int blink_counter = -1;
 
     public Postler.Messages messages { get; set; }
@@ -77,8 +77,10 @@ public class Postler.Folders : Gtk.TreeView {
 
     bool on_drag_motion (Gdk.DragContext context, int x, int y, uint time_) {
         if (selected_folder == null) {
-            var model = get_model ();
-            get_selection ().get_selected (out model, out selected_folder);
+            Gtk.TreeModel model;
+            Gtk.TreeIter iter;
+            get_selection ().get_selected (out model, out iter);
+            selected_folder = model.get_path (iter);
         }
         Gtk.TreePath path;
         Gtk.TreeViewDropPosition pos;
@@ -90,23 +92,24 @@ public class Postler.Folders : Gtk.TreeView {
     }
 
     void on_drag_leave (Gdk.DragContext context, uint time_) {
-        get_selection ().select_iter (selected_folder);
+        get_selection ().select_path (selected_folder);
         selected_folder = null;
     }
 
     bool on_drag_drop (Gdk.DragContext context, int x, int y, uint time_) {
         if (selected_folder == null) {
-            var model = get_model ();
-            get_selection ().get_selected (out model, out selected_folder);
+            Gtk.TreeModel model;
+            Gtk.TreeIter iter;
+            get_selection ().get_selected (out model, out iter);
+            selected_folder = model.get_path (iter);
         }
         Gtk.TreePath path;
         Gtk.TreeViewDropPosition pos;
         if (get_dest_row_at_pos (x, y, out path, out pos)) {
             var selection = get_selection ();
             selection.select_path (path);
-            var model = get_model ();
-            model.get_iter_from_string (out drop_folder, path.to_string ());
-            if (selected_folder != drop_folder)
+            drop_folder = path;
+            if (selected_folder.compare (drop_folder) != 0)
                 GLib.Timeout.add (350, blink);
         }
         return true;
@@ -117,7 +120,7 @@ public class Postler.Folders : Gtk.TreeView {
         if (blink_counter > 5) {
             drop_folder = null;
             blink_counter = -1;
-            get_selection ().select_iter (selected_folder);
+            get_selection ().select_path (selected_folder);
             selected_folder = null;
             return false;
         }
@@ -125,7 +128,7 @@ public class Postler.Folders : Gtk.TreeView {
             get_selection ().unselect_all ();
             return true;
         } else {
-            get_selection ().select_iter (drop_folder);
+            get_selection ().select_path (drop_folder);
             return true;
         }
     }



More information about the Xfce4-commits mailing list