OBS User unknown 2008-06-26 00:01:26 +00:00 committed by Git OBS Bridge
parent cb2c2a06c4
commit 99aa3fa38f
10 changed files with 169 additions and 564 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0abf783260ce3c60ffe28c14cb932384b2a1f67b92ba1a1d017a1e8880d05433
size 5032921

3
nautilus-2.23.4.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:361c9e525d73549e2d806a86c3918b8ea1bddb071fd322f8b57a69fabbfc6002
size 10202575

View File

@ -1,393 +0,0 @@
2008-04-21 Federico Mena Quintero <federico@novell.com>
From: Federico Mena Quintero <federico@gnu.org>
http://bugzilla.gnome.org/show_bug.cgi?id=364843
Keep the generated names for "reallylongfilename (copy).txt" from
overflowing the maximum allowed length for path names.
Original patch by Dave Camp <campd@campd.org>
* libnautilus-private/nautilus-file-operations.c
(shorten_utf8_string): New function; takes an UTF8 string and
hygienically truncates it to a given number of bytes.
(get_link_name): Ensure the final name doesn't exceed a maximum length.
(make_next_duplicate_name): Likewise.
(get_max_name_length): Wrapper around pathconf() for basename lengths.
(get_unique_target_file): Use a maximum length for the target name.
(get_target_file_for_link): Likewise.
---
libnautilus-private/nautilus-file-operations.c | 239 +++++++++++++++++++-----
1 files changed, 186 insertions(+), 53 deletions(-)
diff --git a/libnautilus-private/nautilus-file-operations.c b/libnautilus-private/nautilus-file-operations.c
index 15dd601..bc1d941 100644
--- a/libnautilus-private/nautilus-file-operations.c
+++ b/libnautilus-private/nautilus-file-operations.c
@@ -228,15 +228,55 @@ format_time (int seconds)
hours), hours);
}
+static char *
+shorten_utf8_string (const char *base, int reduce_by_num_bytes)
+{
+ int len;
+ char *ret;
+ const char *p;
+
+ len = strlen (base);
+ len -= reduce_by_num_bytes;
+
+ if (len <= 0) {
+ return NULL;
+ }
+
+ ret = g_new (char, len + 1);
+
+ p = base;
+ while (len) {
+ char *next;
+ next = g_utf8_next_char (p);
+ if (next - p > len || *next == '\0') {
+ break;
+ }
+
+ len -= next - p;
+ p = next;
+ }
+
+ if (p - base == 0) {
+ g_free (ret);
+ return NULL;
+ } else {
+ memcpy (ret, base, p - base);
+ ret[p - base] = '\0';
+ return ret;
+ }
+}
+
/* Note that we have these two separate functions with separate format
* strings for ease of localization.
*/
static char *
-get_link_name (const char *name, int count)
+get_link_name (const char *name, int count, int max_length)
{
const char *format;
char *result;
+ int unshortened_length;
+ gboolean use_count;
g_assert (name != NULL);
@@ -262,8 +302,8 @@ get_link_name (const char *name, int count)
format = _("Another link to %s");
break;
}
- result = g_strdup_printf (format, name);
+ use_count = FALSE;
} else {
/* Handle special cases for the first few numbers of each ten.
* For locales where getting this exactly right is difficult,
@@ -290,7 +330,30 @@ get_link_name (const char *name, int count)
format = _("%'dth link to %s");
break;
}
+
+ use_count = TRUE;
+ }
+
+ if (use_count)
result = g_strdup_printf (format, count, name);
+ else
+ result = g_strdup_printf (format, name);
+
+ if (max_length > 0 && (unshortened_length = strlen (result)) > max_length) {
+ char *new_name;
+
+ new_name = shorten_utf8_string (name, unshortened_length - max_length);
+ if (new_name) {
+ g_free (result);
+
+ if (use_count)
+ result = g_strdup_printf (format, count, new_name);
+ else
+ result = g_strdup_printf (format, new_name);
+
+ g_assert (strlen (result) <= max_length);
+ g_free (new_name);
+ }
}
return result;
@@ -482,11 +545,12 @@ parse_previous_duplicate_name (const char *name,
}
static char *
-make_next_duplicate_name (const char *base, const char *suffix, int count)
+make_next_duplicate_name (const char *base, const char *suffix, int count, int max_length)
{
const char *format;
char *result;
-
+ int unshortened_length;
+ gboolean use_count;
if (count < 1) {
g_warning ("bad count %d in get_duplicate_name", count);
@@ -510,7 +574,8 @@ make_next_duplicate_name (const char *base, const char *suffix, int count)
break;
}
- result = g_strdup_printf (format, base, suffix);
+
+ use_count = FALSE;
} else {
/* Handle special cases for the first few numbers of each ten.
@@ -553,14 +618,37 @@ make_next_duplicate_name (const char *base, const char *suffix, int count)
}
}
+ use_count = TRUE;
+
+ }
+
+ if (use_count)
result = g_strdup_printf (format, base, count, suffix);
+ else
+ result = g_strdup_printf (format, base, suffix);
+
+ if (max_length > 0 && (unshortened_length = strlen (result)) > max_length) {
+ char *new_base;
+
+ new_base = shorten_utf8_string (base, unshortened_length - max_length);
+ if (new_base) {
+ g_free (result);
+
+ if (use_count)
+ result = g_strdup_printf (format, new_base, count, suffix);
+ else
+ result = g_strdup_printf (format, new_base, suffix);
+
+ g_assert (strlen (result) <= max_length);
+ g_free (new_base);
+ }
}
return result;
}
static char *
-get_duplicate_name (const char *name, int count_increment)
+get_duplicate_name (const char *name, int count_increment, int max_length)
{
char *result;
char *name_base;
@@ -568,7 +656,7 @@ get_duplicate_name (const char *name, int count_increment)
int count;
parse_previous_duplicate_name (name, &name_base, &suffix, &count);
- result = make_next_duplicate_name (name_base, suffix, count + count_increment);
+ result = make_next_duplicate_name (name_base, suffix, count + count_increment, max_length);
g_free (name_base);
@@ -2626,6 +2714,45 @@ report_copy_progress (CopyMoveJob *copy_job,
nautilus_progress_info_set_progress (job->progress, transfer_info->num_bytes, total_size);
}
+static int
+get_max_name_length (GFile *file_dir)
+{
+ int max_length;
+ char *dir;
+ long max_path;
+ long max_name;
+
+ max_length = -1;
+
+ if (!g_file_has_uri_scheme (file_dir, "file"))
+ return max_length;
+
+ dir = g_file_get_path (file_dir);
+ if (!dir)
+ return max_length;
+
+ max_path = pathconf (dir, _PC_PATH_MAX);
+ max_name = pathconf (dir, _PC_NAME_MAX);
+
+ if (max_name == -1 && max_path == -1) {
+ max_length = -1;
+ } else if (max_name == -1 && max_path != -1) {
+ max_length = max_path - (strlen (dir) + 1);
+ } else if (max_name != -1 && max_path == -1) {
+ max_length = max_name;
+ } else {
+ int leftover;
+
+ leftover = max_path - (strlen (dir) + 1);
+
+ max_length = MIN (leftover, max_name);
+ }
+
+ g_free (dir);
+
+ return max_length;
+}
+
static GFile *
get_unique_target_file (GFile *src,
GFile *dest_dir,
@@ -2636,6 +2763,9 @@ get_unique_target_file (GFile *src,
char *basename, *new_name;
GFileInfo *info;
GFile *dest;
+ int max_length;
+
+ max_length = get_max_name_length (dest_dir);
dest = NULL;
info = g_file_query_info (src,
@@ -2645,7 +2775,7 @@ get_unique_target_file (GFile *src,
editname = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME);
if (editname != NULL) {
- new_name = get_duplicate_name (editname, count);
+ new_name = get_duplicate_name (editname, count, max_length);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -2657,7 +2787,7 @@ get_unique_target_file (GFile *src,
basename = g_file_get_basename (src);
if (g_utf8_validate (basename, -1, NULL)) {
- new_name = get_duplicate_name (basename, count);
+ new_name = get_duplicate_name (basename, count, max_length);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -2687,7 +2817,10 @@ get_target_file_for_link (GFile *src,
char *basename, *new_name;
GFileInfo *info;
GFile *dest;
-
+ int max_length;
+
+ max_length = get_max_name_length (dest_dir);
+
dest = NULL;
info = g_file_query_info (src,
G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME,
@@ -2696,7 +2829,7 @@ get_target_file_for_link (GFile *src,
editname = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME);
if (editname != NULL) {
- new_name = get_link_name (editname, count);
+ new_name = get_link_name (editname, count, max_length);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -2708,7 +2841,7 @@ get_target_file_for_link (GFile *src,
basename = g_file_get_basename (src);
if (g_utf8_validate (basename, -1, NULL)) {
- new_name = get_link_name (basename, count);
+ new_name = get_link_name (basename, count, max_length);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -5136,47 +5269,47 @@ nautilus_self_check_file_operations (void)
/* test the next duplicate name generator */
- EEL_CHECK_STRING_RESULT (get_duplicate_name (" (copy)", 1), " (another copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo", 1), "foo (copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name (".bashrc", 1), ".bashrc (copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name (".foo.txt", 1), ".foo (copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo", 1), "foo foo (copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo.txt", 1), "foo (copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo.txt", 1), "foo foo (copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo.txt txt", 1), "foo foo (copy).txt txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo...txt", 1), "foo (copy)...txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo...", 1), "foo (copy)...");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo. (copy)", 1), "foo. (another copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (copy)", 1), "foo (another copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (copy).txt", 1), "foo (another copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (another copy)", 1), "foo (3rd copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (another copy).txt", 1), "foo (3rd copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (another copy).txt", 1), "foo foo (3rd copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (13th copy)", 1), "foo (14th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (13th copy).txt", 1), "foo (14th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (21st copy)", 1), "foo (22nd copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (21st copy).txt", 1), "foo (22nd copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (22nd copy)", 1), "foo (23rd copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (22nd copy).txt", 1), "foo (23rd copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (23rd copy)", 1), "foo (24th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (23rd copy).txt", 1), "foo (24th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (24th copy)", 1), "foo (25th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (24th copy).txt", 1), "foo (25th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (24th copy)", 1), "foo foo (25th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (24th copy).txt", 1), "foo foo (25th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (100000000000000th copy).txt", 1), "foo foo (copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (10th copy)", 1), "foo (11th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (10th copy).txt", 1), "foo (11th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (11th copy)", 1), "foo (12th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (11th copy).txt", 1), "foo (12th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (12th copy)", 1), "foo (13th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (12th copy).txt", 1), "foo (13th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (110th copy)", 1), "foo (111th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (110th copy).txt", 1), "foo (111th copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (122nd copy)", 1), "foo (123rd copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (122nd copy).txt", 1), "foo (123rd copy).txt");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (123rd copy)", 1), "foo (124th copy)");
- EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (123rd copy).txt", 1), "foo (124th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name (" (copy)", 1, -1), " (another copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo", 1, -1), "foo (copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name (".bashrc", 1, -1), ".bashrc (copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name (".foo.txt", 1, -1), ".foo (copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo", 1, -1), "foo foo (copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo.txt", 1, -1), "foo (copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo.txt", 1, -1), "foo foo (copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo.txt txt", 1, -1), "foo foo (copy).txt txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo...txt", 1, -1), "foo (copy)...txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo...", 1, -1), "foo (copy)...");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo. (copy)", 1, -1), "foo. (another copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (copy)", 1, -1), "foo (another copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (copy).txt", 1, -1), "foo (another copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (another copy)", 1, -1), "foo (3rd copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (another copy).txt", 1, -1), "foo (3rd copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (another copy).txt", 1, -1), "foo foo (3rd copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (13th copy)", 1, -1), "foo (14th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (13th copy).txt", 1, -1), "foo (14th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (21st copy)", 1, -1), "foo (22nd copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (21st copy).txt", 1, -1), "foo (22nd copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (22nd copy)", 1, -1), "foo (23rd copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (22nd copy).txt", 1, -1), "foo (23rd copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (23rd copy)", 1, -1), "foo (24th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (23rd copy).txt", 1, -1), "foo (24th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (24th copy)", 1, -1), "foo (25th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (24th copy).txt", 1, -1), "foo (25th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (24th copy)", 1, -1), "foo foo (25th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (24th copy).txt", 1, -1), "foo foo (25th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo foo (100000000000000th copy).txt", 1, -1), "foo foo (copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (10th copy)", 1, -1), "foo (11th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (10th copy).txt", 1, -1), "foo (11th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (11th copy)", 1, -1), "foo (12th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (11th copy).txt", 1, -1), "foo (12th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (12th copy)", 1, -1), "foo (13th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (12th copy).txt", 1, -1), "foo (13th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (110th copy)", 1, -1), "foo (111th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (110th copy).txt", 1, -1), "foo (111th copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (122nd copy)", 1, -1), "foo (123rd copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (122nd copy).txt", 1, -1), "foo (123rd copy).txt");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (123rd copy)", 1, -1), "foo (124th copy)");
+ EEL_CHECK_STRING_RESULT (get_duplicate_name ("foo (123rd copy).txt", 1, -1), "foo (124th copy).txt");
setlocale (LC_MESSAGES, "");
}

View File

@ -6,11 +6,11 @@ quick-and-dirty kiosks.
This adds an /apps/nautilus/lockdown/disable_context_menus GConf key;
if set to true, it will disable all the contextual menus on file views.
diff --git a/libnautilus-private/apps_nautilus_preferences.schemas.in b/libnautilus-private/apps_nautilus_preferences.schemas.in
index 8548bf0..82531dc 100644
--- a/libnautilus-private/apps_nautilus_preferences.schemas.in
+++ b/libnautilus-private/apps_nautilus_preferences.schemas.in
@@ -989,6 +989,21 @@ most cases, this should be left alone. -->Sans 10</default>
Index: nautilus-2.23.4/libnautilus-private/apps_nautilus_preferences.schemas.in
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/apps_nautilus_preferences.schemas.in
+++ nautilus-2.23.4/libnautilus-private/apps_nautilus_preferences.schemas.in
@@ -1019,6 +1019,21 @@ most cases, this should be left alone. -
</long>
</locale>
</schema>
@ -33,10 +33,10 @@ index 8548bf0..82531dc 100644
+
</schemalist>
</gconfschemafile>
diff --git a/libnautilus-private/nautilus-debug-log.h b/libnautilus-private/nautilus-debug-log.h
index 801610d..ad0152e 100644
--- a/libnautilus-private/nautilus-debug-log.h
+++ b/libnautilus-private/nautilus-debug-log.h
Index: nautilus-2.23.4/libnautilus-private/nautilus-debug-log.h
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-debug-log.h
+++ nautilus-2.23.4/libnautilus-private/nautilus-debug-log.h
@@ -30,6 +30,7 @@
#define NAUTILUS_DEBUG_LOG_DOMAIN_USER "USER" /* always enabled */
#define NAUTILUS_DEBUG_LOG_DOMAIN_ASYNC "async" /* when asynchronous notifications come in */
@ -45,11 +45,11 @@ index 801610d..ad0152e 100644
void nautilus_debug_log (gboolean is_milestone, const char *domain, const char *format, ...);
diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c
index 5f4f498..279810f 100644
--- a/libnautilus-private/nautilus-global-preferences.c
+++ b/libnautilus-private/nautilus-global-preferences.c
@@ -227,6 +227,10 @@ typedef struct
Index: nautilus-2.23.4/libnautilus-private/nautilus-global-preferences.c
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-global-preferences.c
+++ nautilus-2.23.4/libnautilus-private/nautilus-global-preferences.c
@@ -229,6 +229,10 @@ typedef struct
* YOU SHOULD EDIT THE SCHEMAS FILE TO CHANGE DEFAULTS.
*/
static const PreferenceDefault preference_defaults[] = {
@ -60,10 +60,10 @@ index 5f4f498..279810f 100644
{ NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
PREFERENCE_BOOLEAN,
GINT_TO_POINTER (FALSE)
diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h
index e6d0301..96dc6e2 100644
--- a/libnautilus-private/nautilus-global-preferences.h
+++ b/libnautilus-private/nautilus-global-preferences.h
Index: nautilus-2.23.4/libnautilus-private/nautilus-global-preferences.h
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-global-preferences.h
+++ nautilus-2.23.4/libnautilus-private/nautilus-global-preferences.h
@@ -30,6 +30,8 @@
G_BEGIN_DECLS
@ -73,11 +73,11 @@ index e6d0301..96dc6e2 100644
/* Which theme is active */
#define NAUTILUS_PREFERENCES_THEME "/desktop/gnome/file_views/icon_theme"
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index f23434c..2a505a7 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -7288,6 +7288,12 @@ fm_directory_view_pop_up_selection_context_menu (FMDirectoryView *view,
Index: nautilus-2.23.4/src/file-manager/fm-directory-view.c
===================================================================
--- nautilus-2.23.4.orig/src/file-manager/fm-directory-view.c
+++ nautilus-2.23.4/src/file-manager/fm-directory-view.c
@@ -7568,6 +7568,12 @@ fm_directory_view_pop_up_selection_conte
{
g_assert (FM_IS_DIRECTORY_VIEW (view));
@ -90,7 +90,7 @@ index f23434c..2a505a7 100644
/* Make the context menu items not flash as they update to proper disabled,
* etc. states by forcing menus to update now.
*/
@@ -7317,6 +7323,12 @@ fm_directory_view_pop_up_background_context_menu (FMDirectoryView *view,
@@ -7597,6 +7603,12 @@ fm_directory_view_pop_up_background_cont
{
g_assert (FM_IS_DIRECTORY_VIEW (view));
@ -103,16 +103,16 @@ index f23434c..2a505a7 100644
/* Make the context menu items not flash as they update to proper disabled,
* etc. states by forcing menus to update now.
*/
@@ -7345,6 +7357,12 @@ fm_directory_view_pop_up_location_context_menu (FMDirectoryView *view,
{
@@ -7704,6 +7716,12 @@ fm_directory_view_pop_up_location_contex
g_assert (FM_IS_DIRECTORY_VIEW (view));
+ if (eel_preferences_get_boolean (NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS)) {
+ nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_LOCKDOWN,
+ "Ignoring request to pop up the context menu for the view");
+ return;
+ }
+ }
+
/* always update the menu before showing it. Shouldn't be too expensive. */
real_update_location_menu (view);
if (location != NULL) {
file = nautilus_file_get_by_uri (location);
} else {

View File

@ -24,11 +24,11 @@
(nautilus_file_should_show): Don't show foreign links in the
desktop directory.
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c
index c1d0a0a..36eb02f 100644
--- a/libnautilus-private/nautilus-directory-async.c
+++ b/libnautilus-private/nautilus-directory-async.c
@@ -198,7 +198,8 @@ static void link_info_done (NautilusDirectory
Index: nautilus-2.23.4/libnautilus-private/nautilus-directory-async.c
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-directory-async.c
+++ nautilus-2.23.4/libnautilus-private/nautilus-directory-async.c
@@ -199,7 +199,8 @@ static void link_info_done
const char *uri,
const char *name,
const char *icon,
@ -38,7 +38,7 @@ index c1d0a0a..36eb02f 100644
static void move_file_to_low_priority_queue (NautilusDirectory *directory,
NautilusFile *file);
static void move_file_to_extension_queue (NautilusDirectory *directory,
@@ -1716,7 +1717,7 @@ lacks_link_info (NautilusFile *file)
@@ -1717,7 +1718,7 @@ lacks_link_info (NautilusFile *file)
if (nautilus_file_is_nautilus_link (file)) {
return TRUE;
} else {
@ -47,7 +47,7 @@ index c1d0a0a..36eb02f 100644
return FALSE;
}
} else {
@@ -3515,7 +3516,8 @@ link_info_done (NautilusDirectory *directory,
@@ -3558,7 +3559,8 @@ link_info_done (NautilusDirectory *direc
const char *uri,
const char *name,
const char *icon,
@ -57,7 +57,7 @@ index c1d0a0a..36eb02f 100644
{
file->details->link_info_is_up_to_date = TRUE;
@@ -3533,6 +3535,7 @@ link_info_done (NautilusDirectory *directory,
@@ -3576,6 +3578,7 @@ link_info_done (NautilusDirectory *direc
}
file->details->custom_icon = g_strdup (icon);
file->details->is_launcher = is_launcher;
@ -65,7 +65,7 @@ index c1d0a0a..36eb02f 100644
nautilus_directory_async_state_changed (directory);
}
@@ -3579,6 +3582,7 @@ link_info_got_data (NautilusDirectory *directory,
@@ -3622,6 +3625,7 @@ link_info_got_data (NautilusDirectory *d
{
char *uri, *name, *icon;
gboolean is_launcher;
@ -73,7 +73,7 @@ index c1d0a0a..36eb02f 100644
nautilus_directory_ref (directory);
@@ -3586,17 +3590,18 @@ link_info_got_data (NautilusDirectory *directory,
@@ -3629,17 +3633,18 @@ link_info_got_data (NautilusDirectory *d
name = NULL;
icon = NULL;
is_launcher = FALSE;
@ -94,7 +94,7 @@ index c1d0a0a..36eb02f 100644
nautilus_file_changed (file);
nautilus_file_unref (file);
@@ -3684,7 +3689,7 @@ link_info_start (NautilusDirectory *directory,
@@ -3727,7 +3732,7 @@ link_info_start (NautilusDirectory *dire
/* If it's not a link we are done. If it is, we need to read it. */
if (!nautilus_style_link) {
@ -103,11 +103,11 @@ index c1d0a0a..36eb02f 100644
} else if (should_read_link_info_sync (file)) {
result = g_file_load_contents (location, NULL, &file_contents, &file_size, NULL, NULL);
link_info_got_data (directory, file, result, file_size, file_contents);
diff --git a/libnautilus-private/nautilus-file-private.h b/libnautilus-private/nautilus-file-private.h
index 8420a7e..2552cf9 100644
--- a/libnautilus-private/nautilus-file-private.h
+++ b/libnautilus-private/nautilus-file-private.h
@@ -190,6 +190,7 @@ struct NautilusFileDetails
Index: nautilus-2.23.4/libnautilus-private/nautilus-file-private.h
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-file-private.h
+++ nautilus-2.23.4/libnautilus-private/nautilus-file-private.h
@@ -191,6 +191,7 @@ struct NautilusFileDetails
eel_boolean_bit has_open_window : 1;
eel_boolean_bit is_launcher : 1;
@ -115,11 +115,11 @@ index 8420a7e..2552cf9 100644
eel_boolean_bit is_symlink : 1;
eel_boolean_bit is_mountpoint : 1;
eel_boolean_bit is_hidden : 1;
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 88139eb..23f01df 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -323,6 +323,7 @@ nautilus_file_clear_info (NautilusFile *file)
Index: nautilus-2.23.4/libnautilus-private/nautilus-file.c
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-file.c
+++ nautilus-2.23.4/libnautilus-private/nautilus-file.c
@@ -323,6 +323,7 @@ nautilus_file_clear_info (NautilusFile *
file->details->thumbnailing_failed = FALSE;
file->details->is_launcher = FALSE;
@ -127,17 +127,19 @@ index 88139eb..23f01df 100644
file->details->is_symlink = FALSE;
file->details->is_hidden = FALSE;
file->details->is_backup = FALSE;
@@ -2705,7 +2706,8 @@ nautilus_file_should_show (NautilusFile *file,
gboolean show_hidden,
gboolean show_backup)
{
- return (show_hidden || (!nautilus_file_is_hidden_file (file) && !is_file_hidden (file))) &&
+ return (show_hidden || (!nautilus_file_is_hidden_file (file) && !is_file_hidden (file) &&
+ !(nautilus_file_is_in_desktop (file) && nautilus_file_is_foreign_link (file)))) &&
(show_backup || !nautilus_file_is_backup_file (file));
@@ -2731,7 +2732,10 @@ nautilus_file_should_show (NautilusFile
if (nautilus_file_is_in_trash (file)) {
return TRUE;
} else {
- return (show_hidden || (!nautilus_file_is_hidden_file (file) && !is_file_hidden (file))) &&
+ return (show_hidden ||
+ (!nautilus_file_is_hidden_file (file) && !is_file_hidden (file) &&
+ !(nautilus_file_is_in_desktop (file)
+ && nautilus_file_is_foreign_link (file)))) &&
(show_backup || !nautilus_file_is_backup_file (file));
}
}
@@ -3038,6 +3040,12 @@ nautilus_file_is_launcher (NautilusFile *file)
@@ -3080,6 +3084,12 @@ nautilus_file_is_launcher (NautilusFile
}
gboolean
@ -150,11 +152,11 @@ index 88139eb..23f01df 100644
nautilus_file_has_activation_uri (NautilusFile *file)
{
return file->details->activation_location != NULL;
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 99e0aeb..9db13f9 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -378,6 +378,7 @@ GList *nautilus_file_list_filter_hidden_and_backup (GList
Index: nautilus-2.23.4/libnautilus-private/nautilus-file.h
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-file.h
+++ nautilus-2.23.4/libnautilus-private/nautilus-file.h
@@ -380,6 +380,7 @@ GList *nautilus_file_li
* Getting this can require reading the contents of the file.
*/
gboolean nautilus_file_is_launcher (NautilusFile *file);
@ -162,11 +164,11 @@ index 99e0aeb..9db13f9 100644
gboolean nautilus_file_has_activation_uri (NautilusFile *file);
char * nautilus_file_get_activation_uri (NautilusFile *file);
GFile * nautilus_file_get_activation_location (NautilusFile *file);
diff --git a/libnautilus-private/nautilus-link.c b/libnautilus-private/nautilus-link.c
index abe244a..a6625d7 100644
--- a/libnautilus-private/nautilus-link.c
+++ b/libnautilus-private/nautilus-link.c
@@ -406,16 +406,36 @@ nautilus_link_local_get_link_uri (const char *uri)
Index: nautilus-2.23.4/libnautilus-private/nautilus-link.c
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-link.c
+++ nautilus-2.23.4/libnautilus-private/nautilus-link.c
@@ -406,16 +406,36 @@ nautilus_link_local_get_link_uri (const
return retval;
}
@ -204,7 +206,7 @@ index abe244a..a6625d7 100644
if (!is_link_data (file_contents, link_file_size)) {
return;
@@ -437,7 +457,20 @@ nautilus_link_get_link_info_given_file_contents (const char *file_contents,
@@ -437,7 +457,20 @@ nautilus_link_get_link_info_given_file_c
gnome_desktop_item_get_string (desktop_file, "Exec") != NULL) {
*is_launcher = TRUE;
}
@ -226,11 +228,11 @@ index abe244a..a6625d7 100644
gnome_desktop_item_unref (desktop_file);
}
diff --git a/libnautilus-private/nautilus-link.h b/libnautilus-private/nautilus-link.h
index 4a5eb94..aba3103 100644
--- a/libnautilus-private/nautilus-link.h
+++ b/libnautilus-private/nautilus-link.h
@@ -46,7 +46,8 @@ void nautilus_link_get_link_info_given_file_contents (const char
Index: nautilus-2.23.4/libnautilus-private/nautilus-link.h
===================================================================
--- nautilus-2.23.4.orig/libnautilus-private/nautilus-link.h
+++ nautilus-2.23.4/libnautilus-private/nautilus-link.h
@@ -46,7 +46,8 @@ void nautilus_link_get_link_
char **uri,
char **name,
char **icon,

View File

@ -1,13 +0,0 @@
diff -upr nautilus-2.22.2-pre/src/nautilus-image-properties-page.c nautilus-2.22.2-post/src/nautilus-image-properties-page.c
--- nautilus-2.22.2-pre/src/nautilus-image-properties-page.c 2008-03-29 03:40:25.000000000 -0600
+++ nautilus-2.22.2-post/src/nautilus-image-properties-page.c 2008-05-01 01:17:45.000000000 -0500
@@ -228,7 +228,7 @@ append_tag_value_pair (GString *string,
static void
append_exifdata_string (ExifData *exifdata, GString *string)
{
- if (exifdata->ifd[0] && exifdata->ifd[0]->count) {
+ if (exifdata && exifdata->ifd[0] && exifdata->ifd[0]->count) {
append_tag_value_pair (string, exifdata, EXIF_TAG_MAKE, _("Camera Brand"));
append_tag_value_pair (string, exifdata, EXIF_TAG_MODEL, _("Camera Model"));
Only in nautilus-2.22.2-post/src: nautilus-image-properties-page.c~

View File

@ -1,61 +0,0 @@
--- branches/gnome-2-22/libnautilus-private/nautilus-file-operations.c 2008/05/13 12:49:14 14159
+++ branches/gnome-2-22/libnautilus-private/nautilus-file-operations.c 2008/05/13 12:50:09 14160
@@ -4779,15 +4779,44 @@
gpointer done_callback_data)
{
GList *locations;
+ GList *p;
GFile *dest, *src_dir;
GtkWindow *parent_window;
-
+ gboolean target_is_mapping;
+ gboolean have_nonmapping_source;
+ char *file_scheme;
+
dest = NULL;
+ target_is_mapping = FALSE;
+ have_nonmapping_source = FALSE;
+
if (target_dir) {
dest = g_file_new_for_uri (target_dir);
+ file_scheme = g_file_get_uri_scheme (dest);
+ if (strcmp (file_scheme, "burn") == 0) {
+ target_is_mapping = TRUE;
+ }
+ g_free (file_scheme);
}
locations = location_list_from_uri_list (item_uris);
-
+
+ for (p = location_list_from_uri_list (item_uris); p != NULL; p = p->next) {
+ file_scheme = g_file_get_uri_scheme ((GFile *)p->data);
+
+ if (strcmp (file_scheme, "burn") != 0) {
+ have_nonmapping_source = TRUE;
+ }
+
+ g_free (file_scheme);
+ }
+
+ if (target_is_mapping && have_nonmapping_source && copy_action == GDK_ACTION_MOVE) {
+ /* never move to "burn:///", but fall back to copy.
+ * This is a workaround, because otherwise the source files would be removed.
+ */
+ copy_action = GDK_ACTION_COPY;
+ }
+
parent_window = NULL;
if (parent_view) {
parent_window = (GtkWindow *)gtk_widget_get_ancestor (parent_view, GTK_TYPE_WINDOW);
--- branches/gnome-2-22/src/file-manager/fm-properties-window.c 2008/05/13 12:49:14 14159
+++ branches/gnome-2-22/src/file-manager/fm-properties-window.c 2008/05/13 12:50:09 14160
@@ -5416,6 +5416,9 @@
g_list_free (window->details->permission_buttons);
window->details->permission_buttons = NULL;
+ g_list_free (window->details->permission_combos);
+ window->details->permission_combos = NULL;
+
if (window->details->initial_permissions) {
g_hash_table_destroy (window->details->initial_permissions);
window->details->initial_permissions = NULL;

View File

@ -0,0 +1,35 @@
Index: src/nautilus-window.c
===================================================================
--- src/nautilus-window.c (révision 14232)
+++ src/nautilus-window.c (copie de travail)
@@ -201,27 +201,16 @@ nautilus_window_ui_update (NautilusWindo
gtk_ui_manager_ensure_update (window->details->ui_manager);
}
-static gboolean
-nautilus_window_clear_status (gpointer callback_data)
-{
- NautilusWindow *window;
-
- window = NAUTILUS_WINDOW (callback_data);
-
- gtk_statusbar_pop (GTK_STATUSBAR (window->details->statusbar), 0); /* clear any previous message, underflow is allowed */
-
- return FALSE;
-}
-
void
nautilus_window_set_status (NautilusWindow *window, const char *text)
{
g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+ /* clear any previous message, underflow is allowed */
+ gtk_statusbar_pop (GTK_STATUSBAR (window->details->statusbar), 0);
+
if (text != NULL && text[0] != '\0') {
gtk_statusbar_push (GTK_STATUSBAR (window->details->statusbar), 0, text);
- } else {
- nautilus_window_clear_status (window);
}
}

View File

@ -1,8 +1,30 @@
-------------------------------------------------------------------
Sun Jun 8 22:00:26 CEST 2008 - hpj@suse.de
Fri Jun 20 18:09:05 CEST 2008 - maw@suse.de
- Update to version 2.23.4:
+ Support new gnome-session autostart semantics
+ Add initial Gtk-doc support
+ Many other improvements; for a fuller account, see the NEWS
file
+ Updated translations
+ Drop obsolete patches:
nautilus-bgo364843-name-copy-dont-overflow-max-path-len.diff,
nautilus-bnc376070-null-exifdata-crash.patch, and
nautilus-bnc393226-dont-move-to-burn.patchn
+ Respin the following patches:
nautilus-bnc366100-bgo338933-ignore-foreign-desktop-files.diff
and nautilus-bnc363122-lockdown-context-menus.diff.
-------------------------------------------------------------------
Sat Jun 7 05:13:17 CEST 2008 - hpj@suse.de
- Back out nautilus-bnc376669-always-update-thumbnail.patch
(bnc#376669). It was causing continuous re-thumbnailing.
(bnc#376669).
-------------------------------------------------------------------
Fri Jun 6 14:11:22 CEST 2008 - rodrigo@suse.de
- Add nautilus-bnc397852-huge-memory-leak.patch (bnc#397852)
-------------------------------------------------------------------
Thu May 22 00:50:50 CEST 2008 - hpj@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package nautilus (Version 2.22.2)
# spec file for package nautilus (Version 2.23.4)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -12,17 +12,15 @@
Name: nautilus
BuildRequires: cdparanoia eel-devel fdupes gnome-common gnome-desktop-devel gnome-icon-theme gnome-patch-translation gvfs-devel intltool libbeagle-devel libexempi-devel libexif-devel libgnomeui-devel libidl-devel librsvg-devel perl-XML-Parser update-desktop-files
BuildRequires: cdparanoia eel-devel fdupes gnome-common gnome-desktop-devel gnome-icon-theme gnome-patch-translation gtk-doc gvfs-devel intltool libbeagle-devel libexempi-devel libexif-devel libgnomeui-devel libidl-devel librsvg-devel perl-XML-Parser update-desktop-files
License: GPL v2 or later
Group: Productivity/File utilities
Version: 2.22.2
Release: 31
Version: 2.23.4
Release: 1
Summary: The GNOME 2.x Desktop File Manager
Source: ftp://ftp.gnome.org/pub/gnome/sources/nautilus/2.20/%{name}-%{version}.tar.bz2
Url: http://www.gnome.org
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# PATCH-FIX-UPSTREAM nautilus-bgo364843-name-copy-dont-overflow-max-path-len.diff bgo364843 -- make "longfilename (copy).txt" not overflow the maximum filename length
Patch2: nautilus-bgo364843-name-copy-dont-overflow-max-path-len.diff
# PATCH-FIX-UPSTREAM nautilus-bgo350950-search-desktop.diff bgo350950 federico@novell.com -- add a desktop file for Nautilus search interface
Patch4: nautilus-bgo350950-search-desktop.diff
# PATCH-FIX-UPSTREAM nautilus-bnc117333-bgo350962-folder-icon-for-menus-and-windows.diff bnc117333 bgo350962 federico@novell.com - Use a folder icon instead of a file cabinet window
@ -50,10 +48,8 @@ Patch19: nautilus-desktop-icon.patch
Patch20: nautilus-bnc363122-lockdown-context-menus.diff
# PATCH-FEATURE-UPSTREAM nautilus-bnc368446-network-in-places.patch bnc368446 bgo350974 vuntz@novell.com -- Add network:// in the places sidebar
Patch21: nautilus-bnc368446-network-in-places.patch
# PATCH-FIX-UPSTREAM nautilus-bnc-376070-null-exifdata-crash.patch bnc376070 hpj@novell.com
Patch22: nautilus-bnc376070-null-exifdata-crash.patch
# PATCH-FIX-UPSTREAM nautilus-bnc393226-dont-move-to-burn.patch bgo531750 bnc393226 hpj@novell.com
Patch24: nautilus-bnc393226-dont-move-to-burn.patch
# PATCH-FIX-UPSTREMA nautilus-bnc397852-huge-memory-leak.patch bnc397852 bgo536968 vuntz@novell.com
Patch25: nautilus-bnc397852-huge-memory-leak.patch
Requires: gnome-icon-theme
Requires: %{name}-lang = %{version}
Requires: gvfs
@ -86,7 +82,6 @@ features of the Nautilus file manager.
%prep
%setup -q
gnome-patch-translation-prepare
%patch2 -p1
%if ! %sles_version
%patch4 -p1
%endif
@ -103,8 +98,7 @@ gnome-patch-translation-prepare
%patch19 -p1
%patch20 -p1
%patch21
%patch22 -p1
%patch24 -p2
%patch25
gnome-patch-translation-update
%build
@ -175,6 +169,7 @@ fi
%{_datadir}/icons/hicolor/*/*/*.*
%{_libdir}/*.so.*
%{_libdir}/bonobo/servers/*.server
%{_mandir}/man1/nautilus*.1.gz
%dir %{_libdir}/nautilus
%dir %{_libdir}/nautilus/extensions-1.0
%dir %{_libdir}/nautilus/extensions-2.0
@ -186,11 +181,29 @@ fi
%{_libdir}/*.so
%{_includedir}/*
%{_libdir}/pkgconfig/*.pc
# I'd put this in a -doc package, but it's only useful for developers AFAICT
%{_datadir}/gtk-doc/html/libnautilus-extension
%changelog
* Mon Jun 09 2008 hpj@suse.de
* Fri Jun 20 2008 maw@suse.de
- Update to version 2.23.4:
+ Support new gnome-session autostart semantics
+ Add initial Gtk-doc support
+ Many other improvements; for a fuller account, see the NEWS
file
+ Updated translations
+ Drop obsolete patches:
nautilus-bgo364843-name-copy-dont-overflow-max-path-len.diff,
nautilus-bnc376070-null-exifdata-crash.patch, and
nautilus-bnc393226-dont-move-to-burn.patchn
+ Respin the following patches:
nautilus-bnc366100-bgo338933-ignore-foreign-desktop-files.diff
and nautilus-bnc363122-lockdown-context-menus.diff.
* Sat Jun 07 2008 hpj@suse.de
- Back out nautilus-bnc376669-always-update-thumbnail.patch
(bnc#376669). It was causing continuous re-thumbnailing.
(bnc#376669).
* Fri Jun 06 2008 rodrigo@suse.de
- Add nautilus-bnc397852-huge-memory-leak.patch (bnc#397852)
* Thu May 22 2008 hpj@suse.de
- Add nautilus-bnc393226-dont-move-to-burn.patch (bnc#393226).
* Tue May 20 2008 hpj@suse.de