Revision: 1492
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1492&view=rev
Author:   nadvornik
Date:     2009-03-08 12:42:23 +0000 (Sun, 08 Mar 2009)

Log Message:
-----------
dnd fixes

Modified Paths:
--------------
    trunk/src/bar_keywords.c
    trunk/src/metadata.c
    trunk/src/metadata.h

Modified: trunk/src/bar_keywords.c
===================================================================
--- trunk/src/bar_keywords.c    2009-03-08 11:32:12 UTC (rev 1491)
+++ trunk/src/bar_keywords.c    2009-03-08 12:42:23 UTC (rev 1492)
@@ -527,6 +527,7 @@
                                          GtkSelectionData *selection_data, 
guint info,
                                          guint time, gpointer data)
 {
+       PaneKeywordsData *pkd = data;
        GtkTreePath *tpath = NULL;
         GtkTreeViewDropPosition pos;
        GtkTreeModel *model;
@@ -578,6 +579,12 @@
                        return;
                        }
 
+               if (src_valid && keyword_compare(keyword_tree, &src_kw_iter, 
&dest_kw_iter) == 0)
+                       {
+                       /* can't move to itself */
+                       return;
+                       }
+
                if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE || pos == 
GTK_TREE_VIEW_DROP_INTO_OR_AFTER) &&
                    !gtk_tree_model_iter_has_child(keyword_tree, &dest_kw_iter))
                        {
@@ -622,6 +629,7 @@
                        }
                }
        string_list_free(new_keywords);
+       bar_keyword_tree_sync(pkd);
 }
 
 static gint bar_pane_keywords_dnd_motion(GtkWidget *tree_view, GdkDragContext 
*context,

Modified: trunk/src/metadata.c
===================================================================
--- trunk/src/metadata.c        2009-03-08 11:32:12 UTC (rev 1491)
+++ trunk/src/metadata.c        2009-03-08 12:42:23 UTC (rev 1492)
@@ -729,6 +729,16 @@
        g_free(casefold);
 }
 
+gboolean keyword_compare(GtkTreeModel *keyword_tree, GtkTreeIter *a, 
GtkTreeIter *b)
+{
+       GtkTreePath *pa = gtk_tree_model_get_path(keyword_tree, a);
+       GtkTreePath *pb = gtk_tree_model_get_path(keyword_tree, b);
+       gint ret = gtk_tree_path_compare(pa, pb);
+       gtk_tree_path_free(pa);
+       gtk_tree_path_free(pb);
+       return ret;
+}
+
 void keyword_copy(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter 
*from)
 {
 

Modified: trunk/src/metadata.h
===================================================================
--- trunk/src/metadata.h        2009-03-08 11:32:12 UTC (rev 1491)
+++ trunk/src/metadata.h        2009-03-08 12:42:23 UTC (rev 1492)
@@ -55,6 +55,8 @@
 gchar *keyword_get_casefold(GtkTreeModel *keyword_tree, GtkTreeIter *iter);
 gboolean keyword_get_is_keyword(GtkTreeModel *keyword_tree, GtkTreeIter *iter);
 
+gboolean keyword_compare(GtkTreeModel *keyword_tree, GtkTreeIter *a, 
GtkTreeIter *b);
+
 void keyword_copy(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter 
*from);
 void keyword_copy_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, 
GtkTreeIter *from);
 void keyword_move_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, 
GtkTreeIter *from);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to