protected internal override Rectangle GetFocusRect(JetListViewNode itemNode, Rectangle rc) { Rectangle rcFocus; int curX = -_scrollOffset + _borderSize; int selWidth = GetTotalColumnWidth(); bool inIndent = false; ColumnWidthEnumerator fixedColEnumerator = new ColumnWidthEnumerator(_columnCollection, itemNode); while (fixedColEnumerator.MoveNext()) { if (IsValueColumn(fixedColEnumerator.Current)) { break; } if (fixedColEnumerator.Current.IsIndentColumn()) { inIndent = true; } curX += fixedColEnumerator.CurrentWidth; if (!inIndent || !fixedColEnumerator.Current.FixedSize) { selWidth -= fixedColEnumerator.CurrentWidth; } } rcFocus = new Rectangle(curX, rc.Top, selWidth, rc.Height); return(rcFocus); }
public override Rectangle GetColumnBounds(JetListViewColumn col, JetListViewNode node) { int curX = -_scrollOffset + _borderSize; ColumnWidthEnumerator enumerator = new ColumnWidthEnumerator(_columnCollection, node); while (enumerator.MoveNext()) { if (enumerator.Current == col) { return(new Rectangle(curX, 0, enumerator.CurrentWidth, _rowHeight)); } curX += enumerator.CurrentWidth; } throw new ArgumentException("Column not found in list", "col"); }
protected override JetListViewColumn GetColumnAndDelta(JetListViewNode node, int x, int y, out int deltaX, out int deltaY) { Guard.NullArgument(node, "node"); deltaY = y; int curX = -_scrollOffset + _borderSize; ColumnWidthEnumerator enumerator = new ColumnWidthEnumerator(_columnCollection, node); while (enumerator.MoveNext()) { if (x >= curX && x < curX + enumerator.CurrentWidth) { deltaX = x - curX; return(enumerator.Current); } curX += enumerator.CurrentWidth; } deltaX = 0; return(null); }
public override void DrawRow(Graphics g, Rectangle rc, JetListViewNode itemNode, RowState state) { int curX = -_scrollOffset + _borderSize; Rectangle rcFocus = Rectangle.Empty; bool focusRow = false, dropTargetRow = false; if (((state & RowState.Focused) != 0 && _searchHighlightText != null && _searchHighlightText.Length > 0)) { state |= RowState.IncSearchMatch; } if (_fullRowSelect) { rcFocus = GetFocusRect(itemNode, rc); FillFullRowSelectBar(g, rcFocus, state); } ColumnWidthEnumerator colEnumerator = new ColumnWidthEnumerator(_columnCollection, itemNode); bool selectionDrawn = false, firstValueColumnFound = false; while (colEnumerator.MoveNext()) { if (IsValueColumn(colEnumerator.Current)) { firstValueColumnFound = true; } ClearRowSelectState(ref state, ref focusRow, ref dropTargetRow); if (_fullRowSelect) { if ((state & RowState.IncSearchMatch) != 0 && firstValueColumnFound && ((state & RowState.ActiveSelected) != 0)) { state &= ~RowState.ActiveSelected; state |= RowState.InactiveSelected; } } else { if (selectionDrawn) { state &= ~(RowState.InactiveSelected | RowState.ActiveSelected | RowState.Focused); } } Rectangle rcCol = new Rectangle(curX, rc.Top, colEnumerator.CurrentWidth, rc.Height); JetListViewColumn col = colEnumerator.Current; DrawColumnWithHighlight(g, rcCol, itemNode, col, state); if (!selectionDrawn && firstValueColumnFound) { selectionDrawn = true; } curX += rcCol.Width; } DrawRowSelectRect(g, rcFocus, dropTargetRow, focusRow); }