summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-01-04 14:11:49 +0200
committerErnestas Kulik <ernestask@gnome.org>2018-01-04 14:11:49 +0200
commitbf104ec9d99866ca9de122d8f691910591009940 (patch)
treec3a9e3c187f686975decba1c254a33cd0aacad7e /src
parent890760bbce7585943ac3eed9375eddd19ef4b932 (diff)
downloadnautilus-bf104ec9d99866ca9de122d8f691910591009940.tar.gz
files-view: use GLib for action name escaping
URI-encoding the strings takes care of all illegal characters and removes the need for our own escaping method. Fixes #69.
Diffstat (limited to 'src')
-rw-r--r--src/nautilus-files-view.c26
-rw-r--r--src/nautilus-ui-utilities.c74
-rw-r--r--src/nautilus-ui-utilities.h2
3 files changed, 16 insertions, 86 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index cdf4abe67..889559421 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -4925,7 +4925,8 @@ build_menu_for_extension_menu_items (NautilusFilesView *view,
NautilusMenu *menu;
GMenuItem *menu_item;
char *name, *label;
- char *extension_id, *prefix, *parsed_name, *detailed_action_name;
+ g_autofree gchar *escaped_name = NULL;
+ char *extension_id, *detailed_action_name;
item = NAUTILUS_MENU_ITEM (l->data);
@@ -4935,12 +4936,12 @@ build_menu_for_extension_menu_items (NautilusFilesView *view,
"name", &name,
NULL);
- extension_id = g_strdup_printf ("%s_%d", extension_prefix, idx);
- prefix = g_strdup_printf ("extension_%s_", extension_id);
- parsed_name = nautilus_escape_action_name (name, prefix);
- add_extension_action (view, item, parsed_name);
+ escaped_name = g_uri_escape_string (name, NULL, TRUE);
+ extension_id = g_strdup_printf ("extension_%s_%d_%s",
+ extension_prefix, idx, escaped_name);
+ add_extension_action (view, item, extension_id);
- detailed_action_name = g_strconcat ("view.", parsed_name, NULL);
+ detailed_action_name = g_strconcat ("view.", extension_id, NULL);
menu_item = g_menu_item_new (label, detailed_action_name);
if (menu != NULL)
@@ -4960,8 +4961,6 @@ build_menu_for_extension_menu_items (NautilusFilesView *view,
idx++;
g_free (extension_id);
- g_free (parsed_name);
- g_free (prefix);
g_free (detailed_action_name);
g_free (name);
g_free (label);
@@ -5272,6 +5271,8 @@ add_script_to_scripts_menus (NautilusFilesView *view,
{
NautilusFilesViewPrivate *priv;
gchar *name;
+ g_autofree gchar *uri = NULL;
+ g_autofree gchar *escaped_uri = NULL;
GdkPixbuf *mimetype_icon;
gchar *action_name, *detailed_action_name;
ScriptLaunchParameters *launch_parameters;
@@ -5283,7 +5284,10 @@ add_script_to_scripts_menus (NautilusFilesView *view,
launch_parameters = script_launch_parameters_new (file, view);
name = nautilus_file_get_display_name (file);
- action_name = nautilus_escape_action_name (name, "script_");
+
+ uri = nautilus_file_get_uri (file);
+ escaped_uri = g_uri_escape_string (uri, NULL, TRUE);
+ action_name = g_strconcat ("script_", escaped_uri, NULL);
action = G_ACTION (g_simple_action_new (action_name, NULL));
@@ -5528,6 +5532,7 @@ add_template_to_templates_menus (NautilusFilesView *view,
{
NautilusFilesViewPrivate *priv;
char *tmp, *uri, *name;
+ g_autofree gchar *escaped_uri = NULL;
GdkPixbuf *mimetype_icon;
char *action_name, *detailed_action_name;
CreateTemplateParameters *parameters;
@@ -5540,7 +5545,8 @@ add_template_to_templates_menus (NautilusFilesView *view,
g_free (tmp);
uri = nautilus_file_get_uri (file);
- action_name = nautilus_escape_action_name (uri, "template_");
+ escaped_uri = g_uri_escape_string (uri, NULL, TRUE);
+ action_name = g_strconcat ("template_", escaped_uri, NULL);
action = G_ACTION (g_simple_action_new (action_name, NULL));
parameters = create_template_parameters_new (file, view);
diff --git a/src/nautilus-ui-utilities.c b/src/nautilus-ui-utilities.c
index 754f0fb64..58958e5e4 100644
--- a/src/nautilus-ui-utilities.c
+++ b/src/nautilus-ui-utilities.c
@@ -189,80 +189,6 @@ nautilus_pop_up_context_menu (GtkWidget *parent,
g_object_unref (gtk_menu);
}
-char *
-nautilus_escape_action_name (const char *action_name,
- const char *prefix)
-{
- GString *s;
-
- if (action_name == NULL)
- {
- return NULL;
- }
-
- s = g_string_new (prefix);
-
- while (*action_name != 0)
- {
- switch (*action_name)
- {
- case '\\':
- {
- g_string_append (s, "\\\\");
- }
- break;
-
- case '/':
- {
- g_string_append (s, "\\s");
- }
- break;
-
- case '&':
- {
- g_string_append (s, "\\a");
- }
- break;
-
- case '"':
- {
- g_string_append (s, "\\q");
- }
- break;
-
- case ' ':
- {
- g_string_append (s, "+");
- }
- break;
-
- case '(':
- {
- g_string_append (s, "#");
- }
- break;
-
- case ')':
- {
- g_string_append (s, "^");
- }
- break;
-
- case ':':
- {
- g_string_append (s, "\\\\");
- }
- break;
-
- default:
- g_string_append_c (s, *action_name);
- }
-
- action_name++;
- }
- return g_string_free (s, FALSE);
-}
-
#define NAUTILUS_THUMBNAIL_FRAME_LEFT 3
#define NAUTILUS_THUMBNAIL_FRAME_TOP 3
#define NAUTILUS_THUMBNAIL_FRAME_RIGHT 3
diff --git a/src/nautilus-ui-utilities.h b/src/nautilus-ui-utilities.h
index 60eac3061..0dfd31ca9 100644
--- a/src/nautilus-ui-utilities.h
+++ b/src/nautilus-ui-utilities.h
@@ -38,8 +38,6 @@ void nautilus_pop_up_context_menu (GtkWidget *parent,
GMenu *menu,
GdkEventButton *button_event);
-char * nautilus_escape_action_name (const char *action_name,
- const char *prefix);
void nautilus_ui_frame_image (GdkPixbuf **pixbuf);
void nautilus_ui_frame_video (GdkPixbuf **pixbuf);