浏览代码

#543 warn about opacity = 0

Juliette ELSASS 1 年之前
父节点
当前提交
ebeb99b327
共有 2 个文件被更改,包括 18 次插入6 次删除
  1. 2 1
      lazpaint/tools/utool.pas
  2. 16 5
      lazpaint/tools/utoolbasic.pas

+ 2 - 1
lazpaint/tools/utool.pas

@@ -170,7 +170,7 @@ type
     tpmReturnValides, tpmBackspaceRemoveLastPoint, tpmRightClickFinishShape, tpmHoldKeyRestrictRotation,
     tpmHoldKeysScaleMode, tpmCurveModeHint, tpmBlendOpBackground,
     tpmRightClickForSource, tpmNothingToBeDeformed, tpmRightClickForTransformCenter,
-    tpmLayerEmpty);
+    tpmLayerEmpty, tpmOpacity0);
 
   TOnToolChangedHandler = procedure(sender: TToolManager; ANewToolType: TPaintToolType) of object;
   TOnPopupToolHandler = procedure(sender: TToolManager; APopupMessage: TToolPopupMessage; AKey: Word; AAlways: boolean) of object;
@@ -774,6 +774,7 @@ begin
   tpmNothingToBeDeformed: result := rsNothingToBeDeformed;
   tpmRightClickForTransformCenter: result := rsRightClickForTransformCenter;
   tpmLayerEmpty: result := rsEmptyLayer;
+  tpmOpacity0: result := rsOpacity + ' = 0';
   else
     result := '';
   end;

+ 16 - 5
lazpaint/tools/utoolbasic.pas

@@ -348,6 +348,8 @@ end;
 
 function TToolPen.DoToolDown(toolDest: TBGRABitmap; pt: TPoint; ptF: TPointF;
   rightBtn: boolean): TRect;
+var
+  b: TUniversalBrush;
 begin
   if ssSnap in ShiftState then ptF := PointF(pt.X,pt.Y);
   if not penDrawing then
@@ -359,11 +361,20 @@ begin
       shiftClickingRight := rightBtn;
     end else
     begin
-      toolDest.PenStyle := psSolid;
-      penDrawing := true;
-      penDrawingRight := rightBtn;
-      result := StartDrawing(toolDest,ptF,rightBtn);
-      penOrigin := ptF;
+      b := GetUniversalBrush(rightBtn);
+      if b.DoesNothing then
+      begin
+        Manager.ToolPopup(tpmOpacity0, 0, true);
+        result := EmptyRect;
+      end
+      else
+      begin
+        toolDest.PenStyle := psSolid;
+        penDrawing := true;
+        penDrawingRight := rightBtn;
+        result := StartDrawing(toolDest,ptF,rightBtn);
+        penOrigin := ptF;
+      end;
     end;
   end else
     result := EmptyRect;