- while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
- if (strcmp (key, "display") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
- display = ev_display_open_if_needed (g_variant_get_string (value, NULL));
- } else if (strcmp (key, "screen") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
- screen_number = g_variant_get_int32 (value);
- } else if (strcmp (key, "mode") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_UINT32) {
- mode = g_variant_get_uint32 (value);
- } else if (strcmp (key, "page-label") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
- dest = ev_link_dest_new_page_label (g_variant_get_string (value, NULL));
- } else if (strcmp (key, "find-string") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
- search_string = g_variant_get_string (value, NULL);
- }
- }
- g_variant_iter_free (iter);
-
- if (display != NULL &&
- screen_number >= 0 &&
- screen_number < gdk_display_get_n_screens (display))
- screen = gdk_display_get_screen (display, screen_number);
- else
- screen = gdk_screen_get_default ();
-
- windows = ev_application_get_windows (application);
- for (l = windows; l != NULL; l = g_list_next (l)) {
- EvWindow *ev_window = EV_WINDOW (l->data);
-
- ev_application_open_uri_in_window (application, uri, ev_window,
- screen, dest, mode,
- search_string,
- timestamp);
- }
- g_list_free (windows);