#include "wx/layout.h"
#include "wx/dialog.h"
#include "wx/listbox.h"
+#include "wx/scrolbar.h"
+#include "wx/statbox.h"
#include "wx/button.h"
#include "wx/settings.h"
#include "wx/msgdlg.h"
#include "wx/tabctrl.h"
#include "wx/tooltip.h"
// TODO remove the line below, just for lookup-up convenience CS
-#include "wx/mac/window.h"
+#include "wx/window.h"
#include "wx/menuitem.h"
#include "wx/log.h"
*x = m_width ;
*y = m_height ;
- *x -= 2 * MacGetBorderSize( ) ;
- *y -= 2 * MacGetBorderSize( ) ;
+ *x -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
+ *y -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
{
wxPoint wxWindow::GetClientAreaOrigin() const
{
- return wxPoint(MacGetBorderSize( ) , MacGetBorderSize( ) );
+ return wxPoint(MacGetLeftBorderSize( ) , MacGetTopBorderSize( ) );
}
// Makes an adjustment to the window position (for example, a frame that has
if ( !fontToUse )
fontToUse = &m_font;
- wxClientDC dc( this ) ;
+ wxClientDC dc( (wxWindow*) this ) ;
long lx,ly,ld,le ;
dc.GetTextExtent( string , &lx , &ly , &ld, &le, fontToUse ) ;
if ( externalLeading )
// translate the window attributes in the appropriate window class and attributes
- WindowClass wclass ;
- WindowAttributes attr ;
+ WindowClass wclass = 0;
+ WindowAttributes attr = kWindowNoAttributes ;
if ( HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT) )
{
wclass = kModalWindowClass ;
}
- attr = kWindowNoAttributes ;
-
if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) )
{
attr |= kWindowFullZoomAttribute ;
InvalWindowRgn( GetMacRootWindow() , updateRgn ) ;
DisposeRgn( updateRgn ) ;
}
+
+ for (wxNode *node = GetChildren().First(); node; node = node->Next())
+ {
+ wxWindow *child = (wxWindow*)node->Data();
+ if (child == m_vScrollBar) continue;
+ if (child == m_hScrollBar) continue;
+ if (child->IsTopLevel()) continue;
+ int x,y;
+ child->GetPosition( &x, &y );
+ int w,h;
+ child->GetSize( &w, &h );
+ child->SetSize( x+dx, y+dy, w, h );
+ }
+
}
void wxWindow::MacOnScroll(wxScrollEvent &event )
wevent.SetOrientation(event.GetOrientation());
wevent.m_eventObject = this;
- switch ( event.m_eventType )
- {
- case wxEVT_SCROLL_TOP:
+ if (event.m_eventType == wxEVT_SCROLL_TOP) {
wevent.m_eventType = wxEVT_SCROLLWIN_TOP;
- break;
-
- case wxEVT_SCROLL_BOTTOM:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_BOTTOM) {
wevent.m_eventType = wxEVT_SCROLLWIN_BOTTOM;
- break;
-
- case wxEVT_SCROLL_LINEUP:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_LINEUP) {
wevent.m_eventType = wxEVT_SCROLLWIN_LINEUP;
- break;
-
- case wxEVT_SCROLL_LINEDOWN:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_LINEDOWN) {
wevent.m_eventType = wxEVT_SCROLLWIN_LINEDOWN;
- break;
-
- case wxEVT_SCROLL_PAGEUP:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_PAGEUP) {
wevent.m_eventType = wxEVT_SCROLLWIN_PAGEUP;
- break;
-
- case wxEVT_SCROLL_PAGEDOWN:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_PAGEDOWN) {
wevent.m_eventType = wxEVT_SCROLLWIN_PAGEDOWN;
- break;
-
- case wxEVT_SCROLL_THUMBTRACK:
+ } else
+ if (event.m_eventType == wxEVT_SCROLL_THUMBTRACK) {
wevent.m_eventType = wxEVT_SCROLLWIN_THUMBTRACK;
- break;
-
}
GetEventHandler()->ProcessEvent(wevent);
if ( height != -1 && m_vScrollBar )
height += MAC_SCROLLBAR_SIZE ;
- width += 2 * MacGetBorderSize( ) ;
- height += 2 * MacGetBorderSize( ) ;
+ width += MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
+ height += MacGetTopBorderSize( ) + MacGetBottomBorderSize( ) ;
DoSetSize( -1 , -1 , width , height ) ;
}
for (wxNode *node = GetChildren().First(); node; node = node->Next())
{
wxWindow *child = (wxWindow*)node->Data();
- if ( child->GetMacRootWindow() == window )
+ // added the m_isShown test --dmazzoni
+ if ( child->GetMacRootWindow() == window && child->m_isShown )
{
if (child->MacGetWindowFromPointSub(newPoint , outWin ))
return TRUE;
{
wxPoint point( screenpoint ) ;
wxWindow* win = wxFindWinFromMacWindow( window ) ;
+ if ( win )
+ {
win->ScreenToClient( point ) ;
return win->MacGetWindowFromPointSub( point , outWin ) ;
}
+ }
return FALSE ;
}
RgnHandle newupdate = NewRgn() ;
wxSize point = GetClientSize() ;
wxPoint origin = GetClientAreaOrigin() ;
+
SetRectRgn( newupdate , origin.x , origin.y , origin.x + point.x , origin.y+point.y ) ;
SectRgn( newupdate , m_macUpdateRgn , newupdate ) ;
OffsetRgn( newupdate , -origin.x , -origin.y ) ;
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
}
- {
- }
-
RgnHandle childupdate = NewRgn() ;
-
+
for (wxNode *node = GetChildren().First(); node; node = node->Next())
{
wxWindow *child = (wxWindow*)node->Data();
int width = m_width ;
int height = m_height ;
- width -= 2 * MacGetBorderSize() ;
- height -= 2 * MacGetBorderSize() ;
+ width -= MacGetLeftBorderSize() + MacGetRightBorderSize();
+ height -= MacGetTopBorderSize() + MacGetBottomBorderSize();
wxPoint vPoint(width-MAC_SCROLLBAR_SIZE, 0) ;
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
SectRect(clipRect, &myClip, clipRect);
}
-long wxWindow::MacGetBorderSize( ) const
+long wxWindow::MacGetLeftBorderSize( ) const
{
if( m_macWindowData )
return 0 ;
return 0 ;
}
+long wxWindow::MacGetRightBorderSize( ) const
+{
+ if( m_macWindowData )
+ return 0 ;
+
+ if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
+ {
+ return 3 ;
+ }
+ else if ( m_windowStyle &wxDOUBLE_BORDER)
+ {
+ return 3 ;
+ }
+ else if (m_windowStyle &wxSIMPLE_BORDER)
+ {
+ return 3 ;
+ }
+ return 0 ;
+}
+
+long wxWindow::MacGetTopBorderSize( ) const
+{
+ if( m_macWindowData )
+ return 0 ;
+
+ if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
+ {
+ return 2 ;
+ }
+ else if ( m_windowStyle &wxDOUBLE_BORDER)
+ {
+ return 2 ;
+ }
+ else if (m_windowStyle &wxSIMPLE_BORDER)
+ {
+ return 1 ;
+ }
+ return 0 ;
+}
+
+long wxWindow::MacGetBottomBorderSize( ) const
+{
+ if( m_macWindowData )
+ return 0 ;
+
+ if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER )
+ {
+ return 3 ;
+ }
+ else if ( m_windowStyle &wxDOUBLE_BORDER)
+ {
+ return 3 ;
+ }
+ else if (m_windowStyle &wxSIMPLE_BORDER)
+ {
+ return 3 ;
+ }
+ return 0 ;
+}
+
long wxWindow::MacRemoveBordersFromStyle( long style )
{
return style & ~( wxDOUBLE_BORDER | wxSUNKEN_BORDER | wxRAISED_BORDER | wxBORDER | wxSTATIC_BORDER ) ;
if ( m_formerPort != m_currentPort )
SetPort( m_formerPort ) ;
}
+
+// Find the wxWindow at the current mouse position, returning the mouse
+// position.
+wxWindow* wxFindWindowAtPointer(wxPoint& pt)
+{
+ pt = wxGetMousePosition();
+ wxWindow* found = wxFindWindowAtPoint(pt);
+ return found;
+}
+
+// Get the current mouse position.
+wxPoint wxGetMousePosition()
+{
+ int x, y;
+ wxGetMousePosition(& x, & y);
+ return wxPoint(x, y);
+}
+