Skip to content

Commit 4b3f912

Browse files
committed
Add enums , type registration for swipe directions
- Added sugar_swipe_direction_get_type and sugar_swipe_direction_flags_get_type to register SugarSwipeDirection and SugarSwipeDirectionFlags enums. - Fixes compilation errors related to undeclared SUGAR_TYPE_SWIPE_DIRECTION_FLAGS and SUGAR_TYPE_SWIPE_DIRECTION in sugar-swipe-controller.c.
1 parent eb8055b commit 4b3f912

File tree

2 files changed

+88
-39
lines changed

2 files changed

+88
-39
lines changed

src/sugar3/event-controller/sugar-swipe-controller.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
#include "sugar-swipe-controller.h"
2323
#include "sugar-enum-types.h"
24+
#include <glib-object.h>
25+
2426

2527
#define CHECK_TIME 100
2628
#define SWIPE_PX_THRESHOLD 80
@@ -46,6 +48,40 @@ struct _SugarEventData
4648

4749
static guint signals[LAST_SIGNAL] = { 0 };
4850

51+
GType sugar_swipe_direction_get_type(void) {
52+
static GType etype = 0;
53+
static const GEnumValue values[] = {
54+
{SUGAR_SWIPE_DIRECTION_LEFT, "SUGAR_SWIPE_DIRECTION_LEFT", "left"},
55+
{SUGAR_SWIPE_DIRECTION_RIGHT, "SUGAR_SWIPE_DIRECTION_RIGHT", "right"},
56+
{SUGAR_SWIPE_DIRECTION_UP, "SUGAR_SWIPE_DIRECTION_UP", "up"},
57+
{SUGAR_SWIPE_DIRECTION_DOWN, "SUGAR_SWIPE_DIRECTION_DOWN", "down"},
58+
{0, NULL, NULL}
59+
};
60+
61+
if (etype == 0) {
62+
etype = g_enum_register_static("SugarSwipeDirection", values);
63+
}
64+
65+
return etype;
66+
}
67+
68+
GType sugar_swipe_direction_flags_get_type(void) {
69+
static GType etype = 0;
70+
static const GFlagsValue values[] = {
71+
{SUGAR_SWIPE_DIRECTION_FLAG_LEFT, "SUGAR_SWIPE_DIRECTION_FLAG_LEFT", "left"},
72+
{SUGAR_SWIPE_DIRECTION_FLAG_RIGHT, "SUGAR_SWIPE_DIRECTION_FLAG_RIGHT", "right"},
73+
{SUGAR_SWIPE_DIRECTION_FLAG_UP, "SUGAR_SWIPE_DIRECTION_FLAG_UP", "up"},
74+
{SUGAR_SWIPE_DIRECTION_FLAG_DOWN, "SUGAR_SWIPE_DIRECTION_FLAG_DOWN", "down"},
75+
{0, NULL, NULL}
76+
};
77+
78+
if (etype == 0) {
79+
etype = g_flags_register_static("SugarSwipeDirectionFlags", values);
80+
}
81+
82+
return etype;
83+
}
84+
4985
G_DEFINE_TYPE_WITH_PRIVATE (SugarSwipeController,
5086
sugar_swipe_controller,
5187
SUGAR_TYPE_EVENT_CONTROLLER)

src/sugar3/event-controller/sugar-swipe-controller.h

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -23,66 +23,79 @@
2323
#error "Only <sugar/event-controller/sugar-event-controllers.h> can be included directly."
2424
#endif
2525

26-
#ifndef __SUGAR_SWIPE_CONTROLLER_H__
27-
#define __SUGAR_SWIPE_CONTROLLER_H__
26+
#ifndef __SUGAR_EVENT_CONTROLLER_H__
27+
#define __SUGAR_EVENT_CONTROLLER_H__
2828

29-
#include "sugar-event-controller.h"
3029
#include <gtk/gtk.h>
3130

3231
G_BEGIN_DECLS
3332

34-
#define SUGAR_TYPE_SWIPE_CONTROLLER (sugar_swipe_controller_get_type ())
35-
#define SUGAR_SWIPE_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SUGAR_TYPE_SWIPE_CONTROLLER, SugarSwipeController))
36-
#define SUGAR_SWIPE_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SUGAR_TYPE_SWIPE_CONTROLLER, SugarSwipeControllerClass))
37-
#define SUGAR_IS_SWIPE_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SUGAR_TYPE_SWIPE_CONTROLLER))
38-
#define SUGAR_IS_SWIPE_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SUGAR_TYPE_SWIPE_CONTROLLER))
39-
#define SUGAR_SWIPE_CONTROLLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SUGAR_TYPE_SWIPE_CONTROLLER, SugarSwipeControllerClass))
33+
#define SUGAR_TYPE_EVENT_CONTROLLER (sugar_event_controller_get_type ())
34+
#define SUGAR_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SUGAR_TYPE_EVENT_CONTROLLER, SugarEventController))
35+
#define SUGAR_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SUGAR_TYPE_EVENT_CONTROLLER, SugarEventControllerClass))
36+
#define SUGAR_IS_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SUGAR_TYPE_EVENT_CONTROLLER))
37+
#define SUGAR_IS_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SUGAR_TYPE_EVENT_CONTROLLER))
38+
#define SUGAR_EVENT_CONTROLLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SUGAR_TYPE_EVENT_CONTROLLER, SugarEventControllerClass))
39+
#define SUGAR_TYPE_EVENT_CONTROLLER_STATE (sugar_event_controller_state_get_type())
4040

41-
typedef struct _SugarSwipeController SugarSwipeController;
42-
typedef struct _SugarSwipeControllerClass SugarSwipeControllerClass;
43-
typedef struct _SugarSwipeControllerPrivate SugarSwipeControllerPrivate;
41+
typedef struct _SugarEventController SugarEventController;
42+
typedef struct _SugarEventControllerClass SugarEventControllerClass;
43+
typedef struct _SugarEventControllerPrivate SugarEventControllerPrivate;
4444

4545
typedef enum {
46-
SUGAR_SWIPE_DIRECTION_LEFT,
47-
SUGAR_SWIPE_DIRECTION_RIGHT,
48-
SUGAR_SWIPE_DIRECTION_UP,
49-
SUGAR_SWIPE_DIRECTION_DOWN
50-
} SugarSwipeDirection;
46+
SUGAR_EVENT_CONTROLLER_STATE_NONE,
47+
SUGAR_EVENT_CONTROLLER_STATE_COLLECTING,
48+
SUGAR_EVENT_CONTROLLER_STATE_RECOGNIZED,
49+
SUGAR_EVENT_CONTROLLER_STATE_NOT_RECOGNIZED
50+
} SugarEventControllerState;
5151

5252
typedef enum {
53-
SUGAR_SWIPE_DIRECTION_FLAG_LEFT = 1 << SUGAR_SWIPE_DIRECTION_LEFT,
54-
SUGAR_SWIPE_DIRECTION_FLAG_RIGHT = 1 << SUGAR_SWIPE_DIRECTION_RIGHT,
55-
SUGAR_SWIPE_DIRECTION_FLAG_UP = 1 << SUGAR_SWIPE_DIRECTION_UP,
56-
SUGAR_SWIPE_DIRECTION_FLAG_DOWN = 1 << SUGAR_SWIPE_DIRECTION_DOWN,
57-
} SugarSwipeDirectionFlags;
53+
SUGAR_EVENT_CONTROLLER_FLAG_NONE = 0,
54+
SUGAR_EVENT_CONTROLLER_FLAG_EXCLUSIVE = 1 << 0
55+
} SugarEventControllerFlags;
5856

59-
struct _SugarSwipeController
57+
struct _SugarEventController
6058
{
61-
SugarEventController parent_instance;
62-
SugarSwipeControllerPrivate *priv;
59+
GObject parent_instance;
60+
61+
SugarEventControllerPrivate *priv;
6362
};
6463

65-
struct _SugarSwipeControllerClass
64+
struct _SugarEventControllerClass
6665
{
67-
SugarEventControllerClass parent_class;
66+
GObjectClass parent_class;
67+
68+
/* Signals */
69+
void (* began) (SugarEventController *controller);
70+
void (* updated) (SugarEventController *controller);
71+
void (* ended) (SugarEventController *controller);
6872

69-
void (* swipe_ended) (SugarSwipeController *controller,
70-
SugarSwipeDirection direction);
73+
/* vmethods */
74+
gboolean (* handle_event) (SugarEventController *controller,
75+
GdkEvent *event);
76+
SugarEventControllerState (* get_state) (SugarEventController *controller);
77+
void (* reset) (SugarEventController *controller);
7178
};
7279

73-
struct _SugarSwipeControllerPrivate
80+
struct _SugarEventControllerPrivate
7481
{
75-
GdkDevice *device;
76-
GdkEventSequence *sequence;
77-
GArray *event_data;
78-
guint swiping : 1;
79-
guint swiped : 1;
80-
guint directions : 4;
82+
GtkWidget *widget;
8183
};
8284

83-
GType sugar_swipe_controller_get_type (void) G_GNUC_CONST;
84-
SugarEventController * sugar_swipe_controller_new (SugarSwipeDirectionFlags directions);
85+
GType sugar_event_controller_get_type (void) G_GNUC_CONST;
86+
GType sugar_event_controller_state_get_type(void) G_GNUC_CONST;
87+
gboolean sugar_event_controller_handle_event (SugarEventController *controller,
88+
GdkEvent *event);
89+
gboolean sugar_event_controller_attach (SugarEventController *controller,
90+
GtkWidget *widget,
91+
SugarEventControllerFlags flags);
92+
gboolean sugar_event_controller_detach (SugarEventController *controller,
93+
GtkWidget *widget);
94+
gboolean sugar_event_controller_reset (SugarEventController *controller);
95+
96+
SugarEventControllerState
97+
sugar_event_controller_get_state (SugarEventController *controller);
8598

8699
G_END_DECLS
87100

88-
#endif /* __SUGAR_SWIPE_CONTROLLER_H__ */
101+
#endif /* __SUGAR_EVENT_CONTROLLER_H__ */

0 commit comments

Comments
 (0)