X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e0dec8753abaf97e006ea1185bfb6775b28df0a8..07aaf32633ecf18ec3edfbb41793a112914792d0:/src/generic/treectlg.cpp diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 323aa53db4..d7193a9feb 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -127,7 +127,7 @@ public: wxTreeFindTimer( wxGenericTreeCtrl *owner ) { m_owner = owner; } - virtual void Notify() { m_owner->m_findPrefix.clear(); } + virtual void Notify() { m_owner->ResetFindState(); } private: wxGenericTreeCtrl *m_owner; @@ -956,6 +956,7 @@ void wxGenericTreeCtrl::Init() m_renameTimer = NULL; m_findTimer = NULL; + m_findBell = 0; // default is to not ring bell at all m_dropEffectAboveItem = false; @@ -1045,6 +1046,11 @@ wxGenericTreeCtrl::~wxGenericTreeCtrl() delete m_imageListButtons; } +void wxGenericTreeCtrl::EnableBellOnNoMatch( bool on ) +{ + m_findBell = on; +} + // ----------------------------------------------------------------------------- // accessors // ----------------------------------------------------------------------------- @@ -1557,6 +1563,13 @@ void wxGenericTreeCtrl::ResetTextControl() m_textCtrl = NULL; } +void wxGenericTreeCtrl::ResetFindState() +{ + m_findPrefix.clear(); + if ( m_findBell ) + m_findBell = 1; +} + // find the first item starting with the given prefix after the given item wxTreeItemId wxGenericTreeCtrl::FindItem(const wxTreeItemId& idParent, const wxString& prefixOrig) const @@ -3347,6 +3360,24 @@ void wxGenericTreeCtrl::OnChar( wxKeyEvent &event ) if ( id.IsOk() ) { SelectItem(id); + + // Reset the bell flag if it had been temporarily disabled + // before. + if ( m_findBell ) + m_findBell = 1; + } + else // No such item + { + // Signal it with a bell if enabled. + if ( m_findBell == 1 ) + { + ::wxBell(); + + // Disable it for the next unsuccessful match, we only + // beep once, this is usually enough and continuing to + // do it would be annoying. + m_findBell = -1; + } } } else @@ -3452,11 +3483,7 @@ wxTextCtrl *wxGenericTreeCtrl::EditLabel(const wxTreeItemId& item, // question might just have been added and no screen // update taken place. if ( m_dirty ) -#if defined( __WXMSW__ ) || defined(__WXMAC__) - Update(); -#else DoDirtyProcessing(); -#endif // TODO: use textCtrlClass here to create the control of correct class m_textCtrl = new wxTreeTextCtrl(this, itemEdit); @@ -3563,6 +3590,13 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event ) wxTreeEvent hevent(wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP, this, hoverItem); + // setting a tooltip upon leaving a view is getting the tooltip displayed + // on the neighbouring view ... +#ifdef __WXOSX__ + if ( event.Leaving() ) + SetToolTip(NULL); + else +#endif if ( GetEventHandler()->ProcessEvent(hevent) ) { // If the user permitted the tooltip change, update it, otherwise