Author: bonefish Date: 2009-10-15 06:31:42 +0200 (Thu, 15 Oct 2009) New Revision: 33587 Changeset: http://dev.haiku-os.org/changeset/33587/haiku Modified: haiku/trunk/headers/private/interface/ColumnListView.h haiku/trunk/src/kits/interface/ColumnListView.cpp Log: Added ColumnAt(BPoint) version. Modified: haiku/trunk/headers/private/interface/ColumnListView.h =================================================================== --- haiku/trunk/headers/private/interface/ColumnListView.h 2009-10-14 12:51:19 UTC (rev 33586) +++ haiku/trunk/headers/private/interface/ColumnListView.h 2009-10-15 04:31:42 UTC (rev 33587) @@ -297,6 +297,7 @@ void RemoveColumn(BColumn* column); int32 CountColumns() const; BColumn* ColumnAt(int32 index) const; + BColumn* ColumnAt(BPoint point) const; void SetColumnVisible(BColumn* column, bool isVisible); void SetColumnVisible(int32, bool); Modified: haiku/trunk/src/kits/interface/ColumnListView.cpp =================================================================== --- haiku/trunk/src/kits/interface/ColumnListView.cpp 2009-10-14 12:51:19 UTC (rev 33586) +++ haiku/trunk/src/kits/interface/ColumnListView.cpp 2009-10-15 04:31:42 UTC (rev 33587) @@ -1118,6 +1118,26 @@ } +BColumn* +BColumnListView::ColumnAt(BPoint point) const +{ + float left = MAX(kLeftMargin, LatchWidth()); + + for (int i = 0; BColumn* column = (BColumn*)fColumns.ItemAt(i); i++) { + if (!column->IsVisible()) + continue; + + float right = left + column->Width(); + if (point.x >= left && point.x <= right) + return column; + + left = right + 1; + } + + return NULL; +} + + void BColumnListView::SetColumnVisible(BColumn* column, bool visible) {