X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bda0e173844e8e0f8acf4e8ad8b5c26e5c6fe5d..86834940ec9269fec1a1cbfc935c2310140f624a:/src/msw/tabctrl.cpp diff --git a/src/msw/tabctrl.cpp b/src/msw/tabctrl.cpp index 49b924ccbf..686f25018d 100644 --- a/src/msw/tabctrl.cpp +++ b/src/msw/tabctrl.cpp @@ -6,10 +6,10 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "tabctrl.h" #endif @@ -21,61 +21,47 @@ #endif #ifndef WX_PRECOMP -#include "wx.h" +#include "wx/wx.h" #endif #if defined(__WIN95__) -#ifndef __GNUWIN32__ -#include "malloc.h" -#endif - -#include - -#ifndef __GNUWIN32__ -#include -#endif +#include "wx/msw/private.h" -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" +#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)) + #include +#else + #include "wx/msw/gnuwin32/extra.h" #endif -#include "wx/msw/dib.h" -#include "wx/msw/tabctrl.h" +#include "wx/tabctrl.h" #include "wx/app.h" -#include "wx/msw/private.h" #include "wx/msw/imaglist.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxNotifyEvent) + +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TAB_SEL_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TAB_SEL_CHANGING) BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) - EVT_SIZE(wxTabCtrl::OnSize) - EVT_PAINT(wxTabCtrl::OnPaint) - EVT_KILL_FOCUS(wxTabCtrl::OnKillFocus) - EVT_MOUSE_EVENTS(wxTabCtrl::OnMouseEvent) EVT_SYS_COLOUR_CHANGED(wxTabCtrl::OnSysColourChanged) END_EVENT_TABLE() -#endif -wxTabCtrl::wxTabCtrl(void) +wxTabCtrl::wxTabCtrl() { m_imageList = NULL; } -bool wxTabCtrl::Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, - const long style, const wxString& name) +bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, + long style, const wxString& name) { m_imageList = NULL; m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); + GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); m_foregroundColour = *wxBLACK ; - m_defaultForegroundColour = *wxBLACK ; - m_defaultBackgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - SetName(name); int x = pos.x; @@ -85,15 +71,8 @@ bool wxTabCtrl::Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos m_windowStyle = style; - SetFont(* (wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL))); - SetParent(parent); - DWORD msflags = 0; - if (style & wxBORDER) - msflags |= WS_BORDER; - msflags |= WS_CHILD | WS_VISIBLE; - if (width <= 0) width = 100; if (height <= 0) @@ -105,7 +84,7 @@ bool wxTabCtrl::Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos m_windowId = (id < 0 ? NewControlId() : id); - long tabStyle = 0; + long tabStyle = WS_CHILD | WS_VISIBLE; if (m_windowStyle & wxTC_MULTILINE) tabStyle |= TCS_MULTILINE; if (m_windowStyle & wxTC_RIGHTJUSTIFY) @@ -114,14 +93,18 @@ bool wxTabCtrl::Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos tabStyle |= TCS_FIXEDWIDTH; if (m_windowStyle & wxTC_OWNERDRAW) tabStyle |= TCS_OWNERDRAWFIXED; + if (m_windowStyle & wxBORDER) + tabStyle |= WS_BORDER; +#ifndef __WXWINCE__ tabStyle |= TCS_TOOLTIPS; +#endif // Create the toolbar control. HWND hWndTabCtrl = CreateWindowEx(0L, // No extended styles. WC_TABCONTROL, // Class name for the tab control - "", // No default text. - WS_CHILD | WS_BORDER | WS_VISIBLE | tabStyle, // Styles and defaults. + wxEmptyString, // No default text. + tabStyle, // Styles and defaults. x, y, width, height, // Standard size and position. (HWND) parent->GetHWND(), // Parent window (HMENU)m_windowId, // ID. @@ -130,79 +113,60 @@ bool wxTabCtrl::Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos m_hWnd = (WXHWND) hWndTabCtrl; if (parent) parent->AddChild(this); - + SubclassWin((WXHWND) hWndTabCtrl); - return TRUE; + SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); + + return true; } -wxTabCtrl::~wxTabCtrl(void) +wxTabCtrl::~wxTabCtrl() { UnsubclassWin(); } -void wxTabCtrl::Command(wxCommandEvent& event) +bool wxTabCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) { -} + wxTabEvent event(wxEVT_NULL, m_windowId); + wxEventType eventType wxDUMMY_INITIALIZE(wxEVT_NULL); + NMHDR* hdr1 = (NMHDR*) lParam; + switch ( hdr1->code ) + { + case TCN_SELCHANGE: + eventType = wxEVT_COMMAND_TAB_SEL_CHANGED; + break; -bool wxTabCtrl::MSWCommand(const WXUINT cmd, const WXWORD id) -{ - return FALSE; -} + case TCN_SELCHANGING: + eventType = wxEVT_COMMAND_TAB_SEL_CHANGING; + break; -bool wxTabCtrl::MSWNotify(const WXWPARAM wParam, const WXLPARAM lParam) -{ - wxTabEvent event(0, m_windowId); - int eventType = 0; - NMHDR* hdr1 = (NMHDR*) lParam; - switch ( hdr1->code ) - { - case TCN_SELCHANGE: - { - eventType = wxEVT_COMMAND_TAB_SEL_CHANGED; - event.SetInt( (int) LOWORD(wParam) ) ; - break; - } - case TCN_SELCHANGING: - { - eventType = wxEVT_COMMAND_TAB_SEL_CHANGING; - event.SetInt( (int) LOWORD(wParam) ) ; - break; - } +#ifndef __WXWINCE__ case TTN_NEEDTEXT: { // TODO -// if (tool->m_shortHelpString != "") +// if (!tool->m_shortHelpString.empty()) // ttText->lpszText = (char *) (const char *)tool->m_shortHelpString; - return wxControl::MSWNotify(wParam, lParam); - break; } +#endif + default : + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } - default : - return wxControl::MSWNotify(wParam, lParam); - break; - } - - event.SetEventObject( this ); - event.SetEventType(eventType); + event.SetEventObject( this ); + event.SetEventType(eventType); + event.SetInt(idCtrl) ; + event.SetSelection(idCtrl); - if ( !ProcessEvent(event) ) - return FALSE; - return TRUE; + return ProcessEvent(event); } // Responds to colour changes, and passes event on to children. void wxTabCtrl::OnSysColourChanged(wxSysColourChangedEvent& event) { m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - m_defaultBackgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - - // Remap the buttons -// CreateTools(); - - Default(); + GetGValue(GetSysColor(COLOR_BTNFACE)), + GetBValue(GetSysColor(COLOR_BTNFACE))); Refresh(); @@ -211,61 +175,67 @@ void wxTabCtrl::OnSysColourChanged(wxSysColourChangedEvent& event) } // Delete all items -bool wxTabCtrl::DeleteAllItems(void) +bool wxTabCtrl::DeleteAllItems() { return ( TabCtrl_DeleteAllItems( (HWND) GetHWND() ) != FALSE ); } // Delete an item -bool wxTabCtrl::DeleteItem(const int item) +bool wxTabCtrl::DeleteItem(int item) { return ( TabCtrl_DeleteItem( (HWND) GetHWND(), item) != FALSE ); } // Get the selection -int wxTabCtrl::GetSelection(void) const +int wxTabCtrl::GetSelection() const { return (int) TabCtrl_GetCurSel( (HWND) GetHWND() ); } +// Get the tab with the current keyboard focus +int wxTabCtrl::GetCurFocus() const +{ + return (int) TabCtrl_GetCurFocus( (HWND) GetHWND() ); +} + // Get the associated image list -wxImageList* wxTabCtrl::GetImageList(void) const +wxImageList* wxTabCtrl::GetImageList() const { return m_imageList; } // Get the number of items -int wxTabCtrl::GetItemCount(void) const +int wxTabCtrl::GetItemCount() const { return (int) TabCtrl_GetItemCount( (HWND) GetHWND() ); } // Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(const int item, wxRect& wxrect) const +bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const { RECT rect; if ( !TabCtrl_GetItemRect( (HWND) GetHWND(), item, & rect) ) - return FALSE; + return false; else { wxrect.x = rect.left; wxrect.y = rect.top; wxrect.width = rect.right - rect.left; wxrect.height = rect.bottom - rect.top; - return TRUE; + return true; } } // Get the number of rows -int wxTabCtrl::GetRowCount(void) const +int wxTabCtrl::GetRowCount() const { return (int) TabCtrl_GetRowCount( (HWND) GetHWND() ); } // Get the item text -wxString wxTabCtrl::GetItemText(const int item) const +wxString wxTabCtrl::GetItemText(int item) const { - char buf[256]; - wxString str(""); + wxChar buf[256]; + wxString str(wxEmptyString); TC_ITEM tcItem; tcItem.mask = TCIF_TEXT; tcItem.pszText = buf; @@ -278,7 +248,7 @@ wxString wxTabCtrl::GetItemText(const int item) const } // Get the item image -int wxTabCtrl::GetItemImage(const int item) const +int wxTabCtrl::GetItemImage(int item) const { TC_ITEM tcItem; tcItem.mask = TCIF_IMAGE; @@ -290,7 +260,7 @@ int wxTabCtrl::GetItemImage(const int item) const } // Get the item data -void* wxTabCtrl::GetItemData(const int item) const +void* wxTabCtrl::GetItemData(int item) const { TC_ITEM tcItem; tcItem.mask = TCIF_PARAM; @@ -321,16 +291,16 @@ int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) } // Insert an item -int wxTabCtrl::InsertItem(const int item, const wxString& text, const int imageId, void* data) +bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) { - char buf[256]; + wxChar buf[256]; TC_ITEM tcItem; tcItem.mask = TCIF_PARAM; tcItem.lParam = (long) data; - if (text != "") + if (text != wxEmptyString) { tcItem.mask |= TCIF_TEXT; - strcpy(buf, (const char*) text); + wxStrcpy(buf, (const wxChar*) text); tcItem.pszText = buf; tcItem.cchTextMax = 256; } @@ -340,11 +310,11 @@ int wxTabCtrl::InsertItem(const int item, const wxString& text, const int imageI tcItem.iImage = imageId; } - return (int) TabCtrl_InsertItem( (HWND) GetHWND(), item, & tcItem); + return (TabCtrl_InsertItem( (HWND) GetHWND(), item, & tcItem) != -1); } // Set the selection -int wxTabCtrl::SetSelection(const int item) +int wxTabCtrl::SetSelection(int item) { return (int) TabCtrl_SetCurSel( (HWND) GetHWND(), item ); } @@ -357,12 +327,12 @@ void wxTabCtrl::SetImageList(wxImageList* imageList) } // Set the text for an item -bool wxTabCtrl::SetItemText(const int item, const wxString& text) +bool wxTabCtrl::SetItemText(int item, const wxString& text) { - char buf[256]; + wxChar buf[256]; TC_ITEM tcItem; tcItem.mask = TCIF_TEXT; - strcpy(buf, (const char*) text); + wxStrcpy(buf, (const wxChar*) text); tcItem.pszText = buf; tcItem.cchTextMax = 256; @@ -370,7 +340,7 @@ bool wxTabCtrl::SetItemText(const int item, const wxString& text) } // Set the image for an item -bool wxTabCtrl::SetItemImage(const int item, const int image) +bool wxTabCtrl::SetItemImage(int item, int image) { TC_ITEM tcItem; tcItem.mask = TCIF_IMAGE; @@ -380,7 +350,7 @@ bool wxTabCtrl::SetItemImage(const int item, const int image) } // Set the data for an item -bool wxTabCtrl::SetItemData(const int item, void* data) +bool wxTabCtrl::SetItemData(int item, void* data) { TC_ITEM tcItem; tcItem.mask = TCIF_PARAM; @@ -468,14 +438,5 @@ void wxMapBitmap(HBITMAP hBitmap, int width, int height) } #endif -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(WXTYPE commandType, int id): - wxCommandEvent(commandType, id) -{ -} - - #endif // __WIN95__