void wxNotebook::SetPadding( const wxSize &padding ) { wxCHECK_RET( m_widget != NULL, wxT("invalid notebook") ); m_padding = padding.GetWidth(); int i; for (i=0; i<int(GetPageCount()); i++) { wxGtkNotebookPage* nb_page = GetNotebookPage(i); wxASSERT(nb_page != NULL); if (nb_page->m_image != -1) { // gtk_box_set_child_packing sets padding on BOTH sides // icon provides left padding, label provides center and right int image = nb_page->m_image; SetPageImage(i,-1); SetPageImage(i,image); } wxASSERT(nb_page->m_label); gtk_box_set_child_packing(GTK_BOX(nb_page->m_box), GTK_WIDGET(nb_page->m_label), FALSE, FALSE, m_padding, GTK_PACK_END); } }
void wxNotebook::SetPadding( const wxSize &padding ) { wxCHECK_RET( m_widget != NULL, wxT("invalid notebook") ); m_padding = padding.GetWidth(); int i; #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for (i=0; i<int(GetPageCount()); i++) { wxGtkNotebookPage* nb_page = GetNotebookPage(i); wxASSERT(nb_page != NULL); if (nb_page->m_image != -1) { // gtk_box_set_child_packing sets padding on BOTH sides // icon provides left padding, label provides center and right int image = nb_page->m_image; SetPageImage(i,-1); SetPageImage(i,image); } wxASSERT(nb_page->m_label); gtk_box_set_child_packing(GTK_BOX(nb_page->m_box), GTK_WIDGET(nb_page->m_label), FALSE, FALSE, m_padding, GTK_PACK_END); } }
void CMuleNotebook::OnMouseMotion(wxMouseEvent &event) { if (GetImageList() == NULL) { // This Mulenotebook has no images on tabs, so nothing to do. event.Skip(); return; } long flags = 0; int tab = HitTest(wxPoint(event.m_x,event.m_y),&flags); // Clear the highlight for all tabs. for (int i=0;i<(int)GetPageCount();++i) { SetPageImage(i, 0); } if ((tab != -1) && (flags == wxNB_HITTEST_ONICON)) { // Mouse is over a 'x' SetPageImage(tab, 1); } else { // Is not a 'x'. Send this event up. event.Skip(); } }
// // Same as AddPage() but does it at given position // bool wxNotebook::InsertPage ( size_t nPage, wxNotebookPage* pPage, const wxString& rsStrText, bool bSelect, int nImageId ) { ULONG ulApiPage; wxASSERT( pPage != NULL ); wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), false ); // // Under OS/2 we can only insert FIRST, LAST, NEXT or PREV. Requires // two different calls to the API. Page 1 uses the BKA_FIRST. Subsequent // pages use the previous page ID coupled with a BKA_NEXT call. Unlike // Windows, OS/2 uses an internal Page ID to ID the pages. // // OS/2 also has a nice auto-size feature that automatically sizes the // the attached window so we don't have to worry about the size of the // window on the page. // if (nPage == 0) { ulApiPage = LONGFROMMR(::WinSendMsg( GetHWND() ,BKM_INSERTPAGE ,(MPARAM)0 ,MPFROM2SHORT(BKA_AUTOPAGESIZE | BKA_MAJOR, BKA_FIRST) )); if (ulApiPage == 0L) { ERRORID vError; wxString sError; vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); return false; } m_alPageId.Insert((long)ulApiPage, nPage); } else { ulApiPage = LONGFROMMR(::WinSendMsg( GetHWND() ,BKM_INSERTPAGE ,MPFROMLONG((ULONG)m_alPageId[nPage - 1]) ,MPFROM2SHORT(BKA_AUTOPAGESIZE | BKA_MAJOR, BKA_NEXT) )); if (ulApiPage == 0L) { ERRORID vError; wxString sError; vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); return false; } m_alPageId.Insert((long)ulApiPage, nPage); } // // Associate a window handle with the page // if (pPage) { if (!::WinSendMsg( GetHWND() ,BKM_SETPAGEWINDOWHWND ,MPFROMLONG((ULONG)m_alPageId[nPage]) ,MPFROMHWND(pPage->GetHWND()) )) return false; } // // If the inserted page is before the selected one, we must update the // index of the selected page // if (nPage <= (size_t)m_nSelection) { // // One extra page added // m_nSelection++; } if (pPage) { // // Save the pointer to the page // m_pages.Insert( pPage ,nPage ); } // // Now set TAB dimenstions // wxWindowDC vDC(this); wxCoord nTextX; wxCoord nTextY; vDC.GetTextExtent(rsStrText, &nTextX, &nTextY); nTextY *= 2; nTextX = (wxCoord)(nTextX * 1.3); if (nTextX > m_nTabSize) { m_nTabSize = nTextX; ::WinSendMsg( GetHWND() ,BKM_SETDIMENSIONS ,MPFROM2SHORT((USHORT)m_nTabSize, (USHORT)nTextY) ,(MPARAM)BKA_MAJORTAB ); } // // Now set any TAB text // if (!rsStrText.empty()) { if (!SetPageText( nPage ,rsStrText )) return false; } // // Now set any TAB bitmap image // if (nImageId != -1) { if (!SetPageImage( nPage ,nImageId )) return false; } if (pPage) { // // Don't show pages by default (we'll need to adjust their size first) // HWND hWnd = GetWinHwnd(pPage); WinSetWindowULong( hWnd ,QWL_STYLE ,WinQueryWindowULong( hWnd ,QWL_STYLE ) & ~WS_VISIBLE ); // // This updates internal flag too - otherwise it will get out of sync // pPage->Show(false); } // // Some page should be selected: either this one or the first one if there is // still no selection // int nSelNew = -1; if (bSelect) nSelNew = nPage; else if ( m_nSelection == -1 ) nSelNew = 0; if (nSelNew != -1) SetSelection(nSelNew); InvalidateBestSize(); return true; } // end of wxNotebook::InsertPage