X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f91f3a333110fd08795ac3c0551725dd61956a1..224d978ffb483f93864f8bf9a5cd61b1425a7fd5:/src/generic/renderg.cpp?ds=sidebyside diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp index 4aa00c7aea..66dfb6e330 100644 --- a/src/generic/renderg.cpp +++ b/src/generic/renderg.cpp @@ -118,7 +118,15 @@ public: virtual void DrawTextCtrl(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0); - virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0); + virtual void DrawRadioBitmap(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0); + +#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP + virtual void DrawTitleBarBitmap(wxWindow *win, + wxDC& dc, + const wxRect& rect, + wxTitleBarButton button, + int flags = 0); +#endif // wxHAS_DRAW_TITLE_BAR_BITMAP virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win); @@ -324,13 +332,42 @@ wxRendererGeneric::DrawHeaderButtonContents(wxWindow *win, const int margin = 5; // number of pixels to reserve on either side of the label int bmpWidth = 0; - int txtEnd = 0; if ( params && params->m_labelBitmap.Ok() ) bmpWidth = params->m_labelBitmap.GetWidth() + 2; labelWidth += bmpWidth + 2*margin; + // draw the bitmap if there is one + if ( params && params->m_labelBitmap.Ok() ) + { + int w, h, x, y; + w = params->m_labelBitmap.GetWidth(); + h = params->m_labelBitmap.GetHeight(); + + x = margin + rect.x; + y = rect.y + wxMax(1, (rect.height - h) / 2); + + if (params->m_labelText.empty()) + { + // use the alignment flags + switch (params->m_labelAlignment) + { + default: + case wxALIGN_LEFT: + x = rect.x + margin; + break; + case wxALIGN_CENTER: + x = rect.x + wxMax(1, (rect.width - arrowSpace - w)/2); + break; + case wxALIGN_RIGHT: + x = rect.x + wxMax(1, rect.width - arrowSpace - margin - w); + break; + } + } + dc.DrawBitmap(params->m_labelBitmap, x, y, true); + } + // Draw a label if one is given if ( params && !params->m_labelText.empty() ) { @@ -381,42 +418,7 @@ wxRendererGeneric::DrawHeaderButtonContents(wxWindow *win, break; } - dc.DrawText(label, x, y); - txtEnd = x + tw + 2; - } - - // draw the bitmap if there is one - if ( params && params->m_labelBitmap.Ok() ) - { - int w, h, x, y; - w = params->m_labelBitmap.GetWidth(); - h = params->m_labelBitmap.GetHeight(); - - y = rect.y + wxMax(1, (rect.height - h) / 2); - - // if there is a text label, then put the bitmap at the end of the label - if ( txtEnd != 0 ) - { - x = txtEnd; - } - // otherwise use the alignment flags - else - { - switch (params->m_labelAlignment) - { - default: - case wxALIGN_LEFT: - x = rect.x + margin; - break; - case wxALIGN_CENTER: - x = rect.x + wxMax(1, (rect.width - arrowSpace - w)/2); - break; - case wxALIGN_RIGHT: - x = rect.x + wxMax(1, rect.width - arrowSpace - margin - w); - break; - } - } - dc.DrawBitmap(params->m_labelBitmap, x, y, true); + dc.DrawText(label, x + bmpWidth, y); } return labelWidth; } @@ -653,17 +655,10 @@ wxRendererGeneric::DrawPushButton(wxWindow *win, } void -#ifdef __WXMAC__ wxRendererGeneric::DrawItemSelectionRect(wxWindow * win, wxDC& dc, const wxRect& rect, int flags) -#else -wxRendererGeneric::DrawItemSelectionRect(wxWindow * WXUNUSED(win), - wxDC& dc, - const wxRect& rect, - int flags) -#endif { wxBrush brush; if ( flags & wxCONTROL_SELECTED ) @@ -693,6 +688,9 @@ wxRendererGeneric::DrawItemSelectionRect(wxWindow * WXUNUSED(win), dc.SetPen( *wxTRANSPARENT_PEN ); dc.DrawRectangle( rect ); + + // it's unused everywhere except in wxOSX/Carbon + wxUnusedVar(win); } void @@ -740,28 +738,43 @@ wxRendererGeneric::DrawFocusRect(wxWindow* WXUNUSED(win), wxDC& dc, const wxRect void wxRendererGeneric::DrawChoice(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawChoice"); } void wxRendererGeneric::DrawComboBox(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawComboBox"); } -void wxRendererGeneric::DrawRadioButton(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), +void wxRendererGeneric::DrawRadioBitmap(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawRadioBitmap"); } void wxRendererGeneric::DrawTextCtrl(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawTextCtrl"); } +#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP + +void wxRendererGeneric::DrawTitleBarBitmap(wxWindow * WXUNUSED(win), + wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + wxTitleBarButton WXUNUSED(button), + int WXUNUSED(flags)) +{ + // no need to fail here, if wxHAS_DRAW_TITLE_BAR_BITMAP is defined this + // will be implemented in the native renderer and this version is never + // going to be used -- but we still need to define it to allow + // instantiation of this class (which would have been pure virtual + // otherwise) +} +#endif // wxHAS_DRAW_TITLE_BAR_BITMAP // ----------------------------------------------------------------------------