[Goodies-commits] r4119 - xfmpc/trunk/src

Mike Massonnet mmassonnet at xfce.org
Fri Mar 28 01:49:58 CET 2008


Author: mmassonnet
Date: 2008-03-28 00:49:58 +0000 (Fri, 28 Mar 2008)
New Revision: 4119

Modified:
   xfmpc/trunk/src/dbbrowser.c
Log:
Select the row when going to the parent directory
* dbbrowser.c:
  - New property last_wdir to select the right row in the treeview


Modified: xfmpc/trunk/src/dbbrowser.c
===================================================================
--- xfmpc/trunk/src/dbbrowser.c	2008-03-28 00:49:53 UTC (rev 4118)
+++ xfmpc/trunk/src/dbbrowser.c	2008-03-28 00:49:58 UTC (rev 4119)
@@ -78,6 +78,7 @@
   GtkWidget                *search_entry;
 
   gchar                    *wdir;
+  gchar                    *last_wdir;
 };
 
 
@@ -139,6 +140,7 @@
   g_object_get (G_OBJECT (dbbrowser->preferences),
                 "dbbrowser-last-path", &priv->wdir,
                 NULL);
+  priv->last_wdir = g_strdup (priv->wdir);
 
   /* === Tree model === */
   priv->store = gtk_list_store_new (N_COLUMNS,
@@ -264,6 +266,7 @@
   gchar                    *filename;
   gchar                    *basename;
   gboolean                  is_dir;
+  gint                      i = 0;
 
   xfmpc_dbbrowser_clear (dbbrowser);
 
@@ -272,12 +275,28 @@
       filename = xfmpc_dbbrowser_get_parent_wdir (dbbrowser);
       xfmpc_dbbrowser_append (dbbrowser, filename, "..", TRUE);
       g_free (filename);
+      i++;
     }
 
   while (xfmpc_mpdclient_database_read (dbbrowser->mpdclient, priv->wdir,
                                         &filename, &basename, &is_dir))
     {
       xfmpc_dbbrowser_append (dbbrowser, filename, basename, is_dir);
+
+      if (i >= 0)
+        {
+          if (0 == g_ascii_strcasecmp (filename, priv->last_wdir))
+            {
+              GtkTreePath *path = gtk_tree_path_new_from_indices (i, -1);
+              gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->treeview), path, NULL, FALSE);
+              gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (priv->treeview), path, NULL, TRUE, 0.10, 0);
+              gtk_tree_path_free (path);
+
+              i = -1;
+            }
+          i++;
+        }
+
       g_free (filename);
       g_free (basename);
     }
@@ -291,7 +310,8 @@
 {
   XfmpcDbbrowserPrivate    *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
 
-  g_free (priv->wdir);
+  g_free (priv->last_wdir);
+  priv->last_wdir = priv->wdir;
   priv->wdir = g_strdup (dir);
 }
 




More information about the Goodies-commits mailing list