From 7205570233ce8420b71fa5df368054c8953ff0e4 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sun, 28 Oct 2001 19:32:42 +0000 Subject: [PATCH] added conversion routines to CIconHandle, removing pre 8.6 routines git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/uma.h | 142 ++- src/mac/aga.cpp | 2 +- src/mac/app.cpp | 51 +- src/mac/apprsrc.r | 2 +- src/mac/bitmap.cpp | 263 +++-- src/mac/bmpbuttn.cpp | 39 +- src/mac/button.cpp | 19 +- src/mac/carbon/aga.cpp | 2 +- src/mac/carbon/app.cpp | 51 +- src/mac/carbon/apprsrc.r | 2 +- src/mac/carbon/bitmap.cpp | 263 +++-- src/mac/carbon/bmpbuttn.cpp | 39 +- src/mac/carbon/button.cpp | 19 +- src/mac/carbon/checkbox.cpp | 2 +- src/mac/carbon/choice.cpp | 2 +- src/mac/carbon/combobox.cpp | 2 +- src/mac/carbon/control.cpp | 40 +- src/mac/carbon/filedlg.cpp | 2 +- src/mac/carbon/gauge.cpp | 2 +- src/mac/carbon/listbox.cpp | 6 +- src/mac/carbon/menu.cpp | 26 +- src/mac/carbon/menuitem.cpp | 2 +- src/mac/carbon/notebmac.cpp | 2 +- src/mac/carbon/radiobox.cpp | 2 +- src/mac/carbon/radiobut.cpp | 2 +- src/mac/carbon/scrolbar.cpp | 2 +- src/mac/carbon/slider.cpp | 2 +- src/mac/carbon/spinbutt.cpp | 2 +- src/mac/carbon/statbox.cpp | 2 +- src/mac/carbon/statlmac.cpp | 2 +- src/mac/carbon/tabctrl.cpp | 2 +- src/mac/carbon/textctrl.cpp | 1841 ++++++++++++++++++++++++++++++++++- src/mac/carbon/toolbar.cpp | 138 +-- src/mac/carbon/tooltip.cpp | 10 +- src/mac/carbon/uma.cpp | 1052 ++------------------ src/mac/carbon/window.cpp | 24 +- src/mac/checkbox.cpp | 2 +- src/mac/choice.cpp | 2 +- src/mac/combobox.cpp | 2 +- src/mac/control.cpp | 40 +- src/mac/filedlg.cpp | 2 +- src/mac/gauge.cpp | 2 +- src/mac/ldef/extldef6.mcp | Bin 123753 -> 164845 bytes src/mac/listbox.cpp | 6 +- src/mac/menu.cpp | 26 +- src/mac/menuitem.cpp | 2 +- src/mac/notebmac.cpp | 2 +- src/mac/radiobox.cpp | 2 +- src/mac/radiobut.cpp | 2 +- src/mac/scrolbar.cpp | 2 +- src/mac/slider.cpp | 2 +- src/mac/spinbutt.cpp | 2 +- src/mac/statbox.cpp | 2 +- src/mac/statlmac.cpp | 2 +- src/mac/tabctrl.cpp | 2 +- src/mac/textctrl.cpp | 1841 ++++++++++++++++++++++++++++++++++- src/mac/toolbar.cpp | 138 +-- src/mac/tooltip.cpp | 10 +- src/mac/uma.cpp | 1052 ++------------------ src/mac/window.cpp | 24 +- 60 files changed, 4488 insertions(+), 2740 deletions(-) diff --git a/include/wx/mac/uma.h b/include/wx/mac/uma.h index ed8cc1997f..faf1206158 100644 --- a/include/wx/mac/uma.h +++ b/include/wx/mac/uma.h @@ -12,33 +12,10 @@ #ifndef H_UMA #define H_UMA -// define this to be 1 if you have the 8.6 libs (weak linked) - -#define UMA_USE_8_6 0 - -#if TARGET_CARBON -#undef UMA_USE_8_6 -#define UMA_USE_8_6 1 -#endif - #if defined(__POWERPC__) - #define UMA_USE_APPEARANCE 1 - #define UMA_USE_WINDOWMGR 1 #if defined(__DARWIN__) #include #endif -#else - #define UMA_USE_APPEARANCE 1 - #define UMA_USE_WINDOWMGR 0 -#endif - -#if UMA_USE_APPEARANCE == 0 - #pragma error "wxMac needs appearance" -#endif - -#if !UMA_USE_8_6 && UMA_USE_WINDOWMGR -#undef UMA_USE_WINDOWMGR -#define UMA_USE_WINDOWMGR 0 #endif #if !TARGET_CARBON @@ -50,6 +27,8 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls) ; void UMACleanupToolbox() ; bool UMAHasAppearance() ; long UMAGetAppearanceVersion() ; +bool UMAHasWindowManager() ; +long UMAGetWindowManagerAttr() ; // process manager @@ -66,16 +45,16 @@ void UMAAppendSubMenuItem( MenuRef menu , StringPtr label , SInt16 submenuid ) void UMAInsertSubMenuItem( MenuRef menu , StringPtr label , MenuItemIndex item , SInt16 submenuid ) ; void UMAAppendMenuItem( MenuRef menu , StringPtr label , SInt16 key= 0, UInt8 modifiers = 0 ) ; void UMAInsertMenuItem( MenuRef menu , StringPtr label , MenuItemIndex item , SInt16 key = 0 , UInt8 modifiers = 0 ) ; -void UMASetMenuItemText( MenuRef menu , MenuItemIndex item , StringPtr label ) ; +// void UMASetMenuItemText( MenuRef menu , MenuItemIndex item , StringPtr label ) ; -MenuRef UMANewMenu( SInt16 menuid , StringPtr label ) ; -void UMADisposeMenu( MenuRef menu ) ; +// MenuRef ::NewMenu( SInt16 menuid , StringPtr label ) ; +// void UMADisposeMenu( MenuRef menu ) ; // handling the menubar -void UMADeleteMenu( SInt16 menuId ) ; -void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId ) ; -void UMADrawMenuBar() ; +// void UMADeleteMenu( SInt16 menuId ) ; +// void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId ) ; +// void UMADrawMenuBar() ; // quickdraw @@ -98,13 +77,13 @@ void UMASetWTitleC( WindowRef inWindowRef , const char *title ) ; void UMAGetWTitleC( WindowRef inWindowRef , char *title ) ; void UMADrawGrowIcon( WindowRef inWindowRef ) ; -void UMAShowWindow( WindowRef inWindowRef ) ; -void UMAHideWindow( WindowRef inWindowRef ) ; +//void UMAShowWindow( WindowRef inWindowRef ) ; +//void UMAHideWindow( WindowRef inWindowRef ) ; void UMAShowHide( WindowRef inWindowRef , Boolean show) ; -void UMASelectWindow( WindowRef inWindowRef ) ; -void UMABringToFront( WindowRef inWindowRef ) ; -void UMASendBehind( WindowRef inWindowRef , WindowRef behindWindow ) ; -void UMACloseWindow(WindowRef inWindowRef) ; +//void UMASelectWindow( WindowRef inWindowRef ) ; +//void UMABringToFront( WindowRef inWindowRef ) ; +//void UMASendBehind( WindowRef inWindowRef , WindowRef behindWindow ) ; +// void UMACloseWindow(WindowRef inWindowRef) ; // appearance manager @@ -114,15 +93,16 @@ void UMAEnableControl( ControlHandle inControl ) ; void UMADisableControl( ControlHandle inControl ) ; void UMAActivateControl( ControlHandle inControl ) ; void UMADeactivateControl( ControlHandle inControl ) ; -void UMAApplyThemeBackground (ThemeBackgroundKind inKind, - const Rect * bounds, - ThemeDrawState inState, - SInt16 inDepth, - Boolean inColorDev); -void UMASetThemeWindowBackground (WindowRef inWindow, - ThemeBrush inBrush, - Boolean inUpdate) ; -ControlHandle UMANewControl(WindowPtr owningWindow, +//void UMAApplyThemeBackground (ThemeBackgroundKind inKind, +// const Rect * bounds, +// ThemeDrawState inState, +// SInt16 inDepth, +// Boolean inColorDev); +//void UMASetThemeWindowBackground (WindowRef inWindow, +// ThemeBrush inBrush, +// Boolean inUpdate) ; +/* +ControlHandle ::NewControl(WindowPtr owningWindow, const Rect * boundsRect, ConstStr255Param controlTitle, Boolean initiallyVisible, @@ -131,36 +111,37 @@ ControlHandle UMANewControl(WindowPtr owningWindow, SInt16 maximumValue, SInt16 procID, SInt32 controlReference) ; -void UMADisposeControl (ControlHandle theControl) ; -void UMAHiliteControl (ControlHandle theControl, - ControlPartCode hiliteState) ; +*/ +//void UMADisposeControl (ControlHandle theControl) ; +//void UMAHiliteControl (ControlHandle theControl, +// ControlPartCode hiliteState) ; void UMAShowControl (ControlHandle theControl) ; -void UMAHideControl (ControlHandle theControl); -void UMASetControlVisibility (ControlHandle inControl, - Boolean inIsVisible, - Boolean inDoDraw); +//void UMAHideControl (ControlHandle theControl); +//void UMASetControlVisibility (ControlHandle inControl, +// Boolean inIsVisible, +// Boolean inDoDraw); -bool UMAIsControlActive (ControlHandle inControl); -bool UMAIsControlVisible (ControlHandle inControl); +//bool UMAIsControlActive (ControlHandle inControl); +//bool UMAIsControlVisible (ControlHandle inControl); void UMAActivateControl (ControlHandle inControl); void UMADeactivateControl (ControlHandle inControl); -OSErr UMAGetBestControlRect (ControlHandle inControl, - Rect * outRect, - SInt16 * outBaseLineOffset); -OSErr UMASetControlFontStyle (ControlHandle inControl, - const ControlFontStyleRec * inStyle) ; +//OSErr UMAGetBestControlRect (ControlHandle inControl, +// Rect * outRect, +// SInt16 * outBaseLineOffset); +//OSErr UMASetControlFontStyle (ControlHandle inControl, +// const ControlFontStyleRec * inStyle) ; void UMAMoveControl( ControlHandle inControl , short x , short y ) ; void UMASizeControl( ControlHandle inControl , short x , short y ) ; // control hierarchy -OSErr UMACreateRootControl (WindowPtr inWindow, - ControlHandle * outControl) ; +//OSErr UMACreateRootControl (WindowPtr inWindow, +// ControlHandle * outControl) ; -OSErr UMAEmbedControl (ControlHandle inControl, - ControlHandle inContainer); +//OSErr UMAEmbedControl (ControlHandle inControl, +// ControlHandle inContainer); // keyboard focus OSErr UMASetKeyboardFocus (WindowPtr inWindow, @@ -170,35 +151,35 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, // events -ControlPartCode UMAHandleControlClick (ControlHandle inControl, - Point inWhere, - SInt16 inModifiers, - ControlActionUPP inAction) ; -SInt16 UMAHandleControlKey (ControlHandle inControl, - SInt16 inKeyCode, - SInt16 inCharCode, - SInt16 inModifiers); +//ControlPartCode UMAHandleControlClick (ControlHandle inControl, +// Point inWhere, +// SInt16 inModifiers, +// ControlActionUPP inAction) ; +//SInt16 UMAHandleControlKey (ControlHandle inControl, +// SInt16 inKeyCode, +// SInt16 inCharCode, +// SInt16 inModifiers); -void UMAIdleControls (WindowPtr inWindow) ; +//void UMAIdleControls (WindowPtr inWindow) ; void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) ; OSErr UMAGetRootControl( WindowPtr inWindow , ControlHandle *outControl ) ; // handling control data - -OSErr UMASetControlData (ControlHandle inControl, +/* +OSErr ::SetControlData (ControlHandle inControl, ControlPartCode inPart, ResType inTagName, Size inSize, Ptr inData) ; -OSErr UMAGetControlData (ControlHandle inControl, +OSErr ::GetControlData (ControlHandle inControl, ControlPartCode inPart, ResType inTagName, Size inBufferSize, Ptr outBuffer, Size * outActualSize) ; -OSErr UMAGetControlDataSize (ControlHandle inControl, +OSErr ::GetControlDataSize (ControlHandle inControl, ControlPartCode inPart, ResType inTagName, Size * outMaxSize); @@ -227,12 +208,13 @@ WindowRef UMAFrontWindow() ; WindowRef UMAFrontNonFloatingWindow() ; // floaters support - +*/ bool UMAIsWindowFloating( WindowRef inWindow ) ; bool UMAIsWindowModal( WindowRef inWindow ) ; +/* WindowRef UMAGetActiveWindow() ; WindowRef UMAGetActiveNonFloatingWindow() ; - +*/ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) ; #if !TARGET_CARBON @@ -250,8 +232,12 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) ; #define GetQDGlobalsArrow( a ) (&((*a) = qd.arrow)) #define GetControlBounds( c , b ) &((*b) = (**c).contrlRect ) #define GetPortBitMapForCopyBits( p ) ((BitMap*) &(((CGrafPtr)p)->portPixMap )) +#define GetControlOwner( control ) (**control).contrlOwner +#define InvalWindowRgn( window , rgn ) InvalRgn( rgn ) +#endif +#if TARGET_CARBON +#define GetWindowUpdateRgn( inWindow , updateRgn ) GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) #endif - // Appearance Drawing OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) ; diff --git a/src/mac/aga.cpp b/src/mac/aga.cpp index 9a752cbe6d..76e2d9505b 100644 --- a/src/mac/aga.cpp +++ b/src/mac/aga.cpp @@ -2,7 +2,7 @@ #include "wx/mac/uma.h" #include "wx/mac/aga.h" -#if !TARGET_CARBON +#if 0 // TO BE REMOVED SOON #include #include diff --git a/src/mac/app.cpp b/src/mac/app.cpp index ade0e6938e..28a3bc352d 100644 --- a/src/mac/app.cpp +++ b/src/mac/app.cpp @@ -94,41 +94,31 @@ bool wxApp::s_macSupportPCMenuShortcuts = true ; long wxApp::s_macAboutMenuItemId = wxID_ABOUT ; wxString wxApp::s_macHelpMenuTitleName = "&Help" ; -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) +pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) ; + + pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEODoc( (AppleEvent*) event , reply) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEOApp( (AppleEvent*) event , reply ) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEPDoc( (AppleEvent*) event , reply ) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; @@ -430,7 +420,7 @@ bool wxApp::Initialize() { error = kMacSTROldSystem ; } - else if ( theSystem < 0x0750 ) + else if ( theSystem < 0x0860 ) { error = kMacSTROldSystem ; } @@ -976,7 +966,7 @@ void wxApp::MacSuspend( bool convertClipboard ) MacConvertPrivateToPublicScrap() ; } - UMAHideFloatingWindows() ; + ::HideFloatingWindows() ; } void wxApp::MacResume( bool convertClipboard ) @@ -987,7 +977,7 @@ void wxApp::MacResume( bool convertClipboard ) MacConvertPublicToPrivateScrap() ; } - UMAShowFloatingWindows() ; + ::ShowFloatingWindows() ; } void wxApp::MacConvertPrivateToPublicScrap() @@ -1011,9 +1001,9 @@ void wxApp::MacDoOneEvent() else { // idlers - WindowPtr window = UMAFrontWindow() ; + WindowPtr window = ::FrontWindow() ; if ( window ) - UMAIdleControls( window ) ; + ::IdleControls( window ) ; wxTheApp->ProcessIdle() ; } @@ -1093,10 +1083,10 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) wxToolTip::RemoveToolTips() ; WindowRef window; - WindowRef frontWindow = UMAFrontNonFloatingWindow() ; + WindowRef frontWindow = ::FrontNonFloatingWindow() ; WindowAttributes frontWindowAttributes = NULL ; if ( frontWindow ) - UMAGetWindowAttributes( frontWindow , &frontWindowAttributes ) ; + ::GetWindowAttributes( frontWindow , &frontWindowAttributes ) ; short windowPart = ::FindWindow(ev->where, &window); wxWindow* win = wxFindWinFromMacWindow( window ) ; @@ -1233,7 +1223,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) { if ( win ) win->MacMouseDown( ev , windowPart ) ; - UMASelectWindow( window ) ; + ::SelectWindow( window ) ; } } else @@ -1270,6 +1260,7 @@ void wxApp::MacHandleMouseUpEvent( EventRecord *ev ) } } +long wxMacTranslateKey(unsigned char key, unsigned char code) ; long wxMacTranslateKey(unsigned char key, unsigned char code) { long retval = key ; @@ -1517,11 +1508,11 @@ void wxApp::MacHandleActivateEvent( EventRecord *ev ) { bool activate = (ev->modifiers & activeFlag ) ; WindowClass wclass ; - UMAGetWindowClass ( window , &wclass ) ; + ::GetWindowClass ( window , &wclass ) ; if ( wclass == kFloatingWindowClass ) { // if it is a floater we activate/deactivate the front non-floating window instead - window = UMAFrontNonFloatingWindow() ; + window = ::FrontNonFloatingWindow() ; } wxWindow* win = wxFindWinFromMacWindow( window ) ; if ( win ) @@ -1585,11 +1576,11 @@ void wxApp::MacHandleOSEvent( EventRecord *ev ) // our idea of the active window with the process manager's - which it already activated if ( !doesActivate ) - oldFrontWindow = UMAFrontNonFloatingWindow() ; + oldFrontWindow = ::FrontNonFloatingWindow() ; MacResume( convertClipboard ) ; - newFrontWindow = UMAFrontNonFloatingWindow() ; + newFrontWindow = ::FrontNonFloatingWindow() ; if ( oldFrontWindow ) { @@ -1611,13 +1602,15 @@ void wxApp::MacHandleOSEvent( EventRecord *ev ) // in case this suspending did close an active window, another one might // have surfaced -> lets deactivate that one - WindowRef newActiveWindow = UMAGetActiveNonFloatingWindow() ; +/* TODO : find out what to do on systems < 10 , perhaps FrontNonFloatingWindow + WindowRef newActiveWindow = ::ActiveNonFloatingWindow() ; if ( newActiveWindow ) { wxWindow* win = wxFindWinFromMacWindow( newActiveWindow ) ; if ( win ) win->MacActivate( ev , false ) ; } +*/ } } break ; diff --git a/src/mac/apprsrc.r b/src/mac/apprsrc.r index 92a2f5e4f1..020b34f73a 100644 --- a/src/mac/apprsrc.r +++ b/src/mac/apprsrc.r @@ -11,7 +11,7 @@ resource 'STR#' ( 128 , "Simple Alert Messages" ) "This application needs at least a MacPlus" , "This application needs more memory" , "This application is out of memory" , - "This application needs at least System 7.5" , + "This application needs at least System 8.6" , "About this wxWindows Application" , "This application needs Appearance extension (built in with System 8) - this restriction will be relieved in the final release" } diff --git a/src/mac/bitmap.cpp b/src/mac/bitmap.cpp index df8d319f43..95bc8f1612 100644 --- a/src/mac/bitmap.cpp +++ b/src/mac/bitmap.cpp @@ -93,95 +93,204 @@ void wxMacDestroyGWorld( GWorldPtr gw ) DisposeGWorld( gw ) ; } -PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) +#define kDefaultRes 0x00480000 /* Default resolution is 72 DPI; Fixed type */ + +OSErr SetupCIconHandlePixMap( CIconHandle icon , short depth , Rect *bounds , CTabHandle colors ) { - CGrafPtr origPort ; - GDHandle origDev ; + CTabHandle newColors; /* Color table used for the off-screen PixMap */ + Ptr offBaseAddr; /* Pointer to the off-screen pixel image */ + OSErr error; /* Returns error code */ + short bytesPerRow; /* Number of bytes per row in the PixMap */ - PicHandle pict; // this is the Picture we give back - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; + error = noErr; + newColors = nil; + offBaseAddr = nil; - unsigned char *maskimage = NULL ; - Rect portRect ; - GetPortBounds( wp , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; + bytesPerRow = ((depth * (bounds->right - bounds->left) + 31) / 32) * 4; - LockPixels( GetGWorldPixMap( wp ) ) ; - GetGWorld( &origPort , &origDev ) ; + /* Clone the clut if indexed color; allocate a dummy clut if direct color*/ + if (depth <= 8) + { + newColors = colors; + error = HandToHand((Handle *) &newColors); + } + else + { + newColors = (CTabHandle) NewHandle(sizeof(ColorTable) - + sizeof(CSpecArray)); + error = MemError(); + } + if (error == noErr) + { + /* Allocate pixel image; long integer multiplication avoids overflow */ + (**icon).iconData = NewHandle((unsigned long) bytesPerRow * (bounds->bottom - + bounds->top)); + if ((**icon).iconData != nil) + { + /* Initialize fields common to indexed and direct PixMaps */ + (**icon).iconPMap.baseAddr = 0; /* Point to image */ + (**icon).iconPMap.rowBytes = bytesPerRow | /* MSB set for PixMap */ + 0x8000; + (**icon).iconPMap.bounds = *bounds; /* Use given bounds */ + (**icon).iconPMap.pmVersion = 0; /* No special stuff */ + (**icon).iconPMap.packType = 0; /* Default PICT pack */ + (**icon).iconPMap.packSize = 0; /* Always zero in mem */ + (**icon).iconPMap.hRes = kDefaultRes; /* 72 DPI default res */ + (**icon).iconPMap.vRes = kDefaultRes; /* 72 DPI default res */ + (**icon).iconPMap.pixelSize = depth; /* Set # bits/pixel */ + + /* Initialize fields specific to indexed and direct PixMaps */ + if (depth <= 8) + { + /* PixMap is indexed */ + (**icon).iconPMap.pixelType = 0; /* Indicates indexed */ + (**icon).iconPMap.cmpCount = 1; /* Have 1 component */ + (**icon).iconPMap.cmpSize = depth; /* Component size=depth */ + (**icon).iconPMap.pmTable = newColors; /* Handle to CLUT */ + } + else + { + /* PixMap is direct */ + (**icon).iconPMap.pixelType = RGBDirect; /* Indicates direct */ + (**icon).iconPMap.cmpCount = 3; /* Have 3 components */ + if (depth == 16) + (**icon).iconPMap.cmpSize = 5; /* 5 bits/component */ + else + (**icon).iconPMap.cmpSize = 8; /* 8 bits/component */ + (**newColors).ctSeed = 3 * (**icon).iconPMap.cmpSize; + (**newColors).ctFlags = 0; + (**newColors).ctSize = 0; + (**icon).iconPMap.pmTable = newColors; + } + } + else + error = MemError(); + } + else + newColors = nil; - if ( mask ) - { - maskimage = (unsigned char*) malloc( width * height ) ; - SetGWorld( mask , NULL ) ; - LockPixels( GetGWorldPixMap( mask ) ) ; - for ( int y = 0 ; y < height ; y++ ) - { - for( int x = 0 ; x < width ; x++ ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - maskimage[y*width + x] = ( col.red == 0 ) ; // for monochrome masks - } - } - UnlockPixels( GetGWorldPixMap( mask ) ) ; - } + /* If no errors occured, return a handle to the new off-screen PixMap */ + if (error != noErr) + { + if (newColors != nil) + DisposeCTable(newColors); + } - SetGWorld( wp , NULL ) ; + /* Return the error code */ + return error; +} - pict = OpenPicture(&portRect); // open a picture, this disables drawing - if(!pict) - return NULL; +CIconHandle wxMacCreateCIcon(GWorldPtr image , GWorldPtr mask , short dstDepth , short iconSize ) +{ + GWorldPtr saveWorld; + GDHandle saveHandle; - if ( maskimage ) - { - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - PenMode(transparent); + GetGWorld(&saveWorld,&saveHandle); // save Graphics env state + SetGWorld(image,nil); - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( maskimage[y*width + x] ) - { - RGBColor col ; + Rect frame = { 0 , 0 , iconSize , iconSize } ; + Rect imageBounds = frame ; + GetPortBounds( image , &imageBounds ) ; - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - else { - // With transparency set this sets a blank pixel not a white one - SetCPixel( x + portRect.left , y + portRect.top , &white); - } - } - } - free( maskimage ) ; - maskimage = NULL ; - } - else - { - RGBBackColor( &gray ) ; - EraseRect(&portRect); - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - - CopyBits(GetPortBitMapForCopyBits(wp), /* src PixMap - we copy image over - * itself - */ - GetPortBitMapForCopyBits(wp), // dst PixMap - no drawing occurs - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( wp ) ) ; - SetGWorld( origPort , origDev ) ; + int bwSize = iconSize / 8 * iconSize ; + CIconHandle icon = (CIconHandle) NewHandleClear( sizeof ( CIcon ) + 2 * bwSize) ; + HLock((Handle)icon) ; + SetupCIconHandlePixMap( icon , dstDepth , &frame,GetCTable(dstDepth)) ; + HLock( (**icon).iconData ) ; + (**icon).iconPMap.baseAddr = *(**icon).iconData ; + + LockPixels(GetGWorldPixMap(image)); + + CopyBits(GetPortBitMapForCopyBits(image), + (BitMapPtr)&((**icon).iconPMap), + &imageBounds, + &imageBounds, + srcCopy | ditherCopy, nil); + + + UnlockPixels(GetGWorldPixMap(image)); + HUnlock( (**icon).iconData ) ; + + (**icon).iconMask.rowBytes = iconSize / 8 ; + (**icon).iconMask.bounds = frame ; + + (**icon).iconBMap.rowBytes = iconSize / 8 ; + (**icon).iconBMap.bounds = frame ; + (**icon).iconMask.baseAddr = (char*) &(**icon).iconMaskData ; + (**icon).iconBMap.baseAddr = (char*) &(**icon).iconMaskData + bwSize ; + + if ( mask ) + { + LockPixels(GetGWorldPixMap(mask) ) ; + CopyBits(GetPortBitMapForCopyBits(mask) , + &(**icon).iconBMap , &imageBounds , &imageBounds, srcCopy , nil ) ; + CopyBits(GetPortBitMapForCopyBits(mask) , + &(**icon).iconMask , &imageBounds , &imageBounds, srcCopy , nil ) ; + UnlockPixels(GetGWorldPixMap( mask ) ) ; + } + else + { + LockPixels(GetGWorldPixMap(image)); + CopyBits(GetPortBitMapForCopyBits(image) , + &(**icon).iconBMap , &imageBounds , &imageBounds, srcCopy , nil ) ; + CopyBits(GetPortBitMapForCopyBits(image) , + &(**icon).iconMask , &imageBounds , &imageBounds, srcCopy , nil ) ; + UnlockPixels(GetGWorldPixMap(image)); + } + + (**icon).iconMask.baseAddr = NULL ; + (**icon).iconBMap.baseAddr = NULL ; + (**icon).iconPMap.baseAddr = NULL ; + HUnlock((Handle)icon) ; + SetGWorld(saveWorld,saveHandle); + + return icon; +} + +PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) +{ + CGrafPtr origPort ; + GDHandle origDev ; + + PicHandle pict; + + RGBColor white = { 0xffff ,0xffff , 0xffff } ; + RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - return pict; // return our groovy pict handle + GetGWorld( &origPort , &origDev ) ; + + RgnHandle clipRgn = NULL ; + + if ( mask ) + { + clipRgn = NewRgn() ; + LockPixels( GetGWorldPixMap( mask ) ) ; + BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( mask ) ) ; + UnlockPixels( GetGWorldPixMap( mask ) ) ; + } + + SetGWorld( wp , NULL ) ; + Rect portRect ; + GetPortBounds( wp , &portRect ) ; + + pict = OpenPicture(&portRect); + if(pict) + { + RGBForeColor( &black ) ; + RGBBackColor( &white ) ; + + LockPixels( GetGWorldPixMap( wp ) ) ; + CopyBits(GetPortBitMapForCopyBits(wp), + GetPortBitMapForCopyBits(wp), + &portRect, + &portRect, + srcCopy,clipRgn); + UnlockPixels( GetGWorldPixMap( wp ) ) ; + ClosePicture(); + } + SetGWorld( origPort , origDev ) ; + return pict; } wxBitmapRefData::wxBitmapRefData() diff --git a/src/mac/bmpbuttn.cpp b/src/mac/bmpbuttn.cpp index d63ddcb227..c1a5949c9d 100644 --- a/src/mac/bmpbuttn.cpp +++ b/src/mac/bmpbuttn.cpp @@ -21,8 +21,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) #endif #include "wx/mac/uma.h" - -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) ; +#include "wx/bitmap.h" bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxPoint& pos, @@ -58,7 +57,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , kControlBehaviorOffsetContents + ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ; @@ -70,19 +69,22 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit if ( m_buttonBitmap.Ok() ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) { - info.contentType = kControlContentPictHandle ; - info.u.picture = bmap->m_hPict ; + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - info.contentType = kControlContentPictHandle ; if ( m_buttonBitmap.GetMask() ) { - info.u.picture = MakePict( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - info.u.picture = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) @@ -92,7 +94,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit } } - UMASetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; MacPostControlCreate() ; @@ -107,21 +109,23 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) if ( m_buttonBitmap.Ok() ) { wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ; - if ( bmap->m_bitmapType == kMacBitmapTypePict ) - { - info.contentType = kControlContentPictHandle ; - info.u.picture = bmap->m_hPict ; + if ( bmap->m_bitmapType == kMacBitmapTypePict ) { + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - info.contentType = kControlContentPictHandle ; if ( m_buttonBitmap.GetMask() ) { - info.u.picture = MakePict( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - info.u.picture = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) @@ -129,8 +133,9 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) info.contentType = kControlContentCIconHandle ; info.u.cIconHandle = bmap->m_hIcon ; } + - UMASetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; } } diff --git a/src/mac/button.cpp b/src/mac/button.cpp index b8689ca0fd..19600ac5d7 100644 --- a/src/mac/button.cpp +++ b/src/mac/button.cpp @@ -37,7 +37,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlPushButtonProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; @@ -58,32 +58,19 @@ void wxButton::SetDefault() panel->SetDefaultItem(this); } -#ifdef __DARWIN__ Boolean inData; if ( btnOldDefault && btnOldDefault->m_macControl ) { inData = 0; - UMASetControlData( btnOldDefault->m_macControl , kControlButtonPart , + ::SetControlData( btnOldDefault->m_macControl , kControlButtonPart , kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; } if ( m_macControl ) { inData = 1; - UMASetControlData( m_macControl , kControlButtonPart , + ::SetControlData( m_macControl , kControlButtonPart , kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; } -#else - if ( btnOldDefault && btnOldDefault->m_macControl ) - { - UMASetControlData( btnOldDefault->m_macControl , kControlButtonPart , - kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)((Boolean)0) ) ; - } - if ( m_macControl ) - { - UMASetControlData( m_macControl , kControlButtonPart , - kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)((Boolean)1) ) ; - } -#endif } wxSize wxButton::DoGetBestSize() const diff --git a/src/mac/carbon/aga.cpp b/src/mac/carbon/aga.cpp index 9a752cbe6d..76e2d9505b 100644 --- a/src/mac/carbon/aga.cpp +++ b/src/mac/carbon/aga.cpp @@ -2,7 +2,7 @@ #include "wx/mac/uma.h" #include "wx/mac/aga.h" -#if !TARGET_CARBON +#if 0 // TO BE REMOVED SOON #include #include diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index ade0e6938e..28a3bc352d 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -94,41 +94,31 @@ bool wxApp::s_macSupportPCMenuShortcuts = true ; long wxApp::s_macAboutMenuItemId = wxID_ABOUT ; wxString wxApp::s_macHelpMenuTitleName = "&Help" ; -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) +pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) ; +pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) ; + + pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleODoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEODoc( (AppleEvent*) event , reply) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleOApp( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEOApp( (AppleEvent*) event , reply ) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandlePDoc( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEPDoc( (AppleEvent*) event , reply ) ; } -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long refcon ) -#else -pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , unsigned long refcon ) -#endif { wxApp* app = (wxApp*) refcon ; return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; @@ -430,7 +420,7 @@ bool wxApp::Initialize() { error = kMacSTROldSystem ; } - else if ( theSystem < 0x0750 ) + else if ( theSystem < 0x0860 ) { error = kMacSTROldSystem ; } @@ -976,7 +966,7 @@ void wxApp::MacSuspend( bool convertClipboard ) MacConvertPrivateToPublicScrap() ; } - UMAHideFloatingWindows() ; + ::HideFloatingWindows() ; } void wxApp::MacResume( bool convertClipboard ) @@ -987,7 +977,7 @@ void wxApp::MacResume( bool convertClipboard ) MacConvertPublicToPrivateScrap() ; } - UMAShowFloatingWindows() ; + ::ShowFloatingWindows() ; } void wxApp::MacConvertPrivateToPublicScrap() @@ -1011,9 +1001,9 @@ void wxApp::MacDoOneEvent() else { // idlers - WindowPtr window = UMAFrontWindow() ; + WindowPtr window = ::FrontWindow() ; if ( window ) - UMAIdleControls( window ) ; + ::IdleControls( window ) ; wxTheApp->ProcessIdle() ; } @@ -1093,10 +1083,10 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) wxToolTip::RemoveToolTips() ; WindowRef window; - WindowRef frontWindow = UMAFrontNonFloatingWindow() ; + WindowRef frontWindow = ::FrontNonFloatingWindow() ; WindowAttributes frontWindowAttributes = NULL ; if ( frontWindow ) - UMAGetWindowAttributes( frontWindow , &frontWindowAttributes ) ; + ::GetWindowAttributes( frontWindow , &frontWindowAttributes ) ; short windowPart = ::FindWindow(ev->where, &window); wxWindow* win = wxFindWinFromMacWindow( window ) ; @@ -1233,7 +1223,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) { if ( win ) win->MacMouseDown( ev , windowPart ) ; - UMASelectWindow( window ) ; + ::SelectWindow( window ) ; } } else @@ -1270,6 +1260,7 @@ void wxApp::MacHandleMouseUpEvent( EventRecord *ev ) } } +long wxMacTranslateKey(unsigned char key, unsigned char code) ; long wxMacTranslateKey(unsigned char key, unsigned char code) { long retval = key ; @@ -1517,11 +1508,11 @@ void wxApp::MacHandleActivateEvent( EventRecord *ev ) { bool activate = (ev->modifiers & activeFlag ) ; WindowClass wclass ; - UMAGetWindowClass ( window , &wclass ) ; + ::GetWindowClass ( window , &wclass ) ; if ( wclass == kFloatingWindowClass ) { // if it is a floater we activate/deactivate the front non-floating window instead - window = UMAFrontNonFloatingWindow() ; + window = ::FrontNonFloatingWindow() ; } wxWindow* win = wxFindWinFromMacWindow( window ) ; if ( win ) @@ -1585,11 +1576,11 @@ void wxApp::MacHandleOSEvent( EventRecord *ev ) // our idea of the active window with the process manager's - which it already activated if ( !doesActivate ) - oldFrontWindow = UMAFrontNonFloatingWindow() ; + oldFrontWindow = ::FrontNonFloatingWindow() ; MacResume( convertClipboard ) ; - newFrontWindow = UMAFrontNonFloatingWindow() ; + newFrontWindow = ::FrontNonFloatingWindow() ; if ( oldFrontWindow ) { @@ -1611,13 +1602,15 @@ void wxApp::MacHandleOSEvent( EventRecord *ev ) // in case this suspending did close an active window, another one might // have surfaced -> lets deactivate that one - WindowRef newActiveWindow = UMAGetActiveNonFloatingWindow() ; +/* TODO : find out what to do on systems < 10 , perhaps FrontNonFloatingWindow + WindowRef newActiveWindow = ::ActiveNonFloatingWindow() ; if ( newActiveWindow ) { wxWindow* win = wxFindWinFromMacWindow( newActiveWindow ) ; if ( win ) win->MacActivate( ev , false ) ; } +*/ } } break ; diff --git a/src/mac/carbon/apprsrc.r b/src/mac/carbon/apprsrc.r index 92a2f5e4f1..020b34f73a 100644 --- a/src/mac/carbon/apprsrc.r +++ b/src/mac/carbon/apprsrc.r @@ -11,7 +11,7 @@ resource 'STR#' ( 128 , "Simple Alert Messages" ) "This application needs at least a MacPlus" , "This application needs more memory" , "This application is out of memory" , - "This application needs at least System 7.5" , + "This application needs at least System 8.6" , "About this wxWindows Application" , "This application needs Appearance extension (built in with System 8) - this restriction will be relieved in the final release" } diff --git a/src/mac/carbon/bitmap.cpp b/src/mac/carbon/bitmap.cpp index df8d319f43..95bc8f1612 100644 --- a/src/mac/carbon/bitmap.cpp +++ b/src/mac/carbon/bitmap.cpp @@ -93,95 +93,204 @@ void wxMacDestroyGWorld( GWorldPtr gw ) DisposeGWorld( gw ) ; } -PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) +#define kDefaultRes 0x00480000 /* Default resolution is 72 DPI; Fixed type */ + +OSErr SetupCIconHandlePixMap( CIconHandle icon , short depth , Rect *bounds , CTabHandle colors ) { - CGrafPtr origPort ; - GDHandle origDev ; + CTabHandle newColors; /* Color table used for the off-screen PixMap */ + Ptr offBaseAddr; /* Pointer to the off-screen pixel image */ + OSErr error; /* Returns error code */ + short bytesPerRow; /* Number of bytes per row in the PixMap */ - PicHandle pict; // this is the Picture we give back - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; + error = noErr; + newColors = nil; + offBaseAddr = nil; - unsigned char *maskimage = NULL ; - Rect portRect ; - GetPortBounds( wp , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; + bytesPerRow = ((depth * (bounds->right - bounds->left) + 31) / 32) * 4; - LockPixels( GetGWorldPixMap( wp ) ) ; - GetGWorld( &origPort , &origDev ) ; + /* Clone the clut if indexed color; allocate a dummy clut if direct color*/ + if (depth <= 8) + { + newColors = colors; + error = HandToHand((Handle *) &newColors); + } + else + { + newColors = (CTabHandle) NewHandle(sizeof(ColorTable) - + sizeof(CSpecArray)); + error = MemError(); + } + if (error == noErr) + { + /* Allocate pixel image; long integer multiplication avoids overflow */ + (**icon).iconData = NewHandle((unsigned long) bytesPerRow * (bounds->bottom - + bounds->top)); + if ((**icon).iconData != nil) + { + /* Initialize fields common to indexed and direct PixMaps */ + (**icon).iconPMap.baseAddr = 0; /* Point to image */ + (**icon).iconPMap.rowBytes = bytesPerRow | /* MSB set for PixMap */ + 0x8000; + (**icon).iconPMap.bounds = *bounds; /* Use given bounds */ + (**icon).iconPMap.pmVersion = 0; /* No special stuff */ + (**icon).iconPMap.packType = 0; /* Default PICT pack */ + (**icon).iconPMap.packSize = 0; /* Always zero in mem */ + (**icon).iconPMap.hRes = kDefaultRes; /* 72 DPI default res */ + (**icon).iconPMap.vRes = kDefaultRes; /* 72 DPI default res */ + (**icon).iconPMap.pixelSize = depth; /* Set # bits/pixel */ + + /* Initialize fields specific to indexed and direct PixMaps */ + if (depth <= 8) + { + /* PixMap is indexed */ + (**icon).iconPMap.pixelType = 0; /* Indicates indexed */ + (**icon).iconPMap.cmpCount = 1; /* Have 1 component */ + (**icon).iconPMap.cmpSize = depth; /* Component size=depth */ + (**icon).iconPMap.pmTable = newColors; /* Handle to CLUT */ + } + else + { + /* PixMap is direct */ + (**icon).iconPMap.pixelType = RGBDirect; /* Indicates direct */ + (**icon).iconPMap.cmpCount = 3; /* Have 3 components */ + if (depth == 16) + (**icon).iconPMap.cmpSize = 5; /* 5 bits/component */ + else + (**icon).iconPMap.cmpSize = 8; /* 8 bits/component */ + (**newColors).ctSeed = 3 * (**icon).iconPMap.cmpSize; + (**newColors).ctFlags = 0; + (**newColors).ctSize = 0; + (**icon).iconPMap.pmTable = newColors; + } + } + else + error = MemError(); + } + else + newColors = nil; - if ( mask ) - { - maskimage = (unsigned char*) malloc( width * height ) ; - SetGWorld( mask , NULL ) ; - LockPixels( GetGWorldPixMap( mask ) ) ; - for ( int y = 0 ; y < height ; y++ ) - { - for( int x = 0 ; x < width ; x++ ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - maskimage[y*width + x] = ( col.red == 0 ) ; // for monochrome masks - } - } - UnlockPixels( GetGWorldPixMap( mask ) ) ; - } + /* If no errors occured, return a handle to the new off-screen PixMap */ + if (error != noErr) + { + if (newColors != nil) + DisposeCTable(newColors); + } - SetGWorld( wp , NULL ) ; + /* Return the error code */ + return error; +} - pict = OpenPicture(&portRect); // open a picture, this disables drawing - if(!pict) - return NULL; +CIconHandle wxMacCreateCIcon(GWorldPtr image , GWorldPtr mask , short dstDepth , short iconSize ) +{ + GWorldPtr saveWorld; + GDHandle saveHandle; - if ( maskimage ) - { - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - PenMode(transparent); + GetGWorld(&saveWorld,&saveHandle); // save Graphics env state + SetGWorld(image,nil); - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( maskimage[y*width + x] ) - { - RGBColor col ; + Rect frame = { 0 , 0 , iconSize , iconSize } ; + Rect imageBounds = frame ; + GetPortBounds( image , &imageBounds ) ; - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - else { - // With transparency set this sets a blank pixel not a white one - SetCPixel( x + portRect.left , y + portRect.top , &white); - } - } - } - free( maskimage ) ; - maskimage = NULL ; - } - else - { - RGBBackColor( &gray ) ; - EraseRect(&portRect); - RGBForeColor( &black ) ; - RGBBackColor( &white ) ; - - CopyBits(GetPortBitMapForCopyBits(wp), /* src PixMap - we copy image over - * itself - */ - GetPortBitMapForCopyBits(wp), // dst PixMap - no drawing occurs - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( wp ) ) ; - SetGWorld( origPort , origDev ) ; + int bwSize = iconSize / 8 * iconSize ; + CIconHandle icon = (CIconHandle) NewHandleClear( sizeof ( CIcon ) + 2 * bwSize) ; + HLock((Handle)icon) ; + SetupCIconHandlePixMap( icon , dstDepth , &frame,GetCTable(dstDepth)) ; + HLock( (**icon).iconData ) ; + (**icon).iconPMap.baseAddr = *(**icon).iconData ; + + LockPixels(GetGWorldPixMap(image)); + + CopyBits(GetPortBitMapForCopyBits(image), + (BitMapPtr)&((**icon).iconPMap), + &imageBounds, + &imageBounds, + srcCopy | ditherCopy, nil); + + + UnlockPixels(GetGWorldPixMap(image)); + HUnlock( (**icon).iconData ) ; + + (**icon).iconMask.rowBytes = iconSize / 8 ; + (**icon).iconMask.bounds = frame ; + + (**icon).iconBMap.rowBytes = iconSize / 8 ; + (**icon).iconBMap.bounds = frame ; + (**icon).iconMask.baseAddr = (char*) &(**icon).iconMaskData ; + (**icon).iconBMap.baseAddr = (char*) &(**icon).iconMaskData + bwSize ; + + if ( mask ) + { + LockPixels(GetGWorldPixMap(mask) ) ; + CopyBits(GetPortBitMapForCopyBits(mask) , + &(**icon).iconBMap , &imageBounds , &imageBounds, srcCopy , nil ) ; + CopyBits(GetPortBitMapForCopyBits(mask) , + &(**icon).iconMask , &imageBounds , &imageBounds, srcCopy , nil ) ; + UnlockPixels(GetGWorldPixMap( mask ) ) ; + } + else + { + LockPixels(GetGWorldPixMap(image)); + CopyBits(GetPortBitMapForCopyBits(image) , + &(**icon).iconBMap , &imageBounds , &imageBounds, srcCopy , nil ) ; + CopyBits(GetPortBitMapForCopyBits(image) , + &(**icon).iconMask , &imageBounds , &imageBounds, srcCopy , nil ) ; + UnlockPixels(GetGWorldPixMap(image)); + } + + (**icon).iconMask.baseAddr = NULL ; + (**icon).iconBMap.baseAddr = NULL ; + (**icon).iconPMap.baseAddr = NULL ; + HUnlock((Handle)icon) ; + SetGWorld(saveWorld,saveHandle); + + return icon; +} + +PicHandle wxMacCreatePict(GWorldPtr wp, GWorldPtr mask) +{ + CGrafPtr origPort ; + GDHandle origDev ; + + PicHandle pict; + + RGBColor white = { 0xffff ,0xffff , 0xffff } ; + RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - return pict; // return our groovy pict handle + GetGWorld( &origPort , &origDev ) ; + + RgnHandle clipRgn = NULL ; + + if ( mask ) + { + clipRgn = NewRgn() ; + LockPixels( GetGWorldPixMap( mask ) ) ; + BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( mask ) ) ; + UnlockPixels( GetGWorldPixMap( mask ) ) ; + } + + SetGWorld( wp , NULL ) ; + Rect portRect ; + GetPortBounds( wp , &portRect ) ; + + pict = OpenPicture(&portRect); + if(pict) + { + RGBForeColor( &black ) ; + RGBBackColor( &white ) ; + + LockPixels( GetGWorldPixMap( wp ) ) ; + CopyBits(GetPortBitMapForCopyBits(wp), + GetPortBitMapForCopyBits(wp), + &portRect, + &portRect, + srcCopy,clipRgn); + UnlockPixels( GetGWorldPixMap( wp ) ) ; + ClosePicture(); + } + SetGWorld( origPort , origDev ) ; + return pict; } wxBitmapRefData::wxBitmapRefData() diff --git a/src/mac/carbon/bmpbuttn.cpp b/src/mac/carbon/bmpbuttn.cpp index d63ddcb227..c1a5949c9d 100644 --- a/src/mac/carbon/bmpbuttn.cpp +++ b/src/mac/carbon/bmpbuttn.cpp @@ -21,8 +21,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) #endif #include "wx/mac/uma.h" - -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) ; +#include "wx/bitmap.h" bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxPoint& pos, @@ -58,7 +57,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , kControlBehaviorOffsetContents + ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ; @@ -70,19 +69,22 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit if ( m_buttonBitmap.Ok() ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) { - info.contentType = kControlContentPictHandle ; - info.u.picture = bmap->m_hPict ; + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - info.contentType = kControlContentPictHandle ; if ( m_buttonBitmap.GetMask() ) { - info.u.picture = MakePict( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - info.u.picture = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) @@ -92,7 +94,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit } } - UMASetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; MacPostControlCreate() ; @@ -107,21 +109,23 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) if ( m_buttonBitmap.Ok() ) { wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ; - if ( bmap->m_bitmapType == kMacBitmapTypePict ) - { - info.contentType = kControlContentPictHandle ; - info.u.picture = bmap->m_hPict ; + if ( bmap->m_bitmapType == kMacBitmapTypePict ) { + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { - info.contentType = kControlContentPictHandle ; if ( m_buttonBitmap.GetMask() ) { - info.u.picture = MakePict( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - info.u.picture = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) @@ -129,8 +133,9 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) info.contentType = kControlContentCIconHandle ; info.u.cIconHandle = bmap->m_hIcon ; } + - UMASetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; } } diff --git a/src/mac/carbon/button.cpp b/src/mac/carbon/button.cpp index b8689ca0fd..19600ac5d7 100644 --- a/src/mac/carbon/button.cpp +++ b/src/mac/carbon/button.cpp @@ -37,7 +37,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlPushButtonProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; @@ -58,32 +58,19 @@ void wxButton::SetDefault() panel->SetDefaultItem(this); } -#ifdef __DARWIN__ Boolean inData; if ( btnOldDefault && btnOldDefault->m_macControl ) { inData = 0; - UMASetControlData( btnOldDefault->m_macControl , kControlButtonPart , + ::SetControlData( btnOldDefault->m_macControl , kControlButtonPart , kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; } if ( m_macControl ) { inData = 1; - UMASetControlData( m_macControl , kControlButtonPart , + ::SetControlData( m_macControl , kControlButtonPart , kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; } -#else - if ( btnOldDefault && btnOldDefault->m_macControl ) - { - UMASetControlData( btnOldDefault->m_macControl , kControlButtonPart , - kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)((Boolean)0) ) ; - } - if ( m_macControl ) - { - UMASetControlData( m_macControl , kControlButtonPart , - kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)((Boolean)1) ) ; - } -#endif } wxSize wxButton::DoGetBestSize() const diff --git a/src/mac/carbon/checkbox.cpp b/src/mac/carbon/checkbox.cpp index 5ae3a1bbbd..d83a2fed05 100644 --- a/src/mac/carbon/checkbox.cpp +++ b/src/mac/carbon/checkbox.cpp @@ -36,7 +36,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlCheckBoxProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp index 08f5a8fd75..9f05a58372 100644 --- a/src/mac/carbon/choice.cpp +++ b/src/mac/carbon/choice.cpp @@ -45,7 +45,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; m_macPopUpMenuHandle = NewUniqueMenu() ; diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp index 886177adac..5dabd2dd49 100644 --- a/src/mac/carbon/combobox.cpp +++ b/src/mac/carbon/combobox.cpp @@ -47,7 +47,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, kControlPopupButtonProc , (long) this ) ; m_macPopUpMenuHandle = NewUniqueMenu() ; diff --git a/src/mac/carbon/control.cpp b/src/mac/carbon/control.cpp index 4d4e3ffc32..55aca27152 100644 --- a/src/mac/carbon/control.cpp +++ b/src/mac/carbon/control.cpp @@ -111,7 +111,7 @@ wxControl::~wxControl() } if ( m_macControl ) { - UMADisposeControl( m_macControl ) ; + ::DisposeControl( m_macControl ) ; m_macControl = NULL ; } } @@ -146,7 +146,7 @@ wxSize wxControl::DoGetBestSize() const Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; int bestWidth, bestHeight ; - UMAGetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; + ::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) { @@ -297,7 +297,7 @@ void wxControl::MacPostControlCreate() controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallBoldSystemFont ; - ::UMASetControlFontStyle( m_macControl , &controlstyle ) ; + ::SetControlFontStyle( m_macControl , &controlstyle ) ; } else { @@ -305,11 +305,11 @@ void wxControl::MacPostControlCreate() controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallSystemFont ; - ::UMASetControlFontStyle( m_macControl , &controlstyle ) ; + ::SetControlFontStyle( m_macControl , &controlstyle ) ; } ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ; - ::UMAEmbedControl( m_macControl , container ) ; + ::EmbedControl( m_macControl , container ) ; m_macControlIsShown = true ; wxAssociateControlWithMacControl( m_macControl , this ) ; @@ -342,7 +342,7 @@ void wxControl::MacAdjustControlRect() Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; - UMAGetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; + ::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) { @@ -415,7 +415,7 @@ void wxControl::MacSuperChangedPosition() WindowRef rootwindow = GetMacRootWindow() ; wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; wxMacDrawingHelper focus( wxrootwindow ) ; if ( mac_x != former_mac_x || mac_y != former_mac_y ) @@ -435,7 +435,7 @@ void wxControl::MacSuperChangedPosition() } else { - UMASetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; } } @@ -484,7 +484,7 @@ void wxControl::MacSuperShown( bool show ) { if ( m_macControlIsShown ) { - ::UMAHideControl( m_macControl ) ; + ::HideControl( m_macControl ) ; m_macControlIsShown = false ; } } @@ -619,7 +619,7 @@ void wxControl::DoSetSize(int x, int y, wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; wxMacDrawingHelper focus( wxrootwindow ); - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; // Update window at old and new positions SetRect(&newbounds, m_x, m_y, m_x + m_width, m_y + m_height); InvalWindowRect( rootwindow , &oldbounds ); @@ -629,7 +629,7 @@ void wxControl::DoSetSize(int x, int y, if ( !wxrootwindow->IsKindOf( CLASSINFO( wxDialog ) ) ) { - UMASetThemeWindowBackground( rootwindow, kThemeBrushDocumentWindowBackground, false ); + ::SetThemeWindowBackground( rootwindow, kThemeBrushDocumentWindowBackground, false ); } } } @@ -645,7 +645,7 @@ bool wxControl::Show(bool show) { if ( m_macControlIsShown ) { - ::UMAHideControl( m_macControl ) ; + ::HideControl( m_macControl ) ; m_macControlIsShown = false ; } } @@ -707,7 +707,7 @@ void wxControl::MacRedrawControl() { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -722,7 +722,7 @@ void wxControl::MacRedrawControl() } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -747,7 +747,7 @@ void wxControl::OnPaint(wxPaintEvent& event) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -762,7 +762,7 @@ void wxControl::OnPaint(wxPaintEvent& event) } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -791,7 +791,7 @@ void wxControl::OnKeyDown( wxKeyEvent &event ) keychar = short(ev->message & charCodeMask); keycode = short(ev->message & keyCodeMask) >> 8 ; - UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + ::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; } void wxControl::OnMouseEvent( wxMouseEvent &event ) @@ -848,13 +848,13 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) SetFocus() ; } */ - if ( control && UMAIsControlActive( control ) ) + if ( control && ::IsControlActive( control ) ) { { if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() ) - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; else - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; if ( control && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) && (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice diff --git a/src/mac/carbon/filedlg.cpp b/src/mac/carbon/filedlg.cpp index f9502a3883..6ca66d390f 100644 --- a/src/mac/carbon/filedlg.cpp +++ b/src/mac/carbon/filedlg.cpp @@ -93,7 +93,7 @@ NavEventProc( } } -char * gfilters[] = +const char * gfilters[] = { "*.TXT" , "*.TIF" , diff --git a/src/mac/carbon/gauge.cpp b/src/mac/carbon/gauge.cpp index 37155cafb0..9076466a4a 100644 --- a/src/mac/carbon/gauge.cpp +++ b/src/mac/carbon/gauge.cpp @@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, kControlProgressBarProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp index cb3a39dbd9..502394e18a 100644 --- a/src/mac/carbon/listbox.cpp +++ b/src/mac/carbon/listbox.cpp @@ -99,10 +99,10 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, #else long result ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , kwxMacListWithVerticalScrollbar , 0 , 0, kControlListBoxProc , (long) this ) ; - UMAGetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , sizeof( ListHandle ) , (char*) &m_macList , &result ) ; HLock( (Handle) m_macList ) ; @@ -664,7 +664,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar Boolean wasDoubleClick = false ; long result ; - UMAGetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; if ( !wasDoubleClick ) { MacDoClick() ; diff --git a/src/mac/carbon/menu.cpp b/src/mac/carbon/menu.cpp index 6956a0987a..72be92772d 100644 --- a/src/mac/carbon/menu.cpp +++ b/src/mac/carbon/menu.cpp @@ -71,7 +71,7 @@ void wxMenu::Init() wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_title , false ); m_macMenuId = s_macNextMenuId++; wxCHECK_RET( s_macNextMenuId < 236 , "menu ids > 235 cannot be used for submenus on mac" ); - m_hMenu = UMANewMenu(m_macMenuId, label); + m_hMenu = ::NewMenu(m_macMenuId, label); if ( !m_hMenu ) { @@ -89,7 +89,7 @@ void wxMenu::Init() wxMenu::~wxMenu() { if (m_hMenu) - UMADisposeMenu(m_hMenu); + ::DisposeMenu(m_hMenu); #if wxUSE_ACCEL // delete accels @@ -183,7 +183,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar) { - UMAInsertMenu( pSubMenu->m_hMenu , -1 ) ; + ::InsertMenu( pSubMenu->m_hMenu , -1 ) ; } if ( pos == (size_t)-1 ) @@ -683,7 +683,7 @@ void wxMenuBar::MacInstallMenuBar() } if ( item->GetId() == wxApp::s_macAboutMenuItemId ) { - UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); } else @@ -707,7 +707,7 @@ void wxMenuBar::MacInstallMenuBar() subMenu = item->GetSubMenu() ; if (subMenu) { - UMAInsertMenu( subMenu->GetHMenu() , -1 ) ; + ::InsertMenu( subMenu->GetHMenu() , -1 ) ; } else { @@ -717,12 +717,12 @@ void wxMenuBar::MacInstallMenuBar() UInt8 modifiers ; SInt16 key ; wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu - UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); } } } - UMAInsertMenu(m_menus[i]->GetHMenu(), 0); + ::InsertMenu(m_menus[i]->GetHMenu(), 0); } #endif else @@ -735,13 +735,13 @@ void wxMenuBar::MacInstallMenuBar() subMenu = item->GetSubMenu() ; if (subMenu) { - UMAInsertMenu( subMenu->GetHMenu() , -1 ) ; + ::InsertMenu( subMenu->GetHMenu() , -1 ) ; } } - UMAInsertMenu(m_menus[i]->GetHMenu(), 0); + ::InsertMenu(m_menus[i]->GetHMenu(), 0); } } - UMADrawMenuBar() ; + ::DrawMenuBar() ; s_macInstalledMenuBar = this; } @@ -816,18 +816,18 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) { if (s_macInstalledMenuBar == this) { - UMADeleteMenu( menuOld->MacGetMenuId() /* m_menus[pos]->MacGetMenuId() */ ) ; + ::DeleteMenu( menuOld->MacGetMenuId() /* m_menus[pos]->MacGetMenuId() */ ) ; { Str255 label; wxMenuItem::MacBuildMenuString( label, NULL , NULL , title , false ); UMASetMenuTitle( menu->GetHMenu() , label ) ; if ( pos == m_menus.GetCount() - 1) { - UMAInsertMenu( menu->GetHMenu() , 0 ) ; + ::InsertMenu( menu->GetHMenu() , 0 ) ; } else { - UMAInsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; + ::InsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; } } } diff --git a/src/mac/carbon/menuitem.cpp b/src/mac/carbon/menuitem.cpp index d6b12d09ba..33b337518e 100644 --- a/src/mac/carbon/menuitem.cpp +++ b/src/mac/carbon/menuitem.cpp @@ -319,7 +319,7 @@ void wxMenuItem::SetText(const wxString& text) { Str255 label; MacBuildMenuString( label , NULL , NULL , text ,false); - UMASetMenuItemText( m_parentMenu->GetHMenu() , index , label ) ; // checkmark + ::SetMenuItemText( m_parentMenu->GetHMenu() , index , label ) ; // checkmark } } diff --git a/src/mac/carbon/notebmac.cpp b/src/mac/carbon/notebmac.cpp index 17b89bde2e..88e098ac96 100644 --- a/src/mac/carbon/notebmac.cpp +++ b/src/mac/carbon/notebmac.cpp @@ -115,7 +115,7 @@ bool wxNotebook::Create(wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlTabSmallProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/radiobox.cpp b/src/mac/carbon/radiobox.cpp index 664e5c54d2..f4c7ca1509 100644 --- a/src/mac/carbon/radiobox.cpp +++ b/src/mac/carbon/radiobox.cpp @@ -117,7 +117,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlGroupBoxTextTitleProc , (long) this ) ; for (i = 0; i < n; i++) diff --git a/src/mac/carbon/radiobut.cpp b/src/mac/carbon/radiobut.cpp index 196fed3a4b..476cf9ef10 100644 --- a/src/mac/carbon/radiobut.cpp +++ b/src/mac/carbon/radiobut.cpp @@ -35,7 +35,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlRadioButtonProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/scrolbar.cpp b/src/mac/carbon/scrolbar.cpp index e9d45ce4e5..c417484f02 100644 --- a/src/mac/carbon/scrolbar.cpp +++ b/src/mac/carbon/scrolbar.cpp @@ -43,7 +43,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, kControlScrollBarLiveProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/carbon/slider.cpp b/src/mac/carbon/slider.cpp index 53ad11814e..459a15c76b 100644 --- a/src/mac/carbon/slider.cpp +++ b/src/mac/carbon/slider.cpp @@ -84,7 +84,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, } - m_macControl = UMANewControl( parent->GetMacRootWindow(), &bounds, title, false, + m_macControl = ::NewControl( parent->GetMacRootWindow(), &bounds, title, false, value, minValue, maxValue, procID, (long) this); wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/carbon/spinbutt.cpp b/src/mac/carbon/spinbutt.cpp index 283d6bc262..cdf211ab43 100644 --- a/src/mac/carbon/spinbutt.cpp +++ b/src/mac/carbon/spinbutt.cpp @@ -49,7 +49,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c MacPreControlCreate( parent , id , "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, kControlLittleArrowsProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/carbon/statbox.cpp b/src/mac/carbon/statbox.cpp index 06d35460ac..400eb43169 100644 --- a/src/mac/carbon/statbox.cpp +++ b/src/mac/carbon/statbox.cpp @@ -43,7 +43,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlGroupBoxTextTitleProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/statlmac.cpp b/src/mac/carbon/statlmac.cpp index 4384627196..175708d1fa 100644 --- a/src/mac/carbon/statlmac.cpp +++ b/src/mac/carbon/statlmac.cpp @@ -54,7 +54,7 @@ bool wxStaticLine::Create( wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlSeparatorLineProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/tabctrl.cpp b/src/mac/carbon/tabctrl.cpp index 2b4a07e0fb..7bb7a464f2 100644 --- a/src/mac/carbon/tabctrl.cpp +++ b/src/mac/carbon/tabctrl.cpp @@ -41,7 +41,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlTabSmallProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index c6a6d86e09..7454d48f9b 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -44,6 +44,10 @@ #include "wx/mac/uma.h" +#define wxUSE_MLTE 0 + +#if wxUSE_MLTE == 0 // old textctrl implementation + #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) @@ -120,7 +124,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, } - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ; MacPostControlCreate() ; @@ -130,7 +134,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; (*teH)->lineHeight = -1 ; } @@ -138,7 +142,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, value = wxMacMakeMacStringFromPC( st ) ; else value = st ; - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; return TRUE; } @@ -146,7 +150,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, wxString wxTextCtrl::GetValue() const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; wxBuffer[actualsize] = 0 ; if( wxApp::s_macDefaultEncodingIsPC ) return wxMacMakePCStringFromMac( wxBuffer ) ; @@ -160,7 +164,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; *from = (**teH).selStart; *to = (**teH).selEnd; @@ -174,7 +178,7 @@ void wxTextCtrl::SetValue(const wxString& st) value = wxMacMakeMacStringFromPC( st ) ; else value = st ; - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; WindowRef window = GetMacRootWindow() ; if ( window ) { @@ -191,7 +195,7 @@ void wxTextCtrl::SetValue(const wxString& st) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -206,7 +210,7 @@ void wxTextCtrl::SetValue(const wxString& st) } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -219,7 +223,7 @@ void wxTextCtrl::Copy() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TECopy( teH ) ; #if TARGET_CARBON OSStatus err ; @@ -239,7 +243,7 @@ void wxTextCtrl::Cut() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TECut( teH ) ; #if TARGET_CARBON OSStatus err ; @@ -260,7 +264,7 @@ void wxTextCtrl::Paste() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEFromScrap() ; TEPaste( teH ) ; WindowRef window = GetMacRootWindow() ; @@ -279,7 +283,7 @@ void wxTextCtrl::Paste() { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -294,7 +298,7 @@ void wxTextCtrl::Paste() } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -376,8 +380,8 @@ long wxTextCtrl::GetInsertionPoint() const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; -// UMAGetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; return (**teH).selStart ; } @@ -387,9 +391,9 @@ long wxTextCtrl::GetLastPosition() const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; -// UMAGetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; return (**teH).teLength ; } @@ -402,8 +406,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value) selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TESetSelect( from , to , teH ) ; TEDelete( teH ) ; TEInsert( value , value.Length() , teH ) ; @@ -419,8 +423,8 @@ void wxTextCtrl::Remove(long from, long to) selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEDelete( teH ) ; Refresh() ; } @@ -431,12 +435,12 @@ void wxTextCtrl::SetSelection(long from, long to) TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; TESetSelect( selection.selStart , selection.selEnd , teH ) ; } @@ -459,7 +463,7 @@ void wxTextCtrl::WriteText(const wxString& text) wxBuffer[text.Length() ] = 0 ; // wxMacConvertNewlines( wxBuffer , wxBuffer ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEInsert( wxBuffer , strlen( wxBuffer) , teH ) ; Refresh() ; @@ -473,7 +477,7 @@ void wxTextCtrl::AppendText(const wxString& text) void wxTextCtrl::Clear() { - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; Refresh() ; } @@ -558,7 +562,7 @@ void wxTextCtrl::DiscardEdits() int wxTextCtrl::GetNumberOfLines() const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; int count = 1; for (int i = 0; i < actualsize; i++) @@ -588,7 +592,7 @@ void wxTextCtrl::ShowPosition(long pos) int wxTextCtrl::GetLineLength(long lineNo) const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; // Find line first int count = 0; @@ -615,7 +619,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const wxString wxTextCtrl::GetLineText(long lineNo) const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; // Find line first int count = 0; @@ -723,7 +727,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) short keychar ; keychar = short(ev->message & charCodeMask); keycode = short(ev->message & keyCodeMask) >> 8 ; - UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + ::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK) { wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); @@ -788,5 +792,1784 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) event.Enable( CanRedo() ); } +#else + +#if !TARGET_CARBON +#define GetControlOwner( control ) (**control).contrlOwner +#endif + +//todo add access to global event record + +EventRecord event ; + +static EventRecord *GetCurrentEventRecord() +{ + return &event ; +} + +// CS:We will replace the TextEdit by using the MultiLanguageTextEngine based on the following code written by apple + +/* + File: mUPControl.c + + Description: + mUPControl implementation. + + Copyright: + © Copyright 2000 Apple Computer, Inc. All rights reserved. + + Disclaimer: + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + Fri, Jan 28, 2000 -- created +*/ + +#include "MacTextEditor.h" + +/* part codes */ + +/* kmUPTextPart is the part code we return to indicate the user has clicked + in the text area of our control */ +#define kmUPTextPart 1 + +/* kmUPScrollPart is the part code we return to indicate the user has clicked + in the scroll bar part of the control. */ +#define kmUPScrollPart 2 + + +/* routines for using existing user pane controls. + These routines are useful for cases where you would like to use an + existing user pane control in, say, a dialog window as a scrolling + text edit field.*/ + +/* mUPOpenControl initializes a user pane control so it will be drawn + and will behave as a scrolling text edit field inside of a window. + This routine performs all of the initialization steps necessary, + except it does not create the user pane control itself. theControl + should refer to a user pane control that you have either created + yourself or extracted from a dialog's control heirarchy using + the GetDialogItemAsControl routine. */ +OSStatus mUPOpenControl(ControlHandle theControl); + +/* mUPCloseControl deallocates all of the structures allocated + by mUPOpenControl. */ +OSStatus mUPCloseControl(ControlHandle theControl); + + + +/* routines for creating new scrolling text user pane controls. + These routines allow you to create new scrolling text + user pane controls. */ + +/* mUPCreateControl creates a new user pane control and then it passes it + to mUPOpenControl to initialize it as a scrolling text user pane control. */ +OSStatus mUPCreateControl(WindowPtr theWindow, Rect *bounds, ControlHandle *theControl); + +/* mUPDisposeControl calls mUPCloseControl and then it calls DisposeControl. */ +OSStatus mUPDisposeControl(ControlHandle theControl); + + +/* Utility Routines */ + + /* mUPSetText replaces the contents of the selection with the unicode + text described by the text and count parameters:. + text = pointer to unicode text buffer + count = number of bytes in the buffer. */ +OSStatus mUPSetText(ControlHandle theControl, char* text, long count); + +/* mUPGetText returns the current text data being displayed inside of + the mUPControl. When noErr is returned, *theText contain a new + handle containing all of the Unicode text copied from the current + selection. It is the caller's responsibiliby to dispose of this handle. */ +OSStatus mUPGetText(ControlHandle theControl, Handle *theText); + + +/* mUPSetSelection sets the text selection and autoscrolls the text view + so either the cursor or the selction is in the view. */ +void mUPSetSelection(ControlHandle theControl, long selStart, long selEnd); + + + +/* IsmUPControl returns true if theControl is not NULL + and theControl refers to a mUP Control. */ +Boolean IsmUPControl(ControlHandle theControl); + + + +/* Edit commands for mUP Controls. */ +enum { + kmUPCut = 1, + kmUPCopy = 2, + kmUPPaste = 3, + kmUPClear = 4 +}; + + +/* mUPDoEditCommand performs the editing command specified + in the editCommand parameter. The mUPControl's text + and scroll bar are redrawn and updated as necessary. */ +void mUPDoEditCommand(ControlHandle theControl, short editCommand); + + + + +/* mUPGetContents returns the entire contents of the control including the text + and the formatting information. */ +OSStatus mUPGetContents(ControlHandle theControl, Handle *theContents); +/* mUPSetContents replaces the contents of the selection with the data stored in the handle. */ +OSStatus mUPSetContents(ControlHandle theControl, Handle theContents); + +enum { + kShiftKeyCode = 56 +}; + +/* kUserClickedToFocusPart is a part code we pass to the SetKeyboardFocus + routine. In our focus switching routine this part code is understood + as meaning 'the user has clicked in the control and we need to switch + the current focus to ourselves before we can continue'. */ +#define kUserClickedToFocusPart 100 + + +/* kmUPClickScrollDelayTicks is a time measurement in ticks used to + slow the speed of 'auto scrolling' inside of our clickloop routine. + This value prevents the text from wizzzzzing by while the mouse + is being held down inside of the text area. */ +#define kmUPClickScrollDelayTicks 3 + + +/* STPTextPaneVars is a structure used for storing the the mUP Control's + internal variables and state information. A handle to this record is + stored in the pane control's reference value field using the + SetControlReference routine. */ + +typedef struct { + /* OS records referenced */ + TXNObject fTXNRec; /* the txn record */ + TXNFrameID fTXNFrame; /* the txn frame ID */ + ControlHandle fUserPaneRec; /* handle to the user pane control */ + WindowPtr fOwner; /* window containing control */ + GrafPtr fDrawingEnvironment; /* grafport where control is drawn */ + /* flags */ + Boolean fInFocus; /* true while the focus rect is drawn around the control */ + Boolean fIsActive; /* true while the control is drawn in the active state */ + Boolean fTEActive; /* reflects the activation state of the text edit record */ + Boolean fInDialogWindow; /* true if displayed in a dialog window */ + /* calculated locations */ + Rect fRTextArea; /* area where the text is drawn */ + Rect fRFocusOutline; /* rectangle used to draw the focus box */ + Rect fRTextOutline; /* rectangle used to draw the border */ + RgnHandle fTextBackgroundRgn; /* background region for the text, erased before calling TEUpdate */ + /* our focus advance override routine */ + EventHandlerUPP handlerUPP; + EventHandlerRef handlerRef; +} STPTextPaneVars; + + + + +/* Univerals Procedure Pointer variables used by the + mUP Control. These variables are set up + the first time that mUPOpenControl is called. */ +ControlUserPaneDrawUPP gTPDrawProc = NULL; +ControlUserPaneHitTestUPP gTPHitProc = NULL; +ControlUserPaneTrackingUPP gTPTrackProc = NULL; +ControlUserPaneIdleUPP gTPIdleProc = NULL; +ControlUserPaneKeyDownUPP gTPKeyProc = NULL; +ControlUserPaneActivateUPP gTPActivateProc = NULL; +ControlUserPaneFocusUPP gTPFocusProc = NULL; + + /* events handled by our focus advance override routine */ +#if TARGET_CARBON +static const EventTypeSpec gMLTEEvents[] = { { kEventClassTextInput, kEventUnicodeForKeyEvent } }; +#define kMLTEEventCount (sizeof( gMLTEEvents ) / sizeof( EventTypeSpec )) +#endif + + +/* TPActivatePaneText activates or deactivates the text edit record + according to the value of setActive. The primary purpose of this + routine is to ensure each call is only made once. */ +static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) { + STPTextPaneVars *varsp; + varsp = *tpvars; + if (varsp->fTEActive != setActive) { + + varsp->fTEActive = setActive; + + TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive); + + if (varsp->fInFocus) + TXNFocus( varsp->fTXNRec, varsp->fTEActive); + } +} + + +/* TPFocusPaneText set the focus state for the text record. */ +static void TPFocusPaneText(STPTextPaneVars **tpvars, Boolean setFocus) { + STPTextPaneVars *varsp; + varsp = *tpvars; + if (varsp->fInFocus != setFocus) { + varsp->fInFocus = setFocus; + TXNFocus( varsp->fTXNRec, varsp->fInFocus); + } +} + + +/* TPPaneDrawProc is called to redraw the control and for update events + referring to the control. This routine erases the text area's background, + and redraws the text. This routine assumes the scroll bar has been + redrawn by a call to DrawControls. */ +static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart) { + STPTextPaneVars **tpvars, *varsp; + char state; + Rect bounds; + /* set up our globals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + + /* save the drawing state */ + SetPort((**tpvars).fDrawingEnvironment); + /* verify our boundary */ + GetControlBounds(theControl, &bounds); + if ( ! EqualRect(&bounds, &varsp->fRTextArea) ) { + SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextArea, bounds.left, bounds.top, bounds.right, bounds.bottom); + RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); + TXNSetFrameBounds( varsp->fTXNRec, bounds.top, bounds.left, bounds.bottom, bounds.right, varsp->fTXNFrame); + } + + /* update the text region */ + EraseRgn(varsp->fTextBackgroundRgn); + TXNDraw(varsp->fTXNRec, NULL); + /* restore the drawing environment */ + /* draw the text frame and focus frame (if necessary) */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + if ((**tpvars).fIsActive && varsp->fInFocus) DrawThemeFocusRect(&varsp->fRFocusOutline, true); + /* release our globals */ + HSetState((Handle) tpvars, state); + } +} + + +/* TPPaneHitTestProc is called when the control manager would + like to determine what part of the control the mouse resides over. + We also call this routine from our tracking proc to determine how + to handle mouse clicks. */ +static pascal ControlPartCode TPPaneHitTestProc(ControlHandle theControl, Point where) { + STPTextPaneVars **tpvars; + ControlPartCode result; + char state; + /* set up our locals and lock down our globals*/ + result = 0; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + /* find the region where we clicked */ + if (PtInRect(where, &(**tpvars).fRTextArea)) { + result = kmUPTextPart; + } else result = 0; + /* release oure globals */ + HSetState((Handle) tpvars, state); + } + return result; +} + + + + + +/* TPPaneTrackingProc is called when the mouse is being held down + over our control. This routine handles clicks in the text area + and in the scroll bar. */ +static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point startPt, ControlActionUPP actionProc) { + STPTextPaneVars **tpvars, *varsp; + char state; + ControlPartCode partCodeResult; + /* make sure we have some variables... */ + partCodeResult = 0; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + /* lock 'em down */ + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* we don't do any of these functions unless we're in focus */ + if ( ! varsp->fInFocus) { + WindowPtr owner; + owner = GetControlOwner(theControl); + ClearKeyboardFocus(owner); + SetKeyboardFocus(owner, theControl, kUserClickedToFocusPart); + } + /* find the location for the click */ + switch (TPPaneHitTestProc(theControl, startPt)) { + + /* handle clicks in the text part */ + case kmUPTextPart: + { SetPort((**tpvars).fDrawingEnvironment); + TXNClick( varsp->fTXNRec, GetCurrentEventRecord()); + } + break; + + } + + HSetState((Handle) tpvars, state); + } + return partCodeResult; +} + + +/* TPPaneIdleProc is our user pane idle routine. When our text field + is active and in focus, we use this routine to set the cursor. */ +static pascal void TPPaneIdleProc(ControlHandle theControl) { + STPTextPaneVars **tpvars, *varsp; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + /* if we're not active, then we have nothing to say about the cursor */ + if ((**tpvars).fIsActive) { + char state; + Rect bounds; + Point mousep; + /* lock down the globals */ + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* get the current mouse coordinates (in our window) */ +#if TARGET_CARBON + SetPort(GetWindowPort(GetControlOwner(theControl))); +#else + SetPort((GrafPtr) GetWindowPort(GetControlOwner(theControl))); +#endif + GetMouse(&mousep); + /* there's a 'focus thing' and an 'unfocused thing' */ + if (varsp->fInFocus) { + /* flash the cursor */ + SetPort((**tpvars).fDrawingEnvironment); + TXNIdle(varsp->fTXNRec); + /* set the cursor */ + if (PtInRect(mousep, &varsp->fRTextArea)) { + RgnHandle theRgn; + RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); + TXNAdjustCursor(varsp->fTXNRec, theRgn); + DisposeRgn(theRgn); + } else SetThemeCursor(kThemeArrowCursor); + } else { + /* if it's in our bounds, set the cursor */ + GetControlBounds(theControl, &bounds); + if (PtInRect(mousep, &bounds)) + SetThemeCursor(kThemeArrowCursor); + } + + HSetState((Handle) tpvars, state); + } + } +} + + +/* TPPaneKeyDownProc is called whenever a keydown event is directed + at our control. Here, we direct the keydown event to the text + edit record and redraw the scroll bar and text field as appropriate. */ +static pascal ControlPartCode TPPaneKeyDownProc(ControlHandle theControl, + SInt16 keyCode, SInt16 charCode, SInt16 modifiers) { + STPTextPaneVars **tpvars; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + if ((**tpvars).fInFocus) { + /* turn autoscrolling on and send the key event to text edit */ + SetPort((**tpvars).fDrawingEnvironment); + TXNKeyDown( (**tpvars).fTXNRec, GetCurrentEventRecord()); + } + } + return kControlEntireControl; +} + + +/* TPPaneActivateProc is called when the window containing + the user pane control receives activate events. Here, we redraw + the control and it's text as necessary for the activation state. */ +static pascal void TPPaneActivateProc(ControlHandle theControl, Boolean activating) { + Rect bounds; + STPTextPaneVars **tpvars, *varsp; + char state; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* de/activate the text edit record */ + SetPort((**tpvars).fDrawingEnvironment); + GetControlBounds(theControl, &bounds); + varsp->fIsActive = activating; + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* redraw the frame */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + if (varsp->fInFocus) DrawThemeFocusRect(&varsp->fRFocusOutline, varsp->fIsActive); + HSetState((Handle) tpvars, state); + } +} + + +/* TPPaneFocusProc is called when every the focus changes to or + from our control. Herein, switch the focus appropriately + according to the parameters and redraw the control as + necessary. */ +static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlFocusPart action) { + ControlPartCode focusResult; + STPTextPaneVars **tpvars, *varsp; + char state; + /* set up locals */ + focusResult = kControlFocusNoPart; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* if kControlFocusPrevPart and kControlFocusNextPart are received when the user is + tabbing forwards (or shift tabbing backwards) through the items in the dialog, + and kControlFocusNextPart will be received. When the user clicks in our field + and it is not the current focus, then the constant kUserClickedToFocusPart will + be received. The constant kControlFocusNoPart will be received when our control + is the current focus and the user clicks in another control. In your focus routine, + you should respond to these codes as follows: + + kControlFocusNoPart - turn off focus and return kControlFocusNoPart. redraw + the control and the focus rectangle as necessary. + + kControlFocusPrevPart or kControlFocusNextPart - toggle focus on or off + depending on its current state. redraw the control and the focus rectangle + as appropriate for the new focus state. If the focus state is 'off', return the constant + kControlFocusNoPart, otherwise return a non-zero part code. + kUserClickedToFocusPart - is a constant defined for this example. You should + define your own value for handling click-to-focus type events. */ + /* save the drawing state */ + SetPort((**tpvars).fDrawingEnvironment); + /* calculate the next highlight state */ + switch (action) { + default: + case kControlFocusNoPart: + TPFocusPaneText(tpvars, false); + focusResult = kControlFocusNoPart; + break; + case kUserClickedToFocusPart: + TPFocusPaneText(tpvars, true); + focusResult = 1; + break; + case kControlFocusPrevPart: + case kControlFocusNextPart: + TPFocusPaneText(tpvars, ( ! varsp->fInFocus)); + focusResult = varsp->fInFocus ? 1 : kControlFocusNoPart; + break; + } + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* redraw the text fram and focus rectangle to indicate the + new focus state */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + DrawThemeFocusRect(&varsp->fRFocusOutline, varsp->fIsActive && varsp->fInFocus); + /* done */ + HSetState((Handle) tpvars, state); + } + return focusResult; +} + + + + + + + + + + + +//This our carbon event handler for unicode key downs +#if TARGET_CARBON +static pascal OSStatus FocusAdvanceOverride(EventHandlerCallRef myHandler, EventRef event, void* userData) { + WindowRef window; + STPTextPaneVars **tpvars; + OSStatus err; + unsigned short mUnicodeText; + ByteCount charCounts=0; + /* get our window pointer */ + tpvars = (STPTextPaneVars **) userData; + window = (**tpvars).fOwner; + //find out how many bytes are needed + err = GetEventParameter(event, kEventParamTextInputSendText, + typeUnicodeText, NULL, 0, &charCounts, NULL); + if (err != noErr) goto bail; + /* we're only looking at single characters */ + if (charCounts != 2) { err = eventNotHandledErr; goto bail; } + /* get the character */ + err = GetEventParameter(event, kEventParamTextInputSendText, + typeUnicodeText, NULL, sizeof(mUnicodeText), + &charCounts, (char*) &mUnicodeText); + if (err != noErr) goto bail; + /* if it's not the tab key, forget it... */ + if ((mUnicodeText != '\t')) { err = eventNotHandledErr; goto bail; } + /* advance the keyboard focus */ + AdvanceKeyboardFocus(window); + /* noErr lets the CEM know we handled the event */ + return noErr; +bail: + return eventNotHandledErr; +} +#endif + + +/* mUPOpenControl initializes a user pane control so it will be drawn + and will behave as a scrolling text edit field inside of a window. + This routine performs all of the initialization steps necessary, + except it does not create the user pane control itself. theControl + should refer to a user pane control that you have either created + yourself or extracted from a dialog's control heirarchy using + the GetDialogItemAsControl routine. */ +OSStatus mUPOpenControl(ControlHandle theControl) { + Rect bounds; + WindowPtr theWindow; + STPTextPaneVars **tpvars, *varsp; + OSStatus err; + RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF}; + TXNBackground tback; + + /* set up our globals */ + if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc); + if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc); + if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc); + if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc); + if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc); + if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc); + if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc); + + /* allocate our private storage */ + tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars)); + SetControlReference(theControl, (long) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* set the initial settings for our private data */ + varsp->fInFocus = false; + varsp->fIsActive = true; + varsp->fTEActive = false; + varsp->fUserPaneRec = theControl; + theWindow = varsp->fOwner = GetControlOwner(theControl); +#if TARGET_CARBON + varsp->fDrawingEnvironment = GetWindowPort(varsp->fOwner); +#else + varsp->fDrawingEnvironment = (GrafPtr) GetWindowPort(varsp->fOwner); +#endif + varsp->fInDialogWindow = ( GetWindowKind(varsp->fOwner) == kDialogWindowKind ); + /* set up the user pane procedures */ + SetControlData(theControl, kControlEntireControl, kControlUserPaneDrawProcTag, sizeof(gTPDrawProc), &gTPDrawProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneHitTestProcTag, sizeof(gTPHitProc), &gTPHitProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneTrackingProcTag, sizeof(gTPTrackProc), &gTPTrackProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneIdleProcTag, sizeof(gTPIdleProc), &gTPIdleProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneKeyDownProcTag, sizeof(gTPKeyProc), &gTPKeyProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneActivateProcTag, sizeof(gTPActivateProc), &gTPActivateProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneFocusProcTag, sizeof(gTPFocusProc), &gTPFocusProc); + /* calculate the rectangles used by the control */ + GetControlBounds(theControl, &bounds); + SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextArea, bounds.left, bounds.top, bounds.right, bounds.bottom); + /* calculate the background region for the text. In this case, it's kindof + and irregular region because we're setting the scroll bar a little ways inside + of the text area. */ + RectRgn((varsp->fTextBackgroundRgn = NewRgn()), &varsp->fRTextOutline); + + /* set up the drawing environment */ + SetPort(varsp->fDrawingEnvironment); + + /* create the new edit field */ + TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, + kTXNWantVScrollBarMask | kTXNAlwaysWrapAtViewEdgeMask, + kTXNTextEditStyleFrameType, + kTXNTextensionFile, + kTXNSystemDefaultEncoding, + &varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars); + + /* set the field's background */ + tback.bgType = kTXNBackgroundTypeRGB; + tback.bg.color = rgbWhite; + TXNSetBackground( varsp->fTXNRec, &tback); + + /* install our focus advance override routine */ +#if TARGET_CARBON + varsp->handlerUPP = NewEventHandlerUPP(FocusAdvanceOverride); + err = InstallWindowEventHandler( varsp->fOwner, varsp->handlerUPP, + kMLTEEventCount, gMLTEEvents, tpvars, &varsp->handlerRef ); +#endif + + /* unlock our storage */ + HUnlock((Handle) tpvars); + /* perform final activations and setup for our text field. Here, + we assume that the window is going to be the 'active' window. */ + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* all done */ + return noErr; +} + + + +/* mUPCloseControl deallocates all of the structures allocated + by mUPOpenControl. */ +OSStatus mUPCloseControl(ControlHandle theControl) { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* release our sub records */ + TXNDeleteObject((**tpvars).fTXNRec); + /* remove our focus advance override */ + RemoveEventHandler((**tpvars).handlerRef); + DisposeEventHandlerUPP((**tpvars).handlerUPP); + /* delete our private storage */ + DisposeHandle((Handle) tpvars); + /* zero the control reference */ + SetControlReference(theControl, 0); + return noErr; +} + + + + + /* mUPSetText replaces the contents of the selection with the unicode + text described by the text and count parameters:. + text = pointer to unicode text buffer + count = number of bytes in the buffer. */ +OSStatus mUPSetText(ControlHandle theControl, char* text, long count) { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* set the text in the record */ + return TXNSetData( (**tpvars).fTXNRec, kTXNUnicodeTextData, text, count, + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + + return noErr; +} + + +/* mUPSetSelection sets the text selection and autoscrolls the text view + so either the cursor or the selction is in the view. */ +void mUPSetSelection(ControlHandle theControl, long selStart, long selEnd) { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* change the selection */ + TXNSetSelection( (**tpvars).fTXNRec, selStart, selEnd); +} + + + + + +/* mUPGetText returns the current text data being displayed inside of + the mUPControl. When noErr is returned, *theText contain a new + handle containing all of the Unicode text copied from the current + selection. It is the caller's responsibiliby to dispose of this handle. */ +OSStatus mUPGetText(ControlHandle theControl, Handle *theText) { + STPTextPaneVars **tpvars; + OSStatus err; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* extract the text from the record */ + err = TXNGetData( (**tpvars).fTXNRec, kTXNUseCurrentSelection, kTXNUseCurrentSelection, theText); + /* all done */ + return err; +} + + + +/* mUPCreateControl creates a new user pane control and then it passes it + to mUPOpenControl to initialize it as a scrolling text user pane control. */ +OSStatus mUPCreateControl(WindowPtr theWindow, Rect *bounds, ControlHandle *theControl) { + short featurSet; + /* the following feature set can be specified in CNTL resources by using + the value 1214. When creating a user pane control, we pass this value + in the 'value' parameter. */ + featurSet = kControlSupportsEmbedding | kControlSupportsFocus | kControlWantsIdle + | kControlWantsActivate | kControlHandlesTracking | kControlHasSpecialBackground + | kControlGetsFocusOnClick | kControlSupportsLiveFeedback; + /* create the control */ + *theControl = NewControl(theWindow, bounds, "\p", true, featurSet, 0, featurSet, kControlUserPaneProc, 0); + /* set up the mUP specific features and data */ + mUPOpenControl(*theControl); + /* all done.... */ + return noErr; +} + + +/* mUPDisposeControl calls mUPCloseControl and then it calls DisposeControl. */ +OSStatus mUPDisposeControl(ControlHandle theControl) { + /* deallocate the mUP specific data */ + mUPCloseControl(theControl); + /* deallocate the user pane control itself */ + DisposeControl(theControl); + return noErr; +} + + + + +/* IsmUPControl returns true if theControl is not NULL + and theControl refers to a mUP Control. */ +Boolean IsmUPControl(ControlHandle theControl) { + Size theSize; + ControlUserPaneFocusUPP localFocusProc; + /* a NULL control is not a mUP control */ + if (theControl == NULL) return false; + /* check if the control is using our focus procedure */ + theSize = sizeof(localFocusProc); + if (GetControlData(theControl, kControlEntireControl, kControlUserPaneFocusProcTag, + sizeof(localFocusProc), &localFocusProc, &theSize) != noErr) return false; + if (localFocusProc != gTPFocusProc) return false; + /* all tests passed, it's a mUP control */ + return true; +} + + +/* mUPDoEditCommand performs the editing command specified + in the editCommand parameter. The mUPControl's text + and scroll bar are redrawn and updated as necessary. */ +void mUPDoEditCommand(ControlHandle theControl, short editCommand) { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* perform the editing command */ + switch (editCommand) { + case kmUPCut: + ClearCurrentScrap(); + TXNCut((**tpvars).fTXNRec); + TXNConvertToPublicScrap(); + break; + case kmUPCopy: + ClearCurrentScrap(); + TXNCopy((**tpvars).fTXNRec); + TXNConvertToPublicScrap(); + break; + case kmUPPaste: + TXNConvertFromPublicScrap(); + TXNPaste((**tpvars).fTXNRec); + break; + case kmUPClear: + TXNClear((**tpvars).fTXNRec); + break; + } +} + + + + +/* mUPGetContents returns the entire contents of the control including the text + and the formatting information. */ +OSStatus mUPGetContents(ControlHandle theControl, Handle *theContents) { + STPTextPaneVars **tpvars; + OSStatus err; + short vRefNum; + long dirID; + FSSpec tspec; + short trefnum; + Boolean texists; + long bytecount; + Handle localdata; + /* set up locals */ + trefnum = 0; + texists = false; + localdata = NULL; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (theContents == NULL) return paramErr; + /* create a temporary file */ + err = FindFolder(kOnSystemDisk, kTemporaryFolderType, true, &vRefNum, &dirID); + if (err != noErr) goto bail; + FSMakeFSSpec(vRefNum, dirID, "\pmUPGetContents", &tspec); + err = FSpCreate(&tspec, 'trsh', 'trsh', smSystemScript); + if (err != noErr) goto bail; + texists = true; + /* open the file */ + err = FSpOpenDF(&tspec, fsRdWrPerm, &trefnum); + if (err != noErr) goto bail; + /* save the data */ + err = TXNSave( (**tpvars).fTXNRec, kTXNTextensionFile, 0, kTXNSystemDefaultEncoding, &tspec, trefnum, 0); + if (err != noErr) goto bail; + /* get the file length and set the position */ + err = GetEOF(trefnum, &bytecount); + if (err != noErr) goto bail; + err = SetFPos(trefnum, fsFromStart, 0); + if (err != noErr) goto bail; + /* copy the data fork to a handle */ + localdata = NewHandle(bytecount); + if (localdata == NULL) { err = memFullErr; goto bail; } + HLock(localdata); + err = FSRead(trefnum, &bytecount, *localdata); + HUnlock(localdata); + if (err != noErr) goto bail; + /* store result */ + *theContents = localdata; + /* clean up */ + FSClose(trefnum); + FSpDelete(&tspec); + /* all done */ + return noErr; +bail: + if (trefnum != 0) FSClose(trefnum); + if (texists) FSpDelete(&tspec); + if (localdata != NULL) DisposeHandle(localdata); + return err; +} + + + + +/* mUPSetContents replaces the contents of the selection with the data stored in the handle. */ +OSStatus mUPSetContents(ControlHandle theControl, Handle theContents) { + STPTextPaneVars **tpvars; + OSStatus err; + short vRefNum; + long dirID; + FSSpec tspec; + short trefnum; + Boolean texists; + long bytecount; + char state; + /* set up locals */ + trefnum = 0; + texists = false; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (theContents == NULL) return paramErr; + /* create a temporary file */ + err = FindFolder(kOnSystemDisk, kTemporaryFolderType, true, &vRefNum, &dirID); + if (err != noErr) goto bail; + FSMakeFSSpec(vRefNum, dirID, "\pmUPSetContents", &tspec); + err = FSpCreate(&tspec, 'trsh', 'trsh', smSystemScript); + if (err != noErr) goto bail; + texists = true; + /* open the file */ + err = FSpOpenDF(&tspec, fsRdWrPerm, &trefnum); + if (err != noErr) goto bail; + /* save the data to the temporary file */ + state = HGetState(theContents); + HLock(theContents); + bytecount = GetHandleSize(theContents); + err = FSWrite(trefnum, &bytecount, *theContents); + HSetState(theContents, state); + if (err != noErr) goto bail; + /* reset the file position */ + err = SetFPos(trefnum, fsFromStart, 0); + if (err != noErr) goto bail; + /* load the data */ + err = TXNSetDataFromFile((**tpvars).fTXNRec, trefnum, kTXNTextensionFile, bytecount, kTXNUseCurrentSelection, kTXNUseCurrentSelection); + if (err != noErr) goto bail; + /* clean up */ + FSClose(trefnum); + FSpDelete(&tspec); + /* all done */ + return noErr; +bail: + if (trefnum != 0) FSClose(trefnum); + if (texists) FSpDelete(&tspec); + return err; +} + +#if !USE_SHARED_LIBRARY +IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) + +BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) + EVT_DROP_FILES(wxTextCtrl::OnDropFiles) + EVT_CHAR(wxTextCtrl::OnChar) + EVT_MENU(wxID_CUT, wxTextCtrl::OnCut) + EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy) + EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste) + EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo) + EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo) + + EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut) + EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy) + EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste) + EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo) + EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) +END_EVENT_TABLE() +#endif + +// Text item +wxTextCtrl::wxTextCtrl() +{ +} + +const short kVerticalMargin = 2 ; +const short kHorizontalMargin = 2 ; + +bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, + const wxString& st, + const wxPoint& pos, + const wxSize& size, long style, + const wxValidator& validator, + const wxString& name) +{ + // base initialization + if ( !CreateBase(parent, id, pos, size, style, validator, name) ) + return FALSE; + + wxSize mySize = size ; + if ( UMAHasAppearance() ) + { + m_macHorizontalBorder = 5 ; // additional pixels around the real control + m_macVerticalBorder = 5 ; + } + else + { + m_macHorizontalBorder = 0 ; // additional pixels around the real control + m_macVerticalBorder = 0 ; + } + + + Rect bounds ; + Str255 title ; + + if ( mySize.y == -1 ) + { + if ( UMAHasAppearance() ) + mySize.y = 13 ; + else + mySize.y = 24 ; + + mySize.y += 2 * m_macVerticalBorder ; + } + + MacPreControlCreate( parent , id , "" , pos , mySize ,style, validator , name , &bounds , title ) ; + + if ( m_windowStyle & wxTE_MULTILINE ) + { + wxASSERT_MSG( !(m_windowStyle & wxTE_PROCESS_ENTER), + wxT("wxTE_PROCESS_ENTER style is ignored for multiline text controls (they always process it)") ); + + m_windowStyle |= wxTE_PROCESS_ENTER; + } + + + if ( style & wxTE_PASSWORD ) + { + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, + kControlEditTextPasswordProc , (long) this ) ; + } + else + { + if ( mUPCreateControl(parent->GetMacRootWindow(), &bounds, &m_macControl) != noErr ) + return FALSE ; + } + MacPostControlCreate() ; + + wxString value ; + + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( st ) ; + else + value = st ; + + if ( style & wxTE_PASSWORD ) + { + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNStartOffset, kTXNEndOffset); + } + + return TRUE; +} + +wxString wxTextCtrl::GetValue() const +{ + Size actualsize; + if ( m_windowStyle & wxTE_PASSWORD ) + { + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + } + else + { + STPTextPaneVars **tpvars; + OSStatus err; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* extract the text from the record */ + Handle theText ; + err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); + /* all done */ + if ( err ) + { + actualsize = 0 ; + } + else + { + actualsize = GetHandleSize( theText ) ; + strncpy( wxBuffer , *theText , actualsize ) ; + DisposeHandle( theText ) ; + } + } + wxBuffer[actualsize] = 0 ; + if( wxApp::s_macDefaultEncodingIsPC ) + return wxMacMakePCStringFromMac( wxBuffer ) ; + else + return wxString(wxBuffer); +} + +void wxTextCtrl::GetSelection(long* from, long* to) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + + *from = (**teH).selStart; + *to = (**teH).selEnd; + } + else + { + STPTextPaneVars **tpvars; + + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + + TXNGetSelection( (**tpvars).fTXNRec , (TXNOffset*) from , (TXNOffset*) to ) ; + + } +} + +void wxTextCtrl::SetValue(const wxString& st) +{ + wxString value ; + + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( st ) ; + else + value = st ; + if ( m_windowStyle & wxTE_PASSWORD ) + { + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNStartOffset, kTXNEndOffset); + } + WindowRef window = GetMacRootWindow() ; + if ( window ) + { + wxWindow* win = wxFindWinFromMacWindow( window ) ; + if ( win ) + { + wxMacDrawingHelper help( win ) ; + // the mac control manager always assumes to have the origin at 0,0 + SetOrigin( 0 , 0 ) ; + + bool hasTabBehind = false ; + wxWindow* parent = GetParent() ; + while ( parent ) + { + if( parent->MacGetWindowData() ) + { + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + break ; + } + + if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) )) + { + if ( ((wxControl*)parent)->GetMacControl() ) + SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ; + break ; + } + + parent = parent->GetParent() ; + } + + UMADrawControl( m_macControl ) ; + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + } + } +} + +// Clipboard operations +void wxTextCtrl::Copy() +{ + if (CanCopy()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TECopy( teH ) ; + #if TARGET_CARBON + OSStatus err ; + err = ClearCurrentScrap( ); + #else + OSErr err ; + err = ZeroScrap( ); + #endif + TEToScrap() ; + } + } +} + +void wxTextCtrl::Cut() +{ + if (CanCut()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TECut( teH ) ; + #if TARGET_CARBON + OSStatus err ; + err = ClearCurrentScrap( ); + #else + OSErr err ; + err = ZeroScrap( ); + #endif + TEToScrap() ; + // MacInvalidateControl() ; + } + } +} + +void wxTextCtrl::Paste() +{ + if (CanPaste()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEFromScrap() ; + TEPaste( teH ) ; + WindowRef window = GetMacRootWindow() ; + if ( window ) + { + wxWindow* win = wxFindWinFromMacWindow( window ) ; + if ( win ) + { + wxMacDrawingHelper help( win ) ; + // the mac control manager always assumes to have the origin at 0,0 + SetOrigin( 0 , 0 ) ; + + bool hasTabBehind = false ; + wxWindow* parent = GetParent() ; + while ( parent ) + { + if( parent->MacGetWindowData() ) + { + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + break ; + } + + if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) )) + { + if ( ((wxControl*)parent)->GetMacControl() ) + SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ; + break ; + } + + parent = parent->GetParent() ; + } + + UMADrawControl( m_macControl ) ; + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + } + } + } + } +} + +bool wxTextCtrl::CanCopy() const +{ + // Can copy if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to); +} + +bool wxTextCtrl::CanCut() const +{ + // Can cut if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to); +} + +bool wxTextCtrl::CanPaste() const +{ + if (!IsEditable()) + return FALSE; + + long offset ; +#if TARGET_CARBON + OSStatus err = noErr; + ScrapRef scrapRef; + + err = GetCurrentScrap( &scrapRef ); + if ( err != noTypeErr && err != memFullErr ) + { + ScrapFlavorFlags flavorFlags; + Size byteCount; + + if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr) + { + if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr) + { + return TRUE ; + } + } + } + return FALSE; + +#else + if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 ) + { + return TRUE ; + } +#endif + return FALSE ; +} + +void wxTextCtrl::SetEditable(bool editable) +{ + if ( editable ) + UMAActivateControl( m_macControl ) ; + else + UMADeactivateControl( m_macControl ) ; +} + +void wxTextCtrl::SetInsertionPoint(long pos) +{ + SetSelection( pos , pos ) ; +} + +void wxTextCtrl::SetInsertionPointEnd() +{ + long pos = GetLastPosition(); + SetInsertionPoint(pos); +} + +long wxTextCtrl::GetInsertionPoint() const +{ + long begin,end ; + GetSelection( &begin , &end ) ; + return begin ; +} + +long wxTextCtrl::GetLastPosition() const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; + return (**teH).teLength ; + } +} + +void wxTextCtrl::Replace(long from, long to, const wxString& value) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ControlEditTextSelectionRec selection ; + + selection.selStart = from ; + selection.selEnd = to ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TESetSelect( from , to , teH ) ; + TEDelete( teH ) ; + TEInsert( value , value.Length() , teH ) ; + } + Refresh() ; +} + +void wxTextCtrl::Remove(long from, long to) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ControlEditTextSelectionRec selection ; + + selection.selStart = from ; + selection.selEnd = to ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEDelete( teH ) ; + } + Refresh() ; +} + +void wxTextCtrl::SetSelection(long from, long to) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + + selection.selStart = from ; + selection.selEnd = to ; + + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + TESetSelect( selection.selStart , selection.selEnd , teH ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* change the selection */ + TXNSetSelection( (**tpvars).fTXNRec, from, to); + } +} + +bool wxTextCtrl::LoadFile(const wxString& file) +{ + if ( wxTextCtrlBase::LoadFile(file) ) + { + return TRUE; + } + + return FALSE; +} + +void wxTextCtrl::WriteText(const wxString& text) +{ + wxString value ; + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( text ) ; + else + value = text ; + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEInsert( value , value.Length() , teH ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + } + Refresh() ; +} + +void wxTextCtrl::AppendText(const wxString& text) +{ + SetInsertionPointEnd(); + WriteText(text); +} + +void wxTextCtrl::Clear() +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; + } + Refresh() ; +} + +bool wxTextCtrl::IsModified() const +{ + return TRUE; +} + +bool wxTextCtrl::IsEditable() const +{ + return IsEnabled(); +} + +bool wxTextCtrl::AcceptsFocus() const +{ + // we don't want focus if we can't be edited + return IsEditable() && wxControl::AcceptsFocus(); +} + +wxSize wxTextCtrl::DoGetBestSize() const +{ + int wText = 100 ; + + int hText ; + if ( UMAHasAppearance() ) + hText = 13 ; + else + hText = 24 ; + hText += 2 * m_macHorizontalBorder ; +/* + int cx, cy; + wxGetCharSize(GetHWND(), &cx, &cy, &GetFont()); + + int wText = DEFAULT_ITEM_WIDTH; + + int hText = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy); + + return wxSize(wText, hText); +*/ + if ( m_windowStyle & wxTE_MULTILINE ) + { + hText *= wxMin(GetNumberOfLines(), 5); + } + //else: for single line control everything is ok + return wxSize(wText, hText); +} + +// ---------------------------------------------------------------------------- +// Undo/redo +// ---------------------------------------------------------------------------- + +void wxTextCtrl::Undo() +{ + if (CanUndo()) + { + } +} + +void wxTextCtrl::Redo() +{ + if (CanRedo()) + { + } +} + +bool wxTextCtrl::CanUndo() const +{ + return FALSE ; +} + +bool wxTextCtrl::CanRedo() const +{ + return FALSE ; +} + +// Makes 'unmodified' +void wxTextCtrl::DiscardEdits() +{ + // TODO +} + +int wxTextCtrl::GetNumberOfLines() const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + int count = 1; + for (int i = 0; i < actualsize; i++) + { + if (wxBuffer[i] == '\r') count++; + } + + return count; + } +} + +long wxTextCtrl::XYToPosition(long x, long y) const +{ + // TODO + return 0; +} + +bool wxTextCtrl::PositionToXY(long pos, long *x, long *y) const +{ + return FALSE ; +} + +void wxTextCtrl::ShowPosition(long pos) +{ + // TODO +} + +int wxTextCtrl::GetLineLength(long lineNo) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + // Find line first + int count = 0; + for (int i = 0; i < actualsize; i++) + { + if (count == lineNo) + { + // Count chars in line then + count = 0; + for (int j = i; j < actualsize; j++) + { + count++; + if (wxBuffer[j] == '\r') return count; + } + + return count; + } + if (wxBuffer[i] == '\r') count++; + } + } + return 0; +} + +wxString wxTextCtrl::GetLineText(long lineNo) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + // Find line first + int count = 0; + for (int i = 0; i < actualsize; i++) + { + if (count == lineNo) + { + // Add chars in line then + wxString tmp(""); + + for (int j = i; j < actualsize; j++) + { + if (wxBuffer[j] == '\r') + return tmp; + + tmp += wxBuffer[j]; + } + + return tmp; + } + if (wxBuffer[i] == '\r') count++; + } + } + return wxString(""); +} + +/* + * Text item + */ + +void wxTextCtrl::Command(wxCommandEvent & event) +{ + SetValue (event.GetString()); + ProcessCommand (event); +} + +void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) +{ + // By default, load the first file into the text window. + if (event.GetNumberOfFiles() > 0) + { + LoadFile(event.GetFiles()[0]); + } +} + +void wxTextCtrl::OnChar(wxKeyEvent& event) +{ + switch ( event.KeyCode() ) + { + case WXK_RETURN: + if (m_windowStyle & wxPROCESS_ENTER) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); + event.SetEventObject( this ); + if ( GetEventHandler()->ProcessEvent(event) ) + return; + } + if ( !(m_windowStyle & wxTE_MULTILINE) ) + { + wxWindow *parent = GetParent(); + wxPanel *panel = wxDynamicCast(parent, wxPanel); + while ( parent != NULL && panel == NULL ) + { + parent = parent->GetParent() ; + panel = wxDynamicCast(parent, wxPanel); + } + if ( panel && panel->GetDefaultItem() ) + { + wxButton *def = wxDynamicCast(panel->GetDefaultItem(), + wxButton); + if ( def && def->IsEnabled() ) + { + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() ); + event.SetEventObject(def); + def->Command(event); + return ; + } + } + } + //else: multiline controls need Enter for themselves + + break; + + case WXK_TAB: + // always produce navigation event - even if we process TAB + // ourselves the fact that we got here means that the user code + // decided to skip processing of this TAB - probably to let it + // do its default job. + { + wxNavigationKeyEvent eventNav; + eventNav.SetDirection(!event.ShiftDown()); + eventNav.SetWindowChange(event.ControlDown()); + eventNav.SetEventObject(this); + + if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) ) + return; + event.Skip() ; + return ; + } + break; + } + + EventRecord *ev = wxTheApp->MacGetCurrentEvent() ; + short keycode ; + short keychar ; + keychar = short(ev->message & charCodeMask); + keycode = short(ev->message & keyCodeMask) >> 8 ; + UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); + event.SetString( GetValue() ) ; + event.SetEventObject( this ); + GetEventHandler()->ProcessEvent(event); + } + +} + +// ---------------------------------------------------------------------------- +// standard handlers for standard edit menu events +// ---------------------------------------------------------------------------- + +void wxTextCtrl::OnCut(wxCommandEvent& event) +{ + Cut(); +} + +void wxTextCtrl::OnCopy(wxCommandEvent& event) +{ + Copy(); +} + +void wxTextCtrl::OnPaste(wxCommandEvent& event) +{ + Paste(); +} + +void wxTextCtrl::OnUndo(wxCommandEvent& event) +{ + Undo(); +} + +void wxTextCtrl::OnRedo(wxCommandEvent& event) +{ + Redo(); +} + +void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event) +{ + event.Enable( CanCut() ); +} + +void wxTextCtrl::OnUpdateCopy(wxUpdateUIEvent& event) +{ + event.Enable( CanCopy() ); +} + +void wxTextCtrl::OnUpdatePaste(wxUpdateUIEvent& event) +{ + event.Enable( CanPaste() ); +} + +void wxTextCtrl::OnUpdateUndo(wxUpdateUIEvent& event) +{ + event.Enable( CanUndo() ); +} + +void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) +{ + event.Enable( CanRedo() ); +} + +#endif + #endif // wxUSE_TEXTCTRL diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp index 984b5ab8d2..7ee92b143c 100644 --- a/src/mac/carbon/toolbar.cpp +++ b/src/mac/carbon/toolbar.cpp @@ -19,6 +19,7 @@ #include "wx/toolbar.h" #include "wx/notebook.h" #include "wx/tabctrl.h" +#include "wx/bitmap.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) @@ -160,90 +161,6 @@ wxToolBar::~wxToolBar() // is not - otherwise toolbar leaves a hole in the place it used to occupy } -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) ; -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) -{ - CGrafPtr origPort ; - GDHandle origDev ; - - PicHandle pict; // this is the Picture we give back - - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - - unsigned char *maskimage = NULL ; - Rect portRect ; - GetPortBounds( wp , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; - - LockPixels( GetGWorldPixMap( wp ) ) ; - GetGWorld( &origPort , &origDev ) ; - - if ( mask ) - { - - maskimage = (unsigned char*) malloc( width * height ) ; - SetGWorld( mask , NULL ) ; - LockPixels( GetGWorldPixMap( mask ) ) ; - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - maskimage[y*width + x] = ( col.red == 0 ) ; // for monochrome masks - } - } - UnlockPixels( GetGWorldPixMap( mask ) ) ; - } - - SetGWorld( wp , NULL ) ; - - pict = OpenPicture(&portRect); // open a picture, this disables drawing - if(!pict) - return NULL; - - RGBBackColor( &gray ) ; - RGBForeColor( &black ) ; - EraseRect(&portRect) ; - RGBBackColor( &white ) ; - - if ( maskimage ) - { - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( maskimage[y*width + x] ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - } - } - free( maskimage ) ; - maskimage = NULL ; - } - else - { - CopyBits(GetPortBitMapForCopyBits(wp), // src PixMap - we copy image over itself - - GetPortBitMapForCopyBits(wp), // dst PixMap - no drawing occurs - - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( wp ) ) ; - SetGWorld( origPort , origDev ) ; - return pict; // return our groovy pict handle -} - bool wxToolBar::Realize() { if (m_tools.Number() == 0) @@ -284,20 +201,27 @@ bool wxToolBar::Realize() toolrect.right = toolrect.left + toolSize.x ; toolrect.bottom = toolrect.top + toolSize.y ; - PicHandle icon = NULL ; + ControlButtonContentInfo info ; if ( bmap ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) - icon = bmap->m_hPict ; + { + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; + } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { if ( tool->GetBitmap1().GetMask() ) { - icon = MakePict( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - icon = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } } @@ -308,20 +232,16 @@ bool wxToolBar::Realize() if ( tool->CanBeToggled() ) behaviour += kControlBehaviorToggles ; - if ( icon ) + if ( info.u.cIconHandle ) // since it is a handle we can use one of them { - m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , - behaviour + kControlContentPictHandle , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; - ControlButtonContentInfo info ; + m_macToolHandle = ::NewControl( window , &toolrect , "\p" , false , 0 , + behaviour + info.contentType , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; - info.contentType = kControlContentPictHandle ; - info.u.picture = icon ; - - UMASetControlData( m_macToolHandle , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macToolHandle , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; } else { - m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , + m_macToolHandle = ::NewControl( window , &toolrect , "\p" , false , 0 , behaviour , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; } UMAShowControl( m_macToolHandle ) ; @@ -335,10 +255,16 @@ bool wxToolBar::Realize() { ::SetControlValue( m_macToolHandle , 1 ) ; } - UMASetControlFontStyle( m_macToolHandle , &controlstyle ) ; + else + { + ::SetControlValue( m_macToolHandle , 0 ) ; + } + /* + ::SetControlFontStyle( m_macToolHandle , &controlstyle ) ; + */ ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; wxASSERT_MSG( container != NULL , "No valid mac container control" ) ; - UMAEmbedControl( m_macToolHandle , container ) ; + ::EmbedControl( m_macToolHandle , container ) ; x += (int)toolSize.x; noButtons ++; @@ -458,7 +384,7 @@ void wxToolBar::MacSuperChangedPosition() { WindowRef rootwindow = GetMacRootWindow() ; wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; wxMacDrawingHelper focus( wxrootwindow ) ; while (node) { @@ -515,7 +441,7 @@ void wxToolBar::MacSuperChangedPosition() } else { - UMASetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; } } @@ -647,7 +573,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -675,7 +601,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event) } } } - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } @@ -718,13 +644,13 @@ void wxToolBar::OnMouse( wxMouseEvent &event ) controlpart = FindControl( localwhere , window , &control ) ; { - if ( control && UMAIsControlActive( control ) ) + if ( control && ::IsControlActive( control ) ) { { if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() ) - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; else - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) && (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice diff --git a/src/mac/carbon/tooltip.cpp b/src/mac/carbon/tooltip.cpp index 6787a92315..695582839c 100644 --- a/src/mac/carbon/tooltip.cpp +++ b/src/mac/carbon/tooltip.cpp @@ -271,12 +271,12 @@ void wxMacToolTip::Draw() NULL); ClosePicture(); - RGBColor yellow = { 0xFFFF , 0xFFFF , (153<<8)+153 } ; - RGBBackColor( &yellow ) ; - EraseRect( &m_rect ) ; + PenNormal() ; + SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ; + BackColor( yellowColor ) ; + ForeColor(magentaColor ) ; +// EraseRect( &m_rect ) ; FrameRect( &m_rect ) ; - BackColor( whiteColor ) ; - ForeColor(blackColor ) ; ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder); i = 0 ; diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 2c70ef47b7..60b61374a0 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -1,19 +1,16 @@ #include "wx/defs.h" #include "wx/dc.h" #include "wx/mac/uma.h" -#include "wx/mac/aga.h" #ifndef __DARWIN__ #include #endif -// init - -#if !TARGET_CARBON -#define GetControlOwner( control ) (**control).contrlOwner -// since we always call this in the right context we don't have to set and reset the port -#define InvalWindowRgn( window , rgn ) InvalRgn( rgn ) -#endif +// since we have decided that we only support 8.6 upwards we are +// checking for these minimum requirements in the startup code of +// the application so all wxWindows code can safely assume that appearance 1.1 +// windows manager, control manager, navigation services etc. are +// present static bool sUMAHasAppearance = false ; static long sUMAAppearanceVersion = 0 ; @@ -26,14 +23,13 @@ static long sUMAWindowManagerAttr = 0 ; bool UMAHasWindowManager() { return sUMAHasWindowManager ; } long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; } + void UMACleanupToolbox() { -#if UMA_USE_APPEARANCE if ( sUMAHasAppearance ) { UnregisterAppearanceClient() ; } -#endif if ( NavServicesAvailable() ) { NavUnload() ; @@ -59,7 +55,6 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) InitCursor(); #endif -#if UMA_USE_APPEARANCE long theAppearance ; if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) { @@ -74,15 +69,10 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) sUMAAppearanceVersion = 0x0100 ; } } -#endif // UMA_USE_APPEARANCE -#if UMA_USE_8_6 -#if UMA_USE_WINDOWMGR if ( Gestalt( gestaltWindowMgrAttr, &sUMAWindowManagerAttr ) == noErr ) { sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ; } -#endif // UMA_USE_WINDOWMGR -#endif #ifndef __DARWIN__ #if TARGET_CARBON @@ -156,38 +146,17 @@ void UMASetMenuTitle( MenuRef menu , StringPtr title ) UInt32 UMAMenuEvent( EventRecord *inEvent ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { return MenuEvent( inEvent ) ; - } - else -#endif - { - if ( inEvent->what == keyDown && inEvent->modifiers & cmdKey) - { - return MenuKey( inEvent->message & charCodeMask ) ; - } - return NULL ; - } } void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) { -#if UMA_USE_8_6 || TARGET_CARBON EnableMenuItem( inMenu , inItem ) ; -#else - EnableItem( inMenu , inItem ) ; -#endif } void UMADisableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) { -#if UMA_USE_8_6 || TARGET_CARBON DisableMenuItem( inMenu , inItem ) ; -#else - DisableItem( inMenu , inItem ) ; -#endif } void UMAAppendSubMenuItem( MenuRef menu , StringPtr l , SInt16 id ) @@ -254,37 +223,6 @@ void UMAInsertMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SInt16 MacInsertMenuItem( menu , label , item) ; } -void UMADrawMenuBar() -{ - DrawMenuBar() ; -} - - -void UMASetMenuItemText( MenuRef menu , MenuItemIndex item , StringPtr label ) -{ - ::SetMenuItemText( menu , item , label ) ; -} - -MenuRef UMANewMenu( SInt16 menuid , StringPtr label ) -{ - return ::NewMenu(menuid, label); -} - -void UMADisposeMenu( MenuRef menu ) -{ - DisposeMenu( menu ) ; -} -void UMADeleteMenu( SInt16 menuId ) -{ - ::DeleteMenu( menuId ) ; -} - -void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId ) -{ - ::InsertMenu( insertMenu , afterId ) ; -} - - // quickdraw int gPrOpenCounter = 0 ; @@ -357,6 +295,7 @@ OSStatus UMAPrClose() #if !TARGET_CARBON +pascal QDGlobalsPtr GetQDGlobalsPtr (void) ; pascal QDGlobalsPtr GetQDGlobalsPtr (void) { return QDGlobalsPtr (* (Ptr*) LMGetCurrentA5 ( ) - 0xCA); @@ -375,11 +314,12 @@ void UMAShowWatchCursor() else { #if TARGET_CARBON - Cursor preservedArrow; - GetQDGlobalsArrow (&preservedArrow); - SetQDGlobalsArrow (*watchFob); - InitCursor ( ); - SetQDGlobalsArrow (&preservedArrow); +// Cursor preservedArrow; +// GetQDGlobalsArrow (&preservedArrow); +// SetQDGlobalsArrow (*watchFob); +// InitCursor ( ); +// SetQDGlobalsArrow (&preservedArrow); + SetCursor (*watchFob); #else SetCursor (*watchFob); #endif @@ -437,48 +377,11 @@ void UMAGetWTitleC( WindowRef inWindowRef , char *title ) #endif } -void UMAShowWindow( WindowRef inWindowRef ) -{ - ShowWindow( inWindowRef ) ; - -} - -void UMAHideWindow( WindowRef inWindowRef ) -{ - HideWindow( inWindowRef) ; -} - -void UMASelectWindow( WindowRef inWindowRef ) -{ - SelectWindow( inWindowRef ) ; -} - -void UMABringToFront( WindowRef inWindowRef ) -{ - BringToFront( inWindowRef ) ; -} - -void UMASendBehind( WindowRef inWindowRef , WindowRef behindWindow ) -{ - SendBehind( inWindowRef , behindWindow ) ; -} - -void UMACloseWindow(WindowRef inWindowRef) -{ -#if TARGET_CARBON -#else - CloseWindow( inWindowRef ) ; -#endif -} - // appearance additions void UMAActivateControl( ControlHandle inControl ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - if ( !UMAIsControlActive( inControl ) ) + if ( !IsControlActive( inControl ) ) { bool visible = IsControlVisible( inControl ) ; if ( visible ) @@ -490,376 +393,77 @@ void UMAActivateControl( ControlHandle inControl ) InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; } } - } - else -#endif -#if !TARGET_CARBON - { - AGAActivateControl( inControl ) ; - } -#else - { - } -#endif } void UMADrawControl( ControlHandle inControl ) { WindowRef theWindow = GetControlOwner(inControl) ; RgnHandle updateRgn = NewRgn() ; -#if TARGET_CARBON - GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ; -#else GetWindowUpdateRgn( theWindow , updateRgn ) ; -#endif Point zero = { 0 , 0 } ; LocalToGlobal( &zero ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::DrawControlInCurrentPort( inControl ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGADrawControl( inControl ) ; - } -#else - { - } -#endif -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332) - InvalWindowRgn( theWindow, updateRgn) ; -#else - InvalRgn( updateRgn ) ; -#endif + ::DrawControlInCurrentPort( inControl ) ; + InvalWindowRgn( theWindow, updateRgn) ; DisposeRgn( updateRgn ) ; } void UMAMoveControl( ControlHandle inControl , short x , short y ) { - if ( UMAHasAppearance() ) - { - bool visible = UMAIsControlVisible( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , false , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - ::MoveControl( inControl , x , y ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } + bool visible = IsControlVisible( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , false , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } + ::MoveControl( inControl , x , y ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } void UMASizeControl( ControlHandle inControl , short x , short y ) { - if ( UMAHasAppearance() ) - { - bool visible = UMAIsControlVisible( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , false , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - ::SizeControl( inControl , x , y ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } + bool visible = IsControlVisible( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , false , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } + ::SizeControl( inControl , x , y ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } void UMADeactivateControl( ControlHandle inControl ) { - if ( UMAHasAppearance() ) - { - if ( UMAIsControlActive( inControl ) ) - { - bool visible = IsControlVisible( inControl ) ; - if ( visible ) - SetControlVisibility( inControl , false , false ) ; - ::DeactivateControl( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } - } -} - -void UMASetThemeWindowBackground (WindowRef inWindow, - ThemeBrush inBrush, - Boolean inUpdate) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::SetThemeWindowBackground( inWindow ,inBrush , inUpdate ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGASetThemeWindowBackground( inWindow , inBrush , inUpdate ) ; - } -#else - { - } -#endif -} - -void UMAApplyThemeBackground (ThemeBackgroundKind inKind, - const Rect * bounds, - ThemeDrawState inState, - SInt16 inDepth, - Boolean inColorDev) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - /* - if ( sUMAAppearanceVersion >= 0x0110 ) - ::ApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ; - */ - } - else -#endif -#if !TARGET_CARBON + if ( IsControlActive( inControl ) ) { - AGAApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ; - } -#else - { - } -#endif -} - -ControlHandle UMANewControl(WindowPtr owningWindow, - const Rect * boundsRect, - ConstStr255Param controlTitle, - Boolean initiallyVisible, - SInt16 initialValue, - SInt16 minimumValue, - SInt16 maximumValue, - SInt16 procID, - SInt32 controlReference) -{ - ControlHandle theControl = NULL ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - theControl = NewControl( owningWindow , boundsRect , controlTitle , initiallyVisible , - initialValue , minimumValue , maximumValue , procID , controlReference ) ; - } - else -#endif -#if !TARGET_CARBON - { - theControl = AGANewControl( owningWindow , boundsRect , controlTitle , initiallyVisible , - initialValue , minimumValue , maximumValue , procID , controlReference ) ; - } -#else - { - } -#endif - return theControl ; -} - -void UMADisposeControl (ControlHandle theControl) -{ - if ( UMAHasAppearance() ) - { - ::DisposeControl( theControl ) ; - } - else - { - ::DisposeControl( theControl ) ; + bool visible = IsControlVisible( inControl ) ; + if ( visible ) + SetControlVisibility( inControl , false , false ) ; + ::DeactivateControl( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } } - -void UMAHiliteControl (ControlHandle inControl, - ControlPartCode hiliteState) -{ - if ( UMAHasAppearance() ) - { - ::HiliteControl( inControl , hiliteState ) ; - } - else - { - ::HiliteControl( inControl , hiliteState ) ; - } -} - // shows the control and adds the region to the update region void UMAShowControl (ControlHandle inControl) { - if ( UMAHasAppearance() ) - { SetControlVisibility( inControl , true , false ) ; Rect ctrlBounds ; InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } } -// Hides the control and adds the region to the update region -void UMAHideControl (ControlHandle inControl) -{ - if ( UMAHasAppearance() ) - { - ::HideControl( inControl ) ; - } - else - { - ::HideControl( inControl ) ; - } -} - - -void UMASetControlVisibility (ControlHandle inControl, - Boolean inIsVisible, - Boolean inDoDraw) -{ - if ( UMAHasAppearance() ) - { -#if UMA_USE_APPEARANCE - ::SetControlVisibility( inControl , inIsVisible, inDoDraw ) ; -#endif - } -} - - - -bool UMAIsControlActive (ControlHandle inControl) -{ -#if TARGET_CARBON - return IsControlActive( inControl ) ; -#else -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return IsControlActive( inControl ) ; - } - else -#endif - return (**inControl).contrlHilite == 0 ; -#endif -} - - -bool UMAIsControlVisible (ControlHandle inControl) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return IsControlVisible( inControl ) ; - } - else -#endif - { -#if !TARGET_CARBON - return (**inControl).contrlVis == 255 ; -#endif - } - return true ; -} - -OSErr UMAGetBestControlRect (ControlHandle inControl, - Rect * outRect, - SInt16 * outBaseLineOffset) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetBestControlRect( inControl , outRect , outBaseLineOffset ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetBestControlRect( inControl , outRect , outBaseLineOffset ) ; - } -#else - { - return noErr ; - } -#endif -} - - -OSErr UMASetControlFontStyle (ControlHandle inControl, - const ControlFontStyleRec * inStyle) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return ::SetControlFontStyle( inControl , inStyle ) ; - } - else -#endif -#if !TARGET_CARBON - return AGASetControlFontStyle( inControl , inStyle ) ; -#else - { - return noErr ; - } -#endif -} - - - -// control hierarchy - -OSErr UMACreateRootControl (WindowPtr inWindow, - ControlHandle * outControl) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return CreateRootControl( inWindow , outControl ) ; - } - else -#endif -#if !TARGET_CARBON - return AGACreateRootControl( inWindow , outControl ) ; -#else - { - return noErr ; - } -#endif -} - - - -OSErr UMAEmbedControl (ControlHandle inControl, - ControlHandle inContainer) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return EmbedControl( inControl , inContainer ) ; - } - else -#endif -#if !TARGET_CARBON - return AGAEmbedControl( inControl , inContainer ) ; ; -#else - { - return noErr ; - } -#endif -} - - - // keyboard focus OSErr UMASetKeyboardFocus (WindowPtr inWindow, ControlHandle inControl, @@ -868,25 +472,11 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, OSErr err = noErr; GrafPtr port ; GetPort( &port ) ; -#if TARGET_CARBON - SetPort( GetWindowPort( inWindow ) ) ; -#else - SetPort( inWindow ) ; -#endif + + SetPortWindowPort( inWindow ) ; + SetOrigin( 0 , 0 ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - err = SetKeyboardFocus( inWindow , inControl , inPart ) ; - } - else -#endif -#if !TARGET_CARBON - err = AGASetKeyboardFocus( inWindow , inControl , inPart ) ; -#else - { - } -#endif + err = SetKeyboardFocus( inWindow , inControl , inPart ) ; SetPort( port ) ; return err ; } @@ -895,520 +485,26 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, // events - -ControlPartCode UMAHandleControlClick (ControlHandle inControl, - Point inWhere, - SInt16 inModifiers, - ControlActionUPP inAction) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return HandleControlClick( inControl , inWhere , inModifiers , inAction ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAHandleControlClick( inControl , inWhere , inModifiers , inAction ) ; - } -#else - { - return noErr ; - } -#endif -} - - -SInt16 UMAHandleControlKey (ControlHandle inControl, - SInt16 inKeyCode, - SInt16 inCharCode, - SInt16 inModifiers) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return HandleControlKey( inControl , inKeyCode , inCharCode , inModifiers ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAHandleControlKey(inControl , inKeyCode , inCharCode , inModifiers ) ; - } -#else - { - return noErr ; - } -#endif -} - - - -void UMAIdleControls (WindowPtr inWindow) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - IdleControls( inWindow ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGAIdleControls( inWindow ) ; - } -#else - { - } -#endif -} - void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) { - RgnHandle updateRgn = NewRgn() ; -#if TARGET_CARBON - GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) ; -#else - GetWindowUpdateRgn( inWindow , updateRgn ) ; -#endif + RgnHandle updateRgn = NewRgn() ; + GetWindowUpdateRgn( inWindow , updateRgn ) ; + Point zero = { 0 , 0 } ; LocalToGlobal( &zero ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - UpdateControls( inWindow , inRgn ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGAUpdateControls( inWindow , inRgn ) ; - } -#else - { - } -#endif -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332) - InvalWindowRgn( inWindow, updateRgn) ; -#else - InvalRgn( updateRgn ) ; -#endif - DisposeRgn( updateRgn ) ; - -} - -OSErr UMAGetRootControl( WindowPtr inWindow , ControlHandle *outControl ) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetRootControl( inWindow , outControl ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetRootControl( inWindow , outControl ) ; - } -#else - { - return noErr ; - } -#endif -} - - -// handling control data - -OSErr UMASetControlData (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size inSize, - Ptr inData) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return SetControlData( inControl , inPart , inTagName , inSize , inData ) ; - } - else -#endif -#if !TARGET_CARBON - return AGASetControlData( inControl , inPart , inTagName , inSize , inData ) ; -#else - { - return noErr ; - } -#endif -} - - - -OSErr UMAGetControlData (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size inBufferSize, - Ptr outBuffer, - Size * outActualSize) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return ::GetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ; - } -#else - { - return noErr ; - } -#endif -} - - -OSErr UMAGetControlDataSize (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size * outMaxSize) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ; - } -#else - { - return noErr ; - } -#endif -} - - - - - -// system 8.0 changes -short UMAFindWindow( Point inPoint , WindowRef *outWindow ) -{ - // todo add the additional area codes - return FindWindow( inPoint , outWindow ) ; -} - -OSStatus UMAGetWindowFeatures( WindowRef inWindowRef , UInt32 *outFeatures ) -{ -#if UMA_USE_WINDOWMGR - return GetWindowFeatures( inWindowRef , outFeatures ) ; -#else - return 0 ; -#endif -} - -OSStatus UMAGetWindowRegion( WindowRef inWindowRef , WindowRegionCode inRegionCode , RgnHandle ioWinRgn ) -{ -#if UMA_USE_WINDOWMGR - return GetWindowRegion( inWindowRef , inRegionCode , ioWinRgn ) ; -#else - return 0 ; -#endif -} - -void UMADrawGrowIcon( WindowRef inWindowRef ) -{ - DrawGrowIcon( inWindowRef ) ; -} - -OSStatus UMACollapseWindow( WindowRef inWindowRef , Boolean inCollapseIt ) -{ - return CollapseWindow( inWindowRef , inCollapseIt ) ; -} - -OSStatus UMACollapseAllWindows( Boolean inCollapseEm ) -{ - return CollapseAllWindows( inCollapseEm ) ; -} - -Boolean UMAIsWindowCollapsed( WindowRef inWindowRef ) -{ - return IsWindowCollapsed( inWindowRef ) ; -} - -Boolean UMAIsWindowCollapsable( WindowRef inWindowRef ) -{ - return IsWindowCollapsable( inWindowRef ) ; -} - -// system 8.5 changes -OSStatus UMACreateNewWindow( WindowClass windowClass , WindowAttributes attributes , const Rect *bounds, WindowRef *outWindow ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return CreateNewWindow( windowClass , attributes, bounds, outWindow ) ; - } - else -#endif - { - short procID ; - if ( UMAHasAppearance() ) - { - switch( windowClass ) - { - case kMovableModalWindowClass : - procID = kWindowMovableModalDialogProc; - break ; - case kModalWindowClass : - procID = kWindowShadowDialogProc; - break ; - case kFloatingWindowClass : - if ( attributes & kWindowSideTitlebarAttribute ) - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFloatSideFullZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFloatSideFullZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowFloatSideGrowProc; - } - else - { - procID = kWindowFloatSideProc; - } - } - else - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFloatFullZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFloatFullZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowFloatGrowProc; - } - else - { - procID = kWindowFloatProc; - } - } - break ; - case kDocumentWindowClass : - default : - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFullZoomGrowDocumentProc; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFullZoomDocumentProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowGrowDocumentProc; - } - else - { - procID = kWindowDocumentProc; - } - break ; - } - } - else - { - switch( windowClass ) - { - case kMovableModalWindowClass : - procID = movableDBoxProc; - break ; - case kModalWindowClass : - procID = altDBoxProc; - break ; - case kFloatingWindowClass : - if ( attributes & kWindowSideTitlebarAttribute ) - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = floatSideZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = floatSideZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = floatSideGrowProc; - } - else - { - procID = floatSideProc; - } - } - else - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = floatZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = floatZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = floatGrowProc; - } - else - { - procID = floatProc; - } - } - break ; - case kDocumentWindowClass : - default : - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = zoomDocProc; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = zoomNoGrow; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = documentProc; - } - else - { - procID = noGrowDocProc; - } - break ; - break ; - } - } - *outWindow = NewCWindow(nil, bounds, "\p", false, procID, (WindowRef) -1 /*behind*/, - attributes & kWindowCloseBoxAttribute , (long)NULL); - return noErr ; - } -} - -OSStatus UMAGetWindowClass( WindowRef inWindowRef , WindowClass *outWindowClass ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return GetWindowClass( inWindowRef , outWindowClass ) ; - } - else -#endif - return kDocumentWindowClass ; -} - -OSStatus UMAGetWindowAttributes( WindowRef inWindowRef , WindowAttributes *outAttributes ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return GetWindowAttributes( inWindowRef , outAttributes ) ; - } -#endif - return kWindowNoAttributes ; -} - -void UMAShowFloatingWindows() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - ShowFloatingWindows() ; - } -#endif -} - -void UMAHideFloatingWindows() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - HideFloatingWindows() ; - } -#endif -} - -Boolean UMAAreFloatingWindowsVisible() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return AreFloatingWindowsVisible() ; - } -#endif - return false ; -} - -WindowRef UMAFrontNonFloatingWindow() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return FrontNonFloatingWindow() ; - } - else -#endif - { - return FrontWindow() ; - } -} - -WindowRef UMAFrontWindow() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return FrontWindow() ; - } - else -#endif - { - return FrontWindow() ; - } -} + UpdateControls( inWindow , inRgn ) ; + InvalWindowRgn( inWindow, updateRgn) ; + DisposeRgn( updateRgn ) ; -WindowRef UMAGetActiveNonFloatingWindow() -{ - return NULL ; } bool UMAIsWindowFloating( WindowRef inWindow ) { WindowClass cl ; - UMAGetWindowClass( inWindow , &cl ) ; + GetWindowClass( inWindow , &cl ) ; return cl == kFloatingWindowClass ; } @@ -1416,7 +512,7 @@ bool UMAIsWindowModal( WindowRef inWindow ) { WindowClass cl ; - UMAGetWindowClass( inWindow , &cl ) ; + GetWindowClass( inWindow , &cl ) ; return cl < kFloatingWindowClass ; } @@ -1430,15 +526,11 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) // if ( inActivate != isHightlited ) GrafPtr port ; GetPort( &port ) ; -#if TARGET_CARBON - SetPort( GetWindowPort( inWindowRef ) ) ; -#else - SetPort( inWindowRef ) ; -#endif + SetPortWindowPort( inWindowRef ) ; SetOrigin( 0 , 0 ) ; HiliteWindow( inWindowRef , inActivate ) ; ControlHandle control = NULL ; - UMAGetRootControl( inWindowRef , & control ) ; + ::GetRootControl( inWindowRef , & control ) ; if ( control ) { if ( inActivate ) @@ -1451,20 +543,6 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) } OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::DrawThemePlacard( inRect , inState ) ; - } - else -#endif -#if !TARGET_CARBON - { - } -#else - { - } -#endif - return noErr ; + return ::DrawThemePlacard( inRect , inState ) ; } diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 40f2f2a960..41c65765be 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -774,8 +774,8 @@ bool wxWindowMac::Show(bool show) { if (show) { - UMAShowWindow( m_macWindowData->m_macWindow ) ; - UMASelectWindow( m_macWindowData->m_macWindow ) ; + ::ShowWindow( m_macWindowData->m_macWindow ) ; + ::SelectWindow( m_macWindowData->m_macWindow ) ; // no need to generate events here, they will get them triggered by macos // actually they should be , but apparently they are not wxSize size(m_width, m_height); @@ -785,7 +785,7 @@ bool wxWindowMac::Show(bool show) } else { - UMAHideWindow( m_macWindowData->m_macWindow ) ; + ::HideWindow( m_macWindowData->m_macWindow ) ; } } MacSuperShown( show ) ; @@ -1179,7 +1179,7 @@ void wxWindowMac::MacCreateRealWindow( const wxString& title, attr |= kWindowCloseBoxAttribute ; } - UMACreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindowData->m_macWindow ) ; + ::CreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindowData->m_macWindow ) ; wxAssociateWinWithMacWindow( m_macWindowData->m_macWindow , this ) ; wxString label ; if( wxApp::s_macDefaultEncodingIsPC ) @@ -1187,7 +1187,7 @@ void wxWindowMac::MacCreateRealWindow( const wxString& title, else label = title ; UMASetWTitleC( m_macWindowData->m_macWindow , label ) ; - UMACreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ; + ::CreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ; m_macWindowData->m_macFocus = NULL ; m_macWindowData->m_macHasReceivedFirstActivate = true ; @@ -1496,7 +1496,7 @@ void wxWindowMac::Clear() int w ,h ; wxPoint origin = GetClientAreaOrigin() ; GetClientSize( &w , &h ) ; - UMASetThemeWindowBackground( m_macWindowData->m_macWindow , m_macWindowData->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( m_macWindowData->m_macWindow , m_macWindowData->m_macWindowBackgroundTheme , false ) ; Rect r = { origin.y , origin.x, origin.y+h , origin.x+w } ; EraseRect( &r ) ; } @@ -1543,7 +1543,7 @@ void wxWindowMac::Raise() { if ( m_macWindowData ) { - UMABringToFront( m_macWindowData->m_macWindow ) ; + ::BringToFront( m_macWindowData->m_macWindow ) ; } } @@ -1552,7 +1552,7 @@ void wxWindowMac::Lower() { if ( m_macWindowData ) { - UMASendBehind( m_macWindowData->m_macWindow , NULL ) ; + ::SendBehind( m_macWindowData->m_macWindow , NULL ) ; } } @@ -1848,7 +1848,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) eraseBackground = true ; if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) ) { - UMASetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ; } else if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) ) { @@ -1880,7 +1880,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) { Rect box ; GetRegionBounds( updatergn , &box) ; - UMAApplyThemeBackground(kThemeBackgroundTabPane, &box , kThemeStateActive,8,true); + ::ApplyThemeBackground(kThemeBackgroundTabPane, &box , kThemeStateActive,8,true); break ; } } @@ -1894,7 +1894,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) if ( !parent ) { // if there is nothing special -> use default - UMASetThemeWindowBackground( window , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( window , kThemeBrushDialogBackgroundActive , false ) ; } } else @@ -2233,7 +2233,7 @@ bool wxWindowMac::MacSetPortDrawingParams( const Point & localOrigin, const Rect Pattern whiteColor ; ::BackPat( GetQDGlobalsWhite( &whiteColor) ) ; - ::UMASetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ; return true; } diff --git a/src/mac/checkbox.cpp b/src/mac/checkbox.cpp index 5ae3a1bbbd..d83a2fed05 100644 --- a/src/mac/checkbox.cpp +++ b/src/mac/checkbox.cpp @@ -36,7 +36,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlCheckBoxProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/choice.cpp b/src/mac/choice.cpp index 08f5a8fd75..9f05a58372 100644 --- a/src/mac/choice.cpp +++ b/src/mac/choice.cpp @@ -45,7 +45,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0 , kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; m_macPopUpMenuHandle = NewUniqueMenu() ; diff --git a/src/mac/combobox.cpp b/src/mac/combobox.cpp index 886177adac..5dabd2dd49 100644 --- a/src/mac/combobox.cpp +++ b/src/mac/combobox.cpp @@ -47,7 +47,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , -12345 , 0, kControlPopupButtonProc , (long) this ) ; m_macPopUpMenuHandle = NewUniqueMenu() ; diff --git a/src/mac/control.cpp b/src/mac/control.cpp index 4d4e3ffc32..55aca27152 100644 --- a/src/mac/control.cpp +++ b/src/mac/control.cpp @@ -111,7 +111,7 @@ wxControl::~wxControl() } if ( m_macControl ) { - UMADisposeControl( m_macControl ) ; + ::DisposeControl( m_macControl ) ; m_macControl = NULL ; } } @@ -146,7 +146,7 @@ wxSize wxControl::DoGetBestSize() const Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; int bestWidth, bestHeight ; - UMAGetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; + ::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) { @@ -297,7 +297,7 @@ void wxControl::MacPostControlCreate() controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallBoldSystemFont ; - ::UMASetControlFontStyle( m_macControl , &controlstyle ) ; + ::SetControlFontStyle( m_macControl , &controlstyle ) ; } else { @@ -305,11 +305,11 @@ void wxControl::MacPostControlCreate() controlstyle.flags = kControlUseFontMask ; controlstyle.font = kControlFontSmallSystemFont ; - ::UMASetControlFontStyle( m_macControl , &controlstyle ) ; + ::SetControlFontStyle( m_macControl , &controlstyle ) ; } ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ; - ::UMAEmbedControl( m_macControl , container ) ; + ::EmbedControl( m_macControl , container ) ; m_macControlIsShown = true ; wxAssociateControlWithMacControl( m_macControl , this ) ; @@ -342,7 +342,7 @@ void wxControl::MacAdjustControlRect() Rect bestsize = { 0 , 0 , 0 , 0 } ; short baselineoffset ; - UMAGetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; + ::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; if ( EmptyRect( &bestsize ) ) { @@ -415,7 +415,7 @@ void wxControl::MacSuperChangedPosition() WindowRef rootwindow = GetMacRootWindow() ; wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; wxMacDrawingHelper focus( wxrootwindow ) ; if ( mac_x != former_mac_x || mac_y != former_mac_y ) @@ -435,7 +435,7 @@ void wxControl::MacSuperChangedPosition() } else { - UMASetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; } } @@ -484,7 +484,7 @@ void wxControl::MacSuperShown( bool show ) { if ( m_macControlIsShown ) { - ::UMAHideControl( m_macControl ) ; + ::HideControl( m_macControl ) ; m_macControlIsShown = false ; } } @@ -619,7 +619,7 @@ void wxControl::DoSetSize(int x, int y, wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; wxMacDrawingHelper focus( wxrootwindow ); - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; // Update window at old and new positions SetRect(&newbounds, m_x, m_y, m_x + m_width, m_y + m_height); InvalWindowRect( rootwindow , &oldbounds ); @@ -629,7 +629,7 @@ void wxControl::DoSetSize(int x, int y, if ( !wxrootwindow->IsKindOf( CLASSINFO( wxDialog ) ) ) { - UMASetThemeWindowBackground( rootwindow, kThemeBrushDocumentWindowBackground, false ); + ::SetThemeWindowBackground( rootwindow, kThemeBrushDocumentWindowBackground, false ); } } } @@ -645,7 +645,7 @@ bool wxControl::Show(bool show) { if ( m_macControlIsShown ) { - ::UMAHideControl( m_macControl ) ; + ::HideControl( m_macControl ) ; m_macControlIsShown = false ; } } @@ -707,7 +707,7 @@ void wxControl::MacRedrawControl() { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -722,7 +722,7 @@ void wxControl::MacRedrawControl() } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -747,7 +747,7 @@ void wxControl::OnPaint(wxPaintEvent& event) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -762,7 +762,7 @@ void wxControl::OnPaint(wxPaintEvent& event) } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -791,7 +791,7 @@ void wxControl::OnKeyDown( wxKeyEvent &event ) keychar = short(ev->message & charCodeMask); keycode = short(ev->message & keyCodeMask) >> 8 ; - UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + ::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; } void wxControl::OnMouseEvent( wxMouseEvent &event ) @@ -848,13 +848,13 @@ void wxControl::OnMouseEvent( wxMouseEvent &event ) SetFocus() ; } */ - if ( control && UMAIsControlActive( control ) ) + if ( control && ::IsControlActive( control ) ) { { if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() ) - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; else - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; if ( control && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) && (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice diff --git a/src/mac/filedlg.cpp b/src/mac/filedlg.cpp index f9502a3883..6ca66d390f 100644 --- a/src/mac/filedlg.cpp +++ b/src/mac/filedlg.cpp @@ -93,7 +93,7 @@ NavEventProc( } } -char * gfilters[] = +const char * gfilters[] = { "*.TXT" , "*.TIF" , diff --git a/src/mac/gauge.cpp b/src/mac/gauge.cpp index 37155cafb0..9076466a4a 100644 --- a/src/mac/gauge.cpp +++ b/src/mac/gauge.cpp @@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , range, kControlProgressBarProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/ldef/extldef6.mcp b/src/mac/ldef/extldef6.mcp index a98556bed0642ed083b587cb7615dcbfe5457a19..bac8c6a5c441d548181c2ee40cc0f16c23fea4ff 100644 GIT binary patch delta 14396 zcmeHO33OCNx~}RiAsd|p2#EASi-pqKE=w1jgmzGJuYv!)V_3SKUt1A@MmL^*HBI=hVGb zU;VZHTUFPsKKEkCrz^q|3rb2nj4>l)JcSubjxj^&H;lzx0CxEC#Eu603rLk9zKB?g zI1kZ_co6X=#4^Nk#QBKTh)*IeK-`XaBVvsxG-&oiNZp5c7;!D4hPV##WyB+h>k&5~ zZbW7#77W)h_8!eqh{ZS)JVkV5l12BB92Dfk9Ytv4{;1)KH@8gk0Ck`|AN>T z@m2qO#yH;fD3Yfciw0R6BpK!7DWSp}j~ah>(-!|MbG#)w3J`e1BC5Xn$7kq#^R78O z&LI90*`K!-rz7K9nPr_=W?3B-7f;lTwPOm*W?bfTm{FuhrST9kJ?d^A<^LqAJ2x9p zWE9imx>Pzs#R+G)wkMOviQmShisYm=CMwjn4(FZyuUJ=@{8QUmxH$h#v~cA9b9Jp* z^qS=MAB`Jp7V#AcA|vTKF+1r|v+PW4Y28(`&fz98tV7#S8gyOV>EnKT?qx1+u?3LJ z6BV+ca{#&fb0A-HV+i9S+MDUG?H0>ZSd8t~R(Q@uh>P9ZtQ~+!+|w<}KY3Am zuHBi*9jj}j{Lv}g>T@`<20BJL7dW$BGv*f+xr>XKgdAD6tdc_4a96P{&si|5SAIRL zvbNFg;yEsFQ*?sUTjVNd{WEf#wkn}3TJ_i*Iy_#NNftdA@1vFWt>)GQ_;(H+XQ~<>#=qiX%dU2mG8m8w^(W-UTm0uv!7gmy z91@nvgF~SIoHOpvoqVUcYW}s{X7rzb=OpLcf5hoF8!X&E_N0&&~nT_SJMeu%}dYV+`M7|WXS-@0_^eh9Chq40r zpz%mMWScW(TQ1NQ_>i;#b|T|KgH&OdY<4cvHfDz-Ek~Z3oh!Sf0k~Kynw$xwxemvn zybSd7(OH2^r@=ka097w#vc3m-FY}eK*=!J+q2Oh145Nq*W?`%q&@yz@fTe=Uj!HCd zHyU=L)QxV6<)G{NC@0b!kHANiNnSV5_y^k;KO|tUe`@GsK|^45<); z@`67k2;y=uN5N&^&%@>xx$J9BUr85Q(AOWx<`%i^15=vQ*YUcxy1}wpV4~92fU;h} z#vjZ@UrQFlnkcD;>7g>r7($Ln>u9c*?}Q?Mammlc?F4Qt3$4hQvxL zVOu{!C%*6yrNs1oX01kX-^dW)>Ad)y&Jc-`tdNa>XE_3=ANSF@X){z7FXIkL=SbBVQ=H`x=Otz1+KEP z5{xSiEts^dE=q_>6v9@Wq76yr;o9bS4p}E^CGmVTv37Sn&&1nIi?LO^n8-UBzC$!= zBCkeD1mclmYEf5|I0CZ@h$2N>+K~szhvX3?AW?U)87c@QnCiQP(YTZEl7`|XB;nYu z3xy=nJ*YZ~BM4|D56}0Lg=tDw{;*2BO{-4kDd2sul>|gXB_x$JvE)s#I5{AhaFR^q zc<0J4(>m}i8SLfVDZgv2#k5zHwx#bPOF~?*QqP*eT{jeM~aJ^u4_QF2eDshl%?%M zqil1_lv#8?m|~(4h>P1|n=-oD0=ao;wuD&TY=K66Z?;6}OBi&qX}Od`n6|zX?|wxQ zElACQVI~jGJSy!safh&P7_PQuK{`j6zb=`!4stSiHpYpd*)aqbOZG#%OV-YR*JHSgXzC5yCV1Qq|Zn&JCi# z8WSGE4B?(a*UZw=0&Q#$-d^nKdP5LhBzC?NL`JuWs`vYI93Pl)+7iZb>Sn=C7u#Ji zuOePn@SkwrY}St{ik}!Ek16EgM7V$dQ|&B9GYe^UG1ESZ;G<~SdTbAAxAyBu(nMN& zOd@ly^k=m0MMkMDYxQ19wJD0{w7i&I*cVvo%vvMwNPA(MHrgu9A5+lQTjgF$_LY9X zET-*O#tcvgkp)_ulA9(QDr>*vJCQr1b(&;*#_)wTi=RTVo zBR6Y%Gx#JUR>>;6okwt6R0Ph@Wx)CRnpvwRf5Ze$2O_qe;_=hnFBd|OSI=24E~j$f8Xs7523G$*I|s>%for^D>pvcpb0+?&@YnEhi1XsDj+sFYed<)y<4eyLtqGj}r|F z+jM{QA8-U~$RMe0QYL!-d4wY8V$n$efYiY530)7sub45C>HgP5{ z?r33ih~uuNT#;t}qn*Owo0n#7r+(=F_@^*c^RDH|#wuI~T5f3aEwAa;LG26w@ADHL ziY-SR|9AEg+7`}d(;#wEv8f8zVjTQ%BtE|lL9ja(__moEqBj#SGcfK_HmXKxD6&rg6~{4 zhV*M(5_04WQ!P5YC9_=x5 z4Psj$%}j;sSo_cjU=1_F1vzGV^e*6$plfvLjPSzsMBjL_xJ5|?k91>+p|OqU9hf#M zZJTE=vs3!a<2EK{42@P+=m##$oM>J$5Fo-`M=$)x>GqZ)Z zAx?$w*xera`(=LT^=*f!{1!AAMs;;=<%4Expp$w|Nfo|*mB}4RS4Wx2oq->kvqZ;# zwY7MloQ#Qi3qPoIgmeoV!TK;G+ywoIm9_AwPlohPO;1fPOot2j%4X9uwjdUim3wi^ z(KgHF)!oaXq@;)Yq^GCbhPjIiVIX7^wkxP!fvFix?n?W>um+>4v=0dU7Mo1h+rlsw z3yo%Ag{XPvUOK;CL^t3<>4#z~Sx{PBqya8Bm116S%4Qz@bB*3`ti{o9jEQ6m7kS(> zZ2dFl*t{-}%UPzgr!Nh68{J8LsIG2TB!)bW%fVOLcg{2qUYc#WGi{^c?-_edvpU<_ z8J8{Rtm@0R_ZyczfW(FOb{Ll(MPkj`ZN}yEINP=N#(d*)uSB*RmzM>Qav(eW-x`-~ zA#Uh`{pqCnYJ5s6-6Ea~IR}(Ty$4lgzs~PBBn*3$vC#5TuWKeVRhdxMSC!{?*1maz zC!{)Fl4WMk8^EtuWkvlUew(UuY#6Zq3ctBV%Q?mu7}}24o;}8gjk*<^9ez^P?{zz9 zhA6tZ6L6{VUWH#zUOiLc-m}0%6>bRyW>}0RZ3D*GUe$e$u9uFHFnhNT z>eeXwp%uVz8=HbP29I=w7cEAbZUrDL{D?6_gu-nf0vIb{W*v%m=hAD5!RC(esJLDx zgS^kG5BggHNZnLr)bx zs{G?J2Xpm%GTj{p9fkK!X%kQK)G^&UBGX6pH|9g6p;QQb26!7#I(G<=ISTKU+n{u7-U3F7 z2YL@!0;PNHBro&Pkkph-i`F7d>_wO~2#>>R%3qH_8X`mB>9^vcbkRJ8uyTc$Lev3W zymkSw`4VT{pTIj+wR0coJe8q|vd@(+_9UH~y#vrfS-`rV#=Ens@cjQEy$BJZ+dS>l zw;`f0kya{Y&LVpyy+=p^s{`|>?T++qgfia$Jv^0)ntRb7FMdrh;{z6Gd8hbFpA{Ls zxs~7|gXSRc`E^+MvK6Oq+YW@J2fQMyUPCPz{edhcnDM2P8#Hv!MIg%*{^Xu|4K?q? zl-Y8H?|xTmsMm+-Tk?q~zm)~7q9@);L(QLGi!{vi)bgReWgUR% z?EI_<>9s_{*!!R0q1b8Z@deTvp}ERN^9yAC>j`H31Uy#2 z9DYON-=Of5A4+rZNtgO(tY7kPIiSs;0V#Vh-%f69ld4c#)!>_NC;k1S!ZV2d${Z{P z8U%Gh?G)pwCT8jP-$+9o2t0!nOewU*`s^TNwjiRQ_d-1NnVota>8%7ap7|?0m4R3m z5X}PwGk$u%Ht{r1HJs_C-9hj7Z_u8k_qjaneZ2d8It}u)N_{beVzHF}Rzkhc<~HC~ zH}FTOImRz7(Q?jU;r-V=+OubPYX3Tc|5}`q_0_UKjsiSrU4rLvg+EPyeee^^4A$YW zq;^`TvphDQcow5bR+x}}k|>y=-83!lEbrwr#1{nG_SKz!8bwbjf*wQg*4xhPiu7L< z-ZPHcRt>K12aM`q%o!v&*^#gA*o#Q-CYTx0VIM~2_u1NAK%S8}>wtEc$wv+O>OOoG znP+8zp>N;7fbidvZNQ#Wcvfq?^#LWlf%G07hx!BtB)$f=SK>VL9NzlOuc6g@pN?O~ zJ5f%6C;HAK^Smk;xfpMKW?xK1dcVXCBgxmzP&5AEBcu-~eAKO&z$XeH`!cW>B+kda zgSYB{eN6t1xB*V&=i;fif6L=YA5^Z=kWWUUcW{Z=M*9}3fB^(LSV%takisWChPU29 zKN=+YHPBC>LFgT`Ut_yFfj{0EzrRc(#uy=!A)uCc$J#jH%RM$ zuQA*LmK&8P;LE9zYDMqFzykD#t^-!1@R>K()3Z0LfW4-0cR_$Ynel~V0FsemL~}o{ MufQLshK>^azbf;=r2qf` delta 9895 zcmeGi3v^ROcIGt+>6euL1BFy5ZLOpQ6j?!3NJEeN6&`Ix0aT>)M6xT}lRMMZR_ob`iWV0S%=E_Uy{d2Lgg1iE^T>p8x2ChyMu z%-nnD-nlPt-dF1aK6|Clfa2295`>T+LO2oOH!;F*B_R~51KiQW0|p66r2tu=Ern)< zW`kA+tsL4BXcf?!q0JyG1e&x3psmm-v~AF~Lwgw7Bha3QwgcKz&}vDZA5EGF&?IP+ zp&6lNLz@CE2iiesCTLGW8|l177KI%qL;Q=-YeT5-M+m6^M69nyat5OQ2#fat&IR%q zMQAW|z$_Hh@^yIkV>&7g zo5-Gs7J4X82q6~}!fEMf>`#`c;>nO$wez*88FE5Y;bdIwEhHyj!A6jgC9%!iBGS}1 ze(Q0-j2{@GY?+a-ZEt_+CTCss518Do;TVLXrf^KfO&vU69tF%5?3@{?!u{k(2rQXr zzSm+Y)>_Rro7qOP&P{Qc#>QZyK5IO(GqWXYC6MF}jUew829hbND2GW-9vm9t*9RPt zds^pwV@Mb#)}i4_49ymM^3(z&kMhWjvw3P^ATR^S1G^BqH~ zpfDHCGh1!W;nV(!xupj$_8YLwY+Y>AOe-r~GOy4&Ph(tIWG%E--H|=bsL2G@PdKYn zofE5Y*47O6BXc4{Trig&)7iOrl>mw@j9Mh1VDgXnB}6fOTp!U4gq)M7uaz@SnV-vE zfMo((gh1y{OkuQMio5aDPAYZIznTSAXli%5>0ZtYsRj z*{YG`>hM?|YJ4V$2<{8$im>bOhd4~Ya@UJTFhs)2nm9j_Ry}}x9~(hm*Wo~N)}94U z3?n1z!ju9E2%J<{QAjTDQx8TcINfA2qV{tG@oicY!e_%#$m1s^ix3LfxyO+noeH#i zh7$&j*)bRH=@v`Lb!2LaW{GE?ayzbXt2mAo zEwuRX*;I3NEn;5t<+Pa-O&X-F_BqgvIDcMgad}S<21q{l5-nDnwYaBHHyJk%@(5#8 z9xSjcdx%O#zY&GSalmfm!-FtRtk19`ht|f&#Y%~Cz*{7EiXJIZdL@&cZOlLra>ZT} zlBBM8&qygNOvdrO7vibZEA4VJCP5^5*REkhPvxY%>(x9RdFRy&kaung?v{7O$h+&B zHhL3EPDbAR?OmuCCHG#)@;?b#das_j(yI`}YPXbQX(D?3UMnizuRMhCh0Q2%bLy2m zybQB`#5Zl&oVX)LKOVMFjmc`Zu!l2bE45Yvy$!GKr^Dv4(VgQgKo*M^*DxMPIkInK zsGANcJJylFjkuy>4OLB$J_lYMO;5pri;h9o?u{jBAJraa=o5#m(E z-s^=gDenctmz4L4;Zw@%?(akD|GQ?;QIBBv?dTUN8nmJj_r7Y-(nfEw>ycq$>h?DS6NdS!>!?)ISF_3DmiDF}|<6`u8t@#J8mGKSUiCjQiS zPuJgn<;gPA+8AETsyBPgW5aiQ%;S%09t9b%hex$;(IAmIVM5_DzOpaY* zjrF3qSYtbNp8OwTY>KBV?Kq2^X^JQ9O=1(4_(^`E)i-LT; zuRjTVg3nP;Mv}DkF+{cAKnHEadZKDJk`>K-aQj9D8MtvAA6F(#U-Ei4N0{hL$)ttBhb#3T@nuW4Kw&mmQ+q ztOS}GCK;iTf$p6>Fp#?vY;!|{fgCN_HjGQOKHp(rBCTnJw_^31BnmTC9MtkchpDh$ zJ7nb0F}<6)MldynZrY7wxxF&_^f(+xTgQRX;({_QG6kPG%7MN$z)%`@}&;j0E2YkYg`r5X~!+pJn9ID@NM)DVzoGcB{TH$Zqg$ zBsqAokMq>!NQIw(6vWgN*BQt(pbi_zkKY;S**Y-hwJQd?ZxxeZ5Y7gmcJ zyG8KPYeTv3)d}?THQ2!3I?CzvwOB`%xBJr*Yw-k{uukgLuY+-xw;NcN&{^xjgDcld zVdE*r=|vXoJ)`0m4tBN(a%u?#%O-CI%i7lXQ(X{PR!`(KdJERvcrwsY+dA$46=#F! zkQ3@24uPek^Y_3qZ`>nAl9KIB&m8fyvCs(C%;Jox1{+ zg2S}j_4!O3 z7N%cEDt0?+a>1da0^?vudJ+vBjl&_M;LL9D(A2JDOIOWsyhu)FNA`8gT^XDLVtQgU z&Zqk2LTJkyc&WgXxGVM85t@v+5{&G)^LUORr^nyHeMpr`9R?>~jqE_M<78|$!mg-v zyg}h@3s6qQdTQ6fN$RrO@gn-U4u{Ip;G&n)@Ix^Bmje9!O`w4Vcn-Dn70ysyl5ob6 zkq4=-zlQG0NXJSz(d)Twh?@nR_pK7(q;C`U1YrRVYXjtP)aeOg2e7V&|KRie0+@E} z)FEJ&>n@ehN8!3VQux>nJ=+z3Gec`rh3CS8!4aJTb6nqK0!57y;V4>#?z5GNuWR{J zGy5Iwie4%_DyTCKAf&Wdtmb=>%q0WDNX|2PAbry&sI|irMVh?iG~jRJvb$AIcb3Z!yB~PcIN$tR>E$vZQa!sBA-R&%6-uC` zbNY}6Xk0nSm%IeJ**Sgwzk!y;>E#);u3U&zsQN*_i0&*GHmZlRQ~#5kckm|wXLH`l ze3}j#spHuf0Z(vxMm50f%pWdQ8C}Zg)r;VCGla{&Xp%@wc&W6J~P!u`>t_RB^rh*c#5__!aOSM8_Ibv;b~4$Jf-r_W>FU9a<@b zs$=1Nw?pZ#5&*uNGsWIcb1Q|Y80K%u=G-=b=R$)kHk;N}g3TXXfH@R=?m5i&MIssH zZ>5JT!REhzP0v>f5&hA*S79MHamF#5f$3h(_=SyzR)JG4EvHFUf_6$i3!)L6ZwhlV zIGtUWALv@>h3q(ev4}?B2ZAw@Q#QW~IO$NhY6-wabZ?bli^&9#+aRml3a}LCR|nDI z)k4H%boDbZBAU-xU;~CSXmEX;4?j{sBv$}j&aenoK~Ta=Vlg4Mu;6AixY{vwRD)B7 znxS(Or@sUaLY0h)P{JkpVm0{mM}Yad%QIQbvsi;`dIr7B#4-C!p@FM2jD6#>f>B`? zdz8j47aqdV^zd?E6Z{d9={Vc+W?-o0Y>J8WJkTcv&FKn@D zI@WHcyBIx%rQbL%-#iT94I&-cpQ3Lv`lydU327^6jQ|>~I9&L55fs+|y`?K^ilc|P% zNHR{5^bNr5YazJof2DCNfj;gr==_B%|8gO~>?7(x89ruFBW2VqGQ!Un((^Fk1pL~a(3K{PJq_@2Mo0K{ c2)7PX$Q8hxU}%IVX2P#zN`Ej{{I(1I7it4awEzGB diff --git a/src/mac/listbox.cpp b/src/mac/listbox.cpp index cb3a39dbd9..502394e18a 100644 --- a/src/mac/listbox.cpp +++ b/src/mac/listbox.cpp @@ -99,10 +99,10 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id, #else long result ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , kwxMacListWithVerticalScrollbar , 0 , 0, kControlListBoxProc , (long) this ) ; - UMAGetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , sizeof( ListHandle ) , (char*) &m_macList , &result ) ; HLock( (Handle) m_macList ) ; @@ -664,7 +664,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar Boolean wasDoubleClick = false ; long result ; - UMAGetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; + ::GetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; if ( !wasDoubleClick ) { MacDoClick() ; diff --git a/src/mac/menu.cpp b/src/mac/menu.cpp index 6956a0987a..72be92772d 100644 --- a/src/mac/menu.cpp +++ b/src/mac/menu.cpp @@ -71,7 +71,7 @@ void wxMenu::Init() wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_title , false ); m_macMenuId = s_macNextMenuId++; wxCHECK_RET( s_macNextMenuId < 236 , "menu ids > 235 cannot be used for submenus on mac" ); - m_hMenu = UMANewMenu(m_macMenuId, label); + m_hMenu = ::NewMenu(m_macMenuId, label); if ( !m_hMenu ) { @@ -89,7 +89,7 @@ void wxMenu::Init() wxMenu::~wxMenu() { if (m_hMenu) - UMADisposeMenu(m_hMenu); + ::DisposeMenu(m_hMenu); #if wxUSE_ACCEL // delete accels @@ -183,7 +183,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar) { - UMAInsertMenu( pSubMenu->m_hMenu , -1 ) ; + ::InsertMenu( pSubMenu->m_hMenu , -1 ) ; } if ( pos == (size_t)-1 ) @@ -683,7 +683,7 @@ void wxMenuBar::MacInstallMenuBar() } if ( item->GetId() == wxApp::s_macAboutMenuItemId ) { - UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); } else @@ -707,7 +707,7 @@ void wxMenuBar::MacInstallMenuBar() subMenu = item->GetSubMenu() ; if (subMenu) { - UMAInsertMenu( subMenu->GetHMenu() , -1 ) ; + ::InsertMenu( subMenu->GetHMenu() , -1 ) ; } else { @@ -717,12 +717,12 @@ void wxMenuBar::MacInstallMenuBar() UInt8 modifiers ; SInt16 key ; wxMenuItem::MacBuildMenuString( label, &key , &modifiers , item->GetText(), item->GetId() != wxApp::s_macAboutMenuItemId); // no shortcut in about menu - UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); + ::SetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , label ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 ); } } } - UMAInsertMenu(m_menus[i]->GetHMenu(), 0); + ::InsertMenu(m_menus[i]->GetHMenu(), 0); } #endif else @@ -735,13 +735,13 @@ void wxMenuBar::MacInstallMenuBar() subMenu = item->GetSubMenu() ; if (subMenu) { - UMAInsertMenu( subMenu->GetHMenu() , -1 ) ; + ::InsertMenu( subMenu->GetHMenu() , -1 ) ; } } - UMAInsertMenu(m_menus[i]->GetHMenu(), 0); + ::InsertMenu(m_menus[i]->GetHMenu(), 0); } } - UMADrawMenuBar() ; + ::DrawMenuBar() ; s_macInstalledMenuBar = this; } @@ -816,18 +816,18 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title) { if (s_macInstalledMenuBar == this) { - UMADeleteMenu( menuOld->MacGetMenuId() /* m_menus[pos]->MacGetMenuId() */ ) ; + ::DeleteMenu( menuOld->MacGetMenuId() /* m_menus[pos]->MacGetMenuId() */ ) ; { Str255 label; wxMenuItem::MacBuildMenuString( label, NULL , NULL , title , false ); UMASetMenuTitle( menu->GetHMenu() , label ) ; if ( pos == m_menus.GetCount() - 1) { - UMAInsertMenu( menu->GetHMenu() , 0 ) ; + ::InsertMenu( menu->GetHMenu() , 0 ) ; } else { - UMAInsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; + ::InsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; } } } diff --git a/src/mac/menuitem.cpp b/src/mac/menuitem.cpp index d6b12d09ba..33b337518e 100644 --- a/src/mac/menuitem.cpp +++ b/src/mac/menuitem.cpp @@ -319,7 +319,7 @@ void wxMenuItem::SetText(const wxString& text) { Str255 label; MacBuildMenuString( label , NULL , NULL , text ,false); - UMASetMenuItemText( m_parentMenu->GetHMenu() , index , label ) ; // checkmark + ::SetMenuItemText( m_parentMenu->GetHMenu() , index , label ) ; // checkmark } } diff --git a/src/mac/notebmac.cpp b/src/mac/notebmac.cpp index 17b89bde2e..88e098ac96 100644 --- a/src/mac/notebmac.cpp +++ b/src/mac/notebmac.cpp @@ -115,7 +115,7 @@ bool wxNotebook::Create(wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlTabSmallProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/radiobox.cpp b/src/mac/radiobox.cpp index 664e5c54d2..f4c7ca1509 100644 --- a/src/mac/radiobox.cpp +++ b/src/mac/radiobox.cpp @@ -117,7 +117,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlGroupBoxTextTitleProc , (long) this ) ; for (i = 0; i < n; i++) diff --git a/src/mac/radiobut.cpp b/src/mac/radiobut.cpp index 196fed3a4b..476cf9ef10 100644 --- a/src/mac/radiobut.cpp +++ b/src/mac/radiobut.cpp @@ -35,7 +35,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlRadioButtonProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/scrolbar.cpp b/src/mac/scrolbar.cpp index e9d45ce4e5..c417484f02 100644 --- a/src/mac/scrolbar.cpp +++ b/src/mac/scrolbar.cpp @@ -43,7 +43,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , true , 0 , 0 , 100, kControlScrollBarLiveProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/slider.cpp b/src/mac/slider.cpp index 53ad11814e..459a15c76b 100644 --- a/src/mac/slider.cpp +++ b/src/mac/slider.cpp @@ -84,7 +84,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, } - m_macControl = UMANewControl( parent->GetMacRootWindow(), &bounds, title, false, + m_macControl = ::NewControl( parent->GetMacRootWindow(), &bounds, title, false, value, minValue, maxValue, procID, (long) this); wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/spinbutt.cpp b/src/mac/spinbutt.cpp index 283d6bc262..cdf211ab43 100644 --- a/src/mac/spinbutt.cpp +++ b/src/mac/spinbutt.cpp @@ -49,7 +49,7 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c MacPreControlCreate( parent , id , "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 100, kControlLittleArrowsProc , (long) this ) ; wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; diff --git a/src/mac/statbox.cpp b/src/mac/statbox.cpp index 06d35460ac..400eb43169 100644 --- a/src/mac/statbox.cpp +++ b/src/mac/statbox.cpp @@ -43,7 +43,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, MacPreControlCreate( parent , id , label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlGroupBoxTextTitleProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/statlmac.cpp b/src/mac/statlmac.cpp index 4384627196..175708d1fa 100644 --- a/src/mac/statlmac.cpp +++ b/src/mac/statlmac.cpp @@ -54,7 +54,7 @@ bool wxStaticLine::Create( wxWindow *parent, MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlSeparatorLineProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/tabctrl.cpp b/src/mac/tabctrl.cpp index 2b4a07e0fb..7bb7a464f2 100644 --- a/src/mac/tabctrl.cpp +++ b/src/mac/tabctrl.cpp @@ -41,7 +41,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, kControlTabSmallProc , (long) this ) ; MacPostControlCreate() ; diff --git a/src/mac/textctrl.cpp b/src/mac/textctrl.cpp index c6a6d86e09..7454d48f9b 100644 --- a/src/mac/textctrl.cpp +++ b/src/mac/textctrl.cpp @@ -44,6 +44,10 @@ #include "wx/mac/uma.h" +#define wxUSE_MLTE 0 + +#if wxUSE_MLTE == 0 // old textctrl implementation + #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) @@ -120,7 +124,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, } - m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ; MacPostControlCreate() ; @@ -130,7 +134,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; (*teH)->lineHeight = -1 ; } @@ -138,7 +142,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, value = wxMacMakeMacStringFromPC( st ) ; else value = st ; - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; return TRUE; } @@ -146,7 +150,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, wxString wxTextCtrl::GetValue() const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; wxBuffer[actualsize] = 0 ; if( wxApp::s_macDefaultEncodingIsPC ) return wxMacMakePCStringFromMac( wxBuffer ) ; @@ -160,7 +164,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; *from = (**teH).selStart; *to = (**teH).selEnd; @@ -174,7 +178,7 @@ void wxTextCtrl::SetValue(const wxString& st) value = wxMacMakeMacStringFromPC( st ) ; else value = st ; - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; WindowRef window = GetMacRootWindow() ; if ( window ) { @@ -191,7 +195,7 @@ void wxTextCtrl::SetValue(const wxString& st) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -206,7 +210,7 @@ void wxTextCtrl::SetValue(const wxString& st) } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -219,7 +223,7 @@ void wxTextCtrl::Copy() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TECopy( teH ) ; #if TARGET_CARBON OSStatus err ; @@ -239,7 +243,7 @@ void wxTextCtrl::Cut() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TECut( teH ) ; #if TARGET_CARBON OSStatus err ; @@ -260,7 +264,7 @@ void wxTextCtrl::Paste() TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEFromScrap() ; TEPaste( teH ) ; WindowRef window = GetMacRootWindow() ; @@ -279,7 +283,7 @@ void wxTextCtrl::Paste() { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -294,7 +298,7 @@ void wxTextCtrl::Paste() } UMADrawControl( m_macControl ) ; - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } } @@ -376,8 +380,8 @@ long wxTextCtrl::GetInsertionPoint() const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; -// UMAGetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; return (**teH).selStart ; } @@ -387,9 +391,9 @@ long wxTextCtrl::GetLastPosition() const TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; -// UMAGetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; return (**teH).teLength ; } @@ -402,8 +406,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value) selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TESetSelect( from , to , teH ) ; TEDelete( teH ) ; TEInsert( value , value.Length() , teH ) ; @@ -419,8 +423,8 @@ void wxTextCtrl::Remove(long from, long to) selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEDelete( teH ) ; Refresh() ; } @@ -431,12 +435,12 @@ void wxTextCtrl::SetSelection(long from, long to) TEHandle teH ; long size ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; selection.selStart = from ; selection.selEnd = to ; - UMASetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; TESetSelect( selection.selStart , selection.selEnd , teH ) ; } @@ -459,7 +463,7 @@ void wxTextCtrl::WriteText(const wxString& text) wxBuffer[text.Length() ] = 0 ; // wxMacConvertNewlines( wxBuffer , wxBuffer ) ; - UMAGetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; TEInsert( wxBuffer , strlen( wxBuffer) , teH ) ; Refresh() ; @@ -473,7 +477,7 @@ void wxTextCtrl::AppendText(const wxString& text) void wxTextCtrl::Clear() { - UMASetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; Refresh() ; } @@ -558,7 +562,7 @@ void wxTextCtrl::DiscardEdits() int wxTextCtrl::GetNumberOfLines() const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; int count = 1; for (int i = 0; i < actualsize; i++) @@ -588,7 +592,7 @@ void wxTextCtrl::ShowPosition(long pos) int wxTextCtrl::GetLineLength(long lineNo) const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; // Find line first int count = 0; @@ -615,7 +619,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const wxString wxTextCtrl::GetLineText(long lineNo) const { Size actualsize; - UMAGetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; // Find line first int count = 0; @@ -723,7 +727,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) short keychar ; keychar = short(ev->message & charCodeMask); keycode = short(ev->message & keyCodeMask) >> 8 ; - UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + ::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK) { wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); @@ -788,5 +792,1784 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) event.Enable( CanRedo() ); } +#else + +#if !TARGET_CARBON +#define GetControlOwner( control ) (**control).contrlOwner +#endif + +//todo add access to global event record + +EventRecord event ; + +static EventRecord *GetCurrentEventRecord() +{ + return &event ; +} + +// CS:We will replace the TextEdit by using the MultiLanguageTextEngine based on the following code written by apple + +/* + File: mUPControl.c + + Description: + mUPControl implementation. + + Copyright: + © Copyright 2000 Apple Computer, Inc. All rights reserved. + + Disclaimer: + IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + Fri, Jan 28, 2000 -- created +*/ + +#include "MacTextEditor.h" + +/* part codes */ + +/* kmUPTextPart is the part code we return to indicate the user has clicked + in the text area of our control */ +#define kmUPTextPart 1 + +/* kmUPScrollPart is the part code we return to indicate the user has clicked + in the scroll bar part of the control. */ +#define kmUPScrollPart 2 + + +/* routines for using existing user pane controls. + These routines are useful for cases where you would like to use an + existing user pane control in, say, a dialog window as a scrolling + text edit field.*/ + +/* mUPOpenControl initializes a user pane control so it will be drawn + and will behave as a scrolling text edit field inside of a window. + This routine performs all of the initialization steps necessary, + except it does not create the user pane control itself. theControl + should refer to a user pane control that you have either created + yourself or extracted from a dialog's control heirarchy using + the GetDialogItemAsControl routine. */ +OSStatus mUPOpenControl(ControlHandle theControl); + +/* mUPCloseControl deallocates all of the structures allocated + by mUPOpenControl. */ +OSStatus mUPCloseControl(ControlHandle theControl); + + + +/* routines for creating new scrolling text user pane controls. + These routines allow you to create new scrolling text + user pane controls. */ + +/* mUPCreateControl creates a new user pane control and then it passes it + to mUPOpenControl to initialize it as a scrolling text user pane control. */ +OSStatus mUPCreateControl(WindowPtr theWindow, Rect *bounds, ControlHandle *theControl); + +/* mUPDisposeControl calls mUPCloseControl and then it calls DisposeControl. */ +OSStatus mUPDisposeControl(ControlHandle theControl); + + +/* Utility Routines */ + + /* mUPSetText replaces the contents of the selection with the unicode + text described by the text and count parameters:. + text = pointer to unicode text buffer + count = number of bytes in the buffer. */ +OSStatus mUPSetText(ControlHandle theControl, char* text, long count); + +/* mUPGetText returns the current text data being displayed inside of + the mUPControl. When noErr is returned, *theText contain a new + handle containing all of the Unicode text copied from the current + selection. It is the caller's responsibiliby to dispose of this handle. */ +OSStatus mUPGetText(ControlHandle theControl, Handle *theText); + + +/* mUPSetSelection sets the text selection and autoscrolls the text view + so either the cursor or the selction is in the view. */ +void mUPSetSelection(ControlHandle theControl, long selStart, long selEnd); + + + +/* IsmUPControl returns true if theControl is not NULL + and theControl refers to a mUP Control. */ +Boolean IsmUPControl(ControlHandle theControl); + + + +/* Edit commands for mUP Controls. */ +enum { + kmUPCut = 1, + kmUPCopy = 2, + kmUPPaste = 3, + kmUPClear = 4 +}; + + +/* mUPDoEditCommand performs the editing command specified + in the editCommand parameter. The mUPControl's text + and scroll bar are redrawn and updated as necessary. */ +void mUPDoEditCommand(ControlHandle theControl, short editCommand); + + + + +/* mUPGetContents returns the entire contents of the control including the text + and the formatting information. */ +OSStatus mUPGetContents(ControlHandle theControl, Handle *theContents); +/* mUPSetContents replaces the contents of the selection with the data stored in the handle. */ +OSStatus mUPSetContents(ControlHandle theControl, Handle theContents); + +enum { + kShiftKeyCode = 56 +}; + +/* kUserClickedToFocusPart is a part code we pass to the SetKeyboardFocus + routine. In our focus switching routine this part code is understood + as meaning 'the user has clicked in the control and we need to switch + the current focus to ourselves before we can continue'. */ +#define kUserClickedToFocusPart 100 + + +/* kmUPClickScrollDelayTicks is a time measurement in ticks used to + slow the speed of 'auto scrolling' inside of our clickloop routine. + This value prevents the text from wizzzzzing by while the mouse + is being held down inside of the text area. */ +#define kmUPClickScrollDelayTicks 3 + + +/* STPTextPaneVars is a structure used for storing the the mUP Control's + internal variables and state information. A handle to this record is + stored in the pane control's reference value field using the + SetControlReference routine. */ + +typedef struct { + /* OS records referenced */ + TXNObject fTXNRec; /* the txn record */ + TXNFrameID fTXNFrame; /* the txn frame ID */ + ControlHandle fUserPaneRec; /* handle to the user pane control */ + WindowPtr fOwner; /* window containing control */ + GrafPtr fDrawingEnvironment; /* grafport where control is drawn */ + /* flags */ + Boolean fInFocus; /* true while the focus rect is drawn around the control */ + Boolean fIsActive; /* true while the control is drawn in the active state */ + Boolean fTEActive; /* reflects the activation state of the text edit record */ + Boolean fInDialogWindow; /* true if displayed in a dialog window */ + /* calculated locations */ + Rect fRTextArea; /* area where the text is drawn */ + Rect fRFocusOutline; /* rectangle used to draw the focus box */ + Rect fRTextOutline; /* rectangle used to draw the border */ + RgnHandle fTextBackgroundRgn; /* background region for the text, erased before calling TEUpdate */ + /* our focus advance override routine */ + EventHandlerUPP handlerUPP; + EventHandlerRef handlerRef; +} STPTextPaneVars; + + + + +/* Univerals Procedure Pointer variables used by the + mUP Control. These variables are set up + the first time that mUPOpenControl is called. */ +ControlUserPaneDrawUPP gTPDrawProc = NULL; +ControlUserPaneHitTestUPP gTPHitProc = NULL; +ControlUserPaneTrackingUPP gTPTrackProc = NULL; +ControlUserPaneIdleUPP gTPIdleProc = NULL; +ControlUserPaneKeyDownUPP gTPKeyProc = NULL; +ControlUserPaneActivateUPP gTPActivateProc = NULL; +ControlUserPaneFocusUPP gTPFocusProc = NULL; + + /* events handled by our focus advance override routine */ +#if TARGET_CARBON +static const EventTypeSpec gMLTEEvents[] = { { kEventClassTextInput, kEventUnicodeForKeyEvent } }; +#define kMLTEEventCount (sizeof( gMLTEEvents ) / sizeof( EventTypeSpec )) +#endif + + +/* TPActivatePaneText activates or deactivates the text edit record + according to the value of setActive. The primary purpose of this + routine is to ensure each call is only made once. */ +static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) { + STPTextPaneVars *varsp; + varsp = *tpvars; + if (varsp->fTEActive != setActive) { + + varsp->fTEActive = setActive; + + TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive); + + if (varsp->fInFocus) + TXNFocus( varsp->fTXNRec, varsp->fTEActive); + } +} + + +/* TPFocusPaneText set the focus state for the text record. */ +static void TPFocusPaneText(STPTextPaneVars **tpvars, Boolean setFocus) { + STPTextPaneVars *varsp; + varsp = *tpvars; + if (varsp->fInFocus != setFocus) { + varsp->fInFocus = setFocus; + TXNFocus( varsp->fTXNRec, varsp->fInFocus); + } +} + + +/* TPPaneDrawProc is called to redraw the control and for update events + referring to the control. This routine erases the text area's background, + and redraws the text. This routine assumes the scroll bar has been + redrawn by a call to DrawControls. */ +static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart) { + STPTextPaneVars **tpvars, *varsp; + char state; + Rect bounds; + /* set up our globals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + + /* save the drawing state */ + SetPort((**tpvars).fDrawingEnvironment); + /* verify our boundary */ + GetControlBounds(theControl, &bounds); + if ( ! EqualRect(&bounds, &varsp->fRTextArea) ) { + SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextArea, bounds.left, bounds.top, bounds.right, bounds.bottom); + RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); + TXNSetFrameBounds( varsp->fTXNRec, bounds.top, bounds.left, bounds.bottom, bounds.right, varsp->fTXNFrame); + } + + /* update the text region */ + EraseRgn(varsp->fTextBackgroundRgn); + TXNDraw(varsp->fTXNRec, NULL); + /* restore the drawing environment */ + /* draw the text frame and focus frame (if necessary) */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + if ((**tpvars).fIsActive && varsp->fInFocus) DrawThemeFocusRect(&varsp->fRFocusOutline, true); + /* release our globals */ + HSetState((Handle) tpvars, state); + } +} + + +/* TPPaneHitTestProc is called when the control manager would + like to determine what part of the control the mouse resides over. + We also call this routine from our tracking proc to determine how + to handle mouse clicks. */ +static pascal ControlPartCode TPPaneHitTestProc(ControlHandle theControl, Point where) { + STPTextPaneVars **tpvars; + ControlPartCode result; + char state; + /* set up our locals and lock down our globals*/ + result = 0; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + /* find the region where we clicked */ + if (PtInRect(where, &(**tpvars).fRTextArea)) { + result = kmUPTextPart; + } else result = 0; + /* release oure globals */ + HSetState((Handle) tpvars, state); + } + return result; +} + + + + + +/* TPPaneTrackingProc is called when the mouse is being held down + over our control. This routine handles clicks in the text area + and in the scroll bar. */ +static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point startPt, ControlActionUPP actionProc) { + STPTextPaneVars **tpvars, *varsp; + char state; + ControlPartCode partCodeResult; + /* make sure we have some variables... */ + partCodeResult = 0; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + /* lock 'em down */ + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* we don't do any of these functions unless we're in focus */ + if ( ! varsp->fInFocus) { + WindowPtr owner; + owner = GetControlOwner(theControl); + ClearKeyboardFocus(owner); + SetKeyboardFocus(owner, theControl, kUserClickedToFocusPart); + } + /* find the location for the click */ + switch (TPPaneHitTestProc(theControl, startPt)) { + + /* handle clicks in the text part */ + case kmUPTextPart: + { SetPort((**tpvars).fDrawingEnvironment); + TXNClick( varsp->fTXNRec, GetCurrentEventRecord()); + } + break; + + } + + HSetState((Handle) tpvars, state); + } + return partCodeResult; +} + + +/* TPPaneIdleProc is our user pane idle routine. When our text field + is active and in focus, we use this routine to set the cursor. */ +static pascal void TPPaneIdleProc(ControlHandle theControl) { + STPTextPaneVars **tpvars, *varsp; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + /* if we're not active, then we have nothing to say about the cursor */ + if ((**tpvars).fIsActive) { + char state; + Rect bounds; + Point mousep; + /* lock down the globals */ + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* get the current mouse coordinates (in our window) */ +#if TARGET_CARBON + SetPort(GetWindowPort(GetControlOwner(theControl))); +#else + SetPort((GrafPtr) GetWindowPort(GetControlOwner(theControl))); +#endif + GetMouse(&mousep); + /* there's a 'focus thing' and an 'unfocused thing' */ + if (varsp->fInFocus) { + /* flash the cursor */ + SetPort((**tpvars).fDrawingEnvironment); + TXNIdle(varsp->fTXNRec); + /* set the cursor */ + if (PtInRect(mousep, &varsp->fRTextArea)) { + RgnHandle theRgn; + RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); + TXNAdjustCursor(varsp->fTXNRec, theRgn); + DisposeRgn(theRgn); + } else SetThemeCursor(kThemeArrowCursor); + } else { + /* if it's in our bounds, set the cursor */ + GetControlBounds(theControl, &bounds); + if (PtInRect(mousep, &bounds)) + SetThemeCursor(kThemeArrowCursor); + } + + HSetState((Handle) tpvars, state); + } + } +} + + +/* TPPaneKeyDownProc is called whenever a keydown event is directed + at our control. Here, we direct the keydown event to the text + edit record and redraw the scroll bar and text field as appropriate. */ +static pascal ControlPartCode TPPaneKeyDownProc(ControlHandle theControl, + SInt16 keyCode, SInt16 charCode, SInt16 modifiers) { + STPTextPaneVars **tpvars; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + if ((**tpvars).fInFocus) { + /* turn autoscrolling on and send the key event to text edit */ + SetPort((**tpvars).fDrawingEnvironment); + TXNKeyDown( (**tpvars).fTXNRec, GetCurrentEventRecord()); + } + } + return kControlEntireControl; +} + + +/* TPPaneActivateProc is called when the window containing + the user pane control receives activate events. Here, we redraw + the control and it's text as necessary for the activation state. */ +static pascal void TPPaneActivateProc(ControlHandle theControl, Boolean activating) { + Rect bounds; + STPTextPaneVars **tpvars, *varsp; + char state; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* de/activate the text edit record */ + SetPort((**tpvars).fDrawingEnvironment); + GetControlBounds(theControl, &bounds); + varsp->fIsActive = activating; + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* redraw the frame */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + if (varsp->fInFocus) DrawThemeFocusRect(&varsp->fRFocusOutline, varsp->fIsActive); + HSetState((Handle) tpvars, state); + } +} + + +/* TPPaneFocusProc is called when every the focus changes to or + from our control. Herein, switch the focus appropriately + according to the parameters and redraw the control as + necessary. */ +static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlFocusPart action) { + ControlPartCode focusResult; + STPTextPaneVars **tpvars, *varsp; + char state; + /* set up locals */ + focusResult = kControlFocusNoPart; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (tpvars != NULL) { + state = HGetState((Handle) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* if kControlFocusPrevPart and kControlFocusNextPart are received when the user is + tabbing forwards (or shift tabbing backwards) through the items in the dialog, + and kControlFocusNextPart will be received. When the user clicks in our field + and it is not the current focus, then the constant kUserClickedToFocusPart will + be received. The constant kControlFocusNoPart will be received when our control + is the current focus and the user clicks in another control. In your focus routine, + you should respond to these codes as follows: + + kControlFocusNoPart - turn off focus and return kControlFocusNoPart. redraw + the control and the focus rectangle as necessary. + + kControlFocusPrevPart or kControlFocusNextPart - toggle focus on or off + depending on its current state. redraw the control and the focus rectangle + as appropriate for the new focus state. If the focus state is 'off', return the constant + kControlFocusNoPart, otherwise return a non-zero part code. + kUserClickedToFocusPart - is a constant defined for this example. You should + define your own value for handling click-to-focus type events. */ + /* save the drawing state */ + SetPort((**tpvars).fDrawingEnvironment); + /* calculate the next highlight state */ + switch (action) { + default: + case kControlFocusNoPart: + TPFocusPaneText(tpvars, false); + focusResult = kControlFocusNoPart; + break; + case kUserClickedToFocusPart: + TPFocusPaneText(tpvars, true); + focusResult = 1; + break; + case kControlFocusPrevPart: + case kControlFocusNextPart: + TPFocusPaneText(tpvars, ( ! varsp->fInFocus)); + focusResult = varsp->fInFocus ? 1 : kControlFocusNoPart; + break; + } + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* redraw the text fram and focus rectangle to indicate the + new focus state */ + DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive); + DrawThemeFocusRect(&varsp->fRFocusOutline, varsp->fIsActive && varsp->fInFocus); + /* done */ + HSetState((Handle) tpvars, state); + } + return focusResult; +} + + + + + + + + + + + +//This our carbon event handler for unicode key downs +#if TARGET_CARBON +static pascal OSStatus FocusAdvanceOverride(EventHandlerCallRef myHandler, EventRef event, void* userData) { + WindowRef window; + STPTextPaneVars **tpvars; + OSStatus err; + unsigned short mUnicodeText; + ByteCount charCounts=0; + /* get our window pointer */ + tpvars = (STPTextPaneVars **) userData; + window = (**tpvars).fOwner; + //find out how many bytes are needed + err = GetEventParameter(event, kEventParamTextInputSendText, + typeUnicodeText, NULL, 0, &charCounts, NULL); + if (err != noErr) goto bail; + /* we're only looking at single characters */ + if (charCounts != 2) { err = eventNotHandledErr; goto bail; } + /* get the character */ + err = GetEventParameter(event, kEventParamTextInputSendText, + typeUnicodeText, NULL, sizeof(mUnicodeText), + &charCounts, (char*) &mUnicodeText); + if (err != noErr) goto bail; + /* if it's not the tab key, forget it... */ + if ((mUnicodeText != '\t')) { err = eventNotHandledErr; goto bail; } + /* advance the keyboard focus */ + AdvanceKeyboardFocus(window); + /* noErr lets the CEM know we handled the event */ + return noErr; +bail: + return eventNotHandledErr; +} +#endif + + +/* mUPOpenControl initializes a user pane control so it will be drawn + and will behave as a scrolling text edit field inside of a window. + This routine performs all of the initialization steps necessary, + except it does not create the user pane control itself. theControl + should refer to a user pane control that you have either created + yourself or extracted from a dialog's control heirarchy using + the GetDialogItemAsControl routine. */ +OSStatus mUPOpenControl(ControlHandle theControl) { + Rect bounds; + WindowPtr theWindow; + STPTextPaneVars **tpvars, *varsp; + OSStatus err; + RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF}; + TXNBackground tback; + + /* set up our globals */ + if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc); + if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc); + if (gTPTrackProc == NULL) gTPTrackProc = NewControlUserPaneTrackingUPP(TPPaneTrackingProc); + if (gTPIdleProc == NULL) gTPIdleProc = NewControlUserPaneIdleUPP(TPPaneIdleProc); + if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc); + if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc); + if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc); + + /* allocate our private storage */ + tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars)); + SetControlReference(theControl, (long) tpvars); + HLock((Handle) tpvars); + varsp = *tpvars; + /* set the initial settings for our private data */ + varsp->fInFocus = false; + varsp->fIsActive = true; + varsp->fTEActive = false; + varsp->fUserPaneRec = theControl; + theWindow = varsp->fOwner = GetControlOwner(theControl); +#if TARGET_CARBON + varsp->fDrawingEnvironment = GetWindowPort(varsp->fOwner); +#else + varsp->fDrawingEnvironment = (GrafPtr) GetWindowPort(varsp->fOwner); +#endif + varsp->fInDialogWindow = ( GetWindowKind(varsp->fOwner) == kDialogWindowKind ); + /* set up the user pane procedures */ + SetControlData(theControl, kControlEntireControl, kControlUserPaneDrawProcTag, sizeof(gTPDrawProc), &gTPDrawProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneHitTestProcTag, sizeof(gTPHitProc), &gTPHitProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneTrackingProcTag, sizeof(gTPTrackProc), &gTPTrackProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneIdleProcTag, sizeof(gTPIdleProc), &gTPIdleProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneKeyDownProcTag, sizeof(gTPKeyProc), &gTPKeyProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneActivateProcTag, sizeof(gTPActivateProc), &gTPActivateProc); + SetControlData(theControl, kControlEntireControl, kControlUserPaneFocusProcTag, sizeof(gTPFocusProc), &gTPFocusProc); + /* calculate the rectangles used by the control */ + GetControlBounds(theControl, &bounds); + SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); + SetRect(&varsp->fRTextArea, bounds.left, bounds.top, bounds.right, bounds.bottom); + /* calculate the background region for the text. In this case, it's kindof + and irregular region because we're setting the scroll bar a little ways inside + of the text area. */ + RectRgn((varsp->fTextBackgroundRgn = NewRgn()), &varsp->fRTextOutline); + + /* set up the drawing environment */ + SetPort(varsp->fDrawingEnvironment); + + /* create the new edit field */ + TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, + kTXNWantVScrollBarMask | kTXNAlwaysWrapAtViewEdgeMask, + kTXNTextEditStyleFrameType, + kTXNTextensionFile, + kTXNSystemDefaultEncoding, + &varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars); + + /* set the field's background */ + tback.bgType = kTXNBackgroundTypeRGB; + tback.bg.color = rgbWhite; + TXNSetBackground( varsp->fTXNRec, &tback); + + /* install our focus advance override routine */ +#if TARGET_CARBON + varsp->handlerUPP = NewEventHandlerUPP(FocusAdvanceOverride); + err = InstallWindowEventHandler( varsp->fOwner, varsp->handlerUPP, + kMLTEEventCount, gMLTEEvents, tpvars, &varsp->handlerRef ); +#endif + + /* unlock our storage */ + HUnlock((Handle) tpvars); + /* perform final activations and setup for our text field. Here, + we assume that the window is going to be the 'active' window. */ + TPActivatePaneText(tpvars, varsp->fIsActive && varsp->fInFocus); + /* all done */ + return noErr; +} + + + +/* mUPCloseControl deallocates all of the structures allocated + by mUPOpenControl. */ +OSStatus mUPCloseControl(ControlHandle theControl) { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* release our sub records */ + TXNDeleteObject((**tpvars).fTXNRec); + /* remove our focus advance override */ + RemoveEventHandler((**tpvars).handlerRef); + DisposeEventHandlerUPP((**tpvars).handlerUPP); + /* delete our private storage */ + DisposeHandle((Handle) tpvars); + /* zero the control reference */ + SetControlReference(theControl, 0); + return noErr; +} + + + + + /* mUPSetText replaces the contents of the selection with the unicode + text described by the text and count parameters:. + text = pointer to unicode text buffer + count = number of bytes in the buffer. */ +OSStatus mUPSetText(ControlHandle theControl, char* text, long count) { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* set the text in the record */ + return TXNSetData( (**tpvars).fTXNRec, kTXNUnicodeTextData, text, count, + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + + return noErr; +} + + +/* mUPSetSelection sets the text selection and autoscrolls the text view + so either the cursor or the selction is in the view. */ +void mUPSetSelection(ControlHandle theControl, long selStart, long selEnd) { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* change the selection */ + TXNSetSelection( (**tpvars).fTXNRec, selStart, selEnd); +} + + + + + +/* mUPGetText returns the current text data being displayed inside of + the mUPControl. When noErr is returned, *theText contain a new + handle containing all of the Unicode text copied from the current + selection. It is the caller's responsibiliby to dispose of this handle. */ +OSStatus mUPGetText(ControlHandle theControl, Handle *theText) { + STPTextPaneVars **tpvars; + OSStatus err; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* extract the text from the record */ + err = TXNGetData( (**tpvars).fTXNRec, kTXNUseCurrentSelection, kTXNUseCurrentSelection, theText); + /* all done */ + return err; +} + + + +/* mUPCreateControl creates a new user pane control and then it passes it + to mUPOpenControl to initialize it as a scrolling text user pane control. */ +OSStatus mUPCreateControl(WindowPtr theWindow, Rect *bounds, ControlHandle *theControl) { + short featurSet; + /* the following feature set can be specified in CNTL resources by using + the value 1214. When creating a user pane control, we pass this value + in the 'value' parameter. */ + featurSet = kControlSupportsEmbedding | kControlSupportsFocus | kControlWantsIdle + | kControlWantsActivate | kControlHandlesTracking | kControlHasSpecialBackground + | kControlGetsFocusOnClick | kControlSupportsLiveFeedback; + /* create the control */ + *theControl = NewControl(theWindow, bounds, "\p", true, featurSet, 0, featurSet, kControlUserPaneProc, 0); + /* set up the mUP specific features and data */ + mUPOpenControl(*theControl); + /* all done.... */ + return noErr; +} + + +/* mUPDisposeControl calls mUPCloseControl and then it calls DisposeControl. */ +OSStatus mUPDisposeControl(ControlHandle theControl) { + /* deallocate the mUP specific data */ + mUPCloseControl(theControl); + /* deallocate the user pane control itself */ + DisposeControl(theControl); + return noErr; +} + + + + +/* IsmUPControl returns true if theControl is not NULL + and theControl refers to a mUP Control. */ +Boolean IsmUPControl(ControlHandle theControl) { + Size theSize; + ControlUserPaneFocusUPP localFocusProc; + /* a NULL control is not a mUP control */ + if (theControl == NULL) return false; + /* check if the control is using our focus procedure */ + theSize = sizeof(localFocusProc); + if (GetControlData(theControl, kControlEntireControl, kControlUserPaneFocusProcTag, + sizeof(localFocusProc), &localFocusProc, &theSize) != noErr) return false; + if (localFocusProc != gTPFocusProc) return false; + /* all tests passed, it's a mUP control */ + return true; +} + + +/* mUPDoEditCommand performs the editing command specified + in the editCommand parameter. The mUPControl's text + and scroll bar are redrawn and updated as necessary. */ +void mUPDoEditCommand(ControlHandle theControl, short editCommand) { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* perform the editing command */ + switch (editCommand) { + case kmUPCut: + ClearCurrentScrap(); + TXNCut((**tpvars).fTXNRec); + TXNConvertToPublicScrap(); + break; + case kmUPCopy: + ClearCurrentScrap(); + TXNCopy((**tpvars).fTXNRec); + TXNConvertToPublicScrap(); + break; + case kmUPPaste: + TXNConvertFromPublicScrap(); + TXNPaste((**tpvars).fTXNRec); + break; + case kmUPClear: + TXNClear((**tpvars).fTXNRec); + break; + } +} + + + + +/* mUPGetContents returns the entire contents of the control including the text + and the formatting information. */ +OSStatus mUPGetContents(ControlHandle theControl, Handle *theContents) { + STPTextPaneVars **tpvars; + OSStatus err; + short vRefNum; + long dirID; + FSSpec tspec; + short trefnum; + Boolean texists; + long bytecount; + Handle localdata; + /* set up locals */ + trefnum = 0; + texists = false; + localdata = NULL; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (theContents == NULL) return paramErr; + /* create a temporary file */ + err = FindFolder(kOnSystemDisk, kTemporaryFolderType, true, &vRefNum, &dirID); + if (err != noErr) goto bail; + FSMakeFSSpec(vRefNum, dirID, "\pmUPGetContents", &tspec); + err = FSpCreate(&tspec, 'trsh', 'trsh', smSystemScript); + if (err != noErr) goto bail; + texists = true; + /* open the file */ + err = FSpOpenDF(&tspec, fsRdWrPerm, &trefnum); + if (err != noErr) goto bail; + /* save the data */ + err = TXNSave( (**tpvars).fTXNRec, kTXNTextensionFile, 0, kTXNSystemDefaultEncoding, &tspec, trefnum, 0); + if (err != noErr) goto bail; + /* get the file length and set the position */ + err = GetEOF(trefnum, &bytecount); + if (err != noErr) goto bail; + err = SetFPos(trefnum, fsFromStart, 0); + if (err != noErr) goto bail; + /* copy the data fork to a handle */ + localdata = NewHandle(bytecount); + if (localdata == NULL) { err = memFullErr; goto bail; } + HLock(localdata); + err = FSRead(trefnum, &bytecount, *localdata); + HUnlock(localdata); + if (err != noErr) goto bail; + /* store result */ + *theContents = localdata; + /* clean up */ + FSClose(trefnum); + FSpDelete(&tspec); + /* all done */ + return noErr; +bail: + if (trefnum != 0) FSClose(trefnum); + if (texists) FSpDelete(&tspec); + if (localdata != NULL) DisposeHandle(localdata); + return err; +} + + + + +/* mUPSetContents replaces the contents of the selection with the data stored in the handle. */ +OSStatus mUPSetContents(ControlHandle theControl, Handle theContents) { + STPTextPaneVars **tpvars; + OSStatus err; + short vRefNum; + long dirID; + FSSpec tspec; + short trefnum; + Boolean texists; + long bytecount; + char state; + /* set up locals */ + trefnum = 0; + texists = false; + tpvars = (STPTextPaneVars **) GetControlReference(theControl); + if (theContents == NULL) return paramErr; + /* create a temporary file */ + err = FindFolder(kOnSystemDisk, kTemporaryFolderType, true, &vRefNum, &dirID); + if (err != noErr) goto bail; + FSMakeFSSpec(vRefNum, dirID, "\pmUPSetContents", &tspec); + err = FSpCreate(&tspec, 'trsh', 'trsh', smSystemScript); + if (err != noErr) goto bail; + texists = true; + /* open the file */ + err = FSpOpenDF(&tspec, fsRdWrPerm, &trefnum); + if (err != noErr) goto bail; + /* save the data to the temporary file */ + state = HGetState(theContents); + HLock(theContents); + bytecount = GetHandleSize(theContents); + err = FSWrite(trefnum, &bytecount, *theContents); + HSetState(theContents, state); + if (err != noErr) goto bail; + /* reset the file position */ + err = SetFPos(trefnum, fsFromStart, 0); + if (err != noErr) goto bail; + /* load the data */ + err = TXNSetDataFromFile((**tpvars).fTXNRec, trefnum, kTXNTextensionFile, bytecount, kTXNUseCurrentSelection, kTXNUseCurrentSelection); + if (err != noErr) goto bail; + /* clean up */ + FSClose(trefnum); + FSpDelete(&tspec); + /* all done */ + return noErr; +bail: + if (trefnum != 0) FSClose(trefnum); + if (texists) FSpDelete(&tspec); + return err; +} + +#if !USE_SHARED_LIBRARY +IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) + +BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) + EVT_DROP_FILES(wxTextCtrl::OnDropFiles) + EVT_CHAR(wxTextCtrl::OnChar) + EVT_MENU(wxID_CUT, wxTextCtrl::OnCut) + EVT_MENU(wxID_COPY, wxTextCtrl::OnCopy) + EVT_MENU(wxID_PASTE, wxTextCtrl::OnPaste) + EVT_MENU(wxID_UNDO, wxTextCtrl::OnUndo) + EVT_MENU(wxID_REDO, wxTextCtrl::OnRedo) + + EVT_UPDATE_UI(wxID_CUT, wxTextCtrl::OnUpdateCut) + EVT_UPDATE_UI(wxID_COPY, wxTextCtrl::OnUpdateCopy) + EVT_UPDATE_UI(wxID_PASTE, wxTextCtrl::OnUpdatePaste) + EVT_UPDATE_UI(wxID_UNDO, wxTextCtrl::OnUpdateUndo) + EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo) +END_EVENT_TABLE() +#endif + +// Text item +wxTextCtrl::wxTextCtrl() +{ +} + +const short kVerticalMargin = 2 ; +const short kHorizontalMargin = 2 ; + +bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, + const wxString& st, + const wxPoint& pos, + const wxSize& size, long style, + const wxValidator& validator, + const wxString& name) +{ + // base initialization + if ( !CreateBase(parent, id, pos, size, style, validator, name) ) + return FALSE; + + wxSize mySize = size ; + if ( UMAHasAppearance() ) + { + m_macHorizontalBorder = 5 ; // additional pixels around the real control + m_macVerticalBorder = 5 ; + } + else + { + m_macHorizontalBorder = 0 ; // additional pixels around the real control + m_macVerticalBorder = 0 ; + } + + + Rect bounds ; + Str255 title ; + + if ( mySize.y == -1 ) + { + if ( UMAHasAppearance() ) + mySize.y = 13 ; + else + mySize.y = 24 ; + + mySize.y += 2 * m_macVerticalBorder ; + } + + MacPreControlCreate( parent , id , "" , pos , mySize ,style, validator , name , &bounds , title ) ; + + if ( m_windowStyle & wxTE_MULTILINE ) + { + wxASSERT_MSG( !(m_windowStyle & wxTE_PROCESS_ENTER), + wxT("wxTE_PROCESS_ENTER style is ignored for multiline text controls (they always process it)") ); + + m_windowStyle |= wxTE_PROCESS_ENTER; + } + + + if ( style & wxTE_PASSWORD ) + { + m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, + kControlEditTextPasswordProc , (long) this ) ; + } + else + { + if ( mUPCreateControl(parent->GetMacRootWindow(), &bounds, &m_macControl) != noErr ) + return FALSE ; + } + MacPostControlCreate() ; + + wxString value ; + + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( st ) ; + else + value = st ; + + if ( style & wxTE_PASSWORD ) + { + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNStartOffset, kTXNEndOffset); + } + + return TRUE; +} + +wxString wxTextCtrl::GetValue() const +{ + Size actualsize; + if ( m_windowStyle & wxTE_PASSWORD ) + { + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + } + else + { + STPTextPaneVars **tpvars; + OSStatus err; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* extract the text from the record */ + Handle theText ; + err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); + /* all done */ + if ( err ) + { + actualsize = 0 ; + } + else + { + actualsize = GetHandleSize( theText ) ; + strncpy( wxBuffer , *theText , actualsize ) ; + DisposeHandle( theText ) ; + } + } + wxBuffer[actualsize] = 0 ; + if( wxApp::s_macDefaultEncodingIsPC ) + return wxMacMakePCStringFromMac( wxBuffer ) ; + else + return wxString(wxBuffer); +} + +void wxTextCtrl::GetSelection(long* from, long* to) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + + *from = (**teH).selStart; + *to = (**teH).selEnd; + } + else + { + STPTextPaneVars **tpvars; + + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + + TXNGetSelection( (**tpvars).fTXNRec , (TXNOffset*) from , (TXNOffset*) to ) ; + + } +} + +void wxTextCtrl::SetValue(const wxString& st) +{ + wxString value ; + + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( st ) ; + else + value = st ; + if ( m_windowStyle & wxTE_PASSWORD ) + { + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNStartOffset, kTXNEndOffset); + } + WindowRef window = GetMacRootWindow() ; + if ( window ) + { + wxWindow* win = wxFindWinFromMacWindow( window ) ; + if ( win ) + { + wxMacDrawingHelper help( win ) ; + // the mac control manager always assumes to have the origin at 0,0 + SetOrigin( 0 , 0 ) ; + + bool hasTabBehind = false ; + wxWindow* parent = GetParent() ; + while ( parent ) + { + if( parent->MacGetWindowData() ) + { + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + break ; + } + + if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) )) + { + if ( ((wxControl*)parent)->GetMacControl() ) + SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ; + break ; + } + + parent = parent->GetParent() ; + } + + UMADrawControl( m_macControl ) ; + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + } + } +} + +// Clipboard operations +void wxTextCtrl::Copy() +{ + if (CanCopy()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TECopy( teH ) ; + #if TARGET_CARBON + OSStatus err ; + err = ClearCurrentScrap( ); + #else + OSErr err ; + err = ZeroScrap( ); + #endif + TEToScrap() ; + } + } +} + +void wxTextCtrl::Cut() +{ + if (CanCut()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TECut( teH ) ; + #if TARGET_CARBON + OSStatus err ; + err = ClearCurrentScrap( ); + #else + OSErr err ; + err = ZeroScrap( ); + #endif + TEToScrap() ; + // MacInvalidateControl() ; + } + } +} + +void wxTextCtrl::Paste() +{ + if (CanPaste()) + { + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEFromScrap() ; + TEPaste( teH ) ; + WindowRef window = GetMacRootWindow() ; + if ( window ) + { + wxWindow* win = wxFindWinFromMacWindow( window ) ; + if ( win ) + { + wxMacDrawingHelper help( win ) ; + // the mac control manager always assumes to have the origin at 0,0 + SetOrigin( 0 , 0 ) ; + + bool hasTabBehind = false ; + wxWindow* parent = GetParent() ; + while ( parent ) + { + if( parent->MacGetWindowData() ) + { + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + break ; + } + + if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) )) + { + if ( ((wxControl*)parent)->GetMacControl() ) + SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ; + break ; + } + + parent = parent->GetParent() ; + } + + UMADrawControl( m_macControl ) ; + UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + } + } + } + } +} + +bool wxTextCtrl::CanCopy() const +{ + // Can copy if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to); +} + +bool wxTextCtrl::CanCut() const +{ + // Can cut if there's a selection + long from, to; + GetSelection(& from, & to); + return (from != to); +} + +bool wxTextCtrl::CanPaste() const +{ + if (!IsEditable()) + return FALSE; + + long offset ; +#if TARGET_CARBON + OSStatus err = noErr; + ScrapRef scrapRef; + + err = GetCurrentScrap( &scrapRef ); + if ( err != noTypeErr && err != memFullErr ) + { + ScrapFlavorFlags flavorFlags; + Size byteCount; + + if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr) + { + if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr) + { + return TRUE ; + } + } + } + return FALSE; + +#else + if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 ) + { + return TRUE ; + } +#endif + return FALSE ; +} + +void wxTextCtrl::SetEditable(bool editable) +{ + if ( editable ) + UMAActivateControl( m_macControl ) ; + else + UMADeactivateControl( m_macControl ) ; +} + +void wxTextCtrl::SetInsertionPoint(long pos) +{ + SetSelection( pos , pos ) ; +} + +void wxTextCtrl::SetInsertionPointEnd() +{ + long pos = GetLastPosition(); + SetInsertionPoint(pos); +} + +long wxTextCtrl::GetInsertionPoint() const +{ + long begin,end ; + GetSelection( &begin , &end ) ; + return begin ; +} + +long wxTextCtrl::GetLastPosition() const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + +// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; + return (**teH).teLength ; + } +} + +void wxTextCtrl::Replace(long from, long to, const wxString& value) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ControlEditTextSelectionRec selection ; + + selection.selStart = from ; + selection.selEnd = to ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TESetSelect( from , to , teH ) ; + TEDelete( teH ) ; + TEInsert( value , value.Length() , teH ) ; + } + Refresh() ; +} + +void wxTextCtrl::Remove(long from, long to) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ControlEditTextSelectionRec selection ; + + selection.selStart = from ; + selection.selEnd = to ; + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEDelete( teH ) ; + } + Refresh() ; +} + +void wxTextCtrl::SetSelection(long from, long to) +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + ControlEditTextSelectionRec selection ; + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + + selection.selStart = from ; + selection.selEnd = to ; + + ::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; + TESetSelect( selection.selStart , selection.selEnd , teH ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up our locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* and our drawing environment as the operation + may force a redraw in the text area. */ + SetPort((**tpvars).fDrawingEnvironment); + /* change the selection */ + TXNSetSelection( (**tpvars).fTXNRec, from, to); + } +} + +bool wxTextCtrl::LoadFile(const wxString& file) +{ + if ( wxTextCtrlBase::LoadFile(file) ) + { + return TRUE; + } + + return FALSE; +} + +void wxTextCtrl::WriteText(const wxString& text) +{ + wxString value ; + if( wxApp::s_macDefaultEncodingIsPC ) + value = wxMacMakeMacStringFromPC( text ) ; + else + value = text ; + if ( m_windowStyle & wxTE_PASSWORD ) + { + TEHandle teH ; + long size ; + + ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; + TEInsert( value , value.Length() , teH ) ; + } + else + { + STPTextPaneVars **tpvars; + /* set up locals */ + tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); + /* set the text in the record */ + TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), + kTXNUseCurrentSelection, kTXNUseCurrentSelection); + } + Refresh() ; +} + +void wxTextCtrl::AppendText(const wxString& text) +{ + SetInsertionPointEnd(); + WriteText(text); +} + +void wxTextCtrl::Clear() +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + + ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; + } + Refresh() ; +} + +bool wxTextCtrl::IsModified() const +{ + return TRUE; +} + +bool wxTextCtrl::IsEditable() const +{ + return IsEnabled(); +} + +bool wxTextCtrl::AcceptsFocus() const +{ + // we don't want focus if we can't be edited + return IsEditable() && wxControl::AcceptsFocus(); +} + +wxSize wxTextCtrl::DoGetBestSize() const +{ + int wText = 100 ; + + int hText ; + if ( UMAHasAppearance() ) + hText = 13 ; + else + hText = 24 ; + hText += 2 * m_macHorizontalBorder ; +/* + int cx, cy; + wxGetCharSize(GetHWND(), &cx, &cy, &GetFont()); + + int wText = DEFAULT_ITEM_WIDTH; + + int hText = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy); + + return wxSize(wText, hText); +*/ + if ( m_windowStyle & wxTE_MULTILINE ) + { + hText *= wxMin(GetNumberOfLines(), 5); + } + //else: for single line control everything is ok + return wxSize(wText, hText); +} + +// ---------------------------------------------------------------------------- +// Undo/redo +// ---------------------------------------------------------------------------- + +void wxTextCtrl::Undo() +{ + if (CanUndo()) + { + } +} + +void wxTextCtrl::Redo() +{ + if (CanRedo()) + { + } +} + +bool wxTextCtrl::CanUndo() const +{ + return FALSE ; +} + +bool wxTextCtrl::CanRedo() const +{ + return FALSE ; +} + +// Makes 'unmodified' +void wxTextCtrl::DiscardEdits() +{ + // TODO +} + +int wxTextCtrl::GetNumberOfLines() const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + int count = 1; + for (int i = 0; i < actualsize; i++) + { + if (wxBuffer[i] == '\r') count++; + } + + return count; + } +} + +long wxTextCtrl::XYToPosition(long x, long y) const +{ + // TODO + return 0; +} + +bool wxTextCtrl::PositionToXY(long pos, long *x, long *y) const +{ + return FALSE ; +} + +void wxTextCtrl::ShowPosition(long pos) +{ + // TODO +} + +int wxTextCtrl::GetLineLength(long lineNo) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + // Find line first + int count = 0; + for (int i = 0; i < actualsize; i++) + { + if (count == lineNo) + { + // Count chars in line then + count = 0; + for (int j = i; j < actualsize; j++) + { + count++; + if (wxBuffer[j] == '\r') return count; + } + + return count; + } + if (wxBuffer[i] == '\r') count++; + } + } + return 0; +} + +wxString wxTextCtrl::GetLineText(long lineNo) const +{ + if ( m_windowStyle & wxTE_PASSWORD ) + { + Size actualsize; + ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; + + // Find line first + int count = 0; + for (int i = 0; i < actualsize; i++) + { + if (count == lineNo) + { + // Add chars in line then + wxString tmp(""); + + for (int j = i; j < actualsize; j++) + { + if (wxBuffer[j] == '\r') + return tmp; + + tmp += wxBuffer[j]; + } + + return tmp; + } + if (wxBuffer[i] == '\r') count++; + } + } + return wxString(""); +} + +/* + * Text item + */ + +void wxTextCtrl::Command(wxCommandEvent & event) +{ + SetValue (event.GetString()); + ProcessCommand (event); +} + +void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) +{ + // By default, load the first file into the text window. + if (event.GetNumberOfFiles() > 0) + { + LoadFile(event.GetFiles()[0]); + } +} + +void wxTextCtrl::OnChar(wxKeyEvent& event) +{ + switch ( event.KeyCode() ) + { + case WXK_RETURN: + if (m_windowStyle & wxPROCESS_ENTER) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); + event.SetEventObject( this ); + if ( GetEventHandler()->ProcessEvent(event) ) + return; + } + if ( !(m_windowStyle & wxTE_MULTILINE) ) + { + wxWindow *parent = GetParent(); + wxPanel *panel = wxDynamicCast(parent, wxPanel); + while ( parent != NULL && panel == NULL ) + { + parent = parent->GetParent() ; + panel = wxDynamicCast(parent, wxPanel); + } + if ( panel && panel->GetDefaultItem() ) + { + wxButton *def = wxDynamicCast(panel->GetDefaultItem(), + wxButton); + if ( def && def->IsEnabled() ) + { + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() ); + event.SetEventObject(def); + def->Command(event); + return ; + } + } + } + //else: multiline controls need Enter for themselves + + break; + + case WXK_TAB: + // always produce navigation event - even if we process TAB + // ourselves the fact that we got here means that the user code + // decided to skip processing of this TAB - probably to let it + // do its default job. + { + wxNavigationKeyEvent eventNav; + eventNav.SetDirection(!event.ShiftDown()); + eventNav.SetWindowChange(event.ControlDown()); + eventNav.SetEventObject(this); + + if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) ) + return; + event.Skip() ; + return ; + } + break; + } + + EventRecord *ev = wxTheApp->MacGetCurrentEvent() ; + short keycode ; + short keychar ; + keychar = short(ev->message & charCodeMask); + keycode = short(ev->message & keyCodeMask) >> 8 ; + UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; + if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK) + { + wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); + event.SetString( GetValue() ) ; + event.SetEventObject( this ); + GetEventHandler()->ProcessEvent(event); + } + +} + +// ---------------------------------------------------------------------------- +// standard handlers for standard edit menu events +// ---------------------------------------------------------------------------- + +void wxTextCtrl::OnCut(wxCommandEvent& event) +{ + Cut(); +} + +void wxTextCtrl::OnCopy(wxCommandEvent& event) +{ + Copy(); +} + +void wxTextCtrl::OnPaste(wxCommandEvent& event) +{ + Paste(); +} + +void wxTextCtrl::OnUndo(wxCommandEvent& event) +{ + Undo(); +} + +void wxTextCtrl::OnRedo(wxCommandEvent& event) +{ + Redo(); +} + +void wxTextCtrl::OnUpdateCut(wxUpdateUIEvent& event) +{ + event.Enable( CanCut() ); +} + +void wxTextCtrl::OnUpdateCopy(wxUpdateUIEvent& event) +{ + event.Enable( CanCopy() ); +} + +void wxTextCtrl::OnUpdatePaste(wxUpdateUIEvent& event) +{ + event.Enable( CanPaste() ); +} + +void wxTextCtrl::OnUpdateUndo(wxUpdateUIEvent& event) +{ + event.Enable( CanUndo() ); +} + +void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event) +{ + event.Enable( CanRedo() ); +} + +#endif + #endif // wxUSE_TEXTCTRL diff --git a/src/mac/toolbar.cpp b/src/mac/toolbar.cpp index 984b5ab8d2..7ee92b143c 100644 --- a/src/mac/toolbar.cpp +++ b/src/mac/toolbar.cpp @@ -19,6 +19,7 @@ #include "wx/toolbar.h" #include "wx/notebook.h" #include "wx/tabctrl.h" +#include "wx/bitmap.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) @@ -160,90 +161,6 @@ wxToolBar::~wxToolBar() // is not - otherwise toolbar leaves a hole in the place it used to occupy } -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) ; -PicHandle MakePict(GWorldPtr wp, GWorldPtr mask ) -{ - CGrafPtr origPort ; - GDHandle origDev ; - - PicHandle pict; // this is the Picture we give back - - RGBColor gray = { 0xCCCC ,0xCCCC , 0xCCCC } ; - RGBColor white = { 0xffff ,0xffff , 0xffff } ; - RGBColor black = { 0x0000 ,0x0000 , 0x0000 } ; - - unsigned char *maskimage = NULL ; - Rect portRect ; - GetPortBounds( wp , &portRect ) ; - int width = portRect.right - portRect.left ; - int height = portRect.bottom - portRect.top ; - - LockPixels( GetGWorldPixMap( wp ) ) ; - GetGWorld( &origPort , &origDev ) ; - - if ( mask ) - { - - maskimage = (unsigned char*) malloc( width * height ) ; - SetGWorld( mask , NULL ) ; - LockPixels( GetGWorldPixMap( mask ) ) ; - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - maskimage[y*width + x] = ( col.red == 0 ) ; // for monochrome masks - } - } - UnlockPixels( GetGWorldPixMap( mask ) ) ; - } - - SetGWorld( wp , NULL ) ; - - pict = OpenPicture(&portRect); // open a picture, this disables drawing - if(!pict) - return NULL; - - RGBBackColor( &gray ) ; - RGBForeColor( &black ) ; - EraseRect(&portRect) ; - RGBBackColor( &white ) ; - - if ( maskimage ) - { - for ( int y = 0 ; y < height ; ++y ) - { - for( int x = 0 ; x < width ; ++x ) - { - if ( maskimage[y*width + x] ) - { - RGBColor col ; - - GetCPixel( x + portRect.left , y + portRect.top , &col ) ; - SetCPixel( x + portRect.left , y + portRect.top , &col ) ; - } - } - } - free( maskimage ) ; - maskimage = NULL ; - } - else - { - CopyBits(GetPortBitMapForCopyBits(wp), // src PixMap - we copy image over itself - - GetPortBitMapForCopyBits(wp), // dst PixMap - no drawing occurs - - &portRect, // srcRect - it will be recorded and compressed - - &portRect, // dstRect - into the picture that is open - - srcCopy,NULL); // copyMode and no clip region - - } - ClosePicture(); // We are done recording the picture - UnlockPixels( GetGWorldPixMap( wp ) ) ; - SetGWorld( origPort , origDev ) ; - return pict; // return our groovy pict handle -} - bool wxToolBar::Realize() { if (m_tools.Number() == 0) @@ -284,20 +201,27 @@ bool wxToolBar::Realize() toolrect.right = toolrect.left + toolSize.x ; toolrect.bottom = toolrect.top + toolSize.y ; - PicHandle icon = NULL ; + ControlButtonContentInfo info ; if ( bmap ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) - icon = bmap->m_hPict ; + { + info.contentType = kControlContentPictHandle ; + info.u.picture = bmap->m_hPict ; + } else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) { if ( tool->GetBitmap1().GetMask() ) { - icon = MakePict( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() , + 8 , 16 ) ; } else { - icon = MakePict( bmap->m_hBitmap , NULL ) ; + info.contentType = kControlContentCIconHandle ; + info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , + 8 , 16 ) ; } } } @@ -308,20 +232,16 @@ bool wxToolBar::Realize() if ( tool->CanBeToggled() ) behaviour += kControlBehaviorToggles ; - if ( icon ) + if ( info.u.cIconHandle ) // since it is a handle we can use one of them { - m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , - behaviour + kControlContentPictHandle , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; - ControlButtonContentInfo info ; + m_macToolHandle = ::NewControl( window , &toolrect , "\p" , false , 0 , + behaviour + info.contentType , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; - info.contentType = kControlContentPictHandle ; - info.u.picture = icon ; - - UMASetControlData( m_macToolHandle , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; + ::SetControlData( m_macToolHandle , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; } else { - m_macToolHandle = UMANewControl( window , &toolrect , "\p" , false , 0 , + m_macToolHandle = ::NewControl( window , &toolrect , "\p" , false , 0 , behaviour , 0 , kControlBevelButtonNormalBevelProc , (long) this ) ; } UMAShowControl( m_macToolHandle ) ; @@ -335,10 +255,16 @@ bool wxToolBar::Realize() { ::SetControlValue( m_macToolHandle , 1 ) ; } - UMASetControlFontStyle( m_macToolHandle , &controlstyle ) ; + else + { + ::SetControlValue( m_macToolHandle , 0 ) ; + } + /* + ::SetControlFontStyle( m_macToolHandle , &controlstyle ) ; + */ ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; wxASSERT_MSG( container != NULL , "No valid mac container control" ) ; - UMAEmbedControl( m_macToolHandle , container ) ; + ::EmbedControl( m_macToolHandle , container ) ; x += (int)toolSize.x; noButtons ++; @@ -458,7 +384,7 @@ void wxToolBar::MacSuperChangedPosition() { WindowRef rootwindow = GetMacRootWindow() ; wxWindow* wxrootwindow = wxFindWinFromMacWindow( rootwindow ) ; - UMASetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDialogBackgroundActive , false ) ; wxMacDrawingHelper focus( wxrootwindow ) ; while (node) { @@ -515,7 +441,7 @@ void wxToolBar::MacSuperChangedPosition() } else { - UMASetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( rootwindow , kThemeBrushDocumentWindowBackground , false ) ; } } @@ -647,7 +573,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event) { if( parent->MacGetWindowData() ) { - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ; break ; } @@ -675,7 +601,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event) } } } - UMASetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ; } } @@ -718,13 +644,13 @@ void wxToolBar::OnMouse( wxMouseEvent &event ) controlpart = FindControl( localwhere , window , &control ) ; { - if ( control && UMAIsControlActive( control ) ) + if ( control && ::IsControlActive( control ) ) { { if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() ) - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ; else - controlpart = UMAHandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; + controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ; wxTheApp->s_lastMouseDown = 0 ; if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) ) && (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice diff --git a/src/mac/tooltip.cpp b/src/mac/tooltip.cpp index 6787a92315..695582839c 100644 --- a/src/mac/tooltip.cpp +++ b/src/mac/tooltip.cpp @@ -271,12 +271,12 @@ void wxMacToolTip::Draw() NULL); ClosePicture(); - RGBColor yellow = { 0xFFFF , 0xFFFF , (153<<8)+153 } ; - RGBBackColor( &yellow ) ; - EraseRect( &m_rect ) ; + PenNormal() ; + SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ; + BackColor( yellowColor ) ; + ForeColor(magentaColor ) ; +// EraseRect( &m_rect ) ; FrameRect( &m_rect ) ; - BackColor( whiteColor ) ; - ForeColor(blackColor ) ; ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder); i = 0 ; diff --git a/src/mac/uma.cpp b/src/mac/uma.cpp index 2c70ef47b7..60b61374a0 100644 --- a/src/mac/uma.cpp +++ b/src/mac/uma.cpp @@ -1,19 +1,16 @@ #include "wx/defs.h" #include "wx/dc.h" #include "wx/mac/uma.h" -#include "wx/mac/aga.h" #ifndef __DARWIN__ #include #endif -// init - -#if !TARGET_CARBON -#define GetControlOwner( control ) (**control).contrlOwner -// since we always call this in the right context we don't have to set and reset the port -#define InvalWindowRgn( window , rgn ) InvalRgn( rgn ) -#endif +// since we have decided that we only support 8.6 upwards we are +// checking for these minimum requirements in the startup code of +// the application so all wxWindows code can safely assume that appearance 1.1 +// windows manager, control manager, navigation services etc. are +// present static bool sUMAHasAppearance = false ; static long sUMAAppearanceVersion = 0 ; @@ -26,14 +23,13 @@ static long sUMAWindowManagerAttr = 0 ; bool UMAHasWindowManager() { return sUMAHasWindowManager ; } long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; } + void UMACleanupToolbox() { -#if UMA_USE_APPEARANCE if ( sUMAHasAppearance ) { UnregisterAppearanceClient() ; } -#endif if ( NavServicesAvailable() ) { NavUnload() ; @@ -59,7 +55,6 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) InitCursor(); #endif -#if UMA_USE_APPEARANCE long theAppearance ; if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) { @@ -74,15 +69,10 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls ) sUMAAppearanceVersion = 0x0100 ; } } -#endif // UMA_USE_APPEARANCE -#if UMA_USE_8_6 -#if UMA_USE_WINDOWMGR if ( Gestalt( gestaltWindowMgrAttr, &sUMAWindowManagerAttr ) == noErr ) { sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ; } -#endif // UMA_USE_WINDOWMGR -#endif #ifndef __DARWIN__ #if TARGET_CARBON @@ -156,38 +146,17 @@ void UMASetMenuTitle( MenuRef menu , StringPtr title ) UInt32 UMAMenuEvent( EventRecord *inEvent ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { return MenuEvent( inEvent ) ; - } - else -#endif - { - if ( inEvent->what == keyDown && inEvent->modifiers & cmdKey) - { - return MenuKey( inEvent->message & charCodeMask ) ; - } - return NULL ; - } } void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) { -#if UMA_USE_8_6 || TARGET_CARBON EnableMenuItem( inMenu , inItem ) ; -#else - EnableItem( inMenu , inItem ) ; -#endif } void UMADisableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) { -#if UMA_USE_8_6 || TARGET_CARBON DisableMenuItem( inMenu , inItem ) ; -#else - DisableItem( inMenu , inItem ) ; -#endif } void UMAAppendSubMenuItem( MenuRef menu , StringPtr l , SInt16 id ) @@ -254,37 +223,6 @@ void UMAInsertMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SInt16 MacInsertMenuItem( menu , label , item) ; } -void UMADrawMenuBar() -{ - DrawMenuBar() ; -} - - -void UMASetMenuItemText( MenuRef menu , MenuItemIndex item , StringPtr label ) -{ - ::SetMenuItemText( menu , item , label ) ; -} - -MenuRef UMANewMenu( SInt16 menuid , StringPtr label ) -{ - return ::NewMenu(menuid, label); -} - -void UMADisposeMenu( MenuRef menu ) -{ - DisposeMenu( menu ) ; -} -void UMADeleteMenu( SInt16 menuId ) -{ - ::DeleteMenu( menuId ) ; -} - -void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId ) -{ - ::InsertMenu( insertMenu , afterId ) ; -} - - // quickdraw int gPrOpenCounter = 0 ; @@ -357,6 +295,7 @@ OSStatus UMAPrClose() #if !TARGET_CARBON +pascal QDGlobalsPtr GetQDGlobalsPtr (void) ; pascal QDGlobalsPtr GetQDGlobalsPtr (void) { return QDGlobalsPtr (* (Ptr*) LMGetCurrentA5 ( ) - 0xCA); @@ -375,11 +314,12 @@ void UMAShowWatchCursor() else { #if TARGET_CARBON - Cursor preservedArrow; - GetQDGlobalsArrow (&preservedArrow); - SetQDGlobalsArrow (*watchFob); - InitCursor ( ); - SetQDGlobalsArrow (&preservedArrow); +// Cursor preservedArrow; +// GetQDGlobalsArrow (&preservedArrow); +// SetQDGlobalsArrow (*watchFob); +// InitCursor ( ); +// SetQDGlobalsArrow (&preservedArrow); + SetCursor (*watchFob); #else SetCursor (*watchFob); #endif @@ -437,48 +377,11 @@ void UMAGetWTitleC( WindowRef inWindowRef , char *title ) #endif } -void UMAShowWindow( WindowRef inWindowRef ) -{ - ShowWindow( inWindowRef ) ; - -} - -void UMAHideWindow( WindowRef inWindowRef ) -{ - HideWindow( inWindowRef) ; -} - -void UMASelectWindow( WindowRef inWindowRef ) -{ - SelectWindow( inWindowRef ) ; -} - -void UMABringToFront( WindowRef inWindowRef ) -{ - BringToFront( inWindowRef ) ; -} - -void UMASendBehind( WindowRef inWindowRef , WindowRef behindWindow ) -{ - SendBehind( inWindowRef , behindWindow ) ; -} - -void UMACloseWindow(WindowRef inWindowRef) -{ -#if TARGET_CARBON -#else - CloseWindow( inWindowRef ) ; -#endif -} - // appearance additions void UMAActivateControl( ControlHandle inControl ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - if ( !UMAIsControlActive( inControl ) ) + if ( !IsControlActive( inControl ) ) { bool visible = IsControlVisible( inControl ) ; if ( visible ) @@ -490,376 +393,77 @@ void UMAActivateControl( ControlHandle inControl ) InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; } } - } - else -#endif -#if !TARGET_CARBON - { - AGAActivateControl( inControl ) ; - } -#else - { - } -#endif } void UMADrawControl( ControlHandle inControl ) { WindowRef theWindow = GetControlOwner(inControl) ; RgnHandle updateRgn = NewRgn() ; -#if TARGET_CARBON - GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ; -#else GetWindowUpdateRgn( theWindow , updateRgn ) ; -#endif Point zero = { 0 , 0 } ; LocalToGlobal( &zero ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::DrawControlInCurrentPort( inControl ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGADrawControl( inControl ) ; - } -#else - { - } -#endif -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332) - InvalWindowRgn( theWindow, updateRgn) ; -#else - InvalRgn( updateRgn ) ; -#endif + ::DrawControlInCurrentPort( inControl ) ; + InvalWindowRgn( theWindow, updateRgn) ; DisposeRgn( updateRgn ) ; } void UMAMoveControl( ControlHandle inControl , short x , short y ) { - if ( UMAHasAppearance() ) - { - bool visible = UMAIsControlVisible( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , false , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - ::MoveControl( inControl , x , y ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } + bool visible = IsControlVisible( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , false , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } + ::MoveControl( inControl , x , y ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } void UMASizeControl( ControlHandle inControl , short x , short y ) { - if ( UMAHasAppearance() ) - { - bool visible = UMAIsControlVisible( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , false , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - ::SizeControl( inControl , x , y ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } + bool visible = IsControlVisible( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , false , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } + ::SizeControl( inControl , x , y ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } void UMADeactivateControl( ControlHandle inControl ) { - if ( UMAHasAppearance() ) - { - if ( UMAIsControlActive( inControl ) ) - { - bool visible = IsControlVisible( inControl ) ; - if ( visible ) - SetControlVisibility( inControl , false , false ) ; - ::DeactivateControl( inControl ) ; - if ( visible ) { - SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } - } - } -} - -void UMASetThemeWindowBackground (WindowRef inWindow, - ThemeBrush inBrush, - Boolean inUpdate) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::SetThemeWindowBackground( inWindow ,inBrush , inUpdate ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGASetThemeWindowBackground( inWindow , inBrush , inUpdate ) ; - } -#else - { - } -#endif -} - -void UMAApplyThemeBackground (ThemeBackgroundKind inKind, - const Rect * bounds, - ThemeDrawState inState, - SInt16 inDepth, - Boolean inColorDev) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - /* - if ( sUMAAppearanceVersion >= 0x0110 ) - ::ApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ; - */ - } - else -#endif -#if !TARGET_CARBON + if ( IsControlActive( inControl ) ) { - AGAApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ; - } -#else - { - } -#endif -} - -ControlHandle UMANewControl(WindowPtr owningWindow, - const Rect * boundsRect, - ConstStr255Param controlTitle, - Boolean initiallyVisible, - SInt16 initialValue, - SInt16 minimumValue, - SInt16 maximumValue, - SInt16 procID, - SInt32 controlReference) -{ - ControlHandle theControl = NULL ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - theControl = NewControl( owningWindow , boundsRect , controlTitle , initiallyVisible , - initialValue , minimumValue , maximumValue , procID , controlReference ) ; - } - else -#endif -#if !TARGET_CARBON - { - theControl = AGANewControl( owningWindow , boundsRect , controlTitle , initiallyVisible , - initialValue , minimumValue , maximumValue , procID , controlReference ) ; - } -#else - { - } -#endif - return theControl ; -} - -void UMADisposeControl (ControlHandle theControl) -{ - if ( UMAHasAppearance() ) - { - ::DisposeControl( theControl ) ; - } - else - { - ::DisposeControl( theControl ) ; + bool visible = IsControlVisible( inControl ) ; + if ( visible ) + SetControlVisibility( inControl , false , false ) ; + ::DeactivateControl( inControl ) ; + if ( visible ) { + SetControlVisibility( inControl , true , false ) ; + Rect ctrlBounds ; + InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; + } } } - -void UMAHiliteControl (ControlHandle inControl, - ControlPartCode hiliteState) -{ - if ( UMAHasAppearance() ) - { - ::HiliteControl( inControl , hiliteState ) ; - } - else - { - ::HiliteControl( inControl , hiliteState ) ; - } -} - // shows the control and adds the region to the update region void UMAShowControl (ControlHandle inControl) { - if ( UMAHasAppearance() ) - { SetControlVisibility( inControl , true , false ) ; Rect ctrlBounds ; InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; - } } -// Hides the control and adds the region to the update region -void UMAHideControl (ControlHandle inControl) -{ - if ( UMAHasAppearance() ) - { - ::HideControl( inControl ) ; - } - else - { - ::HideControl( inControl ) ; - } -} - - -void UMASetControlVisibility (ControlHandle inControl, - Boolean inIsVisible, - Boolean inDoDraw) -{ - if ( UMAHasAppearance() ) - { -#if UMA_USE_APPEARANCE - ::SetControlVisibility( inControl , inIsVisible, inDoDraw ) ; -#endif - } -} - - - -bool UMAIsControlActive (ControlHandle inControl) -{ -#if TARGET_CARBON - return IsControlActive( inControl ) ; -#else -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return IsControlActive( inControl ) ; - } - else -#endif - return (**inControl).contrlHilite == 0 ; -#endif -} - - -bool UMAIsControlVisible (ControlHandle inControl) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return IsControlVisible( inControl ) ; - } - else -#endif - { -#if !TARGET_CARBON - return (**inControl).contrlVis == 255 ; -#endif - } - return true ; -} - -OSErr UMAGetBestControlRect (ControlHandle inControl, - Rect * outRect, - SInt16 * outBaseLineOffset) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetBestControlRect( inControl , outRect , outBaseLineOffset ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetBestControlRect( inControl , outRect , outBaseLineOffset ) ; - } -#else - { - return noErr ; - } -#endif -} - - -OSErr UMASetControlFontStyle (ControlHandle inControl, - const ControlFontStyleRec * inStyle) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return ::SetControlFontStyle( inControl , inStyle ) ; - } - else -#endif -#if !TARGET_CARBON - return AGASetControlFontStyle( inControl , inStyle ) ; -#else - { - return noErr ; - } -#endif -} - - - -// control hierarchy - -OSErr UMACreateRootControl (WindowPtr inWindow, - ControlHandle * outControl) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return CreateRootControl( inWindow , outControl ) ; - } - else -#endif -#if !TARGET_CARBON - return AGACreateRootControl( inWindow , outControl ) ; -#else - { - return noErr ; - } -#endif -} - - - -OSErr UMAEmbedControl (ControlHandle inControl, - ControlHandle inContainer) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return EmbedControl( inControl , inContainer ) ; - } - else -#endif -#if !TARGET_CARBON - return AGAEmbedControl( inControl , inContainer ) ; ; -#else - { - return noErr ; - } -#endif -} - - - // keyboard focus OSErr UMASetKeyboardFocus (WindowPtr inWindow, ControlHandle inControl, @@ -868,25 +472,11 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, OSErr err = noErr; GrafPtr port ; GetPort( &port ) ; -#if TARGET_CARBON - SetPort( GetWindowPort( inWindow ) ) ; -#else - SetPort( inWindow ) ; -#endif + + SetPortWindowPort( inWindow ) ; + SetOrigin( 0 , 0 ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - err = SetKeyboardFocus( inWindow , inControl , inPart ) ; - } - else -#endif -#if !TARGET_CARBON - err = AGASetKeyboardFocus( inWindow , inControl , inPart ) ; -#else - { - } -#endif + err = SetKeyboardFocus( inWindow , inControl , inPart ) ; SetPort( port ) ; return err ; } @@ -895,520 +485,26 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, // events - -ControlPartCode UMAHandleControlClick (ControlHandle inControl, - Point inWhere, - SInt16 inModifiers, - ControlActionUPP inAction) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return HandleControlClick( inControl , inWhere , inModifiers , inAction ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAHandleControlClick( inControl , inWhere , inModifiers , inAction ) ; - } -#else - { - return noErr ; - } -#endif -} - - -SInt16 UMAHandleControlKey (ControlHandle inControl, - SInt16 inKeyCode, - SInt16 inCharCode, - SInt16 inModifiers) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return HandleControlKey( inControl , inKeyCode , inCharCode , inModifiers ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAHandleControlKey(inControl , inKeyCode , inCharCode , inModifiers ) ; - } -#else - { - return noErr ; - } -#endif -} - - - -void UMAIdleControls (WindowPtr inWindow) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - IdleControls( inWindow ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGAIdleControls( inWindow ) ; - } -#else - { - } -#endif -} - void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) { - RgnHandle updateRgn = NewRgn() ; -#if TARGET_CARBON - GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) ; -#else - GetWindowUpdateRgn( inWindow , updateRgn ) ; -#endif + RgnHandle updateRgn = NewRgn() ; + GetWindowUpdateRgn( inWindow , updateRgn ) ; + Point zero = { 0 , 0 } ; LocalToGlobal( &zero ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ; -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - UpdateControls( inWindow , inRgn ) ; - } - else -#endif -#if !TARGET_CARBON - { - AGAUpdateControls( inWindow , inRgn ) ; - } -#else - { - } -#endif -#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332) - InvalWindowRgn( inWindow, updateRgn) ; -#else - InvalRgn( updateRgn ) ; -#endif - DisposeRgn( updateRgn ) ; - -} - -OSErr UMAGetRootControl( WindowPtr inWindow , ControlHandle *outControl ) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetRootControl( inWindow , outControl ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetRootControl( inWindow , outControl ) ; - } -#else - { - return noErr ; - } -#endif -} - - -// handling control data - -OSErr UMASetControlData (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size inSize, - Ptr inData) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return SetControlData( inControl , inPart , inTagName , inSize , inData ) ; - } - else -#endif -#if !TARGET_CARBON - return AGASetControlData( inControl , inPart , inTagName , inSize , inData ) ; -#else - { - return noErr ; - } -#endif -} - - - -OSErr UMAGetControlData (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size inBufferSize, - Ptr outBuffer, - Size * outActualSize) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return ::GetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ; - } -#else - { - return noErr ; - } -#endif -} - - -OSErr UMAGetControlDataSize (ControlHandle inControl, - ControlPartCode inPart, - ResType inTagName, - Size * outMaxSize) -{ -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - return GetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ; - } - else -#endif -#if !TARGET_CARBON - { - return AGAGetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ; - } -#else - { - return noErr ; - } -#endif -} - - - - - -// system 8.0 changes -short UMAFindWindow( Point inPoint , WindowRef *outWindow ) -{ - // todo add the additional area codes - return FindWindow( inPoint , outWindow ) ; -} - -OSStatus UMAGetWindowFeatures( WindowRef inWindowRef , UInt32 *outFeatures ) -{ -#if UMA_USE_WINDOWMGR - return GetWindowFeatures( inWindowRef , outFeatures ) ; -#else - return 0 ; -#endif -} - -OSStatus UMAGetWindowRegion( WindowRef inWindowRef , WindowRegionCode inRegionCode , RgnHandle ioWinRgn ) -{ -#if UMA_USE_WINDOWMGR - return GetWindowRegion( inWindowRef , inRegionCode , ioWinRgn ) ; -#else - return 0 ; -#endif -} - -void UMADrawGrowIcon( WindowRef inWindowRef ) -{ - DrawGrowIcon( inWindowRef ) ; -} - -OSStatus UMACollapseWindow( WindowRef inWindowRef , Boolean inCollapseIt ) -{ - return CollapseWindow( inWindowRef , inCollapseIt ) ; -} - -OSStatus UMACollapseAllWindows( Boolean inCollapseEm ) -{ - return CollapseAllWindows( inCollapseEm ) ; -} - -Boolean UMAIsWindowCollapsed( WindowRef inWindowRef ) -{ - return IsWindowCollapsed( inWindowRef ) ; -} - -Boolean UMAIsWindowCollapsable( WindowRef inWindowRef ) -{ - return IsWindowCollapsable( inWindowRef ) ; -} - -// system 8.5 changes -OSStatus UMACreateNewWindow( WindowClass windowClass , WindowAttributes attributes , const Rect *bounds, WindowRef *outWindow ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return CreateNewWindow( windowClass , attributes, bounds, outWindow ) ; - } - else -#endif - { - short procID ; - if ( UMAHasAppearance() ) - { - switch( windowClass ) - { - case kMovableModalWindowClass : - procID = kWindowMovableModalDialogProc; - break ; - case kModalWindowClass : - procID = kWindowShadowDialogProc; - break ; - case kFloatingWindowClass : - if ( attributes & kWindowSideTitlebarAttribute ) - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFloatSideFullZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFloatSideFullZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowFloatSideGrowProc; - } - else - { - procID = kWindowFloatSideProc; - } - } - else - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFloatFullZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFloatFullZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowFloatGrowProc; - } - else - { - procID = kWindowFloatProc; - } - } - break ; - case kDocumentWindowClass : - default : - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = kWindowFullZoomGrowDocumentProc; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = kWindowFullZoomDocumentProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = kWindowGrowDocumentProc; - } - else - { - procID = kWindowDocumentProc; - } - break ; - } - } - else - { - switch( windowClass ) - { - case kMovableModalWindowClass : - procID = movableDBoxProc; - break ; - case kModalWindowClass : - procID = altDBoxProc; - break ; - case kFloatingWindowClass : - if ( attributes & kWindowSideTitlebarAttribute ) - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = floatSideZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = floatSideZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = floatSideGrowProc; - } - else - { - procID = floatSideProc; - } - } - else - { - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = floatZoomGrowProc ; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = floatZoomProc; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = floatGrowProc; - } - else - { - procID = floatProc; - } - } - break ; - case kDocumentWindowClass : - default : - if( ( attributes & kWindowResizableAttribute ) && - ( attributes & kWindowFullZoomAttribute ) ) - { - procID = zoomDocProc; - } - else if( attributes & kWindowFullZoomAttribute ) - { - procID = zoomNoGrow; - } - else if ( attributes & kWindowResizableAttribute ) - { - procID = documentProc; - } - else - { - procID = noGrowDocProc; - } - break ; - break ; - } - } - *outWindow = NewCWindow(nil, bounds, "\p", false, procID, (WindowRef) -1 /*behind*/, - attributes & kWindowCloseBoxAttribute , (long)NULL); - return noErr ; - } -} - -OSStatus UMAGetWindowClass( WindowRef inWindowRef , WindowClass *outWindowClass ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return GetWindowClass( inWindowRef , outWindowClass ) ; - } - else -#endif - return kDocumentWindowClass ; -} - -OSStatus UMAGetWindowAttributes( WindowRef inWindowRef , WindowAttributes *outAttributes ) -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return GetWindowAttributes( inWindowRef , outAttributes ) ; - } -#endif - return kWindowNoAttributes ; -} - -void UMAShowFloatingWindows() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - ShowFloatingWindows() ; - } -#endif -} - -void UMAHideFloatingWindows() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - HideFloatingWindows() ; - } -#endif -} - -Boolean UMAAreFloatingWindowsVisible() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return AreFloatingWindowsVisible() ; - } -#endif - return false ; -} - -WindowRef UMAFrontNonFloatingWindow() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return FrontNonFloatingWindow() ; - } - else -#endif - { - return FrontWindow() ; - } -} - -WindowRef UMAFrontWindow() -{ -#if UMA_USE_WINDOWMGR - if ( UMAHasWindowManager() ) - { - return FrontWindow() ; - } - else -#endif - { - return FrontWindow() ; - } -} + UpdateControls( inWindow , inRgn ) ; + InvalWindowRgn( inWindow, updateRgn) ; + DisposeRgn( updateRgn ) ; -WindowRef UMAGetActiveNonFloatingWindow() -{ - return NULL ; } bool UMAIsWindowFloating( WindowRef inWindow ) { WindowClass cl ; - UMAGetWindowClass( inWindow , &cl ) ; + GetWindowClass( inWindow , &cl ) ; return cl == kFloatingWindowClass ; } @@ -1416,7 +512,7 @@ bool UMAIsWindowModal( WindowRef inWindow ) { WindowClass cl ; - UMAGetWindowClass( inWindow , &cl ) ; + GetWindowClass( inWindow , &cl ) ; return cl < kFloatingWindowClass ; } @@ -1430,15 +526,11 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) // if ( inActivate != isHightlited ) GrafPtr port ; GetPort( &port ) ; -#if TARGET_CARBON - SetPort( GetWindowPort( inWindowRef ) ) ; -#else - SetPort( inWindowRef ) ; -#endif + SetPortWindowPort( inWindowRef ) ; SetOrigin( 0 , 0 ) ; HiliteWindow( inWindowRef , inActivate ) ; ControlHandle control = NULL ; - UMAGetRootControl( inWindowRef , & control ) ; + ::GetRootControl( inWindowRef , & control ) ; if ( control ) { if ( inActivate ) @@ -1451,20 +543,6 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) } OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) { -#if UMA_USE_APPEARANCE - if ( UMAHasAppearance() ) - { - ::DrawThemePlacard( inRect , inState ) ; - } - else -#endif -#if !TARGET_CARBON - { - } -#else - { - } -#endif - return noErr ; + return ::DrawThemePlacard( inRect , inState ) ; } diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 40f2f2a960..41c65765be 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -774,8 +774,8 @@ bool wxWindowMac::Show(bool show) { if (show) { - UMAShowWindow( m_macWindowData->m_macWindow ) ; - UMASelectWindow( m_macWindowData->m_macWindow ) ; + ::ShowWindow( m_macWindowData->m_macWindow ) ; + ::SelectWindow( m_macWindowData->m_macWindow ) ; // no need to generate events here, they will get them triggered by macos // actually they should be , but apparently they are not wxSize size(m_width, m_height); @@ -785,7 +785,7 @@ bool wxWindowMac::Show(bool show) } else { - UMAHideWindow( m_macWindowData->m_macWindow ) ; + ::HideWindow( m_macWindowData->m_macWindow ) ; } } MacSuperShown( show ) ; @@ -1179,7 +1179,7 @@ void wxWindowMac::MacCreateRealWindow( const wxString& title, attr |= kWindowCloseBoxAttribute ; } - UMACreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindowData->m_macWindow ) ; + ::CreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindowData->m_macWindow ) ; wxAssociateWinWithMacWindow( m_macWindowData->m_macWindow , this ) ; wxString label ; if( wxApp::s_macDefaultEncodingIsPC ) @@ -1187,7 +1187,7 @@ void wxWindowMac::MacCreateRealWindow( const wxString& title, else label = title ; UMASetWTitleC( m_macWindowData->m_macWindow , label ) ; - UMACreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ; + ::CreateRootControl( m_macWindowData->m_macWindow , &m_macWindowData->m_macRootControl ) ; m_macWindowData->m_macFocus = NULL ; m_macWindowData->m_macHasReceivedFirstActivate = true ; @@ -1496,7 +1496,7 @@ void wxWindowMac::Clear() int w ,h ; wxPoint origin = GetClientAreaOrigin() ; GetClientSize( &w , &h ) ; - UMASetThemeWindowBackground( m_macWindowData->m_macWindow , m_macWindowData->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( m_macWindowData->m_macWindow , m_macWindowData->m_macWindowBackgroundTheme , false ) ; Rect r = { origin.y , origin.x, origin.y+h , origin.x+w } ; EraseRect( &r ) ; } @@ -1543,7 +1543,7 @@ void wxWindowMac::Raise() { if ( m_macWindowData ) { - UMABringToFront( m_macWindowData->m_macWindow ) ; + ::BringToFront( m_macWindowData->m_macWindow ) ; } } @@ -1552,7 +1552,7 @@ void wxWindowMac::Lower() { if ( m_macWindowData ) { - UMASendBehind( m_macWindowData->m_macWindow , NULL ) ; + ::SendBehind( m_macWindowData->m_macWindow , NULL ) ; } } @@ -1848,7 +1848,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) eraseBackground = true ; if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) ) { - UMASetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ; + ::SetThemeWindowBackground( window , kThemeBrushDocumentWindowBackground , false ) ; } else if ( m_backgroundColour == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) ) { @@ -1880,7 +1880,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) { Rect box ; GetRegionBounds( updatergn , &box) ; - UMAApplyThemeBackground(kThemeBackgroundTabPane, &box , kThemeStateActive,8,true); + ::ApplyThemeBackground(kThemeBackgroundTabPane, &box , kThemeStateActive,8,true); break ; } } @@ -1894,7 +1894,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) if ( !parent ) { // if there is nothing special -> use default - UMASetThemeWindowBackground( window , kThemeBrushDialogBackgroundActive , false ) ; + ::SetThemeWindowBackground( window , kThemeBrushDialogBackgroundActive , false ) ; } } else @@ -2233,7 +2233,7 @@ bool wxWindowMac::MacSetPortDrawingParams( const Point & localOrigin, const Rect Pattern whiteColor ; ::BackPat( GetQDGlobalsWhite( &whiteColor) ) ; - ::UMASetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ; + ::SetThemeWindowBackground( win->m_macWindowData->m_macWindow , win->m_macWindowData->m_macWindowBackgroundTheme , false ) ; return true; } -- 2.45.2