fixed cursor flickering in wxHtmlWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
db98870d82
commit
622ea7838d
@ -70,25 +70,6 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
|
|||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxHtmlWindow)
|
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:
|
public:
|
||||||
wxHtmlWindow() : wxScrolledWindow() {};
|
wxHtmlWindow() : wxScrolledWindow() {};
|
||||||
wxHtmlWindow(wxWindow *parent, wxWindowID id = -1,
|
wxHtmlWindow(wxWindow *parent, wxWindowID id = -1,
|
||||||
@ -188,6 +169,7 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
|
|||||||
virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
|
virtual wxHtmlFilter *GetDefaultFilter() {return new wxHtmlFilterPlainText;}
|
||||||
// returns new filter (will be stored into m_DefaultFilter variable)
|
// returns new filter (will be stored into m_DefaultFilter variable)
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxHtmlContainerCell *m_Cell;
|
wxHtmlContainerCell *m_Cell;
|
||||||
// This is pointer to the first cell in parsed data.
|
// This is pointer to the first cell in parsed data.
|
||||||
@ -215,6 +197,27 @@ class WXDLLEXPORT wxHtmlWindow : public wxScrolledWindow
|
|||||||
|
|
||||||
int m_Style;
|
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()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
@ -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)
|
long style, const wxString& name) : wxScrolledWindow(parent, id, pos, size, wxVSCROLL, name)
|
||||||
{
|
{
|
||||||
m_tmpMouseMoved = FALSE;
|
m_tmpMouseMoved = FALSE;
|
||||||
|
m_tmpLastLink = wxEmptyString;
|
||||||
m_tmpCanDraw = TRUE;
|
m_tmpCanDraw = TRUE;
|
||||||
m_FS = new wxFileSystem();
|
m_FS = new wxFileSystem();
|
||||||
m_RelatedStatusBar = -1;
|
m_RelatedStatusBar = -1;
|
||||||
@ -390,7 +391,6 @@ void wxHtmlWindow::CleanUpStatics()
|
|||||||
{
|
{
|
||||||
if (m_DefaultFilter) delete m_DefaultFilter;
|
if (m_DefaultFilter) delete m_DefaultFilter;
|
||||||
m_DefaultFilter = NULL;
|
m_DefaultFilter = NULL;
|
||||||
wxNode* node = m_Filters.GetFirst();
|
|
||||||
m_Filters.DeleteContents(TRUE);
|
m_Filters.DeleteContents(TRUE);
|
||||||
m_Filters.Clear();
|
m_Filters.Clear();
|
||||||
|
|
||||||
@ -514,13 +514,16 @@ void wxHtmlWindow::OnIdle(wxIdleEvent& event)
|
|||||||
ScreenToClient(&x, &y);
|
ScreenToClient(&x, &y);
|
||||||
lnk = m_Cell -> GetLink(sx + x, sy + y);
|
lnk = m_Cell -> GetLink(sx + x, sy + y);
|
||||||
|
|
||||||
if (lnk == wxEmptyString) {
|
if (lnk != m_tmpLastLink) {
|
||||||
SetCursor(cur_arrow);
|
if (lnk == wxEmptyString) {
|
||||||
if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(wxEmptyString, m_RelatedStatusBar);
|
SetCursor(cur_arrow);
|
||||||
}
|
if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(wxEmptyString, m_RelatedStatusBar);
|
||||||
else {
|
}
|
||||||
SetCursor(cur_hand);
|
else {
|
||||||
if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(lnk, m_RelatedStatusBar);
|
SetCursor(cur_hand);
|
||||||
|
if (m_RelatedStatusBar != -1) m_RelatedFrame -> SetStatusText(lnk, m_RelatedStatusBar);
|
||||||
|
}
|
||||||
|
m_tmpLastLink = lnk;
|
||||||
}
|
}
|
||||||
m_tmpMouseMoved = FALSE;
|
m_tmpMouseMoved = FALSE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user