added carbon event handlers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#include "wx/mac/uma.h"
|
#include "wx/mac/uma.h"
|
||||||
#include "wx/mac/aga.h"
|
#include "wx/mac/aga.h"
|
||||||
|
#include "wx/app.h"
|
||||||
#include "wx/tooltip.h"
|
#include "wx/tooltip.h"
|
||||||
#include "wx/dnd.h"
|
#include "wx/dnd.h"
|
||||||
|
|
||||||
@@ -110,6 +111,7 @@ void wxTopLevelWindowMac::Init()
|
|||||||
m_macNoEraseUpdateRgn = NewRgn() ;
|
m_macNoEraseUpdateRgn = NewRgn() ;
|
||||||
m_macNeedsErasing = false ;
|
m_macNeedsErasing = false ;
|
||||||
m_macWindow = NULL ;
|
m_macWindow = NULL ;
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
}
|
}
|
||||||
|
|
||||||
class wxMacDeferredWindowDeleter : public wxObject
|
class wxMacDeferredWindowDeleter : public wxObject
|
||||||
@@ -159,7 +161,14 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac()
|
|||||||
wxToolTip::NotifyWindowDelete(m_macWindow) ;
|
wxToolTip::NotifyWindowDelete(m_macWindow) ;
|
||||||
wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ;
|
wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( m_macEventHandler )
|
||||||
|
{
|
||||||
|
::RemoveEventHandler((EventHandlerRef) m_macEventHandler);
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
wxRemoveMacWindowAssociation( this ) ;
|
wxRemoveMacWindowAssociation( this ) ;
|
||||||
|
|
||||||
wxTopLevelWindows.DeleteObject(this);
|
wxTopLevelWindows.DeleteObject(this);
|
||||||
@@ -221,6 +230,52 @@ void wxTopLevelWindowMac::SetIcon(const wxIcon& icon)
|
|||||||
wxTopLevelWindowBase::SetIcon(icon);
|
wxTopLevelWindowBase::SetIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
|
||||||
|
EventHandlerUPP wxMacWindowEventHandlerUPP = NULL ;
|
||||||
|
|
||||||
|
pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
|
||||||
|
{
|
||||||
|
OSStatus result = eventNotHandledErr ;
|
||||||
|
EventRecord rec ;
|
||||||
|
switch ( GetEventClass( event ) )
|
||||||
|
{
|
||||||
|
case kEventClassTextInput :
|
||||||
|
if ( wxMacConvertEventToRecord( event , &rec ) )
|
||||||
|
{
|
||||||
|
wxTheApp->MacHandleOneEvent( &rec ) ;
|
||||||
|
result = noErr ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
return result ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void wxTopLevelWindowMac::MacInstallEventHandler()
|
||||||
|
{
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( wxMacWindowEventHandlerUPP == NULL )
|
||||||
|
{
|
||||||
|
wxMacWindowEventHandlerUPP = NewEventHandlerUPP( wxMacWindowEventHandler ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const EventTypeSpec eventList[] =
|
||||||
|
{
|
||||||
|
{ kEventClassTextInput, kEventTextInputUnicodeForKeyEvent }
|
||||||
|
} ;
|
||||||
|
if ( m_macEventHandler )
|
||||||
|
{
|
||||||
|
::RemoveEventHandler((EventHandlerRef) m_macEventHandler);
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
|
}
|
||||||
|
InstallWindowEventHandler(MAC_WXHWND(m_macWindow), wxMacWindowEventHandlerUPP, WXSIZEOF(eventList), eventList, this, &((EventHandlerRef)m_macEventHandler));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
@@ -322,6 +377,7 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
|||||||
label = title ;
|
label = title ;
|
||||||
UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
|
UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
|
||||||
::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
|
::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
|
||||||
|
MacInstallEventHandler() ;
|
||||||
|
|
||||||
m_macFocus = NULL ;
|
m_macFocus = NULL ;
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#include "wx/mac/uma.h"
|
#include "wx/mac/uma.h"
|
||||||
#include "wx/mac/aga.h"
|
#include "wx/mac/aga.h"
|
||||||
|
#include "wx/app.h"
|
||||||
#include "wx/tooltip.h"
|
#include "wx/tooltip.h"
|
||||||
#include "wx/dnd.h"
|
#include "wx/dnd.h"
|
||||||
|
|
||||||
@@ -110,6 +111,7 @@ void wxTopLevelWindowMac::Init()
|
|||||||
m_macNoEraseUpdateRgn = NewRgn() ;
|
m_macNoEraseUpdateRgn = NewRgn() ;
|
||||||
m_macNeedsErasing = false ;
|
m_macNeedsErasing = false ;
|
||||||
m_macWindow = NULL ;
|
m_macWindow = NULL ;
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
}
|
}
|
||||||
|
|
||||||
class wxMacDeferredWindowDeleter : public wxObject
|
class wxMacDeferredWindowDeleter : public wxObject
|
||||||
@@ -159,7 +161,14 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac()
|
|||||||
wxToolTip::NotifyWindowDelete(m_macWindow) ;
|
wxToolTip::NotifyWindowDelete(m_macWindow) ;
|
||||||
wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ;
|
wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( m_macEventHandler )
|
||||||
|
{
|
||||||
|
::RemoveEventHandler((EventHandlerRef) m_macEventHandler);
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
wxRemoveMacWindowAssociation( this ) ;
|
wxRemoveMacWindowAssociation( this ) ;
|
||||||
|
|
||||||
wxTopLevelWindows.DeleteObject(this);
|
wxTopLevelWindows.DeleteObject(this);
|
||||||
@@ -221,6 +230,52 @@ void wxTopLevelWindowMac::SetIcon(const wxIcon& icon)
|
|||||||
wxTopLevelWindowBase::SetIcon(icon);
|
wxTopLevelWindowBase::SetIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
|
||||||
|
EventHandlerUPP wxMacWindowEventHandlerUPP = NULL ;
|
||||||
|
|
||||||
|
pascal OSStatus wxMacWindowEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
|
||||||
|
{
|
||||||
|
OSStatus result = eventNotHandledErr ;
|
||||||
|
EventRecord rec ;
|
||||||
|
switch ( GetEventClass( event ) )
|
||||||
|
{
|
||||||
|
case kEventClassTextInput :
|
||||||
|
if ( wxMacConvertEventToRecord( event , &rec ) )
|
||||||
|
{
|
||||||
|
wxTheApp->MacHandleOneEvent( &rec ) ;
|
||||||
|
result = noErr ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
default :
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
return result ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void wxTopLevelWindowMac::MacInstallEventHandler()
|
||||||
|
{
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( wxMacWindowEventHandlerUPP == NULL )
|
||||||
|
{
|
||||||
|
wxMacWindowEventHandlerUPP = NewEventHandlerUPP( wxMacWindowEventHandler ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const EventTypeSpec eventList[] =
|
||||||
|
{
|
||||||
|
{ kEventClassTextInput, kEventTextInputUnicodeForKeyEvent }
|
||||||
|
} ;
|
||||||
|
if ( m_macEventHandler )
|
||||||
|
{
|
||||||
|
::RemoveEventHandler((EventHandlerRef) m_macEventHandler);
|
||||||
|
m_macEventHandler = NULL ;
|
||||||
|
}
|
||||||
|
InstallWindowEventHandler(MAC_WXHWND(m_macWindow), wxMacWindowEventHandlerUPP, WXSIZEOF(eventList), eventList, this, &((EventHandlerRef)m_macEventHandler));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
@@ -322,6 +377,7 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
|
|||||||
label = title ;
|
label = title ;
|
||||||
UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
|
UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
|
||||||
::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
|
::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
|
||||||
|
MacInstallEventHandler() ;
|
||||||
|
|
||||||
m_macFocus = NULL ;
|
m_macFocus = NULL ;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user