sparta: update fake menu on modification

git-svn-id: trunk@51295 -
This commit is contained in:
ondrej 2016-01-15 08:59:21 +00:00
parent 1cba70270b
commit 476ee9dad4
3 changed files with 26 additions and 13 deletions

View File

@ -174,7 +174,9 @@ type
class procedure OnShowMethod(const Name: String);
class procedure OnDesignRefreshPropertyValues;
class procedure OnMenuChanged;
class procedure OnModifiedPersistentAdded(APersistent: TPersistent; Select: Boolean);
class procedure OnModifiedSender(Sender: TObject);
class procedure OnModified;
class procedure DesignerSetFocus;
class procedure OnDesignMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
@ -464,9 +466,6 @@ begin
RepaintFormImages;
end;
if (TheMessage.msg = CM_MENUCHANGED) and (Form.Form is TFakeForm) then
TSpartaMainIDE.OnMenuChanged;
// during docking, form position was in wrong place... we need to delay changing position :)
if TheMessage.msg = WM_BoundToDesignTabSheet then
if Form.LastActiveSourceWindow <> nil then
@ -1494,13 +1493,24 @@ begin
DesignerSetFocus;
end;
class procedure TSpartaMainIDE.OnMenuChanged;
class procedure TSpartaMainIDE.OnModifiedSender(Sender: TObject);
begin
OnModified;
end;
class procedure TSpartaMainIDE.OnModified;
var
LResizer: TResizer;
begin
LResizer := GetCurrentResizer;
if LResizer<>nil then
LResizer.FResizerFrame.OnMenuChanged;
LResizer.FResizerFrame.OnModified;
end;
class procedure TSpartaMainIDE.OnModifiedPersistentAdded(
APersistent: TPersistent; Select: Boolean);
begin
OnModified;
end;
class procedure TSpartaMainIDE.OnShowDesignerForm(Sender: TObject; AEditor: TSourceEditorInterface;

View File

@ -46,6 +46,9 @@ begin
LazarusIDE.AddHandlerOnShowSourceOfActiveDesignerForm(TSpartaMainIDE.OnShowSrcEditor);
GlobalDesignHook.AddHandlerShowMethod(TSpartaMainIDE.OnShowMethod);
GlobalDesignHook.AddHandlerModified(TSpartaMainIDE.OnModifiedSender);
GlobalDesignHook.AddHandlerPersistentAdded(TSpartaMainIDE.OnModifiedPersistentAdded);
GlobalDesignHook.AddHandlerPersistentDeleted(TSpartaMainIDE.OnModified);
GlobalDesignHook.AddHandlerRefreshPropertyValues(TSpartaMainIDE.OnDesignRefreshPropertyValues);
GlobalDesignHook.AddHandlerDesignerMouseDown(TSpartaMainIDE.OnDesignMouseDown);

View File

@ -74,7 +74,7 @@ type
FActivePropertyGridItemIndex: Integer;
FLastClientWidth, FLastClientHeight: Integer;
FOldHasMainMenu: Boolean;
FMenuChanged: Boolean;
FDesignerModified: Boolean;
function HasMainMenu: Boolean;
procedure AppOnIdle(Sender: TObject; var Done: Boolean);
@ -135,7 +135,7 @@ type
procedure ShowSizeRects;
procedure ShowSizeControls;
procedure OnMenuChanged;
procedure OnModified;
procedure DesignerSetFocus;
property VerticalScrollPos: Integer read FVerticalScrollPos write FVerticalScrollPos;
@ -633,9 +633,9 @@ begin
end;
end;
procedure TResizerFrame.OnMenuChanged;
procedure TResizerFrame.OnModified;
begin
FMenuChanged := True;
FDesignerModified := True;
end;
function TResizerFrame.GetRightMargin: Integer;
@ -834,7 +834,7 @@ end;
procedure TResizerFrame.AppOnIdle(Sender: TObject; var Done: Boolean);
begin
if FMenuChanged then
if FDesignerModified then
begin
if FOldHasMainMenu <> HasMainMenu then
begin
@ -843,9 +843,9 @@ begin
OnNodePositioning(Self, [pkBottom], pcPositioningEnd);
Application.NotifyUserInputHandler(Self, 0); // force repaint invisible components
end else
pFakeMenu.Invalidate;
pFakeMenu.Invalidate; // always repaint menu on modification
FMenuChanged := False;
FDesignerModified := False;
end;
end;