aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2010-02-20 16:11:33 -0300
committerJorge Arellano Cid <jcid@dillo.org>2010-02-20 16:11:33 -0300
commit21efa573bd44d1e7cf0b33a48a4bda99fea37c87 (patch)
tree1623751a95d80bf2f45986834888d9633fc3925e /src
parent0df75e6a18ef70fcd87f819e0c022b2cd9b381aa (diff)
Interim patch for view source
Diffstat (limited to 'src')
-rw-r--r--src/capi.c10
-rw-r--r--src/menu.cc9
-rw-r--r--src/nav.c12
3 files changed, 24 insertions, 7 deletions
diff --git a/src/capi.c b/src/capi.c
index 4a53a57a..af48d664 100644
--- a/src/capi.c
+++ b/src/capi.c
@@ -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 */
diff --git a/src/nav.c b/src/nav.c
index 7fd998a1..9d668804 100644
--- a/src/nav.c
+++ b/src/nav.c
@@ -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);