コード例 #1
0
ファイル: Tabs.cpp プロジェクト: DBNinja/sumatrapdf
// Called when we're closing a document
void TabsOnCloseDoc(WindowInfo *win)
{
    if (win->tabs.Count() == 0)
        return;

    /* if (win->AsFixed() && win->AsFixed()->userAnnots && win->AsFixed()->userAnnotsModified) {
        // TODO: warn about unsaved changes
    } */

    int current = TabCtrl_GetCurSel(win->hwndTabBar);
    TabInfo *tdata = win->currentTab;
    UpdateTabFileDisplayStateForWin(win, tdata);
    win->tabSelectionHistory->Remove(tdata);
    win->tabs.Remove(tdata);
    delete tdata;
    TabCtrl_DeleteItem(win->hwndTabBar, current);
    win->loadedFilePath = nullptr;
    win->ctrl = nullptr;
    win->currentTab = nullptr;
    UpdateTabWidth(win);

    if (win->tabs.Count() > 0) {
        tdata = win->tabSelectionHistory->Pop();
        TabCtrl_SetCurSel(win->hwndTabBar, win->tabs.Find(tdata));
        LoadModelIntoTab(win, tdata);
    }
}
コード例 #2
0
ファイル: Tabs.cpp プロジェクト: jingyu9575/sumatrapdf
static void RemoveTab(WindowInfo* win, int idx) {
    TabInfo* tab = win->tabs.at(idx);
    UpdateTabFileDisplayStateForWin(win, tab);
    win->tabSelectionHistory->Remove(tab);
    win->tabs.Remove(tab);
    if (tab == win->currentTab) {
        win->ctrl = nullptr;
        win->currentTab = nullptr;
    }
    delete tab;
    TabCtrl_DeleteItem(win->hwndTabBar, idx);
    UpdateTabWidth(win);
}
コード例 #3
0
ファイル: Tabs.cpp プロジェクト: professosaurus/sumatrapdf
// Called when we're closing an entire window (quitting)
void TabsOnCloseWindow(WindowInfo *win)
{
    int count = TabsGetCount(win);
    for (int i = 0; i < count; i++) {
        TabData *tdata = GetTabData(win, i);
        if (tdata) {
            UpdateTabFileDisplayStateForWin(win, tdata);
            DeleteTabData(tdata, win->ctrl != tdata->ctrl);
        }
    }
    win->tabSelectionHistory->Reset();
    TabCtrl_DeleteAllItems(win->hwndTabBar);
}
コード例 #4
0
ファイル: Tabs.cpp プロジェクト: professosaurus/sumatrapdf
// On tab selection, we save the data for the tab which is losing selection and
// load the data of the selected tab into the WindowInfo.
LRESULT TabsOnNotify(WindowInfo *win, LPARAM lparam, int tab1, int tab2)
{
    LPNMHDR data = (LPNMHDR)lparam;

    switch(data->code) {
    case TCN_SELCHANGING:
        // TODO: Should we allow the switch of the tab if we are in process of printing?

        SaveCurrentTabData(win);
        return FALSE;

    case TCN_SELCHANGE:
        {
            int current = TabCtrl_GetCurSel(win->hwndTabBar);
            LoadModelIntoTab(win, GetTabData(win, current));
            UpdateCurrentTabBgColForWindow(win);
        }
        break;

    case T_CLOSING:
        // allow the closure
        return FALSE;

    case T_CLOSE:
        {
            int current = TabCtrl_GetCurSel(win->hwndTabBar);
            if (tab1 == current) {
                CloseTab(win);
            }
            else {
                TabData *tdata = GetTabData(win, tab1);
                win->tabSelectionHistory->Remove(tdata);
                UpdateTabFileDisplayStateForWin(win, tdata);
                DeleteTabData(tdata, true);
                TabCtrl_DeleteItem(win->hwndTabBar, tab1);
                UpdateTabWidth(win);
            }
        }
        break;

    case T_DRAG:
        SwapTabs(win, tab1, tab2);
        break;
    }
    return TRUE;
}
コード例 #5
0
ファイル: Tabs.cpp プロジェクト: professosaurus/sumatrapdf
// Called when we're closing a document
void TabsOnCloseDoc(WindowInfo *win)
{
    int count = TabsGetCount(win);
    if (count <= 0)
        return;

    if (win->AsFixed() && win->AsFixed()->userAnnots && win->AsFixed()->userAnnotsModified) {
        // TODO: warn about unsaved changes
    }

    int current = TabCtrl_GetCurSel(win->hwndTabBar);
    TabData *tdata = GetTabData(win, current);
    win->tabSelectionHistory->Remove(tdata);
    UpdateTabFileDisplayStateForWin(win, tdata);
    DeleteTabData(tdata, false);
    TabCtrl_DeleteItem(win->hwndTabBar, current);
    UpdateTabWidth(win);
    if (count > 1) {
        tdata = win->tabSelectionHistory->Pop();
        TabCtrl_SetCurSel(win->hwndTabBar, FindTabIndex(win, tdata));
        LoadModelIntoTab(win, tdata);
        UpdateCurrentTabBgColForWindow(win);
    }
}