[Bf-blender-cvs] [edbf15d3c04] blender2.8: Defaults: left click select is now the default.

Brecht Van Lommel noreply at git.blender.org
Wed Nov 28 11:48:36 CET 2018


Commit: edbf15d3c044e719749b4874275c72b42838b00f
Author: Brecht Van Lommel
Date:   Tue Nov 27 16:09:02 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBedbf15d3c044e719749b4874275c72b42838b00f

Defaults: left click select is now the default.

A few reasons motivating this change:
* It works well for all devices: mouse, trackpad, and tablet pens.
* For beginners or users coming from other software, it's easier to get
  started and avoids an initial stumbling block.
* Many users in 2.7 (about half?) were already using left click select, so
  combined with the above advantages it makes for a practical default.

Note that we continue to support right click select, as many experienced
Blender users (and developers) see efficiency advantages in this approach.

The option to switch is in the first time setup splash screen, and in the
user preferences.

===================================================================

M	release/scripts/presets/keyconfig/blender.py
M	release/scripts/presets/keyconfig/blender_27x.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/BKE_keyconfig.h
M	source/blender/blenkernel/intern/keyconfig.c
M	source/blender/blenloader/intern/versioning_defaults.c
M	source/blender/blenloader/intern/versioning_userdef.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py
index 6e9faa22762..bda19e075a3 100644
--- a/release/scripts/presets/keyconfig/blender.py
+++ b/release/scripts/presets/keyconfig/blender.py
@@ -20,15 +20,15 @@ class Prefs(bpy.types.KeyConfigPreferences):
         items=(
             ('LEFT', "Left",
              "Use left mouse button for selection. "
-             "The standard behavior that works well for all input devices"),
+             "The standard behavior that works well for mouse, trackpad and tablet devices"),
             ('RIGHT', "Right",
-             "Use right mouse button for selection."
-             "For efficiently working with keyboard and mouse"),
+             "Use right mouse button for selection, and left mouse button for actions. "
+             "This works well primarily for keyboard and mouse devices"),
         ),
         description=(
             "Mouse button used for selection"
         ),
-        default='RIGHT',
+        default='LEFT',
         update=update_fn,
     )
     spacebar_action: EnumProperty(
diff --git a/release/scripts/presets/keyconfig/blender_27x.py b/release/scripts/presets/keyconfig/blender_27x.py
index 9233e226dc9..f0aae89d5bd 100644
--- a/release/scripts/presets/keyconfig/blender_27x.py
+++ b/release/scripts/presets/keyconfig/blender_27x.py
@@ -19,10 +19,10 @@ class Prefs(bpy.types.KeyConfigPreferences):
         items=(
             ('LEFT', "Left",
              "Use left mouse button for selection. "
-             "Standard behavior that works well for all input devices"),
+             "The standard behavior that works well for mouse, trackpad and tablet devices"),
             ('RIGHT', "Right",
-             "Use right mouse button for selection."
-             "For efficiently working with keyboard and mouse"),
+             "Use right mouse button for selection, and left mouse button for actions. "
+             "This works well primarily for keyboard and mouse devices"),
         ),
         description=(
             "Mouse button used for selection"
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index b34dc55ba44..64d06ca4de5 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -28,7 +28,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         280
-#define BLENDER_SUBVERSION      34
+#define BLENDER_SUBVERSION      35
 /* Several breakages with 280, e.g. collections vs layers */
 #define BLENDER_MINVERSION      280
 #define BLENDER_MINSUBVERSION   0
diff --git a/source/blender/blenkernel/BKE_keyconfig.h b/source/blender/blenkernel/BKE_keyconfig.h
index a086930fe34..94d00b19d42 100644
--- a/source/blender/blenkernel/BKE_keyconfig.h
+++ b/source/blender/blenkernel/BKE_keyconfig.h
@@ -50,6 +50,8 @@ struct wmKeyConfigPrefType_Runtime *BKE_keyconfig_pref_type_find(const char *idn
 void BKE_keyconfig_pref_type_add(struct wmKeyConfigPrefType_Runtime *kpt_rt);
 void BKE_keyconfig_pref_type_remove(const struct wmKeyConfigPrefType_Runtime *kpt_rt);
 
+void BKE_keyconfig_pref_set_select_mouse(struct UserDef *userdef, int value, bool override);
+
 void BKE_keyconfig_pref_type_init(void);
 void BKE_keyconfig_pref_type_free(void);
 
diff --git a/source/blender/blenkernel/intern/keyconfig.c b/source/blender/blenkernel/intern/keyconfig.c
index 755c9e1582d..f2db375f3ec 100644
--- a/source/blender/blenkernel/intern/keyconfig.c
+++ b/source/blender/blenkernel/intern/keyconfig.c
@@ -120,4 +120,18 @@ void BKE_keyconfig_pref_type_free(void)
 	global_keyconfigpreftype_hash = NULL;
 }
 
+/* Set select mouse, for versioning code. */
+void BKE_keyconfig_pref_set_select_mouse(UserDef *userdef, int value, bool override)
+{
+	wmKeyConfigPref *kpt = BKE_keyconfig_pref_ensure(userdef, WM_KEYCONFIG_STR_DEFAULT);
+	IDProperty *idprop = IDP_GetPropertyFromGroup(kpt->prop, "select_mouse");
+	if (!idprop) {
+		IDPropertyTemplate tmp = { .i = value };
+		IDP_AddToGroup(kpt->prop, IDP_New(IDP_INT, &tmp, "select_mouse"));
+	}
+	else if (override) {
+		IDP_Int(idprop) = value;
+	}
+}
+
 /** \} */
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index 953fb36bdc7..f9f9905be3c 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -44,6 +44,7 @@
 
 #include "BKE_brush.h"
 #include "BKE_colortools.h"
+#include "BKE_keyconfig.h"
 #include "BKE_layer.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
@@ -87,6 +88,9 @@ void BLO_update_defaults_userpref_blend(void)
 	/* Only enable tooltips translation by default, without actually enabling translation itself, for now. */
 	U.transopts = USER_TR_TOOLTIPS;
 	U.memcachelimit = 4096;
+
+	/* Default to left click select. */
+	BKE_keyconfig_pref_set_select_mouse(&U, 0, true);
 }
 
 /**
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 8f90711e41e..a65520c35fa 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -402,19 +402,20 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
 		}
 	}
 
-	if (!USER_VERSION_ATLEAST(280, 32)) {
-		if ((userdef->flag & USER_LMOUSESELECT) ) {
-			userdef->flag &= ~USER_LMOUSESELECT;
-			wmKeyConfigPref *kpt = BKE_keyconfig_pref_ensure(userdef, WM_KEYCONFIG_STR_DEFAULT);
-			IDP_AddToGroup(kpt->prop, IDP_New(IDP_INT, &(IDPropertyTemplate){ .i = 0, }, "select_mouse"));
-		}
-	}
-
 	if (!USER_VERSION_ATLEAST(280, 33)) {
 		/* Enable GLTF addon by default. */
 		BKE_addon_ensure(&userdef->addons, "io_scene_gltf2");
 	}
 
+	if (!USER_VERSION_ATLEAST(280, 35)) {
+		/* Preserve RMB select setting after moving to Python and changing default value. */
+		if (USER_VERSION_ATLEAST(280, 32) || !(userdef->flag & USER_LMOUSESELECT)) {
+			BKE_keyconfig_pref_set_select_mouse(userdef, 1, false);
+		}
+
+		userdef->flag &= ~USER_LMOUSESELECT;
+	}
+
 	/**
 	 * Include next version bump.
 	 */



More information about the Bf-blender-cvs mailing list