anchor.diff:    end;
   end;
   
  +procedure TMainForm.ForceForegroundWindow;
  +{$ifdef windows}
  +var
  +  aForeThread, aAppThread: DWORD;
  +  aProcessID: DWORD;
  +  {$endif}
  +begin
  +  {$ifdef windows}
  +  aProcessID := 0;
  +  aForeThread := GetWindowThreadProcessId(GetForegroundWindow(), aProcessID);
  +  aAppThread := GetCurrentThreadId();
  +
  +  if (aForeThread <> aAppThread) then
  +  begin
  +    AttachThreadInput(aForeThread, aAppThread, True);
  +    BringWindowToTop(Handle);
  +    AttachThreadInput(aForeThread, aAppThread, False);
  +  end
  +  else
  +    BringWindowToTop(Handle);
  +  {$endif}
  +  BringToFront;
  +end;
  +
   procedure TMainForm.IPCServerMessage(Sender: TObject);
   var
     c: integer;
   begin
     c := IPCServer.MsgType;
     case c of
  -    0: BringToFront;
  +    0: ForceForegroundWindow;
       1:
       begin
         if Engine.Files.OpenFile(IPCServer.StringMessage) <> nil then
         begin
  -        BringToFront;
  -        Application.BringToFront;
  +        ForceForegroundWindow;
         end;
       end;
     end;
  
positive.code:   Buttons, FileCtrl, ShellCtrls, ActnList, EditorEngine, mneClasses, StdActns,
    SynEditHighlighter, SynEdit, IAddons, ntvSplitters, SynHighlighterSQL,
    EditorClasses,
    {$ifdef WINDOWS}
    TSVN_SCM, TGIT_SCM,
    {$endif}
  
negative.code:   if ecsDebug in State then
      EngineDebug;
    if ecsShow in State then
      ForceForegroundWindow;
    if ecsEdit in State then
      EngineEdited;
    if ecsProject in State then
  