void CXTPDockingPaneTabbedContainer::OnLButtonDblClk(UINT /*nFlags*/, CPoint point) { if (PerformClick(m_hWnd, point, TRUE)) return; if (HitTestCaptionButton(point)) return; int nHit = HitTest(point); if (nHit == DOCKINGPANE_HITCAPTION) { CXTPDockingPane* pSelected = GetSelected(); if (IsHidden() && pSelected && ((pSelected->GetOptions() & xtpPaneNoHideable) != 0)) return; if (!IsHidden() && pSelected && ((pSelected->GetOptions() & xtpPaneNoFloatableByCaptionDoubleClick) != 0)) return; GetDockingPaneManager()->ToggleDocking(this); } else if (nHit >= 0) { CXTPDockingPane* pPane = GetItemPane(nHit); if ((pPane->GetOptions() & xtpPaneNoFloatableByTabDoubleClick) == 0) { GetDockingPaneManager()->ToggleDocking(pPane); } } }
BOOL CXTPDockingPaneSidePanel::IsCaptionButtonVisible(CXTPDockingPaneCaptionButton* pButton) { CXTPDockingPane* pSelectedPane = GetSelectedPane(); if (pButton->GetID() == XTP_IDS_DOCKINGPANE_CLOSE) return pSelectedPane && ((pSelectedPane->GetOptions() & xtpPaneNoCloseable) == 0); if (pButton->GetID() == XTP_IDS_DOCKINGPANE_AUTOHIDE) { pButton->SetState(m_bCollapsed ? xtpPanePinPushed : 0); return pSelectedPane && ((pSelectedPane->GetOptions() & xtpPaneNoHideable) == 0); } return TRUE; }
void CXTPDockingPaneTabbedContainer::OnTabsChanged() { if (!m_hWnd) return; m_nLockReposition += 1; DeleteAllItems(); m_bCloseItemButton = GetDockingPaneManager()->m_bShowCloseTabButton; POSITION pos = GetHeadPosition(); while (pos) { CXTPDockingPane* pPane = (CXTPDockingPane*)GetNext(pos); CXTPTabManagerItem* pItem = AddItem(GetItemCount()); if (m_pSelectedPane == pPane) SetSelectedItem(pItem); pItem->SetCaption(pPane->GetTabCaption()); pItem->SetColor(pPane->GetItemColor()); pItem->SetTooltip(pPane->GetTitle()); pItem->SetEnabled(pPane->GetEnabled() & xtpPaneEnableClient); pItem->SetClosable((pPane->GetOptions() & xtpPaneNoCloseable) == 0); pItem->SetData((DWORD_PTR)pPane); } ////////////////////////////////////////////////////////////////////////// m_pCaptionButtons->CheckForMouseOver(CPoint(-1, -1)); m_nLockReposition -= 1; }
void CXTPDockingPaneSidePanel::OnCaptionButtonClick(CXTPDockingPaneCaptionButton* pButton) { CXTPDockingPaneManager* pManager = GetDockingPaneManager(); switch (pButton->GetID()) { case XTP_IDS_DOCKINGPANE_CLOSE: { CXTPDockingPaneBaseList lstPanes; FindPane(xtpPaneTypeDockingPane, &lstPanes); POSITION pos = lstPanes.GetTailPosition(); while (pos) { CXTPDockingPane* pPane = (CXTPDockingPane*)lstPanes.GetPrev(pos); if ((pPane->GetOptions() & xtpPaneNoCloseable) != 0) continue; pPane->InternalAddRef(); if (!pManager->NotifyAction(xtpPaneActionClosing, pPane)) { pPane->Close(); pManager->NotifyAction(xtpPaneActionClosed, pPane); } pPane->InternalRelease(); } } break; case XTP_IDS_DOCKINGPANE_AUTOHIDE: OnPinButtonClick(); break; } }