From: Stefan Csomor Date: Fri, 8 Dec 2006 15:06:38 +0000 (+0000) Subject: switching from native rtti to wxrtti X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/bf9a1615ed0d4a051d6165014c7a0b6636f9ed43 switching from native rtti to wxrtti git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index 1990703794..fb5430f738 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -487,12 +487,13 @@ Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint& pos , const wxS ControlActionUPP GetwxMacLiveScrollbarActionProc(); -class wxMacControl +class wxMacControl : public wxObject { public : wxMacControl( wxWindow* peer , bool isRootControl = false ); wxMacControl( wxWindow* peer , ControlRef control ); wxMacControl( wxWindow* peer , WXWidget control ); + wxMacControl() ; virtual ~wxMacControl(); void Init(); @@ -656,6 +657,7 @@ protected : wxWindow* m_peer; bool m_needsFocusRect; bool m_isRootControl; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacControl) }; // ============================================================================ @@ -669,6 +671,7 @@ class wxMacDataBrowserControl : public wxMacControl { public : wxMacDataBrowserControl( wxWindow* peer, const wxPoint& pos, const wxSize& size, long style); + wxMacDataBrowserControl() {} OSStatus SetCallbacks( const DataBrowserCallbacks *callbacks ); @@ -793,6 +796,7 @@ protected : virtual Boolean CompareItems(DataBrowserItemID itemOneID, DataBrowserItemID itemTwoID, DataBrowserPropertyID sortProperty) = 0; + DECLARE_ABSTRACT_CLASS(wxMacDataBrowserControl) }; // ============================================================================ @@ -903,7 +907,7 @@ class wxMacDataItemBrowserControl : public wxMacDataBrowserControl, public wxMac { public : wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style); - + wxMacDataItemBrowserControl() {} // create a list item (can be a subclass of wxMacListBoxItem) virtual wxMacDataItem* CreateItem(); @@ -1030,6 +1034,7 @@ protected: private : bool m_suppressSelection; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataItemBrowserControl) }; class wxMacDataItemBrowserSelectionSuppressor @@ -1066,6 +1071,7 @@ class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl { public: wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style ); + wxMacDataBrowserListControl() {} virtual ~wxMacDataBrowserListControl(); virtual wxMacDataItem* CreateItem(); @@ -1074,6 +1080,7 @@ public: wxWindow * GetPeer() const; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserListControl) }; // ============================================================================ diff --git a/src/mac/carbon/checklst.cpp b/src/mac/carbon/checklst.cpp index 0f87743287..d58ae07392 100644 --- a/src/mac/carbon/checklst.cpp +++ b/src/mac/carbon/checklst.cpp @@ -37,14 +37,18 @@ class wxMacDataBrowserCheckListControl : public wxMacDataBrowserListControl , pu { public: wxMacDataBrowserCheckListControl( wxListBox *peer, const wxPoint& pos, const wxSize& size, long style ); + wxMacDataBrowserCheckListControl() {} virtual ~wxMacDataBrowserCheckListControl(); virtual wxMacDataItem* CreateItem(); virtual bool MacIsChecked(unsigned int n) const; virtual void MacCheck(unsigned int n, bool bCheck = true); + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserCheckListControl) }; +IMPLEMENT_DYNAMIC_CLASS( wxMacDataBrowserCheckListControl , wxMacDataBrowserListControl ) + void wxCheckListBox::Init() { } @@ -124,7 +128,8 @@ void wxCheckListBox::Check(unsigned int item, bool check) wxMacCheckListControl* wxCheckListBox::GetPeer() const { - return dynamic_cast(m_peer); + wxMacDataBrowserCheckListControl *lb = wxDynamicCast(m_peer,wxMacDataBrowserCheckListControl); + return lb ? wx_static_cast(wxMacCheckListControl*,lb) : 0 ; } const short kCheckboxColumnId = 1026; @@ -256,14 +261,14 @@ wxMacDataItem* wxMacDataBrowserCheckListControl::CreateItem() void wxMacDataBrowserCheckListControl::MacCheck( unsigned int n, bool bCheck) { - wxMacCheckListBoxItem* item = dynamic_cast( GetItemFromLine( n) ); + wxMacCheckListBoxItem* item = wx_static_cast(wxMacCheckListBoxItem*, GetItemFromLine( n) ); item->Check( bCheck); UpdateItem(wxMacDataBrowserRootContainer, item , kCheckboxColumnId); } bool wxMacDataBrowserCheckListControl::MacIsChecked( unsigned int n) const { - wxMacCheckListBoxItem * item = dynamic_cast( GetItemFromLine( n ) ); + wxMacCheckListBoxItem * item = wx_static_cast( wxMacCheckListBoxItem*, GetItemFromLine( n ) ); return item->IsChecked(); } diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp index a837c5f17d..6697768649 100644 --- a/src/mac/carbon/listbox.cpp +++ b/src/mac/carbon/listbox.cpp @@ -58,7 +58,8 @@ bool wxListBox::Create( wxMacListControl* wxListBox::GetPeer() const { - return dynamic_cast(m_peer); + wxMacDataBrowserListControl *lb = wxDynamicCast(m_peer,wxMacDataBrowserListControl); + return lb ? wx_static_cast(wxMacListControl*,lb) : 0 ; } bool wxListBox::Create( @@ -463,7 +464,7 @@ void wxMacListBoxItem::Notification(wxMacDataItemBrowserControl *owner , DataBrowserItemNotification message, DataBrowserItemDataRef itemData ) const { - wxMacDataBrowserListControl *lb = dynamic_cast(owner); + wxMacDataBrowserListControl *lb = wxDynamicCast(owner,wxMacDataBrowserListControl); // we want to depend on as little as possible to make sure tear-down of controls is safe @@ -522,6 +523,8 @@ void wxMacListBoxItem::Notification(wxMacDataItemBrowserControl *owner , } } +IMPLEMENT_DYNAMIC_CLASS( wxMacDataBrowserListControl , wxMacDataItemBrowserControl ) + wxMacDataBrowserListControl::wxMacDataBrowserListControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style) : wxMacDataItemBrowserControl( peer, pos, size, style ) { diff --git a/src/mac/carbon/listctrl_mac.cpp b/src/mac/carbon/listctrl_mac.cpp index 1b758fb0a7..29fe79bd66 100644 --- a/src/mac/carbon/listctrl_mac.cpp +++ b/src/mac/carbon/listctrl_mac.cpp @@ -208,6 +208,7 @@ class wxMacDataBrowserListCtrlControl : public wxMacDataItemBrowserControl { public: wxMacDataBrowserListCtrlControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style ); + wxMacDataBrowserListCtrlControl() {} virtual ~wxMacDataBrowserListCtrlControl(); // create a list item (can be a subclass of wxMacListBoxItem) @@ -273,7 +274,7 @@ protected: wxClientDataType m_clientDataItemsType; bool m_isVirtual; - + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserListCtrlControl) }; class wxMacListCtrlEventDelegate : public wxEvtHandler @@ -512,7 +513,8 @@ END_EVENT_TABLE() wxMacListControl* wxListCtrl::GetPeer() const { - return dynamic_cast(m_peer); + wxMacDataBrowserListCtrlControl *lb = wxDynamicCast(m_peer,wxMacDataBrowserListCtrlControl); + return lb ? wx_static_cast(wxMacListControl*,lb) : 0 ; } // ---------------------------------------------------------------------------- @@ -2207,7 +2209,7 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner , DataBrowserItemDataRef itemData ) const { - wxMacDataBrowserListCtrlControl *lb = dynamic_cast(owner); + wxMacDataBrowserListCtrlControl *lb = wxDynamicCast(owner, wxMacDataBrowserListCtrlControl); // we want to depend on as little as possible to make sure tear-down of controls is safe if ( message == kDataBrowserItemRemoved) @@ -2285,6 +2287,8 @@ void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner , } +IMPLEMENT_DYNAMIC_CLASS(wxMacDataBrowserListCtrlControl, wxMacDataItemBrowserControl ) + wxMacDataBrowserListCtrlControl::wxMacDataBrowserListCtrlControl( wxWindow *peer, const wxPoint& pos, const wxSize& size, long style) : wxMacDataItemBrowserControl( peer, pos, size, style ) { @@ -2370,7 +2374,7 @@ pascal Boolean wxMacDataBrowserListCtrlControl::DataBrowserEditTextProc( Boolean *shrinkToFit) { Boolean result = false; - wxMacDataBrowserListCtrlControl* ctl = dynamic_cast( wxMacControl::GetReferenceFromNativeControl( browser ) ); + wxMacDataBrowserListCtrlControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserListCtrlControl); if ( ctl != 0 ) { result = ctl->ConfirmEditText(itemID, property, theString, maxEditTextRect, shrinkToFit); @@ -2398,7 +2402,7 @@ pascal void wxMacDataBrowserListCtrlControl::DataBrowserDrawItemProc( SInt16 gdDepth, Boolean colorDevice) { - wxMacDataBrowserListCtrlControl* ctl = dynamic_cast( wxMacControl::GetReferenceFromNativeControl( browser ) ); + wxMacDataBrowserListCtrlControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserListCtrlControl); if ( ctl != 0 ) { ctl->DrawItem(itemID, property, itemState, itemRect, gdDepth, colorDevice); @@ -2916,7 +2920,7 @@ void wxMacDataBrowserListCtrlControl::MacSetColumnInfo( unsigned int row, unsign wxASSERT_MSG( dataItem, _T("could not obtain wxMacDataItem for row in MacSetColumnInfo. Is row a valid wxListCtrl row?") ); if (item) { - wxMacListCtrlItem* listItem = dynamic_cast(dataItem); + wxMacListCtrlItem* listItem = wx_static_cast(wxMacListCtrlItem*,dataItem); bool hasInfo = listItem->HasColumnInfo( column ); listItem->SetColumnInfo( column, item ); UpdateState(dataItem, item); @@ -2958,7 +2962,7 @@ void wxMacDataBrowserListCtrlControl::MacGetColumnInfo( unsigned int row, unsign // CS should this guard against dataItem = 0 ? , as item is not a pointer if (item) is not appropriate //if (item) { - wxMacListCtrlItem* listItem = dynamic_cast(dataItem); + wxMacListCtrlItem* listItem =wx_static_cast(wxMacListCtrlItem*,dataItem); if (!listItem->HasColumnInfo( column )) return; diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index fb72fc4e78..8e7cf1af16 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -821,6 +821,13 @@ OSStatus wxMacCarbonEvent::SetParameter(EventParamName inName, EventParamType in // Control Access Support // ---------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS( wxMacControl , wxObject ) + +wxMacControl::wxMacControl() +{ + Init(); +} + wxMacControl::wxMacControl(wxWindow* peer , bool isRootControl ) { Init(); @@ -1287,13 +1294,15 @@ wxMacControl* wxMacControl::GetReferenceFromNativeControl(ControlRef control) // basing on DataBrowserItemIDs // +IMPLEMENT_ABSTRACT_CLASS( wxMacDataBrowserControl , wxMacControl ) + pascal void wxMacDataBrowserControl::DataBrowserItemNotificationProc( ControlRef browser, DataBrowserItemID itemID, DataBrowserItemNotification message, DataBrowserItemDataRef itemData ) { - wxMacDataBrowserControl* ctl = dynamic_cast( wxMacControl::GetReferenceFromNativeControl( browser ) ); + wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl); if ( ctl != 0 ) { ctl->ItemNotification(itemID, message, itemData); @@ -1308,7 +1317,7 @@ pascal OSStatus wxMacDataBrowserControl::DataBrowserGetSetItemDataProc( Boolean changeValue ) { OSStatus err = errDataBrowserPropertyNotSupported; - wxMacDataBrowserControl* ctl = dynamic_cast( wxMacControl::GetReferenceFromNativeControl( browser ) ); + wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl); if ( ctl != 0 ) { err = ctl->GetSetItemData(itemID, property, itemData, changeValue); @@ -1322,7 +1331,7 @@ pascal Boolean wxMacDataBrowserControl::DataBrowserCompareProc( DataBrowserItemID itemTwoID, DataBrowserPropertyID sortProperty) { - wxMacDataBrowserControl* ctl = dynamic_cast( wxMacControl::GetReferenceFromNativeControl( browser ) ); + wxMacDataBrowserControl* ctl = wxDynamicCast(wxMacControl::GetReferenceFromNativeControl( browser ), wxMacDataBrowserControl); if ( ctl != 0 ) { return ctl->CompareItems(itemOneID, itemTwoID, sortProperty); @@ -1678,7 +1687,7 @@ bool wxMacDataItem::IsLessThan(wxMacDataItemBrowserControl *owner , const wxMacDataItem* rhs, DataBrowserPropertyID sortProperty) const { - const wxMacDataItem* otherItem = dynamic_cast(rhs); + const wxMacDataItem* otherItem = wx_const_cast(wxMacDataItem*,rhs); bool retval = false; if ( sortProperty == m_colId ){ @@ -1729,6 +1738,7 @@ void wxMacDataItem::Notification(wxMacDataItemBrowserControl *owner , { } +IMPLEMENT_DYNAMIC_CLASS( wxMacDataItemBrowserControl , wxMacDataBrowserControl ) wxMacDataItemBrowserControl::wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style) : wxMacDataBrowserControl( peer, pos, size, style )