void wxCodeCompletionBox::DoDisplayTipWindow() { // Display the tooltip if(m_index >= 0 && m_index < (int)m_entries.size()) { wxString docComment = m_entries.at(m_index)->GetComment(); docComment.Trim().Trim(false); if(docComment.IsEmpty() && m_entries.at(m_index)->m_tag) { // Format the comment on demand if the origin was a tag entry docComment = m_entries.at(m_index)->m_tag->FormatComment(); } if(docComment.IsEmpty()) { // No tip to display DoDestroyTipWindow(); } else if(!docComment.IsEmpty() && docComment != m_displayedTip) { // destroy old tip window DoDestroyTipWindow(); // keep the old tip m_displayedTip = docComment; // Construct a new tip window and display the tip m_tipWindow = new CCBoxTipWindow(GetParent(), docComment, 1, false); m_tipWindow->PositionRelativeTo(this, m_stc->PointFromPosition(m_stc->GetCurrentPos())); // restore focus to the editor m_stc->CallAfter(&wxStyledTextCtrl::SetFocus); } } else { // Nothing to display, just destroy the old tooltip DoDestroyTipWindow(); } }
wxCodeCompletionBox::~wxCodeCompletionBox() { m_canvas->Unbind(wxEVT_LEFT_DOWN, &wxCodeCompletionBox::OnLeftDClick, this); m_canvas->Unbind(wxEVT_LEFT_DCLICK, &wxCodeCompletionBox::OnLeftDClick, this); m_canvas->Unbind(wxEVT_MOUSEWHEEL, &wxCodeCompletionBox::OnMouseScroll, this); DoDestroyTipWindow(); }