From dd5a32cc2d518f6b72ebb9173bf56f241e96549f Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 9 Dec 2001 21:15:56 +0000 Subject: [PATCH] Changed semantics of clicking beside the text control when editing a label. This now accepts the input. My attempt to make the focus return to the owning tree and list control window failed. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/listctrl.cpp | 31 +++++++++++++++++++++++++++---- src/generic/treectlg.cpp | 32 +++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index d372557375..5e7ce897ad 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -502,6 +502,7 @@ private: wxString *m_res; wxListMainWindow *m_owner; wxString m_startValue; + bool m_finished; public: wxListTextCtrl() {} @@ -2139,6 +2140,7 @@ wxListTextCtrl::wxListTextCtrl( wxWindow *parent, (*m_accept) = FALSE; (*m_res) = ""; m_startValue = value; + m_finished = FALSE; } void wxListTextCtrl::OnChar( wxKeyEvent &event ) @@ -2151,9 +2153,12 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event ) if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - if ((*m_accept) && ((*m_res) != m_startValue)) + if ((*m_res) != m_startValue) m_owner->OnRenameAccept(); + m_finished = TRUE; + m_owner->SetFocus(); // This doesn't work. TODO. + return; } if (event.m_keyCode == WXK_ESCAPE) @@ -2164,6 +2169,9 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event ) if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); + m_finished = TRUE; + m_owner->SetFocus(); // This doesn't work. TODO. + return; } @@ -2172,12 +2180,18 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event ) void wxListTextCtrl::OnKeyUp( wxKeyEvent &event ) { + if (m_finished) + { + event.Skip(); + return; + } + // auto-grow the textctrl: wxSize parentSize = m_owner->GetSize(); wxPoint myPos = GetPosition(); wxSize mySize = GetSize(); int sx, sy; - GetTextExtent(GetValue() + _T("MM"), &sx, &sy); // FIXME: MM?? + GetTextExtent(GetValue() + _T("M"), &sx, &sy); // FIXME: MM?? if (myPos.x + sx > parentSize.x) sx = parentSize.x - myPos.x; if (mySize.x > sx) @@ -2187,12 +2201,21 @@ void wxListTextCtrl::OnKeyUp( wxKeyEvent &event ) event.Skip(); } -void wxListTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) +void wxListTextCtrl::OnKillFocus( wxFocusEvent &event ) { + if (m_finished) + { + event.Skip(); + return; + } + if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - if ((*m_accept) && ((*m_res) != m_startValue)) + (*m_accept) = TRUE; + (*m_res) = GetValue(); + + if ((*m_res) != m_startValue) m_owner->OnRenameAccept(); } diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index f33efdf928..71f27e271d 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -96,6 +96,7 @@ private: wxString *m_res; wxGenericTreeCtrl *m_owner; wxString m_startValue; + bool m_finished; DECLARE_EVENT_TABLE() }; @@ -304,21 +305,24 @@ wxTreeTextCtrl::wxTreeTextCtrl( wxWindow *parent, (*m_accept) = FALSE; (*m_res) = wxEmptyString; m_startValue = value; + m_finished = FALSE; } void wxTreeTextCtrl::OnChar( wxKeyEvent &event ) { - // TODO focus doesn't return to the wxTextCtrl when this closes... if (event.m_keyCode == WXK_RETURN) { (*m_accept) = TRUE; (*m_res) = GetValue(); - if ((*m_accept) && ((*m_res) != m_startValue)) + if ((*m_res) != m_startValue) m_owner->OnRenameAccept(); if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); + + m_finished = TRUE; + m_owner->SetFocus(); // This doesn't work. TODO. return; } @@ -330,6 +334,9 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event ) if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); + m_finished = TRUE; + m_owner->SetFocus(); // This doesn't work. TODO. + return; } event.Skip(); @@ -337,12 +344,18 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event ) void wxTreeTextCtrl::OnKeyUp( wxKeyEvent &event ) { + if (m_finished) + { + event.Skip(); + return; + } + // auto-grow the textctrl: wxSize parentSize = m_owner->GetSize(); wxPoint myPos = GetPosition(); wxSize mySize = GetSize(); int sx, sy; - GetTextExtent(GetValue() + _T("MM"), &sx, &sy); + GetTextExtent(GetValue() + _T("M"), &sx, &sy); if (myPos.x + sx > parentSize.x) sx = parentSize.x - myPos.x; if (mySize.x > sx) sx = mySize.x; SetSize(sx, -1); @@ -350,12 +363,21 @@ void wxTreeTextCtrl::OnKeyUp( wxKeyEvent &event ) event.Skip(); } -void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) +void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &event ) { + if (m_finished) + { + event.Skip(); + return; + } + if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - if ((*m_accept) && ((*m_res) != m_startValue)) + (*m_accept) = TRUE; + (*m_res) = GetValue(); + + if ((*m_res) != m_startValue) m_owner->OnRenameAccept(); } -- 2.49.0