static void nav_open0(navigator_t *nav, const char *url, const char *view, prop_t *origin) { nav_page_t *np = calloc(1, sizeof(nav_page_t)); np->np_nav = nav; np->np_url = url ? strdup(url) : NULL; np->np_direct_close = 0; TAILQ_INSERT_TAIL(&nav->nav_pages, np, np_global_link); np->np_prop_root = prop_create_root("page"); if(view != NULL) { np->np_view = strdup(view); prop_set_string(prop_create(np->np_prop_root, "requestedView"), view); } // XXX Change this into event-style subscription np->np_close_sub = prop_subscribe(0, PROP_TAG_ROOT, prop_create(np->np_prop_root, "close"), PROP_TAG_CALLBACK_INT, nav_page_close_set, np, PROP_TAG_COURIER, nav->nav_pc, NULL); if(url != NULL) prop_set_string(prop_create(np->np_prop_root, "url"), url); np->np_url_sub = prop_subscribe(PROP_SUB_NO_INITIAL_UPDATE, PROP_TAG_ROOT, prop_create(np->np_prop_root, "url"), PROP_TAG_CALLBACK_STRING, nav_page_url_set, np, PROP_TAG_COURIER, nav->nav_pc, NULL); np->np_direct_close_sub = prop_subscribe(PROP_SUB_NO_INITIAL_UPDATE, PROP_TAG_ROOT, prop_create(np->np_prop_root, "directClose"), PROP_TAG_CALLBACK_INT, nav_page_direct_close_set, np, PROP_TAG_COURIER, nav->nav_pc, NULL); TRACE(TRACE_INFO, "navigator", "Opening %s", url); if(backend_open(np->np_prop_root, url)) nav_open_errorf(np->np_prop_root, url, "No handler for URL"); nav_insert_page(nav, np, origin); }
static void nav_open0(navigator_t *nav, const char *url, const char *view, prop_t *origin) { nav_page_t *np = calloc(1, sizeof(nav_page_t)); TRACE(TRACE_INFO, "navigator", "Opening %s", url); np->np_nav = nav; np->np_url = strdup(url); np->np_direct_close = 0; TAILQ_INSERT_TAIL(&nav->nav_pages, np, np_global_link); nav_page_setup_prop(nav, np, view); nav_insert_page(nav, np, origin); if(backend_open(np->np_prop_root, url)) nav_open_errorf(np->np_prop_root, _("No handler for URL")); }