wxString *m_res;
wxGenericTreeCtrl *m_owner;
wxString m_startValue;
+ bool m_finished;
DECLARE_EVENT_TABLE()
};
(*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;
}
if (!wxPendingDelete.Member(this))
wxPendingDelete.Append(this);
+ m_finished = TRUE;
+ m_owner->SetFocus(); // This doesn't work. TODO.
+
return;
}
event.Skip();
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);
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();
}
const wxValidator &validator,
const wxString& name )
{
+#ifdef __WXMAC__
+ int major,minor;
+ wxGetOsVersion( &major, &minor );
+
+ if (style & wxTR_HAS_BUTTONS) style |= wxTR_MAC_BUTTONS;
+ if (style & wxTR_HAS_BUTTONS) style &= ~wxTR_HAS_BUTTONS;
+ style &= ~wxTR_LINES_AT_ROOT;
+ style |= wxTR_NO_LINES;
+ if (major < 10)
+ style |= wxTR_ROW_LINES;
+ if (major >= 10)
+ style |= wxTR_AQUA_BUTTONS;
+#endif
+
+
wxScrolledWindow::Create( parent, id, pos, size,
style|wxHSCROLL|wxVSCROLL, name );
// could have them as well and it's better to err on this side rather than
// disabling some operations which are restricted to the items with
// children for an item which does have them
- return !((wxGenericTreeItem*) item.m_pItem)->HasPlus();
+ return ((wxGenericTreeItem*) item.m_pItem)->HasPlus();
}
bool wxGenericTreeCtrl::IsExpanded(const wxTreeItemId& item) const
else if (HasFlag(wxTR_TWIST_BUTTONS))
{
// draw the twisty button here
- dc.SetPen(*wxBLACK_PEN);
- dc.SetBrush(*m_hilightBrush);
-
+
wxPoint button[3];
-
- if (item->IsExpanded())
+ dc.SetBrush(*m_hilightBrush);
+
+ if (HasFlag(wxTR_AQUA_BUTTONS))
{
- button[0].x = x-5;
- button[0].y = y_mid-2;
- button[1].x = x+5;
- button[1].y = y_mid-2;
- button[2].x = x;
- button[2].y = y_mid+3;
+ dc.SetPen(*wxTRANSPARENT_PEN);
+
+ if (item->IsExpanded())
+ {
+ button[0].x = x-6;
+ button[0].y = y_mid-2;
+ button[1].x = x+6;
+ button[1].y = y_mid-2;
+ button[2].x = x;
+ button[2].y = y_mid+7;
+ }
+ else
+ {
+ button[0].y = y_mid-6;
+ button[0].x = x-2;
+ button[1].y = y_mid+6;
+ button[1].x = x-2;
+ button[2].y = y_mid;
+ button[2].x = x+7;
+ }
}
else
{
- button[0].y = y_mid-5;
- button[0].x = x-2;
- button[1].y = y_mid+5;
- button[1].x = x-2;
- button[2].y = y_mid;
- button[2].x = x+3;
+ dc.SetPen(*wxBLACK_PEN);
+
+ if (item->IsExpanded())
+ {
+ button[0].x = x-5;
+ button[0].y = y_mid-2;
+ button[1].x = x+5;
+ button[1].y = y_mid-2;
+ button[2].x = x;
+ button[2].y = y_mid+3;
+ }
+ else
+ {
+ button[0].y = y_mid-5;
+ button[0].x = x-2;
+ button[1].y = y_mid+5;
+ button[1].x = x-2;
+ button[2].y = y_mid;
+ button[2].x = x+3;
+ }
}
dc.DrawPolygon(3, button);