X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/10b959e3729a77b95ab15614d1bdce74da327d8b..6f34921d9369a31de14e4b07e4824e2d701710f0:/src/common/tbarbase.cpp?ds=sidebyside diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp index 9738d699db..aac6b6ae94 100644 --- a/src/common/tbarbase.cpp +++ b/src/common/tbarbase.cpp @@ -25,7 +25,7 @@ #endif // For ::UpdateWindow -#ifdef __WINDOWS__ +#ifdef __WXMSW__ #include #endif @@ -34,7 +34,7 @@ #include "wx/tbarbase.h" #if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBarBase, wxControl) +IMPLEMENT_ABSTRACT_CLASS(wxToolBarBase, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool, wxObject) BEGIN_EVENT_TABLE(wxToolBarBase, wxControl) @@ -48,9 +48,9 @@ END_EVENT_TABLE() // is still valid: a tool may have quit the toolbar. static wxList gs_ToolBars; -wxToolBarTool::wxToolBarTool(const int theIndex, - const wxBitmap& theBitmap1, const wxBitmap& theBitmap2, const bool toggle, - const long xPos, const long yPos, const wxString& helpS1, const wxString& helpS2) +wxToolBarTool::wxToolBarTool(int theIndex, + const wxBitmap& theBitmap1, const wxBitmap& theBitmap2, bool toggle, + long xPos, long yPos, const wxString& helpS1, const wxString& helpS2) { m_toolStyle = wxTOOL_STYLE_BUTTON; m_clientData = NULL; @@ -88,8 +88,8 @@ wxToolBarBase::wxToolBarBase(void) : m_tools(wxKEY_INTEGER) { gs_ToolBars.Append(this); - m_tilingDirection = wxVERTICAL; - m_rowsOrColumns = 0; + m_maxRows = 1; + m_maxCols = 32000; m_maxWidth = 0; m_maxHeight = 0; m_defaultWidth = 16; @@ -141,16 +141,21 @@ void wxToolBarBase::OnRightClick(int toolIndex, long x, long y) { wxCommandEvent event(wxEVT_COMMAND_TOOL_RCLICKED, toolIndex); event.SetEventObject(this); + event.SetInt(toolIndex); GetEventHandler()->ProcessEvent(event); } // Called when the mouse cursor enters a tool bitmap (no button pressed). // Argument is -1 if mouse is exiting the toolbar. +// Note that for this event, the id of the window is used, +// and the integer parameter of wxCommandEvent is used to retrieve +// the tool id. void wxToolBarBase::OnMouseEnter ( int toolIndex ) { - wxCommandEvent event(wxEVT_COMMAND_TOOL_ENTER, toolIndex); + wxCommandEvent event(wxEVT_COMMAND_TOOL_ENTER, GetId()); event.SetEventObject(this); + event.SetInt(toolIndex); GetEventHandler()->ProcessEvent(event); } @@ -158,8 +163,8 @@ void wxToolBarBase::OnMouseEnter ( int toolIndex ) // If pushedBitmap is NULL, a reversed version of bitmap is // created and used as the pushed/toggled image. // If toggle is TRUE, the button toggles between the two states. -wxToolBarTool *wxToolBarBase::AddTool(const int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - const bool toggle, const long xPos, const long yPos, wxObject *clientData, +wxToolBarTool *wxToolBarBase::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, + bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) { wxToolBarTool *tool = new wxToolBarTool(index, bitmap, pushedBitmap, toggle, xPos, yPos, helpString1, helpString2); @@ -207,7 +212,7 @@ void wxToolBarBase::ClearTools(void) } } -void wxToolBarBase::EnableTool(const int index, const bool enable) +void wxToolBarBase::EnableTool(int index, bool enable) { wxNode *node = m_tools.Find((long)index); if (node) @@ -218,11 +223,11 @@ void wxToolBarBase::EnableTool(const int index, const bool enable) } } -void wxToolBarBase::ToggleTool(const int index, const bool toggle) +void wxToolBarBase::ToggleTool(int index, bool toggle) { } -void wxToolBarBase::SetToggle(const int index, const bool value) +void wxToolBarBase::SetToggle(int index, bool value) { wxNode *node=m_tools.Find((long)index); if (node){ @@ -231,7 +236,7 @@ void wxToolBarBase::SetToggle(const int index, const bool value) } } -bool wxToolBarBase::GetToolState(const int index) const +bool wxToolBarBase::GetToolState(int index) const { wxNode *node = m_tools.Find((long)index); if (node) @@ -246,7 +251,7 @@ bool wxToolBarBase::GetToolState(const int index) const else return FALSE; } -bool wxToolBarBase::GetToolEnabled(const int index) const +bool wxToolBarBase::GetToolEnabled(int index) const { wxNode *node = m_tools.Find((long)index); if (node) @@ -261,7 +266,7 @@ bool wxToolBarBase::GetToolEnabled(const int index) const else return FALSE; } -wxObject *wxToolBarBase::GetToolClientData(const int index) const +wxObject *wxToolBarBase::GetToolClientData(int index) const { wxNode *node = m_tools.Find((long)index); if (node) @@ -276,7 +281,7 @@ wxObject *wxToolBarBase::GetToolClientData(const int index) const else return NULL; } -void wxToolBarBase::SetToolShortHelp(const int index, const wxString& helpString) +void wxToolBarBase::SetToolShortHelp(int index, const wxString& helpString) { wxNode *node=m_tools.Find((long)index); if (node) @@ -286,7 +291,7 @@ void wxToolBarBase::SetToolShortHelp(const int index, const wxString& helpString } } -wxString wxToolBarBase::GetToolShortHelp(const int index) const +wxString wxToolBarBase::GetToolShortHelp(int index) const { wxNode *node=m_tools.Find((long)index); if (node) @@ -298,7 +303,7 @@ wxString wxToolBarBase::GetToolShortHelp(const int index) const return wxString(""); } -void wxToolBarBase::SetToolLongHelp(const int index, const wxString& helpString) +void wxToolBarBase::SetToolLongHelp(int index, const wxString& helpString) { wxNode *node=m_tools.Find((long)index); if (node) @@ -308,7 +313,7 @@ void wxToolBarBase::SetToolLongHelp(const int index, const wxString& helpString) } } -wxString wxToolBarBase::GetToolLongHelp(const int index) const +wxString wxToolBarBase::GetToolLongHelp(int index) const { wxNode *node=m_tools.Find((long)index); if (node) @@ -320,7 +325,7 @@ wxString wxToolBarBase::GetToolLongHelp(const int index) const return wxString(""); } -wxToolBarTool *wxToolBarBase::FindToolForPosition(const long x, const long y) const +wxToolBarTool *wxToolBarBase::FindToolForPosition(long x, long y) const { wxNode *node = m_tools.First(); while (node) @@ -345,18 +350,18 @@ wxSize wxToolBarBase::GetMaxSize ( void ) const // the tool we're leaving was a 'sprung push button' and if so, // spring it back to the up state. // -void wxToolBarBase::SetMargins(const int x, const int y) +void wxToolBarBase::SetMargins(int x, int y) { m_xMargin = x; m_yMargin = y; } -void wxToolBarBase::SetToolPacking(const int packing) +void wxToolBarBase::SetToolPacking(int packing) { m_toolPacking = packing; } -void wxToolBarBase::SetToolSeparation(const int separation) +void wxToolBarBase::SetToolSeparation(int separation) { m_toolSeparation = separation; } @@ -367,94 +372,6 @@ void wxToolBarBase::Command(wxCommandEvent& event) void wxToolBarBase::Layout(void) { - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY = m_yMargin; - int maxToolWidth = 0; - int maxToolHeight = 0; - m_maxWidth = 0; - m_maxHeight = 0; - - // Find the maximum tool width and height - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->GetWidth() > maxToolWidth) - maxToolWidth = (int)tool->GetWidth(); - if (tool->GetHeight() > maxToolHeight) - maxToolHeight = (int)tool->GetHeight(); - node = node->Next(); - } - - int separatorSize = m_toolSeparation; - - node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - { - if (m_tilingDirection == wxHORIZONTAL) - { - if (m_currentRowsOrColumns >= m_rowsOrColumns) - m_lastY += separatorSize; - else - m_lastX += separatorSize; - } - else - { - if (m_currentRowsOrColumns >= m_rowsOrColumns) - m_lastX += separatorSize; - else - m_lastY += separatorSize; - } - } - else if (tool->m_toolStyle == wxTOOL_STYLE_BUTTON) - { - if (m_tilingDirection == wxHORIZONTAL) - { - if (m_currentRowsOrColumns >= m_rowsOrColumns) - { - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY += maxToolHeight + m_toolPacking; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastX += maxToolWidth + m_toolPacking; - } - else - { - if (m_currentRowsOrColumns >= m_rowsOrColumns) - { - m_currentRowsOrColumns = 0; - m_lastX += (maxToolWidth + m_toolPacking); - m_lastY = m_yMargin; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastY += maxToolHeight + m_toolPacking; - } - m_currentRowsOrColumns ++; - } - - if (m_lastX > m_maxWidth) - m_maxWidth = m_lastX; - if (m_lastY > m_maxHeight) - m_maxHeight = m_lastY; - - node = node->Next(); - } - if (m_tilingDirection == wxVERTICAL) - m_maxWidth += maxToolWidth; - else - m_maxHeight += maxToolHeight; - - m_maxWidth += m_xMargin; - m_maxHeight += m_yMargin; } @@ -464,9 +381,9 @@ void wxToolBarBase::Layout(void) * pixelsPerUnitX/pixelsPerUnitY: number of pixels per unit (e.g. pixels per text line) * noUnitsX/noUnitsY: : no. units per scrollbar */ -void wxToolBarBase::SetScrollbars (const int pixelsPerUnitX, const int pixelsPerUnitY, - const int noUnitsX, const int noUnitsY, - const int xPos, const int yPos) +void wxToolBarBase::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY, + int noUnitsX, int noUnitsY, + int xPos, int yPos) { m_xScrollPixelsPerLine = pixelsPerUnitX; m_yScrollPixelsPerLine = pixelsPerUnitY; @@ -500,7 +417,7 @@ void wxToolBarBase::SetScrollbars (const int pixelsPerUnitX, const int pixelsPer } AdjustScrollbars(); Refresh(); -#ifdef __WINDOWS__ +#ifdef __WXMSW__ ::UpdateWindow ((HWND) GetHWND()); #endif } @@ -559,7 +476,7 @@ int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) int nScrollInc = 0; switch (event.GetEventType()) { - case wxEVENT_TYPE_SCROLL_TOP: + case wxEVT_SCROLL_TOP: { if (orient == wxHORIZONTAL) nScrollInc = - m_xScrollPosition; @@ -567,7 +484,7 @@ int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) nScrollInc = - m_yScrollPosition; break; } - case wxEVENT_TYPE_SCROLL_BOTTOM: + case wxEVT_SCROLL_BOTTOM: { if (orient == wxHORIZONTAL) nScrollInc = m_xScrollLines - m_xScrollPosition; @@ -575,17 +492,17 @@ int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) nScrollInc = m_yScrollLines - m_yScrollPosition; break; } - case wxEVENT_TYPE_SCROLL_LINEUP: + case wxEVT_SCROLL_LINEUP: { nScrollInc = -1; break; } - case wxEVENT_TYPE_SCROLL_LINEDOWN: + case wxEVT_SCROLL_LINEDOWN: { nScrollInc = 1; break; } - case wxEVENT_TYPE_SCROLL_PAGEUP: + case wxEVT_SCROLL_PAGEUP: { if (orient == wxHORIZONTAL) nScrollInc = -GetScrollPageSize(wxHORIZONTAL); @@ -593,7 +510,7 @@ int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) nScrollInc = -GetScrollPageSize(wxVERTICAL); break; } - case wxEVENT_TYPE_SCROLL_PAGEDOWN: + case wxEVT_SCROLL_PAGEDOWN: { if (orient == wxHORIZONTAL) nScrollInc = GetScrollPageSize(wxHORIZONTAL); @@ -601,7 +518,7 @@ int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) nScrollInc = GetScrollPageSize(wxVERTICAL); break; } - case wxEVENT_TYPE_SCROLL_THUMBTRACK: + case wxEVT_SCROLL_THUMBTRACK: { if (orient == wxHORIZONTAL) nScrollInc = pos - m_xScrollPosition; @@ -737,7 +654,7 @@ void wxToolBarBase::SetScrollPageSize(int orient, int pageSize) /* * Scroll to given position (scroll position, not pixel position) */ -void wxToolBarBase::Scroll (const int x_pos, const int y_pos) +void wxToolBarBase::Scroll (int x_pos, int y_pos) { int old_x, old_y; ViewStart (&old_x, &old_y); @@ -755,12 +672,12 @@ void wxToolBarBase::Scroll (const int x_pos, const int y_pos) SetScrollPos (wxVERTICAL, y_pos, TRUE); } Refresh(); -#ifdef __WINDOWS__ +#ifdef __WXMSW__ UpdateWindow ((HWND) GetHWND()); #endif } -void wxToolBarBase::EnableScrolling (const bool x_scroll, const bool y_scroll) +void wxToolBarBase::EnableScrolling (bool x_scroll, bool y_scroll) { m_xScrollingEnabled = x_scroll; m_yScrollingEnabled = y_scroll; @@ -779,22 +696,10 @@ void wxToolBarBase::ViewStart (int *x, int *y) const *y = m_yScrollPosition; } -/* -void wxToolBarBase::CalcScrolledPosition(const int x, const int y, int *xx, int *yy) const -{ - *xx = (m_calcScrolledOffset ? (x - m_xScrollPosition * m_xScrollPixelsPerLine) : x); - *yy = (m_calcScrolledOffset ? (y - m_yScrollPosition * m_yScrollPixelsPerLine) : y); -} - -void wxToolBarBase::CalcUnscrolledPosition(const int x, const int y, float *xx, float *yy) const -{ - *xx = (float)(m_calcScrolledOffset ? (x + m_xScrollPosition * m_xScrollPixelsPerLine) : x); - *yy = (float)(m_calcScrolledOffset ? (y + m_yScrollPosition * m_yScrollPixelsPerLine) : y); -} -*/ - void wxToolBarBase::OnIdle(wxIdleEvent& event) { + wxWindow::OnIdle(event); + DoToolbarUpdates(); } @@ -825,9 +730,9 @@ void wxToolBarBase::DoToolbarUpdates(void) } } -#ifdef __WINDOWS__ +#ifdef __WXMSW__ // Circumvent wxControl::MSWOnMouseMove which doesn't set the cursor. -void wxToolBarBase::MSWOnMouseMove(const int x, const int y, const WXUINT flags) +void wxToolBarBase::MSWOnMouseMove(int x, int y, WXUINT flags) { wxWindow::MSWOnMouseMove(x, y, flags); }