File: events.c

package info (click to toggle)
gentoo 0.19.13-2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 6,900 kB
  • ctags: 5,244
  • sloc: ansic: 41,826; sh: 4,406; makefile: 817; yacc: 291; sed: 16
file content (83 lines) | stat: -rw-r--r-- 2,075 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
** 1999-06-12 -	A little module to temporarily store (and give some sort of controlled 
**		access to) GDK events. This is handy because some commands need data from
**		primarily mouse button events, but I don't want to pass that data down the
**		regular channels (i.e., as parameters to csq_execute()). So the commands
**		will have to go through here to get it.
*/

#include "gentoo.h"

#include "events.h"

/* ----------------------------------------------------------------------------------------- */

typedef struct {
	gboolean	valid;
	GdkEvent	event;
} EventSlot;

typedef struct {
	EventSlot	eventslot[1];
} EventInfo;

static EventInfo	the_events = { { { FALSE } } };

/* ----------------------------------------------------------------------------------------- */

/* 1999-06-12 -	Store given event in event memory, where it can be later accessed when needed.
**		Only a specific set of event types are supported.
*/
void evt_event_set(GdkEvent *evt)
{
	if(evt != NULL)
	{
		switch(evt->type)
		{
			case GDK_BUTTON_PRESS:
				the_events.eventslot[0].valid = TRUE;
				the_events.eventslot[0].event = *evt;
				break;
			default:
				fprintf(stderr, "EVENTS: evt_event_set() called on illegal event type!\n");
		}
	}
}

/* 1999-06-12 -	Retrieve a pointer the the last registered event of type <type>. Returns NULL
**		if there has been no registration, or the type is unsupported.
*/
GdkEvent * evt_event_get(GdkEventType type)
{
	guint	index;

	switch(type)
	{
		case GDK_BUTTON_PRESS:
			index = 0;
			break;
		default:
			fprintf(stderr, "EVENTS: evt_event_get() called on illegal event type!\n");
			return NULL;
	}
	if(the_events.eventslot[index].valid)
		return &the_events.eventslot[index].event;
	return NULL;
}

/* 1999-06-12 -	Clear the memory from events of type <type>. */
void evt_event_clear(GdkEventType type)
{
	guint	index;

	switch(type)
	{
		case GDK_BUTTON_PRESS:
			index = 0;
			break;
		default:
			fprintf(stderr, "EVENTS: evt_event_clear() called on illegal event type!\n");
			return;
	}
	the_events.eventslot[index].valid = FALSE;
}