diff --git a/lcl/extctrls.pp b/lcl/extctrls.pp index b52e64a0ae..3acf2df556 100644 --- a/lcl/extctrls.pp +++ b/lcl/extctrls.pp @@ -132,7 +132,7 @@ type TTabGetImageEvent = procedure(Sender: TObject; TabIndex: Integer; var ImageIndex: Integer) of object; - TNoteBookOption = (nboShowCloseButtons, nboMultiLine); + TNoteBookOption = (nboShowCloseButtons, nboMultiLine, nboHidePageListPopup); TNoteBookOptions = set of TNoteBookOption; TNoteBookCapability = (nbcShowCloseButtons, nbcMultiLine, nbcPageListPopup); TNoteBookCapabilities = set of TNoteBookCapability; diff --git a/lcl/include/customnotebook.inc b/lcl/include/customnotebook.inc index 85b6ee0f5f..7d5a22801b 100644 --- a/lcl/include/customnotebook.inc +++ b/lcl/include/customnotebook.inc @@ -420,8 +420,8 @@ begin FOptions:=AValue; if nboShowCloseButtons in ChangedOptions then UpdateTabProperties; - if nboMultiLine in ChangedOptions then - TWSCustomNotebookClass(WidgetSetClass).GetCapabilities; + if HandleAllocated then + TWSCustomNotebookClass(WidgetSetClass).UpdateProperties(Self); end; {------------------------------------------------------------------------------ diff --git a/lcl/interfaces/gtk/gtkwsextctrls.pp b/lcl/interfaces/gtk/gtkwsextctrls.pp index 5ce6aa5baa..5901f4e0e1 100644 --- a/lcl/interfaces/gtk/gtkwsextctrls.pp +++ b/lcl/interfaces/gtk/gtkwsextctrls.pp @@ -75,6 +75,7 @@ type class procedure SetPageIndex(const ANotebook: TCustomNotebook; const AIndex: integer); override; class procedure SetTabPosition(const ANotebook: TCustomNotebook; const ATabPosition: TTabPosition); override; class procedure ShowTabs(const ANotebook: TCustomNotebook; AShowTabs: boolean); override; + class procedure UpdateProperties(const ANotebook: TCustomNotebook); override; end; { TGtkWSPage } @@ -345,7 +346,10 @@ begin DebugGtkWidgets.MarkCreated(Pointer(AWidget), dbgsName(AWinControl)); {$ENDIF} gtk_notebook_set_scrollable(AWidget, True); - gtk_notebook_popup_enable(AWidget); + + if not (nboHidePageListPopup in TCustomNotebook(AWinControl).Options) then + gtk_notebook_popup_enable(AWidget); + if TCustomNotebook(AWinControl).PageCount=0 then // a gtk notebook needs a page -> add dummy page GTKWidgetSet.AddDummyNoteBookPage(AWidget); @@ -614,6 +618,14 @@ begin gtk_notebook_set_show_tabs(PGtkNotebook(ANotebook.Handle), AShowTabs); end; +class procedure TGtkWSCustomNotebook.UpdateProperties(const ANotebook: TCustomNotebook); +begin + if (nboHidePageListPopup in ANoteBook.Options) then + gtk_notebook_popup_disable(PGtkNotebook(ANoteBook.Handle)) + else + gtk_notebook_popup_enable(PGtkNotebook(ANoteBook.Handle)); +end; + class procedure TGtkWSCustomPanel.SetCallbacks(const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); begin