diff options
author | corvid <corvid@lavabit.com> | 2011-08-05 01:12:40 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2011-08-05 01:12:40 +0000 |
commit | 9458f15205966cf532a79925737d9098f8b2be5b (patch) | |
tree | d1a02ec723ae3ef05defe4c6b1b512401c41a727 /src | |
parent | d27ee4a09a9c0dd8a994eb3ac49cbacc7017e556 (diff) |
delete windows
Diffstat (limited to 'src')
-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 864113d6..ca5100af 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -267,12 +267,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(); @@ -368,14 +363,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())); } @@ -485,13 +480,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); } |