nautilus r14905 - in trunk: . libnautilus-private src/file-manager
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: nautilus r14905 - in trunk: . libnautilus-private src/file-manager
- Date: Sat, 31 Jan 2009 19:06:37 +0000 (UTC)
Author: cosimoc
Date: Sat Jan 31 19:06:37 2009
New Revision: 14905
URL: http://svn.gnome.org/viewvc/nautilus?rev=14905&view=rev
Log:
2009-01-31 Cosimo Cecchi <cosimoc gnome org>
* libnautilus-private/nautilus-directory-async.c (lacks_link_info),
(monitor_includes_file), (link_info_done), (link_info_got_data),
(link_info_start):
* libnautilus-private/nautilus-file-private.h:
* libnautilus-private/nautilus-file.c (nautilus_file_clear_info),
(nautilus_file_should_show),
(filter_hidden_and_backup_partition_callback),
(nautilus_file_is_foreign_link):
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-link.c (string_array_contains),
(nautilus_link_get_link_info_given_file_contents):
* libnautilus-private/nautilus-link.h:
* src/file-manager/fm-desktop-icon-view.c
(fm_desktop_icon_view_init):
* src/file-manager/fm-directory-view.c (fm_directory_view_init),
(fm_directory_view_should_show_file),
(fm_directory_view_set_show_foreign):
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-tree-model.c (should_show_file):
Follow the "OnlyShowIn" and "NotShowIn" == GNOME keys for
.desktop files, when they are put on the desktop.
Thanks to Federico Mena Quintero and Jared Moore (#338933).
Modified:
trunk/ChangeLog
trunk/libnautilus-private/nautilus-directory-async.c
trunk/libnautilus-private/nautilus-file-private.h
trunk/libnautilus-private/nautilus-file.c
trunk/libnautilus-private/nautilus-file.h
trunk/libnautilus-private/nautilus-link.c
trunk/libnautilus-private/nautilus-link.h
trunk/src/file-manager/fm-desktop-icon-view.c
trunk/src/file-manager/fm-directory-view.c
trunk/src/file-manager/fm-directory-view.h
trunk/src/file-manager/fm-tree-model.c
Modified: trunk/libnautilus-private/nautilus-directory-async.c
==============================================================================
--- trunk/libnautilus-private/nautilus-directory-async.c (original)
+++ trunk/libnautilus-private/nautilus-directory-async.c Sat Jan 31 19:06:37 2009
@@ -199,7 +199,8 @@
const char *uri,
const char *name,
const char *icon,
- gboolean is_launcher);
+ gboolean is_launcher,
+ gboolean is_foreign);
static void move_file_to_low_priority_queue (NautilusDirectory *directory,
NautilusFile *file);
static void move_file_to_extension_queue (NautilusDirectory *directory,
@@ -1733,7 +1734,7 @@
if (nautilus_file_is_nautilus_link (file)) {
return TRUE;
} else {
- link_info_done (file->details->directory, file, NULL, NULL, NULL, FALSE);
+ link_info_done (file->details->directory, file, NULL, NULL, NULL, FALSE, FALSE);
return FALSE;
}
} else {
@@ -2381,7 +2382,8 @@
}
return nautilus_file_should_show (file,
monitor->monitor_hidden_files,
- monitor->monitor_backup_files);
+ monitor->monitor_backup_files,
+ TRUE);
}
static gboolean
@@ -3575,7 +3577,8 @@
const char *uri,
const char *name,
const char *icon,
- gboolean is_launcher)
+ gboolean is_launcher,
+ gboolean is_foreign)
{
file->details->link_info_is_up_to_date = TRUE;
@@ -3593,6 +3596,7 @@
}
file->details->custom_icon = g_strdup (icon);
file->details->is_launcher = is_launcher;
+ file->details->is_foreign_link = is_foreign;
nautilus_directory_async_state_changed (directory);
}
@@ -3639,6 +3643,7 @@
{
char *link_uri, *uri, *name, *icon;
gboolean is_launcher;
+ gboolean is_foreign;
nautilus_directory_ref (directory);
@@ -3646,19 +3651,20 @@
name = NULL;
icon = NULL;
is_launcher = FALSE;
+ is_foreign = FALSE;
/* Handle the case where we read the Nautilus link. */
if (result) {
link_uri = nautilus_file_get_uri (file);
nautilus_link_get_link_info_given_file_contents (file_contents, bytes_read, link_uri,
- &uri, &name, &icon, &is_launcher);
+ &uri, &name, &icon, &is_launcher, &is_foreign);
g_free (link_uri);
} else {
/* FIXME bugzilla.gnome.org 42433: We should report this error to the user. */
}
nautilus_file_ref (file);
- link_info_done (directory, file, uri, name, icon, is_launcher);
+ link_info_done (directory, file, uri, name, icon, is_launcher, is_foreign);
nautilus_file_changed (file);
nautilus_file_unref (file);
@@ -3746,7 +3752,7 @@
/* If it's not a link we are done. If it is, we need to read it. */
if (!nautilus_style_link) {
- link_info_done (directory, file, NULL, NULL, NULL, FALSE);
+ link_info_done (directory, file, NULL, NULL, NULL, FALSE, FALSE);
} 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);
Modified: trunk/libnautilus-private/nautilus-file-private.h
==============================================================================
--- trunk/libnautilus-private/nautilus-file-private.h (original)
+++ trunk/libnautilus-private/nautilus-file-private.h Sat Jan 31 19:06:37 2009
@@ -198,6 +198,7 @@
eel_boolean_bit has_open_window : 1;
eel_boolean_bit is_launcher : 1;
+ eel_boolean_bit is_foreign_link : 1;
eel_boolean_bit is_symlink : 1;
eel_boolean_bit is_mountpoint : 1;
eel_boolean_bit is_hidden : 1;
Modified: trunk/libnautilus-private/nautilus-file.c
==============================================================================
--- trunk/libnautilus-private/nautilus-file.c (original)
+++ trunk/libnautilus-private/nautilus-file.c Sat Jan 31 19:06:37 2009
@@ -330,6 +330,7 @@
file->details->thumbnailing_failed = FALSE;
file->details->is_launcher = FALSE;
+ file->details->is_foreign_link = FALSE;
file->details->is_symlink = FALSE;
file->details->is_hidden = FALSE;
file->details->is_backup = FALSE;
@@ -2790,14 +2791,16 @@
gboolean
nautilus_file_should_show (NautilusFile *file,
gboolean show_hidden,
- gboolean show_backup)
+ gboolean show_backup,
+ gboolean show_foreign)
{
/* Never hide any files in trash. */
if (nautilus_file_is_in_trash (file)) {
return TRUE;
} else {
return (show_hidden || (!nautilus_file_is_hidden_file (file) && !is_file_hidden (file))) &&
- (show_backup || !nautilus_file_is_backup_file (file));
+ (show_backup || !nautilus_file_is_backup_file (file)) &&
+ (show_foreign || !(nautilus_file_is_in_desktop (file) && nautilus_file_is_foreign_link (file)));
}
}
@@ -2837,7 +2840,8 @@
return nautilus_file_should_show (file,
options & SHOW_HIDDEN,
- options & SHOW_BACKUP);
+ options & SHOW_BACKUP,
+ TRUE);
}
GList *
@@ -3201,6 +3205,12 @@
}
gboolean
+nautilus_file_is_foreign_link (NautilusFile *file)
+{
+ return file->details->is_foreign_link;
+}
+
+gboolean
nautilus_file_has_activation_uri (NautilusFile *file)
{
return file->details->activation_location != NULL;
Modified: trunk/libnautilus-private/nautilus-file.h
==============================================================================
--- trunk/libnautilus-private/nautilus-file.h (original)
+++ trunk/libnautilus-private/nautilus-file.h Sat Jan 31 19:06:37 2009
@@ -387,7 +387,8 @@
gboolean nautilus_file_is_backup_file (NautilusFile *file);
gboolean nautilus_file_should_show (NautilusFile *file,
gboolean show_hidden,
- gboolean show_backup);
+ gboolean show_backup,
+ gboolean show_foreign);
GList *nautilus_file_list_filter_hidden_and_backup (GList *files,
gboolean show_hidden,
gboolean show_backup);
@@ -397,6 +398,7 @@
* Getting this can require reading the contents of the file.
*/
gboolean nautilus_file_is_launcher (NautilusFile *file);
+gboolean nautilus_file_is_foreign_link (NautilusFile *file);
gboolean nautilus_file_has_activation_uri (NautilusFile *file);
char * nautilus_file_get_activation_uri (NautilusFile *file);
GFile * nautilus_file_get_activation_location (NautilusFile *file);
Modified: trunk/libnautilus-private/nautilus-link.c
==============================================================================
--- trunk/libnautilus-private/nautilus-link.c (original)
+++ trunk/libnautilus-private/nautilus-link.c Sat Jan 31 19:06:37 2009
@@ -502,6 +502,23 @@
return retval;
}
+static gboolean
+string_array_contains (char **array,
+ const char *str)
+{
+ char **p;
+
+ if (!array)
+ return FALSE;
+
+ for (p = array; *p; p++)
+ if (g_ascii_strcasecmp (*p, str) == 0) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
void
nautilus_link_get_link_info_given_file_contents (const char *file_contents,
int link_file_size,
@@ -509,10 +526,13 @@
char **uri,
char **name,
char **icon,
- gboolean *is_launcher)
+ gboolean *is_launcher,
+ gboolean *is_foreign)
{
GKeyFile *key_file;
char *type;
+ char **only_show_in;
+ char **not_show_in;
if (!is_link_data (file_contents, link_file_size)) {
return;
@@ -539,6 +559,21 @@
*is_launcher = TRUE;
}
g_free (type);
-
+
+ *is_foreign = FALSE;
+ only_show_in = g_key_file_get_string_list (key_file, MAIN_GROUP,
+ "OnlyShowIn", NULL, NULL);
+ if (only_show_in && !string_array_contains (only_show_in, "GNOME")) {
+ *is_foreign = TRUE;
+ }
+ g_strfreev (only_show_in);
+
+ not_show_in = g_key_file_get_string_list (key_file, MAIN_GROUP,
+ "NotShowIn", NULL, NULL);
+ if (not_show_in && string_array_contains (not_show_in, "GNOME")) {
+ *is_foreign = TRUE;
+ }
+ g_strfreev (not_show_in);
+
g_key_file_free (key_file);
}
Modified: trunk/libnautilus-private/nautilus-link.h
==============================================================================
--- trunk/libnautilus-private/nautilus-link.h (original)
+++ trunk/libnautilus-private/nautilus-link.h Sat Jan 31 19:06:37 2009
@@ -48,6 +48,7 @@
char **uri,
char **name,
char **icon,
- gboolean *is_launcher);
+ gboolean *is_launcher,
+ gboolean *is_foreign);
#endif /* NAUTILUS_LINK_H */
Modified: trunk/src/file-manager/fm-desktop-icon-view.c
==============================================================================
--- trunk/src/file-manager/fm-desktop-icon-view.c (original)
+++ trunk/src/file-manager/fm-desktop-icon-view.c Sat Jan 31 19:06:37 2009
@@ -562,6 +562,9 @@
fm_directory_view_ignore_hidden_file_preferences
(FM_DIRECTORY_VIEW (desktop_icon_view));
+
+ fm_directory_view_set_show_foreign (FM_DIRECTORY_VIEW (desktop_icon_view),
+ FALSE);
/* Set our default layout mode */
nautilus_icon_container_set_layout_mode (icon_container,
Modified: trunk/src/file-manager/fm-directory-view.c
==============================================================================
--- trunk/src/file-manager/fm-directory-view.c (original)
+++ trunk/src/file-manager/fm-directory-view.c Sat Jan 31 19:06:37 2009
@@ -233,6 +233,7 @@
gboolean sort_directories_first;
+ gboolean show_foreign_files;
gboolean show_hidden_files;
gboolean show_backup_files;
gboolean ignore_hidden_file_preferences;
@@ -1861,6 +1862,9 @@
view->details = g_new0 (FMDirectoryViewDetails, 1);
+ /* Default to true; desktop-icon-view sets to false */
+ view->details->show_foreign_files = TRUE;
+
view->details->non_ready_files =
g_hash_table_new_full (file_and_directory_hash,
file_and_directory_equal,
@@ -8891,7 +8895,8 @@
{
return nautilus_file_should_show (file,
view->details->show_hidden_files,
- view->details->show_backup_files);
+ view->details->show_backup_files,
+ view->details->show_foreign_files);
}
static gboolean
@@ -9007,6 +9012,13 @@
view->details->ignore_hidden_file_preferences = TRUE;
}
+void
+fm_directory_view_set_show_foreign (FMDirectoryView *view,
+ gboolean show_foreign)
+{
+ view->details->show_foreign_files = show_foreign;
+}
+
char *
fm_directory_view_get_uri (FMDirectoryView *view)
{
Modified: trunk/src/file-manager/fm-directory-view.h
==============================================================================
--- trunk/src/file-manager/fm-directory-view.h (original)
+++ trunk/src/file-manager/fm-directory-view.h Sat Jan 31 19:06:37 2009
@@ -436,6 +436,8 @@
const char *parent_uri,
NautilusFile *source);
void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view);
+void fm_directory_view_set_show_foreign (FMDirectoryView *view,
+ gboolean show_foreign);
void fm_directory_view_init_view_iface (NautilusViewIface *iface);
void fm_directory_view_handle_netscape_url_drop (FMDirectoryView *view,
const char *encoded_url,
Modified: trunk/src/file-manager/fm-tree-model.c
==============================================================================
--- trunk/src/file-manager/fm-tree-model.c (original)
+++ trunk/src/file-manager/fm-tree-model.c Sat Jan 31 19:06:37 2009
@@ -901,7 +901,8 @@
should = nautilus_file_should_show (file,
model->details->show_hidden_files,
- model->details->show_backup_files);
+ model->details->show_backup_files,
+ TRUE);
if (should
&& model->details->show_only_directories
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]