add events API to wxHtmlWindow (patch #1504493 by Francesco Montorsi)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2006-10-29 20:26:03 +00:00
parent 55f42db2fb
commit a1c3cdc4a2
10 changed files with 408 additions and 72 deletions

View File

@@ -78,9 +78,6 @@ protected:
virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const;
virtual wxColour GetSelectedTextColour(const wxColour& colFg) const;
// override this method to handle mouse clicks
virtual void OnLinkClicked(size_t n, const wxHtmlLinkInfo& link);
// flag telling us whether we should use fg colour even for the selected
// item
bool m_change;
@@ -88,11 +85,12 @@ protected:
// flag which we toggle to update the first items text in OnGetItem()
bool m_firstItemUpdated;
public:
// flag which we toggle when the user clicks on the link in 2nd item
// to change 2nd item's text
bool m_linkClicked;
#ifdef USE_HTML_FILE
wxTextFile m_file;
#endif
@@ -132,6 +130,10 @@ public:
wxLogMessage(_T("Listbox item %d double clicked."), event.GetInt());
}
void OnHtmlLinkClicked(wxHtmlLinkEvent& event);
void OnHtmlCellHover(wxHtmlCellEvent &event);
void OnHtmlCellClicked(wxHtmlCellEvent &event);
wxSimpleHtmlListBox *GetSimpleBox()
{ return wxDynamicCast(m_hlbox, wxSimpleHtmlListBox); }
MyHtmlListBox *GetMyBox()
@@ -206,6 +208,13 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_LISTBOX(wxID_ANY, MyFrame::OnLboxSelect)
EVT_LISTBOX_DCLICK(wxID_ANY, MyFrame::OnLboxDClick)
// the HTML listbox's events
EVT_HTML_LINK_CLICKED(wxID_ANY, MyFrame::OnHtmlLinkClicked)
EVT_HTML_CELL_HOVER(wxID_ANY, MyFrame::OnHtmlCellHover)
EVT_HTML_CELL_CLICKED(wxID_ANY, MyFrame::OnHtmlCellClicked)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
@@ -454,6 +463,32 @@ void MyFrame::OnSetSelFgCol(wxCommandEvent& event)
}
}
void MyFrame::OnHtmlLinkClicked(wxHtmlLinkEvent &event)
{
wxLogMessage(wxT("The url '%s' has been clicked!"), event.GetLinkInfo().GetHref().c_str());
if (GetMyBox())
{
GetMyBox()->m_linkClicked = true;
GetMyBox()->RefreshLine(1);
}
}
void MyFrame::OnHtmlCellHover(wxHtmlCellEvent &event)
{
wxLogMessage(wxT("Mouse moved over cell %p at %d;%d"),
event.GetCell(), event.GetPoint().x, event.GetPoint().y);
}
void MyFrame::OnHtmlCellClicked(wxHtmlCellEvent &event)
{
wxLogMessage(wxT("Click over cell %p at %d;%d"),
event.GetCell(), event.GetPoint().x, event.GetPoint().y);
// if we don't skip the event, OnHtmlLinkClicked won't be called!
event.Skip();
}
// ----------------------------------------------------------------------------
// listbox event handlers
// ----------------------------------------------------------------------------
@@ -585,12 +620,3 @@ void MyHtmlListBox::UpdateFirstItem()
RefreshLine(0);
}
void MyHtmlListBox::OnLinkClicked(size_t WXUNUSED(n),
const wxHtmlLinkInfo& WXUNUSED(link))
{
m_linkClicked = true;
RefreshLine(1);
}