LazReport, previous step for proper drawing in designer: isolating focusrect

git-svn-id: trunk@40524 -
This commit is contained in:
jesus 2013-03-09 22:06:00 +00:00
parent 8cb6307e5c
commit a0e36fb682

View File

@ -171,6 +171,9 @@ type
procedure CMMouseLeave(var {%H-}Message: TLMessage); message CM_MOUSELEAVE; procedure CMMouseLeave(var {%H-}Message: TLMessage); message CM_MOUSELEAVE;
procedure DClick(Sender: TObject); procedure DClick(Sender: TObject);
procedure MoveResize(Kx,Ky:Integer; UseFrames,AResize: boolean); procedure MoveResize(Kx,Ky:Integer; UseFrames,AResize: boolean);
procedure NPDrawFocusRect;
procedure NPEraseFocusRect;
protected protected
procedure Paint; override; procedure Paint; override;
procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND; procedure WMEraseBkgnd(var {%H-}Message: TLMEraseBkgnd); message LM_ERASEBKGND;
@ -1280,7 +1283,7 @@ begin
end; end;
if (Button = mbRight) and Down and RFlag then if (Button = mbRight) and Down and RFlag then
DrawFocusRect(OldRect); NPEraseFocusRect;
RFlag := False; RFlag := False;
DrawPage(dmSelection); DrawPage(dmSelection);
@ -1293,7 +1296,7 @@ begin
RFlag := True; RFlag := True;
if Cursor = crCross then if Cursor = crCross then
begin begin
DrawFocusRect(OldRect); NPEraseFocusRect;
RoundCoord(x, y); RoundCoord(x, y);
OldRect1 := OldRect; OldRect1 := OldRect;
end; end;
@ -1505,9 +1508,10 @@ begin
DebugLnEnter('Inserting a New Object INIT'); DebugLnEnter('Inserting a New Object INIT');
{$ENDIF} {$ENDIF}
Mode := mdSelect; Mode := mdSelect;
DrawFocusRect(OldRect);
if (OldRect.Left = OldRect.Right) and (OldRect.Top = OldRect.Bottom) then if (OldRect.Left = OldRect.Right) and (OldRect.Top = OldRect.Bottom) then
OldRect := OldRect1; OldRect := OldRect1
else
NPEraseFocusRect;
NormalizeRect(OldRect); NormalizeRect(OldRect);
RFlag := False; RFlag := False;
ObjectInserted := True; ObjectInserted := True;
@ -1670,7 +1674,7 @@ begin
FDesigner.OB7.Down := True FDesigner.OB7.Down := True
end end
else else
DrawFocusRect(OldRect); NPDrawFocusRect;
{$IFDEF DebugLR} {$IFDEF DebugLR}
DebugLnExit('Inserting a New Object DONE'); DebugLnExit('Inserting a New Object DONE');
@ -1712,7 +1716,7 @@ begin
// calculating which objects contains in frame (if user select it with mouse+Ctrl key) // calculating which objects contains in frame (if user select it with mouse+Ctrl key)
if RFlag then if RFlag then
begin begin
DrawFocusRect(OldRect); NPEraseFocusRect;
RFlag := False; RFlag := False;
NormalizeRect(OldRect); NormalizeRect(OldRect);
for i := 0 to Objects.Count - 1 do for i := 0 to Objects.Count - 1 do
@ -1870,7 +1874,7 @@ begin
// if not FDesigner.OB3.Down then // if not FDesigner.OB3.Down then
FDesigner.GetDefaultSize(kx, ky); FDesigner.GetDefaultSize(kx, ky);
OldRect := Rect(x, y, x + kx, y + ky); OldRect := Rect(x, y, x + kx, y + ky);
DrawFocusRect(OldRect); NPDrawFocusRect;
end; end;
Cursor := crCross; Cursor := crCross;
end; end;
@ -1897,7 +1901,7 @@ begin
if not FDesigner.OB3.Down then if not FDesigner.OB3.Down then
FDesigner.GetDefaultSize(kx, ky); FDesigner.GetDefaultSize(kx, ky);
OldRect := Rect(x, y, x + kx, y + ky); OldRect := Rect(x, y, x + kx, y + ky);
DrawFocusRect(OldRect); NPDrawFocusRect;
end; end;
Cursor := crCross; Cursor := crCross;
end; end;
@ -1909,10 +1913,10 @@ begin
if (Mode = mdInsert) and not Down then if (Mode = mdInsert) and not Down then
begin begin
DrawFocusRect(OldRect); NPEraseFocusRect;
RoundCoord(x, y); RoundCoord(x, y);
OffsetRect(OldRect, x - OldRect.Left, y - OldRect.Top); OffsetRect(OldRect, x - OldRect.Left, y - OldRect.Top);
DrawFocusRect(OldRect); NPDrawFocusRect;
ShowSizes := True; ShowSizes := True;
FDesigner.UpdateStatus; FDesigner.UpdateStatus;
ShowSizes := False; ShowSizes := False;
@ -1942,11 +1946,11 @@ begin
//selecting a lot of objects //selecting a lot of objects
if Down and RFlag then if Down and RFlag then
begin begin
DrawFocusRect(OldRect); NPEraseFocusRect;
if Cursor = crCross then if Cursor = crCross then
RoundCoord(x, y); RoundCoord(x, y);
OldRect := Rect(OldRect.Left, OldRect.Top, x, y); OldRect := Rect(OldRect.Left, OldRect.Top, x, y);
DrawFocusRect(OldRect); NPDrawFocusRect;
ShowSizes := True; ShowSizes := True;
if Cursor = crCross then if Cursor = crCross then
FDesigner.UpdateStatus; FDesigner.UpdateStatus;
@ -2343,11 +2347,21 @@ begin
{$IFDEF LCLCarbon}Invalidate;{$endif} {$IFDEF LCLCarbon}Invalidate;{$endif}
end; end;
procedure TfrDesignerPage.NPDrawFocusRect;
begin
DrawFocusRect(OldRect);
end;
procedure TfrDesignerPage.NPEraseFocusRect;
begin
DrawFocusRect(OldRect);
end;
procedure TfrDesignerPage.CMMouseLeave(var Message: TLMessage); procedure TfrDesignerPage.CMMouseLeave(var Message: TLMessage);
begin begin
if (Mode = mdInsert) and not Down then if (Mode = mdInsert) and not Down then
begin begin
DrawFocusRect(OldRect); NPEraseFocusRect;
OffsetRect(OldRect, -10000, -10000); OffsetRect(OldRect, -10000, -10000);
end; end;
end; end;