diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2011-08-05 09:38:26 -0400 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2011-08-05 09:38:26 -0400 |
commit | dd05e2dddec41cefb3869749e6729f565fb3e821 (patch) | |
tree | f3304a6bae10e1ee6e454e34b8c3101f8b54868c /src/uicmd.cc | |
parent | 4a021ae7d68a7b1701a6567ad14feea90b6a833f (diff) |
merge
Diffstat (limited to 'src/uicmd.cc')
-rw-r--r-- | src/uicmd.cc | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/uicmd.cc b/src/uicmd.cc index 88dedd96..32b5e8bb 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -276,12 +276,7 @@ void CustTabs::remove_tab(UI *ui) Wizard->remove(ui); delete(ui); - if (num_tabs() == 0) { - window()->hide(); - // TODO: free memory - //delete window(); - - } else if (num_tabs() == 1) { + if (num_tabs() == 1) { // hide tabbar ctab_h = 1; CloseBtn->hide(); @@ -378,14 +373,14 @@ void CustTabs::set_tab_label(UI *ui, const char *label) //---------------------------------------------------------------------------- static void win_cb (Fl_Widget *w, void *cb_data) { - int choice = 1; CustTabs *tabs = (CustTabs*) cb_data; + int choice = 1, ntabs = tabs->num_tabs(); - if (tabs->num_tabs() > 1) + if (ntabs > 1) choice = a_Dialog_choice5("Window contains more than one tab.", "Close", "Cancel", NULL, NULL, NULL); if (choice == 1) - while (tabs->num_tabs()) + while (ntabs-- > 0) a_UIcmd_close_bw(a_UIcmd_get_bw_by_widget(tabs->wizard()->value())); } @@ -495,13 +490,16 @@ void a_UIcmd_close_bw(void *vbw) { BrowserWindow *bw = (BrowserWindow *)vbw; UI *ui = BW2UI(bw); + CustTabs *tabs = ui->tabs(); Layout *layout = (Layout*)bw->render_layout; _MSG("a_UIcmd_close_bw\n"); a_Bw_stop_clients(bw, BW_Root + BW_Img + BW_Force); delete(layout); - if (ui->tabs()) { - ui->tabs()->remove_tab(ui); + if (tabs) { + tabs->remove_tab(ui); + if (tabs->num_tabs() == 0) + delete tabs->window(); } a_Bw_free(bw); } |