rpms/gnome-panel/devel gnome-panel-xdg-user-dirs.patch, NONE, 1.1 gnome-panel.spec, 1.182, 1.183

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Mar 6 16:44:29 UTC 2007


Author: alexl

Update of /cvs/dist/rpms/gnome-panel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv31645

Modified Files:
	gnome-panel.spec 
Added Files:
	gnome-panel-xdg-user-dirs.patch 
Log Message:
* Tue Mar  6 2007 Alexander Larsson <alexl at redhat.com> - 2.17.92-1
- Add xdg-user-dirs patch



gnome-panel-xdg-user-dirs.patch:
 menu.c             |   87 +++++++++++++++++++++++++++++++++++++++++
 panel-menu-items.c |  110 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 186 insertions(+), 11 deletions(-)

--- NEW FILE gnome-panel-xdg-user-dirs.patch ---
Index: gnome-panel/menu.c
===================================================================
--- gnome-panel/menu.c	(revision 10283)
+++ gnome-panel/menu.c	(working copy)
@@ -617,6 +617,91 @@ add_app_to_panel (GtkWidget      *item,
 			       gmenu_tree_entry_get_desktop_file_path (entry));
 }
 
+static char *
+lookup_desktop_dir (void)
+{
+  FILE *file;
+  char *config_file;
+  char buffer[512];
+  char *user_dir;
+  char *p, *d;
+  int len;
+  int relative;
+  
+  config_file = g_build_filename (g_get_user_config_dir (), "user-dirs.dirs", NULL);
+  file = fopen (config_file, "r");
+  free (config_file);
+  if (file == NULL)
+    goto error;
+  
+  user_dir = NULL;
+  while (fgets (buffer, sizeof (buffer), file))
+    {
+      /* Remove newline at end */
+      len = strlen (buffer);
+      if (len > 0 && buffer[len-1] == '\n')
+	buffer[len-1] = 0;
+      
+      p = buffer;
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (!g_str_has_prefix (p, "XDG_DESKTOP_DIR"))
+	continue;
+      p += strlen ("XDG_DESKTOP_DIR");
+      
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (*p != '=')
+	continue;
+      p++;
+      
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (*p != '"')
+	continue;
+      p++;
+      
+      relative = 0;
+      if (strncmp (p, "$HOME/", 6) == 0)
+	{
+	  p += 6;
+	  relative = 1;
+	}
+      else if (*p != '/')
+	continue;
+      
+      if (relative)
+	{
+	  user_dir = g_malloc (strlen (g_get_home_dir()) + 1 + strlen (p) + 1);
+	  strcpy (user_dir, g_get_home_dir ());
+	  strcat (user_dir, "/");
+	}
+      else
+	{
+	  user_dir = g_malloc (strlen (p) + 1);
+	  *user_dir = 0;
+	}
+      
+      d = user_dir + strlen (user_dir);
+      while (*p && *p != '"')
+	{
+	  if ((*p == '\\') && (*(p+1) != 0))
+	    p++;
+	  *d++ = *p++;
+	}
+      *d = 0;
+    }  
+  fclose (file);
+  
+  if (user_dir)
+    return user_dir;
+  
+ error:
+  return g_build_filename (g_get_home_dir (), "Desktop", NULL);
+}
 
 static void
 add_app_to_desktop (GtkWidget      *item,
@@ -640,7 +725,7 @@ add_app_to_desktop (GtkWidget      *item
 	if (desktop_is_home_dir ()) {
 		target_dir = g_build_filename (g_get_home_dir (), NULL);
 	} else {
-		target_dir = g_build_filename (g_get_home_dir (), "Desktop", NULL);
+	  target_dir = lookup_desktop_dir ();
 	}
 
 	target_uri = panel_make_unique_desktop_uri (target_dir, source_uri);
Index: gnome-panel/panel-menu-items.c
===================================================================
--- gnome-panel/panel-menu-items.c	(revision 10283)
+++ gnome-panel/panel-menu-items.c	(working copy)
@@ -119,7 +119,104 @@ activate_uri (GtkWidget *menuitem,
 	}
 	g_free (url);
 }
- 
+
+static char *
+lookup_desktop_dir (void)
+{
+  FILE *file;
+  char *config_file;
+  char buffer[512];
+  char *user_dir;
+  char *p, *d;
+  int len;
+  int relative;
+  
+  config_file = g_build_filename (g_get_user_config_dir (), "user-dirs.dirs", NULL);
+  file = fopen (config_file, "r");
+  free (config_file);
+  if (file == NULL)
+    goto error;
+  
+  user_dir = NULL;
+  while (fgets (buffer, sizeof (buffer), file))
+    {
+      /* Remove newline at end */
+      len = strlen (buffer);
+      if (len > 0 && buffer[len-1] == '\n')
+	buffer[len-1] = 0;
+      
+      p = buffer;
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (!g_str_has_prefix (p, "XDG_DESKTOP_DIR"))
+	continue;
+      p += strlen ("XDG_DESKTOP_DIR");
+      
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (*p != '=')
+	continue;
+      p++;
+      
+      while (*p == ' ' || *p == '\t')
+	p++;
+      
+      if (*p != '"')
+	continue;
+      p++;
+      
+      relative = 0;
+      if (strncmp (p, "$HOME/", 6) == 0)
+	{
+	  p += 6;
+	  relative = 1;
+	}
+      else if (*p != '/')
+	continue;
+      
+      if (relative)
+	{
+	  user_dir = g_malloc (strlen (g_get_home_dir()) + 1 + strlen (p) + 1);
+	  strcpy (user_dir, g_get_home_dir ());
+	  strcat (user_dir, "/");
+	}
+      else
+	{
+	  user_dir = g_malloc (strlen (p) + 1);
+	  *user_dir = 0;
+	}
+      
+      d = user_dir + strlen (user_dir);
+      while (*p && *p != '"')
+	{
+	  if ((*p == '\\') && (*(p+1) != 0))
+	    p++;
+	  *d++ = *p++;
+	}
+      *d = 0;
+    }  
+  fclose (file);
+  
+  if (user_dir)
+    return user_dir;
+  
+ error:
+  return g_build_filename (g_get_home_dir (), "Desktop", NULL);
+}
+
+
+static void
+activate_desktop_uri (GtkWidget *menuitem)
+{
+  char *path;
+
+  path = lookup_desktop_dir ();
+  activate_uri (menuitem, path);
+  g_free (path);
+}
+
 static void
 panel_menu_items_append_from_desktop (GtkWidget *menu,
 				      char      *path,
@@ -584,11 +681,6 @@ panel_place_menu_item_create_menu (Panel
 	if (!gconf_client_get_bool (panel_gconf_get_client (),
 				    DESKTOP_IS_HOME_DIR_KEY,
 				    NULL)) {
-		char *uri;
-
-		uri = gnome_vfs_make_uri_from_input_with_dirs ("Desktop",
-							       GNOME_VFS_MAKE_URI_DIR_HOMEDIR);
-
 		panel_menu_items_append_place_item (
 				"gnome-fs-desktop",
 				/* Translators: Desktop is used here as in
@@ -598,10 +690,8 @@ panel_place_menu_item_create_menu (Panel
 				Q_("Desktop Folder|Desktop"),
 				_("Open the contents of your desktop in a folder"),
 				places_menu,
-				G_CALLBACK (activate_uri),
-				uri);
-
-		g_free (uri);
+				G_CALLBACK (activate_desktop_uri),
+				NULL);
 	}
 
 	panel_place_menu_item_append_gtk_bookmarks (places_menu);


Index: gnome-panel.spec
===================================================================
RCS file: /cvs/dist/rpms/gnome-panel/devel/gnome-panel.spec,v
retrieving revision 1.182
retrieving revision 1.183
diff -u -r1.182 -r1.183
--- gnome-panel.spec	28 Feb 2007 05:36:57 -0000	1.182
+++ gnome-panel.spec	6 Mar 2007 16:44:27 -0000	1.183
@@ -22,7 +22,7 @@
 Summary: GNOME panel
 Name: gnome-panel
 Version: 2.17.92
-Release: 1%{?dist} 
+Release: 2%{?dist} 
 URL: http://www.gnome.org
 Source0: http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.17/%{name}-%{version}.tar.bz2
 Source1: redhat-panel-default-setup.entries
@@ -95,6 +95,7 @@
 # gnome bugzilla 365640
 Patch16: gnome-panel-2.16.0-fix-chinese.patch
 # http://bugzilla.gnome.org/show_bug.cgi?id=395416
+Patch17: gnome-panel-xdg-user-dirs.patch
 
 Conflicts: gnome-power-manager < 2.15.3
 
@@ -128,6 +129,7 @@
 %patch13 -p1 -b .move-suspend-to-menu
 %patch15 -p0 -b .compiz-support
 %patch16 -p1 -b .fix-chinese
+%patch17 -p0 -b .xdg-user-dirs
 
 . %{SOURCE4}
 
@@ -301,6 +303,9 @@
 %{_datadir}/gtk-doc
 
 %changelog
+* Tue Mar  6 2007 Alexander Larsson <alexl at redhat.com> - 2.17.92-1
+- Add xdg-user-dirs patch
+
 * Wed Feb 28 2007 Matthias Clasen <mclasen at redhat.com> 2.17.92-1
 - Update to 2.17.92
 




More information about the fedora-cvs-commits mailing list