Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 1
/*
2
    SDL - Simple DirectMedia Layer
3
    Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
4
 
5
    This library is free software; you can redistribute it and/or
6
    modify it under the terms of the GNU Library General Public
7
    License as published by the Free Software Foundation; either
8
    version 2 of the License, or (at your option) any later version.
9
 
10
    This library is distributed in the hope that it will be useful,
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
    Library General Public License for more details.
14
 
15
    You should have received a copy of the GNU Library General Public
16
    License along with this library; if not, write to the Free
17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
 
19
    Sam Lantinga
20
    slouken@devolution.com
21
*/
22
 
23
 
24
/* Application focus/iconification handling code for SDL */
25
 
26
#include 
27
#include 
28
 
29
#include "SDL_events.h"
30
#include "SDL_events_c.h"
31
 
32
 
33
/* These are static for our active event handling code */
34
static Uint8 SDL_appstate = 0;
35
 
36
/* Public functions */
37
int SDL_AppActiveInit(void)
38
{
39
	/* Start completely active */
40
	SDL_appstate = (SDL_APPACTIVE|SDL_APPINPUTFOCUS|SDL_APPMOUSEFOCUS);
41
 
42
	/* That's it! */
43
	return(0);
44
}
45
 
46
Uint8 SDL_GetAppState(void)
47
{
48
	return(SDL_appstate);
49
}
50
 
51
/* This is global for SDL_eventloop.c */
52
int SDL_PrivateAppActive(Uint8 gain, Uint8 state)
53
{
54
	int posted;
55
	Uint8 new_state;
56
 
57
	/* Modify the current state with the given mask */
58
	if ( gain ) {
59
		new_state = (SDL_appstate | state);
60
	} else {
61
		new_state = (SDL_appstate & ~state);
62
	}
63
 
64
	/* Drop events that don't change state */
65
	if ( new_state == SDL_appstate ) {
66
		return(0);
67
	}
68
 
69
	/* Update internal active state */
70
	SDL_appstate = new_state;
71
 
72
	/* Post the event, if desired */
73
	posted = 0;
74
	if ( SDL_ProcessEvents[SDL_ACTIVEEVENT] == SDL_ENABLE ) {
75
		SDL_Event event;
76
		memset(&event, 0, sizeof(event));
77
		event.type = SDL_ACTIVEEVENT;
78
		event.active.gain = gain;
79
		event.active.state = state;
80
		if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) {
81
			posted = 1;
82
			SDL_PushEvent(&event);
83
		}
84
	}
85
 
86
	/* If we lost keyboard focus, post key-up events */
87
	if ( (state & SDL_APPINPUTFOCUS) && !gain ) {
88
		SDL_ResetKeyboard();
89
	}
90
	return(posted);
91
}