///////////////////////////////////////////////////////////////////////////////
-// Name: cocoa/toplevel.mm
+// Name: src/cocoa/toplevel.mm
// Purpose: implements wxTopLevelWindow for Cocoa
-// Author: David Elliott
+// Author: David Elliott
// Modified by:
// Created: 2002/11/27
// RCS-ID: $Id$
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+
+#include "wx/toplevel.h"
+
#ifndef WX_PRECOMP
#include "wx/window.h"
- #include "wx/toplevel.h"
#include "wx/menuitem.h"
#include "wx/frame.h"
#include "wx/log.h"
wxTopLevelWindows.Append(this);
if(!CreateBase(parent,winid,pos,size,style,wxDefaultValidator,name))
- return FALSE;
+ return false;
if ( parent )
parent->AddChild(this);
if(style & wxFRAME_TOOL_WINDOW)
cocoaStyle |= NSUtilityWindowMask;
- wxPoint realpos = pos;
- wxSize realsize = size;
- // FIXME: this is lame
- if(realpos.x==-1)
- realpos.x=100;
- if(realpos.y==-1)
- realpos.y=100;
- if(realsize.x==-1)
- realsize.x=200;
- if(realsize.y==-1)
- realsize.y=200;
+ // Create frame and check and handle default position and size
+ int realx,
+ realy;
+
+ // WX has no set default position - the carbon port caps the low
+ // end at 20, 50. Here we do the same, except instead of setting
+ // it to 20 and 50, we set it to 100 and 100 if the values are too low
+ if (pos.x < 20)
+ realx = 100;
+ else
+ realx = pos.x;
+
+ if (pos.y < 50)
+ realy = 100;
+ else
+ realy = pos.y;
+
+ int realw = WidthDefault(size.x);
+ int realh = HeightDefault(size.y);
+
// NOTE: y-origin needs to be flipped.
- NSRect cocoaRect = [NSWindow contentRectForFrameRect:NSMakeRect(realpos.x,realpos.y,realsize.x,realsize.y) styleMask:cocoaStyle];
+ NSRect cocoaRect = [NSWindow
+ contentRectForFrameRect:NSMakeRect(realx,realy,realw,realh)
+ styleMask:cocoaStyle];
m_cocoaNSWindow = NULL;
m_cocoaNSView = NULL;
if(style & wxSTAY_ON_TOP)
[m_cocoaNSWindow setLevel:NSFloatingWindowLevel];
[m_cocoaNSWindow setTitle:wxNSStringWithWxString(title)];
- return TRUE;
+ return true;
}
wxTopLevelWindowCocoa::~wxTopLevelWindowCocoa()
wxASSERT(sm_cocoaDeactivateWindow!=this);
wxAutoNSAutoreleasePool pool;
DestroyChildren();
+ if(m_cocoaNSView)
+ SendDestroyEvent();
SetNSWindow(NULL);
}
{
DeactivatePendingWindow();
wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidBecomeKey"),this);
- wxActivateEvent event(wxEVT_ACTIVATE, TRUE, GetId());
+ wxActivateEvent event(wxEVT_ACTIVATE, true, GetId());
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
}
void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey(void)
{
wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidResignKey"),this);
- wxActivateEvent event(wxEVT_ACTIVATE, FALSE, GetId());
+ wxActivateEvent event(wxEVT_ACTIVATE, false, GetId());
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
}
bool wxTopLevelWindowCocoa::IsMaximized() const
{
- return false ;
+ return false ;
}
void wxTopLevelWindowCocoa::Iconize(bool iconize)
bool wxTopLevelWindowCocoa::IsIconized() const
{
- return FALSE;
+ return false;
}
void wxTopLevelWindowCocoa::Restore()
// wxTopLevelWindowCocoa misc
// ----------------------------------------------------------------------------
+void wxTopLevelWindowCocoa::SetTitle( const wxString& WXUNUSED(title))
+{
+ // TODO
+}
+
+wxString wxTopLevelWindowCocoa::GetTitle() const
+{
+ // TODO
+ return wxEmptyString;
+}
+
bool wxTopLevelWindowCocoa::ShowFullScreen(bool show, long style)
{
- return FALSE;
+ return false;
}
bool wxTopLevelWindowCocoa::IsFullScreen() const
{
- return FALSE;
+ return false;
}
void wxTopLevelWindowCocoa::CocoaSetWxWindowSize(int width, int height)
*y=(int)cocoaRect.origin.y;
wxLogTrace(wxTRACE_COCOA_TopLevelWindow_Size,wxT("wxTopLevelWindow=%p::DoGetPosition = (%d,%d)"),this,(int)cocoaRect.origin.x,(int)cocoaRect.origin.y);
}
-