Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Fri, 28 Jul 2017 15:46:27 +0000 (01:46 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 28 Jul 2017 15:46:27 +0000 (01:46 +1000)
13 files changed:
.gitignore
release/scripts/modules/bpy/utils/__init__.py
release/scripts/startup/bl_ui/space_userpref.py
source/blender/blenkernel/intern/particle_system.c
source/blender/blenloader/intern/versioning_defaults.c
source/blender/editors/interface/interface.c
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/resources.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/modifiers/intern/MOD_boolean_util.c

index ed48c3faed45c91bba653db2ea576bba7c5d1c42..3418afebb58d81aa923f2858cb5f24580c69d9d4 100644 (file)
@@ -33,8 +33,3 @@ Desktop.ini
 /doc/python_api/sphinx-in/
 /doc/python_api/sphinx-out/
 /doc/python_api/rst/bmesh.ops.rst
-/doc/python_api/rst/in_menu.png
-/doc/python_api/rst/menu_id.png
-/doc/python_api/rst/op_prop.png
-/doc/python_api/rst/run_script.png
-/doc/python_api/rst/spacebar.png
index 6d3e807c2b4a272cbc5c8db8ad8290a6e7a5188a..966a1fe877cbcdbccb9872ef5a6d533df3d1717f 100644 (file)
@@ -331,6 +331,10 @@ def script_paths(subdir=None, user_pref=True, check_all=False, use_user=True):
     # so the 'BLENDER_SYSTEM_SCRIPTS' environment variable will be used.
     base_paths = _bpy_script_paths()
 
+    # Defined to be (system, user) so we can skip the second if needed.
+    if not use_user:
+        base_paths = base_paths[:1]
+
     if check_all:
         # All possible paths, no duplicates, keep order.
         if use_user:
index 25d0e43070896b20f8c3a5cf1a1b57737100220d..7a777194d83f89f5f12cd13016683e4fbd06f957 100644 (file)
@@ -250,6 +250,7 @@ class USERPREF_PT_interface(Panel):
         col = row.column()
         col.label(text="View Manipulation:")
         col.prop(view, "use_mouse_depth_cursor")
+        col.prop(view, "use_cursor_lock_adjust")
         col.prop(view, "use_mouse_depth_navigate")
         col.prop(view, "use_zoom_to_mouse")
         col.prop(view, "use_rotate_around_active")
index b7d17c386f6297d5134a346887ad01cfd8dbbd7f..044f52832e695239694f1a4c5c461325605f8db1 100644 (file)
@@ -3044,10 +3044,12 @@ static void hair_create_input_dm(ParticleSimulationData *sim, int totpoint, int
        /* calculate maximum segment length */
        max_length = 0.0f;
        LOOP_PARTICLES {
-               for (k=1, key=pa->hair+1; k<pa->totkey; k++,key++) {
-                       float length = len_v3v3(key->co, (key-1)->co);
-                       if (max_length < length)
-                               max_length = length;
+               if (!(pa->flag & PARS_UNEXIST)) {
+                       for (k=1, key=pa->hair+1; k<pa->totkey; k++,key++) {
+                               float length = len_v3v3(key->co, (key-1)->co);
+                               if (max_length < length)
+                                       max_length = length;
+                       }
                }
        }
        
@@ -3059,76 +3061,78 @@ static void hair_create_input_dm(ParticleSimulationData *sim, int totpoint, int
        /* make vgroup for pin roots etc.. */
        hair_index = 1;
        LOOP_PARTICLES {
-               float root_mat[4][4];
-               float bending_stiffness;
-               bool use_hair;
-               
-               pa->hair_index = hair_index;
-               use_hair = psys_hair_use_simulation(pa, max_length);
-               
-               psys_mat_hair_to_object(sim->ob, sim->psmd->dm_final, psys->part->from, pa, hairmat);
-               mul_m4_m4m4(root_mat, sim->ob->obmat, hairmat);
-               normalize_m4(root_mat);
-               
-               bending_stiffness = CLAMPIS(1.0f - part->bending_random * psys_frand(psys, p + 666), 0.0f, 1.0f);
-               
-               for (k=0, key=pa->hair; k<pa->totkey; k++,key++) {
-                       ClothHairData *hair;
-                       float *co, *co_next;
-                       
-                       co = key->co;
-                       co_next = (key+1)->co;
-                       
-                       /* create fake root before actual root to resist bending */
-                       if (k==0) {
-                               hair = &psys->clmd->hairdata[pa->hair_index - 1];
+               if (!(pa->flag & PARS_UNEXIST)) {
+                       float root_mat[4][4];
+                       float bending_stiffness;
+                       bool use_hair;
+
+                       pa->hair_index = hair_index;
+                       use_hair = psys_hair_use_simulation(pa, max_length);
+
+                       psys_mat_hair_to_object(sim->ob, sim->psmd->dm_final, psys->part->from, pa, hairmat);
+                       mul_m4_m4m4(root_mat, sim->ob->obmat, hairmat);
+                       normalize_m4(root_mat);
+
+                       bending_stiffness = CLAMPIS(1.0f - part->bending_random * psys_frand(psys, p + 666), 0.0f, 1.0f);
+
+                       for (k=0, key=pa->hair; k<pa->totkey; k++,key++) {
+                               ClothHairData *hair;
+                               float *co, *co_next;
+
+                               co = key->co;
+                               co_next = (key+1)->co;
+
+                               /* create fake root before actual root to resist bending */
+                               if (k==0) {
+                                       hair = &psys->clmd->hairdata[pa->hair_index - 1];
+                                       copy_v3_v3(hair->loc, root_mat[3]);
+                                       copy_m3_m4(hair->rot, root_mat);
+
+                                       hair->radius = hair_radius;
+                                       hair->bending_stiffness = bending_stiffness;
+
+                                       add_v3_v3v3(mvert->co, co, co);
+                                       sub_v3_v3(mvert->co, co_next);
+                                       mul_m4_v3(hairmat, mvert->co);
+
+                                       medge->v1 = pa->hair_index - 1;
+                                       medge->v2 = pa->hair_index;
+
+                                       dvert = hair_set_pinning(dvert, 1.0f);
+
+                                       mvert++;
+                                       medge++;
+                               }
+
+                               /* store root transform in cloth data */
+                               hair = &psys->clmd->hairdata[pa->hair_index + k];
                                copy_v3_v3(hair->loc, root_mat[3]);
                                copy_m3_m4(hair->rot, root_mat);
-                               
+
                                hair->radius = hair_radius;
                                hair->bending_stiffness = bending_stiffness;
-                               
-                               add_v3_v3v3(mvert->co, co, co);
-                               sub_v3_v3(mvert->co, co_next);
+
+                               copy_v3_v3(mvert->co, co);
                                mul_m4_v3(hairmat, mvert->co);
-                               
-                               medge->v1 = pa->hair_index - 1;
-                               medge->v2 = pa->hair_index;
-                               
-                               dvert = hair_set_pinning(dvert, 1.0f);
-                               
+
+                               if (k) {
+                                       medge->v1 = pa->hair_index + k - 1;
+                                       medge->v2 = pa->hair_index + k;
+                               }
+
+                               /* roots and disabled hairs should be 1.0, the rest can be anything from 0.0 to 1.0 */
+                               if (use_hair)
+                                       dvert = hair_set_pinning(dvert, key->weight);
+                               else
+                                       dvert = hair_set_pinning(dvert, 1.0f);
+
                                mvert++;
-                               medge++;
+                               if (k)
+                                       medge++;
                        }
-                       
-                       /* store root transform in cloth data */
-                       hair = &psys->clmd->hairdata[pa->hair_index + k];
-                       copy_v3_v3(hair->loc, root_mat[3]);
-                       copy_m3_m4(hair->rot, root_mat);
-                       
-                       hair->radius = hair_radius;
-                       hair->bending_stiffness = bending_stiffness;
-                       
-                       copy_v3_v3(mvert->co, co);
-                       mul_m4_v3(hairmat, mvert->co);
-                       
-                       if (k) {
-                               medge->v1 = pa->hair_index + k - 1;
-                               medge->v2 = pa->hair_index + k;
-                       }
-                       
-                       /* roots and disabled hairs should be 1.0, the rest can be anything from 0.0 to 1.0 */
-                       if (use_hair)
-                               dvert = hair_set_pinning(dvert, key->weight);
-                       else
-                               dvert = hair_set_pinning(dvert, 1.0f);
-                       
-                       mvert++;
-                       if (k)
-                               medge++;
+
+                       hair_index += pa->totkey + 1;
                }
-               
-               hair_index += pa->totkey + 1;
        }
 }
 
@@ -3154,9 +3158,11 @@ static void do_hair_dynamics(ParticleSimulationData *sim)
        totpoint = 0;
        totedge = 0;
        LOOP_PARTICLES {
-               /* "out" dm contains all hairs */
-               totedge += pa->totkey;
-               totpoint += pa->totkey + 1; /* +1 for virtual root point */
+               if (!(pa->flag & PARS_UNEXIST)) {
+                       /* "out" dm contains all hairs */
+                       totedge += pa->totkey;
+                       totpoint += pa->totkey + 1; /* +1 for virtual root point */
+               }
        }
        
        realloc_roots = false; /* whether hair root info array has to be reallocated */
index 50f96a6d438814be73e13898a7f2b62426a93aa1..cea3adaf614da119bcb0c9cd626c77ba766d2709 100644 (file)
@@ -61,6 +61,9 @@ void BLO_update_defaults_userpref_blend(void)
        U.uiflag |= USER_QUIT_PROMPT;
        U.uiflag |= USER_CONTINUOUS_MOUSE;
 
+       /* See T45301 */
+       U.uiflag |= USER_LOCK_CURSOR_ADJUST;
+
        U.versions = 1;
        U.savetime = 2;
 
index 3acee07c087e63b03749a93e7bac0bc050c12b92..4cc95f8e98bd8dc9f7412c925860c4db91ad0d59 100644 (file)
@@ -685,7 +685,7 @@ static bool ui_but_update_from_old_block(const bContext *C, uiBlock *block, uiBu
 
        if (oldbut->active) {
                /* flags from the buttons we want to refresh, may want to add more here... */
-               const int flag_copy = UI_BUT_REDALERT;
+               const int flag_copy = UI_BUT_REDALERT | UI_HAS_ICON;
 
                found_active = true;
 
index 437fe21a762910be131b5abe706144986a3475e3..3c26798f8863cefe7b9bc3d38325334d8db968df 100644 (file)
@@ -194,8 +194,9 @@ static const char *ui_item_name_add_colon(const char *name, char namestr[UI_MAX_
 static int ui_item_fit(int item, int pos, int all, int available, bool is_last, int alignment, float *extra_pixel)
 {
        /* available == 0 is unlimited */
-       if (available == 0)
+       if (ELEM(0, available, all)) {
                return item;
+       }
 
        if (all > available) {
                /* contents is bigger than available space */
@@ -218,8 +219,9 @@ static int ui_item_fit(int item, int pos, int all, int available, bool is_last,
                                return (int)width;
                        }
                }
-               else
+               else {
                        return item;
+               }
        }
 }
 
@@ -702,7 +704,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, const char *n
                              WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL);
        }
        else if (flag & UI_ITEM_R_EVENT) {
-               uiDefButR_prop(block, UI_BTYPE_KEY_EVENT, 0, name, x, y, w, h, ptr, prop, index, 0, 0, -1, -1, NULL);
+               but = uiDefButR_prop(block, UI_BTYPE_KEY_EVENT, 0, name, x, y, w, h, ptr, prop, index, 0, 0, -1, -1, NULL);
        }
        else if (flag & UI_ITEM_R_FULL_EVENT) {
                if (RNA_struct_is_a(ptr->type, &RNA_KeyMapItem)) {
index cf35f4d895b159798920f65f2367261a264acd4f..b1343ce489bac70faa53e772784bfae6c36dbcfa 100644 (file)
@@ -2912,6 +2912,24 @@ void init_userdef_do_versions(void)
                }
        }
 
+       if (!USER_VERSION_ATLEAST(278, 6)) {
+               /* Clear preference flags for re-use. */
+               U.flag &= ~(
+                   (1 << 1) | (1 << 2) | (1 << 3) |
+                   (1 << 6) | (1 << 7) |
+                   (1 << 9) | (1 << 10));
+               U.uiflag &= ~(
+                   (1 << 7));
+               U.transopts &= ~(
+                   (1 << 2) | (1 << 3) | (1 << 4) |
+                   (1 << 7));
+               U.gameflags &= ~(
+                   (1 << 0) | (1 << 1) |
+                   (1 << 3) | (1 << 4));
+
+               U.uiflag |= USER_LOCK_CURSOR_ADJUST;
+       }
+
        /**
         * Include next version bump.
         *
index 8d507ac86c2e09ef6da478ad8946dbb01e2f8a23..0350a67f3d4100bfd1550a0141b36ddc00dd87e4 100644 (file)
@@ -4745,13 +4745,20 @@ void ED_view3d_cursor3d_update(bContext *C, const int mval[2])
                ARegion *ar = CTX_wm_region(C);
                RegionView3D *rv3d = ar->regiondata;
 
-               float co_curr[2], co_prev[2];
+               if (U.uiflag & USER_LOCK_CURSOR_ADJUST) {
 
-               if ((ED_view3d_project_float_global(ar, fp_prev, co_prev, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) &&
-                   (ED_view3d_project_float_global(ar, fp_curr, co_curr, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK))
-               {
-                       rv3d->ofs_lock[0] += (co_curr[0] - co_prev[0]) / (ar->winx * 0.5f);
-                       rv3d->ofs_lock[1] += (co_curr[1] - co_prev[1]) / (ar->winy * 0.5f);
+                       float co_curr[2], co_prev[2];
+
+                       if ((ED_view3d_project_float_global(ar, fp_prev, co_prev, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) &&
+                               (ED_view3d_project_float_global(ar, fp_curr, co_curr, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK))
+                       {
+                               rv3d->ofs_lock[0] += (co_curr[0] - co_prev[0]) / (ar->winx * 0.5f);
+                               rv3d->ofs_lock[1] += (co_curr[1] - co_prev[1]) / (ar->winy * 0.5f);
+                       }
+               }
+               else {
+                       /* Cursor may be outside of the view, prevent it getting 'lost', see: T40353 & T45301 */
+                       zero_v2(rv3d->ofs_lock);
                }
        }
 
index 01ad818d0f1a038b30ced609dc6254545476c144..e2eb1364be294fb3540374017958a817b5d5cb14 100644 (file)
@@ -48,7 +48,8 @@ struct ColorBand;
 
 #define MAX_STYLE_NAME 64
 
-/* default uifont_id offered by Blender */
+/* default offered by Blender.
+ * uiFont.uifont_id */
 typedef enum eUIFont_ID {
        UIFONT_DEFAULT  = 0,
 /*     UIFONT_BITMAP   = 1 */ /* UNUSED */
@@ -64,7 +65,7 @@ typedef struct uiFont {
        struct uiFont *next, *prev;
        char filename[1024];/* 1024 = FILE_MAX */
        short blf_id;           /* from blfont lib */
-       short uifont_id;        /* own id */
+       short uifont_id;        /* own id (eUIFont_ID) */
        short r_to_l;           /* fonts that read from left to right */
        short hinting;
 } uiFont;
@@ -84,7 +85,7 @@ typedef struct uiFontStyle {
        float shadowcolor;              /* 1 value, typically white or black anyway */
 } uiFontStyle;
 
-/* uiFontStyle->align */
+/* uiFontStyle.align */
 typedef enum eFontStyle_Align {
        UI_STYLE_TEXT_LEFT              = 0,
        UI_STYLE_TEXT_CENTER    = 1,
@@ -354,11 +355,11 @@ typedef struct ThemeWireColor {
        char    select[4];
        char    active[4];
        
-       short   flag;
+       short   flag;  /* eWireColor_Flags */
        short   pad;
 } ThemeWireColor; 
 
-/* flags for ThemeWireColor */
+/* ThemeWireColor.flag */
 typedef enum eWireColor_Flags {
        TH_WIRECOLOR_CONSTCOLS  = (1 << 0),
        TH_WIRECOLOR_TEXTCOLS   = (1 << 1),
@@ -434,7 +435,8 @@ typedef struct UserDef {
        /* UserDef has separate do-version handling, and can be read from other files */
        int versionfile, subversionfile;
        
-       int flag, dupflag;
+       int flag;  /* eUserPref_Flag */
+       int dupflag;  /* eDupli_ID_Flags */
        int savetime;
        char tempdir[768];      /* FILE_MAXDIR length */
        char fontdir[768];
@@ -450,14 +452,15 @@ typedef struct UserDef {
        int anim_player_preset;
        
        short v2d_min_gridsize;         /* minimum spacing between gridlines in View2D grids */
-       short timecode_style;           /* style of timecode display */
+       short timecode_style;           /* eTimecodeStyles, style of timecode display */
        
        short versions;
        short dbl_click_time;
        
        short gameflags;
        short wheellinescroll;
-       int uiflag, uiflag2;
+       int uiflag;   /* eUserpref_UI_Flag */
+       int uiflag2;  /* eUserpref_UI_Flag2 */
        int language;
        short userpref, viewzoom;
        
@@ -473,7 +476,7 @@ typedef struct UserDef {
        int pad1;
        char node_margin;   /* node insert offset (aka auto-offset) margin, but might be useful for later stuff as well */
        char pad2;
-       short transopts;
+       short transopts;    /* eUserpref_Translation_Flags */
        short menuthreshold1, menuthreshold2;
 
        /* startup template */
@@ -491,13 +494,13 @@ typedef struct UserDef {
        short undosteps;
        short undomemory;
        short gp_manhattendist, gp_euclideandist, gp_eraser;
-       short gp_settings;
+       short gp_settings;  /* eGP_UserdefSettings */
        short tb_leftmouse, tb_rightmouse;
        struct SolidLight light[3];
        short manipulator_flag, manipulator_size;
        int pad3;
        short textimeout, texcollectrate;
-       short wmdrawmethod; /* removed wmpad */
+       short wmdrawmethod; /* eWM_DrawMethod */
        short dragthreshold;
        int memcachelimit;
        int prefetchframes;
@@ -510,13 +513,13 @@ typedef struct UserDef {
        short smooth_viewtx;    /* miliseconds to spend spinning the view */
        short glreslimit;
        short curssize;
-       short color_picker_type;
+       short color_picker_type;  /* eColorPicker_Types */
        char  ipo_new;                  /* interpolation mode for newly added F-Curves */
        char  keyhandles_new;   /* handle types for newly added keyframes */
        char  gpu_select_method;
        char  gpu_select_pick_deph;
        char  pad4;
-       char  view_frame_type;
+       char  view_frame_type;  /* eZoomFrame_Mode */
 
        int view_frame_keyframes; /* number of keyframes to zoom around current frame */
        float view_frame_seconds; /* seconds to zoom around current frame */
@@ -531,15 +534,16 @@ typedef struct UserDef {
        float ndof_sensitivity; /* overall sensitivity of 3D mouse */
        float ndof_orbit_sensitivity;
        float ndof_deadzone; /* deadzone of 3D mouse */
-       int ndof_flag;                  /* flags for 3D mouse */
+       int ndof_flag;                  /* eNdof_Flag, flags for 3D mouse */
 
-       short ogl_multisamples; /* amount of samples for OpenGL FSA, if zero no FSA */
+       short ogl_multisamples; /* eMultiSample_Type, amount of samples for OpenGL FSA, if zero no FSA */
 
-       short image_draw_method; /* Method to be used to draw the images (AUTO, GLSL, Textures or DrawPixels) */
+       /* eImageDrawMethod, Method to be used to draw the images (AUTO, GLSL, Textures or DrawPixels) */
+       short image_draw_method;
        
        float glalphaclip;
        
-       short autokey_mode;             /* autokeying mode */
+       short autokey_mode;             /* eAutokey_Mode, autokeying mode */
        short autokey_flag;             /* flags for autokeying */
        
        short text_render, pad9;                /* options for text rendering */
@@ -583,7 +587,7 @@ extern UserDef U; /* from blenkernel blender.c */
 
 /* ***************** USERDEF ****************** */
 
-/* userpref/section */
+/* UserDef.userpref (UI active_section) */
 typedef enum eUserPref_Section {
        USER_SECTION_INTERFACE  = 0,
        USER_SECTION_EDIT               = 1,
@@ -594,19 +598,15 @@ typedef enum eUserPref_Section {
        USER_SECTION_ADDONS     = 6,
 } eUserPref_Section;
 
-/* flag */
+/* UserDef.flag */
 typedef enum eUserPref_Flag {
        USER_AUTOSAVE                   = (1 << 0),
-/*     USER_AUTOGRABGRID               = (1 << 1),     deprecated */
-/*     USER_AUTOROTGRID                = (1 << 2),     deprecated */
-/*     USER_AUTOSIZEGRID               = (1 << 3),     deprecated */
+       /* 1..3 */
 /*     USER_SCENEGLOBAL         = (1 << 4), deprecated */
        USER_TRACKBALL                  = (1 << 5),
-/*     USER_DUPLILINK          = (1 << 6),     deprecated */
-/*     USER_FSCOLLUM                   = (1 << 7),     deprecated */
+       /* 6..7 */
        USER_MAT_ON_OB                  = (1 << 8),
-/*     USER_NO_CAPSLOCK                = (1 << 9), */  /* not used anywhere */
-/*     USER_VIEWMOVE                   = (1 << 10), */ /* not used anywhere */
+       /* 9..10 */
        USER_TOOLTIPS                   = (1 << 11),
        USER_TWOBUTTONMOUSE             = (1 << 12),
        USER_NONUMPAD                   = (1 << 13),
@@ -625,7 +625,7 @@ typedef enum eUserPref_Flag {
        USER_TOOLTIPS_PYTHON    = (1 << 26),
 } eUserPref_Flag;
 
-/* flag */
+/* bPathCompare.flag */
 typedef enum ePathCompare_Flag {
        USER_PATHCMP_GLOB               = (1 << 0),
 } ePathCompare_Flag;
@@ -636,33 +636,34 @@ typedef enum ePathCompare_Flag {
                cfra = 0;                                                             \
        } (void)0
 
-/* viewzoom */
+/* UserDef.viewzoom */
 typedef enum eViewZoom_Style {
        USER_ZOOM_CONT                  = 0,
        USER_ZOOM_SCALE                 = 1,
        USER_ZOOM_DOLLY                 = 2
 } eViewZoom_Style;
 
-/* navigation_mode */
+/* UserDef.navigation_mode */
 typedef enum eViewNavigation_Method {
        VIEW_NAVIGATION_WALK = 0,
        VIEW_NAVIGATION_FLY  = 1,
 } eViewNavigation_Method;
 
-/* flag */
+/* UserDef.flag */
 typedef enum eWalkNavigation_Flag {
        USER_WALK_GRAVITY                       = (1 << 0),
        USER_WALK_MOUSE_REVERSE         = (1 << 1),
 } eWalkNavigation_Flag;
 
-/* uiflag */
+/* UserDef.uiflag */
 typedef enum eUserpref_UI_Flag {
        /* flags 0 and 1 were old flags (for autokeying) that aren't used anymore */
        USER_WHEELZOOMDIR               = (1 << 2),
        USER_FILTERFILEEXTS             = (1 << 3),
        USER_DRAWVIEWINFO               = (1 << 4),
        USER_PLAINMENUS                 = (1 << 5),
-       /* flags 6 and 7 were old flags that are no-longer used */
+       USER_LOCK_CURSOR_ADJUST = (1 << 6),
+       /* flag 7 is free  */
        USER_ALLWINCODECS               = (1 << 8),
        USER_MENUOPENAUTO               = (1 << 9),
        USER_ZBUF_CURSOR                = (1 << 10),
@@ -689,14 +690,15 @@ typedef enum eUserpref_UI_Flag {
        USER_HIDE_SYSTEM_BOOKMARKS = (1 << 31)
 } eUserpref_UI_Flag;
 
-/* uiflag2 */
+/* UserDef.uiflag2 */
 typedef enum eUserpref_UI_Flag2 {
        USER_KEEP_SESSION                       = (1 << 0),
        USER_REGION_OVERLAP                     = (1 << 1),
        USER_TRACKPAD_NATURAL           = (1 << 2),
 } eUserpref_UI_Flag2;
        
-/* Auto-Keying mode */
+/* Auto-Keying mode.
+ * UserDef.autokey_mode */
 typedef enum eAutokey_Mode {
        /* AUTOKEY_ON is a bitflag */
        AUTOKEY_ON             = 1,
@@ -706,7 +708,8 @@ typedef enum eAutokey_Mode {
        AUTOKEY_MODE_EDITKEYS  = 5
 } eAutokey_Mode;
 
-/* Zoom to frame mode */
+/* Zoom to frame mode.
+ * UserDef.view_frame_type */
 typedef enum eZoomFrame_Mode {
        ZOOM_FRAME_MODE_KEEP_RANGE = 0,
        ZOOM_FRAME_MODE_SECONDS = 1,
@@ -729,20 +732,18 @@ typedef enum eAutokey_Flag {
        ANIMRECORD_FLAG_WITHNLA         = (1 << 10),
 } eAutokey_Flag;
 
-/* transopts */
+/* UserDef.transopts */
 typedef enum eUserpref_Translation_Flags {
        USER_TR_TOOLTIPS                = (1 << 0),
        USER_TR_IFACE                   = (1 << 1),
-/*     USER_TR_MENUS                   = (1 << 2),  deprecated */
-/*     USER_TR_FILESELECT              = (1 << 3),  deprecated */
-/*     USER_TR_TEXTEDIT                = (1 << 4),  deprecated */
+       /* 2..4 */
        USER_DOTRANSLATE                = (1 << 5),
        USER_USETEXTUREFONT             = (1 << 6),
-/*     CONVERT_TO_UTF8                 = (1 << 7),  deprecated */
+       /* 7 */
        USER_TR_NEWDATANAME             = (1 << 8),
 } eUserpref_Translation_Flags;
 
-/* dupflag */
+/* UserDef.dupflag */
 typedef enum eDupli_ID_Flags {
        USER_DUP_MESH                   = (1 << 0),
        USER_DUP_CURVE                  = (1 << 1),
@@ -758,14 +759,9 @@ typedef enum eDupli_ID_Flags {
        USER_DUP_PSYS                   = (1 << 11)
 } eDupli_ID_Flags;
 
-/* gameflags */
+/* UserDef.gameflags */
 typedef enum eOpenGL_RenderingOptions {
-       /* USER_DEPRECATED_FLAG = (1 << 0), */
-       /* USER_DISABLE_SOUND           = (1 << 1), */ /* deprecated, don't use without checking for */
-                                            /* backwards compatibilty in do_versions! */
        USER_DISABLE_MIPMAP             = (1 << 2),
-       /* USER_DISABLE_VBO             = (1 << 3), */ /* DEPRECATED we always use vertex buffers now */
-       /* USER_DISABLE_AA                      = (1 << 4), */ /* DEPRECATED */
 } eOpenGL_RenderingOptions;
 
 /* selection method for opengl gpu_select_method */
@@ -775,7 +771,8 @@ typedef enum eOpenGL_SelectOptions {
        USER_SELECT_USE_SELECT_RENDERMODE = 2
 } eOpenGL_SelectOptions;
 
-/* wm draw method */
+/* wm draw method.
+ * UserDef.wmdrawmethod */
 typedef enum eWM_DrawMethod {
        USER_DRAW_TRIPLE                = 0,
        USER_DRAW_OVERLAP               = 1,
@@ -784,12 +781,16 @@ typedef enum eWM_DrawMethod {
        USER_DRAW_OVERLAP_FLIP  = 4,
 } eWM_DrawMethod;
 
-/* text draw options */
+/* text draw options
+ * UserDef.text_render */
 typedef enum eText_Draw_Options {
        USER_TEXT_DISABLE_AA    = (1 << 0),
 } eText_Draw_Options;
 
-/* gp_settings (Grease Pencil Settings) */
+/* tw_flag (transform widget) */
+
+/* Grease Pencil Settings.
+ * UserDef.gp_settings */
 typedef enum eGP_UserdefSettings {
        GP_PAINT_DOSMOOTH               = (1 << 0),
        GP_PAINT_DOSIMPLIFY             = (1 << 1),
@@ -800,7 +801,8 @@ enum {
        USER_MANIPULATOR_SHADED      = (1 << 1),
 };
 
-/* color picker types */
+/* Color Picker Types.
+ * UserDef.color_picker_type */
 typedef enum eColorPicker_Types {
        USER_CP_CIRCLE_HSV      = 0,
        USER_CP_SQUARE_SV       = 1,
@@ -809,7 +811,8 @@ typedef enum eColorPicker_Types {
        USER_CP_CIRCLE_HSL      = 4,
 } eColorPicker_Types;
 
-/* timecode display styles */
+/* timecode display styles
+  * UserDef.timecode_style */
 typedef enum eTimecodeStyles {
        /* as little info as is necessary to show relevant info
         * with '+' to denote the frames 
@@ -844,7 +847,7 @@ typedef enum eTheme_DrawTypes {
        TH_SHADED       = 4
 } eTheme_DrawTypes;
 
-/* ndof_flag (3D mouse options) */
+/* UserDef.ndof_flag (3D mouse options) */
 typedef enum eNdof_Flag {
        NDOF_SHOW_GUIDE     = (1 << 0),
        NDOF_FLY_HELICOPTER = (1 << 1),
@@ -877,6 +880,7 @@ typedef enum eNdof_Flag {
 
 #define NDOF_PIXELS_PER_SECOND 600.0f
 
+/* UserDef.ogl_multisamples */
 typedef enum eMultiSample_Type {
        USER_MULTISAMPLE_NONE   = 0,
        USER_MULTISAMPLE_2      = 2,
@@ -884,7 +888,8 @@ typedef enum eMultiSample_Type {
        USER_MULTISAMPLE_8      = 8,
        USER_MULTISAMPLE_16     = 16,
 } eMultiSample_Type;
-       
+
+/* UserDef.image_draw_method */
 typedef enum eImageDrawMethod {
        /* IMAGE_DRAW_METHOD_AUTO = 0, */ /* Currently unused */
        IMAGE_DRAW_METHOD_GLSL = 1,
@@ -892,6 +897,7 @@ typedef enum eImageDrawMethod {
        IMAGE_DRAW_METHOD_DRAWPIXELS = 3,
 } eImageDrawMethod;
 
+/* UserDef.virtual_pixel */
 typedef enum eUserpref_VirtualPixel {
        VIRTUAL_PIXEL_NATIVE = 0,
        VIRTUAL_PIXEL_DOUBLE = 1,
index 995bd1f70bcf620c887321760d2358013885bbf2..3f540128622afcbc3c0f77fecb983652c5ffa142 100644 (file)
@@ -3358,7 +3358,7 @@ static void def_frame(StructRNA *srna)
        prop = RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_struct_type(prop, "Text");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_ui_text(prop, "Text", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
@@ -3628,7 +3628,7 @@ static void def_sh_lamp(StructRNA *srna)
        prop = RNA_def_property(srna, "lamp_object", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_struct_type(prop, "Object");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Lamp_object_poll");
        RNA_def_property_ui_text(prop, "Lamp Object", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@@ -4002,7 +4002,7 @@ static void def_sh_tex_coord(StructRNA *srna)
        prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_struct_type(prop, "Object");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_ui_text(prop, "Object", "Use coordinates from this object (for object texture coordinates output)");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
@@ -4118,7 +4118,7 @@ static void def_sh_tex_pointdensity(StructRNA *srna)
        prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_struct_type(prop, "Object");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_ui_text(prop, "Object", "Object to take point data from");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
@@ -4818,7 +4818,7 @@ static void def_cmp_render_layers(StructRNA *srna)
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL);
        RNA_def_property_struct_type(prop, "Scene");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_ui_text(prop, "Scene", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_scene_layer_update");
        
@@ -5475,7 +5475,7 @@ static void def_cmp_defocus(StructRNA *srna)
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_pointer_funcs(prop, NULL, "rna_Node_scene_set", NULL, NULL);
        RNA_def_property_struct_type(prop, "Scene");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_ui_text(prop, "Scene", "Scene from which to select the active camera (render scene if undefined)");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
index 5c445ceca198ca85f77cf62390647ac3340db6de..6ba5fe4fabff66095c4c30d032e14cc4b537854c 100644 (file)
@@ -3443,6 +3443,11 @@ static void rna_def_userdef_view(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Cursor Depth",
                                 "Use the depth under the mouse when placing the cursor");
 
+       prop = RNA_def_property(srna, "use_cursor_lock_adjust", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_LOCK_CURSOR_ADJUST);
+       RNA_def_property_ui_text(prop, "Cursor Lock Adjust",
+                                "Place the cursor without 'jumping' to the new location (when lock-to-cursor is used)");
+
        prop = RNA_def_property(srna, "use_camera_lock_parent", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "uiflag", USER_CAM_LOCK_NO_PARENT);
        RNA_def_property_ui_text(prop, "Camera Parent Lock",
@@ -3920,17 +3925,17 @@ static void rna_def_userdef_system(BlenderRNA *brna)
        prop = RNA_def_property(srna, "dpi", PROP_INT, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "DPI",
-                                "DPI for addons to use when drawing custom user interface elements. Controlled by "
-                                "operating system settings and Blender UI scale, with a reference value of 72 DPI. "
-                                "Note that since this value includes a user defined scale, it is not always the "
-                                "actual monitor DPI");
+                                "DPI for add-ons to use when drawing custom user interface elements, controlled by "
+                                "operating system settings and Blender UI scale, with a reference value of 72 DPI "
+                                "(note that since this value includes a user defined scale, it is not always the "
+                                "actual monitor DPI)");
 
        prop = RNA_def_property(srna, "pixel_size", PROP_FLOAT, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_float_sdna(prop, NULL, "pixelsize");
        RNA_def_property_ui_text(prop, "Pixel Size",
-                                "Suggested line thickness and point size in pixels, for addons drawing custom user "
-                                "interface elements. Controlled by operating system settings and Blender UI scale");
+                                "Suggested line thickness and point size in pixels, for add-ons drawing custom user "
+                                "interface elements, controlled by operating system settings and Blender UI scale");
 
        prop = RNA_def_property(srna, "font_path_ui", PROP_STRING, PROP_FILEPATH);
        RNA_def_property_string_sdna(prop, NULL, "font_path_ui");
index 061b1198f7e119cecdf548c4b9778c65f5e740a8..49010664aa8e39722bc452a29e442d11c33504d9 100644 (file)
@@ -390,6 +390,9 @@ static void exporter_InitGeomArrays(ExportMeshData *export_data,
         * the operand. Data for those layers will not be allocated or initialized.
         */
 
+       CustomData_merge(&dm_left->vertData, &dm->vertData, merge_mask, CD_DEFAULT, num_verts);
+       CustomData_merge(&dm_right->vertData, &dm->vertData, merge_mask, CD_DEFAULT, num_verts);
+
        CustomData_merge(&dm_left->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops);
        CustomData_merge(&dm_right->loopData, &dm->loopData, merge_mask, CD_DEFAULT, num_loops);