From: Václav Slavík Date: Sun, 10 Oct 1999 20:18:08 +0000 (+0000) Subject: fixed cursor flickering in wxHtmlWindow X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/622ea7838dd5ab898c7124f980edb62c390fb292 fixed cursor flickering in wxHtmlWindow git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/html/htmlwin.h b/include/wx/html/htmlwin.h index c7a8d35121..c0cb02a3fc 100644 --- a/include/wx/html/htmlwin.h +++ b/include/wx/html/htmlwin.h @@ -70,25 +70,6 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow { DECLARE_DYNAMIC_CLASS(wxHtmlWindow) - private: - bool m_tmpMouseMoved; - // a flag indicated if mouse moved - // (if TRUE we will try to change cursor in last call to OnIdle) - bool m_tmpCanDraw; - // if FALSE contents of the window is not redrawn - // (in order to avoid ugly bliking) - - static wxList m_Filters; - // list of HTML filters - static wxHtmlFilter *m_DefaultFilter; - // this filter is used when no filter is able to read some file - - HtmlHistoryArray m_History; - int m_HistoryPos; - // browser history - bool m_HistoryOn; - // if this FLAG is false, items are not added to history - public: wxHtmlWindow() : wxScrolledWindow() {}; wxHtmlWindow(wxWindow *parent, wxWindowID id = -1, @@ -188,6 +169,7 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;} // returns new filter (will be stored into m_DefaultFilter variable) + protected: wxHtmlContainerCell *m_Cell; // This is pointer to the first cell in parsed data. @@ -215,6 +197,27 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow int m_Style; + private: + bool m_tmpMouseMoved; + // a flag indicated if mouse moved + // (if TRUE we will try to change cursor in last call to OnIdle) + wxString m_tmpLastLink; + // contains last link name + bool m_tmpCanDraw; + // if FALSE contents of the window is not redrawn + // (in order to avoid ugly bliking) + + static wxList m_Filters; + // list of HTML filters + static wxHtmlFilter *m_DefaultFilter; + // this filter is used when no filter is able to read some file + + HtmlHistoryArray m_History; + int m_HistoryPos; + // browser history + bool m_HistoryOn; + // if this FLAG is false, items are not added to history + DECLARE_EVENT_TABLE() }; diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 946aa06c1a..7d81aecc17 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -45,6 +45,7 @@ wxHtmlWindow::wxHtmlWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, long style, const wxString& name) : wxScrolledWindow(parent, id, pos, size, wxVSCROLL, name) { m_tmpMouseMoved = FALSE; + m_tmpLastLink = wxEmptyString; m_tmpCanDraw = TRUE; m_FS = new wxFileSystem(); m_RelatedStatusBar = -1; @@ -390,7 +391,6 @@ void wxHtmlWindow::CleanUpStatics() { if (m_DefaultFilter) delete m_DefaultFilter; m_DefaultFilter = NULL; - wxNode* node = m_Filters.GetFirst(); m_Filters.DeleteContents(TRUE); m_Filters.Clear(); @@ -514,13 +514,16 @@ void wxHtmlWindow::OnIdle(wxIdleEvent& event) ScreenToClient(&x, &y); lnk = m_Cell -> GetLink(sx + x, sy + y); - if (lnk == wxEmptyString) { - SetCursor(cur_arrow); - if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(wxEmptyString, m_RelatedStatusBar); - } - else { - SetCursor(cur_hand); - if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(lnk, m_RelatedStatusBar); + if (lnk != m_tmpLastLink) { + if (lnk == wxEmptyString) { + SetCursor(cur_arrow); + if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(wxEmptyString, m_RelatedStatusBar); + } + else { + SetCursor(cur_hand); + if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(lnk, m_RelatedStatusBar); + } + m_tmpLastLink = lnk; } m_tmpMouseMoved = FALSE; }