Skip to content

Commit

Permalink
Fix DBus file dialog for Gtk/GNOME
Browse files Browse the repository at this point in the history
Signed-off-by: falkTX <falktx@falktx.com>
  • Loading branch information
falkTX committed Nov 12, 2021
1 parent c6d9420 commit d290ac2
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions distrho/extra/FileBrowserDialog.cpp
Expand Up @@ -473,12 +473,29 @@ bool fileBrowserIdle(const FileBrowserHandle handle)
DBusMessageIter dict;
dbus_message_iter_recurse(&dictArray, &dict);

// start with the string "uris"
// look for dict with string "uris"
DISTRHO_SAFE_ASSERT_BREAK(dbus_message_iter_get_arg_type(&dict) == DBUS_TYPE_STRING);

const char* key = nullptr;
dbus_message_iter_get_basic(&dict, &key);
DISTRHO_SAFE_ASSERT_BREAK(key != nullptr && std::strcmp(key, "uris") == 0);
DISTRHO_SAFE_ASSERT_BREAK(key != nullptr);

// keep going until we find it
while (std::strcmp(key, "uris") != 0)
{
key = nullptr;
dbus_message_iter_next(&dictArray);
DISTRHO_SAFE_ASSERT_BREAK(dbus_message_iter_get_arg_type(&dictArray) == DBUS_TYPE_DICT_ENTRY);

dbus_message_iter_recurse(&dictArray, &dict);
DISTRHO_SAFE_ASSERT_BREAK(dbus_message_iter_get_arg_type(&dict) == DBUS_TYPE_STRING);

dbus_message_iter_get_basic(&dict, &key);
DISTRHO_SAFE_ASSERT_BREAK(key != nullptr);
}

if (key == nullptr)
break;

// then comes variant
dbus_message_iter_next(&dict);
Expand Down

0 comments on commit d290ac2

Please sign in to comment.