mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-07 07:26:05 +12:00
Added undo shape keybind (ctrl + z)
This commit is contained in:
parent
a371ca7df4
commit
a38c79e46c
|
@ -85,7 +85,7 @@ private set
|
|||
UpdateCursor();
|
||||
}
|
||||
|
||||
DeselectShape();
|
||||
DeselectCurrentShape();
|
||||
|
||||
OnCurrentShapeTypeChanged(currentShapeType);
|
||||
}
|
||||
|
@ -284,7 +284,7 @@ private void CreateContextMenu()
|
|||
|
||||
tsmiDeleteAll = new ToolStripMenuItem(Resources.ShapeManager_CreateContextMenu_Delete_all_objects);
|
||||
tsmiDeleteAll.Image = Resources.minus;
|
||||
tsmiDeleteAll.Click += (sender, e) => ClearAll();
|
||||
tsmiDeleteAll.Click += (sender, e) => DeleteAllShapes();
|
||||
cmsContextMenu.Items.Add(tsmiDeleteAll);
|
||||
|
||||
#endregion Selected object
|
||||
|
@ -921,16 +921,6 @@ private void form_KeyDown(object sender, KeyEventArgs e)
|
|||
case Keys.Menu:
|
||||
IsSnapResizing = true;
|
||||
break;
|
||||
case Keys.Insert:
|
||||
if (IsCreating)
|
||||
{
|
||||
EndRegionSelection();
|
||||
}
|
||||
else
|
||||
{
|
||||
StartRegionSelection();
|
||||
}
|
||||
break;
|
||||
case Keys.Left:
|
||||
case Keys.A:
|
||||
isLeftPressed = true;
|
||||
|
@ -949,9 +939,26 @@ private void form_KeyDown(object sender, KeyEventArgs e)
|
|||
break;
|
||||
}
|
||||
|
||||
switch (e.KeyData)
|
||||
{
|
||||
case Keys.Insert:
|
||||
if (IsCreating)
|
||||
{
|
||||
EndRegionSelection();
|
||||
}
|
||||
else
|
||||
{
|
||||
StartRegionSelection();
|
||||
}
|
||||
break;
|
||||
case Keys.Control | Keys.Z:
|
||||
UndoShape();
|
||||
break;
|
||||
}
|
||||
|
||||
if (form.Mode == RectangleRegionMode.Annotation && !IsCreating)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
switch (e.KeyData)
|
||||
{
|
||||
case Keys.Tab:
|
||||
SwapShapeType();
|
||||
|
@ -1059,14 +1066,6 @@ private void form_KeyUp(object sender, KeyEventArgs e)
|
|||
case Keys.Menu:
|
||||
IsSnapResizing = false;
|
||||
break;
|
||||
case Keys.Delete:
|
||||
DeleteCurrentShape();
|
||||
|
||||
if (IsCreating)
|
||||
{
|
||||
EndRegionSelection();
|
||||
}
|
||||
break;
|
||||
case Keys.Left:
|
||||
case Keys.A:
|
||||
isLeftPressed = false;
|
||||
|
@ -1085,9 +1084,21 @@ private void form_KeyUp(object sender, KeyEventArgs e)
|
|||
break;
|
||||
}
|
||||
|
||||
switch (e.KeyData)
|
||||
{
|
||||
case Keys.Delete:
|
||||
DeleteCurrentShape();
|
||||
|
||||
if (IsCreating)
|
||||
{
|
||||
EndRegionSelection();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (form.Mode == RectangleRegionMode.Annotation)
|
||||
{
|
||||
switch (e.KeyCode)
|
||||
switch (e.KeyData)
|
||||
{
|
||||
case Keys.Apps:
|
||||
OpenOptionsMenu();
|
||||
|
@ -1168,7 +1179,7 @@ private void StartRegionSelection()
|
|||
}
|
||||
else if (!IsCreating) // Create new shape
|
||||
{
|
||||
DeselectShape();
|
||||
DeselectCurrentShape();
|
||||
|
||||
shape = AddShape();
|
||||
|
||||
|
@ -1502,38 +1513,43 @@ private void SelectIntersectShape()
|
|||
}
|
||||
}
|
||||
|
||||
private void DeselectShape()
|
||||
private void DeselectShape(BaseShape shape)
|
||||
{
|
||||
if (shape == CurrentShape)
|
||||
{
|
||||
CurrentShape = null;
|
||||
NodesVisible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteCurrentShape()
|
||||
private void DeselectCurrentShape()
|
||||
{
|
||||
BaseShape shape = CurrentShape;
|
||||
DeselectShape(CurrentShape);
|
||||
}
|
||||
|
||||
private void DeleteShape(BaseShape shape)
|
||||
{
|
||||
if (shape != null)
|
||||
{
|
||||
Shapes.Remove(shape);
|
||||
DeselectShape();
|
||||
DeselectShape(shape);
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteCurrentShape()
|
||||
{
|
||||
DeleteShape(CurrentShape);
|
||||
}
|
||||
|
||||
private void DeleteIntersectShape()
|
||||
{
|
||||
BaseShape shape = GetIntersectShape();
|
||||
|
||||
if (shape != null)
|
||||
{
|
||||
Shapes.Remove(shape);
|
||||
DeselectShape();
|
||||
}
|
||||
DeleteShape(GetIntersectShape());
|
||||
}
|
||||
|
||||
private void ClearAll()
|
||||
private void DeleteAllShapes()
|
||||
{
|
||||
Shapes.Clear();
|
||||
DeselectShape();
|
||||
DeselectCurrentShape();
|
||||
}
|
||||
|
||||
public BaseShape GetIntersectShape()
|
||||
|
@ -1561,6 +1577,14 @@ public bool IsShapeIntersect()
|
|||
return GetIntersectShape() != null;
|
||||
}
|
||||
|
||||
public void UndoShape()
|
||||
{
|
||||
if (Shapes.Count > 0)
|
||||
{
|
||||
DeleteShape(Shapes[Shapes.Count - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateNodes()
|
||||
{
|
||||
BaseShape shape = CurrentShape;
|
||||
|
|
Loading…
Reference in a new issue