X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e75491071dbefcada61175e3eb89ce4edf335983..57a1fd73042accb25f48366ef8b51c974dfa2c04:/src/mac/window.cpp diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 18ab38338a..a9aec9174f 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -58,6 +58,7 @@ BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) EVT_INIT_DIALOG(wxWindow::OnInitDialog) EVT_IDLE(wxWindow::OnIdle) +// EVT_SCROLL(wxWindow::OnScroll) END_EVENT_TABLE() #endif @@ -295,6 +296,34 @@ void wxWindow::DoGetPosition(int *x, int *y) const } } +wxSize wxWindow::DoGetBestSize() +{ + return wxSize( 0 , 0 ) ; +} + +bool wxWindow::Reparent(wxWindow *parent) +{ + if ( !wxWindowBase::Reparent(parent) ) + return FALSE; + + return TRUE; +} + +bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y) +{ + menu->SetInvokingWindow(this); + menu->UpdateUI(); + ClientToScreen( &x , &y ) ; + + ::InsertMenu( menu->GetHMenu() , -1 ) ; + long menuResult = ::PopUpMenuSelect(menu->GetHMenu() ,y,x, 0) ; + menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ; + ::DeleteMenu( menu->MacGetMenuId() ) ; + menu->SetInvokingWindow(NULL); + + return TRUE; +} + void wxWindow::DoScreenToClient(int *x, int *y) const { WindowRef window = GetMacRootWindow() ; @@ -401,6 +430,28 @@ void wxWindow::DoGetClientSize(int *x, int *y) const (*y) -= MAC_SCROLLBAR_SIZE; } + +// ---------------------------------------------------------------------------- +// tooltips +// ---------------------------------------------------------------------------- + +#if wxUSE_TOOLTIPS + +void wxWindow::DoSetToolTip(wxToolTip *tooltip) +{ + wxWindowBase::DoSetToolTip(tooltip); + +// if ( m_tooltip ) +// m_tooltip->SetWindow(this); +} + +#endif // wxUSE_TOOLTIPS + +void wxWindow::DoMoveWindow(int x, int y, int width, int height) +{ + DoSetSize( x,y, width, height ) ; +} + void wxWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags) { int former_x = m_x ; @@ -601,17 +652,14 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, const wxFont *fontToUse = theFont; if ( !fontToUse ) fontToUse = &m_font; -/* - if ( x ) - *x = sizeRect.cx; - if ( y ) - *y = sizeRect.cy; - if ( descent ) - *descent = tm.tmDescent; - if ( externalLeading ) - *externalLeading = tm.tmExternalLeading; -*/ - + + wxClientDC dc( this ) ; + long lx,ly,ld,le ; + dc.GetTextExtent( string , &lx , &ly , &ld, &le, fontToUse ) ; + *externalLeading = le ; + *descent = ld ; + *x = lx ; + *y = ly ; } void wxWindow::MacEraseBackground( Rect *rect ) @@ -918,6 +966,51 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) } } +void wxWindow::MacOnScroll(wxScrollEvent &event ) +{ + if ( event.m_eventObject == m_vScrollBar || event.m_eventObject == m_hScrollBar ) + { + wxScrollWinEvent wevent; + wevent.SetPosition(event.GetPosition()); + wevent.SetOrientation(event.GetOrientation()); + wevent.m_eventObject = this; + + switch ( event.m_eventType ) + { + case wxEVT_SCROLL_TOP: + wevent.m_eventType = wxEVT_SCROLLWIN_TOP; + break; + + case wxEVT_SCROLL_BOTTOM: + wevent.m_eventType = wxEVT_SCROLLWIN_BOTTOM; + break; + + case wxEVT_SCROLL_LINEUP: + wevent.m_eventType = wxEVT_SCROLLWIN_LINEUP; + break; + + case wxEVT_SCROLL_LINEDOWN: + wevent.m_eventType = wxEVT_SCROLLWIN_LINEDOWN; + break; + + case wxEVT_SCROLL_PAGEUP: + wevent.m_eventType = wxEVT_SCROLLWIN_PAGEUP; + break; + + case wxEVT_SCROLL_PAGEDOWN: + wevent.m_eventType = wxEVT_SCROLLWIN_PAGEDOWN; + break; + + case wxEVT_SCROLL_THUMBTRACK: + wevent.m_eventType = wxEVT_SCROLLWIN_THUMBTRACK; + break; + + } + + GetEventHandler()->ProcessEvent(wevent); + } +} + bool wxWindow::SetFont(const wxFont& font) { if ( !wxWindowBase::SetFont(font) ) @@ -1428,12 +1521,15 @@ void wxWindow::MacCreateScrollBars( long style ) { m_vScrollBar = new wxScrollBar(this, wxWINDOW_VSCROLL, wxPoint(m_width-MAC_SCROLLBAR_SIZE, 0), wxSize(MAC_SCROLLBAR_SIZE, m_height - adjust), wxVERTICAL); +// m_vScrollBar->PushEventHandler( this ) ; } if ( style & wxHSCROLL ) { m_hScrollBar = new wxScrollBar(this, wxWINDOW_HSCROLL, wxPoint(0 , m_height-MAC_SCROLLBAR_SIZE ), wxSize( m_width - adjust, MAC_SCROLLBAR_SIZE), wxHORIZONTAL); +// m_hScrollBar->PushEventHandler( this ) ; } + // because the create does not take into account the client area origin MacRepositionScrollBars() ; // we might have a real position shift } @@ -1764,13 +1860,3 @@ wxMacDrawingClientHelper::~wxMacDrawingClientHelper() if ( m_formerPort != m_currentPort ) SetPort( m_formerPort ) ; } - -// ---------------------------------------------------------------------------- -// list classes implementation -// ---------------------------------------------------------------------------- - -void wxWindowListNode::DeleteData() -{ - delete (wxWindow *)GetData(); -} -