Make BrowserWindow own more of its resources.

This commit is contained in:
2025-06-02 11:26:53 -04:00
parent 21b581afb9
commit 2aff56a2f4
2 changed files with 17 additions and 17 deletions

View File

@ -69,7 +69,6 @@ BrowserWindow *a_Bw_new(void)
bw->NumImages = 0;
bw->NumImagesGot = 0;
bw->NumPendingStyleSheets = 0;
bw->Docs = dList_new(8);
bw->num_page_bugs = 0;
@ -86,7 +85,7 @@ BrowserWindow *a_Bw_new(void)
*/
BrowserWindow::~BrowserWindow()
{
int i, j;
int i;
for (i = 0; i < num_bws; i++) {
if (bws[i] == this) {
@ -94,7 +93,6 @@ BrowserWindow::~BrowserWindow()
dList_free(this->RootClients);
dList_free(this->ImageClients);
dList_free(this->Docs);
break;
@ -207,23 +205,23 @@ void a_Bw_add_url(BrowserWindow *bw, std::unique_ptr< DilloUrl > Url)
/**
* Add a document to the browser window's list.
*/
void a_Bw_add_doc(BrowserWindow *bw, void *vdoc)
void a_Bw_add_doc(BrowserWindow *bw, DilloHtml *vdoc)
{
dReturn_if_fail ( bw != NULL && vdoc != NULL);
dList_append(bw->Docs, vdoc);
bw->Docs.push_back( vdoc );
}
/**
* Get current document.
*/
void *a_Bw_get_current_doc(BrowserWindow *bw)
DilloHtml *a_Bw_get_current_doc(BrowserWindow *bw)
{
void *doc = NULL;
int len = dList_length(bw->Docs);
DilloHtml *doc = NULL;
int len = bw->Docs.size();
if (len == 1)
doc = dList_nth_data(bw->Docs, 0);
doc = bw->Docs.at(0);
else if (len > 1)
MSG("a_Bw_get_current_doc() multiple docs not implemented\n");
@ -249,12 +247,12 @@ void *a_Bw_get_url_doc(BrowserWindow *bw, const DilloUrl *Url)
/**
* Remove a document from the bw's list
*/
void a_Bw_remove_doc(BrowserWindow *bw, void *vdoc)
void a_Bw_remove_doc(BrowserWindow *bw, DilloHtml *vdoc)
{
void *data;
auto where= std::find( begin( bw->Docs ), end( bw->Docs ), vdoc );
if ((data = dList_find(bw->Docs, vdoc))) {
dList_remove_fast(bw->Docs, data);
if (end( bw->Docs ) != where) {
bw->Docs.erase( where );
}
}

View File

@ -21,6 +21,8 @@ extern "C++"
#include <memory>
}
struct DilloHtml;
/*
* Flag Defines for a_Bw_stop_clients()
*/
@ -50,7 +52,7 @@ struct BrowserWindow {
void *render_layout;
/** Root document(s). Currently only used by DilloHtml */
Dlist *Docs;
std::vector< DilloHtml * > Docs;
/** A list of active cache clients in the window (The primary Key) */
Dlist *RootClients;
@ -110,10 +112,10 @@ void a_Bw_add_client(BrowserWindow *bw, int Key, int Root);
int a_Bw_remove_client(BrowserWindow *bw, int ClientKey);
void a_Bw_close_client(BrowserWindow *bw, int ClientKey);
void a_Bw_stop_clients(BrowserWindow *bw, int flags);
void a_Bw_add_doc(BrowserWindow *bw, void *vdoc);
void *a_Bw_get_current_doc(BrowserWindow *bw);
void a_Bw_add_doc(BrowserWindow *bw, DilloHtml *vdoc);
DilloHtml *a_Bw_get_current_doc(BrowserWindow *bw);
void *a_Bw_get_url_doc(BrowserWindow *bw, const DilloUrl *Url);
void a_Bw_remove_doc(BrowserWindow *bw, void *vdoc);
void a_Bw_remove_doc(BrowserWindow *bw, DilloHtml *vdoc);
void a_Bw_add_url(BrowserWindow *bw, std::unique_ptr< DilloUrl > Url);
void a_Bw_cleanup(BrowserWindow *bw);
/* expect API */