Browse Source

* Update paste command after cut/copy.

git-svn-id: trunk@3801 -
daniel 19 years ago
parent
commit
86fe721eea
1 changed files with 23 additions and 14 deletions
  1. 23 14
      ide/weditor.pas

+ 23 - 14
ide/weditor.pas

@@ -5824,35 +5824,41 @@ end;
 {$endif WinClipSupported}
 
 function TCustomCodeEditor.ClipCopy: Boolean;
-var OK,ShowInfo: boolean;
+
+var ShowInfo,CanPaste: boolean;
+
 begin
   Lock;
   {AddGroupedAction(eaCopy);
    can we undo a copy ??
    maybe as an Undo Paste in Clipboard !! }
-  OK:=Clipboard<>nil;
-  if OK then
-    ShowInfo:=SelEnd.Y-SelStart.Y>50
-  else
-    ShowInfo:=false;
-  if ShowInfo then
-    PushInfo(msg_copyingclipboard);
-  if OK then OK:=Clipboard^.InsertFrom(@Self);
-  if ShowInfo then
-    PopInfo;
-  ClipCopy:=OK;
+  clipcopy:=false;
+  showinfo:=false;
+  if (clipboard<>nil) and (clipboard<>@self) then
+    begin
+      ShowInfo:=SelEnd.Y-SelStart.Y>50;
+      if ShowInfo then
+        PushInfo(msg_copyingclipboard);
+      clipcopy:=Clipboard^.InsertFrom(@Self);
+      if ShowInfo then
+        PopInfo;
+      {Enable paste command.}
+      CanPaste:=((Clipboard^.SelStart.X<>Clipboard^.SelEnd.X) or
+                (Clipboard^.SelStart.Y<>Clipboard^.SelEnd.Y));
+      SetCmdState(FromClipCmds,CanPaste);
+    end;
   UnLock;
 end;
 
 procedure TCustomCodeEditor.ClipCut;
 var
-  ShowInfo : boolean;
+  ShowInfo,CanPaste : boolean;
 begin
   if IsReadOnly then Exit;
   Lock;
   AddGroupedAction(eaCut);
   DontConsiderShiftState:=true;
-  if Clipboard<>nil then
+  if (clipboard<>nil) and (clipboard<>@self) then
    begin
      ShowInfo:=SelEnd.Y-SelStart.Y>50;
      if ShowInfo then
@@ -5865,6 +5871,9 @@ begin
       end;
      if ShowInfo then
        PopInfo;
+     CanPaste:=((Clipboard^.SelStart.X<>Clipboard^.SelEnd.X) or
+               (Clipboard^.SelStart.Y<>Clipboard^.SelEnd.Y));
+     SetCmdState(FromClipCmds,CanPaste);
    end;
   CloseGroupedAction(eaCut);
   UnLock;