app: better tool defaults depending on the device source.
This code is the result of discussions with and propositions by Aryeom who thinks (and I agree obviously) better defaults should be set for beginners and first time users. This is only a first change, more similar defaults updates will likely come in the next few months on various parts of GIMP. Existing code was only making a differenciation for eraser-type devices, setting them to the eraser tool (which is fine of course). So far, I only added 2 types of device source, which we should definitely special-case as well: pen tools (tablet styluses) should definitely map to the Paintbrush (pencil could be a reasonable defaults too, though brush seems much more common); as for touchscreen, I chose to map to the Smudge tool (though to be fair, if we had gesture recognition, this should not map to any tool). I also set a generic default now because it seems that right now, we don't specify anything (it ends up defaulting to the Crop tool for first uses, at least in my case). I set the rectangle select tool. I'm not sure it actually makes particular sense, but at least it's probably better to default to something not destructive for first time users.
This commit is contained in:
@ -845,22 +845,45 @@ gimp_device_info_set_device (GimpDeviceInfo *info,
|
||||
void
|
||||
gimp_device_info_set_default_tool (GimpDeviceInfo *info)
|
||||
{
|
||||
GimpContainer *tools;
|
||||
GimpToolInfo *tool_info = NULL;
|
||||
|
||||
g_return_if_fail (GIMP_IS_DEVICE_INFO (info));
|
||||
|
||||
if (info->priv->device &&
|
||||
gdk_device_get_source (info->priv->device) == GDK_SOURCE_ERASER)
|
||||
tools = GIMP_TOOL_PRESET (info)->gimp->tool_info_list;
|
||||
tool_info =
|
||||
GIMP_TOOL_INFO (gimp_container_get_child_by_name (tools,
|
||||
"gimp-rect-select-tool"));
|
||||
|
||||
if (info->priv->device)
|
||||
{
|
||||
GimpContainer *tools = GIMP_TOOL_PRESET (info)->gimp->tool_info_list;
|
||||
GimpToolInfo *eraser;
|
||||
switch (gdk_device_get_source (info->priv->device))
|
||||
{
|
||||
case GDK_SOURCE_ERASER:
|
||||
tool_info =
|
||||
GIMP_TOOL_INFO (gimp_container_get_child_by_name (tools,
|
||||
"gimp-eraser-tool"));
|
||||
break;
|
||||
case GDK_SOURCE_PEN:
|
||||
tool_info =
|
||||
GIMP_TOOL_INFO (gimp_container_get_child_by_name (tools,
|
||||
"gimp-paintbrush-tool"));
|
||||
break;
|
||||
case GDK_SOURCE_TOUCHSCREEN:
|
||||
tool_info =
|
||||
GIMP_TOOL_INFO (gimp_container_get_child_by_name (tools,
|
||||
"gimp-smudge-tool"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
eraser =
|
||||
GIMP_TOOL_INFO (gimp_container_get_child_by_name (tools,
|
||||
"gimp-eraser-tool"));
|
||||
|
||||
if (eraser)
|
||||
g_object_set (info,
|
||||
"tool-options", eraser->tool_options,
|
||||
NULL);
|
||||
if (tool_info)
|
||||
{
|
||||
g_object_set (info,
|
||||
"tool-options", tool_info->tool_options,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user