From: Stefan Csomor Date: Wed, 29 Aug 2012 09:00:51 +0000 (+0000) Subject: propagating font to the individual columns, changing row heights according to font... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/18d5c52d673948d33e7bfbaab7f9ef1e1610d10e propagating font to the individual columns, changing row heights according to font size, fixes #14578 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/cocoa/listbox.mm b/src/osx/cocoa/listbox.mm index 52944855be..7308eac8a3 100644 --- a/src/osx/cocoa/listbox.mm +++ b/src/osx/cocoa/listbox.mm @@ -314,6 +314,25 @@ protected: } +- (void)setFont:(NSFont *)aFont +{ + NSArray *tableColumns = [self tableColumns]; + unsigned int columnIndex = [tableColumns count]; + while (columnIndex--) + [[(NSTableColumn *)[tableColumns objectAtIndex:columnIndex] dataCell] setFont:aFont]; + + // todo introduce a common NSLayoutManager instance for all and use new method + [self setRowHeight:[aFont defaultLineHeightForFont]+2]; +} + +- (void) setControlSize:(NSControlSize) size +{ + NSArray *tableColumns = [self tableColumns]; + unsigned int columnIndex = [tableColumns count]; + while (columnIndex--) + [[(NSTableColumn *)[tableColumns objectAtIndex:columnIndex] dataCell] setControlSize:size]; +} + @end // @@ -369,6 +388,11 @@ wxListWidgetColumn* wxListWidgetCocoaImpl::InsertTextColumn( unsigned pos, const [col1 setWidth:1000]; } [col1 setResizingMask: NSTableColumnAutoresizingMask]; + + wxListBox *list = static_cast ( GetWXPeer()); + if ( list != NULL ) + [[col1 dataCell] setFont:list->GetFont().OSXGetNSFont()]; + wxCocoaTableColumn* wxcol = new wxCocoaTableColumn( col1, editable ); [col1 setColumn:wxcol]; @@ -388,6 +412,39 @@ wxListWidgetColumn* wxListWidgetCocoaImpl::InsertCheckColumn( unsigned pos , con [checkbox setTitle:@""]; [checkbox setButtonType:NSSwitchButton]; [col1 setDataCell:checkbox] ; + + wxListBox *list = static_cast ( GetWXPeer()); + if ( list != NULL ) + { + NSControlSize size = NSRegularControlSize; + + switch ( list->GetWindowVariant() ) + { + case wxWINDOW_VARIANT_NORMAL : + size = NSRegularControlSize; + break ; + + case wxWINDOW_VARIANT_SMALL : + size = NSSmallControlSize; + break ; + + case wxWINDOW_VARIANT_MINI : + size = NSMiniControlSize; + break ; + + case wxWINDOW_VARIANT_LARGE : + size = NSRegularControlSize; + break ; + + default: + break ; + } + + [[col1 dataCell] setControlSize:size]; + // although there is no text, it may help to get the correct vertical layout + [[col1 dataCell] setFont:list->GetFont().OSXGetNSFont()]; + } + [checkbox release]; unsigned formerColCount = [m_tableView numberOfColumns];