diff options
Diffstat (limited to 'vcl/source/control/tabctrl.cxx')
-rw-r--r-- | vcl/source/control/tabctrl.cxx | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx index 491a2a06cfe1..6420817a044b 100644 --- a/vcl/source/control/tabctrl.cxx +++ b/vcl/source/control/tabctrl.cxx @@ -96,6 +96,7 @@ void TabControl::ImplInit( vcl::Window* pParent, WinBits nStyle ) mbSmallInvalidate = false; mpTabCtrlData = new ImplTabCtrlData; mpTabCtrlData->mpListBox = nullptr; + mbHideDisabledTabs = false; ImplInitSettings( true, true, true ); @@ -1197,16 +1198,20 @@ void TabControl::ImplPaint(vcl::RenderContext& rRenderContext, const Rectangle& while (idx < mpTabCtrlData->maItemList.size()) { ImplTabItem* pItem = &mpTabCtrlData->maItemList[idx]; - if (pItem != pCurItem) + + if(!mbHideDisabledTabs || (mbHideDisabledTabs && pItem->mbEnabled)) { - vcl::Region aClipRgn(rRenderContext.GetActiveClipRegion()); - aClipRgn.Intersect(pItem->maRect); - if (!rRect.IsEmpty()) - aClipRgn.Intersect(rRect); - if (!aClipRgn.IsEmpty()) + if (pItem != pCurItem) { - ImplDrawItem(rRenderContext, pItem, aCurRect, false/*bLayout*/, - pItem == pFirstTab, pItem == pLastTab); + vcl::Region aClipRgn(rRenderContext.GetActiveClipRegion()); + aClipRgn.Intersect(pItem->maRect); + if (!rRect.IsEmpty()) + aClipRgn.Intersect(rRect); + if (!aClipRgn.IsEmpty()) + { + ImplDrawItem(rRenderContext, pItem, aCurRect, false/*bLayout*/, + pItem == pFirstTab, pItem == pLastTab); + } } } @@ -1757,6 +1762,11 @@ void TabControl::EnablePage( sal_uInt16 i_nPageId, bool i_bEnable ) } } +void TabControl::HideDisabledTabs(bool bHide) +{ + mbHideDisabledTabs = bHide; +} + sal_uInt16 TabControl::GetPageCount() const { return (sal_uInt16)mpTabCtrlData->maItemList.size(); |