src/video/cocoa/SDL_cocoawindow.h
author Sam Lantinga <slouken@libsdl.org>
Thu, 08 Nov 2012 02:26:40 -0800
changeset 6666 018f8019ce36
parent 6662 698c2e533a7e
child 6681 5a0396a933b5
permissions -rw-r--r--
Reset the mouse button state when losing mouse focus.
Implemented mouse focus handling entirely using mouse motion events, with SetCapture() semantics, as long as the windowing system continues to provide mouse events.
slouken@1933
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@6138
     3
  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
slouken@1933
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@1933
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@1933
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@1933
    20
*/
slouken@1933
    21
#include "SDL_config.h"
slouken@1933
    22
slouken@1933
    23
#ifndef _SDL_cocoawindow_h
slouken@1933
    24
#define _SDL_cocoawindow_h
slouken@1933
    25
slouken@3400
    26
#import <Cocoa/Cocoa.h>
slouken@3400
    27
slouken@1933
    28
typedef struct SDL_WindowData SDL_WindowData;
slouken@1933
    29
slouken@1936
    30
/* *INDENT-OFF* */
icculus@5646
    31
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
slouken@5374
    32
@interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> {
slouken@5374
    33
#else
slouken@3400
    34
@interface Cocoa_WindowListener : NSResponder {
slouken@5374
    35
#endif
slouken@1933
    36
    SDL_WindowData *_data;
slouken@1933
    37
}
slouken@1933
    38
slouken@1933
    39
-(void) listen:(SDL_WindowData *) data;
slouken@1933
    40
-(void) close;
slouken@1933
    41
slouken@1933
    42
/* Window delegate functionality */
slouken@1933
    43
-(BOOL) windowShouldClose:(id) sender;
slouken@1933
    44
-(void) windowDidExpose:(NSNotification *) aNotification;
slouken@1933
    45
-(void) windowDidMove:(NSNotification *) aNotification;
slouken@1933
    46
-(void) windowDidResize:(NSNotification *) aNotification;
slouken@1933
    47
-(void) windowDidMiniaturize:(NSNotification *) aNotification;
slouken@1933
    48
-(void) windowDidDeminiaturize:(NSNotification *) aNotification;
slouken@1933
    49
-(void) windowDidBecomeKey:(NSNotification *) aNotification;
slouken@1933
    50
-(void) windowDidResignKey:(NSNotification *) aNotification;
slouken@1933
    51
slouken@1933
    52
/* Window event handling */
slouken@1933
    53
-(void) mouseDown:(NSEvent *) theEvent;
slouken@1933
    54
-(void) rightMouseDown:(NSEvent *) theEvent;
slouken@1933
    55
-(void) otherMouseDown:(NSEvent *) theEvent;
slouken@1933
    56
-(void) mouseUp:(NSEvent *) theEvent;
slouken@1933
    57
-(void) rightMouseUp:(NSEvent *) theEvent;
slouken@1933
    58
-(void) otherMouseUp:(NSEvent *) theEvent;
slouken@1933
    59
-(void) mouseMoved:(NSEvent *) theEvent;
slouken@1957
    60
-(void) mouseDragged:(NSEvent *) theEvent;
slouken@1958
    61
-(void) rightMouseDragged:(NSEvent *) theEvent;
slouken@1958
    62
-(void) otherMouseDragged:(NSEvent *) theEvent;
slouken@1933
    63
-(void) scrollWheel:(NSEvent *) theEvent;
slouken@4673
    64
-(void) touchesBeganWithEvent:(NSEvent *) theEvent;
slouken@4673
    65
-(void) touchesMovedWithEvent:(NSEvent *) theEvent;
slouken@4673
    66
-(void) touchesEndedWithEvent:(NSEvent *) theEvent;
slouken@4673
    67
-(void) touchesCancelledWithEvent:(NSEvent *) theEvent;
slouken@4673
    68
slouken@4673
    69
/* Touch event handling */
slouken@4673
    70
typedef enum {
slouken@4673
    71
    COCOA_TOUCH_DOWN,
slouken@4673
    72
    COCOA_TOUCH_UP,
slouken@4673
    73
    COCOA_TOUCH_MOVE,
slouken@4673
    74
    COCOA_TOUCH_CANCELLED
slouken@4673
    75
} cocoaTouchType;
slouken@4673
    76
-(void) handleTouches:(cocoaTouchType)type withEvent:(NSEvent*) event;
slouken@4673
    77
slouken@1936
    78
@end
slouken@1936
    79
/* *INDENT-ON* */
slouken@1936
    80
slouken@1936
    81
struct SDL_WindowData
slouken@1933
    82
{
slouken@3685
    83
    SDL_Window *window;
slouken@3685
    84
    NSWindow *nswindow;
slouken@1951
    85
    SDL_bool created;
slouken@1933
    86
    Cocoa_WindowListener *listener;
slouken@1933
    87
    struct SDL_VideoData *videodata;
slouken@1933
    88
};
slouken@1933
    89
slouken@1933
    90
extern int Cocoa_CreateWindow(_THIS, SDL_Window * window);
slouken@1933
    91
extern int Cocoa_CreateWindowFrom(_THIS, SDL_Window * window,
slouken@1933
    92
                                  const void *data);
slouken@1933
    93
extern void Cocoa_SetWindowTitle(_THIS, SDL_Window * window);
slouken@5375
    94
extern void Cocoa_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon);
slouken@1933
    95
extern void Cocoa_SetWindowPosition(_THIS, SDL_Window * window);
slouken@1933
    96
extern void Cocoa_SetWindowSize(_THIS, SDL_Window * window);
slouken@1933
    97
extern void Cocoa_ShowWindow(_THIS, SDL_Window * window);
slouken@1933
    98
extern void Cocoa_HideWindow(_THIS, SDL_Window * window);
slouken@1933
    99
extern void Cocoa_RaiseWindow(_THIS, SDL_Window * window);
slouken@1933
   100
extern void Cocoa_MaximizeWindow(_THIS, SDL_Window * window);
slouken@1933
   101
extern void Cocoa_MinimizeWindow(_THIS, SDL_Window * window);
slouken@1933
   102
extern void Cocoa_RestoreWindow(_THIS, SDL_Window * window);
icculus@6422
   103
extern void Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered);
slouken@5305
   104
extern void Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
slouken@5466
   105
extern int Cocoa_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp);
slouken@5466
   106
extern int Cocoa_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp);
slouken@6662
   107
extern void Cocoa_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed);
slouken@1933
   108
extern void Cocoa_DestroyWindow(_THIS, SDL_Window * window);
slouken@1933
   109
extern SDL_bool Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window,
slouken@1933
   110
                                      struct SDL_SysWMinfo *info);
slouken@1933
   111
slouken@1933
   112
#endif /* _SDL_cocoawindow_h */
slouken@1933
   113
slouken@1933
   114
/* vi: set ts=4 sw=4 expandtab: */