Remove Objective-C class posing for everything except for NSApplication.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -73,7 +73,7 @@ private:
|
||||
// ========================================================================
|
||||
// wxMenuBar
|
||||
// ========================================================================
|
||||
class WXDLLEXPORT wxMenuBar : public wxMenuBarBase, public wxCocoaNSMenu
|
||||
class WXDLLEXPORT wxMenuBar : public wxMenuBarBase
|
||||
{
|
||||
public:
|
||||
// ctors and dtor
|
||||
|
@@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/cocoa/objc/NSMenu.h
|
||||
// Purpose: wxPoserNSMenu class
|
||||
// Purpose: WXNSMenu class
|
||||
// Author: David Elliott
|
||||
// Modified by:
|
||||
// Created: 2007/04/20 (move from NSMenu.mm)
|
||||
@@ -15,14 +15,14 @@
|
||||
#import <AppKit/NSMenu.h>
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSMenu
|
||||
// @class WXNSMenu
|
||||
// ============================================================================
|
||||
@interface wxPoserNSMenu : NSMenu
|
||||
@interface WXNSMenu : NSMenu
|
||||
{
|
||||
}
|
||||
|
||||
- (void)dealloc;
|
||||
|
||||
@end // wxPoserNSMenu
|
||||
@end // WXNSMenu
|
||||
|
||||
#endif //ndef __WX_COCOA_OBJC_NSMENU_H__
|
||||
|
@@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/cocoa/objc/NSView.h
|
||||
// Purpose: wxPoserNSView class
|
||||
// Purpose: WXNSView class
|
||||
// Author: David Elliott
|
||||
// Modified by:
|
||||
// Created: 2007/04/20 (move from NSView.mm)
|
||||
@@ -15,9 +15,9 @@
|
||||
#import <AppKit/NSView.h>
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSView
|
||||
// @class WXNSView
|
||||
// ============================================================================
|
||||
@interface wxPoserNSView : NSView
|
||||
@interface WXNSView : NSView
|
||||
{
|
||||
}
|
||||
|
||||
@@ -35,6 +35,6 @@
|
||||
- (void)otherMouseDragged:(NSEvent *)theEvent;
|
||||
- (void)otherMouseUp:(NSEvent *)theEvent;
|
||||
- (void)resetCursorRects;
|
||||
@end // wxPoserNSView
|
||||
@end // WXNSView
|
||||
|
||||
#endif //ndef __WX_COCOA_OBJC_NSVIEW_H__
|
||||
|
@@ -1,6 +1,6 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/cocoa/objc/NSWindow.h
|
||||
// Purpose: wxPoserNSWindow class
|
||||
// Purpose: WXNSWindow class
|
||||
// Author: David Elliott
|
||||
// Modified by:
|
||||
// Created: 2007/04/20 (move from NSWindow.mm)
|
||||
@@ -10,15 +10,27 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import <AppKit/NSWindow.h>
|
||||
#import <AppKit/NSPanel.h>
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSWindow
|
||||
// @class WXNSWindow
|
||||
// ============================================================================
|
||||
@interface wxPoserNSWindow : NSWindow
|
||||
@interface WXNSWindow : NSWindow
|
||||
{
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeKeyWindow;
|
||||
- (BOOL)canBecomeMainWindow;
|
||||
@end // wxPoserNSwindow
|
||||
@end // WXNSWindow
|
||||
|
||||
// ============================================================================
|
||||
// @class WXNSPanel
|
||||
// ============================================================================
|
||||
@interface WXNSPanel : NSPanel
|
||||
{
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeKeyWindow;
|
||||
- (BOOL)canBecomeMainWindow;
|
||||
@end // WXNSPanel
|
||||
|
||||
|
@@ -22,11 +22,10 @@
|
||||
#include "wx/cocoa/objc/NSMenu.h"
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSMenu
|
||||
// @class WXNSMenu
|
||||
// ============================================================================
|
||||
|
||||
WX_IMPLEMENT_POSER(wxPoserNSMenu);
|
||||
@implementation wxPoserNSMenu : NSMenu
|
||||
@implementation WXNSMenu : NSMenu
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
@@ -36,7 +35,7 @@ WX_IMPLEMENT_POSER(wxPoserNSMenu);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@end // wxPoserNSMenu
|
||||
@end // WXNSMenu
|
||||
|
||||
// ============================================================================
|
||||
// @class wxNSMenuNotificationObserver
|
||||
|
@@ -54,10 +54,10 @@ void wxCocoaNSView::DisassociateNSView(WX_NSView cocoaNSView)
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSView
|
||||
// @class WXNSView
|
||||
// ============================================================================
|
||||
WX_IMPLEMENT_POSER(wxPoserNSView);
|
||||
@implementation wxPoserNSView : NSView
|
||||
|
||||
@implementation WXNSView : NSView
|
||||
|
||||
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
|
||||
{
|
||||
@@ -166,7 +166,7 @@ WX_IMPLEMENT_POSER(wxPoserNSView);
|
||||
[super resetCursorRects];
|
||||
}
|
||||
|
||||
@end // implementation wxPoserNSView
|
||||
@end // implementation WXNSView
|
||||
|
||||
@interface wxNSViewNotificationObserver : NSObject
|
||||
{
|
||||
|
@@ -187,10 +187,9 @@ wxMenuBar* wxCocoaNSWindow::GetAppMenuBar(wxCocoaNSWindow *win)
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// @class wxPoserNSWindow
|
||||
// @class WXNSWindow
|
||||
// ============================================================================
|
||||
WX_IMPLEMENT_POSER(wxPoserNSWindow);
|
||||
@implementation wxPoserNSWindow : NSWindow
|
||||
@implementation WXNSWindow : NSWindow
|
||||
|
||||
- (BOOL)canBecomeKeyWindow
|
||||
{
|
||||
@@ -210,4 +209,29 @@ WX_IMPLEMENT_POSER(wxPoserNSWindow);
|
||||
return canBecome;
|
||||
}
|
||||
|
||||
@end // implementation wxPoserNSWindow
|
||||
@end // implementation WXNSWindow
|
||||
|
||||
// ============================================================================
|
||||
// @class WXNSPanel
|
||||
// ============================================================================
|
||||
@implementation WXNSPanel : NSPanel
|
||||
|
||||
- (BOOL)canBecomeKeyWindow
|
||||
{
|
||||
bool canBecome = false;
|
||||
wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self);
|
||||
if(!tlw || !tlw->Cocoa_canBecomeKeyWindow(canBecome))
|
||||
canBecome = [super canBecomeKeyWindow];
|
||||
return canBecome;
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeMainWindow
|
||||
{
|
||||
bool canBecome = false;
|
||||
wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self);
|
||||
if(!tlw || !tlw->Cocoa_canBecomeMainWindow(canBecome))
|
||||
canBecome = [super canBecomeMainWindow];
|
||||
return canBecome;
|
||||
}
|
||||
|
||||
@end // implementation WXNSPanel
|
||||
|
@@ -30,15 +30,130 @@
|
||||
}
|
||||
|
||||
- (void)drawRect: (NSRect)rect;
|
||||
- (void)mouseDown:(NSEvent *)theEvent;
|
||||
- (void)mouseDragged:(NSEvent *)theEvent;
|
||||
- (void)mouseUp:(NSEvent *)theEvent;
|
||||
- (void)mouseMoved:(NSEvent *)theEvent;
|
||||
- (void)mouseEntered:(NSEvent *)theEvent;
|
||||
- (void)mouseExited:(NSEvent *)theEvent;
|
||||
- (void)rightMouseDown:(NSEvent *)theEvent;
|
||||
- (void)rightMouseDragged:(NSEvent *)theEvent;
|
||||
- (void)rightMouseUp:(NSEvent *)theEvent;
|
||||
- (void)otherMouseDown:(NSEvent *)theEvent;
|
||||
- (void)otherMouseDragged:(NSEvent *)theEvent;
|
||||
- (void)otherMouseUp:(NSEvent *)theEvent;
|
||||
- (void)resetCursorRects;
|
||||
@end // wxNonControlNSControl
|
||||
|
||||
@implementation wxNonControlNSControl : NSControl
|
||||
|
||||
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
|
||||
{
|
||||
bool acceptsFirstMouse = false;
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if(!win || !win->Cocoa_acceptsFirstMouse(acceptsFirstMouse, theEvent))
|
||||
acceptsFirstMouse = [super acceptsFirstMouse:theEvent];
|
||||
return acceptsFirstMouse;
|
||||
}
|
||||
|
||||
- (void)drawRect: (NSRect)rect
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_drawRect(rect) )
|
||||
[super drawRect:rect];
|
||||
}
|
||||
|
||||
- (void)mouseDown:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseDown(theEvent) )
|
||||
[super mouseDown:theEvent];
|
||||
}
|
||||
|
||||
- (void)mouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseDragged(theEvent) )
|
||||
[super mouseDragged:theEvent];
|
||||
}
|
||||
|
||||
- (void)mouseUp:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseUp(theEvent) )
|
||||
[super mouseUp:theEvent];
|
||||
}
|
||||
|
||||
- (void)mouseMoved:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseMoved(theEvent) )
|
||||
[super mouseMoved:theEvent];
|
||||
}
|
||||
|
||||
- (void)mouseEntered:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseEntered(theEvent) )
|
||||
[super mouseEntered:theEvent];
|
||||
}
|
||||
|
||||
- (void)mouseExited:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_mouseExited(theEvent) )
|
||||
[super mouseExited:theEvent];
|
||||
}
|
||||
|
||||
- (void)rightMouseDown:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_rightMouseDown(theEvent) )
|
||||
[super rightMouseDown:theEvent];
|
||||
}
|
||||
|
||||
- (void)rightMouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_rightMouseDragged(theEvent) )
|
||||
[super rightMouseDragged:theEvent];
|
||||
}
|
||||
|
||||
- (void)rightMouseUp:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_rightMouseUp(theEvent) )
|
||||
[super rightMouseUp:theEvent];
|
||||
}
|
||||
|
||||
- (void)otherMouseDown:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_otherMouseDown(theEvent) )
|
||||
[super otherMouseDown:theEvent];
|
||||
}
|
||||
|
||||
- (void)otherMouseDragged:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_otherMouseDragged(theEvent) )
|
||||
[super otherMouseDragged:theEvent];
|
||||
}
|
||||
|
||||
- (void)otherMouseUp:(NSEvent *)theEvent
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_otherMouseUp(theEvent) )
|
||||
[super otherMouseUp:theEvent];
|
||||
}
|
||||
|
||||
- (void)resetCursorRects
|
||||
{
|
||||
wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
|
||||
if( !win || !win->Cocoa_resetCursorRects() )
|
||||
[super resetCursorRects];
|
||||
}
|
||||
|
||||
@end // wxNonControlNSControl
|
||||
|
||||
IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
|
||||
|
@@ -170,7 +170,7 @@ void wxFrame::CocoaReplaceView(WX_NSView oldView, WX_NSView newView)
|
||||
void wxFrame::UpdateFrameNSView()
|
||||
{
|
||||
if(!m_frameNSView)
|
||||
{
|
||||
{ // NOTE: We only need a plain NSView here since we don't associate it with ourselves.
|
||||
m_frameNSView = [[NSView alloc] initWithFrame:[[m_cocoaNSWindow contentView] frame]];
|
||||
[m_cocoaNSWindow setContentView: m_frameNSView];
|
||||
[m_frameNSView addSubview:m_cocoaNSView];
|
||||
|
@@ -29,7 +29,7 @@
|
||||
#include "wx/cocoa/string.h"
|
||||
|
||||
#import <Foundation/NSString.h>
|
||||
#import <AppKit/NSMenu.h>
|
||||
#include "wx/cocoa/objc/NSMenu.h"
|
||||
|
||||
#if wxUSE_MENUS
|
||||
|
||||
@@ -46,7 +46,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler)
|
||||
bool wxMenu::Create(const wxString& title, long style)
|
||||
{
|
||||
wxAutoNSAutoreleasePool pool;
|
||||
m_cocoaNSMenu = [[NSMenu alloc] initWithTitle: wxNSStringWithWxString(title)];
|
||||
m_cocoaNSMenu = [[WXNSMenu alloc] initWithTitle: wxNSStringWithWxString(title)];
|
||||
AssociateNSMenu(m_cocoaNSMenu);
|
||||
return true;
|
||||
}
|
||||
|
@@ -20,7 +20,7 @@
|
||||
#include "wx/arrstr.h"
|
||||
#endif //WX_PRECOMP
|
||||
|
||||
#import <AppKit/NSView.h>
|
||||
#include "wx/cocoa/objc/NSView.h"
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
|
||||
BEGIN_EVENT_TABLE(wxRadioBox, wxControl)
|
||||
@@ -53,7 +53,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID winid,
|
||||
{
|
||||
if(!CreateControl(parent,winid,pos,size,style,validator,name))
|
||||
return false;
|
||||
SetNSView([[NSView alloc] initWithFrame: MakeDefaultNSRect(size)]);
|
||||
SetNSView([[WXNSView alloc] initWithFrame: MakeDefaultNSRect(size)]);
|
||||
[m_cocoaNSView release];
|
||||
if(m_parent)
|
||||
m_parent->CocoaAddChild(this);
|
||||
|
@@ -33,8 +33,8 @@
|
||||
#include "wx/cocoa/autorelease.h"
|
||||
#include "wx/cocoa/string.h"
|
||||
|
||||
#import <AppKit/NSView.h>
|
||||
#import <AppKit/NSWindow.h>
|
||||
#include "wx/cocoa/objc/NSView.h"
|
||||
#include "wx/cocoa/objc/NSWindow.h"
|
||||
#import <AppKit/NSPanel.h>
|
||||
// ----------------------------------------------------------------------------
|
||||
// globals
|
||||
@@ -131,10 +131,18 @@ bool wxTopLevelWindowCocoa::Create(wxWindow *parent,
|
||||
|
||||
m_cocoaNSWindow = NULL;
|
||||
m_cocoaNSView = NULL;
|
||||
// NOTE: We may need to deal with the contentView becoming a wx NSView as well.
|
||||
NSWindow *newWindow;
|
||||
// Create a WXNSPanel or a WXNSWindow depending on what type of window is desired.
|
||||
if(style & wxFRAME_TOOL_WINDOW)
|
||||
SetNSWindow([[NSPanel alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO]);
|
||||
newWindow = [[WXNSPanel alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO];
|
||||
else
|
||||
SetNSWindow([[NSWindow alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO]);
|
||||
newWindow = [[WXNSWindow alloc] initWithContentRect:cocoaRect styleMask:cocoaStyle backing:NSBackingStoreBuffered defer:NO];
|
||||
// Make sure the default content view is a WXNSView
|
||||
[newWindow setContentView: [[WXNSView alloc] initWithFrame: [[newWindow contentView] frame]]];
|
||||
// Associate the window and view
|
||||
SetNSWindow(newWindow);
|
||||
|
||||
// NOTE: SetNSWindow has retained the Cocoa object for this object.
|
||||
// Because we do not release on close, the following release matches the
|
||||
// above alloc and thus the retain count will be 1.
|
||||
@@ -188,6 +196,8 @@ void wxTopLevelWindowCocoa::SetNSWindow(WX_NSWindow cocoaNSWindow)
|
||||
[cocoaNSWindow retain];
|
||||
[m_cocoaNSWindow release];
|
||||
m_cocoaNSWindow = cocoaNSWindow;
|
||||
// NOTE: We are no longer using posing so we won't get events on the
|
||||
// window's view unless it was explicitly created as the wx view class.
|
||||
if(m_cocoaNSWindow)
|
||||
SetNSView([m_cocoaNSWindow contentView]);
|
||||
else
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include "wx/cocoa/autorelease.h"
|
||||
#include "wx/cocoa/string.h"
|
||||
|
||||
#import <AppKit/NSView.h>
|
||||
#include "wx/cocoa/objc/NSView.h"
|
||||
#import <AppKit/NSEvent.h>
|
||||
#import <AppKit/NSScrollView.h>
|
||||
#import <AppKit/NSColor.h>
|
||||
@@ -327,7 +327,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID winid,
|
||||
|
||||
// TODO: create the window
|
||||
m_cocoaNSView = NULL;
|
||||
SetNSView([[NSView alloc] initWithFrame: MakeDefaultNSRect(size)]);
|
||||
SetNSView([[WXNSView alloc] initWithFrame: MakeDefaultNSRect(size)]);
|
||||
[m_cocoaNSView release];
|
||||
|
||||
if (m_parent)
|
||||
|
Reference in New Issue
Block a user