]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix width of the wxDataViewTreeCtrl column under OSX/Cocoa.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Nov 2009 17:42:58 +0000 (17:42 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 10 Nov 2009 17:42:58 +0000 (17:42 +0000)
Set the column resizing mode to "automatic" instead of "none" if the control
doesn't show the header. This allows the native control to properly resize the
only tree control column to always take up the entire window size (provided we
don't explicitly create it resizeable, so don't do this).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/datavcmn.cpp
src/osx/cocoa/dataview.mm

index bd62828c65908afc0a5bda4228bfe404183a44bb..29dbb6d4718bc0d56ff3b6a0f41124a665220beb 100644 (file)
@@ -2064,7 +2064,15 @@ bool wxDataViewTreeCtrl::Create( wxWindow *parent, wxWindowID id,
     AssociateModel( store );
     store->DecRef();
 
-    AppendIconTextColumn(wxString(),0,wxDATAVIEW_CELL_EDITABLE,-1);
+    AppendIconTextColumn
+    (
+        wxString(),                 // no label (header is not shown anyhow)
+        0,                          // the only model column
+        wxDATAVIEW_CELL_EDITABLE,
+        -1,                         // default width
+        wxALIGN_NOT,                //  and alignment
+        0                           // not resizeable
+    );
 
     return true;
 }
index cd1add09e6dd5a82a7cc82c273d1f58cd3b1963b..8f14fbec25a2896dafd95f6882c20629a12d8452 100644 (file)
@@ -323,18 +323,24 @@ NSTableColumn* CreateNativeColumn(const wxDataViewColumn *column)
 
     // setting the size related parameters:
     const int width = column->GetWidthVariable();
+    int resizingMask;
     if (column->IsResizeable())
     {
-        [nativeColumn setResizingMask:NSTableColumnUserResizingMask];
+        resizingMask = NSTableColumnUserResizingMask;
         [nativeColumn setMinWidth:column->GetMinWidth()];
         [nativeColumn setMaxWidth:column->GetMaxWidth()];
     }
-    else
+    else // column is not resizeable [by user]
     {
-        [nativeColumn setResizingMask:NSTableColumnNoResizing];
-        [nativeColumn setMinWidth:width];
-        [nativeColumn setMaxWidth:width];
+        // if the control doesn't show a header, make the columns resize
+        // automatically, this is particularly important for the single column
+        // controls (such as wxDataViewTreeCtrl) as their unique column should
+        // always take up all the available splace
+        resizingMask = column->GetOwner()->HasFlag(wxDV_NO_HEADER)
+                            ? NSTableColumnAutoresizingMask
+                            : NSTableColumnNoResizing;
     }
+    [nativeColumn setResizingMask:resizingMask];
     [nativeColumn setWidth:width];
 
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5