summaryrefslogtreecommitdiff
path: root/beos/beos_login.cpp
diff options
context:
space:
mode:
authorFrançois Revel <mmu_man@netsurf-browser.org>2010-08-02 23:35:35 +0000
committerFrançois Revel <mmu_man@netsurf-browser.org>2010-08-02 23:35:35 +0000
commit982dc9e128a773b9db6fae60181db32b03a4b647 (patch)
treecaad3d2162f65a2fc771a5cdd784badcb4bf7359 /beos/beos_login.cpp
parent59f13bbf24d5cae3d00ca3c1bc7d9cbd6f501e4f (diff)
downloadnetsurf-982dc9e128a773b9db6fae60181db32b03a4b647.tar.gz
netsurf-982dc9e128a773b9db6fae60181db32b03a4b647.tar.bz2
Fix BeOS build:
- struct content -> hlcache_handle - login window (though it won't work yet as the message isn't handled, and since we don't have the window pointer anymore we can't add the alert as subset of the window...), - rsrc fetcher, - netsurf_init() args (but the replicant is still broken due to this), - export the realpath() hack as it's needed elsewhere too. svn path=/trunk/netsurf/; revision=10677
Diffstat (limited to 'beos/beos_login.cpp')
-rw-r--r--beos/beos_login.cpp51
1 files changed, 30 insertions, 21 deletions
diff --git a/beos/beos_login.cpp b/beos/beos_login.cpp
index 2469f3c36..c732cd398 100644
--- a/beos/beos_login.cpp
+++ b/beos/beos_login.cpp
@@ -43,10 +43,11 @@ extern "C" {
class LoginAlert : public BAlert {
public:
- LoginAlert(struct browser_window *bw,
- const char *url,
- const char *host,
- const char *realm,
+ LoginAlert(nserror (*callback)(bool proceed, void *pw),
+ void *callbaclpw,
+ const char *url,
+ const char *host,
+ const char *realm,
const char *text);
virtual ~LoginAlert();
void MessageReceived(BMessage *message);
@@ -55,20 +56,23 @@ private:
BString fUrl; /**< URL being fetched */
BString fHost; /**< Host for user display */
BString fRealm; /**< Authentication realm */
- struct gui_window *fW; /**< GUI window handle */
+ nserror (*fCallback)(bool proceed, void *pw);
+ void *fCallbackPw;
BTextControl *fUserControl;
BTextControl *fPassControl;
};
-static void create_login_window(struct browser_window *bw, const char *host,
- const char *realm, const char *fetchurl);
+static void create_login_window(const char *host,
+ const char *realm, const char *fetchurl,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw);
#define TC_H 25
#define TC_MARGIN 10
-LoginAlert::LoginAlert(struct browser_window *bw,
+LoginAlert::LoginAlert(nserror (*callback)(bool proceed, void *pw),
+ void *callbackpw,
const char *url,
const char *host,
const char *realm,
@@ -76,20 +80,21 @@ LoginAlert::LoginAlert(struct browser_window *bw,
: BAlert("Login", text, "Cancel", "Ok", NULL,
B_WIDTH_AS_USUAL, B_WARNING_ALERT)
{
+ fCallback = callback;
+ fCallbackPw = callbackpw;
fUrl = url;
fHost = host;
fRealm = realm;
- // dereference now as we can't be sure
- // the main thread won't delete from under our feet
- fW = bw->window;
SetFeel(B_MODAL_SUBSET_WINDOW_FEEL);
+ /*
+ // XXX: can't do that anymore
nsbeos_scaffolding *s = nsbeos_get_scaffold(bw->window);
if (s) {
NSBrowserWindow *w = nsbeos_get_bwindow_for_scaffolding(s);
if (w)
AddToSubset(w);
- }
+ }*/
// make space for controls
ResizeBy(0, 2 * TC_H);
@@ -138,7 +143,8 @@ LoginAlert::MessageReceived(BMessage *message)
m->AddString("URL", fUrl.String());
m->AddString("Host", fHost.String());
m->AddString("Realm", fRealm.String());
- m->AddPointer("gui_window", fW);
+ m->AddPointer("callback", (void *)fCallback);
+ m->AddPointer("callback_pw", (void *)fCallbackPw);
m->AddString("User", fUserControl->Text());
m->AddString("Pass", fPassControl->Text());
BString auth(fUserControl->Text());
@@ -147,7 +153,7 @@ LoginAlert::MessageReceived(BMessage *message)
// notify the main thread
// the event dispatcher will handle it
- nsbeos_pipe_message(m, NULL, fW);
+ nsbeos_pipe_message(m, NULL, NULL);
}
break;
default:
@@ -157,22 +163,25 @@ LoginAlert::MessageReceived(BMessage *message)
}
-void gui_401login_open(struct browser_window *bw, struct content *c,
- const char *realm)
+void gui_401login_open(const char *url, const char *realm,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw)
{
char *host;
url_func_result res;
- res = url_host(c->url, &host);
+ res = url_host(url, &host);
assert(res == URL_FUNC_OK);
- create_login_window(bw, host, realm, c->url);
+ create_login_window(url, host, realm, cb, cbpw);
free(host);
}
-void create_login_window(struct browser_window *bw, const char *host,
- const char *realm, const char *fetchurl)
+//void create_login_window(struct browser_window *bw, const char *host,
+// const char *realm, const char *fetchurl)
+static void create_login_window(const char *url, const char *host,
+ const char *realm, nserror (*cb)(bool proceed, void *pw),
+ void *cbpw)
{
BString r("Secure Area");
if (realm)
@@ -182,7 +191,7 @@ void create_login_window(struct browser_window *bw, const char *host,
text << "Host: " << host << "\n";
//text << "\n";
- LoginAlert *a = new LoginAlert(bw, fetchurl, host, r.String(),
+ LoginAlert *a = new LoginAlert(cb, cbpw, url, host, r.String(),
text.String());
// asynchronously
a->Go(NULL);