From 988960ce47cab61e37d8b5dc074b54bcce6d4820 Mon Sep 17 00:00:00 2001 From: zeljko Date: Wed, 3 Sep 2014 08:15:56 +0000 Subject: [PATCH] Qt: do not trigger shortcuts if menu item is disabled. issue #21720 git-svn-id: trunk@46113 - --- lcl/interfaces/qt/qtwidgets.pas | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index b72ece691d..e1ff46c574 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -1557,6 +1557,7 @@ type function getHasSubMenu: boolean; function getText: WideString; override; function getVisible: Boolean; override; + function MenuItemEnabled: boolean; procedure PopUp(pos: PQtPoint; at: QActionH = nil); procedure Exec(pos: PQtPoint; at: QActionH = nil); procedure removeActionGroup; @@ -14931,6 +14932,27 @@ begin end; end; +function TQtMenu.MenuItemEnabled: boolean; +var + AParentMenu: TMenuItem; +begin + if not Assigned(FMenuItem) then + begin + Result := getEnabled; + exit; + end; + + Result := FMenuItem.Enabled; + AParentMenu := FMenuItem.Parent; + while AParentMenu <> nil do + begin + Result := AParentMenu.Enabled; + if not Result then + break; + AParentMenu := AParentMenu.Parent; + end; +end; + function TQtMenu.EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; var Msg: TLMessage; @@ -14944,7 +14966,7 @@ begin begin FillChar(Msg, SizeOf(Msg), 0); Msg.msg := LM_ACTIVATE; - if Assigned(FMenuItem) then + if MenuItemEnabled then FMenuItem.Dispatch(Msg); Result := True; end;