2
0
Эх сурвалжийг харах

#277 from delete selection action

circular17 3 жил өмнө
parent
commit
cce6e0e9d3

+ 13 - 1
lazpaint/image/uimageaction.pas

@@ -1554,8 +1554,20 @@ end;
 procedure TImageActions.DeleteSelection;
 var LayerAction: TLayerAction;
   doErase, wasSelecting: Boolean;
+  prevTool: TPaintToolType;
 begin
-  if image.SelectionMaskEmpty then exit;
+  if image.SelectionMaskEmpty then
+  begin
+    prevTool := ToolManager.GetCurrentToolType;
+    if (prevTool in [ptMoveLayer, ptZoomLayer, ptRotateLayer])
+       and (image.NbLayers > 1) then
+    begin
+      ChooseTool(ptHand, false);
+      Image.RemoveLayer;
+      ChooseTool(prevTool, false);
+    end;
+    exit;
+  end;
   wasSelecting := ToolManager.GetCurrentToolType in [ptSelectPen..ptSelectSpline];
   if wasSelecting then ToolManager.ToolCloseDontReopen
   else if not image.CheckNoAction then exit;

+ 4 - 1
lazpaint/lazpaintmainform.pas

@@ -3520,7 +3520,10 @@ end;
 
 procedure TFMain.EditDeleteSelectionUpdate(Sender: TObject);
 begin
-  EditDeleteSelection.Enabled := ToolManager.ToolProvideCommand(tcDelete) or not image.SelectionMaskEmpty;
+  EditDeleteSelection.Enabled := ToolManager.ToolProvideCommand(tcDelete)
+                                 or not image.SelectionMaskEmpty
+                                 or ((ToolManager.GetCurrentToolType in [ptMoveLayer,
+                                     ptZoomLayer, ptRotateLayer]) and (image.NbLayers > 1));
 end;
 
 procedure TFMain.EditMoveDownExecute(Sender: TObject);

+ 0 - 12
lazpaint/uimageview.pas

@@ -674,19 +674,7 @@ begin
 end;
 
 function TImageView.CatchToolKeyDown(var AKey: Word): boolean;
-var
-  prevTool: TPaintToolType;
 begin
-  if (AKey = VK_DELETE) and
-     (LazPaintInstance.ToolManager.GetCurrentToolType in[ptMoveLayer, ptRotateLayer, ptZoomLayer]) and
-     (Image.NbLayers > 1) then
-  begin
-    prevTool := LazPaintInstance.ToolManager.GetCurrentToolType;
-    LazPaintInstance.ChooseTool(ptHand, false);
-    Image.RemoveLayer;
-    LazPaintInstance.ChooseTool(prevTool, false);
-    exit;
-  end;
   FCatchPaintPicture:= true;
   FPaintPictureCatched := false;
   try