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:
Enrico Schröder 2011-03-31 22:41:10 +02:00 committed by Michael Natterer
parent 036c5aff73
commit d4316902a2
4 changed files with 32 additions and 6 deletions

View File

@ -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:

View File

@ -38,6 +38,8 @@ typedef struct _GimpConvolveToolClass GimpConvolveToolClass;
struct _GimpConvolveTool
{
GimpBrushTool parent_instance;
gboolean toggled;
};
struct _GimpConvolveToolClass

View File

@ -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:

View File

@ -37,6 +37,8 @@ typedef struct _GimpDodgeBurnToolClass GimpDodgeBurnToolClass;
struct _GimpDodgeBurnTool
{
GimpBrushTool parent_instance;
gboolean toggled;
};
struct _GimpDodgeBurnToolClass