-
-bool wxHtmlHelpFrame::Display(const wxString& x)
-{
-    wxString url = m_Data->FindPageByName(x);
-    if (!url.IsEmpty())
-    {
-        m_HtmlWin->LoadPage(url);
-        NotifyPageChanged();
-        return true;
-    }
-
-    return false;
-}
-
-bool wxHtmlHelpFrame::Display(const int id)
-{
-    wxString url = m_Data->FindPageById(id);
-    if (!url.IsEmpty())
-    {
-        m_HtmlWin->LoadPage(url);
-        NotifyPageChanged();
-        return true;
-    }
-
-    return false;
-}
-
-
-
-bool wxHtmlHelpFrame::DisplayContents()
-{
-    if (! m_ContentsBox)
-        return false;
-
-    if (!m_Splitter->IsSplit())
-    {
-        m_NavigPan->Show();
-        m_HtmlWin->Show();
-        m_Splitter->SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
-        m_Cfg.navig_on = true;
-    }
-
-    m_NavigNotebook->SetSelection(0);
-
-    if (m_Data->GetBookRecArray().GetCount() > 0)
-    {
-        wxHtmlBookRecord& book = m_Data->GetBookRecArray()[0];
-        if (!book.GetStart().IsEmpty())
-            m_HtmlWin->LoadPage(book.GetFullPath(book.GetStart()));
-    }
-
-    return true;
-}
-
-
-
-bool wxHtmlHelpFrame::DisplayIndex()
-{
-    if (! m_IndexList)
-        return false;
-
-    if (!m_Splitter->IsSplit())
-    {
-        m_NavigPan->Show();
-        m_HtmlWin->Show();
-        m_Splitter->SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
-    }
-
-    m_NavigNotebook->SetSelection(1);
-
-    if (m_Data->GetBookRecArray().GetCount() > 0)
-    {
-        wxHtmlBookRecord& book = m_Data->GetBookRecArray()[0];
-        if (!book.GetStart().IsEmpty())
-            m_HtmlWin->LoadPage(book.GetFullPath(book.GetStart()));
-    }
-
-    return true;
-}
-
-void wxHtmlHelpFrame::DisplayIndexItem(const wxHtmlHelpMergedIndexItem *it)
-{
-    if (it->items.size() == 1)
-    {
-        if (!it->items[0]->page.empty())
-        {
-            m_HtmlWin->LoadPage(it->items[0]->GetFullPath());
-            NotifyPageChanged();
-        }
-    }
-    else
-    {
-        wxBusyCursor busy_cursor;
-
-        // more pages associated with this index item -- let the user choose
-        // which one she/he wants from a list:
-        wxArrayString arr;
-        size_t len = it->items.size();
-        for (size_t i = 0; i < len; i++)
-        {
-            wxString page = it->items[i]->page;
-            // try to find page's title in contents:
-            const wxHtmlHelpDataItems& contents = m_Data->GetContentsArray();
-            size_t clen = contents.size();
-            for (size_t j = 0; j < clen; j++)
-            {
-                if (contents[j].page == page)
-                {
-                    page = contents[j].name;
-                    break;
-                }
-            }
-            arr.push_back(page);
-        }
-
-        wxSingleChoiceDialog dlg(this,
-                                 _("Please choose the page to display:"),
-                                 _("Help Topics"),
-                                 arr, NULL, wxCHOICEDLG_STYLE & ~wxCENTRE);
-        if (dlg.ShowModal() == wxID_OK)
-        {
-            m_HtmlWin->LoadPage(it->items[dlg.GetSelection()]->GetFullPath());
-            NotifyPageChanged();
-        }
-    }
-}
-
-
-bool wxHtmlHelpFrame::KeywordSearch(const wxString& keyword,
-                                    wxHelpSearchMode mode)
-{
-    if (mode == wxHELP_SEARCH_ALL)
-    {
-        if ( !(m_SearchList &&
-               m_SearchButton && m_SearchText && m_SearchChoice) )
-            return false;
-    }
-    else if (mode == wxHELP_SEARCH_INDEX)
-    {
-        if ( !(m_IndexList &&
-               m_IndexButton && m_IndexButtonAll && m_IndexText) )
-            return false;
-    }
-
-    int foundcnt = 0;
-    wxString foundstr;
-    wxString book = wxEmptyString;
-
-    if (!m_Splitter->IsSplit())
-    {
-        m_NavigPan->Show();
-        m_HtmlWin->Show();
-        m_Splitter->SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
-    }
-
-    if (mode == wxHELP_SEARCH_ALL)
-    {
-        m_NavigNotebook->SetSelection(m_SearchPage);
-        m_SearchList->Clear();
-        m_SearchText->SetValue(keyword);
-        m_SearchButton->Disable();
-
-        if (m_SearchChoice->GetSelection() != 0)
-            book = m_SearchChoice->GetStringSelection();
-
-        wxHtmlSearchStatus status(m_Data, keyword,
-                                  m_SearchCaseSensitive->GetValue(),
-                                  m_SearchWholeWords->GetValue(),
-                                  book);
-
-#if wxUSE_PROGRESSDLG
-        wxProgressDialog progress(_("Searching..."),
-                                  _("No matching page found yet"),
-                                  status.GetMaxIndex(), this,
-                                  wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_AUTO_HIDE);
-#endif
-
-        int curi;
-        while (status.IsActive())
-        {
-            curi = status.GetCurIndex();
-            if (curi % 32 == 0
-#if wxUSE_PROGRESSDLG
-                && !progress.Update(curi)
-#endif
-               )
-                break;
-            if (status.Search())
-            {
-                foundstr.Printf(_("Found %i matches"), ++foundcnt);
-#if wxUSE_PROGRESSDLG
-                progress.Update(status.GetCurIndex(), foundstr);
-#endif
-                m_SearchList->Append(status.GetName(), (void*)status.GetCurItem());
-            }
-        }
-
-        m_SearchButton->Enable();
-        m_SearchText->SetSelection(0, keyword.Length());
-        m_SearchText->SetFocus();
-    }
-    else if (mode == wxHELP_SEARCH_INDEX)
-    {
-        m_NavigNotebook->SetSelection(m_IndexPage);
-        m_IndexList->Clear();
-        m_IndexButton->Disable();
-        m_IndexButtonAll->Disable();
-        m_IndexText->SetValue(keyword);
-
-        wxCommandEvent dummy;
-        OnIndexFind(dummy); // what a hack...
-        m_IndexButton->Enable();
-        m_IndexButtonAll->Enable();
-        foundcnt = m_IndexList->GetCount();
-    }
-
-    if (foundcnt)
-    {
-        switch ( mode )
-        {
-            default:
-                wxFAIL_MSG( _T("unknown help search mode") );
-                // fall back
-
-            case wxHELP_SEARCH_ALL:
-            {
-                wxHtmlHelpDataItem *it =
-                    (wxHtmlHelpDataItem*) m_SearchList->GetClientData(0);
-                if (it)
-                {
-                    m_HtmlWin->LoadPage(it->GetFullPath());
-                    NotifyPageChanged();
-                }
-                break;
-            }
-
-            case wxHELP_SEARCH_INDEX:
-            {
-                wxHtmlHelpMergedIndexItem* it =
-                    (wxHtmlHelpMergedIndexItem*) m_IndexList->GetClientData(0);
-                if (it)
-                    DisplayIndexItem(it);
-                break;
-            }
-        }
-
-    }
-
-    return foundcnt > 0;
-}
-
-void wxHtmlHelpFrame::CreateContents()
-{
-    if (! m_ContentsBox)
-        return ;
-
-    if (m_PagesHash)
-    {
-        WX_CLEAR_HASH_TABLE(*m_PagesHash);
-        delete m_PagesHash;
-    }
-
-    const wxHtmlHelpDataItems& contents = m_Data->GetContentsArray();
-
-    size_t cnt = contents.size();
-
-    m_PagesHash = new wxHashTable(wxKEY_STRING, 2 * cnt);
-
-    const int MAX_ROOTS = 64;
-    wxTreeItemId roots[MAX_ROOTS];
-    // VS: this array holds information about whether we've set item icon at
-    //     given level. This is neccessary because m_Data has flat structure
-    //     and there's no way of recognizing if some item has subitems or not.
-    //     We set the icon later: when we find an item with level=n, we know
-    //     that the last item with level=n-1 was folder with subitems, so we
-    //     set its icon accordingly
-    bool imaged[MAX_ROOTS];
-    m_ContentsBox->DeleteAllItems();
-
-    roots[0] = m_ContentsBox->AddRoot(_("(Help)"));
-    imaged[0] = true;
-
-    for (size_t i = 0; i < cnt; i++)
-    {
-        wxHtmlHelpDataItem *it = &contents[i];
-        // Handle books:
-        if (it->level == 0)
-        {
-            if (m_hfStyle & wxHF_MERGE_BOOKS)
-                // VS: we don't want book nodes, books' content should
-                //    appear under tree's root. This line will create "fake"
-                //    record about book node so that the rest of this look
-                //    will believe there really _is_ book node and will
-                //    behave correctly.
-                roots[1] = roots[0];
-            else
-            {
-                roots[1] = m_ContentsBox->AppendItem(roots[0],
-                                         it->name, IMG_Book, -1,
-                                         new wxHtmlHelpTreeItemData(i));
-                m_ContentsBox->SetItemBold(roots[1], true);
-            }
-            imaged[1] = true;
-        }
-        // ...and their contents:
-        else
-        {
-            roots[it->level + 1] = m_ContentsBox->AppendItem(
-                                     roots[it->level], it->name, IMG_Page,
-                                     -1, new wxHtmlHelpTreeItemData(i));
-            imaged[it->level + 1] = false;
-        }
-
-        m_PagesHash->Put(it->GetFullPath(),
-                         new wxHtmlHelpHashData(i, roots[it->level + 1]));
-
-        // Set the icon for the node one level up in the hiearachy,
-        // unless already done (see comment above imaged[] declaration)
-        if (!imaged[it->level])
-        {
-            int image = IMG_Folder;
-            if (m_hfStyle & wxHF_ICONS_BOOK)
-                image = IMG_Book;
-            else if (m_hfStyle & wxHF_ICONS_BOOK_CHAPTER)
-                image = (it->level == 1) ? IMG_Book : IMG_Folder;
-            m_ContentsBox->SetItemImage(roots[it->level], image);
-            m_ContentsBox->SetItemImage(roots[it->level], image,
-                                        wxTreeItemIcon_Selected);
-            imaged[it->level] = true;
-        }
-    }
-}
-
-
-void wxHtmlHelpFrame::CreateIndex()
-{
-    if (! m_IndexList)
-        return ;
-
-    m_IndexList->Clear();
-
-    size_t cnt = m_mergedIndex->size();
-
-    wxString cnttext;
-    if (cnt > INDEX_IS_SMALL)
-        cnttext.Printf(_("%i of %i"), 0, cnt);
-    else
-        cnttext.Printf(_("%i of %i"), cnt, cnt);
-    m_IndexCountInfo->SetLabel(cnttext);
-    if (cnt > INDEX_IS_SMALL)
-        return;
-
-    for (size_t i = 0; i < cnt; i++)
-        m_IndexList->Append((*m_mergedIndex)[i].name,
-                            (char*)(&(*m_mergedIndex)[i]));
-}
-
-void wxHtmlHelpFrame::CreateSearch()
-{
-    if (! (m_SearchList && m_SearchChoice))
-        return ;
-    m_SearchList->Clear();
-    m_SearchChoice->Clear();
-    m_SearchChoice->Append(_("Search in all books"));
-    const wxHtmlBookRecArray& bookrec = m_Data->GetBookRecArray();
-    int i, cnt = bookrec.GetCount();
-    for (i = 0; i < cnt; i++)
-        m_SearchChoice->Append(bookrec[i].GetTitle());
-    m_SearchChoice->SetSelection(0);
-}
-
-
-void wxHtmlHelpFrame::RefreshLists()
-{
-    // Update m_mergedIndex:
-    UpdateMergedIndex();
-    // Update the controls
-    CreateContents();
-    CreateIndex();
-    CreateSearch();
-}
-
-void wxHtmlHelpFrame::ReadCustomization(wxConfigBase *cfg, const wxString& path)
-{
-    wxString oldpath;
-    wxString tmp;
-
-    if (path != wxEmptyString)
-    {
-        oldpath = cfg->GetPath();
-        cfg->SetPath(_T("/") + path);
-    }
-
-    m_Cfg.navig_on = cfg->Read(wxT("hcNavigPanel"), m_Cfg.navig_on) != 0;
-    m_Cfg.sashpos = cfg->Read(wxT("hcSashPos"), m_Cfg.sashpos);
-    m_Cfg.x = cfg->Read(wxT("hcX"), m_Cfg.x);
-    m_Cfg.y = cfg->Read(wxT("hcY"), m_Cfg.y);
-    m_Cfg.w = cfg->Read(wxT("hcW"), m_Cfg.w);
-    m_Cfg.h = cfg->Read(wxT("hcH"), m_Cfg.h);
-
-    m_FixedFace = cfg->Read(wxT("hcFixedFace"), m_FixedFace);
-    m_NormalFace = cfg->Read(wxT("hcNormalFace"), m_NormalFace);
-    m_FontSize = cfg->Read(wxT("hcBaseFontSize"), m_FontSize);
-
-    {
-        int i;
-        int cnt;
-        wxString val, s;
-
-        cnt = cfg->Read(wxT("hcBookmarksCnt"), 0L);
-        if (cnt != 0)
-        {
-            m_BookmarksNames.Clear();
-            m_BookmarksPages.Clear();
-            if (m_Bookmarks)
-            {
-                m_Bookmarks->Clear();
-                m_Bookmarks->Append(_("(bookmarks)"));
-            }
-
-            for (i = 0; i < cnt; i++)
-            {
-                val.Printf(wxT("hcBookmark_%i"), i);
-                s = cfg->Read(val);
-                m_BookmarksNames.Add(s);
-                if (m_Bookmarks) m_Bookmarks->Append(s);
-                val.Printf(wxT("hcBookmark_%i_url"), i);
-                s = cfg->Read(val);
-                m_BookmarksPages.Add(s);
-            }
-        }
-    }
-
-    if (m_HtmlWin)
-        m_HtmlWin->ReadCustomization(cfg);
-
-    if (path != wxEmptyString)
-        cfg->SetPath(oldpath);
-}
-
-void wxHtmlHelpFrame::WriteCustomization(wxConfigBase *cfg, const wxString& path)
-{
-    wxString oldpath;
-    wxString tmp;
-
-    if (path != wxEmptyString)
-    {
-        oldpath = cfg->GetPath();
-        cfg->SetPath(_T("/") + path);
-    }
-
-    cfg->Write(wxT("hcNavigPanel"), m_Cfg.navig_on);
-    cfg->Write(wxT("hcSashPos"), (long)m_Cfg.sashpos);
-    if ( !IsIconized() )
-    {
-        //  Don't write if iconized as this would make the window
-        //  disappear next time it is shown!
-        cfg->Write(wxT("hcX"), (long)m_Cfg.x);
-        cfg->Write(wxT("hcY"), (long)m_Cfg.y);
-        cfg->Write(wxT("hcW"), (long)m_Cfg.w);
-        cfg->Write(wxT("hcH"), (long)m_Cfg.h);
-    }
-    cfg->Write(wxT("hcFixedFace"), m_FixedFace);
-    cfg->Write(wxT("hcNormalFace"), m_NormalFace);
-    cfg->Write(wxT("hcBaseFontSize"), (long)m_FontSize);
-
-    if (m_Bookmarks)
-    {
-        int i;
-        int cnt = m_BookmarksNames.GetCount();
-        wxString val;
-
-        cfg->Write(wxT("hcBookmarksCnt"), (long)cnt);
-        for (i = 0; i < cnt; i++)
-        {
-            val.Printf(wxT("hcBookmark_%i"), i);
-            cfg->Write(val, m_BookmarksNames[i]);
-            val.Printf(wxT("hcBookmark_%i_url"), i);
-            cfg->Write(val, m_BookmarksPages[i]);
-        }
-    }
-
-    if (m_HtmlWin)
-        m_HtmlWin->WriteCustomization(cfg);
-
-    if (path != wxEmptyString)
-        cfg->SetPath(oldpath);
-}
-
-
-
-
-
-static void SetFontsToHtmlWin(wxHtmlWindow *win, wxString scalf, wxString fixf, int size)
-{
-    int f_sizes[7];
-    f_sizes[0] = int(size * 0.6);
-    f_sizes[1] = int(size * 0.8);
-    f_sizes[2] = size;
-    f_sizes[3] = int(size * 1.2);
-    f_sizes[4] = int(size * 1.4);
-    f_sizes[5] = int(size * 1.6);
-    f_sizes[6] = int(size * 1.8);
-
-    win->SetFonts(scalf, fixf, f_sizes);
-}
-
-
-class wxHtmlHelpFrameOptionsDialog : public wxDialog
-{
-public:
-    wxComboBox *NormalFont, *FixedFont;
-    wxSpinCtrl *FontSize;
-    wxHtmlWindow *TestWin;
-
-    wxHtmlHelpFrameOptionsDialog(wxWindow *parent)
-        : wxDialog(parent, wxID_ANY, wxString(_("Help Browser Options")))
-    {
-        wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
-        wxFlexGridSizer *sizer = new wxFlexGridSizer(2, 3, 2, 5);
-
-        sizer->Add(new wxStaticText(this, wxID_ANY, _("Normal font:")));
-        sizer->Add(new wxStaticText(this, wxID_ANY, _("Fixed font:")));
-        sizer->Add(new wxStaticText(this, wxID_ANY, _("Font size:")));
-
-        sizer->Add(NormalFont = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
-                      wxSize(200, wxDefaultCoord),
-                      0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
-
-        sizer->Add(FixedFont = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
-                      wxSize(200, wxDefaultCoord),
-                      0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
-
-        sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY));
-        FontSize->SetRange(2, 100);
-
-        topsizer->Add(sizer, 0, wxLEFT|wxRIGHT|wxTOP, 10);
-
-        topsizer->Add(new wxStaticText(this, wxID_ANY, _("Preview:")),
-                        0, wxLEFT | wxTOP, 10);
-        topsizer->Add(TestWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(20, 150),
-                                                 wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER),
-                        1, wxEXPAND | wxLEFT|wxTOP|wxRIGHT, 10);
-
-        wxBoxSizer *sizer2 = new wxBoxSizer(wxHORIZONTAL);
-        wxButton *ok;
-        sizer2->Add(ok = new wxButton(this, wxID_OK), 0, wxALL, 10);
-        ok->SetDefault();
-        sizer2->Add(new wxButton(this, wxID_CANCEL), 0, wxALL, 10);
-        topsizer->Add(sizer2, 0, wxALIGN_RIGHT);
-
-        SetSizer(topsizer);
-        topsizer->Fit(this);
-        Centre(wxBOTH);
-    }
-
-
-    void UpdateTestWin()
-    {
-        wxBusyCursor bcur;
-        SetFontsToHtmlWin(TestWin,
-                          NormalFont->GetStringSelection(),
-                          FixedFont->GetStringSelection(),
-                          FontSize->GetValue());
-
-        wxString content(_("font size"));
-
-        content = _T("<font size=-2>") + content + _T(" -2</font><br>")
-                  _T("<font size=-1>") + content + _T(" -1</font><br>")
-                  _T("<font size=+0>") + content + _T(" +0</font><br>")
-                  _T("<font size=+1>") + content + _T(" +1</font><br>")
-                  _T("<font size=+2>") + content + _T(" +2</font><br>")
-                  _T("<font size=+3>") + content + _T(" +3</font><br>")
-                  _T("<font size=+4>") + content + _T(" +4</font><br>") ;
-
-        content = wxString( _T("<html><body><table><tr><td>") ) +
-                  _("Normal face<br>and <u>underlined</u>. ") +
-                  _("<i>Italic face.</i> ") +
-                  _("<b>Bold face.</b> ") +
-                  _("<b><i>Bold italic face.</i></b><br>") +
-                  content +
-                  wxString( _T("</td><td><tt>") ) +
-                  _("Fixed size face.<br> <b>bold</b> <i>italic</i> ") +
-                  _("<b><i>bold italic <u>underlined</u></i></b><br>") +
-                  content +
-                  _T("</tt></td></tr></table></body></html>");
-
-        TestWin->SetPage( content );
-    }
-
-    void OnUpdate(wxCommandEvent& WXUNUSED(event))
-    {
-        UpdateTestWin();
-    }
-    void OnUpdateSpin(wxSpinEvent& WXUNUSED(event))
-    {
-        UpdateTestWin();
-    }
-
-    DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxHtmlHelpFrameOptionsDialog)
-};
-
-BEGIN_EVENT_TABLE(wxHtmlHelpFrameOptionsDialog, wxDialog)
-    EVT_COMBOBOX(wxID_ANY, wxHtmlHelpFrameOptionsDialog::OnUpdate)
-    EVT_SPINCTRL(wxID_ANY, wxHtmlHelpFrameOptionsDialog::OnUpdateSpin)
-END_EVENT_TABLE()
-
-void wxHtmlHelpFrame::OptionsDialog()
-{
-    wxHtmlHelpFrameOptionsDialog dlg(this);
-    unsigned i;
-
-    if (m_NormalFonts == NULL)
-    {
-        wxFontEnumerator enu;
-        enu.EnumerateFacenames();
-        m_NormalFonts = new wxArrayString;
-        *m_NormalFonts = *enu.GetFacenames();
-        m_NormalFonts->Sort(); // ascending sort
-    }
-    if (m_FixedFonts == NULL)
-    {
-        wxFontEnumerator enu;
-        enu.EnumerateFacenames(wxFONTENCODING_SYSTEM, true /*enum fixed width only*/);
-        m_FixedFonts = new wxArrayString;
-        *m_FixedFonts = *enu.GetFacenames();
-        m_FixedFonts->Sort(); // ascending sort
-    }
-
-    // VS: We want to show the font that is actually used by wxHtmlWindow.
-    //     If customization dialog wasn't used yet, facenames are empty and
-    //     wxHtmlWindow uses default fonts -- let's find out what they
-    //     are so that we can pass them to the dialog:
-    if (m_NormalFace.empty())
-    {
-        wxFont fnt(m_FontSize, wxSWISS, wxNORMAL, wxNORMAL, false);
-        m_NormalFace = fnt.GetFaceName();
-    }
-    if (m_FixedFace.empty())
-    {
-        wxFont fnt(m_FontSize, wxMODERN, wxNORMAL, wxNORMAL, false);
-        m_FixedFace = fnt.GetFaceName();
-    }
-
-    for (i = 0; i < m_NormalFonts->GetCount(); i++)
-        dlg.NormalFont->Append((*m_NormalFonts)[i]);
-    for (i = 0; i < m_FixedFonts->GetCount(); i++)
-        dlg.FixedFont->Append((*m_FixedFonts)[i]);
-    if (!m_NormalFace.empty())
-        dlg.NormalFont->SetStringSelection(m_NormalFace);
-    else
-        dlg.NormalFont->SetSelection(0);
-    if (!m_FixedFace.empty())
-        dlg.FixedFont->SetStringSelection(m_FixedFace);
-    else
-        dlg.FixedFont->SetSelection(0);
-    dlg.FontSize->SetValue(m_FontSize);
-    dlg.UpdateTestWin();
-
-    if (dlg.ShowModal() == wxID_OK)
-    {
-        m_NormalFace = dlg.NormalFont->GetStringSelection();
-        m_FixedFace = dlg.FixedFont->GetStringSelection();
-        m_FontSize = dlg.FontSize->GetValue();
-        SetFontsToHtmlWin(m_HtmlWin, m_NormalFace, m_FixedFace, m_FontSize);
-    }
-}
-
-
-
-void wxHtmlHelpFrame::NotifyPageChanged()
-{
-    if (m_UpdateContents && m_PagesHash)
-    {
-        wxString an = m_HtmlWin->GetOpenedAnchor();
-        wxHtmlHelpHashData *ha;
-        if (an.IsEmpty())
-            ha = (wxHtmlHelpHashData*) m_PagesHash->Get(m_HtmlWin->GetOpenedPage());
-        else
-            ha = (wxHtmlHelpHashData*) m_PagesHash->Get(m_HtmlWin->GetOpenedPage() + wxT("#") + an);
-        if (ha)
-        {
-            bool olduc = m_UpdateContents;
-            m_UpdateContents = false;
-            m_ContentsBox->SelectItem(ha->m_Id);
-            m_ContentsBox->EnsureVisible(ha->m_Id);
-            m_UpdateContents = olduc;
-        }
-    }
-}
-
-
-