X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d0332cbc07d487c30d83515fb3351790565ec1de..ec2df34e27ba41f202ecbf096cdfed082a9ddb8f:/src/osx/carbon/fontdlgosx.mm diff --git a/src/osx/carbon/fontdlgosx.mm b/src/osx/carbon/fontdlgosx.mm index 9f8470c9d7..0ac8bd7d55 100644 --- a/src/osx/carbon/fontdlgosx.mm +++ b/src/osx/carbon/fontdlgosx.mm @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/carbon/fontdlgosx.cpp +// Name: src/osx/carbon/fontdlgosx.mm // Purpose: wxFontDialog class. // Author: Ryan Norton // Modified by: @@ -28,6 +28,7 @@ #endif #include "wx/fontutil.h" +#include "wx/modalhook.h" // ============================================================================ // implementation @@ -167,6 +168,7 @@ int RunMixedFontDialog(wxFontDialog* dialog) NSRect rectBox = NSMakeRect( 0 , 0 , 192 , 40 ); accessoryView = [[wxMacFontPanelAccView alloc] initWithFrame:rectBox]; [fontPanel setAccessoryView:accessoryView]; + [accessoryView release]; [fontPanel setDefaultButtonCell:[[accessoryView okButton] cell]] ; } @@ -174,14 +176,14 @@ int RunMixedFontDialog(wxFontDialog* dialog) [accessoryView resetFlags]; #if wxOSX_USE_COCOA wxFont font = *wxNORMAL_FONT ; - if ( fontdata.m_initialFont.Ok() ) + if ( fontdata.m_initialFont.IsOk() ) { font = fontdata.m_initialFont ; } [[NSFontPanel sharedFontPanel] setPanelFont: font.OSXGetNSFont() isMultiple:NO]; - if(fontdata.m_fontColour.Ok()) + if(fontdata.m_fontColour.IsOk()) [[NSColorPanel sharedColorPanel] setColor: [NSColor colorWithCalibratedRed:fontdata.m_fontColour.Red() / 255.0 green:fontdata.m_fontColour.Green() / 255.0 @@ -208,20 +210,7 @@ int RunMixedFontDialog(wxFontDialog* dialog) #if wxOSX_USE_COCOA NSFont* theFont = [fontPanel panelConvertFont:[NSFont userFontOfSize:0]]; - //Get more information about the user's chosen font - NSFontTraitMask theTraits = [[NSFontManager sharedFontManager] traitsOfFont:theFont]; - int theFontWeight = [[NSFontManager sharedFontManager] weightOfFont:theFont]; - int theFontSize = (int) [theFont pointSize]; - - wxFontFamily fontFamily = wxFONTFAMILY_DEFAULT; - //Set the wx font to the appropriate data - if(theTraits & NSFixedPitchFontMask) - fontFamily = wxFONTFAMILY_TELETYPE; - - fontdata.m_chosenFont = wxFont( theFontSize, fontFamily, - theTraits & NSItalicFontMask ? wxFONTSTYLE_ITALIC : 0, - theFontWeight < 5 ? wxLIGHT : theFontWeight >= 9 ? wxBOLD : wxNORMAL, - false, wxStringWithNSString([theFont familyName]) ); + fontdata.m_chosenFont = wxFont( theFont ); //Get the shared color panel along with the chosen color and set the chosen color NSColor* theColor = [[[NSColorPanel sharedColorPanel] color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; @@ -233,7 +222,6 @@ int RunMixedFontDialog(wxFontDialog* dialog) retval = wxID_OK ; } [fontPanel setAccessoryView:nil]; - [accessoryView release]; return retval ; } @@ -364,6 +352,11 @@ wxFontDialog::wxFontDialog() { } +wxFontDialog::wxFontDialog(wxWindow *parent) +{ + Create(parent); +} + wxFontDialog::wxFontDialog(wxWindow *parent, const wxFontData& data) { Create(parent, data); @@ -373,10 +366,20 @@ wxFontDialog::~wxFontDialog() { } +bool wxFontDialog::Create(wxWindow *parent) +{ + return Create(parent); +} + bool wxFontDialog::Create(wxWindow *parent, const wxFontData& data) { m_fontData = data; + return Create(parent); +} + +bool wxFontDialog::Create(wxWindow *parent) +{ //autorelease pool - req'd for carbon NSAutoreleasePool *thePool; thePool = [[NSAutoreleasePool alloc] init]; @@ -386,7 +389,7 @@ bool wxFontDialog::Create(wxWindow *parent, const wxFontData& data) //if the font is valid set the default (selected) font of the //NSFontDialog to that font - if (thewxfont.Ok()) + if (thewxfont.IsOk()) { NSFontTraitMask theMask = 0; @@ -414,7 +417,7 @@ bool wxFontDialog::Create(wxWindow *parent, const wxFontData& data) } - if(m_fontData.m_fontColour.Ok()) + if(m_fontData.m_fontColour.IsOk()) [[NSColorPanel sharedColorPanel] setColor: [NSColor colorWithCalibratedRed:m_fontData.m_fontColour.Red() / 255.0 green:m_fontData.m_fontColour.Green() / 255.0 @@ -432,6 +435,8 @@ bool wxFontDialog::Create(wxWindow *parent, const wxFontData& data) int wxFontDialog::ShowModal() { + WX_HOOK_MODAL_DIALOG(); + //Start the pool. Required for carbon interaction //(For those curious, the only thing that happens //if you don't do this is a bunch of error @@ -466,6 +471,7 @@ int wxFontDialog::ShowModal() // the color panel until the color panel closes, switching // back to the font panel modal loop once it does close. // + wxDialog::OSXBeginModalDialog(); do { // @@ -504,7 +510,8 @@ int wxFontDialog::ShowModal() //out of its modal loop because the color panel was //opened) return the font panel modal loop }while([theFPDelegate isClosed] == NO); - + wxDialog::OSXEndModalDialog(); + //free up the memory for the delegates - we don't need them anymore [theFPDelegate release]; [theCPDelegate release];