Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2008-11-19 16:16:05 +0300
committerTon Roosendaal <ton@blender.org>2008-11-19 16:16:05 +0300
commitfd8c94fdb156ce83f5aa70eddcd85b0af6f1456a (patch)
treeaeb617ba7ba4e8255c8697e64c244c0d35b07164 /source/blender/windowmanager
parentecde558252727584cdcd20b42c3d727ecbe26af2 (diff)
2.5: gesture code in WM
- Simplified and cleaned previous border code It was a bit too complex, too many data manipulations Original idea was to have WM API calls to manage border, circle, lines, lasso, etc. This now means that WM provides callbacks for custom operators, so it's very easy to make them. Check bottom of screen_edit.c for an example. Currently two borders were coded; with and without cross hair. Press Bkey in any area-region to test it (note: time window has wrong matrix!) Some specs to note: - gestures are in region space, and draw 'over'. That latter still needs some work when we do real composites. - only the active region is redrawn. - on todo is the generic gesture engine for 'tweak' or like how currently grab gestures in Blender work. These will be configurable per area-region, and WM then will send the proper "Gesture Event" with properties (N, S, E, W, etc) to which you then can assign operators. Such events will be generated with low priority, so other handlers who swallowed mouse events have preference.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_api.h22
-rw-r--r--source/blender/windowmanager/WM_types.h36
-rw-r--r--source/blender/windowmanager/intern/wm.c1
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c2
-rw-r--r--source/blender/windowmanager/intern/wm_gesture.c158
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c148
-rw-r--r--source/blender/windowmanager/intern/wm_window.c1
-rw-r--r--source/blender/windowmanager/wm.h4
-rw-r--r--source/blender/windowmanager/wm_gesture_types.h40
9 files changed, 174 insertions, 238 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index cf022e20660..86e6fe77c73 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -80,7 +80,7 @@ void WM_event_add_notifier(wmWindowManager *wm, wmWindow *window,
int swinid, int type,
int value, void *data);
-void wm_event_add(wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */
+void wm_event_add (wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */
/* one-shot timer, returns wmTimerData.handle */
struct wmTimerHandle *WM_event_add_window_timer(wmWindow *win, int delay_ms, int interval_ms);
@@ -94,10 +94,14 @@ int WM_operator_winactive (struct bContext *C);
/* operator api */
wmOperatorType *WM_operatortype_find(const char *idname);
-void WM_operatortype_append(void (*opfunc)(wmOperatorType*));
+void WM_operatortype_append (void (*opfunc)(wmOperatorType*));
-int WM_operator_invoke(struct bContext *C, wmOperatorType *ot, struct wmEvent *event);
-void WM_operator_cancel(struct bContext *C, ListBase *modalops, wmOperatorType *ot);
+int WM_operator_invoke (struct bContext *C, wmOperatorType *ot, struct wmEvent *event);
+void WM_operator_cancel (struct bContext *C, ListBase *modalops, wmOperatorType *ot);
+
+ /* default operator callbacks for border/lasso */
+int WM_border_select_invoke (struct bContext *C, wmOperator *op, struct wmEvent *event);
+int WM_border_select_modal (struct bContext *C, wmOperator *op, struct wmEvent *event);
/*
* Operator property api
@@ -160,14 +164,12 @@ void OP_verify_float_array(wmOperator *op, char *name, float *array, short len,
void OP_free_property(wmOperator *op);
/* Gesture manager API */
-void WM_gesture_init(struct bContext *C, int type);
-void WM_gesture_update(struct bContext *C, struct wmGesture *from);
-void WM_gesture_end(struct bContext *C, int type);
-void WM_gesture_free(wmWindow *win);
+struct wmGesture *WM_gesture_new(struct bContext *C, struct wmEvent *event, int type);
+void WM_gesture_end(struct bContext *C, struct wmGesture *gesture);
/* Reporting information and errors */
-void WM_report(struct bContext *C, int type, const char *message);
-void WM_reportf(struct bContext *C, int type, const char *format, ...);
+void WM_report(struct bContext *C, int type, const char *message);
+void WM_reportf(struct bContext *C, int type, const char *format, ...);
/* OpenGL wrappers, mimicing opengl syntax */
void wmLoadMatrix (wmWindow *win, float mat[][4]);
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 5bb79681467..adf4e2226b0 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -32,7 +32,6 @@
#include "wm_cursors.h"
#include "wm_event_types.h"
-#include "wm_gesture_types.h"
/* ************** wmOperatorType ************************ */
@@ -104,23 +103,33 @@ typedef struct wmNotifier {
enum {
WM_NOTE_WINDOW_REDRAW,
WM_NOTE_SCREEN_CHANGED,
+ WM_NOTE_AREA_REDRAW,
+ WM_NOTE_REGION_REDRAW,
+ WM_NOTE_GESTURE_REDRAW,
WM_NOTE_OBJECT_CHANGED,
- WM_NOTE_AREA_SPLIT,
- WM_NOTE_AREA_DRAG,
- WM_NOTE_GESTURE_CHANGED,
WM_NOTE_LAST
};
/* ************** Gesture Manager data ************** */
-typedef struct wmGestureRect {
- /* always this first!! */
- wmGesture gesture;
- short x1, x2;
- short y1, y2;
-} wmGestureRect;
+/* wmGesture->type */
+#define WM_GESTURE_LINE 0
+#define WM_GESTURE_RECT 1
+#define WM_GESTURE_CROSS_RECT 2
+#define WM_GESTURE_LASSO 3
+#define WM_GESTURE_CIRCLE 4
+
+/* wmGesture is registered to window listbase, handled by operator callbacks */
+typedef struct wmGesture {
+ struct wmGesture *next, *prev;
+ int eventtype, mode;
+ int type, swinid;
+
+ void *customdata;
+ /* customdata for border is a recti */
+
+} wmGesture;
-#define GESTURE_RECT 0
/* ************** custom wmEvent data ************** */
@@ -134,11 +143,6 @@ typedef struct wmTabletData {
float Ytilt; /* as above */
} wmTabletData;
-typedef struct wmBorderSelect {
- short x1, y1;
- short x2, y2;
-} wmBorderSelect;
-
struct wmTimerHandle;
typedef struct wmTimerHandle wmTimerHandle;
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index d1429fc4f7f..cafc7a7b597 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -84,7 +84,6 @@ static void wm_window_keymap(wmWindowManager *wm)
WM_keymap_verify_item(&wm->windowkeymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_verify_item(&wm->windowkeymap, "WM_OT_window_fullscreen_toggle", FKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(&wm->windowkeymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_verify_item(&wm->windowkeymap, "WM_OT_border_select", BKEY, KM_PRESS, 0, 0);
}
/* ****************************************** */
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 73186d7e41d..d2143fe5028 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -257,7 +257,7 @@ void wm_draw_update(bContext *C)
}
if(win->screen->do_gesture)
- ED_screen_gesture(win);
+ wm_gesture_draw(win);
wm_window_swap_buffers(win);
diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c
index 02e4a0124c2..0a927f3f191 100644
--- a/source/blender/windowmanager/intern/wm_gesture.c
+++ b/source/blender/windowmanager/intern/wm_gesture.c
@@ -26,6 +26,8 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include "DNA_screen_types.h"
+#include "DNA_vec_types.h"
#include "DNA_windowmanager_types.h"
#include "MEM_guardedalloc.h"
@@ -33,114 +35,104 @@
#include "BLI_blenlib.h"
#include "BKE_global.h"
+#include "BKE_utildefines.h"
#include "WM_api.h"
#include "WM_types.h"
#include "wm_event_system.h"
+#include "wm_subwindow.h"
#include "BIF_gl.h"
#include "BIF_glutil.h"
-
-wmGesture *wm_gesture_find(ListBase *list, int type)
+/* context checked on having screen, window and area */
+wmGesture *WM_gesture_new(bContext *C, wmEvent *event, int type)
{
- wmGesture *gt= list->first;
- while(gt) {
- if(gt->type==type)
- return(gt);
- gt= gt->next;
+ wmGesture *gesture= MEM_callocN(sizeof(wmGesture), "new gesture");
+ int sx, sy;
+
+ BLI_addtail(&C->window->gesture, gesture);
+
+ gesture->type= type;
+ gesture->eventtype= event->type;
+ gesture->swinid= C->screen->subwinactive; /* means only in area-region context! */
+
+ wm_subwindow_getorigin(C->window, gesture->swinid, &sx, &sy);
+
+ if( ELEM(type, WM_GESTURE_RECT, WM_GESTURE_CROSS_RECT)) {
+ rcti *rect= MEM_callocN(sizeof(rcti), "gesture rect new");
+
+ gesture->customdata= rect;
+ rect->xmin= event->x - sx;
+ rect->ymin= event->y - sy;
+ rect->xmax= event->x - sx;
+ rect->ymax= event->y - sy;
}
- return(NULL);
+
+ return gesture;
}
-wmGesture *wm_gesture_new(int type)
+void WM_gesture_end(bContext *C, wmGesture *gesture)
{
- wmGesture *gesture= NULL;
- wmGestureRect *rect;
-
- if(type==GESTURE_RECT) {
- rect= MEM_mallocN(sizeof(wmGestureRect), "gesture rect new");
- gesture= (wmGesture*) rect;
- gesture->type= type;
- rect->x1= 0;
- rect->y1= 0;
- rect->x2= 1;
- rect->y2= 1;
- }
- return(gesture);
+ BLI_remlink(&C->window->gesture, gesture);
+ MEM_freeN(gesture->customdata);
+ MEM_freeN(gesture);
}
-void WM_gesture_init(bContext *C, int type)
-{
- wmGesture *gt= NULL;
- if(C->window) {
- gt= wm_gesture_find(&C->window->gesture, type);
- if(!gt) {
- gt= wm_gesture_new(type);
- BLI_addtail(&C->window->gesture, gt);
- }
- }
-}
-void wm_gesture_rect_copy(wmGestureRect *to, wmGestureRect *from)
-{
- to->x1= from->x1;
- to->x2= from->x2;
- to->y1= from->y1;
- to->y2= from->y2;
-}
+/* ******************* gesture draw ******************* */
-void WM_gesture_update(bContext *C, wmGesture *from)
+static void wm_gesture_draw_rect(wmWindow *win, wmGesture *gt)
{
- wmGesture *to;
-
- if(!C->window)
- return;
-
- to= wm_gesture_find(&C->window->gesture, from->type);
- if(!to)
- return;
-
- if(to->type==GESTURE_RECT)
- wm_gesture_rect_copy((wmGestureRect*)to, (wmGestureRect*)from);
+ rcti *rect= (rcti *)gt->customdata;
+
+ glEnable(GL_LINE_STIPPLE);
+ glColor3ub(0, 0, 0);
+ glLineStipple(1, 0xAAAA);
+ sdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
+ glColor3ub(255, 255, 255);
+ glLineStipple(1, 0x3333);
+ sdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
+ glDisable(GL_LINE_STIPPLE);
}
-void WM_gesture_free(wmWindow *win)
+static void wm_gesture_draw_cross(wmWindow *win, wmGesture *gt)
{
- /* Now don't have multiple struct so
- * a simple BLI_freelistN is what we need.
- */
- BLI_freelistN(&win->gesture);
+ rcti *rect= (rcti *)gt->customdata;
+
+ glEnable(GL_LINE_STIPPLE);
+ glColor3ub(0, 0, 0);
+ glLineStipple(1, 0xAAAA);
+ sdrawline(rect->xmin - win->sizex, rect->ymin, rect->xmin + win->sizex, rect->ymin);
+ sdrawline(rect->xmin, rect->ymin - win->sizey, rect->xmin, rect->ymin + win->sizey);
+
+ glColor3ub(255, 255, 255);
+ glLineStipple(1, 0x3333);
+ sdrawline(rect->xmin - win->sizex, rect->ymin, rect->xmin + win->sizex, rect->ymin);
+ sdrawline(rect->xmin, rect->ymin - win->sizey, rect->xmin, rect->ymin + win->sizey);
+ glDisable(GL_LINE_STIPPLE);
}
-void WM_gesture_end(bContext *C, int type)
+/* called in wm_event_system.c */
+void wm_gesture_draw(wmWindow *win)
{
- wmGesture *gt;
- wmGestureRect *rect;
- wmBorderSelect *wmbor;
- wmEvent event;
-
- if(!C->window)
- return;
-
- gt= wm_gesture_find(&C->window->gesture, type);
- if(!gt)
- return;
-
- if(gt->type==GESTURE_RECT) {
- rect= (wmGestureRect*)gt;
-
- wmbor= MEM_mallocN(sizeof(wmBorderSelect), "border select");
- wmbor->x1= rect->x1;
- wmbor->y1= rect->y1;
- wmbor->x2= rect->x2;
- wmbor->y2= rect->y2;
-
- event.type= BORDERSELECT;
- event.custom= EVT_GESTURE;
- event.customdata= wmbor;
- wm_event_add(C->window, &event);
+ wmGesture *gt= (wmGesture *)win->gesture.first;
+
+ for(; gt; gt= gt->next) {
+ /* all in subwindow space */
+ wm_subwindow_set(win, gt->swinid);
+
+ if(gt->type==WM_GESTURE_RECT)
+ wm_gesture_draw_rect(win, gt);
+ else if(gt->type==WM_GESTURE_CROSS_RECT) {
+ if(gt->mode==1)
+ wm_gesture_draw_rect(win, gt);
+ else
+ wm_gesture_draw_cross(win, gt);
+ }
}
}
+
+
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 6e65e4917eb..32efa8eb71a 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -29,6 +29,7 @@
#include <string.h>
#include "DNA_ID.h"
+#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
#include "MEM_guardedalloc.h"
@@ -43,7 +44,9 @@
#include "WM_api.h"
#include "WM_types.h"
+
#include "wm_window.h"
+#include "wm_subwindow.h"
#include "wm_event_system.h"
static ListBase global_ops= {NULL, NULL};
@@ -130,121 +133,93 @@ static void WM_OT_exit_blender(wmOperatorType *ot)
ot->poll= WM_operator_winactive;
}
-/* ************ window / screen border operator definitions ************** */
+/* ************ window gesture operator-callback definitions ************** */
/*
- * This is and example of global operator working with
- * the gesture system.
+ * These are default callbacks for use in operators requiring gesture input
*/
-static int border_select_init(bContext *C, wmOperator *op)
-{
- int x, y;
-
- if(!(OP_get_int(op, "start_x", &x) && OP_get_int(op, "start_y", &y)))
- return 0;
-
- WM_gesture_init(C, GESTURE_RECT);
- return 1;
-}
-
-static int border_select_apply(bContext *C, wmOperator *op)
-{
- wmGestureRect rect;
- int x, y, endx, endy;
-
- OP_get_int(op, "start_x", &x);
- OP_get_int(op, "start_y", &y);
- OP_get_int(op, "end_x", &endx);
- OP_get_int(op, "end_y", &endy);
-
- rect.gesture.next= rect.gesture.prev= NULL;
- rect.gesture.type= GESTURE_RECT;
- rect.x1= x;
- rect.y1= y;
- rect.x2= endx;
- rect.y2= endy;
- WM_gesture_update(C, (wmGesture *) &rect);
- WM_event_add_notifier(C->wm, C->window, 0, WM_NOTE_GESTURE_CHANGED, GESTURE_RECT, NULL);
- return 1;
-}
-
-static int border_select_exit(bContext *C, wmOperator *op)
+static void border_select_apply(bContext *C, wmOperator *op)
{
- WM_event_add_notifier(C->wm, C->window, 0, WM_NOTE_SCREEN_CHANGED, 0, NULL);
- OP_free_property(op);
- return 1;
+ wmGesture *gesture= op->customdata;
+ rcti *rect= gesture->customdata;
+
+ /* operator arguments and storage. */
+ OP_verify_int(op, "xmin", rect->xmin, NULL);
+ OP_verify_int(op, "ymin", rect->ymin, NULL);
+ OP_verify_int(op, "xmax", rect->xmax, NULL);
+ OP_verify_int(op, "ymax", rect->ymax, NULL);
+
+ op->type->exec(C, op);
}
-static int border_select_exec(bContext *C, wmOperator *op)
+static void border_select_end(bContext *C, wmOperator *op)
{
- if(!border_select_init(C, op))
- return OPERATOR_CANCELLED;
+ wmGesture *gesture= op->customdata;
+
+ WM_gesture_end(C, gesture); /* frees gesture itself, and unregisters from window */
+ op->customdata= NULL;
+ WM_event_remove_modal_handler(&C->window->handlers, op);
+ WM_event_add_notifier(C->wm, C->window, gesture->swinid, WM_NOTE_AREA_REDRAW, 0, NULL);
- border_select_apply(C, op);
- border_select_exit(C, op);
-
- return OPERATOR_FINISHED;
}
-static int border_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
+int WM_border_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- /* operator arguments and storage. */
- OP_verify_int(op, "start_x", event->x, NULL);
- OP_verify_int(op, "start_y", event->y, NULL);
-
- if(!border_select_init(C, op))
- return OPERATOR_CANCELLED;
+ op->customdata= WM_gesture_new(C, event, WM_GESTURE_CROSS_RECT);
- /* add temp handler */
+ /* add modal handler */
WM_event_add_modal_handler(&C->window->handlers, op);
- return OPERATOR_RUNNING_MODAL;
-}
+
+ WM_event_add_notifier(C->wm, C->window, C->screen->subwinactive, WM_NOTE_GESTURE_REDRAW, 0, NULL);
-static int border_select_cancel(bContext *C, wmOperator *op)
-{
- WM_event_remove_modal_handler(&C->window->handlers, op);
- border_select_exit(C, op);
- return OPERATOR_CANCELLED;
+ return OPERATOR_RUNNING_MODAL;
}
-static int border_select_modal(bContext *C, wmOperator *op, wmEvent *event)
+int WM_border_select_modal(bContext *C, wmOperator *op, wmEvent *event)
{
+ wmGesture *gesture= op->customdata;
+ rcti *rect= gesture->customdata;
+ int sx, sy;
+
switch(event->type) {
case MOUSEMOVE:
- OP_set_int(op, "end_x", event->x);
- OP_set_int(op, "end_y", event->y);
- border_select_apply(C, op);
- WM_event_add_notifier(C->wm, C->window, 0, WM_NOTE_GESTURE_CHANGED, GESTURE_RECT, NULL);
- WM_event_add_notifier(C->wm, C->window, 0, WM_NOTE_SCREEN_CHANGED, 0, NULL);
+
+ wm_subwindow_getorigin(C->window, gesture->swinid, &sx, &sy);
+
+ if(gesture->type==WM_GESTURE_CROSS_RECT && gesture->mode==0) {
+ rect->xmin= rect->xmax= event->x - sx;
+ rect->ymin= rect->ymax= event->y - sy;
+ }
+ else {
+ rect->xmax= event->x - sx;
+ rect->ymax= event->y - sy;
+ }
+
+ WM_event_add_notifier(C->wm, C->window, gesture->swinid, WM_NOTE_GESTURE_REDRAW, 0, NULL);
+
break;
+
case LEFTMOUSE:
- if(event->val==0) {
+ if(event->val==1) {
+ if(gesture->type==WM_GESTURE_CROSS_RECT && gesture->mode==0) {
+ gesture->mode= 1;
+ WM_event_add_notifier(C->wm, C->window, gesture->swinid, WM_NOTE_GESTURE_REDRAW, 0, NULL);
+ }
+ }
+ else {
border_select_apply(C, op);
- WM_gesture_end(C, GESTURE_RECT);
- border_select_exit(C, op);
- WM_event_remove_modal_handler(&C->window->handlers, op);
+ border_select_end(C, op);
return OPERATOR_FINISHED;
}
break;
case ESCKEY:
- return border_select_cancel(C, op);
+ border_select_end(C, op);
+ return OPERATOR_CANCELLED;
}
return OPERATOR_RUNNING_MODAL;
}
-void WM_OT_border_select(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Border select";
- ot->idname= "WM_OT_border_select";
-
- ot->exec= border_select_exec;
- ot->invoke= border_select_invoke;
- ot->cancel= border_select_cancel;
- ot->modal= border_select_modal;
-
- ot->poll= WM_operator_winactive;
-}
+/* ******************************************************* */
/* called on initialize WM_exit() */
void wm_operatortype_free(void)
@@ -259,9 +234,10 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_save_homefile);
WM_operatortype_append(WM_OT_window_fullscreen_toggle);
WM_operatortype_append(WM_OT_exit_blender);
- WM_operatortype_append(WM_OT_border_select);
}
+/* ******************************************************* */
+
/* wrapped to get property from a operator. */
IDProperty *op_get_property(wmOperator *op, char *name)
{
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 687540d106f..2044692c665 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -103,7 +103,6 @@ void wm_window_free(bContext *C, wmWindow *win)
if(win->eventstate) MEM_freeN(win->eventstate);
- WM_gesture_free(win);
wm_event_free_all(win);
wm_subwindows_free(win);
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index 739b0266c78..4699374a612 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -28,6 +28,8 @@
#ifndef WM_H
#define WM_H
+struct wmWindow;
+
extern void wm_close_and_free(bContext *C, wmWindowManager *);
extern void wm_close_and_free_all(bContext *C, ListBase *);
@@ -44,6 +46,8 @@ extern void wm_report_free(wmReport *report);
void wm_operatortype_free(void);
void wm_operatortype_init(void);
+/* wm_gesture.c */
+void wm_gesture_draw(struct wmWindow *win);
#endif /* WM_H */
diff --git a/source/blender/windowmanager/wm_gesture_types.h b/source/blender/windowmanager/wm_gesture_types.h
deleted file mode 100644
index 5c8f1cc73cc..00000000000
--- a/source/blender/windowmanager/wm_gesture_types.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * $Id: wm_gesture_types.h
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2008 Blender Foundation.
- * All rights reserved.
- *
- *
- * Contributor(s): Blender Foundation
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifndef WM_GESTURE_TYPES_H
-#define WM_GESTURE_TYPES_H
-
-typedef struct wmGesture {
- struct wmGesture *next, *prev;
-
- /* gesture type. */
- int type;
-} wmGesture;
-
-#endif /* WM_GESTURE_TYPES_H */
-