m_parent = parent;
- m_attr = (wxTreeItemAttr *)NULL;
+ m_attr = NULL;
m_ownsAttr = false;
// We don't know the height here yet.
}
// if children are expanded, fall through to evaluate them
- if (m_isCollapsed) return (wxGenericTreeItem*) NULL;
+ if (m_isCollapsed) return NULL;
}
// evaluate children
return res;
}
- return (wxGenericTreeItem*) NULL;
+ return NULL;
}
int wxGenericTreeItem::GetCurrentImage() const
m_current =
m_key_current =
m_anchor =
- m_select_me = (wxGenericTreeItem *) NULL;
+ m_select_me = NULL;
m_hasFocus = false;
m_dirty = false;
m_findTimer = NULL;
m_dropEffectAboveItem = false;
+
+ m_dndEffect = NoEffect;
+ m_dndEffectItem = NULL;
m_lastOnSame = false;
#if defined( __WXMAC__ )
-#if wxOSX_USE_CARBON
+#if wxOSX_USE_ATSU_TEXT
m_normalFont.MacCreateFromThemeFont( kThemeViewsFont ) ;
#else
m_normalFont.MacCreateFromUIFont( kCTFontViewsFontType ) ;
m_dirty = true; // do this first so stuff below doesn't cause flicker
- m_anchor = new wxGenericTreeItem((wxGenericTreeItem *)NULL, text,
+ m_anchor = new wxGenericTreeItem(NULL, text,
image, selImage, data);
if ( data != NULL )
{
// restore normal font
dc.SetFont( m_normalFont );
+
+ if (item == m_dndEffectItem)
+ {
+ dc.SetPen( *wxBLACK_PEN );
+ // DnD visual effects
+ switch (m_dndEffect)
+ {
+ case BorderEffect:
+ {
+ dc.SetBrush(*wxTRANSPARENT_BRUSH);
+ int w = item->GetWidth() + 2;
+ int h = total_h + 2;
+ dc.DrawRectangle( item->GetX() - 1, item->GetY() - 1, w, h);
+ break;
+ }
+ case AboveEffect:
+ {
+ int x = item->GetX(),
+ y = item->GetY();
+ dc.DrawLine( x, y, x + item->GetWidth(), y);
+ break;
+ }
+ case BelowEffect:
+ {
+ int x = item->GetX(),
+ y = item->GetY();
+ y += total_h - 1;
+ dc.DrawLine( x, y, x + item->GetWidth(), y);
+ break;
+ }
+ case NoEffect:
+ break;
+ }
+ }
}
void
DrawLine(item, !m_dropEffectAboveItem );
}
- SetCursor(wxCURSOR_BULLSEYE);
+ SetCursor(*wxSTANDARD_CURSOR);
}
else
{
wxGenericTreeItem *i = (wxGenericTreeItem*) item.m_pItem;
- wxClientDC dc(this);
- PrepareDC( dc );
- dc.SetLogicalFunction(wxINVERT);
- dc.SetBrush(*wxTRANSPARENT_BRUSH);
-
- int w = i->GetWidth() + 2;
- int h = GetLineHeight(i) + 2;
-
- dc.DrawRectangle( i->GetX() - 1, i->GetY() - 1, w, h);
+ if (m_dndEffect == NoEffect)
+ {
+ m_dndEffect = BorderEffect;
+ m_dndEffectItem = i;
+ }
+ else
+ {
+ m_dndEffect = NoEffect;
+ m_dndEffectItem = NULL;
+ }
+
+ wxRect rect( i->GetX()-1, i->GetY()-1, i->GetWidth()+2, GetLineHeight(i)+2 );
+ CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y );
+ RefreshRect( rect );
}
void wxGenericTreeCtrl::DrawLine(const wxTreeItemId &item, bool below)
wxGenericTreeItem *i = (wxGenericTreeItem*) item.m_pItem;
- wxClientDC dc(this);
- PrepareDC( dc );
- dc.SetLogicalFunction(wxINVERT);
-
- int x = i->GetX(),
- y = i->GetY();
- if ( below )
+ if (m_dndEffect == NoEffect)
+ {
+ if (below)
+ m_dndEffect = BelowEffect;
+ else
+ m_dndEffect = AboveEffect;
+ m_dndEffectItem = i;
+ }
+ else
{
- y += GetLineHeight(i) - 1;
+ m_dndEffect = NoEffect;
+ m_dndEffectItem = NULL;
}
-
- dc.DrawLine( x, y, x + i->GetWidth(), y);
+
+ wxRect rect( i->GetX()-1, i->GetY()-1, i->GetWidth()+2, GetLineHeight(i)+2 );
+ CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y );
+ RefreshRect( rect );
}
// -----------------------------------------------------------------------------
{
m_oldSelection->SetHilight(true);
RefreshLine(m_oldSelection);
- m_oldSelection = (wxGenericTreeItem *)NULL;
+ m_oldSelection = NULL;
}
// generate the drag end event
(void)GetEventHandler()->ProcessEvent(eventEndDrag);
m_isDragging = false;
- m_dropTarget = (wxGenericTreeItem *)NULL;
+ m_dropTarget = NULL;
SetCursor(m_oldCursor);