const wxValidator& validator = wxDefaultValidator,
const wxString &name = "listctrltextctrl" );
void OnChar( wxKeyEvent &event );
+ void OnKeyUp( wxKeyEvent &event );
void OnKillFocus( wxFocusEvent &event );
private:
BEGIN_EVENT_TABLE(wxListTextCtrl,wxTextCtrl)
EVT_CHAR (wxListTextCtrl::OnChar)
+ EVT_KEY_UP (wxListTextCtrl::OnKeyUp)
EVT_KILL_FOCUS (wxListTextCtrl::OnKillFocus)
END_EVENT_TABLE()
event.Skip();
}
+void wxListTextCtrl::OnKeyUp( wxKeyEvent &event )
+{
+ // auto-grow the textctrl:
+ wxSize parentSize = m_owner->GetSize();
+ wxPoint myPos = GetPosition();
+ wxSize mySize = GetSize();
+ int sx, sy;
+ GetTextExtent(GetValue() + _T("MM"), &sx, &sy);
+ if (myPos.x + sx > parentSize.x) sx = parentSize.x - myPos.x;
+ if (mySize.x > sx) sx = mySize.x;
+ SetSize(sx, -1);
+
+ event.Skip();
+}
+
void wxListTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) )
{
if (!wxPendingDelete.Member(this))
if (index >= 0 && (size_t)index < m_lines.GetCount())
{
m_lines[(size_t)index].GetRect( rect );
+ this->CalcScrolledPosition(rect.x,rect.y,&rect.x,&rect.y);
}
else
{
bool wxListMainWindow::GetItemPosition(long item, wxPoint& pos)
{
- if (item >= 0 && (size_t)item < m_lines.GetCount())
- {
- wxRect rect;
- m_lines[(size_t)item].GetRect( rect );
- pos.x = rect.x;
- pos.y = rect.y;
- }
- else
- {
- pos.x = 0;
- pos.y = 0;
- }
+ wxRect rect;
+ this->GetItemRect(item,rect);
+ pos.x=rect.x; pos.y=rect.y;
return TRUE;
}