// Author: David Elliott
// Modified by:
// Created: 2002/12/26
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) 2002 David Elliott
-// Licence: wxWidgets licence
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
+
#ifndef WX_PRECOMP
#include "wx/log.h"
#include "wx/window.h"
+ #include "wx/dc.h"
+ #include "wx/utils.h"
#endif //WX_PRECOMP
+
#include "wx/tooltip.h"
#include "wx/cocoa/autorelease.h"
- (void)getRectsBeingDrawn:(const NSRect **)rects count:(int *)count;
@end
+NSPoint CocoaTransformNSViewBoundsToWx(NSView *nsview, NSPoint pointBounds)
+{
+ wxCHECK_MSG(nsview, pointBounds, wxT("Need to have a Cocoa view to do translation"));
+ if([nsview isFlipped])
+ return pointBounds;
+ NSRect ourBounds = [nsview bounds];
+ return NSMakePoint
+ ( pointBounds.x
+ , ourBounds.size.height - pointBounds.y
+ );
+}
+
+NSRect CocoaTransformNSViewBoundsToWx(NSView *nsview, NSRect rectBounds)
+{
+ wxCHECK_MSG(nsview, rectBounds, wxT("Need to have a Cocoa view to do translation"));
+ if([nsview isFlipped])
+ return rectBounds;
+ NSRect ourBounds = [nsview bounds];
+ return NSMakeRect
+ ( rectBounds.origin.x
+ , ourBounds.size.height - (rectBounds.origin.y + rectBounds.size.height)
+ , rectBounds.size.width
+ , rectBounds.size.height
+ );
+}
+
+NSPoint CocoaTransformNSViewWxToBounds(NSView *nsview, NSPoint pointWx)
+{
+ wxCHECK_MSG(nsview, pointWx, wxT("Need to have a Cocoa view to do translation"));
+ if([nsview isFlipped])
+ return pointWx;
+ NSRect ourBounds = [nsview bounds];
+ return NSMakePoint
+ ( pointWx.x
+ , ourBounds.size.height - pointWx.y
+ );
+}
+
+NSRect CocoaTransformNSViewWxToBounds(NSView *nsview, NSRect rectWx)
+{
+ wxCHECK_MSG(nsview, rectWx, wxT("Need to have a Cocoa view to do translation"));
+ if([nsview isFlipped])
+ return rectWx;
+ NSRect ourBounds = [nsview bounds];
+ return NSMakeRect
+ ( rectWx.origin.x
+ , ourBounds.size.height - (rectWx.origin.y + rectWx.size.height)
+ , rectWx.size.width
+ , rectWx.size.height
+ );
+}
+
// ========================================================================
// wxWindowCocoaHider
// ========================================================================
m_cocoaNSView = NULL;
m_cocoaHider = NULL;
m_wxCocoaScrollView = NULL;
- m_isBeingDeleted = FALSE;
- m_isInPaint = FALSE;
- m_shouldBeEnabled = true;
+ m_isBeingDeleted = false;
+ m_isInPaint = false;
}
// Constructor
SetInitialFrameRect(pos,size);
}
- return TRUE;
+ return true;
}
// Destructor
NSPoint wxWindowCocoa::CocoaTransformBoundsToWx(NSPoint pointBounds)
{
// TODO: Handle scrolling offset
- wxCHECK_MSG(GetNSView(), pointBounds, wxT("Need to have a Cocoa view to do translation"));
- if([GetNSView() isFlipped])
- return pointBounds;
- NSRect ourBounds = [GetNSView() bounds];
- return NSMakePoint
- ( pointBounds.x
- , ourBounds.size.height - pointBounds.y
- );
+ return CocoaTransformNSViewBoundsToWx(GetNSView(), pointBounds);
}
NSRect wxWindowCocoa::CocoaTransformBoundsToWx(NSRect rectBounds)
{
// TODO: Handle scrolling offset
- wxCHECK_MSG(GetNSView(), rectBounds, wxT("Need to have a Cocoa view to do translation"));
- if([GetNSView() isFlipped])
- return rectBounds;
- NSRect ourBounds = [GetNSView() bounds];
- return NSMakeRect
- ( rectBounds.origin.x
- , ourBounds.size.height - (rectBounds.origin.y + rectBounds.size.height)
- , rectBounds.size.width
- , rectBounds.size.height
- );
+ return CocoaTransformNSViewBoundsToWx(GetNSView(), rectBounds);
}
NSPoint wxWindowCocoa::CocoaTransformWxToBounds(NSPoint pointWx)
{
// TODO: Handle scrolling offset
- wxCHECK_MSG(GetNSView(), pointWx, wxT("Need to have a Cocoa view to do translation"));
- if([GetNSView() isFlipped])
- return pointWx;
- NSRect ourBounds = [GetNSView() bounds];
- return NSMakePoint
- ( pointWx.x
- , ourBounds.size.height - pointWx.y
- );
+ return CocoaTransformNSViewWxToBounds(GetNSView(), pointWx);
}
NSRect wxWindowCocoa::CocoaTransformWxToBounds(NSRect rectWx)
{
// TODO: Handle scrolling offset
- wxCHECK_MSG(GetNSView(), rectWx, wxT("Need to have a Cocoa view to do translation"));
- if([GetNSView() isFlipped])
- return rectWx;
- NSRect ourBounds = [GetNSView() bounds];
- return NSMakeRect
- ( rectWx.origin.x
- , ourBounds.size.height - (rectWx.origin.y + rectWx.size.height)
- , rectWx.size.width
- , rectWx.size.height
- );
+ return CocoaTransformNSViewWxToBounds(GetNSView(), rectWx);
+}
+
+WX_NSAffineTransform wxWindowCocoa::CocoaGetWxToBoundsTransform()
+{
+ // TODO: Handle scrolling offset
+ NSAffineTransform *transform = wxDC::CocoaGetWxToBoundsTransform([GetNSView() isFlipped], [GetNSView() bounds].size.height);
+ return transform;
}
bool wxWindowCocoa::Cocoa_drawRect(const NSRect &rect)
wxLogDebug(wxT("Paint event recursion!"));
return false;
}
- m_isInPaint = TRUE;
+ m_isInPaint = true;
// Set m_updateRegion
const NSRect *rects = ▭ // The bounding box of the region
wxPaintEvent event(m_windowId);
event.SetEventObject(this);
bool ret = GetEventHandler()->ProcessEvent(event);
- m_isInPaint = FALSE;
+ m_isInPaint = false;
return ret;
}
{
if(!m_cursor.GetNSCursor())
return false;
-
- [GetNSView() addCursorRect: [GetNSView() visibleRect] cursor: m_cursor.GetNSCursor()];
-
+
+ [GetNSView() addCursorRect: [GetNSView() visibleRect] cursor: m_cursor.GetNSCursor()];
+
return true;
}
[[oldView superview] replaceSubview:oldView with:newView];
}
-bool wxWindow::EnableSelfAndChildren(bool enable)
-{
- // If the state isn't changing, don't do anything
- if(!wxWindowBase::Enable(enable && m_shouldBeEnabled))
- return false;
- // Set the state of the Cocoa window
- CocoaSetEnabled(m_isEnabled);
- // Disable all children or (if enabling) return them to their proper state
- for(wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
- node; node = node->GetNext())
- {
- node->GetData()->EnableSelfAndChildren(enable);
- }
- return true;
-}
-
-bool wxWindow::Enable(bool enable)
+void wxWindow::DoEnable(bool enable)
{
- // Keep track of what the window SHOULD be doing
- m_shouldBeEnabled = enable;
- // If the parent is disabled for any reason, then this window will be too.
- if(!IsTopLevel() && GetParent())
- {
- enable = enable && GetParent()->IsEnabled();
- }
- return EnableSelfAndChildren(enable);
+ CocoaSetEnabled(enable);
}
bool wxWindow::Show(bool show)
AdjustForParentClientOrigin(x,y,sizeFlags);
- wxSize size(-1,-1);
+ wxSize size(wxDefaultSize);
if((width==-1)&&!(sizeFlags&wxSIZE_ALLOW_MINUS_ONE))
{
void wxWindow::CocoaSetWxWindowSize(int width, int height)
{
- wxWindowCocoa::DoSetSize(-1,-1,width,height,wxSIZE_USE_EXISTING);
+ wxWindowCocoa::DoSetSize(wxDefaultCoord,wxDefaultCoord,width,height,wxSIZE_USE_EXISTING);
+}
+
+void wxWindow::SetLabel(const wxString& WXUNUSED(label))
+{
+ // TODO
+}
+
+wxString wxWindow::GetLabel() const
+{
+ // TODO
+ return wxEmptyString;
}
int wxWindow::GetCharHeight() const
bool wxWindow::SetFont(const wxFont& font)
{
// TODO
- return TRUE;
+ return true;
}
static int CocoaRaiseWindowCompareFunction(id first, id second, void *target)
bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y)
{
- return FALSE;
+ return false;
}
// Get the window with the focus
wxCocoaNSView *win;
NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow];
- win = wxCocoaNSView::GetFromCocoa([keyWindow firstResponder]);
+ win = wxCocoaNSView::GetFromCocoa(static_cast<NSView*>([keyWindow firstResponder]));
if(win)
return win->GetWxWindow();
NSWindow *mainWindow = [[NSApplication sharedApplication] keyWindow];
if(mainWindow == keyWindow)
return NULL;
- win = wxCocoaNSView::GetFromCocoa([mainWindow firstResponder]);
+ win = wxCocoaNSView::GetFromCocoa(static_cast<NSView*>([mainWindow firstResponder]));
if(win)
return win->GetWxWindow();
return wxDefaultPosition;
}
+wxMouseState wxGetMouseState()
+{
+ wxMouseState ms;
+ // TODO
+ return ms;
+}
+
wxWindow* wxFindWindowAtPointer(wxPoint& pt)
{
pt = wxGetMousePosition();
return NULL;
}
-