mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-08 07:37:27 +01:00
cocoa: restoring the actual menu state once the system dialog is closed. bug #38182
git-svn-id: trunk@64180 -
This commit is contained in:
parent
b167267112
commit
24f5f9b1d9
@ -239,6 +239,7 @@ var
|
||||
Str: string;
|
||||
cancelAccessory: TCocoaAlertCancelAccessoryView;
|
||||
needsCancel: Boolean;
|
||||
isMenuOn: Boolean;
|
||||
begin
|
||||
{Str := 'TCocoaWidgetSet.PromptUser DialogCaption: ' + DialogCaption +
|
||||
' DialogMessage: ' + DialogMessage + ' DialogType: ' + DbgS(DialogType) +
|
||||
@ -328,11 +329,14 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
ToggleAppMenu(false);
|
||||
Result := AnAlert.runModal;
|
||||
if Result = NSCancelButton then
|
||||
Result := EscapeResult;
|
||||
ToggleAppMenu(true); // modal menu doesn't have a window, disabling it
|
||||
isMenuOn := ToggleAppMenu(false);
|
||||
try
|
||||
Result := AnAlert.runModal;
|
||||
if Result = NSCancelButton then
|
||||
Result := EscapeResult;
|
||||
finally
|
||||
ToggleAppMenu(isMenuOn); // modal menu doesn't have a window, disabling it
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
if Assigned(cancelAccessory) then cancelAccessory.release;
|
||||
|
||||
@ -269,6 +269,8 @@ var
|
||||
lFilter: TCocoaFilterComboBox;
|
||||
callback: TOpenSaveDelegate;
|
||||
|
||||
isMenuOn: Boolean;
|
||||
|
||||
// setup panel and its accessory view
|
||||
procedure CreateAccessoryView(AOpenOwner: NSOpenPanel; ASaveOwner: NSSavePanel);
|
||||
const
|
||||
@ -440,7 +442,7 @@ begin
|
||||
saveDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(InitDir)));
|
||||
UpdateOptions(FileDialog, saveDlg);
|
||||
|
||||
ToggleAppMenu(false);
|
||||
isMenuOn := ToggleAppMenu(false);
|
||||
try
|
||||
if saveDlg.runModal = NSOKButton then
|
||||
begin
|
||||
@ -463,7 +465,7 @@ begin
|
||||
saveDlg.release;
|
||||
LocalPool.Release;
|
||||
finally
|
||||
ToggleAppMenu(true);
|
||||
ToggleAppMenu(isMenuOn);
|
||||
end;
|
||||
|
||||
end; {TCocoaWSFileDialog.ShowModal}
|
||||
@ -485,6 +487,8 @@ var
|
||||
accessoryView: NSView;
|
||||
lRect: NSRect;
|
||||
okButton, cancelButton: NSButton;
|
||||
|
||||
isMenuOn: Boolean;
|
||||
begin
|
||||
{$IFDEF VerboseWSClass}
|
||||
DebugLn('TCocoaWSColorDialog.ShowModal for ' + ACommonDialog.Name);
|
||||
@ -539,8 +543,13 @@ begin
|
||||
*)
|
||||
|
||||
// show panel
|
||||
colorPanel.makeKeyAndOrderFront(colorDelegate);
|
||||
NSApp.runModalForWindow(colorPanel);
|
||||
isMenuOn := ToggleAppMenu(false);
|
||||
try
|
||||
colorPanel.makeKeyAndOrderFront(colorDelegate);
|
||||
NSApp.runModalForWindow(colorPanel);
|
||||
finally
|
||||
ToggleAppMenu(isMenuOn);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TCocoaWSFontDialog }
|
||||
@ -562,6 +571,7 @@ var
|
||||
lRect: NSRect;
|
||||
okButton, cancelButton: NSButton;
|
||||
fn : NSFont;
|
||||
isMenuOn: Boolean;
|
||||
begin
|
||||
{$IFDEF VerboseWSClass}
|
||||
DebugLn('TCocoaWSFontDialog.ShowModal for ' + ACommonDialog.Name);
|
||||
@ -624,8 +634,13 @@ begin
|
||||
*)
|
||||
|
||||
// show panel
|
||||
FontPanel.makeKeyAndOrderFront(FontDelegate);
|
||||
NSApp.runModalForWindow(FontPanel);
|
||||
isMenuOn := ToggleAppMenu(false);
|
||||
try
|
||||
FontPanel.makeKeyAndOrderFront(FontDelegate);
|
||||
NSApp.runModalForWindow(FontPanel);
|
||||
finally
|
||||
ToggleAppMenu(isMenuOn);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TColorPanelDelegate }
|
||||
|
||||
@ -161,7 +161,8 @@ procedure NSMenuItemSetBitmap(mn: NSMenuItem; bmp: TBitmap);
|
||||
// the returned "Key" should not be released, as it's not memory owned
|
||||
procedure ShortcutToKeyEquivalent(const AShortCut: TShortcut; out Key: NSString; out shiftKeyMask: NSUInteger);
|
||||
|
||||
procedure ToggleAppMenu(ALogicalEnabled: Boolean);
|
||||
// returns the last state the menu was at
|
||||
function ToggleAppMenu(ALogicalEnabled: Boolean): Boolean;
|
||||
|
||||
function AllocCocoaMenu(const atitle: string = ''): TCocoaMenu;
|
||||
function LCLMenuItemInit(item: NSMenuItem; const atitle: string; ashortCut: TShortCut): id;
|
||||
@ -937,9 +938,14 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure ToggleAppMenu(ALogicalEnabled: Boolean);
|
||||
var
|
||||
isMenuEnabled : Boolean = true;
|
||||
|
||||
function ToggleAppMenu(ALogicalEnabled: Boolean): Boolean;
|
||||
begin
|
||||
Result := isMenuEnabled;
|
||||
ToggleAppNSMenu( NSApplication(NSApp).mainMenu, ALogicalEnabled );
|
||||
isMenuEnabled := ALogicalEnabled;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user