diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2010-02-20 16:11:33 -0300 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2010-02-20 16:11:33 -0300 |
commit | 21efa573bd44d1e7cf0b33a48a4bda99fea37c87 (patch) | |
tree | 1623751a95d80bf2f45986834888d9633fc3925e | |
parent | 0df75e6a18ef70fcd87f819e0c022b2cd9b381aa (diff) |
Interim patch for view source
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/capi.c | 10 | ||||
-rw-r--r-- | src/menu.cc | 9 | ||||
-rw-r--r-- | src/nav.c | 12 |
4 files changed, 27 insertions, 7 deletions
@@ -3,6 +3,9 @@ Dillo project ============================================================================= dillo-2.2.1 [not released yet] + ++- Implemented "View source" as a dpi. + Patch: Jorge Arellano Cid +- Configurable User-Agent HTTP header. Patch: Alexander Voigt, corvid +- Include Accept header in HTTP queries. @@ -354,9 +354,13 @@ int a_Capi_open_url(DilloWeb *web, CA_Callback_t Call, void *CbData) /* dpi request */ if ((safe = a_Capi_dpi_verify_request(web->bw, web->url))) { if (dStrcasecmp(scheme, "dpi") == 0) { - /* make "dpi:/" prefixed urls always reload. */ - a_Url_set_flags(web->url, URL_FLAGS(web->url) | URL_E2EQuery); - reload = 1; + if (strcmp(server, "vsource") == 0) { + /* don't reload the "view source" page */ + } else { + /* make the other "dpi:/" prefixed urls always reload. */ + a_Url_set_flags(web->url, URL_FLAGS(web->url) | URL_E2EQuery); + reload = 1; + } } if (reload) { a_Capi_conn_abort_by_url(web->url); diff --git a/src/menu.cc b/src/menu.cc index b9c8b6ef..d3a9be29 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -339,7 +339,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, // One menu for every browser window static PopupMenu *pm = 0; // Active/inactive control. - static Item *view_page_bugs_item = 0; + static Item *view_page_bugs_item = 0, *view_source_item = 0; static ItemGroup *stylesheets = 0; popup_bw = bw; @@ -349,7 +349,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, if (!pm) { pm = new PopupMenu(0,0,0,0,"&PAGE OPTIONS"); pm->begin(); - i = new Item("View page Source"); + i = view_source_item = new Item("View page Source"); i->callback(Menu_view_page_source_cb); i = view_page_bugs_item = new Item("View page Bugs"); i->callback(Menu_view_page_bugs_cb); @@ -376,6 +376,11 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, else view_page_bugs_item->deactivate(); + if (strncmp(URL_STR(url), "dpi:/vsource/", 13) == 0) + view_source_item->deactivate(); + else + view_source_item->activate(); + int n = stylesheets->children(); for (j = 0; j < n; j++) { /* get rid of the old ones */ @@ -479,7 +479,10 @@ static void Nav_reload_callback(void *data) a_Nav_cancel_expect(bw); if (a_Nav_stack_size(bw)) { h_url = a_History_get_url(NAV_TOP_UIDX(bw)); - if (URL_FLAGS(h_url) & URL_Post) { + if (strncmp(URL_STR(h_url), "dpi:/vsource/", 13) == 0) { + /* disable reload for view source dpi */ + confirmed = 0; + } else if (URL_FLAGS(h_url) & URL_Post) { /* Attempt to repost data, let's confirm... */ choice = a_Dialog_choice3("Repost form data?", "Yes", "*No", "Cancel"); @@ -592,11 +595,16 @@ void a_Nav_send_source(BrowserWindow *bw, const DilloUrl *url) char *buf; int buf_size; DilloUrl *vs_url; + Dstr *dstr_url; if (a_Nav_get_buf(url, &buf, &buf_size)) { - vs_url = a_Url_new("dpi:/vsource/", NULL); + dstr_url = dStr_new("dpi:/vsource/:"); + dStr_append(dstr_url, URL_STR(url)); + + vs_url = a_Url_new(dstr_url->str, NULL); a_UIcmd_open_url_nt(bw, vs_url, 1); a_Url_free(vs_url); + dStr_free(dstr_url, 1); /* send the page's source to this dpi connection */ a_Capi_dpi_send_source(bw, url, buf, buf_size); |