diff --git a/docs/changes.txt b/docs/changes.txt index 2ff3c50211..6897d9d408 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -477,6 +477,7 @@ Mac: - Implement wxWindow::ShowWithEffect() in wxOSX/Cocoa. - Correct min/max pages display in the print dialog (Auria). +- Fix wxDataViewColumn::GetWidth() in Cocoa (Neno Ganchev). MSW: diff --git a/include/wx/osx/dataview.h b/include/wx/osx/dataview.h index 3ed73d5965..c7f9433b68 100644 --- a/include/wx/osx/dataview.h +++ b/include/wx/osx/dataview.h @@ -397,7 +397,7 @@ public: virtual int GetMaxWidth() const { return m_maxWidth; } virtual int GetMinWidth() const { return m_minWidth; } virtual wxString GetTitle() const { return m_title; } - virtual int GetWidth() const { return m_width; } + virtual int GetWidth() const; virtual bool IsHidden() const { return false; } // TODO virtual bool IsSortOrderAscending() const { return m_ascending; } virtual bool IsSortKey() const; @@ -423,6 +423,10 @@ public: } void SetNativeData(wxDataViewColumnNativeData* newNativeDataPtr); // class takes ownership of pointer + int GetWidthVariable() const + { + return m_width; + } void SetWidthVariable(int NewWidth) { m_width = NewWidth; diff --git a/src/osx/carbon/dataview.cpp b/src/osx/carbon/dataview.cpp index 30d3d20ef1..2e19bcd1e1 100644 --- a/src/osx/carbon/dataview.cpp +++ b/src/osx/carbon/dataview.cpp @@ -2476,6 +2476,13 @@ wxDataViewColumn::~wxDataViewColumn() delete m_NativeDataPtr; } +int wxDataViewColumn::GetWidth() const +{ + // FIXME: This returns the last programatically set width and will not work if + // the user changes the column's width by dragging it with the mouse. + return m_width; +} + bool wxDataViewColumn::IsSortKey() const { wxDataViewCtrl * const dataViewCtrlPtr(GetOwner()); diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index de70d511ca..955b7bb1cb 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -258,6 +258,7 @@ NSTableColumn* CreateNativeColumn(const wxDataViewColumn *column) ); // setting the size related parameters: + const int width = column->GetWidthVariable(); if (column->IsResizeable()) { [nativeColumn setResizingMask:NSTableColumnUserResizingMask]; @@ -267,10 +268,10 @@ NSTableColumn* CreateNativeColumn(const wxDataViewColumn *column) else { [nativeColumn setResizingMask:NSTableColumnNoResizing]; - [nativeColumn setMinWidth:column->GetWidth()]; - [nativeColumn setMaxWidth:column->GetWidth()]; + [nativeColumn setMinWidth:width]; + [nativeColumn setMaxWidth:width]; } - [nativeColumn setWidth:column->GetWidth()]; + [nativeColumn setWidth:width]; #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 // setting the visibility: @@ -2773,6 +2774,11 @@ wxDataViewColumn::~wxDataViewColumn() delete m_NativeDataPtr; } +int wxDataViewColumn::GetWidth() const +{ + return [m_NativeDataPtr->GetNativeColumnPtr() width]; +} + bool wxDataViewColumn::IsSortKey() const { NSTableColumn *nsCol = GetNativeData()->GetNativeColumnPtr();