code cleanup: use const events for modal and invoke operators.
[blender.git] / source / blender / windowmanager / WM_types.h
index 5f4d3f6194a200833ad8d2643178ed4ef76c9015..f2750aa6d99385e732f915e35df7a308e9b0ff10 100644 (file)
@@ -115,7 +115,6 @@ struct ImBuf;
 
 #include "RNA_types.h"
 #include "DNA_listBase.h"
-#include "BKE_utildefines.h" /* FILE_MAX */
 
 /* exported types for WM */
 #include "wm_cursors.h"
@@ -189,7 +188,7 @@ enum {
 #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 ****************** */
@@ -239,6 +238,7 @@ typedef struct wmNotifier {
 #define NC_LOGIC                       (19<<24)
 #define NC_MOVIECLIP                   (20<<24)
 #define NC_MASK                                (21<<24)
+#define NC_GPENCIL                     (22<<24)
 
 /* data type, 256 entries is enough, it can overlap */
 #define NOTE_DATA                      0x00FF0000
@@ -300,6 +300,7 @@ typedef struct wmNotifier {
        /* 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)
@@ -326,6 +327,7 @@ typedef struct wmNotifier {
        /* Mesh, Curve, MetaBall, Armature, .. */
 #define ND_SELECT                      (90<<16)
 #define ND_DATA                                (91<<16)
+#define ND_VERTEX_GROUP                (92<<16)
 
        /* 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 */
+
+       /* free pointer to use for operator allocs (if set, its freed on exit)*/
+       void *userdata;
 } wmGesture;
 
 /* ************** wmEvent ************************ */
@@ -424,7 +429,7 @@ typedef struct wmEvent {
        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;
@@ -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 pad1;
+       /* set in case a KM_PRESS went by unhandled */
+       short check_click;
        
        /* 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;
@@ -509,7 +518,11 @@ typedef struct wmOperatorType {
         * parameters may be provided through operator properties. cannot use
         * any interface code or input device state.
         * - see defines below for return values */
-       int (*exec)(struct bContext *, struct wmOperator *);
+       int (*exec)(struct bContext *, struct wmOperator *)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+#endif
+       ;
        
        /* this callback executes on a running operator whenever as property
         * is changed. It can correct its own properties or report errors for
@@ -521,13 +534,25 @@ 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 */
-       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 *);
-       int (*modal)(struct bContext *, struct wmOperator *, struct wmEvent *);
+       int (*modal)(struct bContext *, struct wmOperator *, const struct wmEvent *)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+#endif
+       ;
 
        /* 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 *);
@@ -538,8 +563,8 @@ typedef struct wmOperatorType {
        /* 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 */
@@ -551,7 +576,11 @@ typedef struct wmOperatorType {
        /* 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;
@@ -616,7 +645,7 @@ typedef struct wmDropBox {
        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 *);