Revision: 1727
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1727&view=rev
Author:   nadvornik
Date:     2009-06-05 21:52:37 +0000 (Fri, 05 Jun 2009)

Log Message:
-----------
simplified the code around vd_select_row

Modified Paths:
--------------
    trunk/src/layout.c
    trunk/src/typedefs.h
    trunk/src/view_dir.c
    trunk/src/view_dir.h
    trunk/src/view_dir_list.c
    trunk/src/view_dir_list.h
    trunk/src/view_dir_tree.c
    trunk/src/view_dir_tree.h

Modified: trunk/src/layout.c
===================================================================
--- trunk/src/layout.c  2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/layout.c  2009-06-05 21:52:37 UTC (rev 1727)
@@ -242,11 +242,11 @@
        g_free(buf);
 }
 
-static void layout_vd_select_cb(ViewDir *vd, const gchar *path, gpointer data)
+static void layout_vd_select_cb(ViewDir *vd, FileData *fd, gpointer data)
 {
        LayoutWindow *lw = data;
 
-       layout_set_path(lw, path);
+       layout_set_fd(lw, fd);
 }
 
 static void layout_path_entry_tab_append_cb(const gchar *path, gpointer data, 
gint n)

Modified: trunk/src/typedefs.h
===================================================================
--- trunk/src/typedefs.h        2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/typedefs.h        2009-06-05 21:52:37 UTC (rev 1727)
@@ -687,7 +687,7 @@
        guint drop_scroll_id; /* event source id */
 
        /* func list */
-       void (*select_func)(ViewDir *vd, const gchar *path, gpointer data);
+       void (*select_func)(ViewDir *vd, FileData *fd, gpointer data);
        gpointer select_data;
 
        void (*dnd_drop_update_func)(ViewDir *vd);

Modified: trunk/src/view_dir.c
===================================================================
--- trunk/src/view_dir.c        2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir.c        2009-06-05 21:52:37 UTC (rev 1727)
@@ -143,7 +143,7 @@
 }
 
 void vd_set_select_func(ViewDir *vd,
-                       void (*func)(ViewDir *vd, const gchar *path, gpointer 
data), gpointer data)
+                       void (*func)(ViewDir *vd, FileData *fd, gpointer data), 
gpointer data)
 {
        vd->select_func = func;
        vd->select_data = data;
@@ -193,13 +193,15 @@
        return ret;
 }
 
+/* the calling stack is this:
+   vd_select_row -> select_func -> layout_set_fd -> vd_set_fd
+*/
 void vd_select_row(ViewDir *vd, FileData *fd)
 {
-       switch (vd->type)
-       {
-       case DIRVIEW_LIST: vdlist_select_row(vd, fd); break;
-       case DIRVIEW_TREE: vdtree_select_row(vd, fd); break;
-       }
+       if (fd && vd->select_func)
+               {
+               vd->select_func(vd, fd, vd->select_data);
+               }
 }
 
 gboolean vd_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter)
@@ -422,7 +424,9 @@
 
        if (vd->select_func)
                {
-               vd->select_func(vd, path, vd->select_data);
+               FileData *fd = file_data_new_simple(path);
+               vd->select_func(vd, fd, vd->select_data);
+               file_data_unref(fd);
                }
 
        g_free(path);
@@ -1023,7 +1027,7 @@
 
        if (fd && vd->click_fd == fd)
                {
-               vdlist_select_row(vd, vd->click_fd);
+               vd_select_row(vd, vd->click_fd);
                }
 
        return FALSE;

Modified: trunk/src/view_dir.h
===================================================================
--- trunk/src/view_dir.h        2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir.h        2009-06-05 21:52:37 UTC (rev 1727)
@@ -26,7 +26,7 @@
 
 ViewDir *vd_new(DirViewType type, FileData *dir_fd);
 
-void vd_set_select_func(ViewDir *vdl, void (*func)(ViewDir *vdl, const gchar 
*path, gpointer data), gpointer data);
+void vd_set_select_func(ViewDir *vdl, void (*func)(ViewDir *vdl, FileData *fd, 
gpointer data), gpointer data);
 
 void vd_set_layout(ViewDir *vdl, LayoutWindow *layout);
 

Modified: trunk/src/view_dir_list.c
===================================================================
--- trunk/src/view_dir_list.c   2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir_list.c   2009-06-05 21:52:37 UTC (rev 1727)
@@ -117,18 +117,6 @@
  *-----------------------------------------------------------------------------
  */
 
-void vdlist_select_row(ViewDir *vd, FileData *fd)
-{
-       if (fd && vd->select_func)
-               {
-               gchar *path;
-
-               path = g_strdup(fd->path);
-               vd->select_func(vd, path, vd->select_data);
-               g_free(path);
-               }
-}
-
 const gchar *vdlist_row_get_path(ViewDir *vd, gint row)
 {
        FileData *fd;

Modified: trunk/src/view_dir_list.h
===================================================================
--- trunk/src/view_dir_list.h   2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir_list.h   2009-06-05 21:52:37 UTC (rev 1727)
@@ -16,8 +16,6 @@
 
 ViewDir *vdlist_new(ViewDir *vd, FileData *dir_fd);
 
-void vdlist_select_row(ViewDir *vd, FileData *fd);
-
 gboolean vdlist_set_fd(ViewDir *vd, FileData *dir_fd);
 void vdlist_refresh(ViewDir *vd);
 

Modified: trunk/src/view_dir_tree.c
===================================================================
--- trunk/src/view_dir_tree.c   2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir_tree.c   2009-06-05 21:52:37 UTC (rev 1727)
@@ -676,29 +676,6 @@
        return selection_is_ok;
 }
 
-void vdtree_select_row(ViewDir *vd, FileData *fd)
-{
-       GtkTreeSelection *selection;
-       GtkTreeIter iter;
-
-       if (!vd_find_row(vd, fd, &iter)) return;
-       selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vd->view));
-
-       /* hack, such that selection is only allowed to be changed from here */
-       selection_is_ok = TRUE;
-       gtk_tree_selection_select_iter(selection, &iter);
-       selection_is_ok = FALSE;
-
-       if (!vdtree_populate_path_by_iter(vd, &iter, FALSE, vd->dir_fd)) return;
-
-       vdtree_expand_by_iter(vd, &iter, TRUE);
-
-       if (fd && vd->select_func)
-               {
-               vd->select_func(vd, fd->path, vd->select_data);
-               }
-}
-
 gboolean vdtree_set_fd(ViewDir *vd, FileData *dir_fd)
 {
        FileData *fd;
@@ -718,15 +695,21 @@
                {
                GtkTreeModel *store;
                GtkTreePath *tpath;
+               GtkTreeSelection *selection;
 
-               tree_view_row_make_visible(GTK_TREE_VIEW(vd->view), &iter, 
TRUE);
-
                store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
                tpath = gtk_tree_model_get_path(store, &iter);
                gtk_tree_view_set_cursor(GTK_TREE_VIEW(vd->view), tpath, NULL, 
FALSE);
                gtk_tree_path_free(tpath);
 
-               vdtree_select_row(vd, fd);
+               selection = 
gtk_tree_view_get_selection(GTK_TREE_VIEW(vd->view));
+
+               /* hack, such that selection is only allowed to be changed from 
here */
+               selection_is_ok = TRUE;
+               gtk_tree_selection_select_iter(selection, &iter);
+               selection_is_ok = FALSE;
+
+               tree_view_row_make_visible(GTK_TREE_VIEW(vd->view), &iter, 
TRUE);
                }
 
        return TRUE;

Modified: trunk/src/view_dir_tree.h
===================================================================
--- trunk/src/view_dir_tree.h   2009-06-04 21:07:03 UTC (rev 1726)
+++ trunk/src/view_dir_tree.h   2009-06-05 21:52:37 UTC (rev 1727)
@@ -24,8 +24,6 @@
 
 ViewDir *vdtree_new(ViewDir *vd, FileData *dir_fd);
 
-void vdtree_select_row(ViewDir *vd, FileData *fd);
-
 gboolean vdtree_set_fd(ViewDir *vd, FileData *dir_fd);
 void vdtree_refresh(ViewDir *vd);
 


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

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to