}
m_StyleInfo = llist->GetDefaultStyleInfo();
+
+ llist->IncNumLines();
}
wxLayoutLine::~wxLayoutLine()
wxLayoutLine *
wxLayoutLine::DeleteLine(bool update, wxLayoutList *llist)
{
- if(m_Next) m_Next->m_Previous = m_Previous;
- if(m_Previous) m_Previous->m_Next = m_Next;
+ // maintain linked list integrity
+ if(m_Next)
+ m_Next->m_Previous = m_Previous;
+ if(m_Previous)
+ m_Previous->m_Next = m_Next;
+
if(update)
{
m_Next->MoveLines(-1);
}
wxLayoutLine *next = m_Next;
delete this;
+
+ llist->DecNumLines();
+
return next;
}
m_caret = NULL;
#endif // WXLAYOUT_USE_CARET
+ m_numLines = 0;
m_FirstLine = NULL;
InvalidateUpdateRect();
Clear();
{
InternalClear();
m_FirstLine->DeleteLine(false, this);
+
+ wxASSERT_MSG( m_numLines == 0, "line count calculation broken" );
}
void
#endif
line = line->GetNextLine();
}
- if(line == NULL)
+
+ if ( !line )
{
- if(found) *found = false;
+ if ( found )
+ *found = false;
+
return NULL; // not found
}
- if(cursorPos) cursorPos->y = line->GetLineNumber();
+
+ if ( cursorPos )
+ cursorPos->y = line->GetLineNumber();
+
// Now, find the object in the line:
+ ApplyStyle(line->GetStyleInfo(), dc);
wxLOiterator i = line->FindObjectScreen(dc, pos.x,
- cursorPos ? & cursorPos->x : NULL ,
+ cursorPos ? &cursorPos->x : NULL,
found);
return (i == NULLIT) ? NULL : *i;