]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement hint cursor for resizable columns
authorRobert Roebling <robert@roebling.de>
Mon, 26 Jan 2009 13:45:16 +0000 (13:45 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 26 Jan 2009 13:45:16 +0000 (13:45 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/carbon/dataview.h
src/osx/carbon/dataview.cpp

index fa67af0ae5b7f173dd9cbb2d703d7356bedf6f85..a642ed6e82e4fd711d9fec5a1d1fd59be0d5ba84 100644 (file)
@@ -578,6 +578,7 @@ protected:
 
  // event handling:
   void OnSize(wxSizeEvent &event);
+  void OnMouse(wxMouseEvent &event);
 
 private:
  // type definitions:
index 739ad9cf9cd472809683d814df3397a7cbb113b0..8eeeac29a91324342375b9863ac261800e31183c 100644 (file)
@@ -1460,6 +1460,56 @@ void wxDataViewCtrl::DoSetIndent()
 }
 
 // event handling:
+void wxDataViewCtrl::OnMouse(wxMouseEvent& event)
+{
+    event.Skip();
+    
+    if (GetModel() == NULL)
+        return;
+
+    wxMacDataViewDataBrowserListViewControlPointer MacDataViewListCtrlPtr(dynamic_cast<wxMacDataViewDataBrowserListViewControlPointer>(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<DataBrowserItemID>(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