From 619df5a4e25a131c38dbaa2b9c0eab481c344723 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 26 Jan 2009 13:45:16 +0000 Subject: [PATCH] Implement hint cursor for resizable columns git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/carbon/dataview.h | 1 + src/osx/carbon/dataview.cpp | 51 ++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/include/wx/osx/carbon/dataview.h b/include/wx/osx/carbon/dataview.h index fa67af0ae5..a642ed6e82 100644 --- a/include/wx/osx/carbon/dataview.h +++ b/include/wx/osx/carbon/dataview.h @@ -578,6 +578,7 @@ protected: // event handling: void OnSize(wxSizeEvent &event); + void OnMouse(wxMouseEvent &event); private: // type definitions: diff --git a/src/osx/carbon/dataview.cpp b/src/osx/carbon/dataview.cpp index 739ad9cf9c..8eeeac29a9 100644 --- a/src/osx/carbon/dataview.cpp +++ b/src/osx/carbon/dataview.cpp @@ -1460,6 +1460,56 @@ void wxDataViewCtrl::DoSetIndent() } // event handling: +void wxDataViewCtrl::OnMouse(wxMouseEvent& event) +{ + event.Skip(); + + if (GetModel() == NULL) + return; + + wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast(m_peer)); + + int NoOfChildren; + wxDataViewItemArray items; + NoOfChildren = GetModel()->GetChildren( wxDataViewItem(), items); + if (NoOfChildren == 0) + return; + wxDataViewItem firstChild = items[0]; + + UInt16 headerHeight = 0; + MacDataViewListCtrlPtr->GetHeaderButtonHeight(&headerHeight); + + + if (event.GetY() < headerHeight) + { + unsigned int col_count = GetColumnCount(); + unsigned int col; + for (col = 0; col < col_count; col++) + { + wxDataViewColumn *column = GetColumn( col ); + if (column->IsHidden()) + continue; + + Rect itemrect; + ::GetDataBrowserItemPartBounds( MacDataViewListCtrlPtr->GetControlRef(), + reinterpret_cast(firstChild.GetID()), column->GetPropertyID(), + kDataBrowserPropertyEnclosingPart, &itemrect ); + + if (abs( event.GetX() - itemrect.right) < 3) + { + if (column->GetFlags() & wxDATAVIEW_COL_RESIZABLE) + SetCursor( wxCursor( wxCURSOR_SIZEWE ) ); + else + SetCursor( *wxSTANDARD_CURSOR ); + return; + } + } + + } + + SetCursor( *wxSTANDARD_CURSOR ); +} + void wxDataViewCtrl::OnSize(wxSizeEvent& event) { unsigned int const NoOfColumns = this->GetColumnCount(); @@ -1497,6 +1547,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDataViewCtrl,wxDataViewCtrlBase) BEGIN_EVENT_TABLE(wxDataViewCtrl,wxDataViewCtrlBase) EVT_SIZE(wxDataViewCtrl::OnSize) + EVT_MOTION(wxDataViewCtrl::OnMouse) END_EVENT_TABLE() #endif // !wxUSE_GENERICDATAVIEWCTRL -- 2.45.2