Fixed the field changing for #338, this should trigger undo and also changes to the default field values (meaning storing in the configuration)- Added the CTRL modifier for the feature for now.

This commit is contained in:
Robin Krom 2022-01-29 21:49:20 +01:00
commit fdbaca6c3f
No known key found for this signature in database
GPG key ID: BCC01364F1371490
2 changed files with 115 additions and 148 deletions

View file

@ -2270,146 +2270,113 @@ namespace Greenshot.Editor.Drawing
/// <returns>false if no keys were processed</returns> /// <returns>false if no keys were processed</returns>
public bool ProcessCmdKey(Keys k) public bool ProcessCmdKey(Keys k)
{ {
if (selectedElements.Count > 0) if (selectedElements.Count <= 0) return false;
{
bool shiftModifier = (ModifierKeys & Keys.Shift) == Keys.Shift;
int px = shiftModifier ? 10 : 1;
Point moveBy = Point.Empty;
switch (k) bool shiftModifier = (ModifierKeys & Keys.Shift) == Keys.Shift;
{ int px = shiftModifier ? 10 : 1;
case Keys.Left: Point moveBy = Point.Empty;
case Keys.Left | Keys.Shift: switch (k)
moveBy = new Point(-px, 0); {
break; case Keys.Left:
case Keys.Up: case Keys.Left | Keys.Shift:
case Keys.Up | Keys.Shift: moveBy = new Point(-px, 0);
moveBy = new Point(0, -px); break;
break; case Keys.Up:
case Keys.Right: case Keys.Up | Keys.Shift:
case Keys.Right | Keys.Shift: moveBy = new Point(0, -px);
moveBy = new Point(px, 0); break;
break; case Keys.Right:
case Keys.Down: case Keys.Right | Keys.Shift:
case Keys.Down | Keys.Shift: moveBy = new Point(px, 0);
moveBy = new Point(0, px); break;
break; case Keys.Down:
case Keys.PageUp: case Keys.Down | Keys.Shift:
PullElementsUp(); moveBy = new Point(0, px);
break; break;
case Keys.PageDown: case Keys.PageUp:
PushElementsDown(); PullElementsUp();
break; break;
case Keys.Home: case Keys.PageDown:
PullElementsToTop(); PushElementsDown();
break; break;
case Keys.End: case Keys.Home:
PushElementsToBottom(); PullElementsToTop();
break; break;
case Keys.Enter: case Keys.End:
ConfirmSelectedConfirmableElements(true); PushElementsToBottom();
break; break;
case Keys.Escape: case Keys.Enter:
ConfirmSelectedConfirmableElements(false); ConfirmSelectedConfirmableElements(true);
break; break;
case Keys.NumPad0: case Keys.Escape:
SetSelectedElementColor(Color.Orange, true, shiftModifier); ConfirmSelectedConfirmableElements(false);
break; break;
case Keys.NumPad1: case Keys.D0 | Keys.Control:
SetSelectedElementColor(Color.Red, true, shiftModifier); case Keys.D0 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(shiftModifier ? Color.Orange : Color.Transparent, false, shiftModifier);
case Keys.NumPad2: break;
SetSelectedElementColor(Color.FromArgb(0,255,0), true, shiftModifier); // Color.Green is #008000 and not #00FF00 case Keys.D1 | Keys.Control:
break; case Keys.D1 | Keys.Shift | Keys.Control:
case Keys.NumPad3: SetSelectedElementColor(Color.Red, false, shiftModifier);
SetSelectedElementColor(Color.Blue, true, shiftModifier); break;
break; case Keys.D2 | Keys.Control:
case Keys.NumPad4: case Keys.D2 | Keys.Shift | Keys.Control:
SetSelectedElementColor(Color.Cyan, true, shiftModifier); SetSelectedElementColor(Color.Green, false, shiftModifier);
break; break;
case Keys.NumPad5: case Keys.D3 | Keys.Control:
SetSelectedElementColor(Color.Magenta, true, shiftModifier); case Keys.D3 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(Color.Blue, false, shiftModifier);
case Keys.NumPad6: break;
SetSelectedElementColor(Color.Yellow, true, shiftModifier); case Keys.D4 | Keys.Control:
break; case Keys.D4 | Keys.Shift | Keys.Control:
case Keys.NumPad7: SetSelectedElementColor(Color.Cyan, false, shiftModifier);
SetSelectedElementColor(Color.Black, true, shiftModifier); break;
break; case Keys.D5 | Keys.Control:
case Keys.NumPad8: case Keys.D5 | Keys.Shift | Keys.Control:
SetSelectedElementColor(Color.Gray, true, shiftModifier); SetSelectedElementColor(Color.Magenta, false, shiftModifier);
break; break;
case Keys.NumPad9: case Keys.D6 | Keys.Control:
SetSelectedElementColor(Color.White, true, shiftModifier); case Keys.D6 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(Color.Yellow, false, shiftModifier);
case Keys.D0: break;
case Keys.D0 | Keys.Shift: case Keys.D7 | Keys.Control:
SetSelectedElementColor(shiftModifier ? Color.Orange : Color.Transparent, false, shiftModifier); case Keys.D7 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(Color.Black, false, shiftModifier);
case Keys.D1: break;
case Keys.D1 | Keys.Shift: case Keys.D8 | Keys.Control:
SetSelectedElementColor(Color.Red, false, shiftModifier); case Keys.D8 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(Color.Gray, false, shiftModifier);
case Keys.D2: break;
case Keys.D2 | Keys.Shift: case Keys.D9 | Keys.Control:
SetSelectedElementColor(Color.Green, false, shiftModifier); case Keys.D9 | Keys.Shift | Keys.Control:
break; SetSelectedElementColor(Color.White, false, shiftModifier);
case Keys.D3: break;
case Keys.D3 | Keys.Shift: case Keys.Add | Keys.Control:
SetSelectedElementColor(Color.Blue, false, shiftModifier); case Keys.Add | Keys.Shift | Keys.Control:
break; ChangeLineThickness(shiftModifier ? 5 : 1);
case Keys.D4: break;
case Keys.D4 | Keys.Shift: case Keys.Subtract | Keys.Control:
SetSelectedElementColor(Color.Cyan, false, shiftModifier); case Keys.Subtract | Keys.Shift | Keys.Control:
break; ChangeLineThickness(shiftModifier ? -5 : -1);
case Keys.D5: break;
case Keys.D5 | Keys.Shift: case Keys.Divide | Keys.Control:
SetSelectedElementColor(Color.Magenta, false, shiftModifier); FlipShadow();
break; break;
case Keys.D6: /*case Keys.Delete:
case Keys.D6 | Keys.Shift:
SetSelectedElementColor(Color.Yellow, false, shiftModifier);
break;
case Keys.D7:
case Keys.D7 | Keys.Shift:
SetSelectedElementColor(Color.Black, false, shiftModifier);
break;
case Keys.D8:
case Keys.D8 | Keys.Shift:
SetSelectedElementColor(Color.Gray, false, shiftModifier);
break;
case Keys.D9:
case Keys.D9 | Keys.Shift:
SetSelectedElementColor(Color.White, false, shiftModifier);
break;
case Keys.Add:
case Keys.Add | Keys.Shift:
ChangeLineThickness(shiftModifier ? 5 : 1);
break;
case Keys.Subtract:
case Keys.Subtract | Keys.Shift:
ChangeLineThickness(shiftModifier ? -5 : -1);
break;
case Keys.Divide:
FlipShadow();
break;
/*case Keys.Delete:
RemoveSelectedElements(); RemoveSelectedElements();
break;*/ break;*/
default: default:
return false; return false;
}
if (!Point.Empty.Equals(moveBy))
{
selectedElements.MakeBoundsChangeUndoable(true);
selectedElements.MoveBy(moveBy.X, moveBy.Y);
}
return true;
} }
return false; if (!Point.Empty.Equals(moveBy))
{
selectedElements.MakeBoundsChangeUndoable(true);
selectedElements.MoveBy(moveBy.X, moveBy.Y);
}
return true;
} }
// for laptops without numPads, also allow shift modifier // for laptops without numPads, also allow shift modifier

View file

@ -471,7 +471,7 @@ namespace Greenshot.Editor.Forms
private delegate void SurfaceMessageReceivedThreadSafeDelegate(object sender, SurfaceMessageEventArgs eventArgs); private delegate void SurfaceMessageReceivedThreadSafeDelegate(object sender, SurfaceMessageEventArgs eventArgs);
/// <summary> /// <summary>
/// This is the SufraceMessageEvent receiver which display a message in the status bar if the /// This is the SurfaceMessageEvent receiver which display a message in the status bar if the
/// surface is exported. It also updates the title to represent the filename, if there is one. /// surface is exported. It also updates the title to represent the filename, if there is one.
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
@ -505,41 +505,41 @@ namespace Greenshot.Editor.Forms
/// <summary> /// <summary>
/// This is called when the foreground color of the select element chances, used for shortcuts /// This is called when the foreground color of the select element chances, used for shortcuts
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender">object</param>
/// <param name="eventArgs"></param> /// <param name="eventArgs">SurfaceForegroundColorEventArgs</param>
private void ForegroundColorChanged(object sender, SurfaceForegroundColorEventArgs eventArgs) private void ForegroundColorChanged(object sender, SurfaceForegroundColorEventArgs eventArgs)
{ {
btnLineColor.SelectedColor = eventArgs.Color; _surface.FieldAggregator.GetField(FieldType.LINE_COLOR).Value = eventArgs.Color;
} }
/// <summary> /// <summary>
/// This is called when the background color of the select element chances, used for shortcuts /// This is called when the background color of the select element chances, used for shortcuts
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender">object</param>
/// <param name="eventArgs"></param> /// <param name="eventArgs">SurfaceBackgroundColorEventArgs</param>
private void BackgroundColorChanged(object sender, SurfaceBackgroundColorEventArgs eventArgs) private void BackgroundColorChanged(object sender, SurfaceBackgroundColorEventArgs eventArgs)
{ {
btnFillColor.SelectedColor = eventArgs.Color; _surface.FieldAggregator.GetField(FieldType.FILL_COLOR).Value = eventArgs.Color;
} }
/// <summary> /// <summary>
/// This is called when the line thickness of the select element chances, used for shortcuts /// This is called when the line thickness of the select element chances, used for shortcuts
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender">object</param>
/// <param name="eventArgs"></param> /// <param name="eventArgs">SurfaceLineThicknessEventArgs</param>
private void LineThicknessChanged(object sender, SurfaceLineThicknessEventArgs eventArgs) private void LineThicknessChanged(object sender, SurfaceLineThicknessEventArgs eventArgs)
{ {
lineThicknessUpDown.Value = eventArgs.Thickness; _surface.FieldAggregator.GetField(FieldType.LINE_THICKNESS).Value = eventArgs.Thickness;
} }
/// <summary> /// <summary>
/// This is called when the shadow of the select element chances, used for shortcuts /// This is called when the shadow of the select element chances, used for shortcuts
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender">object</param>
/// <param name="eventArgs"></param> /// <param name="eventArgs">SurfaceShadowEventArgs</param>
private void ShadowChanged(object sender, SurfaceShadowEventArgs eventArgs) private void ShadowChanged(object sender, SurfaceShadowEventArgs eventArgs)
{ {
shadowButton.Checked = eventArgs.HasShadow; _surface.FieldAggregator.GetField(FieldType.SHADOW).Value = eventArgs.HasShadow;
} }
/// <summary> /// <summary>