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
- Previous message (by thread): rpms/diffstat/devel COPYING, NONE, 1.1 .cvsignore, 1.7, 1.8 diffstat.spec, 1.20, 1.21 sources, 1.7, 1.8
- Next message (by thread): rpms/xfsprogs/devel xfsprogs.spec,1.22,1.23
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
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
- Previous message (by thread): rpms/diffstat/devel COPYING, NONE, 1.1 .cvsignore, 1.7, 1.8 diffstat.spec, 1.20, 1.21 sources, 1.7, 1.8
- Next message (by thread): rpms/xfsprogs/devel xfsprogs.spec,1.22,1.23
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-cvs-commits
mailing list