]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxDataViewCtrl::GetCurrentColumn().
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 17 Jan 2012 14:05:07 +0000 (14:05 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 17 Jan 2012 14:05:07 +0000 (14:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
include/wx/dataview.h
include/wx/generic/dataview.h
include/wx/gtk/dataview.h
include/wx/osx/carbon/dataview.h
include/wx/osx/cocoa/dataview.h
include/wx/osx/core/dataview.h
include/wx/osx/dataview.h
interface/wx/dataview.h
samples/dataview/dataview.cpp
src/generic/datavgen.cpp
src/gtk/dataview.cpp
src/osx/carbon/dataview.cpp
src/osx/cocoa/dataview.mm
src/osx/dataview_osx.cpp

index 85d628841e4e7918094d2ff722f1410fd474df70..0575611829ba3f8b9c8f7d355ee2f49d2f1b979d 100644 (file)
@@ -668,6 +668,9 @@ public:
     wxDataViewItem GetCurrentItem() const;
     void SetCurrentItem(const wxDataViewItem& item);
 
+    // Currently focused column of the current item or NULL if no column has focus
+    virtual wxDataViewColumn *GetCurrentColumn() const = 0;
+
     // Selection: both GetSelection() and GetSelections() can be used for the
     // controls both with and without wxDV_MULTIPLE style. For single selection
     // controls GetSelections() is not very useful however. And for multi
index ed3d11eb69392298cc7baffb321f5d4355dc4591..b6f643055fea9a340b001f42519bf54322d1712a 100644 (file)
@@ -222,6 +222,8 @@ public:     // utility functions not part of the API
     // return the column displayed at the given position in the control
     wxDataViewColumn *GetColumnAt(unsigned int pos) const;
 
+    virtual wxDataViewColumn *GetCurrentColumn() const;
+
     virtual void OnInternalIdle();
 
 private:
index 134e422b97a03910b927a710cdce1f012acc05aa..a10d89495a27d5cd62628f324a2caf42f1869369 100644 (file)
@@ -169,6 +169,8 @@ public:
     virtual bool EnableDragSource( const wxDataFormat &format );
     virtual bool EnableDropTarget( const wxDataFormat &format );
 
+    virtual wxDataViewColumn *GetCurrentColumn() const;
+
     static wxVisualAttributes
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
index ca6a5e5ea4d625046fa139efc4216b46248732b5..e4dfeb2940e379da9aa0f8449bcc88d787495cc7 100644 (file)
@@ -406,6 +406,7 @@ public:
  //
   virtual wxDataViewItem GetCurrentItem() const;
   virtual void SetCurrentItem(const wxDataViewItem& item);
+  virtual wxDataViewColumn *GetCurrentColumn() const;
   virtual int  GetSelectedItemsCount() const;
   virtual int  GetSelections(wxDataViewItemArray& sel)   const;
   virtual bool IsSelected   (wxDataViewItem const& item) const;
index e4c5ef65d42bb261969a88839882f94f82719afa..0859b2dbaeee9cae3657e134ab40f8402dea32b1 100644 (file)
@@ -474,6 +474,7 @@ public:
     //
     virtual wxDataViewItem GetCurrentItem() const;
     virtual void SetCurrentItem(const wxDataViewItem& item);
+    virtual wxDataViewColumn *GetCurrentColumn() const;
     virtual int  GetSelectedItemsCount() const;
     virtual int  GetSelections(wxDataViewItemArray& sel)   const;
     virtual bool IsSelected(const wxDataViewItem& item) const;
index 20b0fe9bdde8b62e42aadfd3b0df32a46ec82e13..f02d328eea47717ae92f04a0286a3dddcc1a743d 100644 (file)
@@ -89,6 +89,8 @@ public:
   virtual wxDataViewItem GetCurrentItem() const = 0;
   virtual void SetCurrentItem(const wxDataViewItem& item) = 0;
 
+  virtual wxDataViewColumn *GetCurrentColumn() const = 0;
+
   virtual int  GetSelectedItemsCount() const = 0;
   virtual int  GetSelections(wxDataViewItemArray& sel)   const = 0; // returns all selected items in the native control
   virtual bool IsSelected   (wxDataViewItem const& item) const = 0; // checks if the passed item is selected in the native control
index 5c9a9b75077a5363fcdee6d165d10d753a33a96b..752939765c1421ec8edbf8d5ee0f9ed2f6e81c45 100644 (file)
@@ -256,6 +256,8 @@ public:
     m_Deleting = deleting;
   }
 
+  virtual wxDataViewColumn *GetCurrentColumn() const;
+
   virtual wxVisualAttributes GetDefaultAttributes() const
   {
       return GetClassDefaultAttributes(GetWindowVariant());
index 026fecb853af2ff4707a70366e9230e9618a8906..f7bf4a2afc607882e5d7a981911e825290fc412f 100644 (file)
@@ -1060,12 +1060,27 @@ public:
         item may be selected or not but under OS X the current item is always
         selected.
 
-        @see SetCurrentItem()
+        @see SetCurrentItem(), GetCurrentColumn()
 
         @since 2.9.2
      */
     wxDataViewItem GetCurrentItem() const;
 
+    /**
+        Returns the column that currently has focus.
+
+        If the focus is set to individual cell within the currently focused
+        item (as opposed to being on the item as a whole), then this is the
+        column that the focus is on.
+
+        Returns NULL if no column currently has focus.
+
+        @see GetCurrentItem()
+
+        @since 2.9.4
+     */
+    wxDataViewColumn *GetCurrentColumn() const;
+
     /**
         Returns indentation.
     */
index 7f872bb6d9ba22d2f693f8b6516adaccc5047681..df816643c97604f58fa193c66c9230ba4833cd40 100644 (file)
@@ -943,6 +943,17 @@ void MyFrame::OnShowCurrent(wxCommandEvent& WXUNUSED(event))
     {
         wxLogMessage("There is no current item.");
     }
+
+    wxDataViewColumn *col = m_ctrl[0]->GetCurrentColumn();
+    if ( col )
+    {
+        wxLogMessage("Current column: %d",
+                     m_ctrl[0]->GetColumnPosition(col));
+    }
+    else
+    {
+        wxLogMessage("There is no current column.");
+    }
 }
 
 void MyFrame::OnSetNinthCurrent(wxCommandEvent& WXUNUSED(event))
index 852a50815ec0a27ddc21c29a437f763d3de95334..6373be271e5258ecfe0d8fd76470f6e1873b8c18 100644 (file)
@@ -4858,6 +4858,11 @@ void wxDataViewCtrl::DoSetCurrentItem(const wxDataViewItem& item)
     }
 }
 
+wxDataViewColumn *wxDataViewCtrl::GetCurrentColumn() const
+{
+    return m_clientArea->GetCurrentColumn();
+}
+
 int wxDataViewCtrl::GetSelectedItemsCount() const
 {
     return m_clientArea->GetSelections().size();
index cda0c529a5619336b042725efab96e249d8c4913..dd11509d67a7e2c071982b861499eb333332cd28 100644 (file)
@@ -4840,6 +4840,19 @@ void wxDataViewCtrl::DoSetCurrentItem(const wxDataViewItem& item)
     gtk_tree_view_set_cursor(GTK_TREE_VIEW(m_treeview), path, NULL, FALSE);
 }
 
+wxDataViewColumn *wxDataViewCtrl::GetCurrentColumn() const
+{
+    // The tree doesn't have any current item if it hadn't been created yet but
+    // it's arguably not an error to call this function in this case so just
+    // return NULL without asserting.
+    if ( !m_treeview )
+        return NULL;
+
+    GtkTreeViewColumn *col;
+    gtk_tree_view_get_cursor(GTK_TREE_VIEW(m_treeview), NULL, &col);
+    return FromGTKColumn(col);
+}
+
 void wxDataViewCtrl::StartEditor(const wxDataViewItem& item, unsigned int column)
 {
     wxCHECK_RET( m_treeview,
index 13765f900dfddc9d6fc126e9671f16b3bf5ec936..b629161a5bc2a8279473e042c4d906dcb7b8f81a 100644 (file)
@@ -1102,6 +1102,12 @@ wxDataViewItem wxMacDataViewDataBrowserListViewControl::GetCurrentItem() const
     return wxDataViewItem();
 }
 
+wxDataViewColumn *wxMacDataViewDataBrowserListViewControl::GetCurrentColumn() const
+{
+    wxFAIL_MSG( "unimplemented for Carbon" );
+    return NULL;
+}
+
 void wxMacDataViewDataBrowserListViewControl::SetCurrentItem(const wxDataViewItem& WXUNUSED(item))
 {
     wxFAIL_MSG( "unimplemented for Carbon" );
index 873f621ffaa217aa6f5c4d8c7b37ef053d34b5a6..ad8dfe54ec71556ee5c876746c7af0a19c938f95 100644 (file)
@@ -2287,6 +2287,14 @@ wxDataViewItem wxCocoaDataViewControl::GetCurrentItem() const
     return wxDataViewItem([[m_OutlineView itemAtRow:[m_OutlineView selectedRow]] pointer]);
 }
 
+wxDataViewColumn *wxCocoaDataViewControl::GetCurrentColumn() const
+{
+    int col = [m_OutlineView selectedColumn];
+    if ( col == -1 )
+        return NULL;
+    return GetColumn(col);
+}
+
 void wxCocoaDataViewControl::SetCurrentItem(const wxDataViewItem& item)
 {
     // We can't have unselected current item in a NSTableView, as the
index 2886e1793497dd6aea41d7155c358b3fffc60965..ecbf403f6bc5843139fb4b925de5213311e5cb63 100644 (file)
@@ -530,6 +530,11 @@ void wxDataViewCtrl::DoSetCurrentItem(const wxDataViewItem& item)
     GetDataViewPeer()->SetCurrentItem(item);
 }
 
+wxDataViewColumn *wxDataViewCtrl::GetCurrentColumn() const
+{
+    return GetDataViewPeer()->GetCurrentColumn();
+}
+
 wxRect wxDataViewCtrl::GetItemRect(wxDataViewItem const& item, wxDataViewColumn const* columnPtr) const
 {
   if (item.IsOk() && (columnPtr != NULL))