All (GUI):
- Fix crash in wxHTML on mal-formed <area> elements (LukasK).
+- Set correct cursor when the mouse is over image map links in wxHTML (LukasK).
2.9.5: (released 2013-07-15)
int WXUNUSED(y) = 0) const
{ return m_Link; }
- // Returns cursor to be used when mouse is over the cell:
+ // Returns cursor to be used when mouse is over the cell, can be
+ // overridden by the derived classes to use a different cursor whenever the
+ // mouse is over this cell.
virtual wxCursor GetMouseCursor(wxHtmlWindowInterface *window) const;
+ // Returns cursor to be used when mouse is over the given point, can be
+ // overridden if the cursor should change depending on where exactly inside
+ // the cell the mouse is.
+ virtual wxCursor GetMouseCursorAt(wxHtmlWindowInterface *window,
+ const wxPoint& relPos) const;
+
#if WXWIN_COMPATIBILITY_2_6
// this was replaced by GetMouseCursor, don't use in new code!
virtual wxCursor GetCursor() const;
@param window
interface to the parent HTML window
+
+ @see GetMouseCursorAt()
*/
virtual wxCursor GetMouseCursor(wxHtmlWindowInterface* window) const;
+ /**
+ Returns cursor to show when mouse pointer is over the specified point.
+
+ This function should be overridden instead of GetMouseCursorAt() if
+ the cursor should depend on the exact position of the mouse in the
+ window.
+
+ @param window
+ interface to the parent HTML window
+
+ @since 3.0
+ */
+ virtual wxCursor GetMouseCursorAt(wxHtmlWindowInterface* window) const;
+
/**
Returns pointer to the next cell in list (see htmlcell.h if you're
interested in details).
}
#endif // WXWIN_COMPATIBILITY_2_6
-wxCursor wxHtmlCell::GetMouseCursor(wxHtmlWindowInterface *window) const
+wxCursor
+wxHtmlCell::GetMouseCursor(wxHtmlWindowInterface* WXUNUSED(window)) const
+{
+ // This is never called directly, only from GetMouseCursorAt() and we
+ // return an invalid cursor by default to let it delegate to the window.
+ return wxNullCursor;
+}
+
+wxCursor
+wxHtmlCell::GetMouseCursorAt(wxHtmlWindowInterface *window,
+ const wxPoint& relPos) const
{
#if WXWIN_COMPATIBILITY_2_6
// NB: Older versions of wx used GetCursor() virtual method in place of
return cur;
#endif // WXWIN_COMPATIBILITY_2_6
- if ( GetLink() )
+ const wxCursor curCell = GetMouseCursor(window);
+ if ( curCell.IsOk() )
+ return curCell;
+
+ if ( GetLink(relPos.x, relPos.y) )
{
return window->GetHTMLCursor(wxHtmlWindowInterface::HTMLCursor_Link);
}
wxCursor cur;
if (cell)
- cur = cell->GetMouseCursor(m_interface);
+ cur = cell->GetMouseCursorAt(m_interface, pos);
else
cur = m_interface->GetHTMLCursor(
wxHtmlWindowInterface::HTMLCursor_Default);
{
if ( cell )
{
+ // A single cell can have different cursors for different positions,
+ // so update cursor for this case as well.
+ wxCursor cur = cell->GetMouseCursorAt(m_interface, pos);
+ m_interface->GetHTMLWindow()->SetCursor(cur);
+
OnCellMouseHover(cell, pos.x, pos.y);
}
}