]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed cursor flickering in wxHtmlWindow
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 10 Oct 1999 20:18:08 +0000 (20:18 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 10 Oct 1999 20:18:08 +0000 (20:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/html/htmlwin.h
src/html/htmlwin.cpp

index c7a8d35121544498ba00cff964bb25401e174ab8..c0cb02a3fc4cfb8ae470a4bad2eb87fc7eecfd7e 100644 (file)
@@ -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()
 };
index 946aa06c1a60ef27ed05c8942734cfdfac70c5ca..7d81aecc17ea02843747d3a657403eeff4c6d491 100644 (file)
@@ -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;
     }