mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-09 12:25:48 +01:00
Merge branch 'g-win32-app-info-enhancements' into 'main'
GWin32AppInfo: Check for local file path first Closes #2843 See merge request GNOME/glib!3160
This commit is contained in:
commit
a0ea1d7093
@ -4334,10 +4334,25 @@ expand_macro_single (char macro, file_or_uri *obj)
|
|||||||
case '8':
|
case '8':
|
||||||
case '9':
|
case '9':
|
||||||
/* TODO: handle 'l' and 'd' differently (longname and desktop name) */
|
/* TODO: handle 'l' and 'd' differently (longname and desktop name) */
|
||||||
if (obj->uri)
|
if (obj->file)
|
||||||
result = g_strdup (obj->uri);
|
{
|
||||||
else if (obj->file)
|
result = g_strdup (obj->file);
|
||||||
result = g_strdup (obj->file);
|
}
|
||||||
|
else if (obj->uri)
|
||||||
|
{
|
||||||
|
const char *prefix = "file:///";
|
||||||
|
const size_t prefix_len = strlen (prefix);
|
||||||
|
|
||||||
|
if (g_str_has_prefix (obj->uri, prefix) == 0 && obj->uri[prefix_len] != 0)
|
||||||
|
{
|
||||||
|
GFile *file = g_file_new_for_uri (obj->uri);
|
||||||
|
result = g_file_get_path (file);
|
||||||
|
g_object_unref (file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
result = g_strdup (obj->uri);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
case 'U':
|
case 'U':
|
||||||
@ -5283,14 +5298,18 @@ make_item_array (gboolean for_files,
|
|||||||
}
|
}
|
||||||
|
|
||||||
hr = SHParseDisplayName (file_or_uri_utf16, NULL, &item_ids[i], 0, NULL);
|
hr = SHParseDisplayName (file_or_uri_utf16, NULL, &item_ids[i], 0, NULL);
|
||||||
g_free (file_or_uri_utf16);
|
|
||||||
|
|
||||||
if (FAILED (hr))
|
if (FAILED (hr))
|
||||||
{
|
{
|
||||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
"File or URI `%S' cannot be parsed by SHParseDisplayName: 0x%lx", file_or_uri_utf16, hr);
|
"File or URI `%S' cannot be parsed by SHParseDisplayName: 0x%lx",
|
||||||
|
file_or_uri_utf16, hr);
|
||||||
|
|
||||||
|
g_free (file_or_uri_utf16);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free (file_or_uri_utf16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == count)
|
if (i == count)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user