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
This commit is contained in:
@@ -502,6 +502,7 @@ private:
|
|||||||
wxString *m_res;
|
wxString *m_res;
|
||||||
wxListMainWindow *m_owner;
|
wxListMainWindow *m_owner;
|
||||||
wxString m_startValue;
|
wxString m_startValue;
|
||||||
|
bool m_finished;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxListTextCtrl() {}
|
wxListTextCtrl() {}
|
||||||
@@ -2139,6 +2140,7 @@ wxListTextCtrl::wxListTextCtrl( wxWindow *parent,
|
|||||||
(*m_accept) = FALSE;
|
(*m_accept) = FALSE;
|
||||||
(*m_res) = "";
|
(*m_res) = "";
|
||||||
m_startValue = value;
|
m_startValue = value;
|
||||||
|
m_finished = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxListTextCtrl::OnChar( wxKeyEvent &event )
|
void wxListTextCtrl::OnChar( wxKeyEvent &event )
|
||||||
@@ -2151,9 +2153,12 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event )
|
|||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(this);
|
wxPendingDelete.Append(this);
|
||||||
|
|
||||||
if ((*m_accept) && ((*m_res) != m_startValue))
|
if ((*m_res) != m_startValue)
|
||||||
m_owner->OnRenameAccept();
|
m_owner->OnRenameAccept();
|
||||||
|
|
||||||
|
m_finished = TRUE;
|
||||||
|
m_owner->SetFocus(); // This doesn't work. TODO.
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (event.m_keyCode == WXK_ESCAPE)
|
if (event.m_keyCode == WXK_ESCAPE)
|
||||||
@@ -2164,6 +2169,9 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event )
|
|||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(this);
|
wxPendingDelete.Append(this);
|
||||||
|
|
||||||
|
m_finished = TRUE;
|
||||||
|
m_owner->SetFocus(); // This doesn't work. TODO.
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2172,12 +2180,18 @@ void wxListTextCtrl::OnChar( wxKeyEvent &event )
|
|||||||
|
|
||||||
void wxListTextCtrl::OnKeyUp( wxKeyEvent &event )
|
void wxListTextCtrl::OnKeyUp( wxKeyEvent &event )
|
||||||
{
|
{
|
||||||
|
if (m_finished)
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// auto-grow the textctrl:
|
// auto-grow the textctrl:
|
||||||
wxSize parentSize = m_owner->GetSize();
|
wxSize parentSize = m_owner->GetSize();
|
||||||
wxPoint myPos = GetPosition();
|
wxPoint myPos = GetPosition();
|
||||||
wxSize mySize = GetSize();
|
wxSize mySize = GetSize();
|
||||||
int sx, sy;
|
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)
|
if (myPos.x + sx > parentSize.x)
|
||||||
sx = parentSize.x - myPos.x;
|
sx = parentSize.x - myPos.x;
|
||||||
if (mySize.x > sx)
|
if (mySize.x > sx)
|
||||||
@@ -2187,12 +2201,21 @@ void wxListTextCtrl::OnKeyUp( wxKeyEvent &event )
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxListTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) )
|
void wxListTextCtrl::OnKillFocus( wxFocusEvent &event )
|
||||||
{
|
{
|
||||||
|
if (m_finished)
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(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();
|
m_owner->OnRenameAccept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -96,6 +96,7 @@ private:
|
|||||||
wxString *m_res;
|
wxString *m_res;
|
||||||
wxGenericTreeCtrl *m_owner;
|
wxGenericTreeCtrl *m_owner;
|
||||||
wxString m_startValue;
|
wxString m_startValue;
|
||||||
|
bool m_finished;
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -304,21 +305,24 @@ wxTreeTextCtrl::wxTreeTextCtrl( wxWindow *parent,
|
|||||||
(*m_accept) = FALSE;
|
(*m_accept) = FALSE;
|
||||||
(*m_res) = wxEmptyString;
|
(*m_res) = wxEmptyString;
|
||||||
m_startValue = value;
|
m_startValue = value;
|
||||||
|
m_finished = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTreeTextCtrl::OnChar( wxKeyEvent &event )
|
void wxTreeTextCtrl::OnChar( wxKeyEvent &event )
|
||||||
{
|
{
|
||||||
// TODO focus doesn't return to the wxTextCtrl when this closes...
|
|
||||||
if (event.m_keyCode == WXK_RETURN)
|
if (event.m_keyCode == WXK_RETURN)
|
||||||
{
|
{
|
||||||
(*m_accept) = TRUE;
|
(*m_accept) = TRUE;
|
||||||
(*m_res) = GetValue();
|
(*m_res) = GetValue();
|
||||||
|
|
||||||
if ((*m_accept) && ((*m_res) != m_startValue))
|
if ((*m_res) != m_startValue)
|
||||||
m_owner->OnRenameAccept();
|
m_owner->OnRenameAccept();
|
||||||
|
|
||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(this);
|
wxPendingDelete.Append(this);
|
||||||
|
|
||||||
|
m_finished = TRUE;
|
||||||
|
m_owner->SetFocus(); // This doesn't work. TODO.
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -330,6 +334,9 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event )
|
|||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(this);
|
wxPendingDelete.Append(this);
|
||||||
|
|
||||||
|
m_finished = TRUE;
|
||||||
|
m_owner->SetFocus(); // This doesn't work. TODO.
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
event.Skip();
|
event.Skip();
|
||||||
@@ -337,12 +344,18 @@ void wxTreeTextCtrl::OnChar( wxKeyEvent &event )
|
|||||||
|
|
||||||
void wxTreeTextCtrl::OnKeyUp( wxKeyEvent &event )
|
void wxTreeTextCtrl::OnKeyUp( wxKeyEvent &event )
|
||||||
{
|
{
|
||||||
|
if (m_finished)
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// auto-grow the textctrl:
|
// auto-grow the textctrl:
|
||||||
wxSize parentSize = m_owner->GetSize();
|
wxSize parentSize = m_owner->GetSize();
|
||||||
wxPoint myPos = GetPosition();
|
wxPoint myPos = GetPosition();
|
||||||
wxSize mySize = GetSize();
|
wxSize mySize = GetSize();
|
||||||
int sx, sy;
|
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 (myPos.x + sx > parentSize.x) sx = parentSize.x - myPos.x;
|
||||||
if (mySize.x > sx) sx = mySize.x;
|
if (mySize.x > sx) sx = mySize.x;
|
||||||
SetSize(sx, -1);
|
SetSize(sx, -1);
|
||||||
@@ -350,12 +363,21 @@ void wxTreeTextCtrl::OnKeyUp( wxKeyEvent &event )
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) )
|
void wxTreeTextCtrl::OnKillFocus( wxFocusEvent &event )
|
||||||
{
|
{
|
||||||
|
if (m_finished)
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!wxPendingDelete.Member(this))
|
if (!wxPendingDelete.Member(this))
|
||||||
wxPendingDelete.Append(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();
|
m_owner->OnRenameAccept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user