mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-20 19:43:01 +00:00
app: DodgeBurn/Convolve: Fix error in behavior of modifier keys
Fix for bug #632816: When holding shift key to go to LineDraw mode, then pressing ctrl and releasing shift before ctrl, the release of ctrl switches the function of DodgeBurn and Convolute tool. This patch adds a variable to GimpDodgeBurnTool/GimpConvolveTool to only switch said function on releasing ctrl when it has been toggled previously.
This commit is contained in:
parent
036c5aff73
commit
d4316902a2
|
@ -108,11 +108,22 @@ gimp_convolve_tool_modifier_key (GimpTool *tool,
|
|||
GdkModifierType state,
|
||||
GimpDisplay *display)
|
||||
{
|
||||
GimpConvolveOptions *options = GIMP_CONVOLVE_TOOL_GET_OPTIONS (tool);
|
||||
GimpConvolveTool *convolve = GIMP_CONVOLVE_TOOL (tool);
|
||||
GimpConvolveOptions *options = GIMP_CONVOLVE_TOOL_GET_OPTIONS (tool);
|
||||
|
||||
if ((key == GDK_CONTROL_MASK) &&
|
||||
! (state & GDK_SHIFT_MASK)) /* leave stuff untouched in line draw mode */
|
||||
if (((key == GDK_CONTROL_MASK) &&
|
||||
! (state & GDK_SHIFT_MASK) && /* leave stuff untouched in line draw mode */
|
||||
press != convolve->toggled)
|
||||
|
||||
||
|
||||
|
||||
(key == GDK_SHIFT_MASK && /* toggle back after keypresses CTRL(hold)-> */
|
||||
! press && /* SHIFT(hold)->CTRL(release)->SHIFT(release) */
|
||||
convolve->toggled &&
|
||||
! (state & GDK_CONTROL_MASK)))
|
||||
{
|
||||
convolve->toggled = press;
|
||||
|
||||
switch (options->type)
|
||||
{
|
||||
case GIMP_BLUR_CONVOLVE:
|
||||
|
|
|
@ -38,6 +38,8 @@ typedef struct _GimpConvolveToolClass GimpConvolveToolClass;
|
|||
struct _GimpConvolveTool
|
||||
{
|
||||
GimpBrushTool parent_instance;
|
||||
|
||||
gboolean toggled;
|
||||
};
|
||||
|
||||
struct _GimpConvolveToolClass
|
||||
|
|
|
@ -108,11 +108,22 @@ gimp_dodge_burn_tool_modifier_key (GimpTool *tool,
|
|||
GdkModifierType state,
|
||||
GimpDisplay *display)
|
||||
{
|
||||
GimpDodgeBurnOptions *options = GIMP_DODGE_BURN_TOOL_GET_OPTIONS (tool);
|
||||
GimpDodgeBurnTool *dodgeburn = GIMP_DODGE_BURN_TOOL (tool);
|
||||
GimpDodgeBurnOptions *options = GIMP_DODGE_BURN_TOOL_GET_OPTIONS (tool);
|
||||
|
||||
if (key == GDK_CONTROL_MASK &&
|
||||
! (state & GDK_SHIFT_MASK)) /* leave stuff untouched in line draw mode */
|
||||
if ((key == GDK_CONTROL_MASK &&
|
||||
! (state & GDK_SHIFT_MASK) && /* leave stuff untouched in line draw mode */
|
||||
press != dodgeburn->toggled)
|
||||
|
||||
||
|
||||
|
||||
(key == GDK_SHIFT_MASK && /* toggle back after keypresses CTRL(hold)-> */
|
||||
! press && /* SHIFT(hold)->CTRL(release)->SHIFT(release) */
|
||||
dodgeburn->toggled &&
|
||||
! (state & GDK_CONTROL_MASK)))
|
||||
{
|
||||
dodgeburn->toggled = press;
|
||||
|
||||
switch (options->type)
|
||||
{
|
||||
case GIMP_DODGE:
|
||||
|
|
|
@ -37,6 +37,8 @@ typedef struct _GimpDodgeBurnToolClass GimpDodgeBurnToolClass;
|
|||
struct _GimpDodgeBurnTool
|
||||
{
|
||||
GimpBrushTool parent_instance;
|
||||
|
||||
gboolean toggled;
|
||||
};
|
||||
|
||||
struct _GimpDodgeBurnToolClass
|
||||
|
|
Loading…
Reference in a new issue