From d831e2db1674569a06e04cfa87f3794e7871e110 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 31 Oct 2009 15:57:51 +0000 Subject: [PATCH] Return the real column width from wxOSX wxDataViewColumn::GetWidth(). Code used to return the last programmatically set width value instead of the real column width which could have been changed by user if the column was resizeable, fix this by returning the current NSTableColumn:width value. Closes #11397. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/osx/dataview.h | 6 +++++- src/osx/carbon/dataview.cpp | 7 +++++++ src/osx/cocoa/dataview.mm | 12 +++++++++--- 4 files changed, 22 insertions(+), 4 deletions(-) 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(); -- 2.47.2