Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dliang
nautilus
nautilus-hide-desktop-files.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nautilus-hide-desktop-files.patch of Package nautilus
? nautilus-vfolder-hidden-files.patch ? libnautilus-extension/Makefile ? libnautilus-extension/Makefile.in ? libnautilus-extension/libnautilus-extension.pc Index: libnautilus-private/nautilus-file.c ================================================================================ --- libnautilus-private/nautilus-file.c +++ libnautilus-private/nautilus-file.c @@ -2356,10 +2356,61 @@ return result; } +static gboolean +exec_exists (const char *exec) +{ + if (g_path_is_absolute (exec)) { + if (access (exec, X_OK) == 0) + return TRUE; + else + return FALSE; + } else { + char *tryme; + + tryme = g_find_program_in_path (exec); + if (tryme != NULL) { + g_free (tryme); + return TRUE; + } + return FALSE; + } +} gboolean nautilus_file_is_hidden_file (NautilusFile *file) { + char *scheme; + + scheme = nautilus_file_get_uri_scheme (file); + + if (!strcmp (scheme, "applications") + && nautilus_file_is_nautilus_link (file)) { + char *uri; + char *tryexec; + + uri = nautilus_file_get_uri (file); + + if (nautilus_link_desktop_file_local_is_separator (uri)) { + g_free (uri); + g_free (scheme); + return TRUE; + } + + tryexec = nautilus_link_desktop_file_local_get_tryexec (uri); + if (tryexec && tryexec[0] && !exec_exists (tryexec)) { + g_free (tryexec); + g_free (uri); + g_free (scheme); + + return TRUE; + } + + g_free (uri); + g_free (tryexec); + } + + g_free (scheme); + return nautilus_file_name_matches_hidden_pattern (file->details->relative_uri); } --- libnautilus-private/nautilus-link-desktop-file.c +++ libnautilus-private/nautilus-link-desktop-file.c @@ -249,6 +249,31 @@ return retval; } +gboolean +nautilus_link_desktop_file_local_is_separator (const char *uri) +{ + char *type; + gboolean ret; + + type = slurp_key_string (uri, "Type", FALSE); + + if (!strcmp (type, "Separator")) { + ret = TRUE; + } else { + ret = FALSE; + } + + g_free (type); + + return ret; +} + +char * +nautilus_link_desktop_file_local_get_tryexec (const char *uri) +{ + return slurp_key_string (uri, "TryExec", FALSE); +} + static char * nautilus_link_desktop_file_get_link_name_from_desktop (GnomeDesktopItem *desktop_file) { --- libnautilus-private/nautilus-link-desktop-file.h +++ libnautilus-private/nautilus-link-desktop-file.h @@ -52,4 +52,7 @@ const GdkPoint *position, int screen); +gboolean nautilus_link_desktop_file_local_is_separator (const char *uri); +char *nautilus_link_desktop_file_local_get_tryexec (const char *uri); + #endif /* NAUTILUS_LINK_DESKTOP_FILE_H */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor