From 66231a14fe8f2b1068973651eed85ad7d1543506 Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Mon, 18 Jul 2011 12:50:40 +0000 Subject: [PATCH] Patch from bug #19750: TCustomNotebook: Allow keyboard tab switching git-svn-id: trunk@31733 - --- lcl/comctrls.pp | 5 ++++- lcl/include/customnotebook.inc | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index a41930d744..70e67cdebd 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -297,7 +297,9 @@ type TTabGetImageEvent = procedure(Sender: TObject; TabIndex: Integer; var ImageIndex: Integer) of object; - TNoteBookOption = (nboShowCloseButtons, nboMultiLine, nboHidePageListPopup); + TNoteBookOption = ( + nboShowCloseButtons, nboMultiLine, nboHidePageListPopup, + nboKeyboardTabSwitch); TNoteBookOptions = set of TNoteBookOption; TNoteBookCapability = (nbcShowCloseButtons, nbcMultiLine, nbcPageListPopup); TNoteBookCapabilities = set of TNoteBookCapability; @@ -366,6 +368,7 @@ type procedure DoCreateWnd; virtual; procedure DoChange; virtual; procedure Change; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure Loaded; override; procedure ReadState(Reader: TReader); override; function DialogChar(var Message: TLMKey): boolean; override; diff --git a/lcl/include/customnotebook.inc b/lcl/include/customnotebook.inc index e376a1028d..30a55cf4ca 100644 --- a/lcl/include/customnotebook.inc +++ b/lcl/include/customnotebook.inc @@ -724,6 +724,25 @@ begin Result:=false; end; +procedure TCustomNotebook.KeyDown(var Key: Word; Shift: TShiftState); +begin + if (nboKeyboardTabSwitch in Options) and (Key = VK_TAB) and (PageCount > 0) then + begin + if Shift = [ssCtrl] then + begin + PageIndex := (PageIndex + 1) mod PageCount; + Exit; + end + else if Shift = [ssCtrl, ssShift] then + begin + PageIndex := (PageIndex + PageCount - 1) mod PageCount; + Exit; + end; + end; + + inherited KeyDown(Key, Shift); +end; + {------------------------------------------------------------------------------ TCustomNotebook GetPageCount ------------------------------------------------------------------------------}