static void ShowWnd(wxWindow* wnd, bool show)
{
#if wxUSE_MDI
- if (wnd->IsKindOf(CLASSINFO(wxAuiMDIChildFrame)))
+ if (wxDynamicCast(wnd, wxAuiMDIChildFrame))
{
wxAuiMDIChildFrame* cf = (wxAuiMDIChildFrame*)wnd;
cf->DoShow(show);
// wxAuiNotebooks always want to receive this event
// even if the tab is already active, because they may
// have multiple tab controls
- if (new_selection != GetActivePage() ||
- GetParent()->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ if ((new_selection != GetActivePage() ||
+ wxDynamicCast(GetParent(), wxAuiNotebook)) && !m_hoverButton)
{
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, m_windowId);
e.SetSelection(new_selection);
}
}
+ wxWindow* wnd = NULL;
+
+#if wxUSE_TOOLTIPS
+ if (evt.Moving() && TabHitTest(evt.m_x, evt.m_y, &wnd))
+ {
+ wxString tooltip(m_pages[GetIdxFromWindow(wnd)].tooltip);
+ // If the text changes, set it else, keep old, to avoid
+ // 'moving tooltip' effect
+ if (GetToolTipText() != tooltip)
+ SetToolTip(tooltip);
+ }
+ else
+ UnsetToolTip();
+#endif
+
if (!evt.LeftIsDown() || m_clickPt == wxDefaultPosition)
return;
// TODO: else if (GetFlags() & wxAUI_NB_RIGHT){}
#if wxUSE_MDI
- if (page.window->IsKindOf(CLASSINFO(wxAuiMDIChildFrame)))
+ if (wxDynamicCast(page.window, wxAuiMDIChildFrame))
{
wxAuiMDIChildFrame* wnd = (wxAuiMDIChildFrame*)page.window;
wnd->ApplyMDIChildFrameRect();
#if wxUSE_MDI
// actually destroy the window now
- if (wnd->IsKindOf(CLASSINFO(wxAuiMDIChildFrame)))
+ if (wxDynamicCast(wnd, wxAuiMDIChildFrame))
{
// delete the child frame with pending delete, as is
// customary with frame windows
return page_info.caption;
}
+bool wxAuiNotebook::SetPageToolTip(size_t page_idx, const wxString& text)
+{
+ if (page_idx >= m_tabs.GetPageCount())
+ return false;
+
+ // update our own tab catalog
+ wxAuiNotebookPage& page_info = m_tabs.GetPage(page_idx);
+ page_info.tooltip = text;
+
+ wxAuiTabCtrl* ctrl;
+ int ctrl_idx;
+ if (!FindTab(page_info.window, &ctrl, &ctrl_idx))
+ return false;
+
+ wxAuiNotebookPage& info = ctrl->GetPage(ctrl_idx);
+ info.tooltip = text;
+
+ // NB: we don't update the tooltip if it is already being displayed, it
+ // typically never happens, no need to code that
+ return true;
+}
+
+wxString wxAuiNotebook::GetPageToolTip(size_t page_idx) const
+{
+ if (page_idx >= m_tabs.GetPageCount())
+ return wxString();
+
+ const wxAuiNotebookPage& page_info = m_tabs.GetPage(page_idx);
+ return page_info.tooltip;
+}
+
bool wxAuiNotebook::SetPageBitmap(size_t page_idx, const wxBitmap& bitmap)
{
if (page_idx >= m_tabs.GetPageCount())
return;
// make sure we are not over the hint window
- if (!tab_ctrl->IsKindOf(CLASSINFO(wxFrame)))
+ if (!wxDynamicCast(tab_ctrl, wxFrame))
{
while (tab_ctrl)
{
- if (tab_ctrl->IsKindOf(CLASSINFO(wxAuiTabCtrl)))
+ if (wxDynamicCast(tab_ctrl, wxAuiTabCtrl))
break;
tab_ctrl = tab_ctrl->GetParent();
}
while (tab_ctrl)
{
- if (tab_ctrl->IsKindOf(CLASSINFO(wxAuiTabCtrl)))
+ if (wxDynamicCast(tab_ctrl, wxAuiTabCtrl))
break;
tab_ctrl = tab_ctrl->GetParent();
}
#if wxUSE_MDI
- if (close_wnd->IsKindOf(CLASSINFO(wxAuiMDIChildFrame)))
+ if (wxDynamicCast(close_wnd, wxAuiMDIChildFrame))
{
close_wnd->Close();
}
return tabCtrlHeight + pageHeight + decorHeight;
}
-// Advances the selection, generation page selection events
-void wxAuiNotebook::AdvanceSelection(bool forward)
-{
- if (GetPageCount() <= 1)
- return;
-
- int currentSelection = GetSelection();
-
- if (forward)
- {
- if (currentSelection == (int) (GetPageCount() - 1))
- return;
- else if (currentSelection == -1)
- currentSelection = 0;
- else
- currentSelection ++;
- }
- else
- {
- if (currentSelection <= 0)
- return;
- else
- currentSelection --;
- }
-
- SetSelection(currentSelection);
-}
-
// Shows the window menu
bool wxAuiNotebook::ShowWindowMenu()
{
return false;
}
-void wxAuiNotebook::Thaw()
+void wxAuiNotebook::DoThaw()
{
DoSizing();
- wxControl::Thaw();
+ wxBookCtrlBase::DoThaw();
}
void wxAuiNotebook::SetPageSize (const wxSize& WXUNUSED(size))
return SetPageBitmap(n, GetImageList()->GetBitmap(imageId));
}
-wxWindow* wxAuiNotebook::GetCurrentPage () const
-{
- const int sel = GetSelection();
-
- return sel == wxNOT_FOUND ? NULL : GetPage(sel);
-}
-
int wxAuiNotebook::ChangeSelection(size_t n)
{
return DoModifySelection(n, false);