From 0e17930f4329ffc03e2fa89abb7d78deb2d935b5 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 10 Nov 2009 17:42:58 +0000 Subject: [PATCH] Fix width of the wxDataViewTreeCtrl column under OSX/Cocoa. 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 | 10 +++++++++- src/osx/cocoa/dataview.mm | 16 +++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index bd62828c65..29dbb6d471 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -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; } diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index cd1add09e6..8f14fbec25 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -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 -- 2.45.2