Add alignment support, and more tweaks for label size issues, though I hope to find the core cause and solution soon.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Kevin Ollivier
2009-03-07 04:19:26 +00:00
parent 9113ffaf56
commit c2a4d42831

View File

@@ -27,6 +27,38 @@
#include <stdio.h> #include <stdio.h>
@interface wxNSStaticTextView : NSTextView
{
wxWidgetCocoaImpl* impl;
}
- (void) setImplementation:(wxWidgetCocoaImpl*) item;
- (wxWidgetCocoaImpl*) implementation;
@end
@implementation wxNSStaticTextView
+ (void)initialize
{
static BOOL initialized = NO;
if (!initialized)
{
initialized = YES;
wxOSXCocoaClassAddWXMethods( self );
}
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (void) setImplementation:(wxWidgetCocoaImpl*) item
{
impl = item;
}
@end
wxSize wxStaticText::DoGetBestSize() const wxSize wxStaticText::DoGetBestSize() const
{ {
Point bounds; Point bounds;
@@ -49,9 +81,10 @@ Point bounds;
wxClientDC dc(const_cast<wxStaticText*>(this)); wxClientDC dc(const_cast<wxStaticText*>(this));
wxCoord width, height ; wxCoord width, height ;
dc.GetMultiLineTextExtent( m_label , &width, &height); dc.GetMultiLineTextExtent( m_label , &width, &height);
// Some labels seem to have their last characters // FIXME: Some labels seem to have their last characters
// stripped out. Adding 4 pixels seems to be enough to fix this. // stripped out. Adding 12 pixels seems to be enough to fix this.
bounds.h = width+4; // Perhaps m_label is not being synced properly...
bounds.h = width+12;
bounds.v = height; bounds.v = height;
} }
@@ -81,11 +114,17 @@ wxWidgetImplType* wxWidgetImpl::CreateStaticText( wxWindowMac* wxpeer,
long extraStyle) long extraStyle)
{ {
NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
wxNSTextField* v = [[wxNSTextField alloc] initWithFrame:r]; wxNSStaticTextView* v = [[wxNSStaticTextView alloc] initWithFrame:r];
[v setBezeled:NO];
[v setEditable:NO]; [v setEditable:NO];
[v setDrawsBackground:NO]; [v setDrawsBackground:NO];
[v setString: wxCFStringRef( label , wxpeer->GetFont().GetEncoding() ).AsNSString()];
NSRange allText = NSMakeRange(0, label.length());
if (style & wxALIGN_CENTER)
[v setAlignment: NSCenterTextAlignment range: allText];
else if (style & wxALIGN_RIGHT)
[v setAlignment: NSRightTextAlignment range: allText];
wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v ); wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v );
return c; return c;