Improved wxTreeCtrl tooltip processing performance (causing

major delays in processing button clicks)
Added wxFULL_REPAINT_ON_RESIZE as default for wxStatusBar
on wxGTK since otherwise there are display problems.
Similarly for wxGrid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26132 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2004-03-07 17:28:36 +00:00
parent 4f85606724
commit 73bb677607
7 changed files with 24 additions and 12 deletions

View File

@@ -89,7 +89,7 @@ public:
#if wxUSE_STATUSBAR #if wxUSE_STATUSBAR
// create the main status bar by calling OnCreateStatusBar() // create the main status bar by calling OnCreateStatusBar()
virtual wxStatusBar* CreateStatusBar(int number = 1, virtual wxStatusBar* CreateStatusBar(int number = 1,
long style = wxST_SIZEGRIP, long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
wxWindowID winid = 0, wxWindowID winid = 0,
const wxString& name = const wxString& name =
wxStatusLineNameStr); wxStatusLineNameStr);

View File

@@ -31,7 +31,7 @@ public:
wxWindowID winid, wxWindowID winid,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = 0, long style = wxFULL_REPAINT_ON_RESIZE,
const wxString& name = wxPanelNameStr) const wxString& name = wxPanelNameStr)
{ {
Init(); Init();
@@ -53,7 +53,7 @@ public:
bool Create(wxWindow *parent, wxWindowID winid, bool Create(wxWindow *parent, wxWindowID winid,
const wxPoint& WXUNUSED(pos) = wxDefaultPosition, const wxPoint& WXUNUSED(pos) = wxDefaultPosition,
const wxSize& WXUNUSED(size) = wxDefaultSize, const wxSize& WXUNUSED(size) = wxDefaultSize,
long style = 0, long style = wxFULL_REPAINT_ON_RESIZE,
const wxString& name = wxPanelNameStr) const wxString& name = wxPanelNameStr)
{ {
return Create(parent, winid, style, name); return Create(parent, winid, style, name);

View File

@@ -384,6 +384,7 @@ public:
void OnKillFocus( wxFocusEvent &event ); void OnKillFocus( wxFocusEvent &event );
void OnChar( wxKeyEvent &event ); void OnChar( wxKeyEvent &event );
void OnMouse( wxMouseEvent &event ); void OnMouse( wxMouseEvent &event );
void OnGetToolTip( wxTreeEvent &event );
void OnInternalIdle( ); void OnInternalIdle( );
// implementation helpers // implementation helpers

View File

@@ -62,7 +62,7 @@ public:
virtual void PositionStatusBar(); virtual void PositionStatusBar();
virtual wxStatusBar* CreateStatusBar(int number = 1, virtual wxStatusBar* CreateStatusBar(int number = 1,
long style = wxST_SIZEGRIP, long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
wxWindowID id = 0, wxWindowID id = 0,
const wxString& name = wxStatusLineNameStr); const wxString& name = wxStatusLineNameStr);
#endif // wxUSE_STATUSBAR #endif // wxUSE_STATUSBAR

View File

@@ -62,7 +62,7 @@ public:
virtual void PositionStatusBar(); virtual void PositionStatusBar();
virtual wxStatusBar* CreateStatusBar(int number = 1, virtual wxStatusBar* CreateStatusBar(int number = 1,
long style = wxST_SIZEGRIP, long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
wxWindowID id = 0, wxWindowID id = 0,
const wxString& name = wxStatusLineNameStr); const wxString& name = wxStatusLineNameStr);
#endif // wxUSE_STATUSBAR #endif // wxUSE_STATUSBAR

View File

@@ -3479,7 +3479,7 @@ END_EVENT_TABLE()
wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent, wxGridRowLabelWindow::wxGridRowLabelWindow( wxGrid *parent,
wxWindowID id, wxWindowID id,
const wxPoint &pos, const wxSize &size ) const wxPoint &pos, const wxSize &size )
: wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE ) : wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE )
{ {
m_owner = parent; m_owner = parent;
} }
@@ -3545,7 +3545,7 @@ END_EVENT_TABLE()
wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent, wxGridColLabelWindow::wxGridColLabelWindow( wxGrid *parent,
wxWindowID id, wxWindowID id,
const wxPoint &pos, const wxSize &size ) const wxPoint &pos, const wxSize &size )
: wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE ) : wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE )
{ {
m_owner = parent; m_owner = parent;
} }
@@ -3610,7 +3610,7 @@ END_EVENT_TABLE()
wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent, wxGridCornerLabelWindow::wxGridCornerLabelWindow( wxGrid *parent,
wxWindowID id, wxWindowID id,
const wxPoint &pos, const wxSize &size ) const wxPoint &pos, const wxSize &size )
: wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE ) : wxWindow( parent, id, pos, size, wxWANTS_CHARS|wxBORDER_NONE|wxFULL_REPAINT_ON_RESIZE )
{ {
m_owner = parent; m_owner = parent;
} }
@@ -3682,7 +3682,7 @@ wxGridWindow::wxGridWindow( wxGrid *parent,
wxWindowID id, wxWindowID id,
const wxPoint &pos, const wxPoint &pos,
const wxSize &size ) const wxSize &size )
: wxWindow( parent, id, pos, size, wxWANTS_CHARS | wxBORDER_NONE | wxCLIP_CHILDREN, : wxWindow( parent, id, pos, size, wxWANTS_CHARS | wxBORDER_NONE | wxCLIP_CHILDREN|wxFULL_REPAINT_ON_RESIZE,
wxT("grid window") ) wxT("grid window") )
{ {

View File

@@ -674,6 +674,7 @@ BEGIN_EVENT_TABLE(wxGenericTreeCtrl,wxScrolledWindow)
EVT_CHAR (wxGenericTreeCtrl::OnChar) EVT_CHAR (wxGenericTreeCtrl::OnChar)
EVT_SET_FOCUS (wxGenericTreeCtrl::OnSetFocus) EVT_SET_FOCUS (wxGenericTreeCtrl::OnSetFocus)
EVT_KILL_FOCUS (wxGenericTreeCtrl::OnKillFocus) EVT_KILL_FOCUS (wxGenericTreeCtrl::OnKillFocus)
EVT_TREE_ITEM_GETTOOLTIP(-1, wxGenericTreeCtrl::OnGetToolTip)
END_EVENT_TABLE() END_EVENT_TABLE()
#if !defined(__WXMSW__) || defined(__WIN16__) || defined(__WXUNIVERSAL__) #if !defined(__WXMSW__) || defined(__WIN16__) || defined(__WXUNIVERSAL__)
@@ -2882,7 +2883,10 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
// Is the mouse over a tree item button? // Is the mouse over a tree item button?
int flags = 0; int flags = 0;
wxGenericTreeItem *underMouse = m_anchor->HitTest(pt, this, flags, 0); wxGenericTreeItem *thisItem = m_anchor->HitTest(pt, this, flags, 0);
wxGenericTreeItem *underMouse = thisItem;
bool underMouseChanged = (underMouse != m_underMouse) ;
if ((underMouse) && if ((underMouse) &&
(flags & wxTREE_HITTEST_ONITEMBUTTON) && (flags & wxTREE_HITTEST_ONITEMBUTTON) &&
(!event.LeftIsDown()) && (!event.LeftIsDown()) &&
@@ -2912,10 +2916,10 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
// Determines what item we are hovering over and need a tooltip for // Determines what item we are hovering over and need a tooltip for
wxTreeItemId hoverItem = HitTest(ScreenToClient(wxGetMousePosition())); wxTreeItemId hoverItem = thisItem;
// We do not want a tooltip if we are dragging, or if the rename timer is running // We do not want a tooltip if we are dragging, or if the rename timer is running
if (hoverItem.IsOk() && !m_isDragging && (!m_renameTimer || !m_renameTimer->IsRunning())) if (underMouseChanged && hoverItem.IsOk() && !m_isDragging && (!m_renameTimer || !m_renameTimer->IsRunning()))
{ {
// Ask the tree control what tooltip (if any) should be shown // Ask the tree control what tooltip (if any) should be shown
wxTreeEvent hevent(wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP, GetId()); wxTreeEvent hevent(wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP, GetId());
@@ -3365,4 +3369,11 @@ bool wxGenericTreeCtrl::SetForegroundColour(const wxColour& colour)
return TRUE; return TRUE;
} }
// Process the tooltip event, to speed up event processing.
// Doesn't actually get a tooltip.
void wxGenericTreeCtrl::OnGetToolTip( wxTreeEvent &event )
{
event.Veto();
}
#endif // wxUSE_TREECTRL #endif // wxUSE_TREECTRL