code cleanup: use const events for modal and invoke operators.
[blender.git] / source / blender / windowmanager / WM_types.h
index ad828cef6d5386f1d8cbcfe435c8f33d50df9987..f2750aa6d99385e732f915e35df7a308e9b0ff10 100644 (file)
@@ -188,7 +188,7 @@ enum {
 #define WM_UI_HANDLER_CONTINUE 0
 #define WM_UI_HANDLER_BREAK            1
 
 #define WM_UI_HANDLER_CONTINUE 0
 #define WM_UI_HANDLER_BREAK            1
 
-typedef int (*wmUIHandlerFunc)(struct bContext *C, struct wmEvent *event, void *userdata);
+typedef int (*wmUIHandlerFunc)(struct bContext *C, const struct wmEvent *event, void *userdata);
 typedef void (*wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata);
 
 /* ************** Notifiers ****************** */
 typedef void (*wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata);
 
 /* ************** Notifiers ****************** */
@@ -300,6 +300,7 @@ typedef struct wmNotifier {
        /* NC_MATERIAL Material */
 #define        ND_SHADING                      (30<<16)
 #define        ND_SHADING_DRAW         (31<<16)
        /* NC_MATERIAL Material */
 #define        ND_SHADING                      (30<<16)
 #define        ND_SHADING_DRAW         (31<<16)
+#define        ND_SHADING_LINKS        (32<<16)
 
        /* NC_LAMP Lamp */
 #define        ND_LIGHTING                     (40<<16)
 
        /* NC_LAMP Lamp */
 #define        ND_LIGHTING                     (40<<16)
@@ -326,6 +327,7 @@ typedef struct wmNotifier {
        /* Mesh, Curve, MetaBall, Armature, .. */
 #define ND_SELECT                      (90<<16)
 #define ND_DATA                                (91<<16)
        /* Mesh, Curve, MetaBall, Armature, .. */
 #define ND_SELECT                      (90<<16)
 #define ND_DATA                                (91<<16)
+#define ND_VERTEX_GROUP                (92<<16)
 
        /* NC_NODE Nodes */
 
 
        /* NC_NODE Nodes */
 
@@ -405,6 +407,9 @@ typedef struct wmGesture {
        /* customdata for circle is recti, (xmin, ymin) is center, xmax radius */
        /* customdata for lasso is short array */
        /* customdata for straight line is a recti: (xmin,ymin) is start, (xmax, ymax) is end */
        /* customdata for circle is recti, (xmin, ymin) is center, xmax radius */
        /* customdata for lasso is short array */
        /* customdata for straight line is a recti: (xmin,ymin) is start, (xmax, ymax) is end */
+
+       /* free pointer to use for operator allocs (if set, its freed on exit)*/
+       void *userdata;
 } wmGesture;
 
 /* ************** wmEvent ************************ */
 } wmGesture;
 
 /* ************** wmEvent ************************ */
@@ -424,7 +429,7 @@ typedef struct wmEvent {
        char ascii;                     /* from ghost, fallback if utf8 isn't set */
        char pad;
 
        char ascii;                     /* from ghost, fallback if utf8 isn't set */
        char pad;
 
-       /* previous state */
+       /* previous state, used for double click and the 'click' */
        short prevtype;
        short prevval;
        int prevx, prevy;
        short prevtype;
        short prevval;
        int prevx, prevy;
@@ -435,11 +440,15 @@ typedef struct wmEvent {
        short shift, ctrl, alt, oskey;  /* oskey is apple or windowskey, value denotes order of pressed */
        short keymodifier;                              /* rawkey modifier */
        
        short shift, ctrl, alt, oskey;  /* oskey is apple or windowskey, value denotes order of pressed */
        short keymodifier;                              /* rawkey modifier */
        
-       short pad1;
+       /* set in case a KM_PRESS went by unhandled */
+       short check_click;
        
        /* keymap item, set by handler (weak?) */
        const char *keymap_idname;
        
        /* keymap item, set by handler (weak?) */
        const char *keymap_idname;
-       
+
+       /* tablet info, only use when the tablet is active */
+       struct wmTabletData *tablet_data;
+
        /* custom data */
        short custom;           /* custom data type, stylus, 6dof, see wm_event_types.h */
        short customdatafree;
        /* custom data */
        short custom;           /* custom data type, stylus, 6dof, see wm_event_types.h */
        short customdatafree;
@@ -525,13 +534,13 @@ typedef struct wmOperatorType {
         * any further events are handled in modal. if the operation is
         * canceled due to some external reason, cancel is called
         * - see defines below for return values */
         * any further events are handled in modal. if the operation is
         * canceled due to some external reason, cancel is called
         * - see defines below for return values */
-       int (*invoke)(struct bContext *, struct wmOperator *, struct wmEvent *)
+       int (*invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *)
 #ifdef __GNUC__
        __attribute__((warn_unused_result))
 #endif
        ;
        int (*cancel)(struct bContext *, struct wmOperator *);
 #ifdef __GNUC__
        __attribute__((warn_unused_result))
 #endif
        ;
        int (*cancel)(struct bContext *, struct wmOperator *);
-       int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *)
+       int (*modal)(struct bContext *, struct wmOperator *, const struct wmEvent *)
 #ifdef __GNUC__
        __attribute__((warn_unused_result))
 #endif
 #ifdef __GNUC__
        __attribute__((warn_unused_result))
 #endif
@@ -539,7 +548,11 @@ typedef struct wmOperatorType {
 
        /* verify if the operator can be executed in the current context, note
         * that the operator might still fail to execute even if this return true */
 
        /* verify if the operator can be executed in the current context, note
         * that the operator might still fail to execute even if this return true */
-       int (*poll)(struct bContext *);
+       int (*poll)(struct bContext *)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+#endif
+       ;
 
        /* optional panel for redo and repeat, autogenerated if not set */
        void (*ui)(struct bContext *, struct wmOperator *);
 
        /* optional panel for redo and repeat, autogenerated if not set */
        void (*ui)(struct bContext *, struct wmOperator *);
@@ -550,8 +563,8 @@ typedef struct wmOperatorType {
        /* previous settings - for initializing on re-use */
        struct IDProperty *last_properties;
 
        /* previous settings - for initializing on re-use */
        struct IDProperty *last_properties;
 
-       /* rna property to use for generic invoke functions.
-        * menus, enum search... etc */
+       /* Default rna property to use for generic invoke functions.
+        * menus, enum search... etc. Example: Enum 'type' for a Delete menu */
        PropertyRNA *prop;
 
        /* struct wmOperatorTypeMacro */
        PropertyRNA *prop;
 
        /* struct wmOperatorTypeMacro */
@@ -563,7 +576,11 @@ typedef struct wmOperatorType {
        /* only used for operators defined with python
         * use to store pointers to python functions */
        void *pyop_data;
        /* only used for operators defined with python
         * use to store pointers to python functions */
        void *pyop_data;
-       int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot);
+       int (*pyop_poll)(struct bContext *, struct wmOperatorType *ot)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+#endif
+       ;
 
        /* RNA integration */
        ExtensionRNA ext;
 
        /* RNA integration */
        ExtensionRNA ext;
@@ -628,7 +645,7 @@ typedef struct wmDropBox {
        struct wmDropBox *next, *prev;
        
        /* test if the dropbox is active, then can print optype name */
        struct wmDropBox *next, *prev;
        
        /* test if the dropbox is active, then can print optype name */
-       int (*poll)(struct bContext *, struct wmDrag *, wmEvent *);
+       int (*poll)(struct bContext *, struct wmDrag *, const wmEvent *);
 
        /* before exec, this copies drag info to wmDrop properties */
        void (*copy)(struct wmDrag *, struct wmDropBox *);
 
        /* before exec, this copies drag info to wmDrop properties */
        void (*copy)(struct wmDrag *, struct wmDropBox *);