From 2fc49d9b364ca23babfbed19fed4d6f23d2664c1 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 15 Oct 2009 04:31:42 +0000 Subject: [PATCH] Added ColumnAt(BPoint) version. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33587 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/interface/ColumnListView.h | 1 + src/kits/interface/ColumnListView.cpp | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/headers/private/interface/ColumnListView.h b/headers/private/interface/ColumnListView.h index d2e02f588a..6b9a80054f 100644 --- a/headers/private/interface/ColumnListView.h +++ b/headers/private/interface/ColumnListView.h @@ -297,6 +297,7 @@ public: 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); diff --git a/src/kits/interface/ColumnListView.cpp b/src/kits/interface/ColumnListView.cpp index 37ee3eee3d..460aadc005 100644 --- a/src/kits/interface/ColumnListView.cpp +++ b/src/kits/interface/ColumnListView.cpp @@ -1118,6 +1118,26 @@ BColumnListView::ColumnAt(int32 field) const } +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) {