X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/065e208ec09e3d08d51d9604497f92f53c210f93..63a3cd7a8c737eb4571f27e5f2af37eda0f1c5cc:/src/cocoa/stattext.mm?ds=sidebyside diff --git a/src/cocoa/stattext.mm b/src/cocoa/stattext.mm index 1e9c86e7f3..f45eab54e1 100644 --- a/src/cocoa/stattext.mm +++ b/src/cocoa/stattext.mm @@ -13,10 +13,12 @@ #ifndef WX_PRECOMP #include "wx/app.h" #include "wx/stattext.h" + #include "wx/log.h" #endif //WX_PRECOMP #include "wx/cocoa/autorelease.h" #include "wx/cocoa/string.h" +#include "wx/cocoa/log.h" #import #import @@ -66,7 +68,25 @@ wxStaticText::~wxStaticText() void wxStaticText::SetLabel(const wxString& label) { - // TODO + [GetNSTextField() setStringValue:wxNSStringWithWxString(label)]; + NSRect oldFrameRect = [GetNSTextField() frame]; + NSView *superview = [GetNSTextField() superview]; + wxLogTrace(wxTRACE_COCOA_Window_Size, wxT("wxStaticText::SetLabel Old Position: (%d,%d)"), GetPosition().x, GetPosition().y); + [GetNSTextField() sizeToFit]; + NSRect newFrameRect = [GetNSTextField() frame]; + // Ensure new size is an integer so GetSize returns valid data + newFrameRect.size.height = ceil(newFrameRect.size.height); + newFrameRect.size.width = ceil(newFrameRect.size.width); + if(![superview isFlipped]) + { + newFrameRect.origin.y = oldFrameRect.origin.y + oldFrameRect.size.height - newFrameRect.size.height; + } + [GetNSTextField() setFrame:newFrameRect]; + // New origin (wx coords) should always match old origin + wxLogTrace(wxTRACE_COCOA_Window_Size, wxT("wxStaticText::SetLabel New Position: (%d,%d)"), GetPosition().x, GetPosition().y); + + [[GetNSTextField() superview] setNeedsDisplayInRect:oldFrameRect]; + [[GetNSTextField() superview] setNeedsDisplayInRect:newFrameRect]; } void wxStaticText::Cocoa_didChangeText(void)