X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/105fc244a190a98f1fc890281a35e0b206b9ab56..c20ab85b6051cdb2ec4282269fd7109a23cf8df9:/src/generic/treectlg.cpp diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 80e77ad8aa..5a6c21a1b3 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -108,6 +108,7 @@ private: wxGenericTreeItem *m_itemEdited; wxString m_startValue; bool m_finished; + bool m_aboutToFinish; DECLARE_EVENT_TABLE() DECLARE_NO_COPY_CLASS(wxTreeTextCtrl) @@ -341,6 +342,7 @@ wxTreeTextCtrl::wxTreeTextCtrl(wxGenericTreeCtrl *owner, { m_owner = owner; m_finished = false; + m_aboutToFinish = false; int w = m_itemEdited->GetWidth(), h = m_itemEdited->GetHeight(); @@ -413,7 +415,7 @@ bool wxTreeTextCtrl::AcceptChanges() void wxTreeTextCtrl::Finish() { - if ( !m_finished ) + if ( !m_finished && !m_aboutToFinish ) { m_owner->ResetTextControl(); @@ -430,12 +432,11 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event ) switch ( event.m_keyCode ) { case WXK_RETURN: + m_aboutToFinish = true; // Notify the owner about the changes AcceptChanges(); - // Even if vetoed, close the control (consistent with MSW) Finish(); - break; case WXK_ESCAPE: @@ -471,14 +472,16 @@ void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &event ) { if ( !m_finished ) { - AcceptChanges(); // We must finish regardless of success, otherwise we'll get // focus problems: Finish(); + + if ( !AcceptChanges() ) + m_owner->OnRenameCancelled( m_itemEdited ); } // We must let the native text control handle focus, too, otherwise - // it could have problems with the cursor (e.g., in wxGTK): + // it could have problems with the cursor (e.g., in wxGTK). event.Skip(); } @@ -3100,6 +3103,7 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event ) wxTreeEvent nevent( command, GetId() ); nevent.m_item = m_current; nevent.SetEventObject(this); + nevent.SetPoint(pt); // by default the dragging is not supported, the user code must // explicitly allow the event for it to take place