// We have to call this here because the label in
// question might just have been added and no screen
// update taken place.
- if (m_dirty) wxYield();
+ if (m_dirty) wxYieldIfNeeded();
wxGenericTreeItem *gitem = (wxGenericTreeItem*) item.m_pItem;
dc.SetBrush(wxBrush(colBg, wxSOLID));
}
- dc.DrawRectangle( item->GetX()-2, item->GetY(), item->GetWidth()+2, total_h );
+ if (item->IsSelected() && image != NO_IMAGE)
+ {
+ // If it's selected, and there's an image, then we should
+ // take care to leave the area under the image painted in the
+ // background colour.
+ dc.DrawRectangle( item->GetX() + image_w - 2, item->GetY(), item->GetWidth() - image_w + 2, total_h );
+ }
+ else
+ dc.DrawRectangle( item->GetX()-2, item->GetY(), item->GetWidth()+2, total_h );
if ( image != NO_IMAGE )
{
// We have to call this here because the label in
// question might just have been added and no screen
// update taken place.
- if (m_dirty) wxYield();
+ if (m_dirty) wxYieldIfNeeded();
wxClientDC dc(this);
PrepareDC(dc);
// We have to call this here because the label in
// question might just have been added and no screen
// update taken place.
- if (m_dirty) wxYield();
+ if (m_dirty) wxYieldIfNeeded();
wxString s = m_currentEdit->GetText();
int x = m_currentEdit->GetX();
x = dc.LogicalToDeviceX( x );
y = dc.LogicalToDeviceY( y );
- wxTreeTextCtrl *text = new wxTreeTextCtrl(
- this, -1, &m_renameAccept, &m_renameRes, this, s, wxPoint(x-4,y-4), wxSize(w+11,h+8) );
+ wxTreeTextCtrl *text = new wxTreeTextCtrl(this, -1,
+ &m_renameAccept,
+ &m_renameRes,
+ this,
+ s,
+ wxPoint(x-4,y-4),
+ wxSize(w+11,h+8));
text->SetFocus();
}
// highlight the current drop target if any
DrawDropEffect(m_dropTarget);
- wxYield();
+ wxYieldIfNeeded();
}
}
else if ( (event.LeftUp() || event.RightUp()) && m_isDragging )
SetCursor(m_oldCursor);
- wxYield();
+ wxYieldIfNeeded();
}
else
{
m_lastOnSame = FALSE;
}
}
- else
+ else // !RightDown() && !LeftUp() ==> LeftDown() || LeftDClick()
{
if ( event.LeftDown() )
{
m_lastOnSame = item == m_current;
}
+ if ( flags & wxTREE_HITTEST_ONITEMBUTTON )
+ {
+ // only toggle the item for a single click, double click on
+ // the button doesn't do anything (it toggles the item twice)
+ if ( event.LeftDown() )
+ {
+ Toggle( item );
+ }
+
+ // don't select the item if the button was clicked
+ return;
+ }
+
// how should the selection work for this event?
bool is_multiple, extended_select, unselect_others;
EventFlagsToSelType(GetWindowStyleFlag(),
event.ControlDown(),
is_multiple, extended_select, unselect_others);
- if ( (flags & wxTREE_HITTEST_ONITEMBUTTON) && event.LeftDown() )
- {
- Toggle( item );
- if ( is_multiple )
- return;
- }
-
SelectItem(item, unselect_others, extended_select);
if ( event.LeftDClick() )