]> git.saurik.com Git - wxWidgets.git/blame - include/wx/osx/cocoa/private.h
Remove duplicate fields in wxTextCtrl / wxTextEntry. Fixes #11618.
[wxWidgets.git] / include / wx / osx / cocoa / private.h
CommitLineData
4849f027
SC
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/osx/cocoa/private.h
3// Purpose: Private declarations: as this header is only included by
4// wxWidgets itself, it may contain identifiers which don't start
5// with "wx".
6// Author: Stefan Csomor
7// Modified by:
8// Created: 1998-01-01
9// RCS-ID: $Id: private.h 53819 2008-05-29 14:11:45Z SC $
10// Copyright: (c) Stefan Csomor
11// Licence: wxWindows licence
12/////////////////////////////////////////////////////////////////////////////
13
14#ifndef _WX_PRIVATE_COCOA_H_
15#define _WX_PRIVATE_COCOA_H_
16
17#include "wx/osx/core/private.h"
18
935e6c7d
SC
19#include "wx/defs.h"
20
21#include <ApplicationServices/ApplicationServices.h>
22
7ac5e1c9
SC
23#if wxOSX_USE_ATSU_TEXT
24 // we need theming and atsu
25 #include <Carbon/Carbon.h>
0a84f928
SC
26#else
27 // we only need theming, if we find a better include replace the following
28 #include <Carbon/Carbon.h>
7ac5e1c9
SC
29#endif
30
4849f027 31#ifdef __OBJC__
4849f027 32 #import <Cocoa/Cocoa.h>
4850cc8b 33#endif
4849f027 34
524c47aa
SC
35//
36// shared between Cocoa and Carbon
37//
38
b3b17ee7 39// bring in theming types without pulling in the headers
524c47aa 40
935e6c7d 41#if wxUSE_GUI
524c47aa 42typedef SInt16 ThemeBrush;
6da991db 43CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ;
524c47aa
SC
44OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage(
45 CGContextRef inContext,
46 const CGRect * inBounds,
47 CGImageRef inImage) ;
6da991db 48WX_NSImage WXDLLIMPEXP_CORE wxOSXCreateNSImageFromCGImage( CGImageRef image );
267ba369 49CGImageRef WXDLLIMPEXP_CORE wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage );
935e6c7d 50#endif
524c47aa 51
935e6c7d 52long UMAGetSystemVersion() ;
524c47aa
SC
53WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to );
54WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL );
55WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef );
56WXDLLIMPEXP_BASE wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname );
57
58//
59//
60//
61
4849f027
SC
62#if wxUSE_GUI
63
64class WXDLLIMPEXP_CORE wxWidgetCocoaImpl : public wxWidgetImpl
65{
66public :
03647350
VZ
67 wxWidgetCocoaImpl( wxWindowMac* peer , WXWidget w, bool isRootControl = false ) ;
68 wxWidgetCocoaImpl() ;
69 ~wxWidgetCocoaImpl();
70
4849f027 71 void Init();
03647350 72
4849f027 73 virtual bool IsVisible() const ;
524c47aa
SC
74 virtual void SetVisibility(bool);
75
ab9a0b84
VZ
76 // we provide a static function which can be reused from
77 // wxNonOwnedWindowCocoaImpl too
78 static bool ShowViewOrWindowWithEffect(wxWindow *win,
79 bool show,
80 wxShowEffect effect,
81 unsigned timeout);
82
83 virtual bool ShowWithEffect(bool show,
84 wxShowEffect effect,
85 unsigned timeout);
86
4849f027 87 virtual void Raise();
03647350 88
4849f027
SC
89 virtual void Lower();
90
91 virtual void ScrollRect( const wxRect *rect, int dx, int dy );
92
93 virtual WXWidget GetWXWidget() const { return m_osxView; }
94
524c47aa
SC
95 virtual void SetBackgroundColour(const wxColour&);
96
4849f027
SC
97 virtual void GetContentArea( int &left , int &top , int &width , int &height ) const;
98 virtual void Move(int x, int y, int width, int height);
99 virtual void GetPosition( int &x, int &y ) const;
100 virtual void GetSize( int &width, int &height ) const;
524c47aa 101 virtual void SetControlSize( wxWindowVariant variant );
4849f027
SC
102
103 virtual void SetNeedsDisplay( const wxRect* where = NULL );
104 virtual bool GetNeedsDisplay() const;
105
106 virtual bool CanFocus() const;
107 // return true if successful
108 virtual bool SetFocus();
109 virtual bool HasFocus() const;
110
111 void RemoveFromParent();
112 void Embed( wxWidgetImpl *parent );
524c47aa
SC
113
114 void SetDefaultButton( bool isDefault );
115 void PerformClick();
a4e32492 116 virtual void SetLabel(const wxString& title, wxFontEncoding encoding);
524c47aa 117
54f11060
SC
118 void SetCursor( const wxCursor & cursor );
119 void CaptureMouse();
120 void ReleaseMouse();
121
524c47aa
SC
122 wxInt32 GetValue() const;
123 void SetValue( wxInt32 v );
e5d05b90 124 wxBitmap GetBitmap() const;
524c47aa 125 void SetBitmap( const wxBitmap& bitmap );
e5d05b90 126 void SetBitmapPosition( wxDirection dir );
524c47aa
SC
127 void SetupTabs( const wxNotebook &notebook );
128 void GetBestRect( wxRect *r ) const;
129 bool IsEnabled() const;
130 void Enable( bool enable );
131 bool ButtonClickDidStateChange() { return true ;}
132 void SetMinimum( wxInt32 v );
133 void SetMaximum( wxInt32 v );
19c7ac3d
SC
134 wxInt32 GetMinimum() const;
135 wxInt32 GetMaximum() const;
524c47aa
SC
136 void PulseGauge();
137 void SetScrollThumb( wxInt32 value, wxInt32 thumbSize );
138
1e181c7a
SC
139 void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
140
c4825ef7 141 void InstallEventHandler( WXWidget control = NULL );
03647350
VZ
142
143 virtual bool DoHandleMouseEvent(NSEvent *event);
f0e0116e
KO
144 virtual bool DoHandleKeyEvent(NSEvent *event);
145 virtual bool DoHandleCharEvent(NSEvent *event, NSString *text);
03647350 146 virtual void DoNotifyFocusEvent(bool receivedFocus, wxWidgetImpl* otherWindow);
030495ec 147
ddbc8ac9
SC
148 virtual void SetupKeyEvent(wxKeyEvent &wxevent, NSEvent * nsEvent, NSString* charString = NULL);
149 virtual void SetupMouseEvent(wxMouseEvent &wxevent, NSEvent * nsEvent);
150
4850cc8b 151
4dd9fdf8 152 void SetFlipped(bool flipped);
ee032c59 153 virtual bool IsFlipped() const { return m_isFlipped; }
96defed0
SC
154
155 // cocoa thunk connected calls
4dd9fdf8
SC
156
157 virtual unsigned int draggingEntered(void* sender, WXWidget slf, void* _cmd);
158 virtual void draggingExited(void* sender, WXWidget slf, void* _cmd);
159 virtual unsigned int draggingUpdated(void* sender, WXWidget slf, void* _cmd);
160 virtual bool performDragOperation(void* sender, WXWidget slf, void* _cmd);
161 virtual void mouseEvent(WX_NSEvent event, WXWidget slf, void* _cmd);
162 virtual void keyEvent(WX_NSEvent event, WXWidget slf, void* _cmd);
f0e0116e 163 virtual void insertText(NSString* text, WXWidget slf, void* _cmd);
4dd9fdf8 164 virtual bool performKeyEquivalent(WX_NSEvent event, WXWidget slf, void* _cmd);
09a9eb20 165 virtual bool acceptsFirstResponder(WXWidget slf, void* _cmd);
4dd9fdf8
SC
166 virtual bool becomeFirstResponder(WXWidget slf, void* _cmd);
167 virtual bool resignFirstResponder(WXWidget slf, void* _cmd);
168 virtual void resetCursorRects(WXWidget slf, void* _cmd);
169 virtual bool isFlipped(WXWidget slf, void* _cmd);
170 virtual void drawRect(void* rect, WXWidget slf, void* _cmd);
03647350 171
e32090ba
SC
172 virtual void controlAction(WXWidget slf, void* _cmd, void* sender);
173 virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender);
4dd9fdf8 174
4849f027
SC
175protected:
176 WXWidget m_osxView;
f0e0116e 177 NSEvent* m_lastKeyDownEvent;
4dd9fdf8 178 bool m_isFlipped;
7cb2a241 179 // if it the control has an editor, that editor will already send some
03647350 180 // events, don't resend them
7cb2a241 181 bool m_hasEditor;
03647350 182
4849f027
SC
183 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl)
184};
185
ffad7b0d
SC
186DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow );
187
4849f027
SC
188class wxNonOwnedWindowCocoaImpl : public wxNonOwnedWindowImpl
189{
190public :
191 wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow* nonownedwnd) ;
192 wxNonOwnedWindowCocoaImpl();
03647350 193
4849f027 194 virtual ~wxNonOwnedWindowCocoaImpl();
03647350 195
0aaa6ace 196 virtual void WillBeDestroyed() ;
4849f027
SC
197 void Create( wxWindow* parent, const wxPoint& pos, const wxSize& size,
198 long style, long extraStyle, const wxString& name ) ;
03647350 199
4849f027 200 WXWindow GetWXWindow() const;
03647350 201 void Raise();
4849f027 202 void Lower();
03647350 203 bool Show(bool show);
ab9a0b84
VZ
204
205 virtual bool ShowWithEffect(bool show,
206 wxShowEffect effect,
207 unsigned timeout);
03647350 208
4849f027
SC
209 void Update();
210 bool SetTransparent(wxByte alpha);
211 bool SetBackgroundColour(const wxColour& col );
03647350 212 void SetExtraStyle( long exStyle );
b6dc21e7 213 void SetWindowStyleFlag( long style );
03647350 214 bool SetBackgroundStyle(wxBackgroundStyle style);
4849f027
SC
215 bool CanSetTransparent();
216
217 void MoveWindow(int x, int y, int width, int height);
218 void GetPosition( int &x, int &y ) const;
219 void GetSize( int &width, int &height ) const;
220
03647350 221 void GetContentArea( int &left , int &top , int &width , int &height ) const;
4849f027 222 bool SetShape(const wxRegion& region);
03647350 223
4849f027 224 virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ;
03647350 225
4849f027 226 virtual bool IsMaximized() const;
03647350 227
4849f027 228 virtual bool IsIconized() const;
03647350 229
4849f027 230 virtual void Iconize( bool iconize );
03647350 231
4849f027 232 virtual void Maximize(bool maximize);
03647350 233
4849f027 234 virtual bool IsFullScreen() const;
03647350 235
4849f027 236 virtual bool ShowFullScreen(bool show, long style);
030495ec 237
dbc7ceb9 238 virtual void ShowWithoutActivating();
4849f027
SC
239
240 virtual void RequestUserAttention(int flags);
03647350 241
4849f027 242 virtual void ScreenToWindow( int *x, int *y );
03647350 243
4849f027 244 virtual void WindowToScreen( int *x, int *y );
03647350 245
dbc7ceb9 246 virtual bool IsActive();
efb2fa41
KO
247
248 virtual void SetModified(bool modified);
ebf7d5c4 249 virtual bool IsModified() const;
030495ec 250
4849f027
SC
251 wxNonOwnedWindow* GetWXPeer() { return m_wxPeer; }
252protected :
ffad7b0d 253 WX_wxNSWindow m_macWindow;
4849f027
SC
254 void * m_macFullScreenData ;
255 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl)
03647350 256};
4849f027 257
4850cc8b
SC
258#ifdef __OBJC__
259
2acc3915
SC
260 WXDLLIMPEXP_CORE NSRect wxToNSRect( NSView* parent, const wxRect& r );
261 WXDLLIMPEXP_CORE wxRect wxFromNSRect( NSView* parent, const NSRect& rect );
262 WXDLLIMPEXP_CORE NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
263 WXDLLIMPEXP_CORE wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p );
03647350
VZ
264
265 NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
4850cc8b 266 bool adjustForOrigin = true );
03647350 267
b466e85a 268 // used for many wxControls
03647350 269
b466e85a
SC
270 @interface wxNSButton : NSButton
271 {
411a1c35 272 NSTrackingRectTag rectTag;
b466e85a 273 }
03647350 274
b466e85a
SC
275 @end
276
277 @interface wxNSBox : NSBox
278 {
b466e85a
SC
279 }
280
b466e85a
SC
281 @end
282
7cb2a241
SC
283 @interface wxNSTextFieldEditor : NSTextView
284 {
285 NSEvent* lastKeyDownEvent;
286 }
287
288 @end
289
b466e85a 290 @interface wxNSTextField : NSTextField
7cb2a241
SC
291 {
292 wxNSTextFieldEditor* fieldEditor;
293 }
294
295 - (wxNSTextFieldEditor*) fieldEditor;
296 - (void) setFieldEditor:(wxNSTextFieldEditor*) fieldEditor;
297
298 @end
299
300 @interface wxNSSecureTextField : NSSecureTextField
b466e85a 301 {
b466e85a 302 }
7cb2a241
SC
303
304 @end
305
306
030495ec 307 @interface wxNSTextView : NSTextView wxOSX_10_6_AND_LATER(<NSTextViewDelegate>)
7cb2a241
SC
308 {
309 }
030495ec 310
b9cf2753 311 - (void)textDidChange:(NSNotification *)aNotification;
030495ec 312
b466e85a
SC
313 @end
314
ffad7b0d
SC
315 @interface wxNSMenu : NSMenu
316 {
317 wxMenuImpl* impl;
318 }
319
320 - (void) setImplementation:(wxMenuImpl*) item;
321 - (wxMenuImpl*) implementation;
322
03647350 323 @end
ffad7b0d
SC
324
325 @interface wxNSMenuItem : NSMenuItem
326 {
327 wxMenuItemImpl* impl;
328 }
329
330 - (void) setImplementation:(wxMenuItemImpl*) item;
331 - (wxMenuItemImpl*) implementation;
332
333 - (void)clickedAction:(id)sender;
334 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
335
03647350
VZ
336 @end
337
485c6263 338 void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c);
b466e85a 339
724999ee
KO
340 /*
341 We need this for ShowModal, as the sheet just disables the parent window and
342 returns control to the app, whereas we don't want to return from ShowModal
343 until the sheet has been dismissed.
344 */
345 @interface ModalDialogDelegate : NSObject
346 {
347 BOOL sheetFinished;
348 int resultCode;
349 }
350
351 - (BOOL)finished;
352 - (int)code;
353 - (void)waitForSheetToFinish;
354 - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
355 @end
356
357
4850cc8b
SC
358#endif // __OBJC__
359
4849f027
SC
360// NSCursor
361
362WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );
363WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY );
364void wxMacCocoaSetCursor( WX_NSCursor cursor );
365void wxMacCocoaHideCursor();
366void wxMacCocoaShowCursor();
367
368typedef struct tagClassicCursor
369{
370 wxUint16 bits[16];
371 wxUint16 mask[16];
372 wxInt16 hotspot[2];
373}ClassicCursor;
374
524c47aa
SC
375const short kwxCursorBullseye = 0;
376const short kwxCursorBlank = 1;
377const short kwxCursorPencil = 2;
378const short kwxCursorMagnifier = 3;
379const short kwxCursorNoEntry = 4;
380const short kwxCursorPaintBrush = 5;
381const short kwxCursorPointRight = 6;
382const short kwxCursorPointLeft = 7;
383const short kwxCursorQuestionArrow = 8;
384const short kwxCursorRightArrow = 9;
385const short kwxCursorSizeNS = 10;
386const short kwxCursorSize = 11;
387const short kwxCursorSizeNESW = 12;
388const short kwxCursorSizeNWSE = 13;
389const short kwxCursorRoller = 14;
390const short kwxCursorLast = kwxCursorRoller;
391
392// exposing our fallback cursor map
393
394extern ClassicCursor gMacCursors[];
395
4849f027
SC
396#endif
397
398#endif
399 // _WX_PRIVATE_COCOA_H_
400