return wxPoint( x, y);
}
+bool shouldHandleSelector(SEL selector)
+{
+ if (selector == @selector(noop:)
+ || selector == @selector(complete:)
+ || selector == @selector(deleteBackward:)
+ || selector == @selector(deleteForward:)
+ || selector == @selector(insertNewline:)
+ || selector == @selector(insertTab:)
+ || selector == @selector(keyDown:)
+ || selector == @selector(keyUp:)
+ || selector == @selector(scrollPageUp:)
+ || selector == @selector(scrollPageDown:)
+ || selector == @selector(scrollToBeginningOfDocument:)
+ || selector == @selector(scrollToEndOfDocument:))
+ return false;
+
+ return true;
+
+}
+
//
// wx native implementation classes
//
typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector);
@interface wxNSWindow : NSWindow
-
{
wxNonOwnedWindowCocoaImpl* impl;
}
return impl;
}
+- (void)doCommandBySelector:(SEL)selector
+{
+ if (shouldHandleSelector(selector) &&
+ !(selector == @selector(cancel:) || selector == @selector(cancelOperation:)) )
+ [super doCommandBySelector:selector];
+}
+
+
// NB: if we don't do this, all key downs that get handled lead to a NSBeep
- (void)noResponderFor: (SEL) selector
{
- if (selector != @selector(keyDown:))
+ if (selector != @selector(keyDown:) && selector != @selector(keyUp:))
{
- wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)];
- superimpl(self, @selector(noResponderFor:), selector);
+ [super noResponderFor:selector];
+// wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)];
+// superimpl(self, @selector(noResponderFor:), selector);
}
}
impl = theImplementation;
}
+- (BOOL)canBecomeKeyWindow
+{
+ return YES;
+}
+
- (wxNonOwnedWindowCocoaImpl*) implementation
{
return impl;
}
-// NB: if we don't do this, all key downs that get handled lead to a NSBeep
+- (void)doCommandBySelector:(SEL)selector
+{
+ if (shouldHandleSelector(selector))
+ [super doCommandBySelector:selector];
+}
+
+// NB: if we don't do this, it seems that all events that end here lead to a NSBeep
- (void)noResponderFor: (SEL) selector
{
- if (selector != @selector(keyDown:))
+ if (selector != @selector(keyDown:) && selector != @selector(keyUp:))
{
- wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)];
- superimpl(self, @selector(noResponderFor:), selector);
+ [super noResponderFor:selector];
+// wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)];
+// superimpl(self, @selector(noResponderFor:), selector);
}
}
- (void)windowDidResize:(NSNotification *)notification;
- (NSSize)windowWillResize:(NSWindow *)window toSize:(NSSize)proposedFrameSize;
-- (void)windowDidResignMain:(NSNotification *)notification;
-- (void)windowDidBecomeMain:(NSNotification *)notification;
+- (void)windowDidResignKey:(NSNotification *)notification;
+- (void)windowDidBecomeKey:(NSNotification *)notification;
- (void)windowDidMove:(NSNotification *)notification;
- (BOOL)windowShouldClose:(id)window;
}
}
-- (void)windowDidBecomeMain:(NSNotification *)notification
+- (void)windowDidBecomeKey:(NSNotification *)notification
{
wxNSWindow* window = (wxNSWindow*) [notification object];
wxNonOwnedWindowCocoaImpl* windowimpl = [window implementation];
}
}
-- (void)windowDidResignMain:(NSNotification *)notification
+- (void)windowDidResignKey:(NSNotification *)notification
{
wxNSWindow* window = (wxNSWindow*) [notification object];
wxNonOwnedWindowCocoaImpl* windowimpl = [window implementation];
{
wxNonOwnedWindow* wxpeer = windowimpl->GetWXPeer();
if ( wxpeer )
+ {
wxpeer->HandleActivated(0, false);
+ // Needed for popup window since the firstResponder
+ // (focus in wx) doesn't change when this
+ // TLW becomes inactive.
+ wxFocusEvent event( wxEVT_KILL_FOCUS, wxpeer->GetId());
+ event.SetEventObject(wxpeer);
+ wxpeer->HandleWindowEvent(event);
+ }
}
}
wxPendingDelete.Append( new wxDeferredObjectDeleter( this ) );
}
-void wxNonOwnedWindowCocoaImpl::Create( wxWindow* parent, const wxPoint& pos, const wxSize& size,
-long style, long extraStyle, const wxString& name )
+void wxNonOwnedWindowCocoaImpl::Create( wxWindow* WXUNUSED(parent), const wxPoint& pos, const wxSize& size,
+long style, long extraStyle, const wxString& WXUNUSED(name) )
{
static wxNonOwnedWindowController* controller = NULL;
int windowstyle = NSBorderlessWindowMask;
- if ( style & wxFRAME_TOOL_WINDOW )
+ if ( style & wxFRAME_TOOL_WINDOW || ( style & wxPOPUP_WINDOW ) ||
+ GetWXPeer()->GetExtraStyle() & wxTOPLEVEL_EX_DIALOG )
+ {
m_macWindow = [wxNSPanel alloc];
+ }
else
m_macWindow = [wxNSWindow alloc];
[m_macWindow setDelegate:controller];
[m_macWindow setAcceptsMouseMovedEvents: YES];
-
- // [m_macWindow makeKeyAndOrderFront:nil];
}
{
if ( show )
{
- [m_macWindow orderFront:nil];
+ [m_macWindow makeKeyAndOrderFront:nil];
[[m_macWindow contentView] setNeedsDisplay:YES];
}
else
return true;
}
-bool wxNonOwnedWindowCocoaImpl::ShowWithEffect(bool show, wxShowEffect effect, unsigned timeout)
+bool wxNonOwnedWindowCocoaImpl::ShowWithEffect(bool show, wxShowEffect WXUNUSED(effect), unsigned WXUNUSED(timeout))
{
return Show(show);
}
return true;
}
-bool wxNonOwnedWindowCocoaImpl::SetBackgroundColour(const wxColour& col )
+bool wxNonOwnedWindowCocoaImpl::SetBackgroundColour(const wxColour& WXUNUSED(col) )
{
return true;
}
}
}
-bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle style)
+bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle WXUNUSED(style))
{
return true;
}
height = rect.size.height;
}
-bool wxNonOwnedWindowCocoaImpl::SetShape(const wxRegion& region)
+bool wxNonOwnedWindowCocoaImpl::SetShape(const wxRegion& WXUNUSED(region))
{
return false;
}
[m_macWindow deminiaturize:nil];
}
-void wxNonOwnedWindowCocoaImpl::Maximize(bool maximize)
+void wxNonOwnedWindowCocoaImpl::Maximize(bool WXUNUSED(maximize))
{
[m_macWindow zoom:nil];
}
return m_macFullScreenData != NULL ;
}
-bool wxNonOwnedWindowCocoaImpl::ShowFullScreen(bool show, long style)
+bool wxNonOwnedWindowCocoaImpl::ShowFullScreen(bool show, long WXUNUSED(style))
{
if ( show )
{