X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e413198572959f013fc2537a3c8cc184c9ac820d..9b49405777342458dc1666001865eef7309b6c30:/src/generic/renderg.cpp diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp index 906a9b342a..4fcd52f56f 100644 --- a/src/generic/renderg.cpp +++ b/src/generic/renderg.cpp @@ -324,13 +324,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() ) { @@ -349,6 +378,9 @@ wxRendererGeneric::DrawHeaderButtonContents(wxWindow *win, dc.GetTextExtent( label, &tw, &th, &td); labelWidth += tw; y = rect.y + wxMax(0, (rect.height - (th+td)) / 2); +#ifdef __WXGTK__ + y += 2; // No idea why. +#endif // truncate and add an ellipsis (...) if the text is too wide. int targetWidth = rect.width - arrowSpace - bmpWidth - 2*margin; @@ -378,42 +410,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; } @@ -737,25 +734,25 @@ 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), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawRadioButton"); } void wxRendererGeneric::DrawTextCtrl(wxWindow* WXUNUSED(win), wxDC& WXUNUSED(dc), const wxRect& WXUNUSED(rect), int WXUNUSED(flags)) { - // FIXME: Implement + wxFAIL_MSG("UNIMPLEMENTED: wxRendererGeneric::DrawTextCtrl"); }