1
1

1999-02-28 Miguel de Icaza <miguel@nuclecu.unam.mx>

* gdnd.c (drop_on_file): Fix these so that they can use the
	metadata drop-action.
Этот коммит содержится в:
Miguel de Icaza 1999-03-01 00:54:47 +00:00
родитель 3d0c3214fa
Коммит 1caafe5ce5
2 изменённых файлов: 27 добавлений и 26 удалений

Просмотреть файл

@ -1,5 +1,8 @@
1999-02-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdnd.c (drop_on_file): Fix these so that they can use the
metadata drop-action.
* gdesktop.c (desktop_icon_info_open): Ugly. Needs to share more
code here. Use the metadata first, and the is_exe to find out how
to launch an application.

Просмотреть файл

@ -317,42 +317,13 @@ drop_on_file (GdkDragContext *context, GtkSelectionData *selection_data,
const char *mime_type;
char *full_name;
int retval;
retval = FALSE; /* assume we cannot drop */
full_name = g_concat_dir_and_file (directory, dest_fe->fname);
/* 1. Try to use a metadata-based drop action */
if (gnome_metadata_get (full_name, "drop-action", &size, &buf) == 0) {
/*action_drop (dest_name, buf, context, selection_data);*/ /* Fixme: i'm undefined */
g_free (buf);
retval = TRUE;
goto out;
}
/* 2. Try a drop action from the MIME-type */
mime_type = gnome_mime_type_or_default (full_name, NULL);
if (mime_type) {
const char *action;
action = gnome_mime_get_value (mime_type, "drop-action");
if (action) {
/* Fixme: i'm undefined */
/*action_drop (dest_name, action, context, selection_data);*/
retval = TRUE;
goto out;
}
}
/* 3. If executable, try metadata keys for "open" */
if (is_exe (dest_fe->buf.st_mode) && if_link_is_exe (directory, dest_fe)) {
GList *names, *l;
int len, i;
char **drops;
/* FIXME: handle the case for Netscape URLs */
retval = FALSE; /* assume we cannot drop */
full_name = g_concat_dir_and_file (directory, dest_fe->fname);
/* Convert the data list into an array of strings */
@ -370,13 +341,39 @@ drop_on_file (GdkDragContext *context, GtkSelectionData *selection_data,
}
drops[i] = NULL;
/* 1. Try to use a metadata-based drop action */
if (gnome_metadata_get (full_name, "drop-action", &size, &buf) == 0) {
exec_extension (full_name, buf, drops, NULL, 0, 0);
g_free (buf);
retval = TRUE;
goto out;
}
/* 2. Try a drop action from the MIME-type */
mime_type = gnome_mime_type_or_default (full_name, NULL);
if (mime_type) {
const char *action;
action = gnome_mime_get_value (mime_type, "drop-action");
if (action) {
exec_extension (full_name, action, drops, NULL, 0, 0);
retval = TRUE;
goto out;
}
}
/* 3. If executable, try metadata keys for "open" */
if (is_exe (dest_fe->buf.st_mode) && if_link_is_exe (directory, dest_fe)) {
/* FIXME: handle the case for Netscape URLs */
if (gnome_metadata_get (full_name, "open", &size, &buf) == 0)
exec_extension (full_name, buf, drops, NULL, 0, 0);
else
exec_extension (full_name, "%f %q", drops, NULL, 0, 0);
g_free (drops);
gnome_uri_list_free_strings (names);
g_free (buf);
retval = TRUE;
@ -384,7 +381,8 @@ drop_on_file (GdkDragContext *context, GtkSelectionData *selection_data,
}
out:
g_free (drops);
gnome_uri_list_free_strings (names);
g_free (full_name);
return retval;
}